/** * Graph Builder - Document Graph with Dual Index * Converts document metadata to efficient graph representation using Typed Arrays */ export interface DocumentMetadata { id: string; title: string; tags: string[]; links: { target: string; type: string; }[]; x?: number; y?: number; } export interface GraphNode { id: number; originalId: string; title: string; tags: string[]; x: number; y: number; vx: number; vy: number; mass: number; } export interface GraphEdge { source: number; target: number; type: string; } /** * Document Graph with Dual Index * - Forward edges: source → targets * - Backward edges: target → sources (for O(1) backlink lookup) */ export declare class DocumentGraph { private nodeIdMap; private nodeIdReverse; private nodes; private forward; private backward; private edgeTypes; /** * Build graph from document metadata */ buildFromDocuments(documents: DocumentMetadata[]): void; /** * Get all nodes */ getNodes(): GraphNode[]; /** * Get node by ID */ getNode(id: number): GraphNode | undefined; /** * Get node by original string ID */ getNodeByOriginalId(originalId: string): GraphNode | undefined; /** * Get forward edges (outgoing links from node) */ getForwardEdges(nodeId: number): Uint32Array | undefined; /** * Get backward edges (incoming links to node) - O(1) backlink lookup! */ getBackwardEdges(nodeId: number): Uint32Array | undefined; /** * Get all edges as array */ getEdges(): GraphEdge[]; /** * Get edge type */ getEdgeType(source: number, target: number): string | undefined; /** * Update node position (for layout algorithm) */ updateNodePosition(nodeId: number, x: number, y: number): void; /** * Update node velocity (for physics simulation) */ updateNodeVelocity(nodeId: number, vx: number, vy: number): void; /** * Get graph statistics */ getStats(): { nodeCount: number; edgeCount: number; avgDegree: number; maxDegree: number; }; }