import { type PromptContext } from './types.js';
/**
 * Represents a cached prompt entry with metadata
 */
export interface CacheEntry {
    assembledPrompt: string;
    metadata: {
        files: string[];
        tokenCount?: number;
        assemblyTimeMs: number;
    };
}
/**
 * Statistics about cache usage
 */
export interface CacheStats {
    entryCount: number;
    totalSizeMB: number;
    maxSizeMB: number;
    utilizationPercent: number;
    averageEntrySizeKB: number;
    totalAccesses: number;
    mostAccessedKey: string | null;
    mostAccessedCount: number;
}
/**
 * In-memory prompt cache with LRU eviction
 */
export declare class PromptCache {
    private cache;
    private totalSize;
    private maxSize;
    private accessOrder;
    private requestedSizeMB;
    constructor(maxSizeMB?: number);
    /**
     * Generate a unique cache key from context
     */
    generateKey(context: PromptContext | null | undefined): string;
    /**
     * Store a prompt in the cache
     */
    set(context: PromptContext, prompt: string, metadata: CacheEntry['metadata']): void;
    /**
     * Retrieve a cached prompt
     */
    get(context: PromptContext): CacheEntry | null;
    /**
     * Check if a prompt exists in cache
     */
    has(context: PromptContext | null | undefined): boolean;
    /**
     * Clear all cached entries
     */
    clear(): void;
    /**
     * Get the number of cached entries
     */
    size(): number;
    /**
     * Remove a specific entry from cache
     */
    remove(key: string | null | undefined): boolean;
    /**
     * Get cache statistics
     */
    getStats(): CacheStats;
    /**
     * Preload cache with multiple contexts
     */
    preload(contexts: PromptContext[] | null | undefined): number;
}
