/**
 * 解析 `--control` / `--treatment` 与 eval.yaml `variants` 的优先级合并。
 *
 * 三态精度:
 *   - CLI roles 出现(--control 或 --treatment 任一) → 完全替换 config.variants
 *     (no merging)。CLI 跟 yaml 同时给意味着用户在 override yaml,合并会让
 *     control / treatment 角色和「跑哪些 variant」两件事纠缠
 *   - 仅 yaml → 用 `configVariantsToSpecs` 转换
 *   - 仅 batch 模式 → 留空,batch workflow 自己生成(baseline vs 每个 skill)
 *   - 都没有 → throw,附带 skill-dir 下候选 variant 提示,引导显式声明
 *
 * 之后做 variant name 唯一性检查 —— 同名 variant 不能同时在 --control 和
 * --treatment,也不能 --treatment 内重复。否则 ensemble agreement / report 字段
 * 都会按 name 去重,跑了但聚不到。
 */
import type { EvalConfig, VariantSpec } from '../../../types/index.js';
export declare function resolveVariantSpecs(values: Record<string, unknown>, evalConfig: EvalConfig | null, skillDir: string): VariantSpec[];
//# sourceMappingURL=variant-resolution.d.ts.map