"""Signal and Expectancy Schemas."""
from __future__ import annotations

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


class SignalAction(str, Enum):
    LONG = "LONG"
    SHORT = "SHORT"
    NO_TRADE = "NO_TRADE"


class MarketRegime(str, Enum):
    TRENDING_BULL = "TRENDING_BULL"
    TRENDING_BEAR = "TRENDING_BEAR"
    RANGING_LOW_VOL = "RANGING_LOW_VOL"
    RANGING_HIGH_VOL = "RANGING_HIGH_VOL"
    LIQUIDITY_STRESS = "LIQUIDITY_STRESS"
    UNCERTAIN = "UNCERTAIN"


@dataclass
class SignalCandidate:
    symbol: str
    timeframe: str
    action: SignalAction
    raw_probability: float
    calibrated_probability: float
    expected_return: float
    expected_risk: float
    expected_value: float  # Post-friction net EV
    entry_price: Decimal
    stop_loss_price: Decimal
    take_profit_price: Decimal
    regime: MarketRegime
    reason: str
    model_version: str
    timestamp: str
