import React, { CSSProperties, Key, MouseEvent as ReactMouseEvent, ReactElement, ReactNode } from 'react';
import ViewComponent, { ViewComponentProps } from '../core/ViewComponent';
import Button, { ButtonProps } from '../button/Button';
import EventManager from '../_util/EventManager';
import { AsyncCmpLoadingFunction } from '../_util/AsyncComponent';
import { ModalChildrenProps, ModalCustomized } from './interface';
import { MousePosition } from '../_util/DocumentUtils';
export declare type DrawerTransitionName = 'slide-up' | 'slide-right' | 'slide-down' | 'slide-left';
export interface ModalProps extends ViewComponentProps {
    __deprecate__?: boolean;
    eventKey?: Key;
    children?: AsyncCmpLoadingFunction | ReactNode;
    closable?: boolean;
    movable?: boolean;
    fullScreen?: boolean;
    maskClosable?: boolean | 'click' | 'dblclick';
    maskStyle?: CSSProperties;
    autoCenter?: boolean;
    mask?: boolean;
    maskClassName?: string;
    keyboardClosable?: boolean;
    modalTitle?: ReactNode;
    header?: ((title: ReactNode, closeBtn: ReactNode, okBtn: ReactElement<ButtonProps>, cancelBtn: ReactElement<ButtonProps>) => ReactNode) | ReactNode | boolean;
    footer?: ((okBtn: ReactElement<ButtonProps>, cancelBtn: ReactElement<ButtonProps>, modalChildrenProps: any) => ReactNode) | ReactNode | boolean;
    destroyOnClose?: boolean;
    okText?: ReactNode;
    cancelText?: ReactNode;
    okProps?: ButtonProps;
    cancelProps?: ButtonProps;
    onClose?: () => Promise<boolean | undefined> | boolean | undefined | void;
    onOk?: () => Promise<boolean | undefined> | boolean | undefined | void;
    onCancel?: () => Promise<boolean | undefined> | boolean | undefined | void;
    afterClose?: () => void;
    close?: () => void;
    update?: (props?: ModalProps) => void;
    okButton?: boolean;
    cancelButton?: boolean;
    /**
     * @deprecated
     */
    okCancel?: boolean;
    drawer?: boolean;
    drawerOffset?: number;
    drawerTransitionName?: DrawerTransitionName;
    transitionAppear?: boolean;
    key?: Key;
    border?: boolean;
    drawerBorder?: boolean;
    okFirst?: boolean;
    active?: boolean;
    onTop?: (key?: Key) => void;
    mousePosition?: MousePosition | null;
    contentStyle?: CSSProperties;
    bodyStyle?: CSSProperties;
    closeOnLocationChange?: boolean;
    resizable?: boolean;
    customizable?: boolean;
    customizedCode?: string;
}
export default class Modal extends ViewComponent<ModalProps> {
    static displayName: string;
    static defaultProps: {
        suffixCls: string;
        mask: boolean;
        okButton: boolean;
        okCancel: boolean;
        destroyOnClose: boolean;
        fullScreen: boolean;
        drawer: boolean;
        drawerOffset: number;
        autoFocus: boolean;
        closeOnLocationChange: boolean;
    };
    static key: any;
    static open: any;
    static preview: any;
    static confirm: any;
    static info: any;
    static success: any;
    static error: any;
    static warning: any;
    static destroyAll: () => void;
    mousePosition?: MousePosition | null;
    moveEvent: EventManager;
    okCancelEvent: EventManager;
    resizeEvent: EventManager;
    offset?: [number | string | undefined, number | string | undefined];
    cancelButton: Button | null;
    minWidth: number;
    minHeight: number;
    tempCustomized: ModalCustomized;
    get okBtn(): ReactElement<ButtonProps>;
    get cancelBtn(): ReactElement<ButtonProps>;
    get drawerTransitionName(): DrawerTransitionName;
    get drawerHeaderFooterCombined(): boolean;
    get modalClosable(): boolean;
    get doc(): Document;
    get autoWidth(): boolean;
    contentNode: HTMLElement;
    sentinelStartRef: HTMLDivElement;
    sentinelEndRef: HTMLDivElement;
    childrenProps: ModalChildrenProps;
    constructor(props: any, context: any);
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: ModalProps, nextContext: any): void;
    initResizableRange(props: ModalProps): void;
    saveCancelRef(node: any): void;
    handleKeyDown(e: any): void;
    getOmitPropsKeys(): string[];
    loadCustomized(): Promise<void>;
    saveCustomized(): void;
    getTempCustomized(tempCustomized?: ModalCustomized): {};
    getOtherProps(): any;
    contentReference(node: any): void;
    sentinelStartReference(node: any): void;
    sentinelEndReference(node: any): void;
    getClassName(): string | undefined;
    getDrawerOffset(drawerTransitionName: any): number;
    handleResize(e: any): void;
    handleModalMouseResize(e: any): (me: any) => void;
    handleDrawerMouseResize(e: any): (me: any) => void;
    render(): JSX.Element;
    focus(): void;
    changeActive(next: any): void;
    componentWillUpdate({ hidden }: {
        hidden: any;
    }): void;
    componentWillUnmount(): void;
    handleMouseDown(e: any): void;
    handleHeaderMouseDown(downEvent: ReactMouseEvent<HTMLDivElement, MouseEvent>): void;
    handleOk(): Promise<void>;
    handleCancel(): Promise<void>;
    getHeader(): ReactNode;
    getWrappedHeader(header: ReactNode): ReactNode;
    getCloseButton(): ReactNode;
    getBody(): ReactNode;
    getFooter(): ReactNode;
    getWrappedFooter(footer: ReactNode): JSX.Element;
    getDefaultHeader: (title: any, closeButton: React.ReactNode, _okBtn: React.ReactElement<ButtonProps, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>, _cancelBtn: React.ReactElement<ButtonProps, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>) => JSX.Element | undefined;
    getDefaultFooter: (okBtn: React.ReactElement<ButtonProps, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>, cancelBtn: React.ReactElement<ButtonProps, string | ((props: any) => React.ReactElement<any, any> | null) | (new (props: any) => React.Component<any, any, any>)>, _modalChildrenProps: ModalChildrenProps) => JSX.Element;
    registerOk: (ok: any) => void;
    registerCancel: (cancel: any) => void;
    renderChildren(children: ReactNode): ReactNode;
    close(): void;
}
