import { AsyncComponentLoader, Component, ShallowRef } from 'vue';
import { ComponentSchema } from './epic-designer';
export type ComponentType = AsyncComponentLoader | Component | string;
export interface ActivitybarModel {
    component: ComponentType;
    icon: string;
    id: string;
    sort?: number;
    title: string;
    visible?: boolean;
}
export interface RightSidebarModel {
    component: ComponentType;
    id: string;
    sort?: number;
    title: string;
    visible?: boolean;
}
export interface ViewsContainersModel {
    activityBars: ShallowRef<ActivitybarModel[]>;
    rightSidebars: ShallowRef<RightSidebarModel[]>;
}
export type Components = Record<string, ComponentType>;
export interface EventModel {
    /**
     * @deprecated 此属性用于兼容旧版，后期可能会移除，请使用description属性代替。
     */
    describe?: string;
    description: string;
    type: string;
}
export interface ActionModel extends EventModel {
    args?: unknown[];
    argsConfigs?: ComponentSchema[];
}
export interface EditConstraintsModel {
    childImmovable?: boolean;
    fixedField?: boolean;
    immovable?: boolean;
    locked?: boolean;
}
export interface ComponentConfigModel {
    bindModel?: string;
    component: ComponentType;
    config: {
        action?: ActionModel[];
        attribute?: ComponentSchema[];
        event?: EventModel[];
        style?: ComponentSchema[];
    };
    defaultSchema: ComponentSchema;
    editConstraints?: EditConstraintsModel;
    groupName?: string;
    icon?: string;
    isSubTable?: boolean;
    priority?: number;
    sort?: number;
}
export type ComponentConfigModelRecords = Record<string, ComponentConfigModel>;
export interface PublicMethodModel {
    /**
     * @deprecated 此属性用于兼容旧版，后期可能会移除，请使用description属性代替。
     */
    describe?: string;
    description?: string;
    handler: Function;
    /**
     * @deprecated 此属性用于兼容旧版，后期可能会移除，请使用handler属性代替。
     */
    method?: Function;
    /**
     * @deprecated 此属性用于兼容旧版，后期可能会移除，请使用name属性代替。
     */
    methodName?: string;
    name: string;
}
export type PublicMethodsModel = Record<string, PublicMethodModel>;
export interface ComponentGroup {
    list: ComponentSchema[];
    title: string;
}
export type ComponentSchemaGroups = ComponentGroup[];
