/**
 * Pipeline step: FinalizeRunStep — writes the run manifest at pipeline end.
 *
 * Inserts between `GapAnalysis` and `PublishReport`. Assembles a
 * `RunManifest` from `state.artifactRefs` (populated by producer steps)
 * and the shared `RunContext` (via `buildRunContext`), then writes it to
 * `runs/{runId}/manifest.json`. The written manifest becomes the source
 * of truth for artifact locations; `PublishReportStep` snapshots the
 * `artifacts` slice into `Report.artifactManifest` (D0032).
 *
 * Design principles:
 * - Single writer — one `writeManifest()` call per pipeline run.
 * - Idempotent — retries produce the same manifest bytes for the same inputs.
 * - Skipped when no writer is wired (local/air-gapped runs stay functional).
 *
 * @see docs/decisions/D0032-run-anchored-artifact-store.md
 */
import type { AppContext, PipelineState, PipelineStep, StepResult, ValidationIssue } from "../../_vendor/ailf-core/index.d.ts";
export declare class FinalizeRunStep implements PipelineStep {
    private readonly pipelineStart;
    private readonly options;
    readonly name = "finalize-run";
    readonly optional = true;
    constructor(pipelineStart: number, options?: {
        evalFingerprint?: string;
    });
    check(): ValidationIssue[];
    execute(ctx: AppContext, state: PipelineState): Promise<StepResult>;
}
