import { Constraints, Position } from "./position";
export interface PopupControllerOptions {
    /**
     * The element to use as the anchor for the popup.
     */
    anchor: HTMLElement;
    closeOnClick?: boolean;
    closeOnEsc?: boolean;
    blockPageScroll?: boolean;
    onClose?: (ctrl: PopupController) => void;
    onOpen?: (ctrl: PopupController) => void;
    root?: HTMLElement;
}
interface PopupControllerContext {
    element: HTMLElement;
    constraints: Constraints;
    /**
     * The computed position details
     */
    position?: Position;
    cleanup: () => void;
}
export declare class PopupController {
    options: PopupControllerOptions;
    root: HTMLElement;
    scrollableParents: HTMLElement[];
    visibleClientRect: DOMRect | null;
    context?: PopupControllerContext;
    constructor(options: PopupControllerOptions);
    get anchor(): HTMLElement;
    private registerListeners;
    open(element: HTMLElement, constraints: Constraints): void;
    tryOpen(element: HTMLElement, constraints: Constraints): void;
    close(): void;
    tryClose(): void;
    get isOpen(): boolean;
    update(): void;
    createPopupElement(): HTMLDivElement;
}
export {};
//# sourceMappingURL=PopupController.d.ts.map