import type { GroundTruthLabel, MinerLedgers, ResolvedPrDiff, ReviewThreadContent, Stage4VerifierDeps, WindtunnelLock } from '@mmnto/totem';
/** Local alias for the core git exec port (mirrors spine-windtunnel.ts / spine-cert-materialize.ts). */
type SafeExecFn = typeof import('@mmnto/totem').safeExec;
import { type ReplayArtifact } from './spine-llm-replay.js';
import type { CertifyingCorpus, CertifyingCorpusProvider } from './spine-windtunnel.js';
/** The frozen llm-replay fixture — produced by `record` (A2), sealed into the lock by `freeze`. */
export declare const REPLAY_FILE = "llm-replay.v1.json";
export declare const PR_DIFFS_FILE = "pr-diffs.json";
/** The cert-run answer key — produced by `derive-labels` (5d-iii), read by the run. */
export declare const GROUND_TRUTH_FILE = "ground-truth-labels.json";
/** The frozen held-out disposition provenance — produced by `fetch-dispositions` (5d-ii). */
export declare const CORPUS_DISPOSITIONS_FILE = "corpus-dispositions.json";
export interface CertRunFixtureInputs {
    split: import('@mmnto/totem').SplitArtifact;
    artifact: ReplayArtifact;
    content: ReviewThreadContent[];
    prDiffs: ResolvedPrDiff[];
    groundTruth: Map<string, GroundTruthLabel>;
}
/**
 * Load + validate the committed cert-run fixture inputs from the gate-1 dir.
 * Async so the `@mmnto/totem` runtime values (schema + error class) are
 * dynamically imported per the CLI lazy-import convention, not pulled in at
 * module load.
 */
export declare function loadCertRunFixtures(gate1Dir: string, opts?: {
    expectedPrDiffsSha?: string;
    expectedGroundTruthSha?: string;
    skipGroundTruth?: boolean;
}): Promise<CertRunFixtureInputs>;
/**
 * Build the Stage-4 verifier deps (listFiles/readFile over the frozen post-image
 * at `asOf`) — the SHARED constructor both the certifying run and the 5d-iii
 * deriver use, so the archived-rule exclusion (hence the scored rule set, hence
 * the firing labelIds) is identical. With an lc clone, files resolve via
 * `git ls-tree`/`git show` at `asOf` (a local clone — zero network); without one,
 * Stage-4 sees no files (rules read as untested, NOT archived). Tests inject a
 * fake `Stage4VerifierDeps` into `assembleCertifyingCorpus` directly instead.
 */
export declare function buildGate1Stage4Deps(lcDir: string | undefined, asOf: string, safeExec: SafeExecFn): Stage4VerifierDeps;
export interface ReplayCorpusProviderOptions {
    /** The `.totem/spine/gate-1` dir holding the committed cert-run fixtures. */
    gate1Dir: string;
    /** Stage-4 verifier deps (listFiles/readFile) — injected so the run is testable. */
    stage4: Stage4VerifierDeps;
    /** Injected timestamp (Tenet 15 determinism). */
    now: string;
    /** Seed-blindness attestation (fold-I §7). */
    seedClassesProvided?: boolean;
    /** Optional sink for the fold-I miner ledgers (defaults to gate1Dir/miner-ledgers.json). */
    onLedgers?: (ledgers: MinerLedgers) => void;
}
/**
 * Assemble the REPLAY-mode `CertifyingCorpus` (rules + prDiffs + provenance) from
 * the committed gate-1 fixtures — the SHARED path both the certifying run (via
 * `buildReplayCorpusProvider`) and the 5d-iii label-deriver call, so the corpus
 * they enumerate firings over is byte-identical (the answer-key labelIds the
 * deriver mints are the ones the run looks up). The deriver passes
 * `skipGroundTruth: true` — it PRODUCES `ground-truth-labels.json`, so it must
 * not read it (circularity guard); the run omits the flag and loads the frozen
 * answer key. Returns the fold-I ledgers too; the caller decides whether to emit
 * them (the run does; the deriver discards — they belong to the run artifact).
 */
export declare function assembleCertifyingCorpus(opts: ReplayCorpusProviderOptions & {
    skipGroundTruth?: boolean;
}, lock: WindtunnelLock): Promise<{
    corpus: CertifyingCorpus;
    ledgers: MinerLedgers;
}>;
/**
 * Build the REPLAY-mode `CertifyingCorpusProvider` the certifying run injects: a thin
 * wrapper over `assembleCertifyingCorpus` (fixture-load + replay adapters + the
 * `buildCertifyingCorpus` composition) that also emits the fold-I miner ledgers
 * (default: `miner-ledgers.json`) for §7 observability. The deriver calls
 * `assembleCertifyingCorpus` directly instead (it skips ground-truth + discards the
 * ledgers, which belong to the run artifact).
 */
export declare function buildReplayCorpusProvider(opts: ReplayCorpusProviderOptions): CertifyingCorpusProvider;
export {};
//# sourceMappingURL=spine-cert-run-corpus.d.ts.map