"""
Maya3 Transcription Backend
===========================

Modules:
- config: Configuration and environment loading
- r2_storage: R2 cloud storage client
- supabase_client: Supabase client for metadata
- audio_processor: Audio segmentation and chunking
- transcription_schema: Pydantic schemas for output
- gemini_transcriber: Gemini API integration
"""

from .config import (
    GEMINI_API_KEY,
    R2_ENDPOINT_URL,
    R2_BUCKET,
    SUPABASE_URL,
    GEMINI_MODELS,
    DEFAULT_SETTINGS,
    LANGUAGE_MAP,
    get_model_name
)

from .r2_storage import R2StorageClient, download_video_segments

from .supabase_client import SupabaseVideoClient, get_video_language

from .audio_processor import AudioProcessor, AudioChunk, get_segment_stats

from .transcription_schema import (
    TranscriptionOutput,
    TranscriptionResult,
    get_transcription_prompt,
    get_user_prompt,
    TRANSCRIPTION_JSON_SCHEMA
)

from .gemini_transcriber import (
    GeminiTranscriber,
    TranscriptionConfig,
    transcribe_segments
)

__all__ = [
    # Config
    'GEMINI_API_KEY',
    'R2_ENDPOINT_URL', 
    'R2_BUCKET',
    'SUPABASE_URL',
    'GEMINI_MODELS',
    'DEFAULT_SETTINGS',
    'LANGUAGE_MAP',
    'get_model_name',
    # R2 Storage
    'R2StorageClient',
    'download_video_segments',
    # Supabase
    'SupabaseVideoClient',
    'get_video_language',
    # Audio
    'AudioProcessor',
    'AudioChunk',
    'get_segment_stats',
    # Schema
    'TranscriptionOutput',
    'TranscriptionResult',
    'get_transcription_prompt',
    'get_user_prompt',
    'TRANSCRIPTION_JSON_SCHEMA',
    # Transcriber
    'GeminiTranscriber',
    'TranscriptionConfig',
    'transcribe_segments',
]
