/**
 * emit-symbol-preflight — turns a Promptfoo results file into per-test
 * `symbolPreflight` artifact emissions, one per (run, mode, task, model).
 *
 * Sits next to `emitPerEntryEvalResults` (W0050) in the post-eval phase
 * of `RunEvalStep`. For every test row in the results file we:
 *
 *   1. Pull the candidate's response text out of `result.response.output`.
 *   2. Run `computePreflight` against the framework-level package-surface
 *      manifest using the wired `PackageSurfaceResolver` from the
 *      `AppContext`.
 *   3. Emit the report through the artifact writer at axes
 *      `(run, mode, task, model)` — same axes as `rawResults`.
 *   4. Attach the report onto `state.preflightReports` keyed by the
 *      same axes so the scoring step (Phase 5) can read it without a
 *      second filesystem hop.
 *
 * Non-blocking: a missing resolver, missing manifest, missing response,
 * or per-row exception logs a warning and continues. The deterministic
 * lane is additive; if any of its inputs are missing the LLM rubric
 * still scores the candidate normally.
 */
import { type ArtifactRef, type ArtifactWriter, type PackageSurfaceConfig, type PackageSurfaceResolver, type RunId, type SymbolPreflightReport } from "../../_vendor/ailf-core/index.d.ts";
/**
 * Per-row preflight key. Mirrors the axis set the writer uses for
 * `symbolPreflight` so the scoring step can look up reports without
 * re-deriving them from disk.
 */
export interface SymbolPreflightKey {
    run: RunId;
    mode: string;
    task: string;
    model: string;
}
/** Map a per-row preflight key to a stable string for in-memory lookup. */
export declare function preflightKey(key: SymbolPreflightKey): string;
export interface EmitSymbolPreflightInput {
    writer: ArtifactWriter;
    ctx: {
        runId: RunId;
    };
    mode: string;
    resultsPath: string;
    packageSurface: PackageSurfaceConfig | undefined;
    resolver: PackageSurfaceResolver | undefined;
}
export interface EmitSymbolPreflightOutput {
    reports: Map<string, SymbolPreflightReport>;
    refs: readonly (ArtifactRef | null)[];
}
export declare function emitSymbolPreflight(input: EmitSymbolPreflightInput): Promise<EmitSymbolPreflightOutput>;
