export type CacheStrategy = "LRU" | "LFU";
export declare class UnifiedCache<K, V> {
    private capacity;
    private maxMemory;
    private strategy;
    private cacheMap;
    private lruList;
    private freqMap;
    private minFreq;
    private mutex;
    private currentMemory;
    private absHit;
    private absReq;
    private relHit;
    private relReq;
    private hitResetCounter;
    constructor(capacity: number, maxMemory: number, strategy?: CacheStrategy, hitReset?: number);
    clear(params?: {
        capacity?: number;
        maxMemory?: number;
        strategy?: CacheStrategy;
        hitReset?: number;
    }): Promise<void>;
    get(key: K): Promise<V | undefined>;
    getValueAndMeta(key: K): Promise<{
        value: V;
        meta: {
            [key: string]: any;
        } | undefined;
    } | undefined>;
    getByMeta(callback: (meta: {
        [key: string]: any;
    }) => boolean): Promise<V[]>;
    getMeta(key: K): Promise<{
        [key: string]: any;
    } | undefined>;
    test(key: K): Promise<boolean>;
    set(key: K, value: V, meta?: {
        [mkey: string]: any;
    }): Promise<void>;
    remove(key: K): Promise<void>;
    removeByMeta(callback: (meta: {
        [key: string]: any;
    }) => boolean): Promise<void>;
    private evict;
    private updateFrequency;
    private addToFreqMap;
    private removeFreqMap;
    private roughSizeOfObject;
    getStats(): {
        strategy: CacheStrategy;
        currentNodes: number;
        maxNodes: number;
        currentMemory: number;
        maxMemory: number;
        absHitRate: number;
        relHitRate: number;
    };
    private sizeSuppressorReplacer;
    dump(): string;
}
