# app/src/trading/position/state.py

from __future__ import annotations

from dataclasses import dataclass


@dataclass(slots=True)
class PositionState:
    # сторона позиции: NONE / LONG / SHORT
    side: str = "NONE"

    # торговый инструмент
    symbol: str = ""

    # id сделки, к которой относится текущая позиция
    trade_id: str | None = None

    # порядковый номер сделки внутри runtime
    trade_sequence: int | None = None

    # номер auto-cycle, в котором открыта сделка
    trade_cycle_number: int | None = None

    # цена входа
    entry_price: float | None = None

    # размер позиции
    size: float | None = None

    # плечо
    leverage: float | None = None

    # нереализованный PnL
    unrealized_pnl_usd: float | None = None

    # peak pnl tracking
    peak_unrealized_pnl_usd: float | None = None
    peak_pnl_percent: float | None = None

    # lifecycle tracking
    max_favorable_excursion_percent: float | None = None
    max_adverse_excursion_percent: float | None = None

    # runtime fatigue tracking
    fatigue_score: float | None = None
    fatigue_state: str | None = None

    # position regime memory
    best_price_seen: float | None = None
    worst_price_seen: float | None = None

    # время открытия позиции
    opened_at: str | None = None

    # monotonic timestamp открытия позиции
    opened_monotonic_at: float | None = None

    # время последнего обновления позиции
    updated_at: str | None = None