"""Market Data Base Interfaces and Protocols."""
from __future__ import annotations

from typing import Optional, Protocol

from backend.app.schemas.market import Candle, FundingRate, OrderBook, Ticker
from backend.app.schemas.risk import InstrumentFilters


class MarketDataProvider(Protocol):
    """Protocol for exchange and simulated market data providers."""

    async def get_klines(self, symbol: str, interval: str, limit: int = 200) -> list[Candle]:
        ...

    async def get_ticker(self, symbol: str) -> Ticker:
        ...

    async def get_orderbook(self, symbol: str, limit: int = 50) -> OrderBook:
        ...

    async def get_instrument_filters(self, symbol: str) -> InstrumentFilters:
        ...

    async def get_server_time(self) -> int:
        ...
