"""Order data models"""

from dataclasses import dataclass
from typing import Optional
from enum import Enum

class OrderType(Enum):
    BUY = "BUY"
    SELL = "SELL"

class OrderStatus(Enum):
    PENDING = "PENDING"
    COMPLETE = "COMPLETE"
    FAILED = "FAILED"
    CANCELLED = "CANCELLED"

@dataclass
class Order:
    """Represents a trading order"""
    symbol: str
    action: OrderType
    quantity: int
    exchange: str
    expiry: str
    price: float = 0.0
    order_id: Optional[str] = None
    status: OrderStatus = OrderStatus.PENDING
    remarks: str = ""
    timestamp: Optional[str] = None

@dataclass
class Position:
    """Represents a trading position"""
    trading_symbol: str
    quantity: int
    average_price: float
    exchange: str
    pnl: float = 0.0
    realized_pnl: float = 0.0
    
@dataclass
class Quote:
    """Represents market quote"""
    symbol: str
    last_price: float
    change: float = 0.0
    volume: int = 0