"""Core file types and sources."""

from crewai_files.core.constants import (
    BACKOFF_BASE_DELAY,
    BACKOFF_JITTER_FACTOR,
    BACKOFF_MAX_DELAY,
    DEFAULT_MAX_CACHE_ENTRIES,
    DEFAULT_MAX_FILE_SIZE_BYTES,
    DEFAULT_TTL_SECONDS,
    DEFAULT_UPLOAD_CHUNK_SIZE,
    FILES_API_MAX_SIZE,
    GEMINI_FILE_TTL,
    MAGIC_BUFFER_SIZE,
    MAX_CONCURRENCY,
    MULTIPART_CHUNKSIZE,
    MULTIPART_THRESHOLD,
    UPLOAD_MAX_RETRIES,
    UPLOAD_RETRY_DELAY_BASE,
)
from crewai_files.core.resolved import (
    FileReference,
    InlineBase64,
    InlineBytes,
    ResolvedFile,
    UrlReference,
)
from crewai_files.core.sources import (
    AsyncFileStream,
    FileBytes,
    FilePath,
    FileSource,
    FileStream,
    FileUrl,
)
from crewai_files.core.types import (
    AudioFile,
    AudioMimeType,
    BaseFile,
    CoercedFileSource,
    File,
    FileInput,
    FileMode,
    ImageFile,
    ImageMimeType,
    PDFFile,
    TextFile,
    VideoFile,
    VideoMimeType,
)


__all__ = [
    "BACKOFF_BASE_DELAY",
    "BACKOFF_JITTER_FACTOR",
    "BACKOFF_MAX_DELAY",
    "DEFAULT_MAX_CACHE_ENTRIES",
    "DEFAULT_MAX_FILE_SIZE_BYTES",
    "DEFAULT_TTL_SECONDS",
    "DEFAULT_UPLOAD_CHUNK_SIZE",
    "FILES_API_MAX_SIZE",
    "GEMINI_FILE_TTL",
    "MAGIC_BUFFER_SIZE",
    "MAX_CONCURRENCY",
    "MULTIPART_CHUNKSIZE",
    "MULTIPART_THRESHOLD",
    "UPLOAD_MAX_RETRIES",
    "UPLOAD_RETRY_DELAY_BASE",
    "AsyncFileStream",
    "AudioFile",
    "AudioMimeType",
    "BaseFile",
    "CoercedFileSource",
    "File",
    "FileBytes",
    "FileInput",
    "FileMode",
    "FilePath",
    "FileReference",
    "FileSource",
    "FileStream",
    "FileUrl",
    "ImageFile",
    "ImageMimeType",
    "InlineBase64",
    "InlineBytes",
    "PDFFile",
    "ResolvedFile",
    "TextFile",
    "UrlReference",
    "VideoFile",
    "VideoMimeType",
]
