import { VNode, ShallowRef } from 'vue';
import { Key } from '../../../_util/type';
import { MenuProps } from '../Menu';
import { MenuDividerType as VcMenuDividerType, MenuItemGroupType as VcMenuItemGroupType, MenuItemType as VcMenuItemType, SubMenuType as VcSubMenuType } from '../interface';
import { StoreMenuInfo } from './useMenuContext';
export interface MenuItemType extends VcMenuItemType {
    danger?: boolean;
    icon?: VNode | ((item: MenuItemType) => VNode);
    title?: string;
}
export interface SubMenuType extends Omit<VcSubMenuType, 'children'> {
    icon?: VNode | ((item: SubMenuType) => VNode);
    children: ItemType[];
}
export interface MenuItemGroupType extends Omit<VcMenuItemGroupType, 'children'> {
    children?: MenuItemType[];
    key?: Key;
}
export interface MenuDividerType extends VcMenuDividerType {
    dashed?: boolean;
    key?: Key;
}
export type ItemType = MenuItemType | SubMenuType | MenuItemGroupType | MenuDividerType | null;
/**
 * We simply convert `items` to VueNode for reuse origin component logic. But we need move all the
 * logic from component into this hooks when in v4
 */
export default function useItems(props: MenuProps): {
    itemsNodes: ShallowRef<never[], never[]>;
    store: ShallowRef<Map<string, StoreMenuInfo>, Map<string, StoreMenuInfo>>;
    hasItmes: ShallowRef<boolean, boolean>;
};
