"""Risk Engine Schemas."""
from __future__ import annotations

from dataclasses import dataclass
from decimal import Decimal
from typing import Optional


@dataclass
class AccountState:
    equity: Decimal
    available_balance: Decimal
    starting_day_equity: Decimal
    peak_equity: Decimal
    open_positions_count: int
    current_leverage: Decimal
    realized_daily_pnl: Decimal
    unrealized_daily_pnl: Decimal


@dataclass
class InstrumentFilters:
    symbol: str
    min_order_qty: Decimal
    qty_step: Decimal
    min_notional: Decimal
    tick_size: Decimal
    max_leverage: Decimal


@dataclass
class RiskDecision:
    approved: bool
    rejection_reason: Optional[str]
    signal: Any
    equity_at_decision: Decimal
    risk_budget: Decimal
    approved_quantity: Decimal
    entry_price: Decimal
    stop_loss_price: Decimal
    take_profit_price: Decimal
    max_loss_estimate: Decimal
