from abc import ABC, abstractmethod


class BaseService(ABC):
    """Abstract base class for all VoxCast services."""

    @abstractmethod
    async def start(self) -> None:
        """Initialize and start the service."""
        ...

    @abstractmethod
    async def stop(self) -> None:
        """Stop and clean up the service."""
        ...

    @property
    @abstractmethod
    def is_ready(self) -> bool:
        """True if service is fully initialized and operational."""
        ...
