import { ApiFetchCallback, SuggestionsResponse } from './apifetch';
import { SentimentValue } from './ai-answers-api';
import { Settings, PersonalizationEvent, SearchOperator, SortByOptions, SortOrderOptions, FromToRange, FuzzyMatch, ApiMethod } from './settings';
import { RequestInterceptorCallback } from './api';
interface RangeFacetOption {
    field: string;
    ranges: FromToRange[];
}
interface RecommendationsOptions {
    type: 'RELATED_ITEMS' | 'FREQUENTLY_BOUGHT_TOGETHER';
    itemId?: string;
    blockId?: string;
    configurationKey?: string;
}
interface CustomFilterObject {
    [key: string]: unknown;
}
type SearchEventPayload = {
    numberOfResults: number;
};
type ClickEventPayload = {
    documentId: string;
    position: number;
};
type StatsEventPayload = SearchEventPayload | ClickEventPayload;
declare class AddSearchClient {
    private readonly sitekey;
    private readonly privatekey;
    private apiHostname;
    private statsApiHostname;
    private settings;
    private sessionId;
    private userTokenInPersonalization;
    private useStatsSessionId;
    private throttledSearchFetch?;
    private throttledAiAnswersFetch?;
    private throttledSuggestionsFetch?;
    private throttledRecommendationFetch?;
    private throttledAutocompleteFetch?;
    constructor(sitekey: string, privatekey?: string);
    search(): void;
    search(a1: string, a2: ApiFetchCallback): void;
    search(a1: ApiFetchCallback): void;
    aiAnswers(keyword: string, callback: ApiFetchCallback): void;
    putSentimentClick(conversationId: string, sentimentValue: SentimentValue): Promise<boolean | object>;
    suggestions(prefix: string, callback: ApiFetchCallback<SuggestionsResponse>): void;
    autocomplete(field: string, prefix: string, callback: ApiFetchCallback): void;
    fetchCustomApi(field: string, customFilterObject: CustomFilterObject, callback: ApiFetchCallback): void;
    fetchRangeFacets(options: RangeFacetOption, customFilterObject: CustomFilterObject, callback: ApiFetchCallback): void;
    recommendations(options: RecommendationsOptions, callback: ApiFetchCallback): void;
    getDocument(id: string): Promise<object>;
    saveDocument(document: Document): Promise<object>;
    saveDocumentsBatch(batch: {
        documents: Document[];
    }): Promise<object>;
    deleteDocument(id: string): Promise<object>;
    deleteDocumentsBatch(batch: {
        documents: string[];
    }): Promise<object>;
    setApiHostname(hostname: string, conf?: {
        statsApiRequestOnly?: boolean;
        searchApiRequestOnly?: boolean;
    }): void;
    getSettings(): Settings;
    setLanguage(lang: string): void;
    setCategoryFilters(categories: string): void;
    addCustomFieldFilter(fieldName: string, value: string): void;
    removeCustomFieldFilter(fieldName: string, value?: string): void;
    setPriceRangeFilter(minCents: string, maxCents: string): void;
    setDateFilter(dateFrom: string, dateTo: string): void;
    setJWT(jwt: string): void;
    setUserToken(token: string): void;
    setPaging(page: number, pageSize: number, sortBy: SortByOptions, sortOder: SortOrderOptions): void;
    nextPage(): void;
    previousPage(): void;
    setSuggestionsSize(size: number): void;
    setAutocompleteSize(size: number): void;
    addFacetField(fieldName: string): void;
    addHierarchicalFacetSetting(setting: object): void;
    addRangeFacet(field: string, ranges: FromToRange[]): void;
    addStatsField(field: string): void;
    setNumberOfFacets(numFacets: number): void;
    setResultType(type: 'organic' | null): void;
    setPersonalizationEvents(events: PersonalizationEvent[]): void;
    setFilterObject(filter: object): void;
    setAiAnswersFilterObject(filter: object): void;
    setShuffleAndLimitTo(shuffleAndLimitTo: number): void;
    setFuzzyMatch(fuzzy: FuzzyMatch): void;
    setPostfixWildcard(wildcard: boolean): void;
    setCacheResponseTime(cacheResponseTime: number): void;
    setCollectAnalytics(collectAnalytics: boolean): void;
    setAnalyticsTag(tagName: string): void;
    setThrottleTime(delay: number): void;
    setStatsSessionId(id: string): void;
    getStatsSessionId(): string;
    enableLogicalOperators(enableLogicalOperators: boolean): void;
    setSearchOperator(operator: SearchOperator): void;
    setApiMethod(method: ApiMethod): void;
    sendStatsEvent(type: 'search' | 'click', keyword: string, data: StatsEventPayload): void;
    getUserTokenInPersonalization(): string;
    enablePersonalizationTracking(isEnabled: boolean, cookieExpireDays?: number): void;
    consentAddSearchCookie(isEnabled: boolean): void;
    setApiRequestInterceptor(callback: RequestInterceptorCallback, option?: {
        searchApiRequestOnly?: boolean;
        statsApiRequestOnly?: boolean;
    }): void;
    setCookie(cookieName: string, cookieValue: string, expireDays: number): void;
    getCookie(cookieName: string): string | undefined;
    searchResultClicked(documentId: string, position: number): void;
    useAiAnswersStream(enable: boolean): void;
}
export = AddSearchClient;
//# sourceMappingURL=index.d.ts.map