import type { ComputeNode } from 'three/webgpu'; import type { TSLFloatNode, TSLStorageNode } from '../../../types/tsl.js'; export interface PBFVorticitySpatialGrid { buffers: { cellHashes: TSLStorageNode<'uint'>; particleIds: TSLStorageNode<'uint'>; cell_offsets: TSLStorageNode<'uint'>; }; ubos: unknown; positionToCellCoords: unknown; cellKeyToHash: unknown; } export interface PBFVorticityConfinementPassOptions { positions: TSLStorageNode<'vec3'>; velocities: TSLStorageNode<'vec3'>; densities: TSLStorageNode<'float'>; vorticities: TSLStorageNode<'vec3'>; velocityDeltas: TSLStorageNode<'vec3'>; particleCount: number; mass: TSLFloatNode; h: TSLFloatNode; spiky: TSLFloatNode; strength: TSLFloatNode; deltaTime: TSLFloatNode; grid: PBFVorticitySpatialGrid | null; is3D: boolean; } export interface PBFVorticityConfinementPasses { computeVorticity: ComputeNode; computeConfinementDelta: ComputeNode; } /** Create PBF vorticity and confinement velocity-delta passes. */ export declare function createVorticityConfinementPasses({ positions, velocities, densities, vorticities, velocityDeltas, particleCount, mass, h, spiky, strength, deltaTime, grid, is3D, }: PBFVorticityConfinementPassOptions): PBFVorticityConfinementPasses;