import type { AriaAttributes } from 'react';
import React from 'react';
import type { CommonProps } from '../../internal/CommonWrapper/index.js';
import type { TGetRootNode } from '../../lib/rootNode/index.js';
import { Prevent } from './Prevent.js';
export interface RadioGroupProps<T = string | number> extends CommonProps {
    /** Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок или значений из `items`. */
    defaultValue?: T;
    /** Значение группы радиокнопок. Должно быть одним из значений радиокнопок.
     * Если не указано, то компонент будет работать как неконтролируемый. */
    value?: T;
    /** Массив параметров радиокнопок. Может быть типа `Array<Value>` или `Array<[Value, Data]>`,
     * где тип `Value` — значение радиокнопки, а `Data` — значение которое будет использовано вторым параметром в `renderItem`.
     * Тип `Array<Value>` будет приведен к типу `Array<[Value, Value]>`.
     * Может быть использовано, если не передан `children`. */
    items?: T[] | Array<[T, React.ReactNode]>;
    /** Устанавливает атрибут `name` для дочерних радиокнопок. Если не указан, то сгенерируется случайное имя. */
    name?: string;
    /** Получает уникальный ключ по элементу.
     * @param item - элемент, по которому нужно получить ключ. */
    toKey?: (item: T) => string | number;
    /** Блокирует все радиокнопки в группе. */
    disabled?: boolean;
    /** Меняет визуальное отображение всех радиокнопок на состояние «предупреждение». */
    warning?: boolean;
    /** Меняет визуальное отображение всех радиокнопок на состояние «ошибка». */
    error?: boolean;
    /** Размещает радиокнопки в строку. Работает только со значениями, переданными через `items`, не работает с `children`. */
    inline?: boolean;
    /** Ширина радиогруппы. Работает только со значениями, переданными через `items`, не работает с `children`. */
    width?: React.CSSProperties['width'];
    /** Отрисовывает контент радиокнопки. Работает только со значениями, переданными через `items`, не работает с `children`.
     * @param {Value} itemValue - значение радиокнопки.
     * @param {Data} data - значение для отрисовки радиокнопки. */
    renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;
    /** @ignore */
    'aria-describedby'?: AriaAttributes['aria-describedby'];
    /** Событие изменения `value`. */
    onValueChange?: (value: T) => void;
    /** Событие потери радиогруппой фокуса. */
    onBlur?: (event: FocusEvent) => void;
    /** Событие ухода мышки с объекта (событие `onmouseleave`). */
    onMouseLeave?: () => any;
    /** Событие наведения мышкой (событие `onmouseover`). */
    onMouseOver?: () => any;
    /** Событие наведения мышкой (событие `onmouseenter`). Смотрите разницу с `onMouseOver` в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave)  */
    onMouseEnter?: () => any;
}
export interface RadioGroupState<T> {
    activeItem?: T;
}
export declare const RadioGroupDataTids: {
    readonly root: "RadioGroup__root";
};
type DefaultProps = Required<Pick<RadioGroupProps<unknown>, 'renderItem'>>;
/** Группирует радиокнопки. Контейнер для компонента [Radio](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-radio--docs). */
export declare class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    static Prevent: typeof Prevent;
    private emotion;
    private cx;
    private styles;
    private node;
    private name;
    private getProps;
    getRootNode: TGetRootNode;
    private setRootNode;
    constructor(props: RadioGroupProps<T>);
    private getRadioGroupContextValue;
    render(): React.JSX.Element;
    /** Программно устанавливает фокус на радиокнопку. Появляется фокусная обводка, элемент получает клавиатурные события и воспринимается как текущий элемент для чтения скринридерами.
     * @public
     */
    focus(): void;
    private getValue;
    private getName;
    private isControlled;
    private handleSelect;
    private renderChildren;
    private renderRadio;
    private getKeyByItem;
    private ref;
}
export {};
