import type ComponentSpec from './project/componentSpec';
import type Node from './node';
import { SetterConfig } from 'vitis-lowcode-types';
export declare enum DragObjectType {
    Node = "node",
    NodeData = "nodedata"
}
export interface DragNodeObject {
    type: DragObjectType.Node;
    node: Node;
}
export interface DragNodeDataObject {
    type: DragObjectType.NodeData;
    data: ComponentSpec;
}
export declare type DragObject = DragNodeObject | DragNodeDataObject;
export interface LocationEvent {
    dragObject: DragObject;
    originalEvent: DragEvent;
    clientX: number;
    clientY: number;
}
export interface DropLocation {
    index: number;
    containerNode: Node;
}
export interface FieldConfig {
    type: 'group' | 'field';
    isExtra?: boolean;
    title?: string;
    fields?: FieldConfig[];
    setters?: {
        name: string;
        props?: SetterConfig['props'];
    }[];
    name: string;
    parentName?: string;
}
export interface FieldGroupConfig extends FieldConfig {
    type: 'group';
    fields: FieldConfig[];
}
export interface FieldSingleConfig extends FieldConfig {
    type: 'field';
    setters: {
        name: string;
        props?: SetterConfig['props'];
    }[];
}
