/** Deterministic pseudo-random hash for reproducible particle variation. */ export declare function hash(a: number, b: number): number; export interface SpawnParams { /** Origin x — center of the burst (px). */ ox: number; /** Origin y — center of the burst (px). */ oy: number; /** Scale multiplier applied to speed and size. */ sc: number; /** Number of particles to spawn in this burst. */ burst: number; /** Central emission angle (radians). */ baseAngle: number; /** Angular spread around `baseAngle` (radians). */ spread: number; /** Horizontal position jitter (±half, px). */ jx: number; /** Vertical position jitter (±half, px). */ jy: number; /** Minimum initial speed (px/s, before `sc`). */ sMin: number; /** Maximum initial speed (px/s, before `sc`). */ sMax: number; /** Minimum particle radius (px, before `sc`). */ szMin: number; /** Maximum particle radius (px, before `sc`). */ szMax: number; /** Current timestamp (seconds). */ now: number; /** Ring-buffer rotation index for slot allocation. */ baseRot: number; /** Total number of slots in the ring buffer. */ slots: number; /** * Color list index written to every particle in this burst. Use a fixed value * (e.g. a series index) to color the whole burst uniformly, or `-1` to cycle * the renderer's color list per particle (the particle's loop index is stored). * Defaults to `-1`. */ colorIndex?: number; } /** Write `p.burst` particles into the ring buffer starting at `p.baseRot`. Returns the next rotation index. */ export declare function spawnBurst(buf: Float64Array, p: SpawnParams): number; export interface ShakeResult { x: number; y: number; active: boolean; } /** Compute screen-shake displacement with exponential decay envelope. */ export declare function computeShake(elapsed: number, dur: number, sc: number, sint: number): ShakeResult; /** * Advance all particles by `dtSec`: apply velocity, drag, and expire particles older than `burstDur`. * Returns the number of particles still alive after the tick, so callers can skip per-frame * repaint work (bumping `packRevision`) when the field is empty. */ export declare function tickParticles(buf: Float64Array, slots: number, now: number, burstDur: number, drag: number, dtSec: number): number; //# sourceMappingURL=degenTick.d.ts.map