/** @hidden */ /** */
import * as PropTypes from 'prop-types';
import * as React from 'react';
import { DimensionsSetProps, FlexContainerSetProps, SpacingSetProps } from './system';
import { OptionalResponsiveProp } from './system/utils/types';
/**
 * Props for the {@link Modal} component. Also accepts:
 * * {@link ModalStyleProps}
 *
 * @hidden
 */
interface ModalProps {
    /** Callback function to fire when the modal is closed. */
    onClose?: () => unknown;
    /** Extra `className`s to apply to the modal element, separated by spaces. */
    className?: string;
    /** Extra styles to apply to the modal element. */
    style?: React.CSSProperties;
    /** Extra `className`s to apply to the background element, separated by spaces. */
    backgroundClassName?: string;
    /** Extra styles to apply to the background element. */
    backgroundStyle?: React.CSSProperties;
    /** */
    children: React.ReactNode;
}
/**
 * Style props shared between the {@link Modal}, {@link Dialog}, and {@link ConfirmationDialog} components. Also accepts:
 * * {@link DimensionsSetProps}
 * * {@link FlexContainerSetProps}
 * * {@link SpacingSetProps}
 *
 * @hidden
 * @noInheritDoc
 */
export interface ModalStyleProps extends DimensionsSetProps, FlexContainerSetProps, SpacingSetProps {
    /** Defines the display type of an element, which consists of the two basic qualities of how an element generates boxes — the outer display type defining how the box participates in flow layout, and the inner display type defining how the children of the box are laid out. */
    display?: OptionalResponsiveProp<'block' | 'flex'>;
}
export declare const modalStylePropTypes: {
    [x: string]: PropTypes.Validator<any>;
};
/**
 * Generic modal component with minimal styling.
 *
 * @hidden
 */
export declare class Modal extends React.Component<ModalProps> {
    /** @hidden */
    static propTypes: {
        onClose: PropTypes.Requireable<(...args: any[]) => any>;
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        backgroundClassName: PropTypes.Requireable<string>;
        backgroundStyle: PropTypes.Requireable<object>;
    };
    /** @internal */
    _background: HTMLDivElement | null;
    /** @internal */
    _container: HTMLDivElement;
    /** @internal */
    _originalActiveElement: Element | null;
    /** @internal */
    _mouseDownOutsideModal: boolean;
    /** @hidden */
    constructor(props: ModalProps);
    /** @hidden */
    componentDidMount(): void;
    /** @hidden */
    componentWillUnmount(): void;
    /** @internal */
    _onMouseDown(e: React.MouseEvent<HTMLDivElement>): void;
    /** @internal */
    _onMouseUp(e: React.MouseEvent<HTMLDivElement>): void;
    /** @internal */
    _shouldClickingOnElementCloseModal(el: EventTarget | null): boolean;
    /** @hidden */
    render(): React.ReactPortal;
}
declare const _default: React.RefForwardingComponent<Modal, ModalProps & ModalStyleProps & React.RefAttributes<Modal>>;
export default _default;
