"""Factual Trail / Terrain Character contracts and terrain-only composition."""

from mountain_twin.trail_character.association import associate_route, mapped_extension
from mountain_twin.trail_character.continuity import derive_association_continuity
from mountain_twin.trail_character.contracts import (
    AssociationContinuityKind,
    AssociationState,
    CharacterCoverage,
    EvidenceFamily,
    EvidenceOrigin,
    GeoCoordinate,
    MappedFeature,
    MappedNormalizationPolicy,
    MappedSource,
    MappedValueState,
    RouteAssociationContinuityPolicy,
    RouteAssociationContinuityResult,
    RouteAssociationPolicy,
    TrailTerrainCharacterResult,
)
from mountain_twin.trail_character.mapped import (
    DEFAULT_MAPPED_NORMALIZATION_POLICY,
    apply_mapped_character,
    compose_mapped_character,
)
from mountain_twin.trail_character.osm_fixture import load_frozen_osm_fixture
from mountain_twin.trail_character.terrain import compose_terrain_character

__all__ = [
    "AssociationState",
    "AssociationContinuityKind",
    "CharacterCoverage",
    "EvidenceFamily",
    "EvidenceOrigin",
    "GeoCoordinate",
    "MappedFeature",
    "MappedNormalizationPolicy",
    "MappedValueState",
    "MappedSource",
    "RouteAssociationPolicy",
    "RouteAssociationContinuityPolicy",
    "RouteAssociationContinuityResult",
    "TrailTerrainCharacterResult",
    "compose_terrain_character",
    "associate_route",
    "mapped_extension",
    "load_frozen_osm_fixture",
    "derive_association_continuity",
    "DEFAULT_MAPPED_NORMALIZATION_POLICY",
    "compose_mapped_character",
    "apply_mapped_character",
]
