import { Edge, EdgeChange, Node, NodeChange, ReactFlowInstance, Viewport } from 'reactflow';
import { FlowTreeNode, InternalFlow } from '../types';
import { DocWithHistoryManager } from '../utils/yjs';
export interface FlowEditorState {
    flattenNodes: Record<string, Node>;
    onFlattenNodesChange?: (flattenNodes: Record<string, Node>) => void;
    flattenEdges: Record<string, Edge>;
    onFlattenEdgesChange?: (flattenEdges: Record<string, Edge>) => void;
    selectedKeys: string[];
    onSelectionChange?: (selection: string[]) => void;
    onNodesChange?: (nodeChanges: NodeChange[]) => void;
    beforeNodesChange?: (nodeChanges: NodeChange[]) => boolean;
    afterNodesChange?: (nodeChanges: NodeChange[]) => void;
    onEdgesChange?: (edges: EdgeChange[]) => void;
    beforeEdgesChange?: (edges: EdgeChange[]) => boolean;
    afterEdgesChange?: (edges: EdgeChange[]) => void;
    onNodesTreeChange?: (nodesTree: FlowTreeNode[]) => void;
    onViewPortChange?: (viewport: Viewport) => void;
    reactflow: ReactFlowInstance;
    yjsDoc: DocWithHistoryManager<InternalFlow>;
}
export declare const initialState: FlowEditorState;
