/**
 * Parse cache — memoize tree-sitter parse trees by content hash.
 *
 * During indexing, a single Python file may be parsed twice:
 *   1. By extractPythonSymbols() in the symbol extraction pipeline
 *   2. By collectImportEdges() when building the Python import graph
 *
 * This cache stores parsed trees keyed by a cheap content hash so the
 * second call is a no-op. Size-bounded via LRU eviction (default 500
 * entries ≈ 10-50 MB on typical Python codebases).
 *
 * The cache is a singleton used across the indexing pipeline. Tests
 * can reset via `resetParseCache()`.
 */
import type Parser from "web-tree-sitter";
/**
 * Get a cached parse tree, or null if not cached.
 * Updates LRU access time on hit.
 */
export declare function getCachedParse(language: string, source: string): Parser.Tree | null;
/**
 * Store a parse tree in the cache. Evicts least-recently-accessed
 * entries if the cache exceeds MAX_ENTRIES.
 */
export declare function setCachedParse(language: string, source: string, tree: Parser.Tree): void;
/**
 * Reset the cache and stats. Primarily for tests.
 */
export declare function resetParseCache(): void;
/**
 * Get cache stats for debugging / observability.
 */
export declare function getParseCacheStats(): {
    size: number;
    hits: number;
    misses: number;
    hit_rate: number;
};
//# sourceMappingURL=parse-cache.d.ts.map