import * as React from "react";
import type { ChoiceState, Widget, ChangeHandler } from "../../types";
import type { PerseusRadioChoice, PerseusRadioRubric, PerseusRadioUserInput } from "@khanacademy/perseus-core";
import type { LinterContextProps } from "@khanacademy/perseus-linter";
/**
 * Represents a single choice in the MultipleChoiceComponent
 */
export interface ChoiceType {
    id: string;
    checked: boolean;
    content: React.ReactNode;
    rationale: React.ReactNode;
    hasRationale: boolean;
    showRationale: boolean;
    showCorrectness: boolean;
    correct: boolean;
    isNoneOfTheAbove: boolean;
    previouslyAnswered: boolean;
    revealNoneOfTheAbove: boolean;
    disabled: boolean;
}
type RadioProps = {
    numCorrect: number;
    hasNoneOfTheAbove?: boolean;
    multipleSelect?: boolean;
    countChoices?: boolean;
    deselectEnabled?: boolean;
    choices: ReadonlyArray<RadioChoiceWithMetadata>;
    choiceStates?: ReadonlyArray<ChoiceState>;
    editMode?: boolean;
    labelWrap?: boolean;
    onChange: ChangeHandler;
};
/**
 * RadioChoiceWithMetadata is used for server-side scoring
 */
export interface RadioChoiceWithMetadata extends PerseusRadioChoice {
    originalIndex: number;
    correct?: boolean;
}
declare const Radio: React.ForwardRefExoticComponent<RadioProps & {
    trackInteraction: (extraData?: PerseusRadioRubric | undefined) => void;
    widgetId: string;
    widgetIndex: number;
    alignment: string | null | undefined;
    static: boolean | null | undefined;
    problemNum: number | null | undefined;
    apiOptions: Readonly<Readonly<{
        isArticle?: boolean;
        onFocusChange?: (newFocusPath: import("../..").FocusPath, oldFocusPath: import("../..").FocusPath, keypadHeight?: number, focusedElement?: HTMLElement) => unknown;
        showAlignmentOptions?: boolean;
        readOnly?: boolean;
        editingDisabled?: boolean;
        answerableCallback?: (arg1: boolean) => unknown;
        getAnotherHint?: () => unknown;
        interactionCallback?: (widgetData: {
            [widgetId: string]: any;
        }) => void;
        imagePlaceholder?: React.ReactNode;
        widgetPlaceholder?: React.ReactNode;
        baseElements?: {
            Link: React.ComponentType<any>;
        };
        imagePreloader?: (dimensions: import("../../types").Dimensions) => React.ReactNode;
        trackInteraction?: (args: {
            type: string;
            id: string;
            correct?: boolean;
        } & Partial<import("../../types").TrackingGradedGroupExtraArguments> & Partial<{
            visible: number;
        }>) => void;
        customKeypad?: boolean;
        nativeKeypadProxy?: (blur: () => void) => import("@khanacademy/math-input").KeypadAPI;
        isMobile?: boolean;
        isMobileApp?: boolean;
        setDrawingAreaAvailable?: (arg1: boolean) => unknown;
        hintProgressColor?: string;
        canScrollPage?: boolean;
        editorChangeDelay?: number;
        flags?: Record<"new-radio-widget" | "image-widget-upgrade", boolean>;
    }> & {
        baseElements: NonNullable<import("../..").APIOptions["baseElements"]>;
        canScrollPage: NonNullable<import("../..").APIOptions["canScrollPage"]>;
        editorChangeDelay: NonNullable<import("../..").APIOptions["editorChangeDelay"]>;
        isArticle: NonNullable<import("../..").APIOptions["isArticle"]>;
        isMobile: NonNullable<import("../..").APIOptions["isMobile"]>;
        isMobileApp: NonNullable<import("../..").APIOptions["isMobileApp"]>;
        editingDisabled: NonNullable<import("../..").APIOptions["editingDisabled"]>;
        onFocusChange: NonNullable<import("../..").APIOptions["onFocusChange"]>;
        readOnly: NonNullable<import("../..").APIOptions["readOnly"]>;
        setDrawingAreaAvailable: NonNullable<import("../..").APIOptions["setDrawingAreaAvailable"]>;
        showAlignmentOptions: NonNullable<import("../..").APIOptions["showAlignmentOptions"]>;
    }>;
    keypadElement?: any;
    questionCompleted?: boolean;
    onFocus: (blurPath: import("../..").FocusPath) => void;
    onBlur: (blurPath: import("../..").FocusPath) => void;
    findWidgets: (criterion: import("../../types").FilterCriterion) => ReadonlyArray<Widget>;
    reviewMode: boolean;
    showSolutions?: import("@khanacademy/perseus-core").ShowSolutions;
    handleUserInput: (newUserInput: PerseusRadioUserInput, cb?: () => void, silent?: boolean) => void;
    userInput: PerseusRadioUserInput;
    linterContext: LinterContextProps;
    containerSizeClass: import("../../util/sizing-utils").SizeClass;
} & React.RefAttributes<Widget>>;
export default Radio;
