import type { ElicitForm } from "../adapters/mcp.js";
/**
 * @module tools/_shared/elicit
 *
 * Pre-flight elicitation for the `build` tool: when an MCP client supports
 * elicitation, ask the user the choices the host agent would otherwise pick
 * silently (narration provider, paid backdrop generation, cost ceiling).
 * Pure functions — the MCP wiring lives in the tool's execute and the
 * server's makeElicitFn; CLI/Agent surfaces never reach this code path.
 */
/** The subset of build args that drive the question set. */
export interface BuildChoiceArgs {
    stage?: "assets" | "compose" | "sync" | "render" | "all";
    ttsProvider?: "auto" | "elevenlabs" | "kokoro";
    skipNarration?: boolean;
    skipBackdrop?: boolean;
    imageProvider?: string;
    maxCostUsd?: number;
}
/**
 * Builds the elicitation form for a build call, asking ONLY about choices the
 * caller left unspecified. Returns null when there is nothing to ask — every
 * choice explicit, or the requested stage doesn't generate assets.
 */
export declare function planBuildElicitation(args: BuildChoiceArgs): ElicitForm | null;
/**
 * Maps accepted form answers back onto build args. Unknown or invalid values
 * are ignored so a misbehaving client can never produce a worse state than
 * the defaults the user would have gotten without elicitation.
 */
export declare function applyElicitationAnswers<T extends BuildChoiceArgs>(args: T, content: Record<string, string | number | boolean | string[]> | undefined): T;
