/**
 * Persistent knowledge graph — caches symbol relationships (import edges,
 * call chains, type usage) across sessions to avoid expensive recomputation.
 *
 * Stored as JSON alongside the index file. Invalidated when the index changes
 * (via content hash comparison).
 */
export interface GraphEdge {
    from: string;
    to: string;
    kind: "imports" | "calls" | "uses_type" | "extends" | "implements";
}
export interface PersistentGraph {
    /** Hash of the index content — used to detect staleness */
    index_hash: string;
    /** Timestamp of last computation */
    computed_at: number;
    /** Import edges between files */
    edges: GraphEdge[];
    /** Module-level stats */
    modules: Array<{
        path: string;
        symbol_count: number;
        in_degree: number;
        out_degree: number;
    }>;
    /** Detected circular dependencies */
    circular_deps: string[][];
}
/**
 * Get the graph store path from an index path.
 * {hash}.index.json → {hash}.graph.json
 */
export declare function getGraphPath(indexPath: string): string;
/** Compute a hash from index file paths + symbol counts (cheap staleness check). */
export declare function computeIndexHash(files: Array<{
    path: string;
    symbol_count: number;
}>): string;
/**
 * Load a persisted graph. Returns null if not found, corrupted, or stale.
 */
export declare function loadGraph(graphPath: string, currentIndexHash: string): Promise<PersistentGraph | null>;
/**
 * Save a computed graph to disk.
 */
export declare function saveGraph(graphPath: string, graph: PersistentGraph): Promise<void>;
//# sourceMappingURL=graph-store.d.ts.map