# 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 (
        AccountUsageStatisticsInput,
        AccountUsageStatisticsInterval,
        AccountUsageStatisticsOutput,
        ApiUsageDataTransfer,
        ApiUsageEntry,
        CommodityTypeObj,
        CommodityTypesList,
        Conversion,
        ConversionInfo,
        ConversionQuery,
        CountriesList,
        CountryObj,
        CryptoConversion,
        CryptoConversionQuery,
        CryptoExchangeItem,
        CryptoExchangesList,
        CursorPageTCustomizedHistoricalRawTick,
        CursorPageTCustomizedNewsOut,
        CursorPageTCustomizedSymbolsOutFull,
        CursorPageTCustomizedSymbolsOutFullStocks,
        ErrorDetails,
        ErrorResponseBody,
        HistoricalDataResolution,
        HistoricalOhlcCandle,
        HistoricalOhlcResponse,
        HistoricalRawTick,
        HttpValidationError,
        LastQuote,
        LastQuotes,
        MarketHolidayResponse,
        MarketResponse,
        MarketStatusResponse,
        NewsMetaData,
        NewsOut,
        Status,
        StockDataFlatResponse,
        SymbolsOutFull,
        SymbolsOutFullStocks,
        TradingHoursResponse,
        ValidationError,
        ValidationErrorLocItem,
        Weekday,
    )
    from .errors import UnprocessableEntityError
    from . import account, commodities, crypto, currencies, indices, stocks
    from .client import AsyncTradewatchApi, TradewatchApi
    from .environment import TradewatchApiEnvironment
_dynamic_imports: typing.Dict[str, str] = {
    "AccountUsageStatisticsInput": ".types",
    "AccountUsageStatisticsInterval": ".types",
    "AccountUsageStatisticsOutput": ".types",
    "ApiUsageDataTransfer": ".types",
    "ApiUsageEntry": ".types",
    "AsyncTradewatchApi": ".client",
    "CommodityTypeObj": ".types",
    "CommodityTypesList": ".types",
    "Conversion": ".types",
    "ConversionInfo": ".types",
    "ConversionQuery": ".types",
    "CountriesList": ".types",
    "CountryObj": ".types",
    "CryptoConversion": ".types",
    "CryptoConversionQuery": ".types",
    "CryptoExchangeItem": ".types",
    "CryptoExchangesList": ".types",
    "CursorPageTCustomizedHistoricalRawTick": ".types",
    "CursorPageTCustomizedNewsOut": ".types",
    "CursorPageTCustomizedSymbolsOutFull": ".types",
    "CursorPageTCustomizedSymbolsOutFullStocks": ".types",
    "ErrorDetails": ".types",
    "ErrorResponseBody": ".types",
    "HistoricalDataResolution": ".types",
    "HistoricalOhlcCandle": ".types",
    "HistoricalOhlcResponse": ".types",
    "HistoricalRawTick": ".types",
    "HttpValidationError": ".types",
    "LastQuote": ".types",
    "LastQuotes": ".types",
    "MarketHolidayResponse": ".types",
    "MarketResponse": ".types",
    "MarketStatusResponse": ".types",
    "NewsMetaData": ".types",
    "NewsOut": ".types",
    "Status": ".types",
    "StockDataFlatResponse": ".types",
    "SymbolsOutFull": ".types",
    "SymbolsOutFullStocks": ".types",
    "TradewatchApi": ".client",
    "TradewatchApiEnvironment": ".environment",
    "TradingHoursResponse": ".types",
    "UnprocessableEntityError": ".errors",
    "ValidationError": ".types",
    "ValidationErrorLocItem": ".types",
    "Weekday": ".types",
    "account": ".account",
    "commodities": ".commodities",
    "crypto": ".crypto",
    "currencies": ".currencies",
    "indices": ".indices",
    "stocks": ".stocks",
}


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__ = [
    "AccountUsageStatisticsInput",
    "AccountUsageStatisticsInterval",
    "AccountUsageStatisticsOutput",
    "ApiUsageDataTransfer",
    "ApiUsageEntry",
    "AsyncTradewatchApi",
    "CommodityTypeObj",
    "CommodityTypesList",
    "Conversion",
    "ConversionInfo",
    "ConversionQuery",
    "CountriesList",
    "CountryObj",
    "CryptoConversion",
    "CryptoConversionQuery",
    "CryptoExchangeItem",
    "CryptoExchangesList",
    "CursorPageTCustomizedHistoricalRawTick",
    "CursorPageTCustomizedNewsOut",
    "CursorPageTCustomizedSymbolsOutFull",
    "CursorPageTCustomizedSymbolsOutFullStocks",
    "ErrorDetails",
    "ErrorResponseBody",
    "HistoricalDataResolution",
    "HistoricalOhlcCandle",
    "HistoricalOhlcResponse",
    "HistoricalRawTick",
    "HttpValidationError",
    "LastQuote",
    "LastQuotes",
    "MarketHolidayResponse",
    "MarketResponse",
    "MarketStatusResponse",
    "NewsMetaData",
    "NewsOut",
    "Status",
    "StockDataFlatResponse",
    "SymbolsOutFull",
    "SymbolsOutFullStocks",
    "TradewatchApi",
    "TradewatchApiEnvironment",
    "TradingHoursResponse",
    "UnprocessableEntityError",
    "ValidationError",
    "ValidationErrorLocItem",
    "Weekday",
    "account",
    "commodities",
    "crypto",
    "currencies",
    "indices",
    "stocks",
]
