"""
Decorators for plugin registration and management.

This module provides convenient decorators for registering plugins.
"""

from typing import Type, Optional
from .registry import plugin_registry
from .base import BasePlugin


def register_plugin(name: Optional[str] = None):
    """
    Decorator to register a plugin class.

    Args:
        name: Optional plugin name (uses class name if not provided)

    Returns:
        Decorator function

    Example:
        @register_plugin("my_processor")
        class MyProcessor(ProcessorPlugin):
            pass
    """
    def decorator(plugin_class: Type[BasePlugin]) -> Type[BasePlugin]:
        plugin_registry.register(plugin_class, name)
        return plugin_class

    return decorator