import { type ConceptRef, type ResolvedConceptRef } from "./concept-ref.js"; import { type KnowledgeIndexSnapshot } from "./knowledge-index.js"; export type KnowledgeRelation = "outgoing" | "backlink"; export interface KnowledgeRelatedConcept { readonly ref: ResolvedConceptRef; readonly title?: string; readonly relation: KnowledgeRelation; readonly depth: number; readonly via: ConceptRef; readonly evidence: { readonly source: ConceptRef; readonly sourceRelativePath: string; readonly line: number; }; readonly orderingKey: string; } /** Traverse authored outgoing links and derived backlinks with cycle suppression. */ export declare const relatedKnowledgeConcepts: (snapshot: KnowledgeIndexSnapshot, start: ConceptRef, maximumDepth?: number, options?: { readonly includeIndexBacklinks?: boolean; }) => ReadonlyArray; export interface KnowledgeResolveCandidate { readonly ref: ResolvedConceptRef; readonly title?: string; readonly reason: "exact-reference" | "exact-concept-id" | "exact-title" | "token-match"; readonly score: number; readonly orderingKey: string; } export type KnowledgeResolveResult = { readonly outcome: "resolved"; readonly candidate: KnowledgeResolveCandidate; } | { readonly outcome: "ambiguous"; readonly candidates: ReadonlyArray; } | { readonly outcome: "not-found"; readonly candidates: ReadonlyArray; }; /** Resolve an exact concept ref or return a bounded deterministic fuzzy candidate set. */ export declare const resolveKnowledgeConcept: (snapshot: KnowledgeIndexSnapshot, input: string, maximumCandidates?: number, fuzzy?: boolean) => KnowledgeResolveResult; //# sourceMappingURL=knowledge-graph.d.ts.map