namespace PolyTraderSharp.Models
{
    public class Position
    {
        // Für MySQL: eine positions-Tabelle mit account_id + is_demo (in Mongo lag das
        // im Collection-Namen open_positions_{id} / demo_positions_{id}).
        public int AccountId { get; set; }
        public bool IsDemo { get; set; }

        public string TokenId { get; set; } = string.Empty;
        public string MarketSlug { get; set; } = string.Empty;
        public string ConditionId { get; set; } = string.Empty;
        public int SourceTraderId { get; set; }
        public string SourceTraderName { get; set; } = string.Empty;
        public string SourceTraderAddress { get; set; } = string.Empty;
        public string MarketQuestion { get; set; } = string.Empty;
        public string Outcome { get; set; } = string.Empty;
        public string Side { get; set; } = "BUY";
        public decimal EntryPrice { get; set; }
        public decimal Size { get; set; } // Shares
        public decimal AmountUsd { get; set; }
        public decimal CurrentPrice { get; set; }
        public decimal CurrentValueUsd { get; set; }
        public System.DateTime? ExpiryDate { get; set; }
        public System.DateTime OpenedAt { get; set; } = System.DateTime.UtcNow;

        /// <summary>
        /// Runtime-only (nicht persistiert): Für diese Position läuft gerade eine SELL-Eskalations-
        /// leiter (Phase 0.1). Verhindert Doppel-SELL und hält die Limits-Berechnung korrekt, bis der
        /// Fill über den Sync bestätigt ist. Nach App-Neustart bewusst false (Ladder-Zustand ist transient).
        /// </summary>
        public bool ExitPending { get; set; }
    }
}
