import { ReactElement, HTMLAttributes, ReactNode } from 'react';
export type PopoverPlacement = "top" | "bottom" | "left" | "right";
export interface PopoverProps {
    /**
     * The rich content rendered inside the popover panel.
     * Can include interactive elements (buttons, links, forms).
     */
    content: ReactNode;
    /**
     * Preferred placement relative to the trigger.
     * Flips automatically when there is not enough viewport space.
     * Defaults to `"bottom"`.
     */
    placement?: PopoverPlacement;
    /**
     * Whether the popover is open (controlled mode).
     * Omit to use uncontrolled mode where the trigger toggles it.
     */
    open?: boolean;
    /**
     * Called when the popover requests to be closed
     * (Escape key, outside click, or trigger click while open).
     */
    onClose?: () => void;
    /**
     * Called when open state should change (controlled mode).
     */
    onOpenChange?: (open: boolean) => void;
    /**
     * The trigger element. Must be a single React element that can
     * receive `ref` and click/keyboard event props.
     */
    children: ReactElement<HTMLAttributes<HTMLElement>>;
}
/**
 * Floating panel anchored to a trigger element.
 *
 * Unlike `Tooltip`, a Popover can contain rich interactive content
 * (menus, forms, details). It follows the Adwaita `GtkPopover` pattern.
 *
 * - Supports both controlled (`open` + `onClose`) and uncontrolled modes.
 * - Auto-positions with viewport-aware flip.
 * - Closes on Escape, outside click, or trigger re-click.
 * - Focus is moved into the panel on open; returns to the trigger on close.
 * - `aria-haspopup="dialog"` + `aria-expanded` wired to the trigger.
 * - `role="dialog"` on the panel with `aria-labelledby` when a heading is present.
 *
 * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Popover.html
 */
export declare function Popover({ content, placement: preferredPlacement, open: controlledOpen, onClose, onOpenChange, children, }: PopoverProps): import("react/jsx-runtime").JSX.Element;
