import { VelcronComponentPropertyEditors, VelcronDescriptorTypes, VelcronDataTypes } from "./Enums";
import { VelcroncomponentArrayType, VelcronPrimitiveType } from "./VelcronTypes";
export interface VelcronDescriptor {
    descriptorType: VelcronDescriptorTypes;
    icon: string;
}
export interface VelcronComponentDescriptor extends VelcronDescriptor {
    descriptorType: VelcronDescriptorTypes.component;
    type: string;
    icon: string;
    properties?: Array<VelcronComponentPropertyDescriptor | VelcronComponentArrayPropertyDescriptor>;
    events?: Array<VelcronComponentEventDescriptor>;
}
export interface VelcronSubComponentDescriptor extends VelcronDescriptor {
    descriptorType: VelcronDescriptorTypes.subComponent;
    type: string;
    icon: string;
    properties?: Array<VelcronComponentPropertyDescriptor | VelcronComponentArrayPropertyDescriptor>;
    events?: Array<VelcronComponentEventDescriptor>;
}
export interface VelcronComponentPropertyDescriptor {
    name: string;
    type: VelcronDataTypes;
    editor?: VelcronComponentPropertyEditors;
    required?: boolean;
    defaultValue?: VelcronPrimitiveType | VelcroncomponentArrayType;
    disableRemovePropertyOnEmptyOrFalse?: boolean;
}
export interface VelcronComponentArrayPropertyDescriptor extends VelcronComponentPropertyDescriptor {
    type: VelcronDataTypes.componentArray;
    subComponent: VelcronSubComponentDescriptor;
}
export interface VelcronComponentEventDescriptor {
    name: string;
}
