import { type Placement, type MiddlewareData, type ComputePositionConfig, type Boundary } from '@floating-ui/dom';
export declare class PortalUtils {
    static calculateAvailableSpace(referenceElement: HTMLElement): {
        spaceAbove: number;
        spaceBelow: number;
        viewportHeight: number;
    };
    static getOptimalPlacement(referenceElement: HTMLElement): Placement;
    static findBoundaryElements(component: HTMLElement): Element[] | undefined;
    static calculateOptimalHeight(referenceRect: {
        x: number;
        y: number;
        width: number;
        height: number;
    }, viewportHeight: number, placement: Placement): number;
    static extractStylesAsCSS(styles: any): string;
    static generateStyleId(): string;
    static isPositioningOptimal(placement: Placement, referenceElement: HTMLElement): boolean;
    static applyCollisionData(element: HTMLElement, middlewareData: MiddlewareData, placement: Placement): void;
    static createFloatingUIMiddleware(boundary: Boundary, onSizeApply: (params: {
        availableWidth: number;
        availableHeight: number;
        elements: {
            floating: HTMLElement;
        };
        rects: {
            reference: {
                x: number;
                y: number;
                width: number;
                height: number;
            };
        };
    }) => void): ComputePositionConfig['middleware'];
}
export declare class PortalContentUtils {
    static createBaseListbox(component: any): HTMLElement;
    static addSearchSection(listbox: HTMLElement, component: any): void;
    static addLoadingSection(listbox: HTMLElement, component: any): void;
    static addOptionsSection(listbox: HTMLElement, component: any): void;
    static addNoResultsMessage(container: HTMLElement, component: any): void;
    static addClonedOptions(container: HTMLElement, component: any): void;
    static cloneOption(option: HTMLElement): HTMLElement;
    static copyOptionProperties(originalOption: HTMLElement, clonedOption: HTMLElement): void;
    static addFooterSection(listbox: HTMLElement, component: any): void;
    static addCustomFooter(container: HTMLElement, component: any): void;
    static createFooter(component: any): HTMLElement;
    static addShowSelectedToggle(footer: HTMLElement, component: any): void;
    static addClearAllButton(footer: HTMLElement, component: any): void;
    static updateClonedOptions(clonedListbox: HTMLElement, component: any): void;
    static updateClonedOption(originalOption: HTMLElement, clonedOption: HTMLElement): void;
    static updateClonedOptionAttributes(originalOption: HTMLElement, clonedOption: HTMLElement): void;
    static createPortalListbox(component: any): HTMLElement;
}
export declare class PortalEventUtils {
    static setupPortalEventListeners(clonedListbox: HTMLElement, component: any): void;
    static setupOptionClickListeners(clonedListbox: HTMLElement, component: any): void;
    static handleOptionClick(option: HTMLElement, component: any): void;
    static setupScrollListeners(clonedListbox: HTMLElement, component: any): void;
    static setupSearchListeners(clonedListbox: HTMLElement, component: any): void;
    static setupFooterListeners(clonedListbox: HTMLElement, component: any): void;
    static setupCustomFooterListeners(clonedListbox: HTMLElement, component: any): void;
    static setupFooterClickHandlers(footer: HTMLElement): void;
    static setupShowSelectedToggle(footer: HTMLElement, component: any): void;
    static setupClearAllHandler(footer: HTMLElement, component: any): void;
    static setupSlotListeners(clonedListbox: HTMLElement, component: any): void;
}
