import type { Anchor, Graph, Node, GroupKey } from './'; import type { GroupBox, NodeKey, GraphKey, AnchorKey, CustomEdgeKey } from './'; import type { WritableEdge } from './edge'; import type { generateOutput } from '../utils/creators'; import type { Writable, Readable } from 'svelte/store'; export interface Store { subscribe: Writable>['subscribe']; set: Writable>['set']; update: Writable>['update']; add: (item: T, key: K) => Map; get: (key: K) => T | null; getAll: () => T[]; delete: (key: K) => boolean; count: () => number; } export interface EdgeStore { count: () => number; delete: (key: CustomEdgeKey) => boolean; get: (key: CustomEdgeKey) => WritableEdge | null; getAll: () => WritableEdge[]; match: (...args: Array) => CustomEdgeKey[]; fetch: (source: Anchor, target: Anchor) => WritableEdge | null; subscribe: Writable>['subscribe']; update: Writable>['update']; set: Writable>['set']; add: (item: WritableEdge, key: CustomEdgeKey) => void; onEdgeChange: (callback: (edge: WritableEdge, type: 'connection' | 'disconnection') => void) => void; } export type GraphStore = Store; export type NodeStore = Store; export type GroupBoxStore = Store; export type AnchorStore = Store; export type OutputStore = ReturnType; export type InputStore = Writable | Readable>>;