import type { Ref, ReactElement, ReactNode } from 'react';
import type { PopperProps } from 'react-popper';
import type { VirtualElement } from '@popperjs/core';
import type { BaseProps, ForwardProps } from '../../types';
import type { ConfigurationProps } from '../Configuration';
export type Delay = 'none' | 'short' | 'long';
export interface PopoverProps<Modifiers extends string = string> extends BaseProps {
    /** The DOM element or [virtual element](https://popper.js.org/docs/v2/virtual-elements) that the Popover is positioned in reference to. */
    target: Element | VirtualElement | null;
    /**
     * If true, the Popover will be visible.
     * @default true
     */
    show?: boolean;
    /**
     * If true, the Popover will render outside of the current DOM hierarchy in a [portal](https://reactjs.org/docs/portals.html).
     * @default true
     */
    portal?: boolean | ConfigurationProps['portalTarget'];
    /**
     * Delay on showing the Popover.
     * @default 'none'
     */
    showDelay?: Delay;
    /**
     * Delay on hiding the Popover.
     * @default 'none'
     */
    hideDelay?: Delay;
    /**
     * [React Popper Placement](https://popper.js.org/react-popper/v2/render-props/#placement)
     * @default 'bottom'
     */
    placement?: PopperProps<Modifiers>['placement'];
    /**
     * [React Popper Strategy](https://popper.js.org/react-popper/v2/render-props/#strategy)
     * @default 'absolute'
     */
    strategy?: PopperProps<Modifiers>['strategy'];
    /**
     * [React Popper Modifiers](https://popper.js.org/react-popper/v2/render-props/#modifiers)
     * @default []
     */
    modifiers?: PopperProps<Modifiers>['modifiers'];
    /**
     * If true, an arrow will visually identify from which element the Popover is rendered.
     * @default false
     */
    arrow?: boolean;
    /** The group that the Popover belongs to. Popovers in the same group will be closed when others open. */
    groupId?: string;
    /**
     * If true, the Popover will be visibly hidden when its target leaves the viewport.
     * @default false
     */
    hideOnTargetHidden?: boolean;
    /** Callback that runs when the popover is hidden */
    onHide?: () => void;
    /** Callback that runs when the popover is shown */
    onShow?: () => void;
    /** The content of the Popover. */
    children: ReactNode;
    /** The ref of the wrapping element. */
    ref?: Ref<HTMLDivElement>;
}
declare const Popover: <Modifiers extends string = string>(props: PopoverProps<Modifiers> & ForwardProps) => ReactElement | null;
export default Popover;
//# sourceMappingURL=Popover.d.ts.map