import { AsyncThunkAction } from '@reduxjs/toolkit';
import { SpecificFacetSearchResult } from '../../../../../api/search/facet-search/specific-facet-search/specific-facet-search-response.js';
import { AsyncThunkOptions } from '../../../../../app/async-thunk-options.js';
import { CoreEngine, CoreEngineNext } from '../../../../../app/engine.js';
import { ThunkExtraArguments } from '../../../../../app/thunk-extra-arguments.js';
import { FacetSearchOptions } from '../../../../../features/facets/facet-search-set/facet-search-request-options.js';
import { FacetSearchSection } from '../../../../../state/state-sections.js';
export interface FacetSearchProps {
    options: FacetSearchOptions;
    select: (value: SpecificFacetSearchResult) => void;
    exclude: (value: SpecificFacetSearchResult) => void;
    isForFieldSuggestions: boolean;
    executeFacetSearchActionCreator: (facetId: string) => AsyncThunkAction<unknown, unknown, AsyncThunkOptions<unknown, ThunkExtraArguments>>;
    executeFieldSuggestActionCreator: (facetId: string) => AsyncThunkAction<unknown, unknown, AsyncThunkOptions<unknown, ThunkExtraArguments>>;
}
export type FacetSearch = ReturnType<typeof buildFacetSearch>;
export declare function buildFacetSearch(engine: CoreEngine<FacetSearchSection> | CoreEngineNext<FacetSearchSection>, props: FacetSearchProps): {
    /**
     * Selects the provided value.
     * @param result A single specificFacetSearchResult object
     */
    select(value: SpecificFacetSearchResult): void;
    /**
     * Excludes the provided value.
     * @param result A single specificFacetSearchResult object
     */
    exclude(value: SpecificFacetSearchResult): void;
    /**
     * Selects the provided value, and deselects other values.
     * @param result A single specificFacetSearchResult object
     */
    singleSelect(value: SpecificFacetSearchResult): void;
    /**
     * Excludes the provided value, and deselects other values.
     * @param result A single specificFacetSearchResult object
     */
    singleExclude(value: SpecificFacetSearchResult): void;
    state: {
        values: {
            count: number;
            displayValue: string;
            rawValue: string;
        }[];
        isLoading: boolean;
        query: string;
        moreValuesAvailable: boolean;
    } | {
        values: {
            count: number;
            displayValue: string;
            rawValue: string;
        }[];
        isLoading: boolean;
        query: string;
        moreValuesAvailable: boolean;
    };
    updateText(text: string): void;
    showMoreResults(): void;
    search(): void;
    clear(): void;
    updateCaptions(captions: Record<string, string>): void;
};
