import { ReactiveController, ReactiveControllerHost } from 'lit'; import { Placement } from '@floating-ui/dom'; export interface PopoverControllerConfig { getTriggerElement: () => HTMLElement | null; getFloatingElement: () => HTMLElement | null; getArrowElement: () => HTMLElement | null; onPlacementChange?: (placement: string) => void; } export interface PositionOptions { placement: Placement; distance: number; /** Offset along the cross axis, in pixels (e.g. to align a submenu's first item with its trigger). */ skidding?: number; fullWidth?: boolean; /** Floor the floating element's width at the trigger's width (`'trigger'`). */ minWidth?: 'trigger'; } type TriggerHandlers = { onPointerEnter?: (e: PointerEvent) => void; onPointerLeave?: (e: PointerEvent) => void; onFocusIn?: (e: FocusEvent) => void; onFocusOut?: (e: FocusEvent) => void; onClick?: (e: MouseEvent) => void; onKeyDown?: (e: KeyboardEvent) => void; }; export declare class PopoverController implements ReactiveController { private _host; private _config; private _cleanupAutoUpdate?; private _cleanupSafePolygon?; private _handlers?; private _triggerElement?; private _currentPlacement; constructor(host: ReactiveControllerHost & HTMLElement, config: PopoverControllerConfig); hostConnected(): void; hostDisconnected(): void; get currentPlacement(): string; updatePosition(options: PositionOptions): Promise; startPositioning(options: PositionOptions): void; stopPositioning(): void; handlePointerLeave(e: PointerEvent, onHide: () => void): void; cleanupSafePolygon(): void; addTriggerListeners(handlers: TriggerHandlers): void; removeTriggerListeners(triggerOverride?: HTMLElement | null): void; animateShow(el: HTMLElement, duration: number, keyframes?: Keyframe[]): Promise; animateHide(el: HTMLElement, duration: number, keyframes?: Keyframe[]): Promise; } export {}; //# sourceMappingURL=popover.d.ts.map