"""
Core interfaces for the mainline pipeline architecture.

This module provides all abstract base classes and protocols that define
the contracts between pipeline components:

- Stage: Base class for pipeline components (imported from pipeline.core)
- DataSource: Abstract data providers (imported from data_sources.sources)
- EffectPlugin: Visual effects interface (imported from effects.types)
- Sensor: Real-time input interface (imported from sensors)
- Display: Output backend protocol (imported from display)

This module provides a centralized import location for all interfaces.
"""

from engine.data_sources.sources import (
    DataSource,
    ImageItem,
    SourceItem,
)
from engine.display import Display
from engine.effects.types import (
    EffectConfig,
    EffectContext,
    EffectPlugin,
    PartialUpdate,
    PipelineConfig,
    apply_param_bindings,
    create_effect_context,
)
from engine.pipeline.core import (
    DataType,
    Stage,
    StageConfig,
    StageError,
    StageResult,
    create_stage_error,
)
from engine.sensors import (
    Sensor,
    SensorStage,
    SensorValue,
    create_sensor_stage,
)

__all__ = [
    # Stage interfaces
    "DataType",
    "Stage",
    "StageConfig",
    "StageError",
    "StageResult",
    "create_stage_error",
    # Data source interfaces
    "DataSource",
    "ImageItem",
    "SourceItem",
    # Effect interfaces
    "EffectConfig",
    "EffectContext",
    "EffectPlugin",
    "PartialUpdate",
    "PipelineConfig",
    "apply_param_bindings",
    "create_effect_context",
    # Sensor interfaces
    "Sensor",
    "SensorStage",
    "SensorValue",
    "create_sensor_stage",
    # Display protocol
    "Display",
]
