import type { ComputeNode, Storage3DTexture } from 'three/webgpu'; import type { TSLMat4Node } from '../../../types/tsl.js'; import { type InteractionQueryWorld } from './InteractionGridQueries.js'; import { type SmokeSolidBoundaryPasses, type SmokeSolidBoundarySource } from './createSmokeSolidBoundaryPasses.js'; export interface SmokeColliderInteractionOptions { layer?: number | undefined; mask?: number | undefined; queryMode?: 'grid' | 'scan' | undefined; } /** Smoke resources consumed by collider rasterization and solid-boundary passes. */ export interface SmokeColliderSource extends SmokeSolidBoundarySource { interaction: SmokeColliderInteractionOptions; _interactionVolumeToWorld: TSLMat4Node; _interactionWorldToVolume: TSLMat4Node; } export interface SmokeColliderPasses extends SmokeSolidBoundaryPasses { raster: ComputeNode; } declare function createSmokeColliderPasses(smoke: SmokeColliderSource, world: InteractionQueryWorld, solidTexture: Storage3DTexture): SmokeColliderPasses; export { createSmokeColliderPasses };