"""Research service errors."""


class ResearchError(Exception):
    """Base exception for research service errors."""
    pass


class ResearchAPIError(ResearchError):
    """Error communicating with research API."""
    
    def __init__(self, message: str, status_code: int = None, response_data: dict = None):
        super().__init__(message)
        self.status_code = status_code
        self.response_data = response_data or {}


class ResearchTimeoutError(ResearchError):
    """Research request timed out."""
    pass


class ResearchRateLimitError(ResearchError):
    """Research API rate limit exceeded."""
    
    def __init__(self, message: str, retry_after: int = None):
        super().__init__(message)
        self.retry_after = retry_after


class ResearchValidationError(ResearchError):
    """Research query validation error."""
    pass


class ResearchConfigurationError(ResearchError):
    """Research service configuration error."""
    pass
