import _LRUCache from 'lru-cache';
import { ResourceCache } from '@foxpage/foxpage-types';
export interface LRUCacheOptions {
    cloned?: boolean;
}
/**
 * lru cache
 *
 * @export
 * @class LRUCache
 * @implements {ResourceCache<T>}
 * @template T
 */
export declare class LRUCache<T> implements ResourceCache<T> {
    lruCache: _LRUCache<string, T>;
    opt?: LRUCacheOptions;
    constructor(maxSize?: number, opt?: LRUCacheOptions);
    /**
     * set resource
     *
     * @param {string} id
     * @param {T} resource
     */
    set(id: string, resource: T): void;
    /**
     * get resource
     *
     * @param {string} id
     * @return {*}  {(T | null | undefined)}
     */
    get(id: string): T | null | undefined;
    /**
     * get count
     * @returns count
     */
    getCurCount(): number;
    /**
     * has resource
     *
     * @param {string} id
     * @return {*}  {boolean}
     */
    has(id: string): boolean;
    /**
     * delete resource
     *
     * @param {string} id
     */
    delete(id: string): void;
    /**
     * reset
     *
     */
    destroy(): void;
    /**
     * dump
     *
     * @return {*}  {Array<{ key: string; value: T }>}
     */
    dump(): Array<{
        key: string;
        value: T;
    }>;
}
