/** * ProjectGraph * * Wraps multiple per-file CodeGraph instances with lazy cross-file resolution * infrastructure (SymbolTable, TypeHierarchyResolver, CrossFileResolver). * * Usage: * const pg = new ProjectGraph(); * pg.addFile('/src/A.java', graphA); * pg.addFile('/src/B.java', graphB); * const flows = pg.resolver.findCrossFileTaintFlows(); */ import type { CircleIR } from '../types/index.js'; import { CodeGraph } from './code-graph.js'; import { SymbolTable, TypeHierarchyResolver, CrossFileResolver } from '../resolution/index.js'; export declare class ProjectGraph { private readonly files; private _symbolTable; private _typeHierarchy; private _resolver; /** * Register a file's CodeGraph. Invalidates all lazy caches. */ addFile(filePath: string, graph: CodeGraph): void; /** Registered file paths in insertion order. */ get filePaths(): string[]; /** Total number of registered files. */ get fileCount(): number; /** Retrieve a file's CodeGraph, or undefined if not registered. */ getGraph(filePath: string): CodeGraph | undefined; /** Retrieve a file's CircleIR, or undefined if not registered. */ getIR(filePath: string): CircleIR | undefined; /** Lazily-built SymbolTable covering all registered files. */ get symbolTable(): SymbolTable; /** Lazily-built TypeHierarchyResolver covering all registered files. */ get typeHierarchy(): TypeHierarchyResolver; /** * Lazily-built CrossFileResolver. * Accesses `this.symbolTable` and `this.typeHierarchy` (also lazy) so all * three are computed together on the first call after any `addFile()`. */ get resolver(): CrossFileResolver; } //# sourceMappingURL=project-graph.d.ts.map