import type radio from "../../widgets/radio"; import type { PerseusRadioUserInput, RecursiveReadonly } from "@khanacademy/perseus-core"; import type React from "react"; /** * A single answer choice in a radio widget. */ type BasicOption = { /** * The label displayed for this choice. */ value: string; /** * An opaque string that uniquely identifies this choice within the radio * widget. The format is subject to change. */ id: string; /** * Rationale for why this answer is correct or incorrect. Shown to the * learner when they select an incorrect answer. Only present when the * content creator supplied one. */ rationale?: string; }; /** * JSON describing a radio (multiple-choice) widget. Intended for consumption * by AI tools. A radio widget presents a list of answer choices and asks the * learner to select one (or, when multiple-select is enabled, one or more). */ export type RadioPromptJSON = { type: "radio"; /** * Whether the widget includes a "None of the above" option. When true, * the last entry in `options` represents that special choice. */ hasNoneOfTheAbove: boolean; /** * The answer choices presented to the learner, in the order they appear * on screen. The first choice is labeled "A", the second is "B", and so * on. */ options: BasicOption[]; /** * The current state of the widget user interface. Usually represents a * learner's attempt to answer a question. */ userInput: { /** * The IDs of the choices the learner has selected. Each entry * corresponds to a choice's `id` field in `options`. Order is * insignificant — scoring uses set membership, not position. */ selectedOptions: ReadonlyArray; }; }; export declare const getPromptJSON: (widgetData: RecursiveReadonly>, userInput: RecursiveReadonly) => RadioPromptJSON; export {};