import React from 'react';
import type { Placement } from './Placement';
import './HoverablePopover.css';
export interface IHoverablePopoverContentsProps extends IHoverablePopoverProps {
    hidePopover?: () => void;
}
export interface IHoverablePopoverProps extends React.HTMLProps<any> {
    /** The popover contents (simple mode) */
    value?: string;
    /** The popover contents (advanced mode) */
    Component?: React.ComponentType<IHoverablePopoverContentsProps>;
    /**
     * The popover contents (advanced mode)
     * @deprecated - use Component
     */
    template?: JSX.Element;
    placement?: Placement;
    /** a percent string between 0% and 100% */
    hOffsetPercent?: string;
    /** class to put on the popover content */
    className?: string;
    /** class to put on the wrapper element */
    wrapperClassName?: string;
    /** Rendered on the top of the popover content */
    title?: string;
    id?: string;
    /** Render popover contents into this container, or body if null */
    container?: JSX.Element | HTMLElement;
    delayShow?: number;
    delayHide?: number;
    onShow?: () => void;
    onHide?: () => void;
    svgMode?: boolean;
}
export interface IHoverablePopoverState {
    popoverIsOpen: boolean;
    animation: boolean;
    placementOverride?: Placement;
    PopoverRenderer?: React.ComponentType<IHoverablePopoverContentsProps>;
}
export declare class HoverablePopover extends React.Component<IHoverablePopoverProps, IHoverablePopoverState> {
    static defaultProps: Partial<IHoverablePopoverProps>;
    private mouseEvents$;
    private hidePopoverEvents$;
    private destroy$;
    private targetRef;
    constructor(props: IHoverablePopoverProps);
    componentWillUnmount(): void;
    componentDidMount(): void;
    private setPopoverOpen;
    private handleMouseEvent;
    private rendererRefCallback;
    private Wrapper;
    render(): JSX.Element;
}
