import { ComponentSchema } from '../../core/types/epic-designer';
import { ShallowRef } from 'vue';
export interface ActivitybarModel {
    id: string;
    title: string;
    icon: string;
    component: any;
    visible?: boolean;
}
export interface RightSidebarModel {
    id: string;
    title: string;
    component: any;
    visible?: boolean;
}
export interface ViewsContainersModel {
    activitybars: ShallowRef<ActivitybarModel[]>;
    rightSidebars: ShallowRef<RightSidebarModel[]>;
}
export type Components = Record<string, any>;
export interface EventModel {
    type: string;
    describe: string;
}
export interface ActionModel extends EventModel {
    argsConfigs?: ComponentSchema[];
    args?: any[];
}
export interface EditConstraintsModel {
    immovable?: boolean;
    childImmovable?: boolean;
    fixedField?: boolean;
}
export interface ComponentConfigModel {
    component: any;
    groupName?: string;
    icon?: string;
    defaultSchema: ComponentSchema;
    editConstraints?: EditConstraintsModel;
    config: {
        attribute?: ComponentSchema[];
        style?: ComponentSchema[];
        event?: EventModel[];
        action?: ActionModel[];
    };
    bindModel?: string;
    sort?: number;
}
export type ComponentConfigModelRecords = Record<string, ComponentConfigModel>;
export interface PublicMethodModel {
    describe?: string;
    methodName?: string;
    name: string;
    method?: (...args: any[]) => any;
    handler: (...args: any[]) => any;
}
export type PublicMethodsModel = Record<string, PublicMethodModel>;
export interface ComponentGroup {
    list: ComponentSchema[];
    title: string;
}
export type ComponentSchemaGroups = ComponentGroup[];
export declare class PluginManager {
    initialized: import('vue').Ref<boolean, boolean>;
    sourceData: any;
    components: Components;
    componentConfigs: ComponentConfigModelRecords;
    baseComponentTypes: string[];
    componentSchemaGroups: import('vue').Ref<{
        list: {
            [x: string]: any;
            id?: string | undefined;
            type: string;
            label?: string | undefined;
            field?: string | undefined;
            componentProps?: any;
            slotName?: string | undefined;
            rules?: {
                [x: string]: any;
                trigger?: (string | string[]) | undefined;
                required?: boolean | undefined;
                type?: string | undefined;
                pattern?: (RegExp | string) | undefined;
                min?: number | undefined;
                max?: number | undefined;
                len?: number | undefined;
                enum?: Array<string | number | boolean | null | undefined> | undefined;
                whitespace?: boolean | undefined;
                validator?: string | undefined;
                isValidator?: boolean | undefined;
                message?: (string | ((a?: string) => string)) | undefined;
            }[] | undefined;
            noFormItem?: boolean | undefined;
            input?: boolean | undefined;
            children?: any[] | undefined;
            slots?: {
                [slotName: string]: ComponentSchema[];
            } | undefined;
            show?: (boolean | ((renderCallbackParams: import('../../core/types/epic-designer').RenderCallbackParams) => boolean)) | undefined;
            editData?: any;
        }[];
        title: string;
    }[], ComponentSchemaGroups | {
        list: {
            [x: string]: any;
            id?: string | undefined;
            type: string;
            label?: string | undefined;
            field?: string | undefined;
            componentProps?: any;
            slotName?: string | undefined;
            rules?: {
                [x: string]: any;
                trigger?: (string | string[]) | undefined;
                required?: boolean | undefined;
                type?: string | undefined;
                pattern?: (RegExp | string) | undefined;
                min?: number | undefined;
                max?: number | undefined;
                len?: number | undefined;
                enum?: Array<string | number | boolean | null | undefined> | undefined;
                whitespace?: boolean | undefined;
                validator?: string | undefined;
                isValidator?: boolean | undefined;
                message?: (string | ((a?: string) => string)) | undefined;
            }[] | undefined;
            noFormItem?: boolean | undefined;
            input?: boolean | undefined;
            children?: any[] | undefined;
            slots?: {
                [slotName: string]: ComponentSchema[];
            } | undefined;
            show?: (boolean | ((renderCallbackParams: import('../../core/types/epic-designer').RenderCallbackParams) => boolean)) | undefined;
            editData?: any;
        }[];
        title: string;
    }[]>;
    hiddenComponents: string[];
    formSchemas: ComponentSchema[];
    componentGroupNameMap: Record<string, string>;
    sortedGroups: string[];
    viewsContainers: ViewsContainersModel;
    publicMethods: PublicMethodsModel;
    /**
     * 添加组件到插件管理器中
     * @param componentType 组件类型
     * @param component 组件
     */
    component(componentType: string, component: any): void;
    /**
     * 注册组件到插件管理器中
     * @param componentConfig 组件配置
     */
    registerComponent(componentConfig: ComponentConfigModel): void;
    /**
     * 从已记录的基础组件类型中移除特定类型的组件
     * @param componentType 要移除的组件类型
     */
    removeComponent(componentType: string): void;
    /**
     * 设置数据源
     * @param
     */
    setSourceData(data: any): void;
    /**
     * 获取数据源
     * @returns
     */
    getSourceData(): any;
    /**
     * 记录基础组件类型
     * @returns baseComponentTypes string[]
     */
    setBaseComponentTypes(baseComponentTypes: string[]): void;
    /**
     * 添加基础组件类型
     * @returns baseComponentType string
     */
    addBaseComponentTypes(baseComponentType: string): void;
    /**
     * 移除已记录的基础组件类型
     */
    removeBaseComponents(): void;
    /**
     * 获取所有插件管理中的所有组件
     * @returns components
     */
    getComponents(): Components;
    /**
     * 通过type 查询相应的组件
     * @returns components
     */
    getComponent(type: string): any;
    /**
     * 注册或更新活动栏（Activitybar）模型。
     * 如果模型中的组件是一个函数，则异步加载该组件。
     * @param activitybar 要注册或更新的活动栏模型
     */
    registerActivitybar(activitybar: ActivitybarModel): void;
    /**
     * 获取所有activitybars
     * @returns activitybars
     */
    getActivitybars(): ActivitybarModel[];
    /**
     * 隐藏活动栏
     * @param value 属性
     * @param attr 查询字段 默认值 title
     */
    hideActivitybar(value: string, attr?: string): void;
    /**
     * 显示活动栏
     * @param value 属性
     * @param attr 查询字段 默认值 title
     */
    showActivitybar(value: string, attr?: string): void;
    /**
     * 注册右侧栏
     */
    registerRightSidebar(rightSidebar: RightSidebarModel): void;
    /**
     * 获取所有rightSidebars
     * @returns rightSidebars
     */
    getRightSidebars(): RightSidebarModel[];
    /**
     * 隐藏右侧边栏
     * @param value 属性
     * @param attr 查询字段 默认值 title
     */
    hideRightSidebar(value: string, attr?: string): void;
    /**
     * 显示右侧边栏
     * @param value 属性
     * @param attr 查询字段 默认值 title
     */
    showRightSidebar(value: string, attr?: string): void;
    /**
     * 获取所有插件管理中的所有组件配置
     * @returns componentAttrs
     */
    getComponentConfings(): ComponentConfigModelRecords;
    /**
     * 通过type获取ComponentConfing
     * @returns
     */
    getComponentConfingByType(type: string): ComponentConfigModel;
    /**
     * 计算componentSchemaGroups
     */
    computedComponentSchemaGroups(): void;
    /**
     * 按照分组获取componentSchemaGroups 暂时没啥用
     * @returns componentSchemaGroups
     */
    getComponentSchemaGroups(): import('vue').Ref<{
        list: {
            [x: string]: any;
            id?: string | undefined;
            type: string;
            label?: string | undefined;
            field?: string | undefined;
            componentProps?: any;
            slotName?: string | undefined;
            rules?: {
                [x: string]: any;
                trigger?: (string | string[]) | undefined;
                required?: boolean | undefined;
                type?: string | undefined;
                pattern?: (RegExp | string) | undefined;
                min?: number | undefined;
                max?: number | undefined;
                len?: number | undefined;
                enum?: Array<string | number | boolean | null | undefined> | undefined;
                whitespace?: boolean | undefined;
                validator?: string | undefined;
                isValidator?: boolean | undefined;
                message?: (string | ((a?: string) => string)) | undefined;
            }[] | undefined;
            noFormItem?: boolean | undefined;
            input?: boolean | undefined;
            children?: any[] | undefined;
            slots?: {
                [slotName: string]: ComponentSchema[];
            } | undefined;
            show?: (boolean | ((renderCallbackParams: import('../../core/types/epic-designer').RenderCallbackParams) => boolean)) | undefined;
            editData?: any;
        }[];
        title: string;
    }[], ComponentSchemaGroups | {
        list: {
            [x: string]: any;
            id?: string | undefined;
            type: string;
            label?: string | undefined;
            field?: string | undefined;
            componentProps?: any;
            slotName?: string | undefined;
            rules?: {
                [x: string]: any;
                trigger?: (string | string[]) | undefined;
                required?: boolean | undefined;
                type?: string | undefined;
                pattern?: (RegExp | string) | undefined;
                min?: number | undefined;
                max?: number | undefined;
                len?: number | undefined;
                enum?: Array<string | number | boolean | null | undefined> | undefined;
                whitespace?: boolean | undefined;
                validator?: string | undefined;
                isValidator?: boolean | undefined;
                message?: (string | ((a?: string) => string)) | undefined;
            }[] | undefined;
            noFormItem?: boolean | undefined;
            input?: boolean | undefined;
            children?: any[] | undefined;
            slots?: {
                [slotName: string]: ComponentSchema[];
            } | undefined;
            show?: (boolean | ((renderCallbackParams: import('../../core/types/epic-designer').RenderCallbackParams) => boolean)) | undefined;
            editData?: any;
        }[];
        title: string;
    }[]>;
    /**
     * 设置组件分组名称到映射名称的关系
     * @param groupName 组件分组名称
     * @param mapName 映射的名称
     */
    setComponentGroupNameMap(groupName: string, mapName: string): void;
    /**
     * 清空组件分组名称到映射名称的关系
     */
    clearComponentGroupNameMap(): void;
    /**
     * 设置组件分组的排序
     * @param sortedGroups 包含组名和排序字段的对象数组
     */
    setSortedGroups(sortedGroups: string[]): void;
    /**
     * 清空组件分组的排序
     */
    clearSortedGroups(): void;
    /**
     * 添加需要隐藏的组件类型
     * @param {*} type
     * @returns
     */
    hideComponent(type: string): void;
    /**
     * 移除需要隐藏的组件类型
     * @param {*} type
     * @returns
     */
    showComponent(type: string): void;
    /**
     * 设置需要隐藏的组件类型数组
     * @param {*} type[]
     * @returns
     */
    setHideComponents(types: string[]): void;
    /**
     * 设置initialized的状态。
     *
     * @param value 要设置的布尔值。
     */
    setInitialized(value: boolean): void;
    /**
     * 添加公共方法
     * @param publicMethod
     */
    addPublicMethod(publicMethod: PublicMethodModel): void;
    /**
     * 移除公共方法
     * @param methodName
     */
    removePublicMethod(methodName: string): void;
}
export declare const pluginManager: PluginManager;
