"""Dexfather — Python SDK for the Dexster Bot API."""

from __future__ import annotations

from .bot import DexFatherBot, verify_webhook_signature, deprecated
from .types import (
    Update, Message, CallbackQuery, Chat, User,
    BotInfo, Poll, PollOption, PollAnswer,
    ChatMember, ChatPermissions, ChatInfo,
    MenuButton, WebAppInfo, InlineQuery,
    InlineQueryResultArticle, InlineQueryResultPhoto,
    InlineQueryResultGif, InlineQueryResultMpeg4Gif,
    InlineQueryResultVideo, InlineQueryResultAudio,
    InlineQueryResultVoice, InlineQueryResultDocument,
    InlineQueryResultLocation, InlineQueryResultVenue,
    InlineQueryResultContact,
    InlineQueryResultCachedPhoto, InlineQueryResultCachedGif,
    InlineQueryResultCachedMpeg4Gif, InlineQueryResultCachedSticker,
    InlineQueryResultCachedDocument, InlineQueryResultCachedVideo,
    InlineQueryResultCachedVoice, InlineQueryResultCachedAudio,
    InputTextMessageContent, InputLocationMessageContent,
    InputVenueMessageContent, InputContactMessageContent,
    WebhookInfo, Dice, Contact, Location, Venue,
    ChatMemberUpdated, ApiResponse,
    ReactionType, MessageReactionUpdated, ChatJoinRequest, ChosenInlineResult,
    BotFile, UserProfilePhotos,
    ComponentInteraction,
    PhotoSize, Audio, Video, Document, Animation, Voice, Sticker, VideoNote,
)
from .keyboards import (
    InlineKeyboardButton,
    InlineKeyboardMarkup,
    InlineKeyboardBuilder,
    ReplyKeyboardButton,
    ReplyKeyboardMarkup,
    ReplyKeyboardRemove,
    ForceReply,
)
from .handlers import (
    CommandHandler,
    MessageHandler,
    CallbackQueryHandler,
    InlineQueryHandler,
    TypeHandler,
    PollAnswerHandler,
    ChatMemberHandler,
    ChatJoinRequestHandler,
    ChosenInlineResultHandler,
)
from . import filters
from . import testing
from .conversation import ConversationHandler, END
from .exceptions import (
    DexFatherError,
    APIError,
    BadRequest,
    Unauthorized,
    Forbidden,
    NotFound,
    RateLimited,
    NetworkError,
    TimeoutError,
    WebSocketError,
)
from .middleware import (
    BaseMiddleware,
    LoggingMiddleware,
)
from .components import ComponentBuilder

# Backwards compatibility alias
ApiError = APIError

__version__ = "0.5.0"
__all__ = [
    "DexFatherBot",
    "verify_webhook_signature",
    "Update",
    "Message",
    "CallbackQuery",
    "Chat",
    "User",
    "BotInfo",
    "Poll",
    "PollOption",
    "PollAnswer",
    "ChatMember",
    "ChatPermissions",
    "ChatInfo",
    "MenuButton",
    "WebAppInfo",
    "InlineQuery",
    "InlineQueryResultArticle",
    "InlineQueryResultPhoto",
    "InlineQueryResultGif",
    "InlineQueryResultMpeg4Gif",
    "InlineQueryResultVideo",
    "InlineQueryResultAudio",
    "InlineQueryResultVoice",
    "InlineQueryResultDocument",
    "InlineQueryResultLocation",
    "InlineQueryResultVenue",
    "InlineQueryResultContact",
    "InlineQueryResultCachedPhoto",
    "InlineQueryResultCachedGif",
    "InlineQueryResultCachedMpeg4Gif",
    "InlineQueryResultCachedSticker",
    "InlineQueryResultCachedDocument",
    "InlineQueryResultCachedVideo",
    "InlineQueryResultCachedVoice",
    "InlineQueryResultCachedAudio",
    "InputTextMessageContent",
    "InputLocationMessageContent",
    "InputVenueMessageContent",
    "InputContactMessageContent",
    "WebhookInfo",
    "Dice",
    "Contact",
    "Location",
    "Venue",
    "ChatMemberUpdated",
    "ApiResponse",
    "ReactionType",
    "MessageReactionUpdated",
    "ChatJoinRequest",
    "ChosenInlineResult",
    "BotFile",
    "UserProfilePhotos",
    "InlineKeyboardButton",
    "InlineKeyboardMarkup",
    "InlineKeyboardBuilder",
    "ReplyKeyboardButton",
    "ReplyKeyboardMarkup",
    "ReplyKeyboardRemove",
    "ForceReply",
    "CommandHandler",
    "MessageHandler",
    "CallbackQueryHandler",
    "InlineQueryHandler",
    "TypeHandler",
    "PollAnswerHandler",
    "ChatMemberHandler",
    "ChatJoinRequestHandler",
    "ChosenInlineResultHandler",
    "filters",
    "testing",
    "ConversationHandler",
    "END",
    "DexFatherError",
    "APIError",
    "BadRequest",
    "Unauthorized",
    "Forbidden",
    "NotFound",
    "RateLimited",
    "NetworkError",
    "TimeoutError",
    "WebSocketError",
    "BaseMiddleware",
    "LoggingMiddleware",
    "ComponentBuilder",
    "ComponentInteraction",
    "PhotoSize",
    "Audio",
    "Video",
    "Document",
    "Animation",
    "Voice",
    "Sticker",
    "VideoNote",
    "ApiError",
    "deprecated",
]
