/** * Generic LRU cache with optional per-entry TTL — addresses issue #125. * * Unlike CacheEngine (token-aware, persistent SQLite cache), this is an * in-memory LRU intended for hot paths: file-search results, token counts, * MCP correction responses, etc. Eviction is O(1) via Map insertion order. */ export interface LruCacheStats { size: number; maxSize: number; hits: number; misses: number; evictions: number; expired: number; hitRate: number; } export declare class LruCache { private readonly cache; private readonly maxSize; private readonly defaultTtlMs; private hits; private misses; private evictions; private expired; constructor(maxSize: number, defaultTtlMs?: number); get(key: K): V | undefined; set(key: K, value: V, ttlMs?: number): void; has(key: K): boolean; delete(key: K): boolean; clear(): void; get size(): number; /** * Remove all entries whose TTL has expired. Returns the count removed. * * Scans every entry regardless of the default TTL so per-entry TTLs * passed via set(key, value, ttlMs) are also cleaned up even when the * cache was constructed with defaultTtlMs === 0. */ prune(): number; stats(): LruCacheStats; } //# sourceMappingURL=lru-cache.d.ts.map