import * as React from "react";
import type { RadioOptionSettingsHandle } from "./radio-option-settings";
import type { ChoiceMovementType } from "./radio-option-settings-actions";
import type { APIOptions } from "@khanacademy/perseus";
import type { PerseusRadioWidgetOptions, PerseusRadioChoice, RadioDefaultWidgetOptions } from "@khanacademy/perseus-core";
export interface RadioEditorProps {
    apiOptions: APIOptions;
    countChoices: boolean;
    choices: PerseusRadioChoice[];
    randomize: boolean;
    hasNoneOfTheAbove: boolean;
    multipleSelect: boolean;
    deselectEnabled: boolean;
    onChange: (values: Partial<PerseusRadioWidgetOptions>, callback?: (() => void) | null) => void;
}
/**
 * An editor for adding a radio widget that allows users to select a single option from multiple choices.
 */
declare class RadioEditor extends React.Component<RadioEditorProps> {
    static widgetName: "radio";
    static bestPractices: {
        url: string;
        label: string;
    };
    static defaultProps: RadioDefaultWidgetOptions;
    choiceRefs: Map<string, React.RefObject<RadioOptionSettingsHandle>>;
    componentDidMount(): void;
    getChoiceRef: (choiceId: string) => React.RefObject<RadioOptionSettingsHandle>;
    onMultipleSelectChange: (options: {
        multipleSelect: boolean;
    }) => void;
    onCountChoicesChange: (options: {
        countChoices: boolean;
    }) => void;
    generateChoiceId: (index: number) => string;
    ensureValidIds: (choiceId: string, index: number) => string;
    onChange: (options: {
        checked: ReadonlyArray<boolean | undefined>;
    }) => void;
    onStatusChange: (choiceIndex: number, correct: boolean) => void;
    onContentChange: (choiceIndex: number, newContent: string) => void;
    onRationaleChange: (choiceIndex: number, newRationale: string) => void;
    onDelete: (arg1: number) => void;
    addChoice: (noneOfTheAbove: boolean, e: React.SyntheticEvent) => void;
    handleMove: (choiceIndex: number, movement: ChoiceMovementType) => void;
    focus: () => boolean;
    getSaveWarnings: () => ReadonlyArray<string>;
    serialize(): PerseusRadioWidgetOptions;
    render(): React.ReactNode;
}
export default RadioEditor;
