import type { NodeDefinition, EdgeDefinition, FlowConfig, FlowMode, EngineOptions, EngineEventType } from '../types/index'; import { Node } from '../entities/Node'; import { Edge } from '../entities/Edge'; type EventCallback = (payload: unknown) => void; export declare class FlowEngine { private nodeMap; private edgeMap; private config; private _width; private _height; private ticker; private renderer; private particles; private interaction; private flowMode; private activeEdges; private hoverEdges; private listeners; constructor(options: EngineOptions); start(): void; /** * Stop the animation loop entirely (cancels RAF). * Call start() to restart. For temporary suspension, prefer pause()/resume(). */ stop(): void; pause(): void; resume(): void; destroy(): void; setConfig(config: FlowConfig): void; private applyConfig; /** * Set the full node list. Reconciles additions, removals, and updates. */ setNodes(defs: NodeDefinition[]): void; /** * Set the full edge list. Reconciles additions, removals, and updates. */ setEdges(defs: EdgeDefinition[]): void; /** * Batch update — pass any combination of nodes, edges, config. */ update(data: { nodes?: NodeDefinition[]; edges?: EdgeDefinition[]; config?: FlowConfig; }): void; addNode(def: NodeDefinition): void; removeNode(id: string): void; addEdge(def: EdgeDefinition): void; removeEdge(id: string): void; /** * Switch animation mode. * Does NOT recreate particles — they retain their positions. */ setFlowMode(mode: FlowMode): void; /** * Activate an edge in manual flow mode. * Call again with the same edgeId to keep it active. */ trigger(edgeId: string): void; /** Deactivate an edge in manual mode */ untrigger(edgeId: string): void; setSpeed(multiplier: number): void; setParticleCount(edgeId: string, count: number): void; resize(width: number, height: number): void; on(event: EngineEventType, cb: EventCallback): void; off(event: EngineEventType, cb: EventCallback): void; private emit; private applyLayout; private rebuildEdgePaths; private buildEdgePath; private tick; get width(): number; get height(): number; get isPaused(): boolean; get nodes(): Node[]; get edges(): Edge[]; getNode(id: string): Node | undefined; getEdge(id: string): Edge | undefined; } export {}; //# sourceMappingURL=FlowEngine.d.ts.map