import { PropertyValues, TemplateResult } from 'lit';
import UiList from '../../list/internals/List.js';
import UiMenuItem from './MenuItem.js';
import UiSubMenu from './SubMenu.js';
import UiListItem from '../../list/internals/ListItem.js';
/**
 * Material Design 3 Menu component with sub-menu support.
 * Uses Popover API and Anchor Positioning API for modern positioning.
 *
 * @fires select - Dispatched when a menu item is selected
 * @fires close - Dispatched when the menu is closed
 */
export default class Menu extends UiList {
    /**
     * Whether the menu is currently open
     * @attribute
     */
    accessor open: boolean;
    /**
     * Whether the menu is disabled
     * @attribute
     */
    accessor disabled: boolean;
    /**
     * Currently active sub-menu
     */
    accessor activeSubMenu: UiSubMenu | null;
    /**
     * Assigned menu items from light DOM
     */
    protected accessor assignedMenuItems: UiMenuItem[];
    constructor();
    connectedCallback(): void;
    protected updated(changedProperties: PropertyValues<this>): void;
    togglePopover(force?: boolean): boolean;
    /**
     * Shows the menu
     */
    show(): void;
    /**
     * Hides the menu
     */
    hide(): void;
    positionMenu(): void;
    /**
     * Handles beforetoggle event from popover
     */
    protected handleBeforeToggle(e: Event): void;
    /**
     * Handles keyboard navigation for the menu
     */
    handleKeydown(e: KeyboardEvent): void;
    handleSubMenuSelect(e: CustomEvent): void;
    /**
     * Opens the sub-menu for the currently active item
     */
    protected openSubMenu(): void;
    /**
     * Closes the currently open sub-menu
     */
    closeSubMenu(): void;
    /**
     * Sets the active sub-menu
     */
    setActiveSubMenu(subMenu: UiSubMenu | null): void;
    notifySelect(item: UiListItem, index?: number): boolean;
    /**
     * Handles sub-menu opening
     */
    protected handleSubMenuOpen(e: CustomEvent): void;
    /**
     * Handles slot changes to update menu items
     */
    protected handleSlotChange(): void;
    render(): TemplateResult;
}
//# sourceMappingURL=Menu.d.ts.map