import { GeoJsonProperties } from 'geojson'; export declare type TrackFeatures = GeoJSON.FeatureCollection; export interface IMappable { geoJSON(): Promise | GeoJSON.FeatureCollection> | GeoJSON.Feature | GeoJSON.FeatureCollection; } export declare const enum MapDataType { KMZ = 0, KML = 1, GeoJSON = 2 } /** * Elements of a coordinate array in the order expected by Mapbox and Google * Maps. */ export declare const enum Index { Longitude = 0, Latitude = 1, Elevation = 2, Time = 3, Speed = 4 } export interface Location { lat: number; lon: number; } /** * Remote map data to be displayed on the map. */ export interface MapSource { name: string; /** Name to show for attribution. */ provider: string; /** Type of data file. The default is `KMZ`. */ type?: MapDataType; url: string; /** Method to transform map data. */ transform?: Transformer; } export interface MapProperties { [key: string]: string | number | undefined; description: string; } /** * Method to transform map properties. */ export declare type Transformer = (from: MapProperties | GeoJsonProperties | null) => Partial | null; /** * Mapbox compatible bounds in longitude, latitude order. * * @see https://www.mapbox.com/mapbox-gl-js/api/#lnglatboundslike */ export interface MapBounds { /** * Southwest corner as lon, lat. For the U.S. this is the smallest * longitude and latitude values. */ sw: number[]; /** * Northeast corner as lon, lat. For the U.S. this is the largest * longitude and latitude values. */ ne: number[]; }