import { Node, XYPosition } from 'reactflow';
import { FlattenNodes, MetaData, NodeState } from '../../types';
interface AddNodeDispatch {
    type: 'addNode';
    node: Node;
}
interface BatchAddNodesDispatch {
    type: 'addNodes';
    nodes: Record<string, Node>;
}
interface DeleteNodeDispatch {
    type: 'deleteNode';
    id: string;
}
interface UpdateNodePositionDispatch {
    type: 'updateNodePosition';
    id: string;
    position?: XYPosition;
}
interface UpdateNodeMetaDispatch {
    type: 'updateNodeMeta';
    id: string;
    key: keyof MetaData;
    value: MetaData[keyof MetaData];
}
interface UpdateNodeStateDispatch {
    type: 'updateNodeState';
    id: string;
    key: keyof NodeState;
    value: any;
}
interface UpdateNodeContentDispatch {
    type: 'updateNodeContent';
    id: string;
    key: string;
    value: any;
}
interface UpdateNodeDataDispatch {
    type: 'updateNodeData';
    id: string;
    newData: any;
    deepReplace?: boolean;
}
export type NodeDispatch = AddNodeDispatch | BatchAddNodesDispatch | DeleteNodeDispatch | UpdateNodePositionDispatch | UpdateNodeMetaDispatch | UpdateNodeStateDispatch | UpdateNodeContentDispatch | UpdateNodeDataDispatch;
export declare const nodeReducer: (state: FlattenNodes, action: NodeDispatch) => FlattenNodes;
export {};
