export type SelectOption = {
    value: string;
    label: string;
    disabled?: boolean;
};
interface SelectState {
    options: SelectOption[];
    isMultiple: boolean;
    focusIndex: number;
    placeholder: string;
}
type ResizeCallback = (width: number, height: number, element: Element) => void;
export declare class SUISelectElement extends HTMLElement {
    readonly CONSTANTS: {
        OPTION_HEIGHT: number;
        BORDER_SIZE: number;
        MARGIN: number;
        BADGE_PADDING: number;
    };
    observerMap: WeakMap<Element, {
        observer: ResizeObserver;
        callback: ResizeCallback;
    }>;
    state: SelectState;
    button: HTMLButtonElement | undefined;
    dropdown: HTMLDivElement | undefined;
    select: HTMLSelectElement | undefined;
    constructor();
    connectedCallback(): void;
    private observeResize;
    private unobserveResize;
    private isVisible;
    getDropdownPosition: (element: HTMLElement) => {
        isAbove: boolean;
        customRect: {
            top: number;
            bottom: number;
            left: number;
            right: number;
            width: number;
            x: number;
            y: number;
            height: number;
        };
    };
    private closeDropdown;
    private openDropdown;
    createSelectBadge: (value: string, label: string) => HTMLSpanElement;
    private measureBadgesWidth;
    private handleBadgeOverflow;
    updateLabel: () => void;
    private deselectMultiOption;
    recomputeOptions: () => void;
    getInteractiveOptions: () => HTMLLIElement[];
    private handleOptionSelect;
    private handleContainerClick;
    handleSelectKeyDown: (e: KeyboardEvent) => void;
}
export {};
