import React, { Component } from 'react';
import PropTypes from 'prop-types';
/**
 * 1. 先写 interface 可选 必选
 * 2. 再写defaultProps 然后将interface中有默认值的字段的可选符号删去
 * 3. 最后写propTypes  interface中没有可选符号 defaultProps中也没有默认值的字段需要加上isRequired
 */
export declare type positionType = 'top' | 'right' | 'bottom' | 'left' | 'center';
export interface Props {
    node?: HTMLElement;
    visible: boolean;
    position: positionType;
    mask: boolean;
    maskClosable: boolean;
    onClose: () => void;
    wrapClassName: string;
    contentStyle: React.CSSProperties;
    stopScrollUnderMask: boolean;
    destroyOnClose: boolean;
    transitionName: string;
    transitionDuration: number;
}
declare class Popup extends Component<Props> {
    static propTypes: {
        node: PropTypes.Requireable<any>;
        visible: PropTypes.Requireable<boolean>;
        position: PropTypes.Requireable<string>;
        mask: PropTypes.Requireable<boolean>;
        maskClosable: PropTypes.Requireable<boolean>;
        onClose: PropTypes.Requireable<(...args: any[]) => any>;
        wrapClassName: PropTypes.Requireable<string>;
        contentStyle: PropTypes.Requireable<object>;
        stopScrollUnderMask: PropTypes.Requireable<boolean>;
        destroyOnClose: PropTypes.Requireable<boolean>;
        transitionName: PropTypes.Requireable<string>;
        transitionDuration: PropTypes.Requireable<number>;
    };
    static defaultProps: Partial<Props>;
    /**
     * 初次渲染节点(visible:true => mount)
     * 后续只会隐藏(visible:false => visibility+opacity)
     * 或显示(visible:true => visibility+opacity)节点
     * 不会删除节点（除非父组件卸载或destroyOnClose为true）
     */
    hasFirstRendered: boolean;
    componentDidMount(): void;
    componentDidUpdate(prevProps: Props): void;
    componentWillUnmount(): void;
    handleMaskClick: () => void;
    get transitionName(): string;
    render(): JSX.Element | null;
}
export default Popup;
