/**
 * Rerun + compare primitives over grounded run artifacts
 * (mmnto-ai/totem#2100, strategy#474 slice 1).
 *
 * - **Rerun = same immutable bundle.** `rerunArtifact` re-invokes the
 *   recorded backend with the artifact's EXACT `inputBundle` — it never
 *   touches live retrieval (it imports none) and forces `fresh: true` so the
 *   response cache cannot replay a prior answer as if it were a new run.
 *   The rerun emits a NEW artifact; the source record is never mutated.
 *
 * - **Compare = artifact-vs-artifact diff, deterministic only.** Structural
 *   equality + content hashes + numeric metric deltas. Deliberately NO
 *   similarity scoring of any kind (#2100 review F3 / Tenet 9) — a scorer in
 *   the deterministic substrate would be an LLM-judge smuggled past the
 *   admission contract. Semantic comparison is eval-harness territory
 *   (#2103+), never a core primitive.
 */
import type { RunArtifact, TotemConfig } from '@mmnto/totem';
export interface RerunArtifactOptions {
    /** Content address of the source artifact. */
    hash: string;
    config: TotemConfig;
    cwd: string;
    /** Directory containing totem.config.* — defaults to cwd (mirrors runOrchestrator). */
    configRoot?: string;
}
export interface RerunArtifactResult {
    /** The artifact the rerun replayed. */
    sourceHash: string;
    /** Content address of the NEW record the rerun emitted (append-only). */
    hash: string;
    /** Absolute path of the new record. */
    path: string;
    /** The rerun's response content. */
    content: string;
}
/**
 * Replay a recorded run against its recorded backend with zero input drift.
 * Throws (via `loadRunArtifact`) before invoking anything when the source
 * hash is missing or invalid.
 */
export declare function rerunArtifact(opts: RerunArtifactOptions): Promise<RerunArtifactResult>;
export interface RunArtifactComparison {
    /** `inputHash` equality — same logical bundle in. */
    sameInput: boolean;
    /** Grounding hash + provenance equality. */
    sameGrounding: boolean;
    /** Backend identity equality across all recorded fields. */
    sameBackend: boolean;
    /** Backend field names that differ (empty when sameBackend). */
    backendDelta: string[];
    /** Admission-group equality (mmnto-ai/totem#2102) — presence AND content. */
    sameAdmission: boolean;
    /** Admission member names that differ (empty when sameAdmission). */
    admissionDelta: string[];
    /** Byte equality of output content. */
    sameOutput: boolean;
    outputDelta: {
        contentHashA: string;
        contentHashB: string;
    };
    /** Numeric deltas, B minus A; null when either side did not report. */
    metricsDelta: {
        durationMs: number;
        inputTokens: number | null;
        outputTokens: number | null;
    };
}
/**
 * Deterministic artifact-vs-artifact diff. Pure function of its two inputs —
 * no I/O, no scoring, no randomness.
 */
export declare function compareRunArtifacts(a: RunArtifact, b: RunArtifact): RunArtifactComparison;
/** Load-then-compare convenience for the CLI verb. */
export declare function compareArtifacts(totemDirAbs: string, hashA: string, hashB: string): RunArtifactComparison;
//# sourceMappingURL=run-artifacts.d.ts.map