"""Binance provider with futures and spot support."""

from typing import Optional

from .provider import BinanceProvider
from ...core import MarketType

__all__ = [
    "BinanceProvider",
    "BinanceFuturesProvider",
    "BinanceSpotProvider",
]


class BinanceFuturesProvider(BinanceProvider):
    """Binance Futures market data provider.
    
    Convenience alias for BinanceProvider(market_type=MarketType.FUTURES).
    Uses Binance Futures API: https://fapi.binance.com
    
    This provider automatically filters for PERPETUAL contracts only.
    
    Examples:
        >>> provider = BinanceFuturesProvider()
        >>> async with provider:
        ...     # Get candles for BTC perpetual futures
        ...     candles = await provider.get_candles("BTCUSDT", TimeInterval.M1)
        ...     # Get all USDT perpetual contracts
        ...     symbols = await provider.get_symbols(quote_asset="USDT")
    """
    
    def __init__(
        self,
        api_key: Optional[str] = None,
        api_secret: Optional[str] = None
    ) -> None:
        super().__init__(
            market_type=MarketType.FUTURES,
            api_key=api_key,
            api_secret=api_secret
        )


class BinanceSpotProvider(BinanceProvider):
    """Binance Spot market data provider.
    
    Convenience alias for BinanceProvider(market_type=MarketType.SPOT).
    Uses Binance Spot API: https://api.binance.com
    
    Examples:
        >>> provider = BinanceSpotProvider()
        >>> async with provider:
        ...     # Get candles for BTC spot
        ...     candles = await provider.get_candles("BTCUSDT", TimeInterval.M1)
        ...     # Get all USDT spot pairs
        ...     symbols = await provider.get_symbols(quote_asset="USDT")
    """
    
    def __init__(
        self,
        api_key: Optional[str] = None,
        api_secret: Optional[str] = None
    ) -> None:
        super().__init__(
            market_type=MarketType.SPOT,
            api_key=api_key,
            api_secret=api_secret
        )
