"""
Asset management module for MarkiTect.

This module provides comprehensive asset management capabilities including:
- Content-addressable asset storage with deduplication
- JSON-based asset registry and metadata management
- Cross-platform symlink support with Windows fallback
- ZIP-based .mdpkg package creation and extraction
- High-level API for coordinating all asset operations

The module follows the Content-Addressable Package System with Symlinks approach,
providing efficient storage, deduplication, and cross-platform compatibility.

Key Classes:
    AssetManager: High-level API coordinator for all asset operations
    AssetRegistry: JSON-based asset metadata persistence and hashing
    AssetDeduplicator: Content-based deduplication with symlink support
    MarkdownPackager: .mdpkg package creation and extraction

Usage:
    from markitect.assets import AssetManager

    # Initialize asset manager
    manager = AssetManager()

    # Add an asset
    result = manager.add_asset(Path("image.png"), "Project logo")

    # Create a package
    manager.create_package(Path("project/"), Path("project.mdpkg"))

    # Extract a package
    manager.extract_package(Path("project.mdpkg"), Path("workspace/"))
"""

from .manager import AssetManager
from .registry import AssetRegistry
from .deduplicator import AssetDeduplicator
from .packager import MarkdownPackager
from .exceptions import (
    AssetError, RegistryError, DeduplicationError,
    PackagingError, AssetManagerError
)
from .constants import (
    DEFAULT_CONFIG, PACKAGE_EXTENSION, MANIFEST_FORMAT_VERSION,
    DEFAULT_EXCLUDE_PATTERNS, CONFLICT_RESOLUTION_OPTIONS
)

__version__ = "1.0.0"

# Public API exports
__all__ = [
    # Main classes
    'AssetManager',
    'AssetRegistry',
    'AssetDeduplicator',
    'MarkdownPackager',

    # Exceptions
    'AssetError',
    'RegistryError',
    'DeduplicationError',
    'PackagingError',
    'AssetManagerError',

    # Constants
    'DEFAULT_CONFIG',
    'PACKAGE_EXTENSION',
    'MANIFEST_FORMAT_VERSION',
    'DEFAULT_EXCLUDE_PATTERNS',
    'CONFLICT_RESOLUTION_OPTIONS'
]
