import type { Issue } from '../../types/analysis.types'; /** * Generate a unique key for an issue based on its content (for exact matching) */ export declare const issueKey: (issue: Issue) => string; /** * Deduplicate issues by removing duplicates from incoming array * that already exist in the existing array. * * Uses both exact matching and similarity-based matching to catch * semantically similar issues with different wording. */ export declare const dedupeIssues: (params: { existing: Issue[]; incoming: Issue[]; /** * Invoked when an incoming issue duplicates an existing one (exact or * similar), with the matched existing issue and the dropped incoming issue. * Lets callers enrich the survivor — e.g. graft AI confidence onto a static * finding — instead of silently discarding the incoming copy. Not called * for incoming-vs-incoming duplicates. */ onDuplicate?: (existing: Issue, incoming: Issue) => void; }) => Issue[]; /** * Deduplicate issues within a single array. * * Uses both exact matching and similarity-based matching. * * @param issues - Array of issues to deduplicate * @param _cdkPath - Optional cdkPath (unused, kept for backwards compatibility) */ export declare const deduplicateIssues: (issues: Issue[], _cdkPath?: string) => Issue[];