import type { Issue, IssueGroup } from '../../types/analysis.types'; /** * Stable fingerprint for a single finding so the same issue produces the * same id across runs. Used by --diff and the `baseline` command. * * Composition (in priority order): * 1. stackName — disambiguates resources with the same path across stacks * 2. cdkPath — the construct path is the most stable resource id * (logicalIds change when the construct tree changes; * paths only change when the user renames a construct) * 3. ruleId — exact rule identity when available (preferred) * 4. issueDigest — sha256 prefix of normalised issue text as a last * resort for findings without a ruleId. Normalised * means whitespace-collapsed and lowercased so trivial * copy edits don't churn fingerprints. * * The output is a colon-separated string so it's grep-friendly and stable * under JSON serialisation. */ export declare const computeFindingFingerprint: (stackName: string, group: Pick, issue: Pick) => string; /** * Walks every issue in a recommendationMap and yields a fingerprint per issue * along with the issue + group it came from. Used by both the baseline writer * and the diff filter. */ export declare const iterateFindings: (stackName: string, recommendationMap: Record) => Generator<{ fingerprint: string; group: IssueGroup; issue: Issue; }>;