"""Enumerations for pattern types, grades, and trading concepts."""

from enum import Enum, IntEnum


class PatternType(str, Enum):
    """Types of ICT patterns."""

    FVG = "fvg"  # Fair Value Gap
    ORDER_BLOCK = "order_block"
    LIQUIDITY = "liquidity"
    PREMIUM_DISCOUNT = "premium_discount"
    STRUCTURE = "structure"


class PatternDirection(str, Enum):
    """Pattern direction (bullish/bearish)."""

    BULLISH = "bullish"
    BEARISH = "bearish"


class Grade(IntEnum):
    """Pattern quality grade (1-5 scale)."""

    ONE = 1
    TWO = 2
    THREE = 3
    FOUR = 4
    FIVE = 5


class SetupType(str, Enum):
    """Complete setup types."""

    CONTINUATION = "continuation"  # 3:00-3:15 continuation setup
    REVERSAL = "reversal"  # 3:30-3:50 reversal setup


class TimeWindow(str, Enum):
    """Trading time windows."""

    CONTINUATION = "continuation"  # 3:00-3:15 EST
    REVERSAL = "reversal"  # 3:30-3:50 EST
    FULL_SESSION = "full_session"  # 3:00-4:00 EST


class TradeDirection(str, Enum):
    """Trade direction."""

    LONG = "long"
    SHORT = "short"


class TradeStatus(str, Enum):
    """Trade status."""

    PENDING = "pending"
    OPEN = "open"
    CLOSED = "closed"
    CANCELLED = "cancelled"


class OrderType(str, Enum):
    """Order types."""

    MARKET = "market"
    LIMIT = "limit"
    STOP = "stop"
    STOP_LIMIT = "stop_limit"


class MarketStructure(str, Enum):
    """Market structure states."""

    BULLISH = "bullish"
    BEARISH = "bearish"
    NEUTRAL = "neutral"
    BOS = "bos"  # Break of Structure
    CHOCH = "choch"  # Change of Character


class Timeframe(str, Enum):
    """Supported timeframes."""

    M1 = "1min"
    M5 = "5min"
    M15 = "15min"

