export interface PromptCacheEntry { key: string; response: any; storedAt: number; hits: number; lastAccessed: number; bytes: number; } export interface PromptCacheStats { entries: number; bytes: number; hits: number; misses: number; hitRate: number; savings: { estimatedTokensSaved: number; estimatedUsdSaved: number; }; } export declare class PromptCache { private maxEntries; private byteBudget; private ttlMs; private map; private bytes; private hits; private misses; private tokensSaved; private usdSaved; constructor(maxEntries?: number, byteBudget?: number, ttlMs?: number); private keyFor; /** Wrap a call. If cached and fresh, return cached. Otherwise call fn, store, return. */ wrap(inputs: { prompt: string; system?: string; model?: string; provider?: string; estimatedTokens?: number; estimatedCostUsd?: number; }, fn: () => Promise): Promise; invalidate(inputs: { prompt: string; system?: string; model?: string; provider?: string; }): boolean; stats(): PromptCacheStats; clear(): void; private store; private evictLRU; } export declare function getPromptCache(): PromptCache; export declare function resetPromptCacheForTests(): void; //# sourceMappingURL=prompt-cache.d.ts.map