import React from 'react';
import { Placement } from './placement';
export declare type PositionRect = Omit<DOMRect, 'toJSON'>;
declare const defaultProps: {
    trigger: string;
    defaultVisible: boolean;
    placement: string;
    showDelay: number;
    hideDelay: number;
    offset: number;
    showArrow: boolean;
    transitionClassName: string;
    transitionTimeout: number;
    name: string;
};
export interface TriggerProps {
    /**
     * @description.zh-CN 提示内容
     * @description.en-US trigger content
     */
    content?: React.ReactNode;
    /**
     * @description.zh-CN 触发提示框的方式
     * @description.en-US trigger mode
     * @default 'hover'
     */
    trigger?: 'hover' | 'click';
    /**
     * @description.zh-CN 提示框出现的方位
     * @description.en-US trigger position
     * @default 'bottom'
     */
    placement?: Placement;
    /**
     * @description.zh-CN 是否默认显示
     * @description.en-US position of the trigger relative to the target
     * @default true
     */
    defaultVisible?: boolean;
    /**
     * @description.zh-CN 是否显示
     * @description.en-US set visible as default
     * @default false
     */
    visible?: boolean;
    /**
     * @description.zh-CN 当提示框状态改变时触发
     * @description.en-US call when visibility of the trigger is changed
     */
    onVisibleChange?: (visible: boolean) => void;
    /**
     * @description.zh-CN 在提示显示前的延迟
     * @description.en-US delay before trigger is shown
     * @default 50
     */
    showDelay?: number;
    /**
     * @description.zh-CN 关闭提示前的延迟
     * @description.en-US delay before trigger is hidden (only work in 'hover' mode)
     * @default 50
     */
    hideDelay?: number;
    /**
     * @description.zh-CN 是否显示箭头
     * @description.en-US show arrow icon
     * @default true
     */
    showArrow?: boolean;
    /**
     * @description.zh-CN 提示框与目标之间的偏移
     * @description.en-US distance between pop-up and target
     * @default 'hover'
     */
    offset?: number;
    /**
     * @description.zh-CN 浮层渲染父节点，默认渲染到 body 上
     * @description.en-US layer parent node, render in body layerElement default
     * @default () => document.body;
     */
    getLayerContainer?: (trigger?: HTMLElement | null) => HTMLElement;
    /**
     * @description.zh-CN 弹出框的类名
     * @description.en-US tclassName of layer box
     */
    layerClassName?: string;
    /**
     * @description.zh-CN 渐变的类名，提供后可以自定义渐变效果
     * @description.en-US className of `CSSTransition`, for custom transition
     * @default 'ultra-trigger-layer-fade'
     */
    transitionClassName?: string;
    /**
     * @description.zh-CN 渐变的持续的时间，尽量和 css 中的保持一致，此值将提供给 `CSSTransition`
     * @description.en-US timeout of `CSSTransition`, be best set to same as transition duration in css
     * @default 300
     */
    transitionTimeout?: number;
    name?: string;
    id?: string;
    children?: React.ReactNode;
    /**
     * @description.zh-CN 自定义触发元素，不仅仅是通过 children
     * @description.en-US custom trigger element, not only by children
     */
    triggerRef?: React.RefObject<HTMLElement | null>;
    /**
     * @description.zh-CN 完全自定义 layer 位置等其他 css 信息
     * @description.en-US fully customize the layer position and other CSS information
     */
    layerStyle?: React.CSSProperties;
}
export interface TriggerRef {
    layerElement?: HTMLElement;
    update: () => void;
    visible: boolean;
    changeVisible: (visible: boolean) => void;
}
export declare type MergedTriggerProps = typeof defaultProps & TriggerProps;
declare const Trigger: React.ForwardRefExoticComponent<TriggerProps & {
    children?: React.ReactNode;
} & React.RefAttributes<TriggerRef>>;
export default Trigger;
