import { AnyValue, Many, AnyObject } from '../../common/types/custom_type.types.cjs';

declare const MutexCacheUtil: <CacheValue = AnyValue>(cacheKey: string) => {
    get: (key: string) => Promise<CacheValue | undefined>;
    find: (filter: (value: any, index: number, array: any[]) => unknown) => Promise<{
        id: string;
        val: CacheValue;
    } | undefined>;
    update: (filter: (value: any, index: number, array: any[]) => unknown, value: CacheValue) => Promise<any>;
    fetchAll: () => Promise<CacheValue[]>;
    set: (key: string, value: CacheValue) => Promise<any>;
    destroy: (filter: (value: any, index: number, array: any[]) => unknown) => Promise<void>;
    getSize: () => number;
    replaceMainCache: (value: Many<CacheValue>) => void;
    setHook(hook: (name: string, debugObject: AnyObject, cacheSize: number) => void): void;
};

export { MutexCacheUtil };
