import type { AriaAttributes, HTMLAttributes } from 'react';
import React from 'react';
import type { CommonProps } from '../../internal/CommonWrapper';
import { SidePageBody } from './SidePageBody';
import { SidePageContainer } from './SidePageContainer';
import { SidePageFooter } from './SidePageFooter';
import { SidePageHeader } from './SidePageHeader';
export interface SidePageProps extends CommonProps, Pick<HTMLAttributes<unknown>, 'role'>, Pick<AriaAttributes, 'aria-label'> {
    /** Добавляет блокирующий фон, когда сайдпейдж открыт. */
    blockBackground?: boolean;
    /** Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа. */
    disableClose?: boolean;
    /** Оставляет окно открытым при клике на фон. */
    ignoreBackgroundClick?: boolean;
    /** Задает ширину сайдпейджа. */
    width?: number | string;
    /** Задает ширину сайдпейджаю на мобилке. По умолчанию ширина во весь экран. */
    mobileWidth?: number | string;
    /** Задает функцию, которая вызывается при запросе закрытия сайдпейджа пользователем (нажал на фон, на Escape или на крестик). */
    onClose?: () => void;
    /** Задает функцию, которая вызывается при завершении анимации открытия сайдпейджа. */
    onOpened?: () => void;
    /** Отображает сайдпэйдж слева. */
    fromLeft?: boolean;
    /** Отключает анимацию. */
    disableAnimations?: boolean;
    /** Отключает фокус-лок внутри сайдпейджа.
     * Работает только при заблокированном фоне: `blockBackground = true`.*/
    disableFocusLock?: boolean;
    /** Задает отступ от края экрана. */
    offset?: number | string;
}
export interface SidePageState {
    stackPosition?: number;
    hasMargin?: boolean;
    hasShadow?: boolean;
    hasBackground?: boolean;
    hasHeader: boolean;
    hasFooter: boolean;
    hasPanel: boolean;
}
export declare const SidePageDataTids: {
    readonly root: "SidePage__root";
    readonly container: "SidePage__container";
};
type DefaultProps = Required<Pick<SidePageProps, 'disableAnimations' | 'offset' | 'role'>>;
/**
 * `SidePage` — это модальное окно, которое открывается поверх основной страницы и занимает всю высоту окна браузера.
 *
 * Используйте его, когда нужно сохранить контекст и показать большое количество данных.
 *
 * Содержит в себе три компоненты: `SidePage.Header`, `SidePage.Body` и `SidePage.Footer`.
 *
 * Для отображения серой плашки в футере в компонент `Footer` необходимо передать пропс `panel`.
 */
export declare class SidePage extends React.Component<SidePageProps, SidePageState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static Header: typeof SidePageHeader;
    static Body: typeof SidePageBody;
    static Footer: typeof SidePageFooter;
    static Container: typeof SidePageContainer;
    state: SidePageState;
    private theme;
    private stackSubscription;
    private layout;
    private header;
    private footer;
    rootRef: React.RefObject<HTMLDivElement>;
    componentDidMount(): void;
    componentDidUpdate(prevProps: SidePageProps): void;
    componentWillUnmount(): void;
    /**
     * Обновляет разметку компонента.
     * @public
     */
    updateLayout: () => void;
    static defaultProps: DefaultProps;
    private getProps;
    render(): JSX.Element;
    private renderMain;
    private get isFocusLockDisabled();
    private renderContainer;
    private getSidePageContextProps;
    private getWidth;
    private renderShadow;
    private getTransitionNames;
    private handleStackChange;
    private handleClickOutside;
    private handleKeyDown;
    private requestClose;
    private headerRef;
    private footerRef;
    private layoutRef;
    private setHasHeader;
    private setHasFooter;
    private setHasPanel;
}
export {};
