from abc import ABC, abstractmethod
from app.schemas import AudioChunk, EndpointCapabilities

class AudioInputEndpoint(ABC):
    endpoint_id: str

    @abstractmethod
    async def capabilities(self) -> EndpointCapabilities: ...

    @abstractmethod
    async def open(self) -> None: ...

    @abstractmethod
    async def read_chunk(self) -> AudioChunk: ...

    @abstractmethod
    async def close(self) -> None: ...
