import type { ReviewFinding, ReviewReport } from '@kernlang/review'; /** Reads the 1-based source line for a file, or undefined when unavailable. */ export type LineAccessor = (filePath: string, line: number) => string | undefined; export interface ReviewBaselineEntry { filePath: string; ruleId: string; severity: ReviewFinding['severity']; /** Legacy `ruleId:line:col` fingerprint — kept for v1 compat and debugging. */ fingerprint: string; message: string; /** * Line-shift-resistant identity: `${ruleId}:${sha(normalizedLine)}#${ordinal}` * (or a legacy `${ruleId}@L${line}:${col}` fallback when the source line was * blank/unreadable). Present only in v2 baselines. See contentKeysForReport. */ contentKey?: string; } export interface ReviewBaselineFile { version: 1 | 2; createdAt: string; entries: ReviewBaselineEntry[]; } export interface ReviewBaselineComparison { currentCount: number; knownCount: number; newCount: number; resolvedCount: number; knownKeys: Set; newKeys: Set; /** Per-finding comparison key (occurrence-index aware) for SARIF/filtering. */ findingKeys: Map; /** True when the baseline used the legacy line-based (v1) format. */ baselineWasLegacy: boolean; } /** Legacy (v1) line-based comparison key — used when a v1 baseline is loaded. */ export declare function getReviewBaselineKey(entry: ReviewBaselineEntry): string; export declare function getReviewBaselineKeyForFinding(filePath: string, finding: ReviewFinding): string; export declare function createReviewBaseline(reports: ReviewReport[], getLine?: LineAccessor): ReviewBaselineFile; export declare function parseReviewBaseline(raw: string): ReviewBaselineFile; export declare function compareReportsToBaseline(reports: ReviewReport[], baseline: ReviewBaselineFile, getLine?: LineAccessor): ReviewBaselineComparison; export declare function filterReportsToNewFindings(reports: ReviewReport[], comparison: ReviewBaselineComparison): ReviewReport[]; /** * Returns the current findings whose content identity is absent from the prior * set — line-shift-resistant, so an edit that only moves a pre-existing finding * is not reported as new. Used by the autofix `--verify` regression gate, where * the prior (pre-edit) and current (post-edit) source differ. */ export declare function newFindingsAgainstPrior(filePath: string, priorFindings: readonly ReviewFinding[], currentFindings: readonly ReviewFinding[], getPriorLine: LineAccessor | undefined, getCurrentLine: LineAccessor | undefined): ReviewFinding[];