"""C6 Tile Cache & Vector Index — Public API (AZ-303).

Per ``tile_store.md`` / ``tile_metadata_store.md`` / ``descriptor_index.md``
v1.0.0, the public surface consists of:

- Three Protocols: :class:`TileStore`, :class:`TileMetadataStore`,
  :class:`DescriptorIndex`.
- DTOs: :class:`TileId`, :class:`TileMetadata`, :class:`TileMetadataPersistent`,
  :class:`TileQualityMetadata`, :class:`Bbox`, :class:`SectorBoundary`,
  :class:`HnswParams`, :class:`IndexMetadata`.
- Enums: :class:`TileSource`, :class:`FreshnessLabel`, :class:`VotingStatus`,
  :class:`SectorClassification`.
- ABC: :class:`TilePixelHandle`.
- Errors: the :class:`TileCacheError` family + :class:`IndexBuildError`.
- Config block: :class:`C6TileCacheConfig` (registered on import).

Concrete impls (``PostgresFilesystemStore``, ``FaissDescriptorIndex``)
live in sibling modules and are imported lazily by the composition root
factories at ``runtime_root.storage_factory`` — Risk-2 mitigation: this
``__init__.py`` MUST NOT import any concrete impl module.
"""

from gps_denied_onboard.components.c6_tile_cache._tile_pixel_handle import (
    TilePixelHandle,
)
from gps_denied_onboard.components.c6_tile_cache._types import (
    Bbox,
    FreshnessLabel,
    HnswParams,
    IndexMetadata,
    SectorBoundary,
    SectorClassification,
    TileId,
    TileMetadata,
    TileMetadataPersistent,
    TileQualityMetadata,
    TileSource,
    VotingStatus,
)
from gps_denied_onboard.components.c6_tile_cache.config import C6TileCacheConfig
from gps_denied_onboard.components.c6_tile_cache.errors import (
    ContentHashMismatchError,
    FreshnessRejectionError,
    IndexBuildError,
    IndexUnavailableError,
    TileCacheError,
    TileFsError,
    TileMetadataError,
    TileNotFoundError,
)
from gps_denied_onboard.components.c6_tile_cache.interface import (
    DescriptorIndex,
    TileMetadataStore,
    TileStore,
)
from gps_denied_onboard.config.schema import register_component_block

register_component_block("c6_tile_cache", C6TileCacheConfig)

__all__ = [
    "Bbox",
    "C6TileCacheConfig",
    "ContentHashMismatchError",
    "DescriptorIndex",
    "FreshnessLabel",
    "FreshnessRejectionError",
    "HnswParams",
    "IndexBuildError",
    "IndexMetadata",
    "IndexUnavailableError",
    "SectorBoundary",
    "SectorClassification",
    "TileCacheError",
    "TileFsError",
    "TileId",
    "TileMetadata",
    "TileMetadataError",
    "TileMetadataPersistent",
    "TileMetadataStore",
    "TileNotFoundError",
    "TilePixelHandle",
    "TileQualityMetadata",
    "TileSource",
    "TileStore",
    "VotingStatus",
]
