import { type AutoCompleteTag, type AutocompleteLocation } from '../types/Autocomplete.js';
import type Limiter from '../utils/Limiter.js';
import BaseAPI, { type BaseAPIParams } from '../common/BaseAPI.js';
export declare enum AutocompleteItemType {
    Tag = "Tag",
    Location = "Location"
}
export type AutocompleteAPIGetSuggestionsParams = {
    query: string;
    itemType: AutocompleteItemType.Location;
    limit?: number;
} | {
    query: string;
    itemType: AutocompleteItemType.Tag;
};
export default class AutocompleteAPI extends BaseAPI {
    getSuggestions(params: AutocompleteAPIGetSuggestionsParams & {
        itemType: AutocompleteItemType.Location;
    }): Promise<AutocompleteLocation[]>;
    getSuggestions(params: AutocompleteAPIGetSuggestionsParams & {
        itemType: AutocompleteItemType.Tag;
    }): Promise<AutoCompleteTag[]>;
    getSuggestions(params: AutocompleteAPIGetSuggestionsParams): Promise<AutoCompleteTag[] | AutocompleteLocation[]>;
    /**
     * @internal
     */
    protected getAutocompleteTags(params: AutocompleteAPIGetSuggestionsParams & {
        itemType: AutocompleteItemType.Tag;
    }): Promise<AutoCompleteTag[]>;
    /**
     * @internal
     */
    protected getAutocompleteLocations(params: AutocompleteAPIGetSuggestionsParams & {
        itemType: AutocompleteItemType.Location;
    }): Promise<AutocompleteLocation[]>;
}
export declare class LimiterAutocompleteAPI extends AutocompleteAPI {
    #private;
    constructor(params: BaseAPIParams & {
        limiter: Limiter;
    });
    getSuggestions(params: AutocompleteAPIGetSuggestionsParams & {
        itemType: AutocompleteItemType.Location;
    }): Promise<AutocompleteLocation[]>;
    getSuggestions(params: AutocompleteAPIGetSuggestionsParams & {
        itemType: AutocompleteItemType.Tag;
    }): Promise<AutoCompleteTag[]>;
    getSuggestions(params: AutocompleteAPIGetSuggestionsParams): Promise<AutocompleteLocation[] | AutoCompleteTag[]>;
}
//# sourceMappingURL=AutocompleteAPI.d.ts.map