# This file was auto-generated by Fern from our API Definition.

# isort: skip_file

import typing
from importlib import import_module

if typing.TYPE_CHECKING:
    from . import (
        asr_streaming,
        lightning,
        lightning_asr_streaming,
        lightning_large,
        lightning_v2,
        lightning_v2tts,
        lightning_v31tts,
        pronunciation_dictionaries,
        pulse_stt_streaming,
        speech_to_text,
        streaming_tts,
        text_to_speech,
        voice_cloning,
        voices,
    )
    from .async_waves_client import AsyncWavesClient
    from .waves_client import WavesClient
    from .stream_tts import WavesStreamingTTS, TTSConfig
_dynamic_imports: typing.Dict[str, str] = {
    "asr_streaming": ".asr_streaming",
    "lightning": ".lightning",
    "lightning_asr_streaming": ".lightning_asr_streaming",
    "lightning_large": ".lightning_large",
    "lightning_v2": ".lightning_v2",
    "lightning_v2tts": ".lightning_v2tts",
    "lightning_v31tts": ".lightning_v31tts",
    "pronunciation_dictionaries": ".pronunciation_dictionaries",
    "pulse_stt_streaming": ".pulse_stt_streaming",
    "speech_to_text": ".speech_to_text",
    "streaming_tts": ".streaming_tts",
    "text_to_speech": ".text_to_speech",
    "voice_cloning": ".voice_cloning",
    "voices": ".voices",
    # High-level helper re-exported for convenience:
    #   from smallestai.waves import AsyncWavesClient
    "AsyncWavesClient": ".async_waves_client",
    # Production clients from v4.3.1:
    "WavesClient": ".waves_client",
    "WavesStreamingTTS": ".stream_tts",
    "TTSConfig": ".stream_tts",
}


def __getattr__(attr_name: str) -> typing.Any:
    module_name = _dynamic_imports.get(attr_name)
    if module_name is None:
        raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
    try:
        module = import_module(module_name, __package__)
        if module_name == f".{attr_name}":
            return module
        else:
            return getattr(module, attr_name)
    except ImportError as e:
        raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
    except AttributeError as e:
        raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e


def __dir__():
    lazy_attrs = list(_dynamic_imports.keys())
    return sorted(lazy_attrs)


__all__ = [
    "asr_streaming",
    "lightning",
    "lightning_asr_streaming",
    "lightning_large",
    "lightning_v2",
    "lightning_v2tts",
    "lightning_v31tts",
    "pronunciation_dictionaries",
    "pulse_stt_streaming",
    "speech_to_text",
    "streaming_tts",
    "text_to_speech",
    "voice_cloning",
    "voices",
    "AsyncWavesClient",
    "WavesClient",
    "WavesStreamingTTS",
    "TTSConfig",
]
