/**
 * Classifier Cache — CC preToolUse approval cache parity.
 *
 * Caches already-judged tool use classification results to avoid
 * redundant LLM classifier calls for identical tool invocations.
 *
 * CC pattern: The auto-mode classifier is expensive (2 LLM calls per tool).
 * Caching results for identical (toolName + normalized args) combinations
 * eliminates redundant classification within a session.
 *
 * Cache Key: `${toolName}::${normalizedArgs}`
 *   - Args are sorted-key JSON for deterministic comparison
 *   - Bash commands are normalized (whitespace collapse, env var strip)
 *
 * Cache is session-scoped (cleared on session end or mode change).
 *
 * Reference: claude-code src/utils/permissions/permissionCache.ts
 */
export interface CachedClassification {
    shouldBlock: boolean;
    reason: string;
    /** Timestamp when this classification was made */
    classifiedAt: number;
    /** How many times this cache entry was reused */
    hitCount: number;
}
export declare class ClassifierCache {
    private cache;
    /**
     * Look up a cached classification result.
     * Returns undefined if not cached or expired.
     */
    get(toolName: string, args: Record<string, unknown>): CachedClassification | undefined;
    /**
     * Store a classification result.
     */
    set(toolName: string, args: Record<string, unknown>, result: {
        shouldBlock: boolean;
        reason: string;
    }): void;
    /**
     * Check if a tool+args combination is cached.
     */
    has(toolName: string, args: Record<string, unknown>): boolean;
    /** Clear all cached classifications (called on mode change or session end) */
    clear(): void;
    /** Number of cached entries */
    get size(): number;
    /** Total cache hits across all entries */
    get totalHits(): number;
}
