import type { Slot } from 'vue';
declare type MenuValue = string | number;
declare type MenuNode = MenuValue | VMenuData;
interface VMenuData {
    value: MenuValue;
    parent?: MenuNode;
    children: VMenuData[];
    vnode?: Slot;
}
interface VMenuItem {
    value?: MenuValue;
    parent: MenuValue;
    vnode?: Slot;
}
export default class VMenu {
    data: VMenuData;
    cache: Set<VMenuData>;
    isMutex: import("vue").Ref<boolean>;
    expandValues: Set<MenuValue>;
    constructor(options: Record<string, any>);
    add(item: VMenuItem): void;
    select(val: MenuValue): MenuValue[];
    expand(val: MenuValue): MenuValue[];
    getChild(value: MenuValue): VMenuData[];
}
export {};
