import { LitElement } from 'lit';
export type PopoverOffset = 'sm' | 'md' | 'lg' | 'xl';
export interface PopoverProps {
    position?: 'top' | 'bottom' | 'left' | 'right';
    trigger?: 'click' | 'hover' | 'focus';
    delay?: number;
    offset?: PopoverOffset | null;
    noArrow?: boolean;
    open?: boolean;
}
declare const Popover_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
/**
 * A popover component for displaying rich interactive content anchored to a trigger element.
 *
 * Uses the native HTML Popover API for top-layer rendering, light dismiss (click-outside
 * and Escape for click triggers), and focus management. CSS anchor positioning handles
 * viewport-aware placement.
 *
 * For click triggers (`popover="auto"`), the browser provides:
 * - Light dismiss (Escape key and click-outside)
 * - Top-layer rendering (no z-index needed)
 * - Focus restoration on close
 * - `autofocus` support — add `autofocus` to an element inside `slot="content"`
 *   to have it receive focus when the popover opens
 *
 * @element btu-popover
 *
 * @fires {CustomEvent} btu-popover-show - Fired when the popover opens
 * @fires {CustomEvent} btu-popover-hide - Fired when the popover closes
 *
 * @cssprop --popover-color-background - Panel background color (default: var(--btu-theme-white))
 * @cssprop --popover-color-content - Panel text color (default: oklch(var(--btu-theme-gray-900)))
 * @cssprop --popover-border-radius - Panel corner radius (default: theme borderRadius.lg)
 * @cssprop --popover-offset - Gap between trigger and panel (default: 8px; see btu-popover-offset-{sm|md|lg|xl})
 * @cssprop --popover-arrow-size - Width/height of the pointer arrow (default: 8px)
 *
 * @slot trigger - The element that activates the popover
 * @slot content - Rich HTML content displayed inside the popover panel
 *
 * @example
 * ```html
 * <btu-popover position="bottom" trigger="click">
 *   <button slot="trigger">Open</button>
 *   <div slot="content">
 *     <h3>Title</h3>
 *     <p>Rich content here</p>
 *   </div>
 * </btu-popover>
 * ```
 */
export default class Popover extends Popover_base {
    /**
     * Position relative to the trigger element.
     * Auto-flips when constrained by the viewport.
     * @attr
     */
    position: 'top' | 'bottom' | 'left' | 'right';
    /**
     * How the popover is activated.
     * - 'click': Toggle on click with light dismiss
     * - 'hover': Show on mouseenter with delay
     * - 'focus': Show on focusin
     * @attr
     */
    trigger: 'click' | 'hover' | 'focus';
    /**
     * Show delay in milliseconds (hover trigger only).
     * @attr
     */
    delay: number;
    /**
     * Gap between trigger and popover (sm=4px, md=8px, lg=12px, xl=16px).
     * @attr
     */
    offset: PopoverOffset | null;
    /**
     * Hide the arrow pseudo-element.
     * @attr
     */
    noArrow: boolean;
    /**
     * Programmatic open/close state (reflected).
     * @attr
     */
    open: boolean;
    /**
     * Accessible label for the popover panel (applied as aria-label on the dialog).
     * @attr panel-label
     */
    panelLabel: string;
    /** @internal */
    private _panelEl;
    /** @internal */
    private _panelId;
    /** @internal */
    private _anchorName;
    /** @internal */
    private _showTimer;
    /** @internal */
    private _hideTimer;
    /** @internal */
    private _isVisible;
    /** @internal */
    private initialClasses;
    /** @internal bound listeners */
    private _onTriggerMouseEnter;
    private _onTriggerMouseLeave;
    private _onTriggerFocusIn;
    private _onTriggerFocusOut;
    private _onPanelMouseEnter;
    private _onPanelMouseLeave;
    private _onNativeToggle;
    private _onKeyDown;
    createRenderRoot(): this;
    connectedCallback(): void;
    disconnectedCallback(): void;
    willUpdate(): void;
    firstUpdated(): void;
    updated(changedProperties: Map<string | number | symbol, unknown>): void;
    /** @internal Creates the popover panel and moves slot="content" children into it */
    private _setupPanel;
    /** @internal */
    private _buildPanelClasses;
    /** @internal */
    private _getTriggerEl;
    /** @internal */
    private _bindTriggerListeners;
    /** @internal */
    private _unbindTriggerListeners;
    /** @internal */
    private _bindPanelListeners;
    /** @internal */
    private _unbindPanelListeners;
    /** @internal */
    private _show;
    /** @internal */
    private _hide;
    /** @internal Native toggle event — single source of truth for state changes */
    private _handleNativeToggle;
    /** @internal Escape dismisses for popover="manual" (hover/focus triggers) */
    private _handleKeyDown;
    /** @internal */
    private _clearShowTimer;
    /** @internal */
    private _clearHideTimer;
    /** @internal */
    private _clearTimers;
    /** @internal Hover trigger: show with delay */
    private _handleTriggerMouseEnter;
    /** @internal Hover trigger: hide with small delay for cursor travel */
    private _handleTriggerMouseLeave;
    /** @internal Focus trigger: show immediately */
    private _handleTriggerFocusIn;
    /** @internal Focus trigger: hide immediately */
    private _handleTriggerFocusOut;
    /** @internal Keep popover open when hovering the panel (hover trigger) */
    private _handlePanelMouseEnter;
    /** @internal Hide when mouse leaves the panel (hover trigger) */
    private _handlePanelMouseLeave;
}
declare global {
    interface HTMLElementTagNameMap {
        'btu-popover': Popover;
    }
}
export {};
//# sourceMappingURL=Popover.d.ts.map