import type { AsyncThunkAction } from '@reduxjs/toolkit'; import type { SpecificFacetSearchResult } from '../../../../../api/search/facet-search/specific-facet-search/specific-facet-search-response.js'; import type { AsyncThunkOptions } from '../../../../../app/async-thunk-options.js'; import type { CoreEngine, CoreEngineNext } from '../../../../../app/engine.js'; import type { ThunkExtraArguments } from '../../../../../app/thunk-extra-arguments.js'; import type { FacetSearchOptions } from '../../../../../features/facets/facet-search-set/facet-search-request-options.js'; import type { 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>; executeFieldSuggestActionCreator: (facetId: string) => AsyncThunkAction>; } export type FacetSearch = ReturnType; export declare function buildFacetSearch(engine: CoreEngine | CoreEngineNext, 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): void; };