import type { ChangeEventHandler, Dispatch, JSXElementConstructor, MouseEventHandler, MutableRefObject, PropsWithChildren, ReactElement, Ref, RefObject } from 'react';
import type SvgIcon from '../SvgIcon/SvgIcon';
export type SubmenuActions = {
    type: SubmenuActionTypes.CloseAll;
} | {
    type: SubmenuActionTypes.CloseMenu;
} | {
    type: SubmenuActionTypes.OpenMenu;
} | {
    type: SubmenuActionTypes.RegisterMenu;
    id: string;
} | {
    type: SubmenuActionTypes.UnregisterMenu;
};
export declare enum SubmenuActionTypes {
    CloseAll = 0,
    OpenMenu = 1,
    CloseMenu = 2,
    RegisterMenu = 3,
    UnregisterMenu = 4
}
type SubmenuState = {
    id: string;
    ref: Ref<HTMLButtonElement>;
    show: boolean | undefined;
};
type UseSubmenuValues = [SubmenuState, Dispatch<SubmenuActions>];
export declare const useSubmenu: () => UseSubmenuValues;
type StartAdornmentProps = {
    checkbox?: never;
    color?: never;
    startAdornment?: JSXElementConstructor<unknown> | ReactElement;
} | {
    checkbox?: true;
    color?: ItemColor;
    startAdornment?: never;
};
export type ItemProps = {
    action?: boolean;
    'aria-label'?: string;
    'data-key'?: string;
    dataSet?: Record<string, string | undefined>;
    defaultChecked?: boolean;
    disabled?: boolean;
    endAdornment?: typeof SvgIcon;
    inset?: boolean;
    onChange?: ChangeEventHandler<HTMLInputElement>;
    onClick?: MouseEventHandler<HTMLButtonElement>;
    selectable?: boolean;
    selected?: boolean;
    value?: string;
    applyFocusRef?: RefObject<HTMLElement>;
} & StartAdornmentProps;
type ItemColor = 'danger' | 'primary' | 'secondary';
export type MenuItemDataRef = MutableRefObject<{
    checkbox?: boolean;
    disabled: boolean;
    hasSubmenu: boolean;
    textValue?: string;
}>;
declare function Item({ action, applyFocusRef, 'aria-label': label, checkbox, children, color, 'data-key': key, dataSet, defaultChecked, disabled, endAdornment, inset, onChange, onClick, selectable, selected, startAdornment: StartAdornment, value, }: PropsWithChildren<ItemProps>, ref: Ref<HTMLButtonElement>): JSX.Element;
export default Item;
