import React from 'react';
import type { TGetRootNode } from '../../lib/rootNode';
export interface GlobalLoaderProps {
    /** Устанавливает задержку в миллисекундах до появления лоадера. */
    delayBeforeShow?: number;
    /** Устанавливает задержку в миллисекундах до исчезновения лоадера. */
    delayBeforeHide?: number;
    /** Устанавливает ожидаемое время(ms) ответа сервера. */
    expectedResponseTime?: number;
    /** Определяет, нужно ли показывать анимацию лоадера в виде спиннера. */
    rejected?: boolean;
    /** Определяет, показывать ли лоадер. */
    active?: boolean;
    /** Отключает анимацию. */
    disableAnimations?: boolean;
    /** Задает коллбек, вызывающийся после появления лоадера. */
    onStart?(): void;
    /** Задает коллбек, вызывающийся после исчезновения лоадера. */
    onDone?(): void;
    /** Задает коллбек, вызывающийся после вызова GlobalLoader.reject(). Или после установки пропа rejected = true. */
    onReject?(): void;
    /** Задает коллбек, вызывающийся после вызова GlobalLoader.accept() или установки пропа rejected = false. */
    onAccept?(): void;
}
export interface GlobalLoaderState {
    visible: boolean;
    done: boolean;
    rejected: boolean;
    accept: boolean;
    dead: boolean;
    successAnimationInProgress: boolean;
    expectedResponseTime: number;
    started: boolean;
}
export declare const GlobalLoaderDataTids: {
    readonly root: "GlobalLoader";
};
type DefaultProps = Required<Pick<GlobalLoaderProps, 'expectedResponseTime' | 'delayBeforeShow' | 'delayBeforeHide' | 'rejected' | 'active' | 'disableAnimations'>>;
/**
 * Глобальный лоадер `GlobalLoader` — это универсальный индикатор обмена данными с сервером.
 * Он появляется у верхней границы экрана и выглядит как тоненькая полоска, окрашенная в фирменный цвет продукта.
 *
 * `GlobalLoader` может быть только один в приложении. Поэтому, каждый новый экземпляр компонента "убивает" предыдущий экземпляр, и начинает перехватывать статические методы.
 *
 * Предполагается монтирование компонента в единственном месте. И управление им через статические методы, либо через пропсы.
 *
 * `GlobalLoader` работает в двух режимах:
 * * как прогресс-бар, примерно показывает ход получения данных от сервера.
 * * как спиннер, когда есть проблемы с соединением.
 */
export declare class GlobalLoader extends React.Component<GlobalLoaderProps, GlobalLoaderState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    getRootNode: TGetRootNode;
    private setRootNode;
    private getProps;
    private readonly startTask;
    private readonly stopTask;
    private readonly resumeTaskAfterSuccessAnimation;
    static defaultProps: DefaultProps;
    constructor(props: GlobalLoaderProps);
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: Readonly<GlobalLoaderProps>): void;
    render(): false | React.JSX.Element;
    /**
     * Запускает анимацию лоадера <br />
     * Равносильно установке пропа `active = true`
     *
     * @public
     */
    static start: (expectedResponseTime?: number) => void;
    /**
     * Показывает анимацию успешного завершения загрузки <br />
     * Равносильно установке пропа `active = false`
     *
     * @public
     */
    static done: () => void;
    /**
     * Переключает анимацию лоадера в состояние спиннера <br />
     * Равносильно установке пропа `rejected = true`
     *
     * @public
     */
    static reject: () => void;
    /**
     * Возвращает лоадер из состояния спиннера в обычное и продолжает анимацию с того места, на котором она была прерван <br />
     * Равносильно установке пропа `rejected = false`
     *
     * @public
     */
    static accept: () => void;
    setActive: () => void;
    setDone: () => void;
    setReject: (reject: boolean) => void;
    updateExpectedResponseTime(expectedResponseTime: number): void;
    kill: () => void;
}
export {};
