import { DateRangeRequest } from '../../controllers/facets/range-facet/date-facet/headless-date-facet.js';
import { FacetValueState } from '../../ssr.index.js';
import { RangeValueRequest } from '../facets/range-facets/generic/interfaces/range-facet.js';
import { SearchParameters } from './search-parameter-actions.js';
export declare const rangeDelimiterExclusive = "..";
export declare const rangeDelimiterInclusive = "...";
export declare const facetSearchParamRegex: RegExp;
export type SearchParameterKey = keyof SearchParameters;
type UnknownObject = {
    [field: string]: unknown[];
};
type FacetSearchParameters = keyof Pick<SearchParameters, 'f' | 'fExcluded' | 'cf' | 'sf' | 'af' | 'nf' | 'df' | 'mnf'>;
type FacetKey = keyof typeof supportedFacetParameters;
declare const supportedFacetParameters: Record<FacetSearchParameters, boolean>;
export declare const delimiter = "&";
export declare const equal = "=";
export declare function buildSearchParameterSerializer(): {
    serialize: (obj: {}) => string;
    deserialize: typeof deserialize;
};
export declare function keyHasObjectValue(key: string): key is FacetKey;
export declare function isValidBasicKey(key: string): key is Exclude<SearchParameterKey, FacetKey>;
export declare function isRangeFacetKey(key: string): key is Extract<FacetKey, 'nf' | 'df' | 'mnf'>;
export declare function isValidKey(key: string): key is SearchParameterKey;
export declare const serialize: <T extends {}>(pairSerializer: (pair: [string, unknown]) => string) => (obj: T) => string;
export declare function serializePair(pair: [string, unknown]): string;
export declare function serializeSpecialCharacters(key: string, val: unknown): string;
export declare function isFacetObject(obj: unknown): obj is Record<string, string[]>;
export declare function isRangeFacetObject(obj: unknown): obj is Record<string, RangeValueRequest[]>;
export declare function isObject(obj: unknown): obj is object;
export declare function allEntriesAreValid(obj: object, isValidValue: (v: unknown) => boolean): boolean;
export declare function serializeFacets(key: string, facets: Record<string, string[]>): string;
export declare function serializeRangeFacets(key: string, facets: Record<string, RangeValueRequest[]>): string;
declare function deserialize(fragment: string): SearchParameters;
export declare function splitOnFirstEqual(str: string): string[];
export declare function preprocessObjectPairs(pair: string[], regex?: RegExp): string[];
export declare function buildNumericRanges(ranges: string[], state: FacetValueState): import("../../ssr.index.js").NumericRangeRequest[];
export declare function buildDateRanges(ranges: string[], state: FacetValueState): DateRangeRequest[];
export declare function cast<K extends SearchParameterKey>(pair: [K, string], decode?: boolean): [K, unknown];
export declare function castUnknownObject(value: string): UnknownObject;
export {};
