import type { HTMLAttributes } from 'react';
import React from 'react';
import type { ButtonProps } from '../Button';
import type { Nullable } from '../../typings/utility-types';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
import type { SizeProp } from '../../lib/types/props';
export type SwitcherItems = string | SwitcherItem;
export declare const SwitcherDataTids: {
    readonly root: "Switcher__root";
};
export interface SwitcherProps extends Pick<HTMLAttributes<unknown>, 'role'>, CommonProps {
    /** Задает список элементов в свитчере. Это массив строк или объектов типа `{ label: string, value: string, buttonProps?: Partial<ButtonProps> }` */
    items: SwitcherItems[];
    /** Устанавливает значение свитчера. */
    value?: string;
    /** Задает функцию, которая вызывается при изменении значения свитчера (value). */
    onValueChange?: (value: string) => void;
    /** Задает подпись около свитчера. */
    caption?: string;
    /** Переводит контрол в состояние валидации "ошибка". */
    error?: boolean;
    /** Задает размер контрола. */
    size?: SizeProp;
    /** Задает ширину контрола. С этим пропом элементы внутри автоматически равномерно растянутся. */
    width?: React.CSSProperties['width'];
    /** Делает компонент недоступным. */
    disabled?: boolean;
    /** Задает функцию отрисовки элемента. Параметр `renderDefault` - это встроенная дефолтная функция отрисовки элемента, которую можно вызывать в `renderItem`. */
    renderItem?: (label: string, value: string, buttonProps: ButtonProps, renderDefault: () => React.ReactNode, ariaLabel?: string) => React.ReactNode;
}
type DefaultProps = Required<Pick<SwitcherProps, 'role'>>;
export interface SwitcherState {
    focusedIndex: Nullable<number>;
}
interface SwitcherItem {
    value: string;
    label: string;
    'aria-label'?: string;
    buttonProps?: Partial<ButtonProps>;
}
/**
 * Переключатель `Switcher` — это замена RadioGroup.
 *
 * Не используйте переключатель в качестве навигации, для этого лучше подходят Tabs.
 */
export declare class Switcher extends React.Component<SwitcherProps, SwitcherState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    state: SwitcherState;
    private theme;
    getRootNode: TGetRootNode;
    private setRootNode;
    render(): React.JSX.Element;
    private renderMain;
    private selectItem;
    private _extractPropsFromItem;
    private _extractValuesFromItems;
    private _focus;
    private handleKey;
    private move;
    private _getNextFocusedIndex;
    private _handleFocus;
    private _handleBlur;
    private _renderItems;
    private renderDefaultItem;
    private getLabelSizeClassName;
}
export {};
