import { type MinerLedgers } from './ledgers.js';
export type FmClause = 'a' | 'b' | 'c' | 'd' | 'e-split' | 'e-emission' | 'f' | 'g' | 'h' | 'i' | 'stage4-consistency' | 'schema';
export interface FmViolation {
    clause: FmClause;
    detail: string;
}
export interface FalsificationResult {
    /** true iff NO Falsifying-Metric clause holds (the miner run is contract-clean). */
    ok: boolean;
    violations: FmViolation[];
}
/**
 * Run the §8 falsification harness over raw (untrusted) ledger JSON. The schema
 * parse is the first gate — an incomplete provenance tuple (FM(a)) or a
 * non-`unverified` mint (FM(b)) cannot construct a valid `MinerLedgers`, so a
 * parse failure is mapped to its clause. Surviving ledgers then run the
 * cross-cutting checks (c, d, e-split, e-emission, f, g, h, i).
 */
export declare function runFalsificationHarness(rawLedgers: unknown): FalsificationResult;
/**
 * Cross-cutting checks over an ALREADY-VALIDATED `MinerLedgers`.
 *
 * ⚠ FM(a) (incomplete provenance) and FM(b) (non-`unverified` mint) are
 * SCHEMA-ENFORCED and are NOT re-asserted here — a caller that hands in an
 * in-process `MinerLedgers` gets no FM(a)/(b) coverage from this function. For
 * untrusted/raw ledger JSON use {@link runFalsificationHarness}, which parses
 * (catching FM(a)/(b)) before delegating here.
 */
export declare function checkParsedLedgers(ledgers: MinerLedgers): FmViolation[];
//# sourceMappingURL=miner-harness.d.ts.map