import type { QueryService, CodeEntityInfo } from '../domain/query/queryService.js'; /** * Symbol type filter for definition search */ export type SymbolType = 'function' | 'class' | 'interface' | 'variable' | 'constant' | 'type' | 'enum' | 'any'; /** * Search mode for definition lookup */ export type SearchMode = 'exact' | 'prefix' | 'contains' | 'fuzzy'; /** * Definition search result with confidence score */ export interface DefinitionResult extends CodeEntityInfo { confidence: number; matchReason: string; } /** * Configuration for definition search */ export interface DefinitionSearchConfig { symbolType?: SymbolType; searchMode?: SearchMode; filePathHint?: string; caseSensitive?: boolean; maxResults?: number; minConfidence?: number; } /** * Input for definition search */ export interface FindDefinitionInput { projectPath: string; symbolName: string; config?: DefinitionSearchConfig; } /** * Output of definition search */ export interface FindDefinitionResult { query: { symbolName: string; searchMode: SearchMode; symbolType?: SymbolType; }; definitions: DefinitionResult[]; totalFound: number; searchTimeMs: number; } /** * Dependencies for DefinitionLocator */ export interface DefinitionLocatorDependencies { queryService: QueryService; } /** * DefinitionLocator: High-accuracy symbol definition finder * * Capabilities: * - Exact name matching (default) * - Prefix/contains/fuzzy matching * - Type filtering (function/class/interface/etc.) * - Confidence scoring * - Ambiguity resolution (multiple definitions) * - File path hints for disambiguation * * Target: ≥95% accuracy */ export declare class DefinitionLocator { private readonly queryService; constructor(deps: DefinitionLocatorDependencies); /** * Find definition(s) of a symbol */ findDefinition(input: FindDefinitionInput): Promise; /** * Filter definitions and assign confidence scores */ private filterAndScore; /** * Match symbol name based on search mode */ private matchName; /** * Simple fuzzy matching (Levenshtein distance based) */ private fuzzyMatch; /** * Calculate confidence score for a match * * Factors: * - Name match quality (0.4 weight) * - Type match (0.2 weight) * - File path hint match (0.2 weight) * - Signature completeness (0.1 weight) * - Location info completeness (0.1 weight) */ private calculateConfidence; /** * Generate human-readable match reason */ private generateMatchReason; }