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

class AudioOutputEndpoint(ABC):
    endpoint_id: str

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

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

    @abstractmethod
    async def write_chunk(self, chunk: AudioChunk) -> None: ...

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

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