"""Assist pipeline errors."""

from homeassistant.exceptions import HomeAssistantError


class PipelineError(HomeAssistantError):
    """Base class for pipeline errors."""

    def __init__(self, code: str, message: str) -> None:
        """Set error message."""
        self.code = code
        self.message = message

        super().__init__(f"Pipeline error code={code}, message={message}")


class PipelineNotFound(PipelineError):
    """Unspecified pipeline picked."""


class WakeWordDetectionError(PipelineError):
    """Error in wake-word-detection portion of pipeline."""


class WakeWordDetectionAborted(WakeWordDetectionError):
    """Wake-word-detection was aborted."""

    def __init__(self) -> None:
        """Set error message."""
        super().__init__("wake_word_detection_aborted", "")


class WakeWordTimeoutError(WakeWordDetectionError):
    """Timeout when wake word was not detected."""


class SpeechToTextError(PipelineError):
    """Error in speech-to-text portion of pipeline."""


class IntentRecognitionError(PipelineError):
    """Error in intent recognition portion of pipeline."""


class TextToSpeechError(PipelineError):
    """Error in text-to-speech portion of pipeline."""