import PropTypes from 'prop-types';
import React, { PropsWithChildren } from 'react';
import { ModalLocale } from './locale';
import type { ButtonProps, ButtonType } from '../button';
export declare const destroyFns: Array<() => void>;
export interface ModalProps {
    /** 对话框是否可见 */
    visible?: boolean;
    /** 确定按钮 loading */
    confirmLoading?: boolean;
    /** 标题 */
    title?: React.ReactNode | string;
    /** 是否显示右上角的关闭按钮 */
    closable?: boolean;
    /** 点击确定回调 */
    onOk?: (e: React.MouseEvent<HTMLElement>) => void;
    /** 点击模态框右上角叉、取消按钮、Props.maskClosable 值为 true 时的遮罩层或键盘按下 Esc 时的回调 */
    onCancel?: (e: React.MouseEvent<HTMLElement>) => void;
    /** 关闭后的回调 */
    afterClose?: () => void;
    /** 垂直居中 */
    centered?: boolean;
    /** 宽度 */
    width?: string | number;
    /** 底部内容 */
    footer?: React.ReactNode;
    /** 确认按钮文字 */
    okText?: React.ReactNode;
    /** 确认按钮类型 */
    okType?: ButtonType;
    /** 取消按钮文字 */
    cancelText?: React.ReactNode;
    /** 点击蒙层是否允许关闭 */
    maskClosable?: boolean;
    /** 强制渲染 Modal */
    forceRender?: boolean;
    /** 确认按钮的属性 */
    okButtonProps?: ButtonProps<string>;
    /** 取消按钮的属性 */
    cancelButtonProps?: ButtonProps<string>;
    /** 关闭时是否销毁 Modal 内的子元素 */
    destroyOnClose?: boolean;
    /** 样式 */
    style?: React.CSSProperties;
    /** 包裹元素的类名 */
    wrapClassName?: string;
    /** 遮罩层的过渡动画名称 */
    maskTransitionName?: string;
    /** Modal 的过渡动画名称 */
    transitionName?: string;
    /** 样式名 */
    className?: string;
    /** 渲染 Modal 的容器 */
    getContainer?: string | HTMLElement | getContainerFunc | false | null;
    /** 层级 */
    zIndex?: number;
    /** 内容区域的样式 */
    bodyStyle?: React.CSSProperties;
    /** 遮罩层的样式 */
    maskStyle?: React.CSSProperties;
    /** 是否显示遮罩层 */
    mask?: boolean;
    /** 是否支持键盘操作 */
    keyboard?: boolean;
    /** 包裹元素的属性 */
    wrapProps?: any;
    /** 类名前缀 */
    prefixCls?: string;
    /** 关闭按钮的自定义图标 */
    closeIcon?: React.ReactNode;
    /** 是否开启动画过渡效果 */
    animation?: boolean;
}
type getContainerFunc = () => HTMLElement;
export interface ModalFuncProps {
    prefixCls?: string;
    className?: string;
    visible?: boolean;
    title?: React.ReactNode;
    content?: React.ReactNode;
    onOk?: (...args: any[]) => any;
    onCancel?: (...args: any[]) => any;
    okButtonProps?: ButtonProps<string>;
    cancelButtonProps?: ButtonProps<string>;
    centered?: boolean;
    width?: string | number;
    okText?: React.ReactNode;
    okType?: ButtonType;
    cancelText?: React.ReactNode;
    icon?: React.ReactNode;
    iconType?: string;
    mask?: boolean;
    maskClosable?: boolean;
    zIndex?: number;
    okCancel?: boolean;
    style?: React.CSSProperties;
    maskStyle?: React.CSSProperties;
    type?: string;
    keyboard?: boolean;
    getContainer?: string | HTMLElement | getContainerFunc | false | null;
    autoFocusButton?: null | 'ok' | 'cancel';
    transitionName?: string;
    maskTransitionName?: string;
}
export type ModalFunc = (props: ModalFuncProps) => {
    destroy: () => void;
    update: (newConfig: ModalFuncProps) => void;
};
export default class Modal extends React.Component<PropsWithChildren<ModalProps>, {}> {
    static info: ModalFunc;
    static success: ModalFunc;
    static error: ModalFunc;
    static warn: ModalFunc;
    static warning: ModalFunc;
    static confirm: ModalFunc;
    static destroyAll: () => void;
    static defaultProps: {
        width: number;
        confirmLoading: boolean;
        visible: boolean;
        okType: ButtonType;
    };
    static propTypes: {
        prefixCls: PropTypes.Requireable<string>;
        onOk: PropTypes.Requireable<(...args: any[]) => any>;
        onCancel: PropTypes.Requireable<(...args: any[]) => any>;
        okText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        cancelText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        centered: PropTypes.Requireable<boolean>;
        width: PropTypes.Requireable<NonNullable<string | number | null | undefined>>;
        confirmLoading: PropTypes.Requireable<boolean>;
        visible: PropTypes.Requireable<boolean>;
        footer: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        closable: PropTypes.Requireable<boolean>;
        closeIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
    };
    handleCancel: (e: any) => void;
    handleOk: (e: React.MouseEvent<HTMLButtonElement>) => void;
    renderFooter: (locale: ModalLocale) => React.JSX.Element;
    renderModal: () => React.JSX.Element;
    render(): React.JSX.Element;
}
export {};
//# sourceMappingURL=Modal.d.ts.map