import type { HiveClient, HivePluginOptions } from './types.cjs';
export declare function memo<R, A, K>(fn: (arg: A) => R, cacheKeyFn: (arg: A) => K): (arg: A) => R;
export declare function cache<R, A, K, V>(fn: (arg: A, arg2: V) => R, cacheKeyFn: (arg: A, arg2: V) => K, cacheMap: {
    has(key: K): boolean;
    set(key: K, value: R): void;
    get(key: K): R | undefined;
}): (arg: A, arg2: V) => {
    key: K;
    value: R;
    cacheHit: boolean;
};
export declare function cacheDocumentKey<T, V>(doc: T, variables: V | null): string;
export declare function measureDuration(): () => number;
export declare function addProperty<T, K extends string>(key: K, value: undefined | null, obj: T): T;
export declare function addProperty<T, K extends string, V>(key: K, value: V, obj: T): T & {
    [k in K]: V;
};
export declare function isHiveClient(clientOrOptions: HiveClient | HivePluginOptions): clientOrOptions is HiveClient;
export declare function logIf(condition: boolean, message: string, logFn: (message: string) => void): void;
export declare function joinUrl(url: string, subdirectory: string): string;
//# sourceMappingURL=utils.d.ts.map