"""Protocol definitions for external dependencies and plugin integration"""

# AUTOGENERATED! DO NOT EDIT! File to edit: ../../nbs/core/protocols.ipynb.

# %% auto 0
__all__ = ['PluginInfo', 'PluginRegistryProtocol']

# %% ../../nbs/core/protocols.ipynb 3
from typing import Protocol, Dict, Any, List, Optional, runtime_checkable
from dataclasses import dataclass

# %% ../../nbs/core/protocols.ipynb 5
@dataclass
class PluginInfo:
    """Information about a transcription plugin."""
    id: str  # Unique plugin identifier (e.g., "transcription:voxtral_hf")
    name: str  # Plugin name (e.g., "voxtral_hf")
    title: str  # Display title (e.g., "Voxtral HF")
    is_configured: bool  # Whether the plugin has a valid configuration
    supports_streaming: bool = False  # Whether the plugin supports streaming output

# %% ../../nbs/core/protocols.ipynb 7
@runtime_checkable
class PluginRegistryProtocol(Protocol):
    """Protocol for plugin registry access."""

    def get_configured_plugins(self) -> List[PluginInfo]:  # List of PluginInfo for configured plugins
        """Get all configured transcription plugins."""
        ...

    def get_plugin(self,
                   plugin_id: str  # Unique plugin identifier
                   ) -> Optional[PluginInfo]:  # PluginInfo if found, None otherwise
        """Get a specific plugin by ID."""
        ...

    def get_plugin_config(self,
                          plugin_id: str  # Unique plugin identifier
                          ) -> Dict[str, Any]:  # Configuration dictionary, empty dict if not configured
        """Get the configuration for a plugin."""
        ...
