import type { Ref } from '@vue/composition-api';
import type { LNode } from '../../common.type';
import type VMenu from './v-menu';
export interface TypeMenuProps {
    collapsed?: boolean;
    expanded?: Array<MenuValue>;
    defaultExpanded?: Array<MenuValue>;
    expandMutex?: boolean;
    expandType?: 'normal' | 'popup';
    logo?: LNode;
    operations?: LNode;
    theme?: 'light' | 'dark';
    value?: MenuValue;
    defaultValue?: MenuValue;
    width?: string | number | Array<string | number>;
    onChange?: (value: MenuValue) => void;
    onExpand?: (value: Array<MenuValue>) => void;
}
export interface TypeHeadMenuProps {
    expanded?: Array<MenuValue>;
    defaultExpanded?: Array<MenuValue>;
    expandType?: 'normal' | 'popup';
    logo?: LNode;
    operations?: LNode;
    theme?: 'light' | 'dark';
    value?: MenuValue;
    defaultValue?: MenuValue;
    onChange?: (value: MenuValue) => void;
    onExpand?: (value: Array<MenuValue>) => void;
}
export interface TypeSubmenuProps {
    content?: string | LNode;
    default?: string | LNode;
    disabled?: boolean;
    icon?: LNode;
    title?: string | LNode;
    value?: MenuValue;
}
export interface TypeMenuItemProps {
    content?: string | LNode;
    default?: string | LNode;
    disabled?: boolean;
    href?: string;
    icon?: LNode;
    replace?: boolean;
    router?: Record<string, any>;
    target?: '_blank' | '_self' | '_parent' | '_top';
    to?: MenuRoute;
    value?: MenuValue;
    onClick?: (context: {
        e: MouseEvent;
    }) => void;
}
export interface TypeMenuGroupProps {
    title?: string | LNode;
}
export declare type MenuValue = string | number;
export interface MenuRoute {
    path?: string;
    name?: string;
    hash?: string;
    query?: MenuQueryData;
    params?: MenuQueryData;
}
export interface MenuQueryData {
    [key: string]: string | string[];
}
export declare type TypeOpenType = 'add' | 'remove';
export interface TypeMenuInterface {
    activeValue: Ref<MenuValue>;
    activeValues: Ref<MenuValue[]>;
    expandValues?: Ref<MenuValue[]>;
    mode: Ref<string>;
    theme?: Ref<string>;
    isHead: boolean;
    vMenu?: VMenu;
    select: (val: MenuValue) => void;
    open?: (val: MenuValue, type?: TypeOpenType) => boolean | void;
}
export interface TypeSubMenuInterface {
    value: MenuValue;
    hasIcon?: boolean;
}
