"""
RedenLab Extract SDK

Python SDK for RedenLab's ML inference service.

New architecture (v0.5.0+):
- Asset-based design: Upload once, use with multiple models
- RedenLabSession: Manages credentials and uploads
- InferenceClient: Operates on Assets, not file paths
- Workflows: Composable functions for common patterns
"""

__version__ = "1.0.0"

# Core classes
from .asset import Asset
from .client import (
    InferenceClient,
    TranscribeClient,
    intelligibility_client,
    naturalness_client,
    speaker_counter_client,
    sylber_time_client,
)

# Exceptions
from .exceptions import (
    APIError,
    AuthenticationError,
    ConfigurationError,
    InferenceError,
    RedenLabMLError,
    TimeoutError,
    UploadError,
    ValidationError,
)
from .session import RedenLabSession

# Workflow functions
from .workflows import aggregate_results, run_chunked_inference, run_inference

__all__ = [
    # Core classes
    "Asset",
    "RedenLabSession",
    "InferenceClient",
    "TranscribeClient",
    # Factory functions
    "intelligibility_client",
    "naturalness_client",
    "speaker_counter_client",
    "sylber_time_client",
    # Workflow functions
    "run_inference",
    "run_chunked_inference",
    "aggregate_results",
    # Exceptions
    "RedenLabMLError",
    "AuthenticationError",
    "InferenceError",
    "TimeoutError",
    "APIError",
    "UploadError",
    "ValidationError",
    "ConfigurationError",
]
