import * as React from "react";
import { Props as RadioProps } from "./Radio";
import "./RadioGroup.less";
interface Option<IDType extends string = string, ValueType = any> {
    id: IDType;
    disabled?: boolean;
    label: React.ReactNode;
    /** A BCP47 language tag. */
    lang?: string;
    value?: ValueType;
    additionalText?: string;
}
export interface Props<OptionIDType extends string, OptionValueType> {
    ariaLabelledBy?: string;
    className?: string;
    disabled?: boolean;
    error?: React.ReactNode;
    label?: React.ReactNode;
    onChange: RadioProps<OptionIDType, OptionValueType>["onSelect"];
    options: Option<OptionIDType, OptionValueType>[];
    selectedID?: OptionIDType;
}
/**
 * Form element that allows for a single, required selection from a small set of 2 or more options.
 */
export default class RadioGroup<OptionIDType extends string = string, OptionValueType = any> extends React.PureComponent<Props<OptionIDType, OptionValueType>> {
    _labelID: string;
    _optionRefsByID: {};
    render(): JSX.Element;
    _handleRadioRef: (ref: any) => void;
    _handleNavChange: (selectedID: any) => void;
    /**
     * This implements the roving tabindex pattern as described in the w3.org spec for radio groups:
     * https://www.w3.org/TR/wai-aria-practices-1.1/examples/radio/radio-1/radio-1.html
     *
     * We essentially set the tabindex for all options to -1 except the one that's currently selected
     * or the first non-disabled one in the list.
     */
    _getFocusableOptionID(options: any): any;
}
export {};
