pub mod broker;
pub mod calendar;
pub mod cost;
pub mod data;
pub mod engine;
pub mod event_bus;
pub mod events;
pub mod instrument;
pub mod metrics;
pub mod platform_expr_strategy;
pub mod portfolio;
pub mod rules;
pub mod scheduler;
pub mod strategy;
pub mod strategy_ai;
pub mod universe;

pub use broker::{BrokerExecutionReport, BrokerSimulator, MatchingType, SlippageModel};
pub use calendar::TradingCalendar;
pub use cost::{ChinaAShareCostModel, CostModel, TradingCost};
pub use data::{
    BenchmarkSnapshot, CandidateEligibility, CorporateAction, DailyFactorSnapshot,
    DailyMarketSnapshot, DailySnapshotBundle, DataSet, DataSetError, EligibleUniverseSnapshot,
    IntradayExecutionQuote, PriceField,
};
pub use engine::{
    BacktestConfig, BacktestDayProgress, BacktestEngine, BacktestError, BacktestResult,
    DailyEquityPoint,
};
pub use event_bus::ProcessEventBus;
pub use events::{
    AccountEvent, FillEvent, OrderEvent, OrderSide, OrderStatus, PositionEvent, ProcessEvent,
    ProcessEventKind,
};
pub use instrument::Instrument;
pub use metrics::{BacktestMetrics, compute_backtest_metrics};
pub use platform_expr_strategy::{
    PlatformExplicitCancelKind, PlatformExplicitOrderKind, PlatformExprStrategy,
    PlatformExprStrategyConfig, PlatformRebalanceSchedule, PlatformScheduleFrequency,
    PlatformTradeAction,
};
pub use portfolio::{CashReceivable, HoldingSummary, PortfolioState, Position};
pub use rules::{ChinaEquityRuleHooks, EquityRuleHooks, RuleCheck};
pub use scheduler::{ScheduleFrequency, ScheduleRule, ScheduleStage, Scheduler};
pub use strategy::{
    CnSmallCapRotationConfig, CnSmallCapRotationStrategy, JqMicroCapConfig, JqMicroCapStrategy,
    OrderIntent, Strategy, StrategyContext, StrategyDecision,
};
pub use strategy_ai::{
    ManualExample, ManualFactorSource, ManualField, ManualFieldGroup, ManualFunction,
    ManualSection, StrategyAiCatalog, StrategyAiGenerateRequest, StrategyAiManual,
    StrategyAiOptimizeRequest, build_generation_prompt, build_optimization_prompt,
    built_in_strategy_manual, merge_catalog_into_manual, render_manual_markdown,
};
pub use universe::{
    BandRegime, DynamicMarketCapBandSelector, SelectionContext, SelectionDiagnostics,
    UniverseCandidate, UniverseSelector,
};
