"""VIO component (ARCH-01).

Public surface for visual-inertial odometry adapters. Phase-1 split of
the legacy ``core/vo.py`` monolith into per-backend modules:

  - protocol.py         — VisualOdometry Protocol (alias ISequentialVisualOdometry)
  - orbslam_backend.py  — pure-Python OpenCV: SequentialVisualOdometry + ORBVisualOdometry
  - cuvslam_backend.py  — Jetson cuVSLAM SDK bridge: CuVSLAMVisualOdometry + CuVSLAMMonoDepthVisualOdometry
  - factory.py          — create_vo_backend env-aware DI seed
  - native/             — placeholder for future cuvslam SDK native glue

The legacy ``gps_denied.core.vo`` import path is preserved as a thin
re-export shim for one phase; tests still import from there.
"""
from gps_denied.components.vio.protocol import (
    ISequentialVisualOdometry,
    VisualOdometry,
)
from gps_denied.components.vio.orbslam_backend import (
    ORBVisualOdometry,
    SequentialVisualOdometry,
)
from gps_denied.components.vio.cuvslam_backend import (
    CuVSLAMMonoDepthVisualOdometry,
    CuVSLAMVisualOdometry,
)

__all__ = [
    "VisualOdometry",
    "ISequentialVisualOdometry",
    "ORBVisualOdometry",
    "SequentialVisualOdometry",
    "CuVSLAMVisualOdometry",
    "CuVSLAMMonoDepthVisualOdometry",
]
