"""C1 VIO — Public API (AZ-331).

Per ``vio_strategy_protocol.md`` v1.0.0 the public surface consists
of:

- :class:`VioStrategy` Protocol (4 methods).
- DTOs / enum re-exported from :mod:`gps_denied_onboard._types.nav`
  (the L1 home for cross-component DTOs): :class:`VioOutput`,
  :class:`VioHealth`, :class:`FeatureQuality`, :class:`WarmStartPose`,
  :class:`VioState`.
- Error family rooted at :class:`VioError`; three documented subtypes.
- Config block :class:`C1VioConfig` (registered on import).

Concrete strategies (``Okvis2Strategy``, ``VinsMonoStrategy``,
``KltRansacStrategy``) live in sibling modules and are imported
lazily by :mod:`gps_denied_onboard.runtime_root.vio_factory` —
Risk-2 mitigation: this ``__init__.py`` MUST NOT import any concrete
strategy module.
"""

from gps_denied_onboard._types.nav import (
    FeatureQuality,
    VioHealth,
    VioOutput,
    VioState,
    WarmStartPose,
)
from gps_denied_onboard.components.c1_vio.config import C1VioConfig, Okvis2Config
from gps_denied_onboard.components.c1_vio.errors import (
    VioDegradedError,
    VioError,
    VioFatalError,
    VioInitializingError,
)
from gps_denied_onboard.components.c1_vio.interface import VioStrategy
from gps_denied_onboard.config.schema import register_component_block

register_component_block("c1_vio", C1VioConfig)

__all__ = [
    "C1VioConfig",
    "FeatureQuality",
    "Okvis2Config",
    "VioDegradedError",
    "VioError",
    "VioFatalError",
    "VioHealth",
    "VioInitializingError",
    "VioOutput",
    "VioState",
    "VioStrategy",
    "WarmStartPose",
]
