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 interface Extensions {
    [key: string]: {
        [key: string]: string | number;
    };
}
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?: {
        [key: string]: string;
    };
    extensions?: Extensions;
    metadata?: Meta;
    rte?: Route[];
    trk?: Track[];
    wpt?: WayPoint[];
}
