import { IMultiTabsManager, MultiTabInstance, MultiTabType, ReloadMainViewCallChainingParameters, RuntimeContext, RuntimeViewAction, ViewActionQueryParameter } from '@oinone/kunlun-engine';
import { IModule } from '@oinone/kunlun-meta';
import { CallChaining, Consumer, Executor, TreeNode } from '@oinone/kunlun-shared';
import { Subscription } from '@oinone/kunlun-state';
import { MenuUrlParameters, RuntimeMenu } from '@oinone/kunlun-vue-admin-layout';
import { DslDefinitionWidget, DslDefinitionWidgetProps } from '@oinone/kunlun-vue-widget';
import { Component, Ref } from 'vue';
import { MultiTabContainerWidget } from './MultiTabContainerWidget';
interface MultiTabItem {
    key: string;
    enter: RuntimeViewAction;
    instance: MultiTabInstance;
    createDate?: Date;
    updateDate?: Date;
}
export interface MultiTabsContainerWidgetProps extends DslDefinitionWidgetProps {
    reloadMainViewCallChaining: CallChaining;
    loading: boolean;
}
export declare class MultiTabsContainerWidget extends DslDefinitionWidget<MultiTabsContainerWidgetProps> {
    protected $systemMajorConfig: Subscription;
    protected reloadMainViewCallChaining: CallChaining | undefined;
    protected loading: boolean;
    protected tabs: MultiTabItem[];
    protected module: IModule | undefined;
    protected menuNodes: TreeNode<RuntimeMenu>[];
    protected disabledCache: boolean;
    initialize(props: MultiTabsContainerWidgetProps): this;
    isLoading(): boolean;
    setLoading(loading: boolean): void;
    protected keepAliveStore: Ref<string[]> | undefined;
    protected setActiveTabComponent: ((component: Component | undefined, isKeepAlive: boolean) => void) | undefined;
    protected removeTabComponent: Consumer<string> | undefined;
    protected clearTabComponent: Executor | undefined;
    protected setKeepAliveStore(store: Ref<string[]>): void;
    protected setSetterActiveTabComponent(fn: Consumer<Component | undefined>): void;
    protected setRemoveTabComponent(fn: Consumer<string>): void;
    protected setClearTabComponent(fn: Executor): void;
    protected multiTabConfig: import("@oinone/kunlun-engine").MultiTabsConfig | undefined;
    isEnabled(module?: string): boolean;
    get maxCount(): number | undefined;
    get maxCacheCount(): number;
    get isEnabledHomepage(): boolean;
    get isEnabledModuleHomepage(): boolean;
    /**
     * 在模块发生改变时调用
     * @param moduleName 模块名称
     * @protected
     */
    protected onModuleChange(moduleName: string): Promise<void>;
    /**
     * 根据模块名称获取菜单
     * @param moduleName 模块名称
     * @protected
     */
    protected fetchMenuNodes(moduleName: string): Promise<TreeNode<RuntimeMenu>[]>;
    /**
     * 是否初始化应用首页
     * @protected
     */
    protected get isInitApplicationHomepage(): boolean;
    /**
     * 是否初始化应用首页
     * @protected
     */
    protected get isInitModuleHomepage(): boolean;
    protected initMultiTabs(): Promise<void>;
    protected initHomepageTab(module?: string): Promise<MultiTabItem>;
    protected initMultiTabsByMenuParameters(model: string, name: string, menuParameters: MenuUrlParameters | undefined): Promise<MultiTabItem | undefined>;
    protected createMultiTabByMenuViewAction(action: RuntimeViewAction, selectedMenuItem: TreeNode<RuntimeMenu>, menuParameters: MenuUrlParameters | undefined): Promise<MultiTabItem | undefined>;
    protected findSelectedMenuItem(action: string, menuParameters: MenuUrlParameters | undefined): TreeNode<RuntimeMenu> | undefined;
    protected initModuleHomepage(): Promise<MultiTabItem | undefined>;
    protected generatorTabItem(type: MultiTabType, action: RuntimeViewAction, parameters?: ViewActionQueryParameter): MultiTabItem;
    /**
     * 创建标签页容器组件
     * @param instanceOrKey 实例或实例key
     * @param runtimeContext 运行时上下文
     * @protected
     */
    protected createTabContainerWidget(instanceOrKey: string | MultiTabInstance, runtimeContext: RuntimeContext): MultiTabContainerWidget;
    /**
     * 通过URL参数生成选项卡
     * @param page URL参数
     * @param menuParameters 菜单URL参数
     * @protected
     */
    protected generatorTabItemByUrl(page: ViewActionQueryParameter, menuParameters: MenuUrlParameters | undefined): Promise<{
        tabItem: MultiTabItem;
        isUsingCache: boolean;
    } | undefined>;
    /**
     * 创建或更新入口选项卡
     * @param moduleName 模块名称
     * @param viewAction 跳转动作
     * @param currentPage 当前URL参数
     * @param menuParameters 菜单URL参数
     * @protected
     */
    protected createOrUpdateEnterTab(moduleName: string, viewAction: RuntimeViewAction, currentPage: ViewActionQueryParameter, menuParameters: MenuUrlParameters | undefined): Promise<{
        tabItem: MultiTabItem;
        isUsingCache: boolean;
    }>;
    protected appendEnterTab(enterTab: MultiTabItem, parameter?: ViewActionQueryParameter): undefined;
    /**
     * 加入到当前激活的选项卡中
     * @param viewAction 跳转动作
     * @param currentPage 当前URL参数
     * @protected
     */
    protected joinActiveTab(viewAction: RuntimeViewAction, currentPage: ViewActionQueryParameter): {
        tabItem: MultiTabItem;
        isUsingCache: boolean;
    };
    protected findEnterTab(action: RuntimeViewAction, parameter?: ViewActionQueryParameter): MultiTabItem | undefined;
    protected getPKValues(action: RuntimeViewAction, parameter: ViewActionQueryParameter): string[];
    protected getMultiTabType(moduleModule: string, model: string, name: string): Promise<MultiTabType>;
    protected refreshRuntimeContext(handle: string, currentPage: ViewActionQueryParameter, menuUrlParameters: MenuUrlParameters | undefined): Promise<void>;
    protected setActiveTabItem(tab: MultiTabItem): void;
    protected executeMaxCount(maxCount: number): void;
    protected $closeTabByAsync(tab: MultiTabItem): Promise<void>;
    protected executeMaxCacheCount(maxCacheCount: number): void;
    protected getSortedTabs(): MultiTabItem[];
    protected initEnterTab: MultiTabItem | undefined;
    protected reloadMainViewProcess(reloadParameters: ReloadMainViewCallChainingParameters): Promise<void>;
    protected onClose: (manager: IMultiTabsManager, instance: MultiTabInstance) => void;
    protected onReset: (manager: IMultiTabsManager) => void;
    protected $$created(): void;
    protected $$mounted(): void;
    protected $$unmounted(): void;
}
export {};
