import { PropType, ExtractPropTypes, InjectionKey } from 'vue';
import { StyleValue } from '../ele-app/types';
import { EleMenusProps, EleBreadcrumbProps, EleBacktopProps, EleDropdownProps } from '../ele-app/plus';
import { MenuItem } from '../ele-menus/types';
import { BreadcrumbItem } from '../ele-breadcrumb/types';
import { TabPaneItem, TabEventOption, ContextMenus } from '../ele-tabs/types';
import { Layout, SidebarLayout, HeaderStyle, SidebarStyle, TabStyle, TabBar, Maximized, LayoutProvide } from './types';

/**
 * 属性
 */
export declare const adminLayoutProps: {
    /** 高度 */
    height: {
        type: (StringConstructor | NumberConstructor)[];
        default: string;
    };
    /** 顶栏菜单数据 */
    headerMenus: PropType<MenuItem[]>;
    /** 顶栏菜单选中 */
    headerActive: StringConstructor;
    /** 侧栏菜单数据 */
    sidebarMenus: PropType<MenuItem[]>;
    /** 侧栏菜单选中 */
    sidebarActive: StringConstructor;
    /** 双侧栏一级菜单数据 */
    sideboxMenus: PropType<MenuItem[]>;
    /** 双侧栏一级菜单选中 */
    sideboxActive: StringConstructor;
    /** 页签数据 */
    tabs: PropType<TabPaneItem[]>;
    /** 页签选中 */
    tabActive: StringConstructor;
    /** 面包屑导航数据 */
    levels: PropType<BreadcrumbItem[]>;
    /** 是否折叠侧栏 */
    collapse: BooleanConstructor;
    /** 双侧栏一级是否紧凑风格 */
    compact: BooleanConstructor;
    /** 内容区是否最大化 */
    maximized: PropType<Maximized>;
    /** 是否需要页签栏 */
    tabBar: PropType<TabBar>;
    /** 是否需要面包屑导航 */
    breadcrumb: PropType<boolean | EleBreadcrumbProps>;
    /** 是否需要返回顶部 */
    backTop: PropType<boolean | EleBacktopProps>;
    /** 顶栏菜单属性 */
    headerMenuProps: PropType<EleMenusProps>;
    /** 侧栏菜单属性 */
    sidebarMenuProps: PropType<EleMenusProps>;
    /** 双侧栏一级菜单属性 */
    sideboxMenuProps: PropType<EleMenusProps>;
    /** 布局类型 */
    layout: PropType<Layout>;
    /** 侧栏布局类型 */
    sidebarLayout: PropType<SidebarLayout>;
    /** 顶栏风格 */
    headerStyle: PropType<HeaderStyle>;
    /** 侧栏风格 */
    sidebarStyle: PropType<SidebarStyle>;
    /** 页签风格 */
    tabStyle: {
        type: PropType<TabStyle>;
        default: string;
    };
    /** 是否固定顶栏 */
    fixedHeader: BooleanConstructor;
    /** 是否固定侧栏 */
    fixedSidebar: BooleanConstructor;
    /** 是否固定内容区 */
    fixedBody: BooleanConstructor;
    /** logo是否置于顶栏 */
    logoInHeader: BooleanConstructor;
    /** 是否需要固定的主页页签 */
    fixedHome: BooleanConstructor;
    /** 主页路由地址 */
    homePath: StringConstructor;
    /** 是否选中固定的主页页签 */
    isHome: BooleanConstructor;
    /** 是否支持页签右键菜单 */
    tabContextMenu: PropType<boolean | EleDropdownProps>;
    /** 页签右键菜单数据 */
    tabContextMenus: PropType<ContextMenus>;
    /** 是否支持页签拖动排序 */
    tabSortable: BooleanConstructor;
    /** 顶栏菜单标题插槽名称 */
    headerTitleSlot: {
        type: StringConstructor;
        default: string;
    };
    /** 顶栏菜单图标插槽名称 */
    headerIconSlot: {
        type: StringConstructor;
        default: string;
    };
    /** 侧栏菜单标题插槽名称 */
    sidebarTitleSlot: {
        type: StringConstructor;
        default: string;
    };
    /** 侧栏菜单图标插槽名称 */
    sidebarIconSlot: {
        type: StringConstructor;
        default: string;
    };
    /** 双侧栏一级菜单标题插槽名称 */
    sideboxTitleSlot: {
        type: StringConstructor;
        default: string;
    };
    /** 双侧栏一级菜单图标插槽名称 */
    sideboxIconSlot: {
        type: StringConstructor;
        default: string;
    };
    /** 顶栏样式 */
    headerCustomStyle: PropType<StyleValue>;
    /** 侧栏样式 */
    sidebarCustomStyle: PropType<StyleValue>;
    /** 双侧栏一级样式 */
    sideboxCustomStyle: PropType<StyleValue>;
    /** 页签栏样式 */
    tabsCustomStyle: PropType<StyleValue>;
    /** 内容区样式 */
    contentCustomStyle: PropType<StyleValue>;
    /** logo样式 */
    logoStyle: PropType<StyleValue>;
    /** logo文字样式 */
    logoTitleStyle: PropType<StyleValue>;
    /** 顶栏菜单样式 */
    headerMenusStyle: PropType<StyleValue>;
    /** 侧栏菜单样式 */
    sidebarMenusStyle: PropType<StyleValue>;
    /** 双侧栏一级菜单样式 */
    sideboxMenusStyle: PropType<StyleValue>;
    /** logo图片地址 */
    logoSrc: StringConstructor;
    /** logo文字 */
    logoTitle: StringConstructor;
    /** 菜单是否自动滚动到选中位置 */
    menuScrollToActive: {
        type: BooleanConstructor;
        default: boolean;
    };
    /** 是否是移动端风格 */
    mobile: BooleanConstructor;
};
export type AdminLayoutProps = ExtractPropTypes<typeof adminLayoutProps>;
/**
 * 事件
 */
export declare const adminLayoutEmits: {
    'update:collapse': (_collapse: boolean) => boolean;
    logoClick: (_e: MouseEvent) => boolean;
    headMenuOpen: (_index: string, _indexPath: string[]) => boolean;
    headMenuClose: (_index: string, _indexPath: string[]) => boolean;
    headMenuItemClick: (_item: MenuItem, _e: MouseEvent) => boolean;
    headMenuItemMouseenter: (_item: MenuItem, _e: MouseEvent) => boolean;
    headMenuItemMouseleave: (_item: MenuItem, _e: MouseEvent) => boolean;
    headMouseenter: (_e: MouseEvent) => boolean;
    headMouseleave: (_e: MouseEvent) => boolean;
    boxMenuItemClick: (_item: MenuItem, _e: MouseEvent) => boolean;
    boxMenuItemMouseenter: (_item: MenuItem, _e: MouseEvent) => boolean;
    boxMenuItemMouseleave: (_item: MenuItem, _e: MouseEvent) => boolean;
    boxMouseenter: (_e: MouseEvent) => boolean;
    boxMouseleave: (_e: MouseEvent) => boolean;
    sideMenuOpen: (_index: string, _indexPath: string[]) => boolean;
    sideMenuClose: (_index: string, _indexPath: string[]) => boolean;
    sideMenuItemClick: (_item: MenuItem, _e: MouseEvent) => boolean;
    sideMouseenter: (_e: MouseEvent) => boolean;
    sideMouseleave: (_e: MouseEvent) => boolean;
    tabClick: (_option: TabEventOption) => boolean;
    tabRemove: (_name: string) => boolean;
    tabContextMenu: (_option: TabEventOption) => boolean;
    tabSortChange: (_data: TabPaneItem[]) => boolean;
    contentMounted: (_contentEl: HTMLElement, _modalsEl: HTMLElement) => boolean;
};
/**
 * 共享数据key
 */
export declare const LAYOUT_KEY: InjectionKey<LayoutProvide>;
