import AbstractSearchClient from './abstractsearchclient.js';
import IGirafeContext from '../context/icontext.js';
import GirafeSingleton from '../../base/GirafeSingleton.js';
import Feature from 'ol/Feature.js';
import { Extent } from 'ol/extent.js';
export type SearchProviderConfig = {
    type: 'geomapfish' | 'geoadminch';
    providerName: string;
    [key: string]: unknown;
};
declare class SearchManager extends GirafeSingleton {
    protected readonly clients: Map<string, AbstractSearchClient>;
    private abortController;
    private defaultSrid;
    private defaultMaxExtent?;
    readonly minSearchTermLength = 3;
    constructor(context: IGirafeContext);
    initializeSingleton(): void;
    protected createClient(providerConfig: SearchProviderConfig): void;
    abortSearch(): void;
    /**
     * Performs a search operation with all available clients based on the provided term and returns results
     * grouped by provider name and result category.
     */
    doSearch(term: string): Promise<Record<string, Record<string, Feature[]>> | null>;
    private createCoordinateSearchResult;
    /**
     * Detects and parses a coordinate search term into an array of two numerical values.
     * The method attempts to identify valid coordinate pairs from the given term,
     * using different separators such as `;`, `/`, `,`, or whitespace.
     */
    detectCoordinatesInTerm(term: string): [number, number] | null;
    private parseCoordinateFromString;
    private isCoordinatePairValid;
    getZoomToBbox(feature: Feature): Extent | undefined;
}
export default SearchManager;
