export interface Link { attributes: { href: string; }; text?: string; type?: string; } export interface Person { email?: string; link?: Link; name?: string; } export interface Copyright { attributes: { author: string; }; license?: string; year?: number; } export interface Bounds { attributes: { maxlat: number; maxlon: number; minlat: number; minlon: number; }; } export type Extensions = Record>; export interface Meta { author?: Person; bounds?: Bounds; copyright?: Copyright; desc?: string; extensions?: Extensions; keywords?: string; link?: Link; name?: string; time?: Date; } export interface WayPoint { ageofdgpsdata?: number; attributes: { lat: number; lon: number; }; cmt?: string; desc?: string; dgpsid?: number; ele?: number; extensions?: Extensions; fix?: number; geoidheight?: number; hdop?: number; link?: Link; magvar?: number; name?: string; pdop?: number; sat?: number; src?: string; sym?: string; time?: Date; type?: string; vdop?: number; } export interface Route { cmt?: string; desc?: string; extensions?: Extensions; link?: Link; name?: string; number?: number; rtept?: WayPoint[]; src?: string; type?: string; } export interface TrackSegment { extensions?: Extensions; trkpt: WayPoint[]; } export interface Track { cmt?: string; desc?: string; extensions?: Extensions; link?: Link; name?: string; number?: number; src?: string; trkseg?: TrackSegment[]; type?: string; } export interface GPXBuildData { attributes?: Record; extensions?: Extensions; metadata?: Meta; rte?: Route[]; trk?: Track[]; wpt?: WayPoint[]; }