import React from 'react';
export declare type RadioProps = ({
    /**
     * Тип
     */
    type?: 'normal';
    /**
     * Размер компонента
     */
    size?: 'm' | 'l';
} | {
    /**
     * Тип
     */
    type?: 'button';
    /**
     * Размер компонента
     */
    size?: 's' | 'm' | 'l' | 'xl';
}) & {
    /**
     * Управление состоянием вкл/выкл компонента
     */
    checked?: boolean;
    /**
     * Управление возможностью изменения состояние 'checked' компонента
     */
    disabled?: boolean;
    /**
     * Уникальный идентификатор блока
     */
    id?: string;
    /**
     * Уникальное имя блока
     */
    name?: string;
    /**
     * Значение радио-кнопки, которое будет отправлено на сервер, если она выбрана
     */
    value?: string;
    /**
     * Текст подписи к радио-кнопке
     */
    text?: React.ReactNode;
    /**
     * Управление шириной кнопки для типа 'button'. При значении 'available'
     * растягивает кнопку на ширину родителя
     */
    width?: 'default' | 'available';
    /**
     * Отображение в состоянии ошибки
     */
    error?: boolean;
    /**
     * Последовательность перехода между контролами при нажатии на Tab
     */
    tabIndex?: number;
    /**
     * Тема компонента
     */
    theme?: 'alfa-on-color' | 'alfa-on-white';
    /**
     * Дополнительный класс
     */
    className?: string;
    /**
     * Обработчик изменения значения 'checked' компонента, принимает на вход isChecked и value компонента
     */
    onChange?: (value?: string, isChecked?: boolean, event?: React.ChangeEvent<any>) => void;
    /**
     * Обработчик фокуса комнонента
     */
    onFocus?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик снятия фокуса с компонента
     */
    onBlur?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик события наведения курсора на радио-кнопку
     */
    onMouseEnter?: (event?: React.MouseEvent<any>) => void;
    /**
     * Обработчик события снятия курсора с радио-кнопки
     */
    onMouseLeave?: (event?: React.MouseEvent<any>) => void;
    /**
     * Идентификатор для систем автоматизированного тестирования
     */
    'data-test-id'?: string;
};
declare type RadioState = {
    focused: boolean;
    hovered: boolean;
    checked: boolean;
    pressed?: boolean;
};
/**
 * Компонент радио-кнопки.
 */
export declare class Radio extends React.PureComponent<RadioProps, RadioState> {
    protected cn: (this: void | {
        props?: Record<string, unknown>;
    }, elementNameOrMods?: string | {
        [key: string]: string | number | boolean;
    }, mods?: {
        [key: string]: string | number | boolean;
    }) => string;
    static defaultProps: Partial<RadioProps>;
    state: RadioState;
    private label;
    private control;
    render(): JSX.Element;
    renderNormalRadio(checked: any): JSX.Element[];
    renderButtonRadio(checked: any, TagButton: any): JSX.Element;
    private handleInputControlClick;
    private handleChange;
    private handleFocus;
    private handleUnfocus;
    private handleBlur;
    private handleMouseEnter;
    private handleMouseLeave;
    /**
     * Устанавливает фокус на радио-кнопку.
     */
    focus(): void;
    /**
     * Убирает фокус с радио-кнопки.
     */
    blur(): void;
    /**
     * Скроллит страницу до радио-кнопки.
     */
    scrollTo(): void;
}
declare const _default: React.ForwardRefExoticComponent<({
    /**
     * Тип
     */
    type?: "normal";
    /**
     * Размер компонента
     */
    size?: "m" | "l";
} & {
    /**
     * Управление состоянием вкл/выкл компонента
     */
    checked?: boolean;
    /**
     * Управление возможностью изменения состояние 'checked' компонента
     */
    disabled?: boolean;
    /**
     * Уникальный идентификатор блока
     */
    id?: string;
    /**
     * Уникальное имя блока
     */
    name?: string;
    /**
     * Значение радио-кнопки, которое будет отправлено на сервер, если она выбрана
     */
    value?: string;
    /**
     * Текст подписи к радио-кнопке
     */
    text?: React.ReactNode;
    /**
     * Управление шириной кнопки для типа 'button'. При значении 'available'
     * растягивает кнопку на ширину родителя
     */
    width?: "default" | "available";
    /**
     * Отображение в состоянии ошибки
     */
    error?: boolean;
    /**
     * Последовательность перехода между контролами при нажатии на Tab
     */
    tabIndex?: number;
    /**
     * Тема компонента
     */
    theme?: "alfa-on-white" | "alfa-on-color";
    /**
     * Дополнительный класс
     */
    className?: string;
    /**
     * Обработчик изменения значения 'checked' компонента, принимает на вход isChecked и value компонента
     */
    onChange?: (value?: string, isChecked?: boolean, event?: React.ChangeEvent<any>) => void;
    /**
     * Обработчик фокуса комнонента
     */
    onFocus?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик снятия фокуса с компонента
     */
    onBlur?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик события наведения курсора на радио-кнопку
     */
    onMouseEnter?: (event?: React.MouseEvent<any, MouseEvent>) => void;
    /**
     * Обработчик события снятия курсора с радио-кнопки
     */
    onMouseLeave?: (event?: React.MouseEvent<any, MouseEvent>) => void;
    /**
     * Идентификатор для систем автоматизированного тестирования
     */
    'data-test-id'?: string;
} & React.RefAttributes<Radio>) | ({
    /**
     * Тип
     */
    type?: "button";
    /**
     * Размер компонента
     */
    size?: "s" | "m" | "l" | "xl";
} & {
    /**
     * Управление состоянием вкл/выкл компонента
     */
    checked?: boolean;
    /**
     * Управление возможностью изменения состояние 'checked' компонента
     */
    disabled?: boolean;
    /**
     * Уникальный идентификатор блока
     */
    id?: string;
    /**
     * Уникальное имя блока
     */
    name?: string;
    /**
     * Значение радио-кнопки, которое будет отправлено на сервер, если она выбрана
     */
    value?: string;
    /**
     * Текст подписи к радио-кнопке
     */
    text?: React.ReactNode;
    /**
     * Управление шириной кнопки для типа 'button'. При значении 'available'
     * растягивает кнопку на ширину родителя
     */
    width?: "default" | "available";
    /**
     * Отображение в состоянии ошибки
     */
    error?: boolean;
    /**
     * Последовательность перехода между контролами при нажатии на Tab
     */
    tabIndex?: number;
    /**
     * Тема компонента
     */
    theme?: "alfa-on-white" | "alfa-on-color";
    /**
     * Дополнительный класс
     */
    className?: string;
    /**
     * Обработчик изменения значения 'checked' компонента, принимает на вход isChecked и value компонента
     */
    onChange?: (value?: string, isChecked?: boolean, event?: React.ChangeEvent<any>) => void;
    /**
     * Обработчик фокуса комнонента
     */
    onFocus?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик снятия фокуса с компонента
     */
    onBlur?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик события наведения курсора на радио-кнопку
     */
    onMouseEnter?: (event?: React.MouseEvent<any, MouseEvent>) => void;
    /**
     * Обработчик события снятия курсора с радио-кнопки
     */
    onMouseLeave?: (event?: React.MouseEvent<any, MouseEvent>) => void;
    /**
     * Идентификатор для систем автоматизированного тестирования
     */
    'data-test-id'?: string;
} & React.RefAttributes<Radio>)> & Radio;
export default _default;
