"""Oracle client exception hierarchy."""

from __future__ import annotations

from libs.common.retries import NonRetryableError, RetryableError


class OracleConnectionError(RetryableError):
    """Cannot connect to Stock Oracle (network down, refused)."""


class OracleTimeoutError(RetryableError):
    """Request to Stock Oracle timed out."""


class OracleServerError(RetryableError):
    """Stock Oracle returned 5xx."""


class OracleNotFoundError(NonRetryableError):
    """Stock Oracle returned 404 (resource not found)."""


class OracleClientError(NonRetryableError):
    """Stock Oracle returned 4xx (other than 404)."""
