import React from 'react';
import type { AnyObject } from '../../lib/utils.js';
import type { SpinnerProps } from '../Spinner/index.js';
import type { CommonProps } from '../../internal/CommonWrapper/index.js';
import type { TGetRootNode } from '../../lib/rootNode/index.js';
declare const types: readonly ["mini", "normal", "big"];
export type LoaderType = (typeof types)[number];
export interface LoaderProps extends CommonProps {
    /** @ignore */
    children?: React.ReactNode;
    /** Показывает лоадер.
     * @default false */
    active?: boolean;
    /** Подпись под спиннером.
     * @default  ""
     */
    caption?: SpinnerProps['caption'];
    /** Задает компонент, заменяющий спиннер. */
    component?: React.ReactNode;
    /** Размер спиннера и текста.
     * @default normal. */
    type?: LoaderType;
    /** Время в миллисекундах для показа вуали без спиннера.
     * @default 300 */
    delayBeforeSpinnerShow?: number;
    /** Минимальное время в миллисекундах для показа спиннера.
     * @default 1000. */
    minimalDelayBeforeSpinnerHide?: number;
}
export interface LoaderState {
    isStickySpinner: boolean;
    isSpinnerVisible: boolean;
    isLoaderActive: boolean;
    spinnerStyle?: AnyObject;
}
export declare const LoaderDataTids: {
    readonly idle: "Loader__Idle";
    readonly veil: "Loader__Veil";
    readonly spinner: "Loader__Spinner";
};
type DefaultProps = Required<Pick<LoaderProps, 'type' | 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>>;
/**
 * С помощью лоадера можно отобразить процесс выполнения задачи.
 * Лоадер принимает в качестве дочернего элемента другой компонент или контент, который будет показан на экране.
 * Когда происходит загрузка, поверх этого компонента или контента будет отображаться [Спиннер](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_display-data-spinner--docs).
 */
export declare class Loader extends React.Component<LoaderProps, LoaderState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    private globalObject;
    private emotion;
    private cx;
    private styles;
    private theme;
    getRootNode: TGetRootNode;
    private setRootNode;
    private spinnerContainerNode;
    private childrenContainerNode;
    private spinnerNode;
    private layoutEvents;
    private spinnerTask;
    private childrenObserver;
    constructor(props: LoaderProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>): void;
    componentWillUnmount(): void;
    static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState>;
    render(): React.JSX.Element;
    private renderMain;
    private childrenRef;
    private spinnerRef;
    private renderSpinner;
    private checkSpinnerPosition;
    private disableChildrenFocus;
    private enableChildrenFocus;
    private makeObservable;
    private makeUnobservable;
}
export {};
