"""
=========================================
CV6 AI Trading OS
Market Provider
=========================================
"""

from abc import ABC, abstractmethod


class MarketProvider(ABC):
    """
    Base class for all market data providers.
    Angel One, Zerodha, Upstox, Dhan, Exness...
    """

    @abstractmethod
    def connect(self):
        """Connect to broker market feed"""
        pass

    @abstractmethod
    def disconnect(self):
        """Disconnect from broker"""
        pass

    @abstractmethod
    def get_ltp(self, exchange: str, symbol: str):
        """Get Last Traded Price"""
        pass

    @abstractmethod
    def get_ohlc(self, exchange: str, symbol: str):
        """Get OHLC Data"""
        pass

    @abstractmethod
    def get_candles(
        self,
        exchange: str,
        symbol: str,
        interval: str,
        from_date: str,
        to_date: str,
    ):
        """Get Historical Candle Data"""
        pass