import type * as THREE from "three"; import type { ThreeParts } from "../realistic/textures.ts"; import type { GeoPoint } from "../types.ts"; export interface RouteStats { on: boolean; kilometres: number; greatCircleKm: number; flightHours: number; } export interface RouteState { ends: { from: GeoPoint; to: GeoPoint; } | null; version: number; failed: boolean; stats: RouteStats; } export declare const newRouteState: () => RouteState; /** Put a route on the model. Returns false when it did not change, so the element does not ask for a frame. */ export declare function applyRoute(state: RouteState, ends: { from: GeoPoint; to: GeoPoint; } | null): boolean; export interface RouteLayer { sync(): void; dispose(): void; } /** * The route under `parent` (the group that turns with the Earth). Needs `LineSegments`, as the grid does. */ export declare function createRouteLayer(three: ThreeParts, parent: THREE.Object3D, state: RouteState): RouteLayer;