import { TreeNode } from 'treemate';
import { VNodeChild } from 'vue';
export declare type Key = string | number;
export interface MenuOptionSharedPart {
    key?: Key;
    disabled?: boolean;
    icon?: () => VNodeChild;
    children?: Array<MenuOption | MenuGroupOption>;
    extra?: string | (() => VNodeChild);
    [key: string]: unknown;
    /** @deprecated */
    titleExtra?: string | (() => VNodeChild);
}
export interface MenuGroupOptionBase extends MenuOptionSharedPart {
    type: 'group';
    children?: Array<MenuOption | MenuGroupOption>;
}
export declare type MenuOption = (MenuOptionSharedPart & {
    /** @deprecated */
    title?: string | (() => VNodeChild);
}) | (MenuOptionSharedPart & {
    label?: string | (() => VNodeChild);
});
export declare type MenuGroupOption = (MenuGroupOptionBase & {
    /** @deprecated */
    title?: string | (() => VNodeChild);
}) | (MenuGroupOptionBase & {
    label?: string | (() => VNodeChild);
});
export declare type TmNode = TreeNode<MenuOption, MenuGroupOption>;
export declare type OnUpdateValue = (value: string & number & (string | number), item: MenuOption) => void;
export declare type OnUpdateKeys = (keys: string[] & number[] & Array<string | number>) => void;
export declare type OnUpdateValueImpl = (value: string | number | (string | number), item: MenuOption) => void;
export declare type OnUpdateKeysImpl = (keys: string[] | number[] | Array<string | number>) => void;
