import { SubInstanceSelection } from "../../core/helpers/dom-data-id-helpers";
import { AlignmentData, CustomComponentInstance, GridPosition, InstanceProps, LayoutData, NodeId, NodeType, SizeData, SlotInstancePrimitive, SlotPropDefinition, StackPrimitive, TextValue } from "../../data/types";
import { deleteElementRaw, moveElementRaw, updateNodeTextRaw } from "../reducers/current-release/components";
import { AppThunk } from "../reducers/root";
export declare const addElement: (payload: {
    componentId: string;
    node: NodeType;
    parentId?: string | undefined;
    index: number;
} & {
    generatedByUndoRedo?: boolean | undefined;
}) => AppThunk;
export declare const moveElement: (args: Parameters<typeof moveElementRaw>[0], shouldCleanupOrphanParents?: boolean) => AppThunk;
/**
 * componentId: the id of the component that the element belongs to
 * nodeId: the id of the node to be duplicated
 * parentId: the id of the parent node to inserted into
 * index: the index of the new node in the parent node
 */
export declare const duplicateElement: ({ componentId, nodeId, parentId, index, }: {
    componentId: string;
    nodeId: NodeId;
    parentId: NodeId;
    index: number;
}) => AppThunk<NodeType>;
/**
 * componentId: the id of the component that the element belongs to
 * nodeId: the id of the custom component instance
 */
export declare const detachComponent: ({ componentId, nodeId, }: {
    componentId: string;
    nodeId: NodeId;
}) => AppThunk<NodeType>;
export declare const wrapElementWithStack: ({ componentId, elementId, layout, alignment, size, }: {
    componentId: string;
    elementId: NodeId;
    layout: LayoutData;
    alignment: AlignmentData;
    size?: SizeData | undefined;
}) => AppThunk<StackPrimitive>;
export declare const addElementByDirection: ({ componentId, node, siblingId, direction, }: {
    componentId: string;
    node: NodeType;
    siblingId: NodeId;
    direction: "above" | "below" | "left" | "right";
}) => AppThunk;
export declare function deleteMultipleElements({ componentId, shouldDeleteNode, shouldUpdateSelection, shouldCleanupOrphanParents, }: {
    componentId: string;
    shouldDeleteNode: (node: NodeType) => boolean;
    shouldUpdateSelection?: boolean;
    shouldCleanupOrphanParents?: boolean;
}): AppThunk<NodeType[]>;
export declare function deleteElement(args: Parameters<typeof deleteElementRaw>[0], shouldUpdateSelection?: boolean, shouldCleanupOrphanParents?: boolean): AppThunk<NodeType[]>;
export declare const moveElementUp: ({ elementId, componentId }: {
    componentId: string;
    elementId: NodeId;
}) => AppThunk;
export declare const moveElementDown: ({ elementId, componentId }: {
    componentId: string;
    elementId: NodeId;
}) => AppThunk;
export declare const replaceElement: ({ nodeId, componentId, newNode, }: {
    nodeId: NodeId;
    componentId: string;
    newNode: NodeType;
}) => AppThunk;
export declare const replaceComponent: ({ nodeId, componentId, newComponentId, instanceProps, }: {
    nodeId: NodeId;
    componentId: string;
    newComponentId: string;
    instanceProps: InstanceProps;
}) => AppThunk<CustomComponentInstance>;
export declare const groupElements: ({ componentId, elementIds, }: {
    componentId: string;
    elementIds: NodeId[];
}) => AppThunk<StackPrimitive>;
export declare const ungroupElement: ({ componentId, elementId, }: {
    componentId: string;
    elementId: NodeId;
}) => AppThunk<NodeId[] | null>;
/**
 * Thunks for editing properties
 */
export declare function updateNodeText(...args: Parameters<typeof updateNodeTextRaw>): AppThunk;
export declare const updateNodeTextOrPropDefinition: ({ componentId, nodeId, text, subInstances, }: {
    componentId: string;
    nodeId: NodeId;
    text: TextValue;
    subInstances: SubInstanceSelection[];
}) => AppThunk<void>;
/**
 * Thunks for slots
 */
export declare function addSlotInstanceNode({ componentId, nodeId, slotPropDefinition, }: {
    componentId: string;
    nodeId: NodeId;
    slotPropDefinition: SlotPropDefinition;
}): AppThunk<SlotInstancePrimitive>;
/**
 * 12-column grid related
 */
export declare const insertNodePositionToTwelveColumnGrid: ({ componentId, nodeId, childNodeId, position, }: {
    componentId: string;
    nodeId: NodeId;
    childNodeId: NodeId;
    position: GridPosition;
}) => AppThunk;
export declare const addNodeToTwelveColumnGrid: ({ componentId, nodeId, node, position, }: {
    componentId: string;
    nodeId: NodeId;
    node: NodeType;
    position: GridPosition;
}) => AppThunk;
//# sourceMappingURL=element-thunks.d.ts.map