"""Custom exceptions for wallet operations."""


class WalletOperationError(Exception):
    """Base exception for wallet operations."""

    pass


class InsufficientBalanceError(WalletOperationError):
    """Raised when user has insufficient balance for a transaction."""

    def __init__(self, message: str, available: float | None = None, requested: float | None = None):
        super().__init__(message)
        self.available = available
        self.requested = requested


class InvalidPointTypeError(WalletOperationError):
    """Raised when the specified point type does not exist for the user."""

    def __init__(self, message: str, point_type: str | None = None):
        super().__init__(message)
        self.point_type = point_type


class InvalidParamsError(WalletOperationError):
    """Raised when parameters are invalid."""

    def __init__(self, message: str, method: str | None = None):
        super().__init__(message)
        self.method = method
