import { LRUCache } from 'lru-cache';

declare class CachedMap<K extends {}, V extends {}> implements Map<K, V> {
    readonly cache: LRUCache<K, V>;
    readonly map: Map<K, V>;
    constructor(options: {
        cacheSize: number;
    });
    get [Symbol.iterator](): () => MapIterator<[K, V]>;
    get [Symbol.toStringTag](): string;
    clear(): void;
    delete(key: K): boolean;
    get forEach(): (callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any) => void;
    get(key: K): V | undefined;
    has(key: K): boolean;
    set(key: K, value: V): this;
    get size(): number;
    entries(): MapIterator<[K, V]>;
    keys(): MapIterator<K>;
    values(): MapIterator<V>;
}

export { CachedMap as C };
