import type { PortableTool } from "../portable-tool.js";
export declare const ASK_USER_TOOL_NAME: "ask_user";
export interface AskUserOption {
    label: string;
    description?: string;
}
export interface AskUserQuestion {
    question: string;
    header: string;
    options?: AskUserOption[];
    multiSelect?: boolean;
}
export interface AskUserToolParams {
    questions: AskUserQuestion[];
}
export declare const ASK_USER_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly questions: {
            readonly type: "array";
            readonly minItems: 1;
            readonly maxItems: 4;
            readonly description: "1-4 clarifying questions to ask the user.";
            readonly items: {
                readonly type: "object";
                readonly properties: {
                    readonly question: {
                        readonly type: "string";
                        readonly description: "The question text. Should end with '?'.";
                    };
                    readonly header: {
                        readonly type: "string";
                        readonly description: "Short identifier/tag for this question (max 50 chars).";
                    };
                    readonly options: {
                        readonly type: "array";
                        readonly description: "2-4 options for the user to choose from. Omit for free text.";
                        readonly items: {
                            readonly type: "object";
                            readonly properties: {
                                readonly label: {
                                    readonly type: "string";
                                    readonly description: "Display label (1-5 words).";
                                };
                                readonly description: {
                                    readonly type: "string";
                                    readonly description: "Brief explanation of this option.";
                                };
                            };
                            readonly required: readonly ["label"];
                        };
                    };
                    readonly multiSelect: {
                        readonly type: "boolean";
                        readonly description: "Allow selecting multiple options (default: false).";
                    };
                };
                readonly required: readonly ["question", "header"];
            };
        };
    };
    readonly required: readonly ["questions"];
};
export interface AskUserAnswer {
    question: string;
    answer: string;
}
/**
 * Host-provided user interaction backend.
 * The host renders the questions in the UI and collects answers.
 */
export interface AskUserToolDeps {
    /**
     * Present questions to the user and collect answers.
     * Returns a map of question text → answer text.
     * If the user declines, returns null.
     */
    askUser(questions: AskUserQuestion[]): Promise<Record<string, string> | null>;
}
export declare function createAskUserTool(deps: AskUserToolDeps): PortableTool<AskUserToolParams>;
