import type Database from 'better-sqlite3'; import type { MonographNode } from '../types.js'; import { type SymbolCandidate } from './resolve-node.js'; export type RiskLevel = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL'; export declare function computeRiskLevel(riskScore: number): RiskLevel; export interface ImpactOptions { minConfidenceScore?: number; relationTypes?: string[]; maxDepth?: number; } export interface MonographImpactResult { node: MonographNode | null; directCallers: MonographNode[]; transitiveCallers: Array<{ depth: number; nodes: MonographNode[]; }>; affectedFiles: string[]; /** Test files covering the node, its callers, or any affected file — what to run after a change. */ affectedTests: string[]; riskScore: number; riskLevel: RiskLevel; /** True when `name` matched several nodes and nothing narrowed it to one. */ ambiguous?: boolean; /** Populated when ambiguous (non-test first) — re-query with `nodeId` or `filePath`. */ candidates?: SymbolCandidate[]; } /** * "What breaks if I change this?" — walks outward from a symbol through its * callers, importers, references and subclasses. Returns the affected symbols * by distance, the affected files, the tests that cover any of them * (`affectedTests`) and a risk level. A name that matches several definitions * comes back as candidates rather than a guess. */ export declare function getMonographImpact(db: Database.Database, input: { name: string; filePath?: string; nodeId?: string; depth?: number; }): MonographImpactResult; export declare function monographImpact(db: Database.Database, nodeId: string, options?: ImpactOptions): Promise; //# sourceMappingURL=impact.d.ts.map