# app/exceptions/__init__.py
"""
Base exception classes for the application.

This module provides only framework-level exceptions. Domain-specific exceptions
have been moved to their respective modules:

- tenancy: StoreNotFoundException, MerchantNotFoundException, etc.
- orders: OrderNotFoundException, InvoiceNotFoundException, etc.
- inventory: InventoryNotFoundException, InsufficientInventoryException, etc.
- billing: TierNotFoundException, SubscriptionNotFoundException, etc.
- marketplace: ImportJobNotFoundException, MarketplaceProductNotFoundException, etc.
- messaging: ConversationNotFoundException, MessageNotFoundException, etc.
- customers: CustomerNotFoundException, AddressNotFoundException, etc.
- cart: CartItemNotFoundException, EmptyCartException, etc.
- catalog: ProductNotFoundException, ProductValidationException, etc.
- cms: ContentPageNotFoundException, MediaNotFoundException, etc.
- monitoring: ScanNotFoundException, ViolationNotFoundException, etc.

Import pattern:
    # Base exceptions (framework-level)
    from app.exceptions import ValidationException, ResourceNotFoundException

    # Domain exceptions (module-level)
    from app.modules.orders.exceptions import OrderNotFoundException
    from app.modules.tenancy.exceptions import StoreNotFoundException
"""

# Base exceptions - these are the only exports from root
from .base import (
    AuthenticationException,
    AuthorizationException,
    BusinessLogicException,
    ConflictException,
    ExternalServiceException,
    OrionException,
    RateLimitException,
    ResourceNotFoundException,
    ServiceUnavailableException,
    ValidationException,
)

__all__ = [
    # Base exception class
    "OrionException",
    # Validation and business logic
    "ValidationException",
    "BusinessLogicException",
    # Authentication and authorization
    "AuthenticationException",
    "AuthorizationException",
    # Resource operations
    "ResourceNotFoundException",
    "ConflictException",
    # External services
    "ExternalServiceException",
    "ServiceUnavailableException",
    # Rate limiting
    "RateLimitException",
]
