import type { State as PopperState } from "@popperjs/core";
import { AbstractPureComponent } from "../../common";
import { type PopoverProps } from "./popoverProps";
import type { DefaultPopoverTargetHTMLProps } from "./popoverSharedProps";
export interface PopoverState {
    hasDarkParent: boolean;
    isClosingViaEscapeKeypress: boolean;
    isOpen: boolean;
}
/**
 * Popover component, used to display a floating UI next to and tethered to a target element.
 *
 * @template T target element props interface. Consumers wishing to stay in sync with Blueprint's default target HTML
 * props interface should use the `DefaultPopoverTargetHTMLProps` type (although this is already the default type for
 * this type param).
 * @see https://blueprintjs.com/docs/#core/components/popover
 */
export declare class Popover<T extends DefaultPopoverTargetHTMLProps = DefaultPopoverTargetHTMLProps> extends AbstractPureComponent<PopoverProps<T>, PopoverState> {
    static displayName: string;
    static defaultProps: PopoverProps;
    state: PopoverState;
    /**
     * DOM element that contains the popover.
     * When `usePortal={true}`, this element will be portaled outside the usual DOM flow,
     * so this reference can be very useful for testing.
     *
     * @public for testing
     */
    popoverElement: HTMLElement | null;
    /** Popover ref handler */
    private popoverRef;
    /**
     * Target DOM element ref.
     *
     * N.B. this must be a ref object since we pass it to `<ResizeSensor>`, which needs to know about the target
     * DOM element in order to observe its dimensions.
     *
     * @public for testing
     */
    targetRef: import("react").RefObject<HTMLElement>;
    /**
     * Overlay2 transition container element ref.
     */
    private transitionContainerElement;
    private cancelOpenTimeout?;
    private isMouseInTargetOrPopover;
    private lostFocusOnSamePage;
    private popperScheduleUpdate?;
    private isControlled;
    private isArrowEnabled;
    private isHoverInteractionKind;
    private getPopoverElement;
    private getIsOpen;
    render(): import("react/jsx-runtime").JSX.Element | null;
    componentDidMount(): void;
    componentDidUpdate(props: PopoverProps<T>, state: PopoverState): void;
    protected validateProps(props: PopoverProps<T>): void;
    /**
     * Instance method to instruct the `Popover` to recompute its position.
     *
     * This method should only be used if you are updating the target in a way
     * that does not cause it to re-render, such as changing its _position_
     * without changing its _size_ (since `Popover` already repositions when it
     * detects a resize).
     */
    reposition: () => Promise<Partial<PopperState> | null> | undefined;
    private renderTarget;
    private renderPopover;
    private getPopperModifiers;
    private handleTargetFocus;
    private handleTargetBlur;
    private handleTargetContextMenu;
    private handleMouseEnter;
    private handleMouseLeave;
    private handlePopoverClick;
    private handleOverlayClose;
    private handleKeyDown;
    private handleTargetClick;
    private isSimulatedButtonClick;
    private setOpenState;
    private updateDarkParent;
    private isElementInPopover;
    private getIsContentEmpty;
}
