import type { ReactNode } from "react";
import React from "react";
import type { XOR } from "ts-xor";
interface BaseRadioOptionProps {
    /**
     * The value of the radio button.
     */
    readonly value: string | number;
    /**
     * Disables the radio button.
     */
    readonly disabled?: boolean;
    /**
     * Further description of the label.
     */
    readonly description?: string;
    /**
     * The label to appear beside the radio button.
     */
    readonly label?: string;
    /**
     * Render a custom label or additional content below the `label`
     * and `description`.
     *
     * Prefer using `label` and `description` over adding child elements if the
     * content of either would be a string.
     */
    readonly children?: ReactNode;
}
interface WithRequiredChildren extends BaseRadioOptionProps {
    readonly children: ReactNode;
}
interface WithRequiredLabel extends BaseRadioOptionProps {
    readonly label: string;
}
export type RadioOptionProps = XOR<WithRequiredChildren, WithRequiredLabel>;
/**
 * For rendering props only. To make updates to
 * the real RadioOption, look at InternalRadioOption
 */
export declare function RadioOption({ children }: RadioOptionProps): React.JSX.Element;
interface InternalRadioOptionProps extends BaseRadioOptionProps {
    readonly name: string;
    readonly checked: boolean;
    onChange(newValue: string | number): void;
}
export declare function InternalRadioOption({ value, name, label, description, disabled, checked, children, onChange, }: InternalRadioOptionProps): React.JSX.Element;
export {};
