import type { Database } from '../db/database.js'; export interface TraceOptions { codebase: string; symbol: string; maxDepth: number; edgeKinds?: string[]; symbolKinds?: string[]; } export interface SymbolNode { id: number; name: string; qualified: string; kind: string; depth: number; filePath?: string; lineStart?: number | null; lineEnd?: number | null; } export interface TraceResult { root: SymbolNode | null; nodes: SymbolNode[]; direction: 'callees' | 'callers'; maxDepthReached: number; } export interface ModuleDepResult { rootPath: string; nodes: Array<{ path: string; depth: number; direction: string; }>; } export interface ImpactResult { changedSymbols: SymbolNode[]; affectedEntryPoints: SymbolNode[]; affectedFiles: string[]; } /** * Resolve a symbol query to a qualified name. * Handles: exact qualified name, partial name, or pattern search. */ export declare function resolveSymbol(db: Database, codebaseId: number, query: string): string | null; /** * Trace callees (outgoing dependencies). */ export declare function traceCallees(db: Database, codebaseId: number, opts: TraceOptions): TraceResult; /** * Trace callers (incoming dependencies). */ export declare function traceCallers(db: Database, codebaseId: number, opts: TraceOptions): TraceResult; /** * Trace module-level dependencies. */ export declare function traceModuleDeps(db: Database, codebaseId: number, filePath: string, direction: 'imports' | 'imported_by' | 'both', maxDepth: number): ModuleDepResult; /** * Impact analysis: given changed files/symbols, find all affected entry points. */ export declare function analyzeImpact(db: Database, codebaseId: number, changedFiles: string[], changedSymbolQueries: string[], maxDepth: number): ImpactResult; //# sourceMappingURL=traversal.d.ts.map