/** * Represents a node in the LRU cache's doubly linked list. * @template K Type of the key. * @template V Type of the value. */ export interface CacheNode { key: K; value: V; prev: CacheNode | null; next: CacheNode | null; } /** * A Map-like data structure that implements the Least Recently Used (LRU) eviction policy. * Once the capacity is reached, the least recently accessed item is removed. * @template K Type of the key. * @template V Type of the value. */ export declare class LRUMap { private capacity; private map; private head; private tail; /** * Creates an instance of LRUMap. * @param capacity The maximum number of items the cache can hold. */ constructor(capacity: number); /** * Promotes a node to the head of the linked list (marks as most recently used). * @param node The node to promote. */ private promote; /** * Disconnects a node from the doubly linked list. * @param node The node to extract. */ private extract; /** * Inserts a node at the head of the doubly linked list. * @param node The node to prepend. */ private prepend; /** * Stores or updates a value by key. * If the capacity is exceeded, the least recently used item (tail) is removed. * @param key The key to store. * @param value The value to store. */ set(key: K, value: V): void; /** * Retrieves a value by key. * Accessing the item moves it to the "most recently used" position. * @param key The key to look for. * @returns The value associated with the key, or undefined if not found. */ get(key: K): V | undefined; /** * Checks if a key exists in the cache without changing its access order. * @param key The key to check. * @returns True if the key exists, false otherwise. */ has(key: K): boolean; /** * Removes a key and its associated value from the cache. * @param key The key to remove. * @returns True if the key was found and removed, false otherwise. */ delete(key: K): boolean; /** * Returns an iterator of keys in the order of most recently used to least recently used. * @returns An iterable iterator of keys. */ keys(): IterableIterator; /** * Returns the current number of items in the cache. */ get size(): number; /** * Clears all items from the cache. */ clear(): void; }