export interface CacheStore { get(key: K): V | undefined; set(key: K, value: V): void; has(key: K): boolean; delete(key: K): boolean; clear(): void; readonly size: number; } declare class ListNode { key: K; value: V; prev: ListNode | null; next: ListNode | null; constructor(key: K, value: V); } export interface LRUCacheOptions { maxSize: number; store?: CacheStore>; } export declare class LRUCache implements CacheStore { private store; private readonly maxSize; private head; private tail; constructor({ maxSize, store }: LRUCacheOptions); get(key: K): V | undefined; set(key: K, value: V): void; has(key: K): boolean; delete(key: K): boolean; clear(): void; get size(): number; private addToHead; private removeNode; private moveToHead; private removeTail; } export interface HashedKeyCacheOptions { getHash: (key: K) => H; store?: CacheStore; } export declare class HashedKeyCache implements CacheStore { private store; private readonly getHash; constructor({ getHash, store }: HashedKeyCacheOptions); get(key: K): V | undefined; set(key: K, value: V): void; has(key: K): boolean; delete(key: K): boolean; clear(): void; get size(): number; } export {};