import * as React from 'react';
import { ReactNode, CSSProperties } from 'react';
import { OverlayShowParams } from '../InfiniteTable';
export type ConstrainToType = ((node: HTMLElement) => HTMLElement) | string;
export declare const getConstrainElement: (target: HTMLElement, constrainTo?: ConstrainToType) => HTMLElement;
export declare const getConstrainRect: (target: HTMLElement, constrainTo?: ConstrainToType) => import("../utils/getAvailableSizeInfo").BoundingClientRect;
export interface OverlayTriggerProps extends React.HTMLAttributes<HTMLElement> {
    opacityTransitionDuration?: string | number;
    children: React.ReactNode;
    visible?: boolean;
    showTriangle?: boolean;
    preventPortalEventPropagation?: boolean;
    style?: CSSProperties;
    onVisibleChange?: (visible: boolean) => void;
    showEvent?: 'click' | 'mousedown' | 'mouseenter' | 'focus';
    target?: (overlayNode: HTMLElement) => HTMLElement;
    hideEvent?: 'mouseleave' | 'blur';
    hideDelay?: number;
    render: (config: {
        targetWidth: number;
    }) => ReactNode;
    targetOffset?: number;
    anchor?: 'vertical' | 'horizontal';
    alignPosition?: OverlayShowParams['alignPosition'];
    constrainTo?: ConstrainToType;
    shouldHide?: (hideEvent: React.MouseEvent | React.FocusEvent) => boolean;
}
export declare const ensurePortalElement: () => HTMLElement;
declare const OverlayTrigger: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<{
    show: () => any;
    hide: () => any;
}>>;
export default OverlayTrigger;
