import React from 'react';
import type { AriaAttributes, InputHTMLAttributes } from 'react';
import type { CommonProps } from '../../internal/CommonWrapper/index.js';
import type { TGetRootNode } from '../../lib/rootNode/index.js';
import type { SizeProp } from '../../lib/types/props.js';
export interface ToggleProps extends Pick<AriaAttributes, 'aria-label' | 'aria-describedby'>, Pick<InputHTMLAttributes<HTMLInputElement>, 'id' | 'name'>, CommonProps {
    /** @ignore */
    children?: React.ReactNode;
    /** Расположение названия относительно переключателя.
     * @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'>>;
/**
 * Тогл переключает состояния. Например, включает или отключает уведомления в настройках.
 * Состоит из надписи и переключателя.
 */
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 styles;
    private emotion;
    private cx;
    private globalObject;
    private theme;
    private input;
    getRootNode: TGetRootNode;
    private setRootNode;
    private keyListener;
    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 {};
