from __future__ import annotations

import abc
from typing import AsyncIterator
from .typing import Kline


class BaseProvider(abc.ABC):
    @abc.abstractmethod
    async def stream_klines(self, symbol: str, timeframe: str) -> AsyncIterator["Kline"]:
        ...

    @abc.abstractmethod
    async def get_historical_ohlcv(self, symbol: str, timeframe: str, start=None, end=None):
        ...
