import { FormatMessage, MenuDataItem, MenuMode } from "./typings";
import { MenuTheme, PureSettings } from "../settings";
import { VueNode, WithFalse } from "../typings";
import { ComponentPropsOptions } from '@vue/runtime-core';
export { MenuDataItem, IMenu } from "./typings";
/**
 * 菜单的数据的 render 方法
 */
export declare type MenuDataRender = (menuData: MenuDataItem[], props: AppMenuProps) => MenuDataItem[];
/**
 * 菜单名称渲染
 */
export declare type MenuTitleRender = (menu: MenuDataItem, defaultDom: VueNode, props: AppMenuProps) => VueNode;
/**
 * 菜单的 render 方法
 */
export declare type MenuRender = (menu: MenuDataItem, props: AppMenuProps) => VueNode;
/**
 * 菜单项的 render 方法
 */
export declare type MenuItemRender = (menu: MenuDataItem, defaultDom: VueNode, props: AppMenuProps) => VueNode;
/**
 * 拥有子菜单菜单项的 render 方法
 */
export declare type SubMenuItemRender = (menu: MenuDataItem, defaultDom: VueNode, props: AppMenuProps) => VueNode;
export interface AppMenuProps extends PureSettings {
    /**
     * 菜单模式
     * @see https://www.antdv.com/components/menu-cn/#API
     */
    mode?: MenuMode;
    /**
     * 菜单主题颜色
     */
    theme?: MenuTheme;
    /**
     * inline 模式菜单是否收起状态菜
     */
    collapsed?: boolean;
    /**
     * inline 模式的菜单缩进宽度
     */
    indent?: number;
    /**
     * 当前展开的 SubMenu 菜单项 key 数组
     */
    openKeys?: string[];
    /**
     * 当前选中的菜单项 key 数组
     */
    selectedKeys?: string[];
    /**
     * 国际化
     */
    i18n?: FormatMessage;
    /**
     * 是否移动端
     */
    isMobile?: boolean;
    /**
     * 菜单数据
     */
    menus?: MenuDataItem[];
    /**
     * 菜单面板收起/折叠回调事件
     * @param collapsed
     */
    collapse?: (collapsed: boolean) => void;
    /**
     * SubMenu 展开/关闭的回调
     * @param openKeys
     */
    /**
     * 菜单名称渲染
     * @param name
     * @param i18n
     */
    menuTitleRender?: MenuTitleRender;
    /**
     * 菜单的 render 方法
     * @param menu
     * @param i18n
     */
    menuRender?: WithFalse<MenuRender>;
    /**
     * 菜单项的 render 方法
     * @param menu
     * @param i18n
     */
    menuItemRender?: WithFalse<MenuItemRender>;
    /**
     * 拥有子菜单菜单项的 render 方法
     * @param menu
     * @param i18n
     */
    subMenuItemRender?: WithFalse<SubMenuItemRender>;
    /**
     * 菜单原生属性
     * @see https://2x.antdv.com/components/menu-cn/#Menu
     */
    menuProps?: Record<string, any>;
}
export declare const EVENT_UPDATE_OPEN_KEYS = "update:openKeys";
export declare const EVENT_UPDATE_SELECTED_KEYS = "update:selectedKeys";
export declare const DefaultAppMenuProps: ComponentPropsOptions<AppMenuProps>;
declare const _default: import("vue").DefineComponent<AppMenuProps, any, any, any, any, any, any, any, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
    title?: string | false | undefined;
    collapse?: ((collapsed: boolean) => void) | undefined;
    layout?: "top" | "side" | "mix" | undefined;
    logo?: any;
    navTheme?: "dark" | "light" | undefined;
    primaryColor?: string | undefined;
    fixedSidebar?: boolean | undefined;
    fixedHeader?: boolean | undefined;
    splitMenus?: boolean | undefined;
    headerHeight?: number | undefined;
    iconfontUrl?: string | string[] | undefined;
    colorWeak?: boolean | undefined;
    mode?: string | undefined;
    theme?: "dark" | "light" | undefined;
    collapsed?: boolean | undefined;
    indent?: number | undefined;
    openKeys?: string[] | undefined;
    selectedKeys?: string[] | undefined;
    i18n?: FormatMessage | undefined;
    isMobile?: boolean | undefined;
    menus?: MenuDataItem[] | undefined;
    menuTitleRender?: MenuTitleRender | undefined;
    menuRender?: false | MenuRender | undefined;
    menuItemRender?: false | MenuItemRender | undefined;
    subMenuItemRender?: false | SubMenuItemRender | undefined;
    menuProps?: unknown;
}>, {}>;
export default _default;
