/**
 * Port: Where pipeline configuration comes from.
 *
 * The ConfigSource abstracts configuration resolution so the pipeline
 * can be driven from different sources without changing orchestration:
 *
 * Adapters:
 * - CliConfigAdapter — Commander flags + env vars (current behavior)
 * - FileConfigAdapter — reads a JSON/YAML config file (--config flag)
 * - ContentLakeConfigAdapter (future: studio-eval-config) — GROQ query
 *
 * @see packages/eval/src/commands/pipeline-action.ts — current implementation
 * @see docs/ideas/studio-eval-config.md — future Content Lake adapter
 */
import type { ResolvedConfig } from "./context.js";
/**
 * Port: Resolve pipeline configuration from any source into the
 * canonical ResolvedConfig shape.
 *
 * The adapter handles parsing, validation (via Zod), and defaults.
 * The returned config is fully resolved — no env var lookups needed
 * downstream.
 */
export interface ConfigSource {
    /** Human-readable label for diagnostics (e.g., "CLI flags", "config.json") */
    readonly label: string;
    /**
     * Resolve configuration into the canonical ResolvedConfig shape.
     *
     * @throws on validation failure (invalid config file, missing fields)
     */
    resolve(): Promise<ResolvedConfig>;
}
