"""
Sideline - A modular pipeline framework for real-time terminal visualization.

Sideline provides a Stage-based pipeline architecture with capability-based
dependency resolution for building real-time visualization applications.

Features:
- Stage-based pipeline execution with DAG dependency resolution
- Capability-based dependency injection
- Display backends (Terminal, WebSocket, Null, etc.)
- Effect plugin system with param bindings
- Sensor framework for real-time input
- Canvas and Camera for 2D rendering

Example:
    from sideline.pipeline import Pipeline, PipelineConfig, StageRegistry

    pipeline = Pipeline(PipelineConfig(source="custom", display="terminal"))
    pipeline.add_stage("source", MyDataSourceStage())
    pipeline.add_stage("display", StageRegistry.create("display", "terminal"))
    pipeline.build().initialize()

    result = pipeline.execute(initial_data)
"""

__version__ = "0.1.0"

# Re-export core components for convenience
from sideline.pipeline import (
    Pipeline,
    PipelineConfig,
    PipelineContext,
    Stage,
    StageRegistry,
)

from sideline.display import Display, DisplayRegistry

from sideline.effects import Effect, EffectPlugin, EffectRegistry

from sideline.plugins import (
    StagePlugin,
    Plugin,  # Backward compatibility
    PluginMetadata,
    SecurityCapability,
    SecurityManager,
    VersionConstraint,
    CompatibilityManager,
)

from sideline.preset_packs import (
    PresetPack,
    PresetPackMetadata,
    PresetPackManager,
    PresetPackEncoder,
)

__all__ = [
    # Pipeline
    "Pipeline",
    "PipelineConfig",
    "PipelineContext",
    "Stage",
    "StageRegistry",
    # Display
    "Display",
    "DisplayRegistry",
    # Effects
    "Effect",  # Primary class name
    "EffectPlugin",  # Backward compatibility alias
    "EffectRegistry",
    # Plugins
    "StagePlugin",
    "Plugin",  # Backward compatibility alias
    "PluginMetadata",
    "SecurityCapability",
    "SecurityManager",
    "VersionConstraint",
    "CompatibilityManager",
    # Preset Packs
    "PresetPack",
    "PresetPackMetadata",
    "PresetPackManager",
    "PresetPackEncoder",
]
