"""Rotation schemas (Component F06).

Phase 1 shim — hot-path `RotationResult` lives in
`gps_denied.hot_types.rotation_result`. `HeadingHistory` (mutable
bookkeeping) and `RotationConfig` (config) stay here as Pydantic.
"""

from datetime import datetime
from typing import Optional

from pydantic import BaseModel

from gps_denied.hot_types.rotation_result import RotationResult  # noqa: F401


class HeadingHistory(BaseModel):
    """Flight heading tracking history."""
    flight_id: str
    current_heading: Optional[float] = None
    heading_history: list[float] = []
    last_update: Optional[datetime] = None
    sharp_turns: int = 0


class RotationConfig(BaseModel):
    """Configuration for rotation sweeps."""
    step_angle: float = 30.0
    sharp_turn_threshold: float = 45.0
    confidence_threshold: float = 0.7
    history_size: int = 10


__all__ = [
    "HeadingHistory",
    "RotationConfig",
    "RotationResult",
]
