"""Backtest models - request and response models for backtest endpoints."""

from .requests import (
    ApplySubscription,
    BacktestExistingSymphonyRequest,
    BacktestRequest,
    BacktestVersion,
    Broker,
    Quote,
    RebalanceRequest,
    SymphonyDefinition,
    SymphonyRebalanceState,
)
from .responses import (
    BacktestResult,
    ConfigEntry,
    ConfigKey,
    ConstantsConfig,
    Costs,
    DataWarning,
    DepositPresetsConfig,
    LegendEntry,
    Modification,
    OpenAIConfig,
    OpenAIPromptConfig,
    RebalanceResult,
    RecommendedTrade,
    ScoreExtendedResponse,
    SymphonyRunResult,
)
from .symphony import (
    AISymphonyDescription,
    AssetClass,
    BulkModifySymphoniesRequest,
    CompressNestedIfsModification,
    DraftSymphoniesResponse,
    DraftSymphony,
    FindAndReplaceOperation,
    Indicator,
    # Models
    IndicatorParameter,
    ModifySymphonyResponse,
    # Enums
    ParameterType,
    SymphonyDetail,
    SymphonyMeta,
    SymphonyMetaResponse,
    SymphonyTickersResponse,
    SymphonyVersionInfo,
    TickersResponse,
    UpdateSymphonyNodesResponse,
    UpdateSymphonyResponse,
    UserSymphoniesResponse,
    UserSymphony,
    WatchlistResponse,
    WatchlistSymphony,
    WatchlistSymphonyItem,
)

__all__ = [
    # Enums - Backtest
    "BacktestVersion",
    "Broker",
    "ApplySubscription",
    # Enums - Symphony
    "ParameterType",
    "AssetClass",
    # Symphony models
    "IndicatorParameter",
    "Indicator",
    "SymphonyMeta",
    "SymphonyMetaResponse",
    "SymphonyDetail",
    "SymphonyVersionInfo",
    "TickersResponse",
    "AISymphonyDescription",
    "UserSymphony",
    "DraftSymphony",
    "WatchlistSymphony",
    "WatchlistSymphonyItem",
    "UserSymphoniesResponse",
    "DraftSymphoniesResponse",
    "WatchlistResponse",
    "SymphonyTickersResponse",
    "ModifySymphonyResponse",
    "FindAndReplaceOperation",
    "CompressNestedIfsModification",
    "BulkModifySymphoniesRequest",
    "UpdateSymphonyResponse",
    "UpdateSymphonyNodesResponse",
    # Response models
    "Modification",
    "ScoreExtendedResponse",
    # Symphony models (old backtest)
    "SymphonyDefinition",
    # Request models
    "BacktestRequest",
    "BacktestExistingSymphonyRequest",
    "Quote",
    "SymphonyRebalanceState",
    "RebalanceRequest",
    # Response models
    "Costs",
    "DataWarning",
    "LegendEntry",
    "BacktestResult",
    "RecommendedTrade",
    "SymphonyRunResult",
    "RebalanceResult",
    # Config models
    "ConfigKey",
    "ConstantsConfig",
    "DepositPresetsConfig",
    "OpenAIPromptConfig",
    "OpenAIConfig",
    "ConfigEntry",
]
