import type { AriaAttributes } from 'react';
import React from 'react';
import type { Override } from '../../typings/utility-types.js';
import type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper/index.js';
import type { TGetRootNode } from '../../lib/rootNode/index.js';
import type { RadioGroupContextType } from '../RadioGroup/RadioGroupContext.js';
import type { SizeProp } from '../../lib/types/props.js';
export interface RadioProps<T> extends Pick<AriaAttributes, 'aria-label'>, CommonProps, Override<React.InputHTMLAttributes<HTMLInputElement>, {
    /** Меняет визуальное отображение поля на состояние «ошибка». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */
    error?: boolean;
    /** Меняет визуальное отображение поля на состояние «предупреждение». Может быть полезен при разработке собственной валидации, если вы не используете пакет [React UI Validations](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui-validations_displaying-getting-started--docs). */
    warning?: boolean;
    /** Размер радиокнопки. */
    size?: SizeProp;
    /** Задаёт состояние фокуса. */
    focused?: boolean;
    /** Задаёт функцию, которая вызывается при изменении `value`. */
    onValueChange?: (value: T) => void;
    /** Задает HTML-событие `onmouseenter`.
     * @ignore */
    onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;
    /** Задает HTML-событие `onmouseleave`.
     * @ignore */
    onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;
    /** Задает HTML-событие `onmouseover`.
     * @ignore */
    onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;
    /** Задаёт значение. */
    value: T;
}> {
}
export interface RadioState {
    focusedByKeyboard: boolean;
}
export declare const RadioDataTids: {
    readonly root: "Radio__root";
};
type DefaultProps = Required<Pick<RadioProps<any>, 'focused'>>;
/** Радиокнопка позволяет выбрать одно значение из нескольких. Подходит при небольшом количестве вариантов — 2–5.
 *
 * Для создания группы радиокнопок используйте специальный контейнер — компонент [RadioGroup](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-radiogroup--docs).
 */
export declare class Radio<T> extends React.Component<RadioProps<T>, RadioState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    state: {
        focusedByKeyboard: boolean;
    };
    static defaultProps: DefaultProps;
    private getProps;
    static contextType: React.Context<RadioGroupContextType<any>>;
    context: RadioGroupContextType<T>;
    private size;
    private inputEl;
    getRootNode: TGetRootNode;
    private setRootNode;
    private globalObject;
    private emotion;
    private cx;
    private styles;
    private theme;
    private keyListener;
    private getRootSizeClassName;
    private getCircleSizeClassName;
    private getCheckedSizeClassName;
    componentDidMount(): void;
    render(): React.JSX.Element;
    /** Программно устанавливает фокус на радиокнопку. Появляется фокусная обводка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.
     * @public
     */
    focus(): void;
    /** Программно снимает фокус с радиокнопки.
     * @public
     */
    blur(): void;
    renderMain: (props: CommonWrapperRestProps<RadioProps<T>>) => React.JSX.Element;
    private _isInRadioGroup;
    private renderCaption;
    private handleChange;
    private handleMouseOver;
    private handleMouseEnter;
    private handleMouseLeave;
    private handleFocus;
    private resetFocus;
    private handleBlur;
}
export {};
