/**
 * Adapters: convert measurement outputs into the canonical `RunRecord[]`
 * artifact that `replayCache`, `pairedEvalueSequence`, and
 * `rubricPredictiveValidity` consume. Two sources:
 *   - `campaignToRunRecords` — the campaign substrate's per-cell results
 *     (the modern path: `runCampaign` / `runImprovementLoop` → records).
 *   - `verificationReportToRunRecord` — a `MultiLayerVerifier` report.
 *
 * Adapters are thin and explicit — every mandatory `RunRecord` field comes
 * from a caller-supplied context (`commitSha`, `model`, `promptHash`,
 * `configHash`) plus the cell's runtime data. The validator still rejects
 * bare-alias model strings — the caller snapshot-pins.
 */
import type { CampaignResult } from '../campaign';
import type { VerificationReport } from '../multi-layer-verifier';
import type { RunRecord, RunSplitTag } from '../run-record';
export interface AdapterContext {
    /** Logical experiment id — typically the campaign or sweep identifier. */
    experimentId: string;
    /** Snapshot model id (e.g. `claude-sonnet-4-6@2025-04-15`). */
    model: string;
    /** Git SHA the harness was run from. */
    commitSha: string;
    /** Hash of the effective prompt sent to the model. */
    promptHash: string;
    /** Hash of the effective config (model, temperature, tools, judges, splits). */
    configHash: string;
    /** Default split tag. Default `'search'`. */
    splitTag?: RunSplitTag;
    /** Default cost in USD when the source doesn't record one. Default `0`. */
    defaultCostUsd?: number;
}
/**
 * Convert a `CampaignResult` into canonical `RunRecord[]` — one record per
 * scored cell. The cell's mean judge composite becomes the split score; every
 * judge dimension is carried through to `outcome.raw`. A cell that errored
 * becomes a record with `failureMode: 'cell_error'` (kept, not dropped — an
 * unscored cell is signal). `candidateId` identifies the measured surface
 * (defaults to the campaign manifest hash).
 */
export declare function campaignToRunRecords(campaign: CampaignResult, ctx: AdapterContext & {
    candidateId?: string;
}): RunRecord[];
/**
 * Convert a `MultiLayerVerifier` `VerificationReport` into a `RunRecord`.
 * `outcome.searchScore` (or `holdoutScore`) is `report.blendedScore`;
 * `outcome.raw` carries every layer's score + a pass indicator; `failureMode`
 * is the first failing layer's reason.
 */
export declare function verificationReportToRunRecord(report: VerificationReport, ctx: AdapterContext & {
    candidateId: string;
    scenarioId?: string;
}, opts?: {
    runId?: string;
}): RunRecord;
//# sourceMappingURL=run-record-adapters.d.ts.map