/**
 * Web Modal Component
 *
 */
import React from 'react';
import { ContextProps } from '../../shared/Context';
import ModalInner from './parts/ModalInner';
import { ModalProps } from './types';
import ModalHeader from './parts/ModalHeader';
import ModalHeaderBar from './parts/ModalHeaderBar';
import { ScrollViewAllProps } from '../../fragments/scroll-view/ScrollView';
import CloseButton from './parts/CloseButton';
import type { SpacingProps } from '../../shared/types';
import { ToCamelCasePartial } from '../../shared/helpers/withCamelCaseProps';
export declare const ANIMATION_DURATION = 300;
interface ModalState {
    hide: boolean;
    modalActive: boolean;
    preventAutoFocus: boolean;
}
export type ModalPropTypes = ModalProps & SpacingProps & Omit<ScrollViewAllProps, 'children'>;
declare class Modal extends React.PureComponent<ModalPropTypes & ToCamelCasePartial<ModalPropTypes>, ModalState> {
    static contextType: React.Context<ContextProps>;
    context: ContextProps;
    static Bar: typeof ModalHeaderBar;
    static Header: typeof ModalHeader;
    static Content: typeof ModalInner;
    static getContent(props: any): any;
    _id: string;
    _triggerRef: React.RefObject<HTMLElement>;
    _onUnmount: Array<() => void>;
    _openTimeout: NodeJS.Timeout;
    _closeTimeout: NodeJS.Timeout;
    _sideEffectsTimeout: NodeJS.Timeout;
    _tryToOpenTimeout: NodeJS.Timeout;
    activeElement: Element;
    isInTransition: boolean;
    modalContentCloseRef: React.RefObject<(event: Event, options: {
        triggeredBy?: string;
    }) => void>;
    state: {
        hide: boolean;
        modalActive: boolean;
        preventAutoFocus: boolean;
        animation_duration: number;
        no_animation: boolean;
    };
    static defaultProps: {
        id: any;
        focus_selector: any;
        labelled_by: any;
        title: any;
        disabled: any;
        spacing: boolean;
        open_delay: any;
        content_id: any;
        dialog_title: string;
        close_title: string;
        hide_close_button: boolean;
        close_button_attributes: any;
        prevent_close: boolean;
        prevent_core_style: boolean;
        animation_duration: number;
        no_animation: boolean;
        no_animation_on_mobile: boolean;
        fullscreen: string;
        min_width: any;
        max_width: any;
        align_content: string;
        container_placement: any;
        vertical_alignment: any;
        open_state: any;
        direct_dom_return: boolean;
        root_id: string;
        omit_trigger_button: boolean;
        className: any;
        children: any;
        on_open: any;
        on_close: any;
        on_close_prevent: any;
        open_modal: any;
        close_modal: any;
        trigger: any;
        trigger_attributes: any;
        overlay_class: any;
        content_class: any;
        modal_content: any;
        header_content: any;
        bar_content: any;
    };
    static getDerivedStateFromProps(props: any, state: any): any;
    constructor(props: any);
    componentDidMount(): void;
    componentWillUnmount(): void;
    componentDidUpdate(prevProps: any): void;
    openBasedOnStateUpdate(): void;
    toggleOpenClose: (event?: any, showModal?: any) => void;
    handleSideEffects: () => void;
    open: (e: Event) => void;
    close: (event: Event, { ifIsLatest, triggeredBy }?: {
        ifIsLatest: boolean;
        triggeredBy?: string;
    }) => void;
    removeActiveState(): void;
    /**
     * Prevent scrolling on the background
     * But checks if this instance was the last one or not
     *
     * @param {string} modalId Will remove the attribute if false is given
     */
    setActiveState(modalId: string): void;
    render(): import("react/jsx-runtime").JSX.Element;
}
export { CloseButton, Modal as OriginalComponent };
declare const _default: typeof Modal;
export default _default;
