import type { KnowledgeEntry } from '../types/index.js'; import type { GapDetectionResult, KnowledgeGap, QueryMissRecord, ResearchSuggestion, CoverageAnalysis } from './gap-detection-types.js'; /** Association link between two knowledge entries (for graph-based gap detection) */ export interface KnowledgeLink { sourceId: string; targetId: string; weight?: number; } export interface GapDetectorOptions { now?: () => Date; idGenerator?: () => string; coverageBaseline?: number; } export declare class GapDetector { private readonly now; private readonly idGenerator; private readonly coverageBaseline; private readonly queryMissHistory; private queryHitCount; constructor(options?: GapDetectorOptions); recordQueryMiss(query: string, context?: string): void; /** Record a successful query hit for coverage analysis (FR-D01 AC6) */ recordQueryHit(): void; detectFrequencyGaps(): KnowledgeGap[]; detectStructuralGaps(entries: KnowledgeEntry[]): KnowledgeGap[]; detect(entries: KnowledgeEntry[], links?: KnowledgeLink[]): GapDetectionResult; getQueryMissHistory(): QueryMissRecord[]; /** * FR-D01 AC3: Graph-based gap detection * Detects isolated nodes, sparse communities, and missing bridge nodes. */ detectGraphGaps(entries: KnowledgeEntry[], links: KnowledgeLink[]): KnowledgeGap[]; /** * FR-D01 AC6: Coverage analysis with target baseline */ analyzeCoverage(entries: KnowledgeEntry[], options?: { baseline?: number; }): CoverageAnalysis; /** * FR-D01 AC5: Create research task directly from a suggestion */ createTaskFromSuggestion(suggestion: ResearchSuggestion, gaps: KnowledgeGap[], generator: { generateFromGap(gap: KnowledgeGap): import('./research-task-types.js').ResearchTask; }): import('./research-task-types.js').ResearchTask; private toFrequencyGap; private toStructuralGap; private toResearchSuggestion; } //# sourceMappingURL=gap-detector.d.ts.map