import { CSSProperties, ReactNode, HTMLAttributes } from 'react';
/**
 * @title Trigger
 */
export interface TriggerProps {
    className?: string | string[];
    /**
     * @zh 弹出框（外部）的样式
     * @en The additional css class
     */
    style?: CSSProperties;
    /**
     * @zh 弹出框（内部）的样式
     * @en The css style of the content of the popup
     */
    popupStyle?: CSSProperties;
    /**
     * @zh 弹出层跟随鼠标位置
     * @en The popup will align mouse position
     */
    alignPoint?: boolean;
    /**
     * @zh 自动对齐子元素的宽度设置弹出框的宽度
     * @en Set the width of the popup by the width of the child element
     */
    autoAlignPopupWidth?: boolean;
    /**
     * @zh 自动对齐子元素的宽度设置弹出框的最小宽度
     * @en Set the minimum width of the popup by the width of the child element
     */
    autoAlignPopupMinWidth?: boolean;
    /**
     * @zh 动画类名
     * @en Animation class name
     * @defaultValue fadeIn
     */
    classNames?: string;
    /**
     * @zh 动画过渡时间
     * @en Animation transition time
     * @defaultValue 200
     */
    duration?: number | {
        exit?: number;
        enter?: number;
        appear?: number;
    };
    /**
     * @zh 设置这个参数后，打开弹出后，children 上会添加一个名为 `${childrenPrefix}-open` 的类。
     * @en Set an additional class name(`${childrenPrefix}-open`) for the container of the popup.
     */
    childrenPrefix?: string;
    /**
     * @zh 是否禁用
     * @en Whether to disable
     */
    disabled?: boolean;
    /**
     * @zh mouseenter 触发延时的毫秒数
     * @en Delay time to show when mouse enter. unit: ms.
     * @defaultValue 100
     */
    mouseEnterDelay?: number;
    /**
     * @zh mouseleave 触发延时的毫秒数
     * @en Delay time to show when mouse leave. unit: ms.
     * @defaultValue 100
     */
    mouseLeaveDelay?: number;
    /**
     * @zh focus 触发延时的毫秒数
     * @en Delay time to show when focus. unit: ms.
     */
    focusDelay?: number;
    /**
     * @zh 在该元素上执行 clickOutside，触发弹出框关闭
     * @en Return a element which will be attached click event to close trigger
     * @defaultValue () => window.document
     */
    getDocument?: () => Element;
    /**
     * @zh 设置弹出内容所插入的父元素
     * @en Set the parent node which the popup will be rendered to.
     */
    getPopupContainer?: (node: HTMLElement) => Element;
    /**
     * @zh 隐藏后是否销毁 DOM 结构
     * @en Whether to destroy the popup when hidden
     * @defaultValue true
     */
    unmountOnExit?: boolean;
    /**
     * @zh 触发方式
     * @en Types of events that cause the popup to show
     * @defaultValue hover
     */
    trigger?: 'hover' | 'click' | 'focus' | 'contextMenu' | Array<'hover' | 'click' | 'focus' | 'contextMenu'>;
    /**
     * @zh 弹出位置，一共有 12 个方位可供选择
     * @en The position of the popup relative to the child node.
     * @defaultValue bottom
     */
    position?: 'top' | 'tl' | 'tr' | 'bottom' | 'bl' | 'br' | 'left' | 'lt' | 'lb' | 'right' | 'rt' | 'rb';
    /**
     * @zh 弹出框的内容
     * @en The content of the popup
     */
    popup?: () => ReactNode;
    /**
     * @zh 是否根据空间自动调整弹出框的位置。
     * @en Whether to automatically adjust the position of the popup according to the viewport
     * @defaultValue true
     */
    autoFitPosition?: boolean;
    /**
     * @zh 默认弹出层位置会根据视口边界进行定位及微调，此参数可以设置到视口边界一定距离时即进行定位调整。仅在 autoFitPosition=true 且 alignPoint=false 生效。
     * @en The default pop-up layer position will be positioned and fine-tuned according to the viewport boundary. This parameter can be set to adjust the positioning when it is a certain distance from the viewport boundary. Only takes effect when autoFitPosition=true and alignPoint=false.
     * @version 2.59.0
     */
    boundaryDistance?: {
        left?: number;
        bottom?: number;
    } | {
        left?: number;
        top?: number;
    } | {
        right?: number;
        bottom?: number;
    } | {
        right?: number;
        top?: number;
    };
    /**
     * @zh 是否在鼠标移出触发节点，移入弹出框时保留弹出框。
     * @en Whether the popup is visible when the mouse hovers over the popup.
     * @defaultValue true
     */
    popupHoverStay?: boolean;
    /**
     * @zh 是否在触发节点失去焦点的时候关闭弹出框，仅在 `trigger` 中含有 `focus` 时生效
     * @en Whether close the popup when the child node losing focus. Only work when the `trigger` containers `focus`
     * @defaultValue true
     */
    blurToHide?: boolean;
    /**
     * @zh 是否在鼠标移出触发节点和弹出层的时候关闭弹出层
     * @en Whether to allow close the popup by clicking the child node.
     * @defaultValue true
     * @version 2.22.0
     */
    mouseLeaveToClose?: boolean;
    /**
     * @zh 是否能通过点击触发节点来关闭弹出框。trigger 包含 click, contextMenu 时，默认为 true。否则为 false
     * @en Whether to allow close the popup by clicking the child node.When trigger contains click, contextMenu, the default is true. otherwise false
     */
    clickToClose?: boolean;
    /**
     * @zh 是否在点击空白处（触发节点和弹出框以外的区域）时关闭弹出层。 关闭时会触发 `onVisibleChange`。默认是在冒泡阶段触发该逻辑，可设置 `{ capture: true }` 指定捕获阶段触发
     * @en Whether to allow close the popup by clicking the area outside the child node and the popup box.By default, this logic is triggered in the bubbling phase. You can set `{ capture: true }` to specify the triggering phase in the capture phase.
     * @defaultValue true
     * @version `{ capture: boolean }` in `2.55.0`
     */
    clickOutsideToClose?: boolean | {
        capture: boolean;
    };
    /**
     * @zh 是否允许按 `ESC` 键关闭弹出框。
     * @en Whether to allow close the popup by pressing `ESC`.
     */
    escToClose?: boolean;
    /**
     * @zh 是否在容器滚动时关闭弹出框
     * @en Whether to close the popup when the container is scrolled
     * @version 2.34.0
     */
    containerScrollToClose?: boolean;
    /**
     * @zh 按钮点击事件（`trigger` 包含 `click` 时生效）
     * @en Callback when click the child node. (Only work when `trigger` contains `click`)
     */
    onClick?: (e: any) => void;
    /**
     * @zh 点击触发节点和弹出框以外的区域的回调。
     * @en Callback when click the area outside the child and the popup
     */
    onClickOutside?: Function;
    /**
     * @zh
     * 调整弹出框的位置，有四个属性值，`left`, `right`, `top`, `bottom`，分别表示向该方向移动几个像素。
     * 具体可查看 [示例](/react/components/trigger#设置弹窗位置偏移量)
     * @en
     * Adjust the position of the popup. Indicates moving a few pixels in one direction. [example](/react/en-US/components/trigger#popupAlign)
     * @defaultValue {}
     */
    popupAlign?: {
        left?: number | [number, number];
        right?: number | [number, number];
        top?: number | [number, number];
        bottom?: number | [number, number];
    };
    /**
     * @zh 默认弹出框开启或关闭
     * @en Whether the popup is visible by default
     */
    defaultPopupVisible?: boolean;
    /**
     * @zh 设置弹出框开启或关闭
     * @en Whether the popup is visible
     */
    popupVisible?: boolean;
    /**
     * @zh 显示或隐藏时触发的回调
     * @en Callback when the visibility of the popup is changed
     */
    onVisibleChange?: (visible: boolean) => void;
    /**
     * @zh 当内容发生变化导致内容区域尺寸发生变化，自动进行重新定位。
     * @en Whether to automatically reposition when the popup's size changes.
     * @defaultValue true
     */
    autoFixPosition?: boolean;
    /**
     * @zh 是否展示箭头元素
     * @en Whether to display arrow node
     */
    showArrow?: boolean;
    /**
     * @zh 箭头元素的所有 html 参数
     * @en The html attributes of the arrow node
     */
    arrowProps?: HTMLAttributes<HTMLDivElement>;
    /**
     * @zh 是否在容器滚动时更新弹出框的位置
     * @en Whether to update the popover's position when the container is scrolled
     * @version 2.32.0
     */
    updateOnScroll?: boolean;
    children?: ReactNode;
    getTargetDOMNode?: () => HTMLElement;
    __onExit?: (event: any) => void;
    __onExited?: (event: any) => void;
}
export declare type MouseLocationType = {
    clientX: number;
    clientY: number;
};
