import { default as Graph } from 'graphology'; import { FC, ReactNode } from 'react'; import { BufferGeometry, Mesh } from 'three'; import { StoreApi } from 'zustand'; import { Theme } from './themes'; import { InternalGraphEdge, InternalGraphNode, InternalGraphPosition } from './types'; import { CenterPositionVector, ClusterGroup } from './utils'; export type DragReferences = { [key: string]: InternalGraphNode; }; export interface GraphState { nodes: InternalGraphNode[]; edges: InternalGraphEdge[]; graph: Graph; clusters: Map; collapsedNodeIds?: string[]; centerPosition?: CenterPositionVector; actives?: string[]; selections?: string[]; hoveredNodeId?: string; hoveredEdgeIds?: string[]; edgeContextMenus?: Set; setEdgeContextMenus: (edges: Set) => void; edgeMeshes: Array>; setEdgeMeshes: (edgeMeshes: Array>) => void; draggingIds?: string[]; drags?: DragReferences; panning?: boolean; theme: Theme; setTheme: (theme: Theme) => void; setClusters: (clusters: Map) => void; setPanning: (panning: boolean) => void; setDrags: (drags: DragReferences) => void; addDraggingId: (id: string) => void; removeDraggingId: (id: string) => void; setActives: (actives: string[]) => void; setSelections: (selections: string[]) => void; setHoveredNodeId: (hoveredNodeId: string | null) => void; setHoveredEdgeIds: (hoveredEdgeIds: string[] | null) => void; setNodes: (nodes: InternalGraphNode[]) => void; setEdges: (edges: InternalGraphEdge[]) => void; setNodePosition: (id: string, position: InternalGraphPosition) => void; setCollapsedNodeIds: (nodeIds: string[]) => void; setClusterPosition: (id: string, position: CenterPositionVector) => void; } export declare const createStore: ({ actives, selections, collapsedNodeIds, theme }: Partial) => import('zustand').UseBoundStore>; export declare const Provider: FC<{ children: ReactNode; store?: StoreApi; }>; export declare const useStore: (selector: (state: GraphState) => T) => T;