import type { ComputeNode } from 'three/webgpu'; import type { TSLFloatInput, TSLStorageNode } from '../../../types/tsl.cjs'; import { type InteractionQueryWorld } from './InteractionGridQueries.cjs'; import type { ParticleColliderTransforms } from './createParticleColliderConstraintPass.cjs'; export interface ParticleColliderDensityBuffers { positions: TSLStorageNode<'vec3'>; densities?: TSLStorageNode<'float'> | undefined; readonly [name: string]: unknown; } export interface ParticleColliderDensityOptions { layer?: number | undefined; mask?: number | undefined; particleRadius?: number | undefined; smoothingRadius?: TSLFloatInput | undefined; h2?: TSLFloatInput | undefined; mass?: TSLFloatInput | undefined; poly6?: TSLFloatInput | undefined; particleSpacing?: TSLFloatInput | undefined; is3D?: boolean | undefined; queryMode?: 'grid' | 'scan' | undefined; readonly [name: string]: unknown; } declare function createParticleColliderDensityPass(world: InteractionQueryWorld, buffers: ParticleColliderDensityBuffers, particleCount: number, options?: ParticleColliderDensityOptions, transforms?: ParticleColliderTransforms): ComputeNode; export { createParticleColliderDensityPass };