using System.Collections.Concurrent; using PolyTraderSharp.Models; namespace PolyTraderSharp { public enum TradingMode { Inactive, SellOnly, Active } /// /// In-Memory Hot-Path State (Core-Teil). /// Enthält den modulübergreifenden Zustand: eigene Accounts, globale Betriebsschalter, /// Markt-Cache und Gesamt-PnL. Copytrading-spezifischer Zustand liegt im CopyTradingState /// (siehe PolyTrader.Modules.CopyTrading). /// public class TradingState { // Globale Betriebsschalter public bool GlobalTradingPaused { get; set; } = false; public TradingMode LiveTradingMode { get; set; } = TradingMode.Inactive; public TradingMode DemoTradingMode { get; set; } = TradingMode.Inactive; public bool IsAlchemyHealthy { get; set; } = false; public bool EnableBlockchainParser { get; set; } = true; public bool DebugPollingLog { get; set; } = false; public bool DebugOrderPayloadLog { get; set; } = false; // Eigene Trading-Accounts (AccountId -> State) public ConcurrentDictionary Accounts { get; } = new(); // Aggregierte PnL über alle Module (Dashboard/Overview) public decimal GlobalPnl { get; set; } = 0.0m; // High-Performance globaler Markt-Cache, verhindert DB-Flaschenhälse im Signalpfad. public ConcurrentDictionary MarketCache { get; } = new(StringComparer.OrdinalIgnoreCase); } }