import React, { CSSProperties, Key } from 'react';
import PropTypes from 'prop-types';
import ViewComponent, { ViewComponentProps } from '../../pro/lib/core/ViewComponent';
import Align from '../align';
export interface PopupProps extends ViewComponentProps {
    align: object;
    onAlign?: (source: Node, align: object, target: HTMLElement, translate: {
        x: number;
        y: number;
    }) => void;
    getRootDomNode?: () => Element | Text | null;
    getPopupContainer?: (triggerNode: Element) => HTMLElement;
    transitionName?: string;
    onAnimateAppear?: (key: Key | null) => void;
    onAnimateEnter?: (key: Key | null) => void;
    onAnimateLeave?: (key: Key | null) => void;
    onAnimateEnd?: (key: Key | null, exists: boolean) => void;
    getStyleFromAlign?: (target: HTMLElement, align: object) => object | undefined;
    getClassNameFromAlign?: (align: object) => string | undefined;
    getFocusableElements?: (elements: HTMLElement[]) => void;
}
export default class Popup extends ViewComponent<PopupProps> {
    static displayName: string;
    static popupContainer?: HTMLDivElement;
    static propTypes: {
        id: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<import("../_util/enum").Size>;
        suffixCls: PropTypes.Requireable<string>;
        prefixCls: PropTypes.Requireable<string>;
        title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        disabled: PropTypes.Requireable<boolean>;
        hidden: PropTypes.Requireable<boolean>;
        autoFocus: PropTypes.Requireable<boolean>;
        accessKey: PropTypes.Requireable<string | boolean>;
        dir: PropTypes.Requireable<string>;
        contentEditable: PropTypes.Requireable<string | boolean>;
        draggable: PropTypes.Requireable<string | boolean>;
        style: PropTypes.Requireable<object>;
        className: PropTypes.Requireable<string>;
        tabIndex: PropTypes.Requireable<number>;
        lang: PropTypes.Requireable<string>;
        spellCheck: PropTypes.Requireable<boolean>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
        onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
        align: PropTypes.Requireable<object>;
        onAlign: PropTypes.Requireable<(...args: any[]) => any>;
        getRootDomNode: PropTypes.Requireable<(...args: any[]) => any>;
        getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
        transitionName: PropTypes.Requireable<string>;
        onAnimateAppear: PropTypes.Requireable<(...args: any[]) => any>;
        onAnimateEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onAnimateLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onAnimateEnd: PropTypes.Requireable<(...args: any[]) => any>;
        getStyleFromAlign: PropTypes.Requireable<(...args: any[]) => any>;
        getClassNameFromAlign: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static defaultProps: {
        suffixCls: string;
        transitionName: string;
    };
    popupContainer?: HTMLDivElement;
    currentAlignClassName?: string;
    currentAlignStyle?: CSSProperties;
    align: Align | null;
    target?: HTMLElement;
    contentRendered: boolean;
    popupKey: string;
    saveRef: (align: any) => any;
    getOmitPropsKeys(): string[];
    componentWillUnmount(): void;
    componentDidUpdate(): void;
    componentDidMount(): void;
    findFocusableElements(): void;
    renderInner(innerRef: any): JSX.Element;
    render(): React.ReactPortal | null;
    getContainer(): HTMLDivElement | undefined;
    onAlign(source: any, align: any, target: any, translate: any): void;
    forceAlign(): void;
}
export declare function getGlobalPopupContainer(): HTMLDivElement;
