import { XYCoord } from "react-dnd";
import { ImageValue, NodeType } from "../data/types";
/**
 * Dragging
 */
export interface EditorNodeDragItem {
    type: "EDITOR_NODE";
    node: NodeType;
    dependentNodes: NodeType[];
    imageValues: ImageValue[];
    insertBehavior: "new" | "existing";
    previewPositioning: "on-cursor" | "center";
    actualWidth: number;
    actualHeight: number;
    renderedWidth: number;
    renderedHeight: number;
    element: HTMLElement;
}
export type ResizingDirection = "top-left" | "top" | "top-right" | "left" | "right" | "bottom-left" | "bottom" | "bottom-right";
export interface ResizingNodeItem {
    type: "RESIZING";
    node: NodeType;
    direction: ResizingDirection;
    initialDOMRect: DOMRect;
}
export interface DragListenerItem {
    type: "DRAG_LISTENER";
    onDrag: (args: {
        offset: XYCoord;
        clientOffset: XYCoord;
    }) => void;
    onDrop?: (args: {
        offset: XYCoord;
        clientOffset: XYCoord;
    }) => void;
}
export interface DragTreeItem {
    type: "DRAG_TREE_ITEM";
    node: NodeType;
    renderedWidth: number;
    renderedHeight: number;
}
export type DragItemType = EditorNodeDragItem | ResizingNodeItem | DragListenerItem | DragTreeItem;
export type DragItemSourceType = DragItemType["type"];
/**
 * Dropping
 */
export type DropResultType = {
    result?: string;
} | void;
//# sourceMappingURL=types.d.ts.map