import { DropdownUtil } from "../../common/dropdown";
import { MenuUtils, type BaseMenuInput, type MenuState } from "../../common/menu-utils";
import type { MenuEvent } from "../ebay-menu/component";
import type { Input as EbayButtonInput } from "../ebay-button/index.marko";
import { WithNormalizedProps } from "../../global";
import type { AttrString } from "marko/tags-html";
export interface MenuButtonEvent {
    el?: Element;
    originalEvent?: Event;
    indexes?: number[];
    checked?: number[];
    checkedValues?: string[];
    /** @deprecated in v5 */
    index?: number;
}
interface MenuButtonInput extends BaseMenuInput, Omit<Marko.HTML.Span, `on${string}`> {
    "collapse-on-select"?: boolean;
    "prefix-id"?: string;
    variant?: "overflow" | "form" | "button" | "icon";
    borderless?: boolean;
    partiallyDisabled?: EbayButtonInput["partiallyDisabled"];
    priority?: "primary" | "secondary" | "tertiary" | "delete" | "none";
    size?: EbayButtonInput["size"];
    transparent?: boolean;
    "a11y-text"?: AttrString;
    disabled?: boolean;
    split?: string;
    "no-toggle-icon"?: boolean;
    label?: Marko.AttrTag<{
        renderBody?: Marko.Body;
    }>;
    "prefix-label"?: AttrString;
    icon?: Marko.AttrTag<{
        renderBody?: Marko.Body;
    }>;
    text?: AttrString;
    reverse?: boolean;
    strategy?: "absolute" | "fixed";
    "fix-width"?: boolean;
    "on-expand"?: (event: MenuButtonEvent) => void;
    "on-collapse"?: (event: MenuButtonEvent) => void;
    "on-change"?: (event: MenuButtonEvent) => void;
    "on-select"?: (event: MenuButtonEvent) => void;
    "on-mousedown"?: (event: MenuButtonEvent) => void;
}
export interface Input extends WithNormalizedProps<MenuButtonInput> {
}
export default class extends MenuUtils<Input, MenuState> {
    expander: any;
    dropdownUtil: DropdownUtil;
    onCreate(): void;
    toggleItemChecked(index: number, itemEl: Element | undefined, originalEvent?: Event): void;
    handleItemClick(index: number, e: Event, itemEl?: Element): void;
    handleMenuKeydown({ el, originalEvent, index }: MenuEvent): void;
    focus(): void;
    handleButtonEscape(): void;
    handleExpand(): void;
    handleCollapse(): void;
    handleMenuChange({ el, originalEvent, index }: MenuEvent): void;
    handleMenuSelect({ el, originalEvent, index }: MenuEvent): void;
    handleMousedown(originalEvent: MouseEvent, el: HTMLSpanElement): void;
    emitComponentEvent({ eventType, el, originalEvent, index, }: {
        eventType: string;
        el?: Element;
        originalEvent?: Event;
        index?: number;
    }): void;
    onInput(input: Input): void;
    onRender(): void;
    onMount(): void;
    onUpdate(): void;
    onDestroy(): void;
    _setupMakeup(): void;
    _cleanupMakeup(): void;
}
export {};
