import type { AriaAttributes } from 'react';
import React from 'react';
import type { ThemeIn } from '../../lib/theming/Theme.js';
import type { Nullable } from '../../typings/utility-types.js';
import type { CommonProps } from '../../internal/CommonWrapper/index.js';
import type { TGetRootNode } from '../../lib/rootNode/index.js';
import { ToastView } from './ToastView.js';
export interface Action {
    label: string;
    handler: () => void;
    'aria-label'?: string;
}
/**
 * Состояния тоста:
 *
 * - default стиль для отображения по умолчанию
 * - error стиль для отображения ошибок
 **/
export type ToastUse = 'default' | 'error';
export interface ToastState {
    notification: Nullable<React.ReactNode>;
    action: Nullable<Action>;
    id: number;
    showTime: Nullable<number>;
    showCloseIcon?: boolean;
    currentUse: ToastUse;
}
export interface ToastProps extends Pick<AriaAttributes, 'aria-label'>, CommonProps {
    /** Задает функцию, которая вызывается при возникновении тоста. */
    onPush?: (notification: string, action?: Action) => void;
    /** Задает функцию, которая вызывается при закрытии тоста. */
    onClose?: (notification: string, action?: Action) => void;
    /** Задает объект с переменными темы. Он будет объединён с темой из контекста. */
    theme?: ThemeIn;
}
/** Объект с конфигурацией отображения Toast-а */
export interface ToastPushConfig {
    action?: Nullable<Action>;
    showTime?: number;
    showCloseIcon?: boolean;
    /**
     * Определяет стили для тоста.
     *
     * - default стиль для отображения по умолчанию
     * - error стиль для отображения ошибок
     *
     * По умолчанию будет использован стиль default.
     **/
    use?: ToastUse;
}
export type ToastPushApi = (notification: React.ReactNode, config?: ToastPushConfig) => void;
export type ToastClose = () => void;
export declare const ToastDataTids: {
    readonly toastStatic: "StaticToast";
    readonly toastView: "ToastView__root";
    readonly action: "ToastView__action";
    readonly close: "ToastView__close";
};
/**
 * `Toast` — это короткое немодальное уведомление, которое сообщает пользователю о результате выполнения его команды.
 * Результат может быть положительным, отрицательным или нейтральным.
 *
 */
export declare class Toast extends React.Component<ToastProps, ToastState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    getRootNode: TGetRootNode;
    private setRootNode;
    private styles;
    private emotion;
    private theme;
    _toast: Nullable<ToastView>;
    private _timeout;
    private rootRef;
    constructor(props: ToastProps);
    componentWillUnmount(): void;
    render(): React.JSX.Element;
    /**
     * Показывает тост с `notification` в качестве сообщения.
     * Тост автоматически скрывается через 3 или 7 секунд,
     * в зависимости от наличия у него кнопки `action` внутри config-а.
     * Время показа можно задать вручную, передав `showTime` внутри config-а.
     *
     * @public
     * @param {React.ReactNode} notification
     * @param {ToastPushConfig} config объект с конфигурацией отображения компонента Toast
     */
    push: ToastPushApi;
    /**
     * @public
     */
    close: () => void;
    private _renderToast;
    private setRootRef;
    private _clearTimer;
    private _setTimer;
    private _refToast;
}
