import type { ComputeNode } from 'three/webgpu'; import type { TSLFloatNode, TSLStorageNode, TSLVec3Node } from '../../../types/tsl.js'; import type { MPMMaterialModel } from '../MPMFluidModel.js'; import { type MPMBoundaryOptions, type MPMGridMirrorPassOptions, type MPMIntegrationProfile, type MPMParticleForce, type MPMParticleUpdate } from './MPMComputeContracts.js'; export interface MPMG2PPassOptions extends MPMGridMirrorPassOptions { particles: TSLStorageNode<'struct'>; particlesWrite?: TSLStorageNode<'struct'> | undefined; dt: TSLFloatNode; material: MPMMaterialModel; particleForce?: MPMParticleForce | null | undefined; onParticleUpdate?: MPMParticleUpdate | null | undefined; boundary: MPMBoundaryOptions; gravity: TSLVec3Node; integrationProfile?: MPMIntegrationProfile | undefined; particleCount: number; workgroupSize: number; diagnosticsBuffer?: TSLStorageNode<'uint'> | null | undefined; } export declare function computeG2PPass({ particles, particlesWrite, gridMirror, gridSize, dt, material, particleForce, onParticleUpdate, boundary, gravity, integrationProfile, particleCount, workgroupSize, packedGridMirror, diagnosticsBuffer, }: MPMG2PPassOptions): ComputeNode;