import maplibre from 'maplibre-gl';
import { Component, ReactNode } from 'react';
import { MapAttribution } from '../attribution.js';
/**
 * Map loading in maplibre is weird, the on('load') event is different to 'loaded'
 * this function waits until the map.loaded() function is true before being run.
 */
export declare function onMapLoaded(map: maplibregl.Map, cb: () => void): void;
export declare class Basemaps extends Component<unknown, {
    isLayerSwitcherEnabled: boolean;
}> {
    map: maplibregl.Map;
    el?: HTMLElement;
    mapAttr?: MapAttribution;
    /** Ignore the location updates */
    ignoreNextLocationUpdate: boolean;
    controlScale?: maplibre.ScaleControl | null;
    controlTerrain?: maplibre.TerrainControl | null;
    controlGeo?: maplibregl.GeolocateControl | null;
    updateLocation: () => void;
    updateTerrainFromEvent: () => void;
    updateBounds: (bounds: maplibregl.LngLatBoundsLike) => void;
    /**
     * Only show the geocontrol on GoogleTMS
     * As it does not work with the projection logic we are currently using
     */
    ensureGeoControl(): void;
    /**
     * Only show the elevation on GoogleTMS, as there is no data for other projections yet
     */
    ensureElevationControl(): void;
    /**
     * Only show the scale on GoogleTMS
     * As it does not work with the projection logic we are currently using
     */
    ensureScaleControl(): void;
    updateStyle: () => void;
    componentDidMount(): void;
    _events: (() => boolean)[];
    componentWillUnmount(): void;
    render(): ReactNode;
    updateUrlTimer: unknown;
    onRender: () => void;
    /** Update the window.location with the current location information */
    setLocationUrl(): void;
}
