import { CSSProperties, RefObject, HTMLProps } from 'react';
import { FloatingContext, MiddlewareData, Placement } from '@floating-ui/react';
import { PopoverRole } from '../Popover';
export type PopoverContextProps = {
    /** Context object from useFloating; required by FloatingFocusManager and interaction hooks. */
    floatingContext: FloatingContext;
    /** Callback refs from useFloating; setReference for the trigger, setFloating for the content. */
    refs: {
        setReference: (node: Element | null) => void;
        setFloating: (node: HTMLElement | null) => void;
    };
    /** Inline positioning styles from useFloating; applied to the content element. */
    floatingStyles: CSSProperties;
    /** Middleware output from useFloating; used for arrow positioning via middlewareData.arrow. */
    middlewareData: MiddlewareData;
    /** Merged prop getter for the trigger; spreads ARIA attributes and event handlers. */
    getReferenceProps: (userProps?: HTMLProps<Element>) => Record<string, unknown>;
    /** Merged prop getter for the content; spreads ARIA attributes and event handlers. */
    getFloatingProps: (userProps?: HTMLProps<HTMLElement>) => Record<string, unknown>;
    /** Auto-generated id for the trigger element; used as the default aria-labelledby on content. */
    triggerId: string;
    /** Current open/closed state. */
    openState: boolean;
    /** Opens the popover. */
    openPopover: () => void;
    /** Closes the popover. Fires onClose unless opened via hover. */
    closePopover: () => void;
    /** Whether the open state is externally controlled. */
    controlled: boolean;
    /** Resolved placement after flip/shift middleware; may differ from the placement prop. */
    actualPlacement: Placement;
    /** Ref attached to the arrow span element inside PopoverContent. */
    arrowRef: RefObject<HTMLSpanElement>;
    /** Whether the most recent close was keyboard-driven (e.g. Escape); drives the focus ring on the returned-to trigger. */
    closedViaKeyboardRef: RefObject<boolean>;
    /** Whether the most recent close was FloatingFocusManager's non-modal Tab-out guard (reported via a FocusEvent); tells the focus-return effect to reclaim focus even though the browser's native Tab has already moved it past the trigger. */
    closedViaTabOutRef: RefObject<boolean>;
    /** Clears closedViaKeyboardRef/closedViaTabOutRef. Call once the focus-return effect has reacted to a close event, so a later unrelated re-run of that effect (while still closed) doesn't reuse a stale close-reason signal. */
    clearCloseReasonRefs: () => void;
    /** Whether the popover traps focus (modal) or closes on Tab-out (non-modal). Only applies when role is "dialog". */
    modal?: boolean;
    /** Whether the popover opens on hover/focus instead of click. Only applies when role is "dialog". */
    openOnHover: boolean;
    /** Whether to remove default padding from the content area. */
    noPadding?: boolean;
    /** Whether to show the arrow/caret indicator. */
    enableCaret?: boolean;
    /** The ARIA role of the popup. Drives FloatingFocusManager and ARIA attribute behavior. */
    role: PopoverRole;
};
export declare const PopoverContext: import('react').Context<PopoverContextProps | null>;
