import { LayoutContainerEnum, IWidgetConfig } from '../../model/Layout';
import { Ref } from 'vue';
/**
 * 布局对象定义
 */
export interface ILayoutContainer {
    topContainer: Ref<HTMLElement | undefined>;
    centerBackContainer: Ref<HTMLElement | undefined>;
    centerMainContainer: Ref<HTMLElement | undefined>;
    centerFrontContainer: Ref<HTMLElement | undefined>;
    bottomContainer: Ref<HTMLElement | undefined>;
    leftContainer: Ref<HTMLElement | undefined>;
    rightContainer: Ref<HTMLElement | undefined>;
}
export declare class LayoutManager {
    private layoutState;
    private layoutMap;
    private preConditionMap;
    private widgetsLoadedSet;
    /**
     * WidgetConfig字典
     */
    private widgetConfigDiction;
    private _LayoutID;
    private _mapItemRefs?;
    constructor(layoutState: ILayoutContainer, layoutID: string, allWidgetConfig?: Array<IWidgetConfig>, mapRefs?: Map<string, any>);
    /**
     * 所属的Layout布局对象ID
     * @returns
     */
    getLayoutID(): string | undefined;
    /**
     * 获得widget配置参数,字典对象
     * @returns
     */
    getWidgetConfigMap(): Map<string, IWidgetConfig>;
    /**
     * 预先加载Widget组件
     */
    preloadWidgets(): void;
    /**
     * 加载组件和子组件
     * @param widgetItem 组件对象
     */
    loadWidget(widgetItem: IWidgetConfig | string): any;
    private loadOtherDependenceWidgets;
    private _loadWidget;
    /**
     * 检查是否存在依赖其的组件
     * @param widgetID
     * @returns
     */
    hasDependentWidgets(widgetID: string): boolean;
    /**
     * 卸载组件
     * @param widgetItem
     * @returns
     */
    unloadWidget(widgetID: string): void;
    /**
     * 查询某一组件是否被加载
     * @param widgetID 组件ID
     * @returns
     */
    isWidgetLoaded(widgetID: string): boolean;
    /**
     * 中心两DIV
     * 左右分屏
     * @param restore
     */
    splitTwoContainer(restore?: boolean): void;
    /**
     * 获取到对应容器
     * @param enumContainer
     * @returns
     */
    getLayoutContainer(enumContainer: LayoutContainerEnum): HTMLElement | undefined;
    /**
     * 改变容器可见性
     * @param enumContainer
     * @param isVisible
     */
    changeContainerVisible(enumContainer: LayoutContainerEnum, isVisible?: boolean): void;
    /**
     * 改变组件的可见性
     * @param enumContainer
     * @param isVisible
     */
    changeWidgetVisible(widgetID: string, isVisible?: boolean): void;
    /**
     * 获取Widget组件是否可见
     * @param widgetID
     * @returns
     */
    isWidgetVisible(widgetID: string): boolean;
    /**
     * 根据ID，获取已经加载的Widget组件对象
     * @param widgetID
     * @returns
     */
    getWidgetComponent(widgetID: string): any;
    /**
     * 获取组件记录
     * @param widgetID 组件ID
     * @returns
     */
    getWigetItem(widgetID: string): IWidgetConfig | undefined;
    /**
     * 根据分组名，获取组件列表
     * @param group 分组名
     * @returns
     */
    getGroupWigetItems(group: string): IWidgetConfig[];
    /**
     * 获取容器里的组件集合
     * @param enumContainer
     * @returns
     */
    getContainerComponents(enumContainer: LayoutContainerEnum): Ref<Map<string, any>>;
    /**
     * 获取已经加载组件ID列表
     * @returns ID列表数组
     */
    getWidgetLoadedIDList(): string[];
    /**
     * 卸载所有已加载的组件
     * @param excludeIDs 排除ID列表
     */
    unloadAllWidgets(excludeIDs?: string[]): void;
    /**
     * 批量卸载一批Widget组件
     * @param idList 组件ID列表
     */
    unloadWidgets(idList: string[]): void;
    /**
     * 通过widgetid 获得LayoutManager
     * @param widgetID
     * @param allWidgetConfig
     * @returns
     */
    static getLayoutManager(widgetID: string, allWidgetConfig: Array<IWidgetConfig>): LayoutManager | undefined;
}
