"""telegram domain — model, schemas, validators, and repository for Telegram entities."""

from repo_core.domains.telegram.message import (
    TelegramMessage,
    CreateTelegramMessageRequest,
    PatchTelegramMessageRequest,
    TelegramMessageResponse,
    TelegramMessageTextValidator,
    TelegramPeerIdValidator,
    build_telegram_message_pipeline,
    TelegramMessageRepository,
)
from repo_core.domains.telegram.account import (
    TelegramAccount,
    AccountCreateRequest,
    AccountResponse,
    AccountListResponse,
    AccountMetadataUpdateRequest,
    AccountStatusUpdateRequest,
    SessionResponse,
    AccountHealthResponse,
    TelegramChannelInput,
    TelegramChannelPreviewResponse,
    TelegramJoinResponse,
    TelegramLeaveResponse,
    TelegramChannelListResponse,
    TelegramChannelInfo,
    TelegramRecentPostResponse,
    TelegramReactionDetailResponse,
    TelegramAccountRepository,
)

from repo_core.domains.telegram.channel import (
    TelegramChannel,
    ChannelCreateRequest,
    ChannelUpdateRequest,
    ChannelResponse,
    ChannelListResponse,
    ChannelAssignRequest,
    ChannelUnassignRequest,
    ChannelAssignResponse,
    ChannelUnassignResponse,
    AssignedAccountInfo,
    ChannelWithAssignmentsResponse,
    ChannelWithAssignmentsListResponse,
    ChannelFilterParams,
    TelegramChannelRepository,
)

from repo_core.domains.telegram.telegram_parsed_message import (
    TelegramParsedMessage,
    MessageDetail,
    MessageReaction,
    TelegramParsedMessageRepository,
    MessageDetailRepository,
    MessageReactionRepository,
)

__all__ = [
    # message domain
    "TelegramMessage",
    "CreateTelegramMessageRequest",
    "PatchTelegramMessageRequest",
    "TelegramMessageResponse",
    "TelegramMessageTextValidator",
    "TelegramPeerIdValidator",
    "build_telegram_message_pipeline",
    "TelegramMessageRepository",
    # account domain
    "TelegramAccount",
    "AccountCreateRequest",
    "AccountResponse",
    "AccountListResponse",
    "AccountMetadataUpdateRequest",
    "AccountStatusUpdateRequest",
    "SessionResponse",
    "AccountHealthResponse",
    "TelegramChannelInput",
    "TelegramChannelPreviewResponse",
    "TelegramJoinResponse",
    "TelegramLeaveResponse",
    "TelegramChannelListResponse",
    "TelegramChannelInfo",
    "TelegramRecentPostResponse",
    "TelegramReactionDetailResponse",
    "TelegramAccountRepository",
    # channel domain
    "TelegramChannel",
    "ChannelCreateRequest",
    "ChannelUpdateRequest",
    "ChannelResponse",
    "ChannelListResponse",
    "ChannelAssignRequest",
    "ChannelUnassignRequest",
    "ChannelAssignResponse",
    "ChannelUnassignResponse",
    "AssignedAccountInfo",
    "ChannelWithAssignmentsResponse",
    "ChannelWithAssignmentsListResponse",
    "ChannelFilterParams",
    "TelegramChannelRepository",
    # telegram_parsed_message domain
    "TelegramParsedMessage",
    "MessageDetail",
    "MessageReaction",
    "TelegramParsedMessageRepository",
    "MessageDetailRepository",
    "MessageReactionRepository",
]
