import type { AnalysisPatternEntry, NegativePatternEntry } from '../types';
import { type FailureCategory } from './failureTaxonomy';
export interface MigrationReport {
    total: number;
    alreadyHashed: number;
    newlyHashed: number;
    byCategory: Record<FailureCategory, number>;
    samples: Record<FailureCategory, string[]>;
}
/**
 * Backfill `failureModeHash` on positive analysis-pattern entries.
 *
 * Positive patterns track successful insights, so historical entries usually
 * carry no failure signal. Without an inferred category we still emit a hash
 * keyed on `unknown` so cross-artifact dedupe works on the (sceneType, archType)
 * dimensions; this never trips supersede because the category is `unknown`.
 */
export declare function backfillPatternEntries(entries: ReadonlyArray<AnalysisPatternEntry>): {
    entries: AnalysisPatternEntry[];
    report: MigrationReport;
};
/**
 * Backfill negative-pattern entries. Each entry can carry multiple
 * `failedApproaches`; we hash both the entry-level and per-approach to
 * cover supersede dedupe at either granularity.
 */
export declare function backfillNegativeEntries(entries: ReadonlyArray<NegativePatternEntry>): {
    entries: NegativePatternEntry[];
    report: MigrationReport;
};
//# sourceMappingURL=migrateFailureModeHash.d.ts.map