import React from 'react';
import type { AriaAttributes, InputHTMLAttributes } from 'react';
import type { CommonProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
import type { SizeProp } from '../../lib/types/props';
export interface ToggleProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, Pick<InputHTMLAttributes<HTMLInputElement>, 'id' | 'name'>, CommonProps {
    /** @ignore */
    children?: React.ReactNode;
    /** Задает положение `children` относительно переключателя.
     * @default 'right' */
    captionPosition?: 'left' | 'right';
    /** Включает тогл.
     * @default false */
    checked?: boolean;
    /** Делает `тогл` включенным по умолчанию. Не работает при заданном пропе `checked`. */
    defaultChecked?: boolean;
    /** Делает компонент недоступным. */
    disabled?: boolean;
    /** Задает функцию, вызывающуюся при изменении значения. */
    onValueChange?: (value: boolean) => void;
    /** Задает функцию, которая вызывается при клике на `тогл`. */
    onChange?: React.ChangeEventHandler<HTMLInputElement>;
    /** Переводит контрол в состояние валидации "предупреждение".
     * @default false */
    warning?: boolean;
    /** Переводит контрол в состояние валидации "ошибка".
     * @default false */
    error?: boolean;
    /** Переводит тогл в состояние загрузки: добавляет стили для состояния `loading` и отключает `тогл`.*/
    loading?: boolean;
    /** Переводит контрол в состояние валидации "ошибка".
     * @default false */
    autoFocus?: boolean;
    /** Задает размер контрола. */
    size?: SizeProp;
    /** Задает функцию, которая вызывается, когда `тогл` получает фокус.*/
    onFocus?: React.FocusEventHandler<HTMLInputElement>;
    /** Задает функцию, которая вызывается, когда `тогл` теряет фокус. */
    onBlur?: React.FocusEventHandler<HTMLInputElement>;
    /** Отключает анимацию. */
    disableAnimations?: boolean;
}
export interface ToggleState {
    checked?: boolean;
    focusByTab?: boolean;
}
export declare const ToggleDataTids: {
    readonly root: "Toggle__root";
};
type DefaultProps = Required<Pick<ToggleProps, 'disabled' | 'loading' | 'captionPosition' | 'disableAnimations'>>;
/**
 * `Toggle` переключает состояния. Например, включает или отключает уведомления в настройках.
 * `Toggle` представляет из себя надпись + переключатель.
 *
 * `Toggle` нельзя использовать для выбора элементов в списке. Например, выбрать несколько писем.
 */
export declare class Toggle extends React.Component<ToggleProps, ToggleState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private size;
    private getProps;
    private theme;
    private input;
    getRootNode: TGetRootNode;
    private setRootNode;
    constructor(props: ToggleProps);
    componentDidMount(): void;
    /**
     * @public
     */
    focus: () => void;
    render(): React.JSX.Element;
    private getContainerSizeClassName;
    private getHandleSizeClassName;
    private getButtonSizeClassName;
    private getRootSizeClassName;
    private getInputSizeClassName;
    private getCaptionSizeClassName;
    private renderMain;
    private inputRef;
    private handleChange;
    private handleFocus;
    private resetFocus;
    private handleBlur;
    private isUncontrolled;
}
export {};
