import { Particle } from '../entities/Particle'; import type { Edge } from '../entities/Edge'; export declare class ParticleSystem { private pool; /** edgeId → particles on that edge */ private edgeParticles; /** Override particle count for all edges */ private _globalCount; setGlobalParticleCount(count: number | undefined): void; /** Called when the edge list changes. Reconciles particle assignments. */ syncEdges(edges: Edge[]): void; addEdge(edge: Edge): void; removeEdge(edgeId: string): void; /** * Move all particles by deltaTime. * Uses arc-length parameterization: distance += speed * dt, then * position = edge.path.getPointAtLength(distance). * * @param dt Delta time in seconds (capped by Ticker at 100ms) * @param edges Active (animating) edges this frame * @param activeSet Set of edge IDs that should animate (flow mode filter) */ update(dt: number, edges: Edge[], activeSet: Set | null): void; getParticlesForEdge(edgeId: string): Particle[]; /** Iterate all active particles (avoids building a combined array each frame) */ forEach(fn: (particles: Particle[], edgeId: string) => void): void; clear(): void; get poolFreeCount(): number; } //# sourceMappingURL=ParticleSystem.d.ts.map