import type { FacetValue, SearchStatusState } from '@coveo/headless';
import type { i18n } from 'i18next';
import type { RefOrCallback } from 'lit/directives/ref.js';
import type { AtomicAutomaticFacetGenerator } from '../../search/atomic-automatic-facet-generator/atomic-automatic-facet-generator';
export interface FacetValuePropsBase {
    i18n: i18n;
    displayValue: string;
    numberOfResults: number;
    isSelected: boolean;
    class?: string;
    part?: string;
    additionalPart?: string;
    onClick(): void;
    searchQuery?: string;
    buttonRef?: RefOrCallback;
}
export declare function shouldDisplayInputForFacetRange(facetRange: {
    hasInput: boolean;
    hasInputRange: boolean;
    searchStatusState: SearchStatusState;
    facetValues: Pick<FacetValue, 'numberOfResults' | 'state'>[];
}): boolean;
export type BaseFacetElement = HTMLElement & {
    facetId: string;
    isCollapsed: boolean;
};
export declare function sortFacetVisibility(facetElements: BaseFacetElement[], facetInfoMap: Record<string, {
    isHidden: () => boolean;
}>): {
    visibleFacets: BaseFacetElement[];
    invisibleFacets: BaseFacetElement[];
};
export declare function collapseFacetsAfter(facets: BaseFacetElement[], visibleFacetsCount: number): void;
export declare function isAutomaticFacetGenerator(element: HTMLElement): element is AtomicAutomaticFacetGenerator;
export declare function getFacetsInChildren(parent: HTMLElement): BaseFacetElement[];
export declare function getAutomaticFacetGenerator(parent: HTMLElement): AtomicAutomaticFacetGenerator | undefined;
/**
 * Triage elements by their parents.
 * @param facets Facet Elements
 * @param parents Elements that may contains the facets
 * @returns an array in the same order as the parents, containing the facets that are contained by the corresponding parent.
 * The last element of the array contains the facets that are not contained by any of the parents.
 */
export declare function triageFacetsByParents(facets: BaseFacetElement[], ...parents: (HTMLElement | null)[]): Map<HTMLElement | null, BaseFacetElement[]>;
