/**
 * pipeline/validate.ts
 *
 * Configuration validation for the evaluation pipeline. Checks that all YAML
 * config files are consistent: every task has a canonical mapping, every
 * mapping has a reference solution file, required files exist, etc.
 *
 * All individual validators are exported so they can be tested independently.
 */
import type { ValidationIssue, ValidationResult } from "./types.js";
/**
 * Run all validation checks and return a combined result.
 * `valid` is true only if there are zero error-severity issues.
 */
export declare function validateConfiguration(rootDir: string): ValidationResult;
/**
 * Check that the canonical-contexts directory exists.
 *
 * Contexts are populated by fetch-docs, which scopes to the tasks
 * actually being evaluated (not every task in the registry). Warning
 * on individual missing files here would fire for every task the user
 * didn't select — pure noise that previously crowded out real errors
 * in the GHA safety-net's tail-of-log capture (W0282). The per-task
 * precondition is enforced by `run-eval-step.ts:checkCanonicalContextsExist`
 * against the filtered task set, where missing files are real errors.
 */
export declare function validateContexts(rootDir: string): ValidationIssue[];
/**
 * Check that config/features exists, parses, and conforms to the Zod schema.
 * Also cross-references covered features against actual task files for consistency.
 *
 * Returns warnings (not errors) if the file is missing — the feature registry
 * is optional and doesn't block evaluation.
 */
export declare function validateFeaturesYaml(rootDir: string): ValidationIssue[];
/**
 * Check that config/models exists, parses, has at least one model with an id
 * and label, and has a grader defined.
 */
export declare function validateModelsYaml(rootDir: string): ValidationIssue[];
/**
 * Check that reference solution files exist on disk for every task
 * that declares a reference_solution path. Reads from inline task
 * definitions via resolveMappings.
 *
 * NOTE: When tasks come from the Content Lake, reference solutions also
 * live there (as ailf.referenceSolution documents). This validator only
 * applies to YAML-based tasks with local file paths.
 */
export declare function validateReferenceSolutions(rootDir: string): ValidationIssue[];
/**
 * Check that config/rubrics exists, parses, and conforms to the Zod schema.
 * Returns the set of valid template keys for cross-referencing by task
 * validation.
 */
export declare function validateRubricsYaml(rootDir: string): ValidationIssue[];
/**
 * Check that task definition files exist.
 *
 * Tasks live as `*.task.ts` files in mode subdirectories (e.g.
 * `tasks/literacy/groq.task.ts`). Legacy YAML task files are no longer
 * used. Warns only if no task files are found at all.
 */
export declare function validateTaskFiles(rootDir: string): ValidationIssue[];
/**
 * Check that config/thresholds exists, parses, and conforms to the Zod schema.
 *
 * Returns warnings (not errors) if the file is missing — thresholds are
 * optional and don't block evaluation. They only activate when
 * `ailf report readiness` or severity-aware sink routing is used.
 */
export declare function validateThresholdsYaml(rootDir: string): ValidationIssue[];
