import { ChangeEventHandler, Component, ReactNode } from 'react';
import { LayerInfo } from '../config.map.js';
export interface GroupedOptions {
    label: string;
    options: Option[];
}
export interface Option {
    label: string;
    value: string;
}
export interface LayerSwitcherDropdownState {
    layers?: Map<string, LayerInfo>;
    /** Should the map be zoomed to the extent of the layer when the layer is changed */
    zoomToExtent: boolean;
    /** Should the drop down be limited to the approximate extent of the map */
    filterToExtent: boolean;
    currentLayer: string;
}
export declare class LayerSwitcherDropdown extends Component<unknown, LayerSwitcherDropdownState> {
    _events: (() => boolean)[];
    constructor(p: unknown);
    componentDidMount(): void;
    /**
     * When the layers list load it contains more information like the default pipeline which is needed to create the tile XYZ url
     * so if the pipeline exists and its not set to the currently selected one update it
     */
    ensurePipelineSet(): void;
    componentWillUnmount(): void;
    /**
     * lookup a layer from the liast of layers used to render the dropdown
     * @param layerId
     * @returns the layer or null if its not found
     */
    getLayer(layerId: string): LayerInfo | null;
    onLayerChange: (opt: Option | null) => void;
    onZoomExtentChange: ChangeEventHandler<HTMLInputElement>;
    onFilterExtentChange: ChangeEventHandler<HTMLInputElement>;
    renderTotal(total: number, hidden: number): ReactNode | null;
    render(): ReactNode;
    makeOptions(): {
        options: GroupedOptions[];
        current: Option | null;
        hidden: number;
        total: number;
    };
}
