//! Flight-route planning: the single engine that turns a route or a
//! flight plan into usable geometry.
//!
//! Every frontend — the `aerocontext` CLI, the MCP `route_brief` tool, a
//! future GUI or iOS app — composes this crate rather than reimplementing
//! any of it. The hub is the [`flightplan::FlightPlan`] domain model;
//! Garmin `.fpl` is one *codec* (inside [`flightplan`]), not the
//! privileged format, so other formats slot in beside it without
//! touching planning logic.
//!
//! The pieces:
//! - [`flightplan`] — the `FlightPlan` model and its `.fpl` codec.
//! - [`route`] — expand a route (idents, airways, DCT, lat/lon, SID/STAR
//!   tokens) against a [`NavDataSnapshot`](aerocontext_core::NavDataSnapshot)
//!   into ordered geometry.
//! - [`corridor`] — a width-bounded corridor around a route, with
//!   leg-wise spatial association.
//! - [`crosssection`] — the vertical profile (climb/cruise/descent, time
//!   en route, fuel) from an
//!   [`AircraftProfile`](aerocontext_core::AircraftProfile).
//!
//! This crate consumes the cycle-stamped snapshot that `aerocontext-navdata`
//! produces; it never fetches or distributes data itself.

pub mod corridor;
pub mod crosssection;
pub mod flightplan;
pub mod route;

pub use corridor::{Corridor, CorridorError};
pub use crosssection::{CrossSection, CrossSectionError, CrossSectionSample, FlightPhase};
pub use flightplan::{FlightPlan, FplError, PlanWaypoint, WaypointType};
pub use route::{ExpandedRoute, RouteError, RoutePoint, RouteToken, expand_str};
