import { EventEmitter } from '../../stencil-public-runtime';
import { PlacementType } from "../../utils/types";
import { PdsPopoverEventDetail } from './popover-interface';
/**
 * @slot trigger - The trigger element for the popover
 * @slot (default) - The content to display inside the popover
 */
export declare class PdsPopover {
    /**
     * Reference to the Host element
     */
    el: HTMLPdsPopoverElement;
    /**
     * Determines when the popover is active
     * @defaultValue false
     */
    active: boolean;
    /**
     * Tracks if the component is still mounted to prevent memory leaks
     */
    private isComponentMounted;
    /**
     * Reference to the trigger element
     */
    private triggerEl;
    /**
     * Portal element rendered in document.body
     */
    private portalEl;
    /**
     * Guard to prevent repositioning loops
     */
    private isRepositioning;
    /**
     * Debounce timers for performance optimization
     */
    private scrollDebounceTimer;
    private resizeDebounceTimer;
    /**
     * Track moved nodes and their placeholders for restoration
     */
    private movedNodes;
    /**
     * Timestamp when popover was opened (for preventing immediate close)
     */
    private openTimestamp;
    /**
     * Instance counter for unique IDs
     */
    private static instanceCounter;
    /**
     * Bound handlers for cleanup
     */
    private boundClickOutsideHandler;
    private boundEscapeKeyHandler;
    private boundScrollHandler;
    private boundResizeHandler;
    /**
     * Emitted when the popover is opened
     */
    pdsPopoverOpen: EventEmitter<PdsPopoverEventDetail>;
    /**
     * Emitted when the popover is closed
     */
    pdsPopoverClose: EventEmitter<PdsPopoverEventDetail>;
    /**
     * Determines the action that triggers the popover. For manual popovers, the consumer is responsible for toggling this value.
     * @defaultValue "show"
     */
    popoverTargetAction: 'show' | 'toggle' | 'hide';
    /**
     * Determines the type of popover. Auto popovers can be "light dismissed" by clicking outside of the popover.
     * Manual popovers require the consumer to handle the visibility of the popover.
     */
    popoverType: 'auto' | 'manual';
    /**
     * A unique identifier used for the underlying component `id` attribute.
     */
    componentId: string;
    /**
     * Sets the maximum width of the popover content
     * @defaultValue 352
     */
    maxWidth?: number;
    /**
     * Determines the preferred position of the popover
     * @defaultValue "right"
     */
    placement: PlacementType;
    componentDidLoad(): void;
    /**
     * Handles changes to the trigger slot
     */
    private handleTriggerSlotChange;
    /**
     * Handles changes to the default slot (popover content)
     * When the popover is active, re-sync content with portal to handle dynamic updates
     */
    private handleContentSlotChange;
    /**
     * Handles clicks on the trigger element
     */
    private handleTriggerClick;
    disconnectedCallback(): void;
    /**
     * Clears any pending debounce timers
     */
    private clearDebounceTimers;
    private createPortal;
    /**
     * Adds Pine design system focus styles and dark mode border to the portal element
     * Uses CSS variables from Pine's design tokens
     */
    private addPortalFocusStyles;
    /**
     * Moves slot content into portal (preserves event handlers and component instances)
     */
    private updatePortalContent;
    /**
     * Restores moved nodes back to their original positions
     */
    private restorePortalContent;
    private removePortal;
    /**
     * Opens the popover programmatically
     */
    show(): Promise<void>;
    /**
     * Closes the popover programmatically
     */
    hide(): Promise<void>;
    /**
     * Toggles the popover open/closed state programmatically
     */
    toggle(): Promise<void>;
    /**
     * Adds light dismiss listeners (click outside and escape key)
     */
    private addLightDismissListeners;
    /**
     * Removes light dismiss listeners
     */
    private removeLightDismissListeners;
    /**
     * Adds scroll and resize listeners for repositioning
     */
    private addScrollAndResizeListeners;
    /**
     * Removes scroll and resize listeners
     */
    private removeScrollAndResizeListeners;
    /**
     * Handles clicks outside the popover for light dismiss (auto type only)
     */
    private handleClickOutside;
    /**
     * Returns focus to the trigger element with visible focus indicator
     * This ensures focus rings/outlines are shown as they would be with keyboard navigation
     */
    private returnFocusToTrigger;
    /**
     * Handles escape key press to close the popover
     * Mirrors native Popover API: Escape closes and returns focus to trigger
     */
    private handleEscapeKey;
    /**
     * Handles scroll events to reposition the popover (debounced for performance)
     */
    private handleScroll;
    /**
     * Handles resize events to reposition the popover (debounced for performance)
     */
    private handleResize;
    /**
     * Positions the popover relative to its trigger element
     */
    private handlePopoverPositioning;
    render(): any;
}
