import type { Finding } from '../types.js';
/**
 * Workspace-scoped false-positive store. The fingerprint set lives at
 * `<workspace>/.rothunter/false-positives.json` so it follows the repo
 * (commit it, share across the team, survive workspace switches). On
 * every scan completion `splitFalsePositives` partitions `result.findings`
 * into normal vs false-positives — the latter never disappear from the
 * report but get a dedicated section in the UI.
 */
export declare function falsePositivesFile(workspaceRoot: string): string;
export declare function readFalsePositives(workspaceRoot: string): Set<string>;
export declare function writeFalsePositives(workspaceRoot: string, set: Set<string>): Promise<void>;
export declare function splitFalsePositives(findings: Finding[], fpSet: ReadonlySet<string>, 
/**
 * User-overridden "keep open" set — fingerprints the operator
 * explicitly un-FP'd. Wins over BOTH the persisted FP set and the
 * per-scan LLM verdict so a click-to-undo on the dashboard actually
 * sticks across reload + future scans.
 */
keptOpenSet?: ReadonlySet<string>): {
    findings: Finding[];
    falsePositives: Finding[];
};
/**
 * Persistent "keep open" override store. Same shape as the FP store,
 * lives at `<workspace>/.rothunter/kept-open.json`. The semantics is
 * inverse: any fingerprint in this set is FORCED into the open list
 * even if the LLM auto-FP'd it. Commit it like the FP store so the
 * team's "no, this IS a real defect" calls survive a fresh scan.
 */
export declare function keptOpenFile(workspaceRoot: string): string;
export declare function readKeptOpen(workspaceRoot: string): Set<string>;
export declare function writeKeptOpen(workspaceRoot: string, set: Set<string>): Promise<void>;
//# sourceMappingURL=false-positives.d.ts.map