/**
 * Validation helpers for the `ask_user_choices` tool.
 *
 * Shapes and cross-validation used by the `/api/internal/user-question/submit`
 * endpoint. The previous in-memory promise-parking harness has been removed —
 * the widget flow is now transcript-driven (see docs/blocking-tools.md and the
 * "non-blocking ask widget" design doc).
 */
export interface UserQuestion {
    question: string;
    options: string[];
    /**
     * Short tab label (2–4 words, ≤24 chars). Required when the ask contains
     * more than one question; ignored for single-question asks. Rendered on the
     * tab strip as `A. <tab_label>`, `B. <tab_label>`, …
     */
    tab_label?: string;
    /** When true, the UI renders checkboxes and `selected` is an array. */
    multi?: boolean;
    /** Minimum number of selections when `multi`. Defaults to 1. */
    min?: number;
    /** Maximum number of selections when `multi`. Defaults to options.length+1 (Other is always present). */
    max?: number;
}
export interface UserQuestionAnswer {
    question: string;
    /**
     * Single-select: option text the user picked; "Other" when free-text.
     * Multi-select: array of option texts (may include "Other").
     */
    selected: string | string[];
    /** Free-text content when "Other" was picked, otherwise null. */
    other_text: string | null;
}
/**
 * Validate the shape of `questions`. Returns null on success, or a human-readable
 * error message on failure.
 */
export declare function validateQuestions(questions: unknown): string | null;
/**
 * Validate the raw shape of `answers` submitted by the UI (no cross-check
 * against questions — use `crossValidate()` for that).
 */
export declare function validateAnswers(answers: unknown): string | null;
/**
 * Cross-check submitted answers against the original question shape captured
 * in the assistant's `ask_user_choices` tool_use input.
 * Returns null on success, or a human-readable error message on failure.
 */
export declare function crossValidate(questions: UserQuestion[], answers: UserQuestionAnswer[]): string | null;
//# sourceMappingURL=ask-user-choices-validation.d.ts.map