import { Map as SDKMap, Subscription } from '@maptiler/sdk';
import { GeocodingControlBase } from './base-control';
import { MaplibreglGeocodingControl } from './maplibregl-control';
import { MaptilerGeocodingControlEventName, MaptilerGeocodingControlEventNameMap } from './maptilersdk-events';
import { MaptilerGeocodingControlOptions } from './maptilersdk-options';
type EventHandlingMethod<Return> = <Type extends MaptilerGeocodingControlEventName>(type: Type, listener: (event: MaptilerGeocodingControlEventNameMap[Type]) => void) => Return;
interface EventOnceHandlingMethod<Return> {
    <Type extends MaptilerGeocodingControlEventName>(type: Type, listener: (event: MaptilerGeocodingControlEventNameMap[Type]) => void): Return;
    <Type extends MaptilerGeocodingControlEventName>(type: Type, listener?: undefined): Promise<MaptilerGeocodingControlEventNameMap[Type]>;
}
export declare class MaptilerGeocodingControl extends MaplibreglGeocodingControl implements GeocodingControlBase<MaptilerGeocodingControlOptions> {
    #private;
    constructor(options?: MaptilerGeocodingControlOptions);
    /** @internal Not to be called directly */
    onAdd(map: SDKMap): HTMLElement;
    /** @internal Not to be called directly */
    onRemove(): void;
    getOptions: () => MaptilerGeocodingControlOptions;
    setOptions(options: MaptilerGeocodingControlOptions): void;
    on: EventHandlingMethod<Subscription>;
    off: EventHandlingMethod<this>;
    once: EventOnceHandlingMethod<this>;
}
export {};
