export interface EvictableEntry { size: number; timestamp?: number; expiry?: number; value?: unknown; tags?: string[]; } export interface LRUTrackerInterface { getLRU(): string | undefined; remove(key: string): void; } export interface LRUNodeInterface { key: string; entry: T; prev: LUNodeInterface | null; next: LUNodeInterface | null; } type LUNodeInterface = LRUNodeInterface; export interface LRUListManagerInterface { getTail(): LRUNodeInterface | null; removeNode(node: LRUNodeInterface): void; } export interface EvictionManagerOptions { onEvict?: (key: string, value: unknown) => void; loggerContext?: string; } export declare class EvictionManager { private readonly onEvict?; constructor(options?: EvictionManagerOptions); evictIfNeeded(cache: Map, lruTracker: LRUTrackerInterface, newEntrySize: number, maxSize: number, maxMemory: number): void; evictLRU(cache: Map, lruTracker: LRUTrackerInterface): number; evictLRUFromList(listManager: LRUListManagerInterface, store: Map>, tagIndex: Map>, currentSize: number): number; enforceMemoryLimits(listManager: LRUListManagerInterface, store: Map>, tagIndex: Map>, currentSize: number, maxEntries: number, maxSizeBytes: number): number; private cleanupTags; evictExpired(cache: Map, lruTracker: LRUTrackerInterface, ttl: number): number; isExpired(entry: TEntry, ttl?: number, now?: number): boolean; } export {}; //# sourceMappingURL=eviction-manager.d.ts.map