import type { ClarifyQuestion } from "./clarify.js"; /** One field of an MCP elicitation form schema (primitive string field). */ export interface ElicitField { type: "string"; title?: string; description?: string; enum?: string[]; enumNames?: string[]; default?: string; } export interface ElicitationForm { type: "object"; properties: Record; required?: string[]; } /** Stable per-question form key: q1, q2, … (1-indexed for readable forms). */ export declare const questionKey: (index: number) => string; /** * Render clarifying questions as an MCP elicitation form schema. Questions with * `options` become enum dropdowns; others become free-text. The suggested answer * is the field default so the user can accept it in one click. Fields are NOT * marked required — leaving one blank means "use the suggested answer" * (see applyElicitedAnswers), so accepting the form with all defaults still * yields a complete answer set. */ export declare function buildElicitationForm(questions: ClarifyQuestion[]): ElicitationForm; export interface ElicitedAnswer { question: string; dimension: string; answer: string; /** true when the field was left blank and we fell back to the suggested answer. */ usedSuggested: boolean; } /** * Merge a client's elicitation `content` back onto the questions. A blank or * missing field falls back to that question's suggested answer, so an "accept" * with all defaults is still a complete, usable answer set. */ export declare function applyElicitedAnswers(questions: ClarifyQuestion[], content: Record | undefined): ElicitedAnswer[];