import { ChangeEventHandler, MouseEventHandler, PropsWithChildren, ReactNode, Ref, HTMLProps } from 'react';
export type RadioButtonProps = Omit<HTMLProps<HTMLLabelElement>, 'label' | 'onClick' | 'onChange'> & {
    /**
     * Define any rioglyph icon like "rioglyph-truck".
     */
    icon?: string;
    /**
     * The label position.
     *
     * Possible values are: `'horizontal'` or `'vertical'`.
     *
     * @default 'vertical'
     */
    iconLabelPosition?: 'vertical' | 'horizontal';
    /**
     * The icon Size in px.
     *
     * @default 16
     */
    iconSize?: number;
    /**
     * Defines the label text.
     */
    label?: string | ReactNode;
    /**
     * Callback function that is invoked when the radio button is clicked.
     *
     * @default () => {}
     */
    onClick?: MouseEventHandler<{
        value: string | string[] | number;
    }>;
    /**
     * Callback function that is invoked when the radio button is toggled and the state should change (for controlled
     * usage).
     *
     * @default () => {}
     */
    onChange?: ChangeEventHandler;
    /**
     * Defines whether the radio is checked (for controlled usage).
     */
    checked?: boolean;
    /**
     * Defines whether the radio is initially checked (state can be changed on click).
     */
    defaultChecked?: boolean;
    /**
     * Defines whether the checkbox is disabled.
     *
     * @default false
     */
    disabled?: boolean;
    /**
     * Additional classes to be set on the input element.
     */
    className?: string;
    /**
     * Defines whether the radio button is applying an inline style.
     *
     * Use this in combination with other radio buttons.
     *
     * @default false
     */
    inline?: boolean;
    /**
     * Displays the icon on the right side of the text.
     *
     * @default false
     */
    right?: boolean;
    /**
     * Allows for rendering a completely different layout with or without a radio tick.
     *
     * @default false
     */
    custom?: boolean;
    /**
     * Name to be given to the input element.
     */
    name?: string;
    /**
     * The value attribute is a string containing the radio button's value but __it is never shown to the user__.
     *
     * It serves a special purpose for inputs of type radio: when a form is submitted, only radio buttons which are
     * currently checked are submitted, and the reported value is the value of the value attribute.
     *
     * If the value is not otherwise specified, it is the string on by default.
     *
     * This is useful when using native `FormData` when submitting a form to get the selected radio button value.
     */
    value?: string;
    /**
     * Number of the index used for keyboard support.
     *
     * An index of 0 means that the element should be focusable in sequential keyboard navigation, but its order is
     * defined by the document's source order. To disable the focus set the value to -1.
     *
     * A positive value means the element should be focusable in sequential keyboard navigation,
     * with its order defined by the value of the number.
     *
     * @default 0
     */
    tabIndex?: number;
    /**
     * Ref which is added to the input element.
     */
    inputRef?: Ref<HTMLInputElement>;
};
declare const RadioButton: {
    (props: PropsWithChildren<RadioButtonProps>): import("react/jsx-runtime").JSX.Element;
    ICON_LABEL_VERTICAL: string;
    ICON_LABEL_HORIZONTAL: string;
};
export default RadioButton;
