import type { FeatureIterator } from '../index.js';
import type { GPXFixType, GPXLink, GPXMetadata, GPXRoute, GPXTrack, GPXWaypoint } from './types.js';
import type { Properties, VectorFeature, VectorLineStringGeometry, VectorMultiLineStringGeometry, VectorPointGeometry } from '../../index.js';
export * from './types.js';
/** Represents a waypoint, point of interest, or named feature on a map. */
export interface GPXWaypointProperties extends Properties {
    /** Optional timestamp in ISO 8601 format */
    time?: string;
    /** Optional magnetic variation in degrees */
    magvar?: number;
    /** Height of geoid above WGS84 ellipsoid */
    geoidheight?: number;
    /** Waypoint name */
    name?: string;
    /** Waypoint comment */
    cmt?: string;
    /** Description of the waypoint */
    desc?: string;
    /** Source of data */
    src?: string;
    /** Links to additional information */
    link?: GPXLink[];
    /** Symbol name for the waypoint */
    sym?: string;
    /** Classification type of the waypoint */
    type?: string;
    /** Type of GPS fix */
    fix?: GPXFixType;
    /** Number of satellites used for the fix */
    sat?: number;
    /** Horizontal dilution of precision */
    hdop?: number;
    /** Vertical dilution of precision */
    vdop?: number;
    /** Position dilution of precision */
    pdop?: number;
    /** Time since last DGPS update in seconds */
    ageofdgpsdata?: number;
    /** ID of DGPS station used */
    dgpsid?: number;
}
/** Represents a route, which is an ordered list of waypoints leading to a destination. */
export interface GPXRouteProperties extends Properties {
    /** Route name */
    name?: string;
    /** Route comment */
    cmt?: string;
    /** Route description */
    desc?: string;
    /** Source of data */
    src?: string;
    /** Links to external information */
    link?: GPXLink[];
    /** Route number */
    number?: number;
    /** Classification type of the route */
    type?: string;
}
/** Represents a track, which is an ordered list of points describing a path. */
export interface GPXTrackProperties extends Properties {
    /** Track name */
    name?: string;
    /** Track comment */
    cmt?: string;
    /** Track description */
    desc?: string;
    /** Source of data */
    src?: string;
    /** Links to external information */
    link?: GPXLink[];
    /** Track number */
    number?: number;
    /** Classification type of the track */
    type?: string;
}
/** All the possible GPX properties */
export type GPXProperties = GPXWaypointProperties | GPXRouteProperties | GPXTrackProperties;
/**
 * The GPX vector features
 * - Waypoints
 * - Routes
 * - Tracks
 */
export type GPXVectorFeatures = VectorFeature<GPXMetadata, GPXWaypointProperties, GPXProperties, VectorPointGeometry> | VectorFeature<GPXMetadata, GPXWaypointProperties, GPXRouteProperties, VectorLineStringGeometry<GPXWaypointProperties>> | VectorFeature<GPXMetadata, GPXWaypointProperties, GPXRouteProperties, VectorMultiLineStringGeometry<GPXWaypointProperties>>;
/**
 * # GPX Reader
 *
 * ## Description
 * The GPX Reader is an XML-based GPS Exchange Format (GPX) reader.
 *
 * GPX (the GPS Exchange Format) is a light-weight XML data format for the interchange of GPS data
 * (waypoints, routes, and tracks) between applications and Web services on the Internet.
 *
 * Implements the {@link FeatureIterator} interface
 *
 * ## Usage
 * ```ts
 * import { GPXReader } from 'gis-tools-ts';
 * import { FileReader } from 'gis-tools-ts/file';
 *
 * const fileReader = new FileReader('./example.gpx');
 * const gpxReader = new GPXReader(fileReader);
 *
 * for await (const feature of gpxReader) {
 *   console.log(feature);
 * }
 * ```
 *
 * ## Links
 * https://www.topografix.com/gpx.asp
 */
export declare class GPXReader implements FeatureIterator<GPXMetadata, GPXWaypointProperties, GPXProperties> {
    #private;
    metadata: GPXMetadata;
    wpt?: GPXWaypoint[];
    rte?: GPXRoute[];
    trk?: GPXTrack[];
    /**
     * @param input - The data as either a buffer or file reader
     */
    constructor(input: string);
    /**
     * Generator to iterate over each WGS84 lon-lat point
     * @yields {VectorFeature}
     */
    [Symbol.asyncIterator](): AsyncGenerator<GPXVectorFeatures>;
}
//# sourceMappingURL=index.d.ts.map