/**
 * core/services/config-helpers.ts — Pure config generation helpers.
 *
 * No I/O — operates on typed inputs and returns typed outputs.
 *
 * Extracted from packages/eval/src/lib/generate-configs.ts during
 * the Ports & Adapters migration (Phase 4e).
 */
import type { EvalMode } from "../../ailf-shared/index.d.ts";
import type { ModelEntry } from "../types/index.js";
import type { ModeBase } from "../types/plugin-registry.js";
/**
 * Extract the raw API model name from a Promptfoo provider ID.
 *
 * Promptfoo IDs encode the provider + sub-protocol + model, e.g.:
 * - "openai:chat:gpt-5.2" → "gpt-5.2"
 * - "anthropic:messages:claude-opus-4-6" → "claude-opus-4-6"
 * - "openrouter:deepseek/deepseek-r1" → "deepseek/deepseek-r1"
 * - "gpt-4o" → "gpt-4o"
 */
export declare function extractModelName(id: string): string;
/**
 * Extract the LLM provider family from a Promptfoo provider ID.
 *
 * - "openai:chat:gpt-5.2" → "openai"
 * - "anthropic:messages:claude-opus-4-6" → "anthropic"
 * - "google:gemini-2.5-pro" → "google"
 * - "gpt-4o" → "openai" (default)
 */
export declare function extractProvider(id: string): string;
/**
 * Merge default, model-specific, and mode-specific config into a single object.
 *
 * Only picks scalar defaults (temperature, max_tokens). Model and mode
 * overrides are applied on top.
 */
export declare function mergeConfig(defaults: Record<string, unknown>, modelConfig?: Record<string, unknown>, overrides?: Record<string, unknown>): Record<string, unknown>;
/**
 * Check whether a model entry matches a given evaluation mode.
 *
 * Models without a `modes` field match all modes.
 */
export declare function modelMatchesMode(model: ModelEntry, mode: EvalMode): boolean;
/**
 * Resolve which variants a model participates in for a given mode.
 *
 * Resolution rules:
 * - If the mode has no variants defined → returns `undefined` (no variant filtering)
 * - If the model specifies variants for this mode → returns that whitelist
 * - If the model omits variants for this mode → returns ALL mode variants (default)
 *
 * @param model  - The model entry from models config
 * @param modeBase - The mode base (contains variant definitions)
 * @returns Array of variant IDs, or `undefined` if the mode has no variants
 */
export declare function resolveModelVariants(model: ModelEntry, modeBase: ModeBase): string[] | undefined;
