/**
 * Copyright Aquera Inc 2025
 *
 * This source code is licensed under the BSD-3-Clause license found in the
 * LICENSE file in the root directory of this source tree.
 */
import { CSSResultArray, PropertyValues } from 'lit';
import NileElement from '../internal/nile-element';
/**
 * Nile floating-panel component.
 *
 * A popover that supports rich content (title, body, actions).
 *
 * **Wrapper mode** (default): first child element is the trigger.
 * **For mode**: set `for="elementId"` to attach to an external element.
 *
 * @tag nile-floating-panel
 *
 * @fires nile-init   - Component initialized.
 * @fires nile-destroy - Component destroyed.
 * @fires nile-show   - Panel opened.
 * @fires nile-hide   - Panel closed.
 * @fires nile-after-show - Panel fully visible after animation.
 * @fires nile-after-hide - Panel fully hidden after animation.
 * @fires nile-toggle - Open/close transition (detail.open).
 * @fires nile-visibility-change - Hidden by scroll/tab change.
 */
export declare class NileFloatingPanel extends NileElement {
    private static _groups;
    private static _reducedMotionQuery;
    private static get prefersReducedMotion();
    static get styles(): CSSResultArray;
    protected createRenderRoot(): this;
    placement: 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'auto' | 'auto-start' | 'auto-end';
    trigger: string;
    distance: number;
    skidding: number;
    arrow: 'round' | 'default' | 'none';
    animation: string;
    duration: string | number | [number, number];
    delay: number | [number, number];
    interactive: boolean;
    interactiveBorder: number;
    maxWidth: string | number;
    zIndex: number;
    followCursor: boolean | 'initial' | 'horizontal' | 'vertical' | 'true' | 'false';
    hideOnClick: boolean | 'toggle';
    inertia: boolean;
    allowHTML: boolean;
    flip: boolean;
    for: string | null;
    open: boolean;
    preventOverlayClose: boolean;
    title: string;
    disabled: boolean;
    width?: string;
    height?: string;
    /** When set, only one panel in the same group can be open at a time. */
    group: string | null;
    /** Close the panel when Escape is pressed. */
    closeOnEscape: boolean;
    /** Custom CSS class(es) added to the Tippy popper element, allowing per-instance styling from the host. */
    panelClass: string;
    enableVisibilityEffect: boolean;
    enableTabClose: boolean;
    private tippyInstance;
    private visibilityManager?;
    private panelContainer;
    private anchorEl;
    private _suppressOpenWatch;
    private _panelId;
    private _boundEscHandler;
    private _pendingShowListener;
    private _pendingHideListener;
    protected firstUpdated(): void;
    disconnectedCallback(): void;
    updated(changed: PropertyValues): void;
    /** Programmatically shows the panel. Returns a promise that resolves after the show animation. */
    show(): Promise<void>;
    /** Programmatically hides the panel. Returns a promise that resolves after the hide animation. */
    hide(): Promise<void>;
    private _cleanupPendingShowListener;
    private _cleanupPendingHideListener;
    toggle(): void;
    refresh(): void;
    /** Returns the current resolved placement from Tippy/Popper. */
    getCurrentPlacement(): string;
    /** Returns true if the resolved placement matches the requested placement. */
    isPositioningOptimal(): boolean;
    private _joinGroup;
    private _leaveGroup;
    private _hideGroupSiblings;
    private _addEscListener;
    private _removeEscListener;
    private _handleEscapeKey;
    private _applyAria;
    private _syncAriaExpanded;
    private _buildDOM;
    private _resolveArrow;
    private _setOpen;
    private _getEffectiveDuration;
    private _getEffectiveAnimation;
    private _attachTippy;
    private _destroyTippy;
}
export default NileFloatingPanel;
declare global {
    interface HTMLElementTagNameMap {
        'nile-floating-panel': NileFloatingPanel;
    }
}
