"""
Custom exceptions for the Nixon KPI Stats API.
"""


class RateLimitException(Exception):
    """
    Raised when Xero API rate limit is exceeded.
    Includes Retry-After information for the client.
    """
    
    def __init__(self, message: str, retry_after_seconds: int = None):
        """
        Initialize rate limit exception.
        
        Args:
            message: Error message
            retry_after_seconds: Number of seconds to wait before retrying
        """
        self.message = message
        self.retry_after_seconds = retry_after_seconds
        super().__init__(self.message)
    
    def __str__(self):
        if self.retry_after_seconds:
            return f"{self.message} (Retry after {self.retry_after_seconds}s)"
        return self.message
