import type { SupportedAriaPopupRole } from "../../utils/SupportedAriaPopupRole";
interface UseDropdownButtonOptions {
    trapFocus: boolean;
    dropdownAriaRole: SupportedAriaPopupRole;
}
export declare function useDropdownButton(options: UseDropdownButtonOptions): DropdownButtonState;
interface UseOpenControlledDropdownButtonOptions extends UseDropdownButtonOptions {
    isOpen: boolean;
    setIsOpen: (value: boolean | ((prev: boolean) => boolean)) => void;
}
export declare function useOpenControlledDropdownButton({ trapFocus, dropdownAriaRole, setIsOpen, isOpen }: UseOpenControlledDropdownButtonOptions): DropdownButtonState;
export interface DropdownButtonState {
    isOpen: boolean;
    toggleDropdown: () => void;
    closeDropdown: (options?: CloseDropdownOptions) => void;
    buttonElement: HTMLElement | null;
    setButtonRef: (button: HTMLElement | null) => void;
    buttonAriaAttributes: ButtonAriaAttributes;
    setDropdownRef: (dropdown: HTMLElement | null) => void;
    dropdownAttributes: DropdownAttributes;
}
interface CloseDropdownOptions {
    moveFocusToButton?: boolean;
}
interface ButtonAriaAttributes {
    "aria-expanded": "true" | "false";
    "aria-haspopup": SupportedAriaPopupRole;
    "aria-controls": string | undefined;
}
interface DropdownAttributes {
    dropdownId: string;
    dropdownAriaAttributes: {
        role: SupportedAriaPopupRole;
    };
}
export {};
