# 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 .types import (
        SpeakV1Clear,
        SpeakV1ClearType,
        SpeakV1Cleared,
        SpeakV1ClearedType,
        SpeakV1Close,
        SpeakV1CloseType,
        SpeakV1Flush,
        SpeakV1FlushType,
        SpeakV1Flushed,
        SpeakV1FlushedType,
        SpeakV1Metadata,
        SpeakV1Text,
        SpeakV1Warning,
    )
    from . import audio
    from .audio import (
        AudioGenerateRequestCallbackMethod,
        AudioGenerateRequestContainer,
        AudioGenerateRequestEncoding,
        AudioGenerateRequestModel,
    )
    from .requests import (
        SpeakV1ClearParams,
        SpeakV1ClearedParams,
        SpeakV1CloseParams,
        SpeakV1FlushParams,
        SpeakV1FlushedParams,
        SpeakV1MetadataParams,
        SpeakV1TextParams,
        SpeakV1WarningParams,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "AudioGenerateRequestCallbackMethod": ".audio",
    "AudioGenerateRequestContainer": ".audio",
    "AudioGenerateRequestEncoding": ".audio",
    "AudioGenerateRequestModel": ".audio",
    "SpeakV1Clear": ".types",
    "SpeakV1ClearParams": ".requests",
    "SpeakV1ClearType": ".types",
    "SpeakV1Cleared": ".types",
    "SpeakV1ClearedParams": ".requests",
    "SpeakV1ClearedType": ".types",
    "SpeakV1Close": ".types",
    "SpeakV1CloseParams": ".requests",
    "SpeakV1CloseType": ".types",
    "SpeakV1Flush": ".types",
    "SpeakV1FlushParams": ".requests",
    "SpeakV1FlushType": ".types",
    "SpeakV1Flushed": ".types",
    "SpeakV1FlushedParams": ".requests",
    "SpeakV1FlushedType": ".types",
    "SpeakV1Metadata": ".types",
    "SpeakV1MetadataParams": ".requests",
    "SpeakV1Text": ".types",
    "SpeakV1TextParams": ".requests",
    "SpeakV1Warning": ".types",
    "SpeakV1WarningParams": ".requests",
    "audio": ".audio",
}


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__ = [
    "AudioGenerateRequestCallbackMethod",
    "AudioGenerateRequestContainer",
    "AudioGenerateRequestEncoding",
    "AudioGenerateRequestModel",
    "SpeakV1Clear",
    "SpeakV1ClearParams",
    "SpeakV1ClearType",
    "SpeakV1Cleared",
    "SpeakV1ClearedParams",
    "SpeakV1ClearedType",
    "SpeakV1Close",
    "SpeakV1CloseParams",
    "SpeakV1CloseType",
    "SpeakV1Flush",
    "SpeakV1FlushParams",
    "SpeakV1FlushType",
    "SpeakV1Flushed",
    "SpeakV1FlushedParams",
    "SpeakV1FlushedType",
    "SpeakV1Metadata",
    "SpeakV1MetadataParams",
    "SpeakV1Text",
    "SpeakV1TextParams",
    "SpeakV1Warning",
    "SpeakV1WarningParams",
    "audio",
]
