/**
 * emitFileContents() — reads a file from disk and hands its contents to
 * the writer's `emit()`. Shim for the legacy `captureFile(path)` pattern
 * now that the port takes in-memory payloads.
 *
 * Covers the ~13 producer sites that write a file for user-facing output
 * (e.g. promptfoo writes YAML configs and JSON results) and then need to
 * also capture them as artifacts. Reading at emit-time is uniform, keeps
 * the port narrow, and costs nothing at the sizes in play (all descriptors
 * cap ≤10 MB; most are ≤256 KB).
 *
 * Failures are non-blocking per P5 — a missing file or unparseable JSON
 * returns null + warns rather than throwing, so the pipeline keeps moving
 * even if the user-facing file wasn't produced.
 *
 * See `tasks/plan.md § Q2` for the design rationale.
 */
import { type ArtifactRef, type ArtifactType, type ArtifactWriter, type AssociationValues } from "../_vendor/ailf-core/index.d.ts";
/**
 * Read a file from disk, parse it per the descriptor's mime, and emit it.
 *
 * - JSON mime: file contents are `JSON.parse`d into an object before `emit()`.
 * - Markdown / YAML mime: file contents are passed to `emit()` as a string.
 * - NDJSON: not supported by `emit()` — use `appendNdjson()` directly instead.
 *
 * Returns null (with a warn) on any error. Never throws.
 */
export declare function emitFileContents<T extends ArtifactType>(writer: ArtifactWriter, type: T, association: AssociationValues, filePath: string): Promise<ArtifactRef | null>;
