import { ButtonHTMLAttributes } from 'react';
/** Behavior mode for the dropdown button. */
export type DropdownButtonBehavior = 'single' | 'multi';
/** Represents a selected menu item. */
export interface DropdownButtonSelectedItem {
    /** Unique identifier for the item. */
    id: string;
    /** Display text for the selected item. */
    text: string;
}
export interface DropdownButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'type' | 'children' | 'role'> {
    /** Unique identifier for the button, also used to derive related element IDs. */
    id: string;
    /**
     * Selection behavior:
     * - `'single'` shows selected item text inside the button.
     * - `'multi'` shows a leading badge with the count of selected items.
     * Defaults to `'single'`.
     */
    behavior?: DropdownButtonBehavior;
    /** The ID of the label element (`aria-labelledby`). */
    labelId: string;
    /** The ID of the associated menu (`aria-controls`). */
    menuId: string;
    /** Whether the associated menu is expanded. Maps to `aria-expanded`. */
    isExpanded?: boolean;
    /** Currently selected items. */
    selectedItems?: DropdownButtonSelectedItem[];
    /**
     * Disables the button using `aria-disabled` (not native `disabled`),
     * keeping it focusable per Arrow accessibility guidelines.
     */
    disabled?: boolean;
    /** Whether the field is in an invalid state. Maps to `aria-invalid`. */
    isInvalid?: boolean;
    /** ID(s) of element(s) describing this button (`aria-describedby`). */
    describedBy?: string;
    /** Enable inverse (dark background) styling via `data-inverse`. */
    inverse?: boolean;
    /** Force focus state for demos. */
    focused?: boolean;
}
//# sourceMappingURL=DropdownButton.types.d.ts.map