import type { InternalNodeUpdate, XYPosition, ViewportHelperFunctionOptions, Connection, UpdateNodePositions, CoordinateExtent, UpdateConnection, Viewport, SetCenter } from '@xyflow/system'; import type { getInitialStore } from './initial-store.svelte'; import type { Node, Edge, NodeTypes, EdgeTypes, FitViewOptions, InternalNode } from '../types'; import type { SvelteFlowProps } from '../container/SvelteFlow'; export type SvelteFlowStoreActions = { setNodeTypes: (nodeTypes: NodeTypes) => void; setEdgeTypes: (edgeTypes: EdgeTypes) => void; addEdge: (edge: EdgeType | Connection) => void; zoomIn: (options?: ViewportHelperFunctionOptions) => Promise; zoomOut: (options?: ViewportHelperFunctionOptions) => Promise; setMinZoom: (minZoom: number) => void; setMaxZoom: (maxZoom: number) => void; setTranslateExtent: (extent: CoordinateExtent) => void; fitView: (options?: FitViewOptions) => Promise; setCenter: SetCenter; updateNodePositions: UpdateNodePositions; updateNodeInternals: (updates: Map) => void; unselectNodesAndEdges: (params?: { nodes?: NodeType[]; edges?: EdgeType[]; }) => void; addSelectedNodes: (ids: string[]) => void; addSelectedEdges: (ids: string[]) => void; handleNodeSelection: (id: string, unselect?: boolean, nodeRef?: HTMLDivElement | null) => void; handleEdgeSelection: (id: string) => void; moveSelectedNodes: (direction: XYPosition, factor: number) => void; panBy: (delta: XYPosition) => Promise; updateConnection: UpdateConnection>; cancelConnection: () => void; reset(): void; }; export type SvelteFlowRestProps = Omit, 'width' | 'height' | 'class' | 'proOptions' | 'selectionKey' | 'deleteKey' | 'panActivationKey' | 'multiSelectionKey' | 'zoomActivationKey' | 'paneClickDistance' | 'nodeClickDistance' | 'onMoveStart' | 'onMoveEnd' | 'onMove' | 'onnodeclick' | 'onnodecontextmenu' | 'onnodedrag' | 'onnodedragstart' | 'onnodedragstop' | 'onnodepointerenter' | 'onnodepointermove' | 'onnodepointerleave' | 'onselectionclick' | 'onselectioncontextmenu' | 'onedgeclick' | 'onedgecontextmenu' | 'onedgepointerenter' | 'onedgepointerleave' | 'onpaneclick' | 'onpanecontextmenu' | 'panOnScrollMode' | 'preventScrolling' | 'zoomOnScroll' | 'zoomOnDoubleClick' | 'zoomOnPinch' | 'panOnScroll' | 'panOnDrag' | 'selectionOnDrag' | 'connectionLineComponent' | 'connectionLineStyle' | 'connectionLineContainerStyle' | 'connectionLineType' | 'attributionPosition' | 'children' | 'nodes' | 'edges' | 'viewport'>; export type StoreSignals = { props: SvelteFlowRestProps; width?: number; height?: number; nodes: NodeType[]; edges: EdgeType[]; viewport?: Viewport; }; export type SvelteFlowStoreState = ReturnType>; export type SvelteFlowStore = SvelteFlowStoreState & SvelteFlowStoreActions; export type StoreContext = { getStore: () => SvelteFlowStore; provider: boolean; }; export type ProviderContext = StoreContext & { setStore: (store: SvelteFlowStore) => void; };