/// <reference types="react" />
import { OverlayTriggerRef } from '../OverlayTrigger/OverlayTrigger.types';
import { BeforeCallback } from '../_hooks/DelayedCallback';
import { TriggerConfig } from '../_hooks/Trigger';
import { Placement } from '../_utils/placement';
import { AriaLabelled, Props } from '../_utils/types';
export interface PopoverContentProps {
    /**
     * @since 10.19.0
     */
    fluid?: boolean;
    /**
     * @since 10.19.0
     */
    placement?: Placement;
}
export declare type PopoverRole = 'dialog' | undefined;
export interface PopoverBaseProps<Role extends PopoverRole = undefined> extends Props {
    /**
     * Whether to show the overlay on initial render
     * @defaultValue false
     * @since 10.19.0
     */
    initialIsVisible?: boolean;
    /**
     * The tip we want to display
     * @since 10.19.0
     */
    overlay?: React.ReactElement<{
        placement?: Placement;
    }>;
    /**
     * Determines the position of the arrow
     * @defaultValue top
     * @since 10.19.0
     */
    placement?: Placement;
    /**
     * Return focus to trigger after the closing popover modal dialog
     * @a11y Should be set to true.
     * @defaultValue false
     * @since 11.8.0
     */
    restoreFocusOnHide?: boolean;
    /**
     * The event to trigger the overlay
     * @defaultValue click
     * @since 10.19.0
     */
    trigger?: TriggerConfig['trigger'];
    /**
     * Toggles overlay visibility
     * @since 11.2.0
     */
    overlayRef?: React.Ref<OverlayTriggerRef>;
    /**
     * @since 11.11.0
     */
    role?: Role;
    /**
     *  The callback to run before the overlay is hidden. Returning
     *  `false` will prevent hiding.
     * ```
     * (e: event) => boolean | Promise | undefined
     * ```
     * @since 11.15.0
     */
    beforeHide?: BeforeCallback;
    /**
     *  The callback to run before the overlay is shown. Returning
     *  `false` will prevent showing.
     * ```
     * (e: event) => boolean | Promise | undefined
     * ```
     * @since 11.15.0
     */
    beforeShow?: BeforeCallback;
}
export declare type PopoverProps<Role extends PopoverRole = undefined> = Role extends 'dialog' ? AriaLabelled<PopoverBaseProps<'dialog'>> : PopoverBaseProps<undefined>;
