/**
 * pipeline/eval-fingerprint.ts
 *
 * Computes a deterministic fingerprint of all inputs that affect evaluation
 * output. Used for cross-environment cache lookup: when running in CI, the
 * pipeline can query the Sanity Content Lake for a previous report with an
 * identical fingerprint and skip the expensive eval step.
 *
 * The fingerprint captures:
 * - Evaluation mode (baseline, observed, agentic)
 * - Grader model identity (different graders score differently)
 * - The task set that was actually loaded for this run, in its canonical
 *   shape (taken straight from `ctx.taskSource.loadTasks(filter)` so that
 *   Studio-authored task edits in the Content Lake are picked up — pre-v2
 *   the fingerprint walked `tasks/` on disk and missed them entirely).
 * - Repo-tracked config (models, prompts, rubrics) and reference solutions.
 * - Fetched canonical doc content (contexts/canonical/*.md).
 *
 * The fingerprint intentionally EXCLUDES:
 * - Source name/URL (content matters, not origin).
 * - Git metadata (informational, not eval-affecting).
 * - Trigger type (manual vs CI → same inputs → same results).
 * - Report tags (human labels).
 *
 * @see docs/design-docs/content-lake-eval-caching.md
 */
import type { GeneralizedTaskDefinition } from "../_vendor/ailf-core/index.d.ts";
import type { EvalMode } from "../_vendor/ailf-shared/index.d.ts";
/** Inputs needed to compute an evaluation fingerprint. */
export interface FingerprintInput {
    /**
     * Task definitions returned by `ctx.taskSource.loadTasks(filter)` after
     * any release-auto-scope narrowing has been applied. The fingerprint
     * captures whatever set the pipeline is actually about to evaluate, so
     * filter changes are reflected implicitly.
     */
    tasks: readonly GeneralizedTaskDefinition[];
    /** Grader model identifier (e.g., "anthropic:messages:claude-opus-4-5-20251101") */
    graderModel: string;
    /** Evaluation mode */
    mode: EvalMode;
    /** Path to the packages/eval root directory */
    rootDir: string;
    /**
     * Grader context policy. Distinct values produce distinct rubricPrompt
     * content, so the cache must treat them as different evaluations even
     * when tasks + docs + grader model match.
     *
     * Defaults to "with-docs" inside the hash when undefined, matching
     * the EvalConfig boundary default (flipped in v4 / W0200).
     */
    graderContext?: "rubric-only" | "with-docs";
}
/**
 * Compute a deterministic SHA-256 fingerprint of all evaluation inputs.
 *
 * Identical inputs always produce the same fingerprint, regardless of the
 * environment (local, CI, etc.). Cross-environment portability relies on
 * (a) tasks coming from the same Content Lake source and (b) file paths
 * being hashed as rootDir-relative.
 *
 * @returns SHA-256 hex string (64 characters)
 */
export declare function computeEvalFingerprint(input: FingerprintInput): string;
/**
 * Collect repo-tracked + fetched file paths that contribute to the
 * fingerprint. Tasks are NOT collected here — they come from
 * `ctx.taskSource.loadTasks()` and flow into the hash via the `tasks`
 * input on `computeEvalFingerprint`.
 *
 * Exported for the debug-fingerprint diagnostic script.
 */
export declare function collectFingerprintFilePaths(rootDir: string): string[];
