"""
Django Hooks - Reusable hook system for Django packages.

A flexible hook system that allows packages to provide extension points for
pre-operation validation and post-operation reactions.

Usage:
    from django_hooks import HookRegistry, HookType, HookContext, register_hook
    
    # Register a hook
    def my_validation(context: HookContext) -> bool:
        if context.metadata.get('amount', 0) > 1000:
            raise HookRejectionError('AMOUNT_TOO_HIGH', 'Amount exceeds limit')
        return True
    
    register_hook('validate_amount', HookType.PRE, my_validation)
"""

from .core import (
    Hook,
    HookContext,
    HookFunction,
    HookManager,
    HookRegistry,
    HookType,
    PostHookError,
    clear_hooks,
    get_global_registry,
    register_hook,
    unregister_hook,
)
from .exceptions import (
    HookExecutionError,
    HookRejectionError,
    HookSystemError,
)

__version__ = "1.0.0"

__all__ = [
    # Core classes
    "Hook",
    "HookContext",
    "HookFunction",
    "HookManager",
    "HookRegistry",
    "HookType",
    "PostHookError",
    # Exceptions
    "HookExecutionError",
    "HookRejectionError",
    "HookSystemError",
    # Global registry functions
    "get_global_registry",
    "register_hook",
    "unregister_hook",
    "clear_hooks",
]
