"""
Asset-specific exception classes for the markitect assets module.

This module provides a hierarchy of exceptions specific to asset management operations,
following the same patterns as the main markitect exception hierarchy.
"""

from markitect.exceptions import MarkitectError


class AssetError(MarkitectError):
    """Base exception for all asset management operations.

    Raised when:
    - Asset file operations fail
    - Asset validation errors occur
    - General asset management issues
    """
    pass


class RegistryError(AssetError):
    """Errors related to asset registry operations.

    Raised when:
    - Registry file read/write operations fail
    - Registry data corruption is detected
    - Registry validation fails
    """
    pass


class DeduplicationError(AssetError):
    """Errors related to asset deduplication operations.

    Raised when:
    - Deduplication storage operations fail
    - Symlink creation fails (and fallback fails too)
    - Asset integrity verification fails
    """
    pass


class PackagingError(AssetError):
    """Errors related to package creation and extraction.

    Raised when:
    - Package creation fails
    - Package extraction fails
    - Manifest validation errors
    - ZIP file operation errors
    """
    pass


class AssetManagerError(AssetError):
    """Errors in high-level asset manager operations.

    Raised when:
    - Configuration validation fails
    - Component initialization fails
    - High-level workflow errors occur
    """
    pass