import type { QueryService, GraphFact, CodeEntityInfo } from '../domain/query/queryService.js'; /** * Reference type classification */ export type ReferenceType = 'call' | 'import' | 'implementation' | 'extension' | 'type_usage' | 'instantiation' | 'other'; /** * Reference location with context */ export interface ReferenceLocation { file: string; line?: number; column?: number; context?: string; } /** * Reference result with metadata */ export interface Reference { type: ReferenceType; location: ReferenceLocation; referrer: CodeEntityInfo; fact: GraphFact; } /** * References grouped by file */ export interface FileReferences { file: string; referenceCount: number; references: Reference[]; } /** * Configuration for reference search */ export interface ReferenceSearchConfig { includeDeclaration?: boolean; groupByFile?: boolean; maxReferences?: number; referenceTypes?: ReferenceType[]; } /** * Input for reference search */ export interface FindReferencesInput { projectPath: string; symbolName: string; symbolType?: 'function' | 'class' | 'interface' | 'variable' | 'any'; config?: ReferenceSearchConfig; } /** * Output of reference search */ export interface FindReferencesResult { query: { symbolName: string; symbolType?: string; }; definition?: CodeEntityInfo; references: Reference[]; fileReferences?: FileReferences[]; totalReferences: number; searchTimeMs: number; } /** * Dependencies for ReferencesFinder */ export interface ReferencesFinderDependencies { queryService: QueryService; } /** * ReferencesFinder: High-recall symbol references finder * * Capabilities: * - Function call references * - Import/export references * - Interface implementation references * - Class extension references * - Type usage references * - Grouped by file output * - Context extraction * * Target: ≥90% recall */ export declare class ReferencesFinder { private readonly queryService; constructor(deps: ReferencesFinderDependencies); /** * Find all references to a symbol */ findReferences(input: FindReferencesInput): Promise; /** * Find symbol definition using multiple strategies */ private findDefinition; /** * Collect all reference facts based on symbol type */ private collectReferenceFacts; /** * Process facts into Reference objects with context */ private processReferenceFacts; /** * Classify reference type based on predicate */ private classifyReferenceType; /** * Extract referrer entity information from fact */ private extractReferrer; /** * Extract location from fact and referrer */ private extractLocation; /** * Group references by file */ private groupByFile; /** * Deduplicate facts by unique key */ private deduplicateFacts; }