/** * Bidirectional Reference Index * * Builds and maintains a bidirectional index of [[...]] references: * - outgoing: source file → EntityRefs it contains * - incoming: target entity ID → RefSources that reference it * * Supports incremental updates when files change. * * @see TRL-13 */ import type { EntityRef, RefIndex, RefSource } from './types.js'; import type { ResolverContext } from './resolver.js'; /** * Build a complete RefIndex by scanning all provided file contents. */ export declare function buildRefIndex(files: Array<{ path: string; content: string; }>, ctx: ResolverContext): RefIndex; /** * Update the index for a single file that was added or modified. * Removes old entries for the file, then re-parses and re-indexes. */ export declare function updateFileInIndex(index: RefIndex, filePath: string, content: string, ctx: ResolverContext): void; /** * Remove all refs originating from a file (e.g. when the file is deleted). */ export declare function removeFileFromIndex(index: RefIndex, filePath: string): void; /** * Get all outgoing refs from a file. */ export declare function getOutgoingRefs(index: RefIndex, filePath: string): EntityRef[]; /** * Get all incoming refs (backlinks) for an entity. * Accepts either a raw entity ID (e.g. "issue:TRL-5") or a target string. */ export declare function getBacklinks(index: RefIndex, entityId: string): RefSource[]; /** * Get all entity IDs that have at least one backlink. */ export declare function getReferencedEntities(index: RefIndex): string[]; /** * Get all files that contain at least one ref. */ export declare function getFilesWithRefs(index: RefIndex): string[]; /** * Get total counts for the index. */ export declare function getIndexStats(index: RefIndex): { totalFiles: number; totalRefs: number; totalEntities: number; }; //# sourceMappingURL=ref-index.d.ts.map