import os as _os
_base = _os.path.dirname(__file__)
for _root, _dirs, _files in _os.walk(_base):
    _dirs.sort()
    if _root != _base:
        __path__.append(_root)

"""Steering method implementations."""

from .caa import CAAMethod
from .ostrze import OstrzeMethod
from .mlp import MLPMethod

from .grom import (
    GROMMethod,
    GROMConfig,
    GROMResult,
    GeometryAdaptation,
    GatingNetwork,
    IntensityNetwork,
    DirectionRoutingNetwork,
    RoutingAnalysis,
)

from .advanced import (
    TECZAMethod,
    TECZAConfig,
    MultiDirectionResult,
    TETNOMethod,
    TETNOConfig,
    TETNOResult,
)

from .nurt import (
    NurtMethod,
    NurtConfig,
    NurtResult,
    FlowVelocityNetwork,
    NurtSteeringObject,
)

from .szlak import (
    SzlakMethod,
    SzlakConfig,
    SzlakResult,
    SzlakSteeringObject,
)

from .wicher import (
    WicherMethod,
    WicherConfig,
    WicherResult,
    WicherSteeringObject,
)

__all__ = [
    # Simple methods
    "CAAMethod",
    "OstrzeMethod",
    "MLPMethod",
    # GROM method
    "GROMMethod",
    "GROMConfig",
    "GROMResult",
    "GeometryAdaptation",
    "GatingNetwork",
    "IntensityNetwork",
    "DirectionRoutingNetwork",
    "RoutingAnalysis",
    # Advanced methods
    "TECZAMethod",
    "TECZAConfig",
    "MultiDirectionResult",
    "TETNOMethod",
    "TETNOConfig",
    "TETNOResult",
    # Nurt method
    "NurtMethod",
    "NurtConfig",
    "NurtResult",
    "FlowVelocityNetwork",
    "NurtSteeringObject",
    # Szlak method
    "SzlakMethod",
    "SzlakConfig",
    "SzlakResult",
    "SzlakSteeringObject",
    # Wicher method
    "WicherMethod",
    "WicherConfig",
    "WicherResult",
    "WicherSteeringObject",
]
