"""Domain-specific plugin interface for media analysis (read-only / signal extraction)"""

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

# %% auto #0
__all__ = ['MediaAnalysisPlugin']

# %% ../nbs/analysis_interface.ipynb #2d7d7c0c
from abc import abstractmethod
from pathlib import Path
from typing import Union

from cjm_plugin_system.core.interface import PluginInterface

from .core import MediaAnalysisResult

# %% ../nbs/analysis_interface.ipynb #d6f71d68
class MediaAnalysisPlugin(PluginInterface):
    """
    Abstract base class for plugins that analyze media files.
    
    Analysis plugins perform read-only operations that extract temporal segments
    from media files (VAD, scene detection, beat detection, etc.).
    """
    
    entry_point_group = "media.analysis_plugins"

    @abstractmethod
    def execute(
        self,
        media_path: Union[str, Path],  # Path to media file to analyze
        **kwargs
    ) -> MediaAnalysisResult:  # Analysis result with detected TimeRanges
        """Analyze the media file and return detected temporal segments."""
        ...
