"""TickerScope API client library."""

from tickerscope._auth import async_authenticate, is_token_expired
from tickerscope._client import (
    AsyncTickerScopeClient,
    BaseTickerScopeClient,
    TickerScopeClient,
)
from tickerscope._exceptions import (
    APIError,
    AuthenticationError,
    CookieExtractionError,
    TickerScopeError,
    SymbolNotFoundError,
    TokenExpiredError,
)
from tickerscope._models import (
    AlertCriteria,
    AlertInstrument,
    AlertSubscription,
    AlertSubscriptionList,
    AlertTerm,
    BasicOwnership,
    ChartData,
    ChartMarkup,
    ChartMarkupList,
    Company,
    CorporateActions,
    DataPoint,
    DeliveryPreference,
    Dividend,
    EstimatePeriod,
    ExchangeHoliday,
    ExchangeInfo,
    Financials,
    FundamentalData,
    Fundamentals,
    Industry,
    Layout,
    LayoutColumn,
    OwnershipData,
    Pattern,
    PricePercentChanges,
    Pricing,
    QuarterlyFundOwnership,
    Quote,
    Ratings,
    ReportedPeriod,
    Screen,
    ScreenResult,
    ScreenSource,
    StockData,
    TimeSeries,
    TriggeredAlert,
    TriggeredAlertList,
    TriggeredAlertTerm,
    WatchlistDetail,
    WatchlistEntry,
    WatchlistItem,
    WatchlistSummary,
)

__all__ = [
    # Clients
    "BaseTickerScopeClient",
    "TickerScopeClient",
    "AsyncTickerScopeClient",
    # Auth helpers
    "async_authenticate",
    "is_token_expired",
    # Stock models
    "StockData",
    "Ratings",
    "Company",
    "Pricing",
    "PricePercentChanges",
    "Financials",
    "CorporateActions",
    "Dividend",
    "Pattern",
    "Industry",
    "BasicOwnership",
    "Fundamentals",
    # Chart data models
    "ChartData",
    "DataPoint",
    "Quote",
    "TimeSeries",
    "ExchangeHoliday",
    "ExchangeInfo",
    # Fundamental data models
    "FundamentalData",
    "ReportedPeriod",
    "EstimatePeriod",
    # Alert models
    "AlertInstrument",
    "AlertTerm",
    "AlertCriteria",
    "DeliveryPreference",
    "AlertSubscription",
    "AlertSubscriptionList",
    "TriggeredAlertTerm",
    "TriggeredAlert",
    "TriggeredAlertList",
    # Layout models
    "Layout",
    "LayoutColumn",
    # Chart markup models
    "ChartMarkup",
    "ChartMarkupList",
    # Watchlist models
    "WatchlistEntry",
    "WatchlistItem",
    "WatchlistDetail",
    "OwnershipData",
    "QuarterlyFundOwnership",
    "WatchlistSummary",
    # Screen models
    "Screen",
    "ScreenResult",
    "ScreenSource",
    # Exceptions
    "TickerScopeError",
    "AuthenticationError",
    "CookieExtractionError",
    "TokenExpiredError",
    "APIError",
    "SymbolNotFoundError",
]
