import type { CoreEngine } from '../../../../app/engine.js';
import type { RangeFacetRequest, RangeFacetResponse } from '../../../../features/facets/range-facets/generic/interfaces/range-facet.js';
import type { RangeFacetSortCriterion } from '../../../../features/facets/range-facets/generic/interfaces/request.js';
import type { ConfigurationSection, FacetOptionsSection, SearchSection } from '../../../../state/state-sections.js';
export type RangeFacet = ReturnType<typeof buildCoreRangeFacet>;
export type RangeFacetProps<T extends RangeFacetRequest> = {
    facetId: string;
    getRequest: () => T;
};
export declare function buildCoreRangeFacet<T extends RangeFacetRequest, R extends RangeFacetResponse>(engine: CoreEngine<ConfigurationSection & SearchSection & FacetOptionsSection>, props: RangeFacetProps<T>): {
    isValueSelected: (selection: import("../../../../features/facets/range-facets/generic/interfaces/range-facet.js").RangeFacetValue) => boolean;
    isValueExcluded: (selection: import("../../../../features/facets/range-facets/generic/interfaces/range-facet.js").RangeFacetValue) => boolean;
    deselectAll(): void;
    sortBy(criterion: RangeFacetSortCriterion): void;
    isSortedBy(criterion: RangeFacetSortCriterion): boolean;
    enable(): void;
    disable(): void;
    state: {
        facetId: string;
        values: R["values"];
        sortCriterion: RangeFacetSortCriterion;
        resultsMustMatch: import("../../../../ssr.index.js").FacetResultsMustMatch;
        hasActiveValues: boolean;
        isLoading: boolean;
        enabled: boolean;
        domain: {
            end: string;
            start: string;
        } | {
            end: number;
            start: number;
        } | undefined;
    };
    subscribe(listener: () => void): import("redux").Unsubscribe;
};
