"""
Cerevox SDK Core

This module contains the core infrastructure including:
    - Base clients
    - Exceptions and error handling
    - Data models
"""

from .async_client import AsyncClient
from .client import Client
from .exceptions import (
    AccountError,
    InsufficientPermissionsError,
    LexaAuthError,
    LexaError,
    LexaJobFailedError,
    LexaQuotaExceededError,
    LexaRateLimitError,
    LexaServerError,
    LexaTimeoutError,
    LexaUnsupportedFileError,
    LexaValidationError,
    UserManagementError,
    create_error_from_response,
    get_retry_strategy,
)
from .models import (
    VALID_MODES,
    AccountInfo,
    AccountPlan,
    AskItem,
    AskListItem,
    AsksListResponse,
    AskSubmitRequest,
    AskSubmitResponse,
    BasicFileInfo,
    BucketInfo,
    BucketListResponse,
    ChatCreate,
    ChatCreatedResponse,
    ChatItem,
    ChatsListResponse,
    CompletedFileData,
    ContentElement,
    ContentInfo,
    CreatedResponse,
    DeletedResponse,
    DriveInfo,
    DriveListResponse,
    ElementSourceInfo,
    FileContentInput,
    FileInfo,
    FileInput,
    FileItem,
    FilePathInput,
    FileProcessingInfo,
    FilesListResponse,
    FileSourceInfo,
    FileStreamInput,
    FileUploadResponse,
    FileURLInput,
    FolderCreate,
    FolderCreatedResponse,
    FolderInfo,
    FolderItem,
    FolderListResponse,
    FoldersListResponse,
    GenericResponse,
    IngestionResult,
    JobResponse,
    JobStatus,
    MessageResponse,
    PageSourceInfo,
    ProcessingMode,
    ReasoningLevel,
    ResponseType,
    SiteInfo,
    SiteListResponse,
    SourceData,
    SourceInfo,
    TableInfo,
    TextBlock,
    TokenRefreshRequest,
    TokenResponse,
    UpdatedResponse,
    UsageMetrics,
    User,
    UserCreate,
    UserDelete,
    UserUpdate,
)

__all__ = [
    # Base clients
    "Client",
    "AsyncClient",
    # Exceptions and error handling
    "AccountError",
    "InsufficientPermissionsError",
    "LexaAuthError",
    "LexaError",
    "LexaJobFailedError",
    "LexaQuotaExceededError",
    "LexaRateLimitError",
    "LexaServerError",
    "LexaTimeoutError",
    "LexaUnsupportedFileError",
    "LexaValidationError",
    "UserManagementError",
    "create_error_from_response",
    "get_retry_strategy",
    # Models - Shared
    "VALID_MODES",
    # Models - Account management
    "AccountInfo",
    "AccountPlan",
    "CreatedResponse",
    "DeletedResponse",
    "MessageResponse",
    "TokenRefreshRequest",
    "TokenResponse",
    "UpdatedResponse",
    "UsageMetrics",
    "User",
    "UserCreate",
    "UserDelete",
    "UserUpdate",
    # Models - Hippo (RAG)
    "AskItem",
    "AskListItem",
    "AsksListResponse",
    "AskSubmitRequest",
    "AskSubmitResponse",
    "BasicFileInfo",
    "BucketInfo",
    "CompletedFileData",
    "ChatCreate",
    "ChatCreatedResponse",
    "ChatItem",
    "ChatsListResponse",
    "FileItem",
    "FilesListResponse",
    "FileProcessingInfo",
    "FileSourceInfo",
    "FileUploadResponse",
    "FolderCreate",
    "FolderCreatedResponse",
    "FolderInfo",
    "FolderItem",
    "FoldersListResponse",
    "GenericResponse",
    "SourceData",
    "SourceInfo",
    "TableInfo",
    "TextBlock",
    # Models - Lexa (Document Processing)
    "BucketListResponse",
    "ContentElement",
    "ContentInfo",
    "DriveInfo",
    "DriveListResponse",
    "ElementSourceInfo",
    "FileInfo",
    "FileInput",
    "FileURLInput",
    "FolderListResponse",
    "IngestionResult",
    "JobResponse",
    "JobStatus",
    "PageSourceInfo",
    "ProcessingMode",
    "ReasoningLevel",
    "ResponseType",
    "SiteInfo",
    "SiteListResponse",
]
