"""Composable time-series elements for SGN-TS.

This module re-exports sgn.compose classes with TS-prefixed names for
API consistency. The underlying implementation is identical to sgn.compose.

When TS-specific validation is needed in the future, these aliases can be
replaced with subclasses that add validation logic.

Example usage:
    >>> from sgnts.compose import TSCompose
    >>>
    >>> # Create a composed source from source + transforms
    >>> composed = (
    ...     TSCompose()
    ...     .connect(ts_source, transform1)
    ...     .connect(transform1, transform2)
    ...     .as_source(name="my_composed_ts_source")
    ... )
    >>>
    >>> # Use like any other source element
    >>> pipeline.connect(composed, my_sink)

    >>> # Nested composition: build from smaller composed units
    >>> inner_transform = (
    ...     TSCompose()
    ...     .connect(filter1, filter2)
    ...     .as_transform(name="filter_chain")
    ... )
    >>>
    >>> outer_source = (
    ...     TSCompose()
    ...     .connect(ts_source, inner_transform)  # composed inside composed
    ...     .as_source(name="filtered_source")
    ... )
"""

from sgn.compose import Compose as TSCompose
from sgn.compose import ComposedSinkElement as TSComposedSinkElement
from sgn.compose import ComposedSourceElement as TSComposedSourceElement
from sgn.compose import ComposedTransformElement as TSComposedTransformElement

__all__ = [
    "TSCompose",
    "TSComposedSourceElement",
    "TSComposedTransformElement",
    "TSComposedSinkElement",
]
