import type { IElementRef, OnCreate, OnDestroy } from '@melodicdev/core';
import type { Placement } from '../../../types/index.js';
/**
 * ml-dropdown - Dropdown menu component
 *
 * @example
 * ```html
 * <ml-dropdown>
 *   <ml-button slot="trigger">Options</ml-button>
 *   <ml-dropdown-item value="edit" icon="pencil">Edit</ml-dropdown-item>
 *   <ml-dropdown-item value="delete" icon="trash" destructive>Delete</ml-dropdown-item>
 * </ml-dropdown>
 * ```
 *
 * @slot trigger - The element that toggles the dropdown
 * @slot default - Menu items, groups, and separators
 * @fires ml:select - Emitted when an item is selected, detail: { value }
 * @fires ml:open - Emitted when the menu opens
 * @fires ml:close - Emitted when the menu closes
 */
export declare class DropdownComponent implements IElementRef, OnCreate, OnDestroy {
    elementRef: HTMLElement;
    /** Menu placement relative to trigger */
    placement: Placement;
    /** Gap between trigger and menu in px */
    offset: number;
    /** Show arrow pointing to trigger */
    arrow: boolean;
    /** Current open state */
    isOpen: boolean;
    private _focusedIndex;
    private _cleanupAutoUpdate;
    onCreate(): void;
    onDestroy(): void;
    /** Open the menu */
    open(): void;
    /** Close the menu */
    close(): void;
    /** Toggle the menu */
    toggle: () => void;
    private readonly handleToggle;
    private readonly handleItemSelect;
    private readonly handleKeyDown;
    private getNavigableItems;
    private focusFirstItem;
    private focusNextItem;
    private focusPreviousItem;
    private focusItemAtIndex;
    private clearFocus;
    private findFirstEnabled;
    private findLastEnabled;
    private returnFocusToTrigger;
    private startPositioning;
    private updatePosition;
    private positionArrow;
    private getTriggerEl;
    private getMenuEl;
}
//# sourceMappingURL=dropdown.component.d.ts.map