import { FoundationElement } from '@ni/fast-foundation';
import { ButtonAppearance, ButtonAppearanceVariant, MenuButtonPosition } from './types';
import type { ToggleButton } from '../toggle-button';
import type { ButtonPattern } from '../patterns/button/types';
import type { AnchoredRegion } from '../anchored-region';
declare global {
    interface HTMLElementTagNameMap {
        'nimble-menu-button': MenuButton;
    }
}
/**
 * A nimble-styled menu button control.
 */
export declare class MenuButton extends FoundationElement implements ButtonPattern {
    appearance: ButtonAppearance;
    appearanceVariant: ButtonAppearanceVariant;
    disabled: boolean;
    contentHidden: boolean;
    tabIndex: number;
    /**
     * Specifies whether or not the menu is open.
     */
    open: boolean;
    /**
     * Configures where the menu should be placed relative to the button that opens the menu.
     */
    position: MenuButtonPosition;
    /** @internal */
    readonly toggleButton?: ToggleButton;
    /** @internal */
    readonly region?: AnchoredRegion;
    /** @internal */
    readonly slottedMenus?: HTMLElement[];
    /**
     * Used to maintain the internal state of whether the last menu item should be focused instead
     * of the first menu item the next time the menu is opened.
     */
    private focusLastItemWhenOpened;
    disconnectedCallback(): void;
    toggleButtonChanged(_prev: ToggleButton | undefined, _next: ToggleButton | undefined): void;
    regionChanged(prev: AnchoredRegion | undefined, _next: AnchoredRegion | undefined): void;
    openChanged(_prev: boolean | undefined, _next: boolean): void;
    regionLoadedHandler(): void;
    focusoutHandler(e: FocusEvent): boolean;
    toggleButtonCheckedChangeHandler(e: Event): boolean;
    toggleButtonKeyDownHandler(e: KeyboardEvent): boolean;
    menuKeyDownHandler(e: KeyboardEvent): boolean;
    private setOpen;
    private getMenu;
    private isSlotElement;
    private focusMenu;
    private focusLastMenuItem;
    private readonly menuChangeHandler;
}
export declare const menuButtonTag = "nimble-menu-button";
