/**
 * Per-finding identity dispatch. Pure module — no I/O, deterministic
 * output for deterministic input. Identity is the unit of comparison
 * across runs: two findings with the same identity are "the same
 * finding" for baseline / guardrail purposes.
 *
 * Two of the five identity schemes already live in `tools/fingerprint`
 * (dep-vuln + code/secret/config). This module wraps them in the
 * baseline's discriminated-union shape and adds the two new schemes
 * (duplication, coverage-gap) so callers reach all five through a
 * single dispatch.
 */
import type { FindingId, IdentityInput, IdentitySchemeVersion, MatchResult } from './types';
/**
 * Compute the durable identity for a finding. `version` defaults to
 * `'v1'` — explicit so future scheme migrations can co-exist without
 * silent identity drift.
 *
 * Identity is the SAME 16-char hex string format across all kinds, so
 * a baseline can store identities in a single flat set without
 * tracking which kind they came from. Mixing across kinds is safe:
 * the input space for each scheme is disjoint (a dep-vuln tuple of
 * `(package, version, id)` can never collide with a code-finding
 * tuple of `(canonicalRule, file, lineWindow)` at SHA-1 strength).
 */
export declare function identityFor(input: IdentityInput, version?: IdentitySchemeVersion): FindingId;
/**
 * Multiset-aware identity diff — the lowest layer of baseline
 * comparison. Pairs identities by occurrence count, not by presence:
 * an identity appearing twice in prior and once in current produces
 * one persisted pair and one removed pair (set-diff would have
 * incorrectly collapsed those to a single persisted).
 *
 * For each shared identity:
 *   - the first `min(priorCount, currentCount)` occurrences pair as
 *     `persisted` with confidence 1.0 (exact byte equality).
 *   - excess occurrences in `current` produce `added` pairs.
 *   - excess occurrences in `prior` produce `removed` pairs.
 *
 * Output ordering: pairs grouped by identity, then by status. The
 * flat-array views (`persisted`, `added`, `removed`) preserve
 * occurrence multiplicity — duplicate ids appear N times when N
 * occurrences were classified that way. Callers that want a
 * deduplicated view should run them through a Set themselves.
 */
export declare function matchAcrossRuns(prior: Iterable<FindingId>, current: Iterable<FindingId>): MatchResult;
//# sourceMappingURL=finding-identity.d.ts.map