export declare global {
  type Waypoint = {
    ID: number;
    Ident: string;
  };

  type Runway = {
    ID: number;
    Latitude: number;
    Longitude: number;
    Elevation: number;
    Ident: string;
    TrueHeading: number;
  };

  type TrackCode =
    | 'AF'
    | 'CA'
    | 'CD'
    | 'CF'
    | 'CI'
    | 'CR'
    | 'DF'
    | 'FA'
    | 'FC'
    | 'FD'
    | 'FM'
    | 'HA'
    | 'HF'
    | 'HM'
    | 'IF'
    | 'PI'
    | 'RF'
    | 'TF'
    | 'VA'
    | 'VD'
    | 'VI'
    | 'VM'
    | 'VR';

  type TurnDirection = 'E' | 'L' | 'R';

  type TerminalEntry = {
    ID: number;
    TerminalID: number;
    Type: string;
    Transition: string;
    TrackCode: TrackCode;
    WptID?: number;
    WptLat?: number;
    WptLon?: number;
    TurnDir?: TurnDirection;
    NavID?: number;
    NavLat?: number;
    NavLon?: number;
    NavBear?: number;
    NavDist?: number;
    Course?: number;
    Distance?: number;
    Alt?: string;
    Vnav: unknown;
    CenterID?: number;
    CenterLat?: number;
    CenterLon?: number;
    IsFlyOver: boolean;
    SpeedLimit?: number;
    IsFAF: boolean;
    IsMAP: boolean;
  };

  type Terminal = {
    ID: number;
    FullName: string;
    ICAO: string;
    RwyID: number;
  };

  type NavFix = {
    latitude: number;
    longitude: number;
    altitude?: number;
    speed?: number;
    name?: string;
    isFlyOver?: boolean;
    'marker-color'?: string;
    altitudeConstraint?: string;
    speedConstraint?: number;
    // For map
    isIntersection?: boolean;
  };

  type LineSegment = [number, number];
}
