import type { Action, Middleware } from '@reduxjs/toolkit';
export declare const randomID: (prepend?: string, length?: number) => string;
export declare function isArray<T>(value: T | T[]): value is T[];
export declare function isEmptyString(str: string): boolean;
export declare function removeDuplicates<T>(arr: T[], predicate: (value: T) => string): any[];
export declare function omit<T>(key: keyof T, obj: T): Omit<T, keyof T>;
export declare function getObjectHash<T>(obj: T): string;
/**
 * Logic copied from coveo.analytics.
 *
 * @deprecated V4 - Starting with Event Protocol, Coveo will no longer respect the DNT standard.
 * Instead, we will provide implementers with documentation on privacy best-practices, letting
 * them decide which standards to respect.
 * For more context behind the decision, see: https://coveord.atlassian.net/browse/LENS-1502
 */
export declare function doNotTrack(): boolean;
export declare function fromEntries<K extends PropertyKey, V>(values: [K, V][]): Record<K, V>;
export declare function resetTimeout(callback: (...args: any[]) => void, timeoutId?: ReturnType<typeof setTimeout>, ms?: number | undefined): NodeJS.Timeout;
export declare function mapObject<TKey extends string, TInitialValue, TNewValue>(obj: Record<TKey, TInitialValue>, predicate: (value: TInitialValue, key: TKey) => TNewValue): Record<TKey, TNewValue>;
export declare function filterObject<TKey extends string, TValue>(obj: Record<TKey, TValue>, predicate: (value: TValue, key: TKey) => boolean): Record<TKey, TValue>;
export declare function clone<T>(value: T): T;
export declare function createWaitForActionMiddleware<TAction extends Action>(isDesiredAction: (action: unknown) => action is TAction): {
    promise: Promise<TAction>;
    middleware: Middleware;
};
export declare function createWaitForActionMiddlewareForRecommendation<TAction extends Action>(isDesiredAction: (action: unknown) => action is TAction, memo: Set<string>): {
    promise: Promise<TAction>;
    middleware: Middleware;
};
