import type { Topic } from './types/dom';
import type { MindElixirInstance, NodeObj } from './types/index';
/**
 * @function
 * @instance
 * @name reshapeNode
 * @memberof NodeOperation
 * @description Re-shape a node.
 * @param {TargetElement} el - Target element return by E('...')
 * @param {patchData} node - Data should be patched to the original data
 * @example
 * reshapeNode(E('bd4313fbac40284b'),{tags:['A', 'B'], style:{color:'#000'}})
 */
export declare const reshapeNode: (this: MindElixirInstance, tpc: Topic, patchData: NodeObj) => void;
/**
 * @function
 * @instance
 * @name insertSibling
 * @memberof NodeOperation
 * @description Create a sibling node.
 * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget.
 * @param {node} node - New node information.
 * @example
 * insertSibling(E('bd4313fbac40284b'))
 */
export declare const insertSibling: (this: MindElixirInstance, el?: Topic, node?: NodeObj) => void;
/**
 * @function
 * @instance
 * @name insertBefore
 * @memberof NodeOperation
 * @description Create a sibling node before the selected node.
 * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget.
 * @param {node} node - New node information.
 * @example
 * insertBefore(E('bd4313fbac40284b'))
 */
export declare const insertBefore: (this: MindElixirInstance, el?: Topic, node?: NodeObj) => void;
/**
 * @function
 * @instance
 * @name insertParent
 * @memberof NodeOperation
 * @description Create a parent node of the selected node.
 * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget.
 * @param {node} node - New node information.
 * @example
 * insertParent(E('bd4313fbac40284b'))
 */
export declare const insertParent: (this: MindElixirInstance, el?: Topic, node?: NodeObj) => void;
/**
 * @function
 * @instance
 * @name addChild
 * @memberof NodeOperation
 * @description Create a child node.
 * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget.
 * @param {node} node - New node information.
 * @example
 * addChild(E('bd4313fbac40284b'))
 */
export declare const addChild: (this: MindElixirInstance, el?: Topic, node?: NodeObj) => void;
/**
 * @function
 * @instance
 * @name copyNode
 * @memberof NodeOperation
 * @description Copy node to another node.
 * @param {TargetElement} node - Target element return by E('...'), default value: currentTarget.
 * @param {TargetElement} to - The target(as parent node) you want to copy to.
 * @example
 * copyNode(E('bd4313fbac402842'),E('bd4313fbac402839'))
 */
export declare const copyNode: (this: MindElixirInstance, node: Topic, to: Topic) => void;
/**
 * @function
 * @instance
 * @name moveUpNode
 * @memberof NodeOperation
 * @description Move the target node up.
 * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget.
 * @example
 * moveUpNode(E('bd4313fbac40284b'))
 */
export declare const moveUpNode: (this: MindElixirInstance, el?: Topic) => void;
/**
 * @function
 * @instance
 * @name moveDownNode
 * @memberof NodeOperation
 * @description Move the target node down.
 * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget.
 * @example
 * moveDownNode(E('bd4313fbac40284b'))
 */
export declare const moveDownNode: (this: MindElixirInstance, el?: Topic) => void;
/**
 * @function
 * @instance
 * @name removeNode
 * @memberof NodeOperation
 * @description Remove the target node.
 * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget.
 * @example
 * removeNode(E('bd4313fbac40284b'))
 */
export declare const removeNode: (this: MindElixirInstance, el?: Topic) => void;
export declare const removeNodes: (this: MindElixirInstance, tpcs: Topic[]) => void;
/**
 * @function
 * @instance
 * @name moveNode
 * @memberof NodeOperation
 * @description Move a node to another node (as child node).
 * @param {TargetElement} from - The target you want to move.
 * @param {TargetElement} to - The target(as parent node) you want to move to.
 * @example
 * moveNode(E('bd4313fbac402842'),E('bd4313fbac402839'))
 */
export declare const moveNode: (this: MindElixirInstance, from: Topic, to: Topic) => void;
/**
 * @function
 * @instance
 * @name moveNodeBefore
 * @memberof NodeOperation
 * @description Move a node and become previous node of another node.
 * @param {TargetElement} from
 * @param {TargetElement} to
 * @example
 * moveNodeBefore(E('bd4313fbac402842'),E('bd4313fbac402839'))
 */
export declare const moveNodeBefore: (this: MindElixirInstance, from: Topic, to: Topic) => void;
/**
 * @function
 * @instance
 * @name moveNodeAfter
 * @memberof NodeOperation
 * @description Move a node and become next node of another node.
 * @param {TargetElement} from
 * @param {TargetElement} to
 * @example
 * moveNodeAfter(E('bd4313fbac402842'),E('bd4313fbac402839'))
 */
export declare const moveNodeAfter: (this: MindElixirInstance, from: Topic, to: Topic) => void;
/**
 * @function
 * @instance
 * @name beginEdit
 * @memberof NodeOperation
 * @description Begin to edit the target node.
 * @param {TargetElement} el - Target element return by E('...'), default value: currentTarget.
 * @example
 * beginEdit(E('bd4313fbac40284b'))
 */
export declare const beginEdit: (this: MindElixirInstance, el?: Topic) => void;
export declare const setNodeTopic: (this: MindElixirInstance, el: Topic, topic: string) => void;
