import { PBF } from '../PBF/PBF.js'; import { SPH } from '../SPH/SPH.js'; import type { FluidCanonicalConfiguration, FluidConfigurationOptions } from './FluidConfiguration.js'; import type { FluidCalibrationResult } from './FluidCalibration.js'; export type ParticleFluid = (PBF | SPH) & { configuration: FluidCanonicalConfiguration; calibration: Readonly; }; /** * Construct a concrete PBF or SPH instance from canonical shared options. * * The returned solver exposes its position storage node directly. For dense 3D * rendering, feed `fluid.buffers.positions.element( instanceIndex )` to * `sphereImpostorPosition()` and draw a plain `Mesh` with `TriangleGeometry`, * `mesh.count = fluid.particleCount`, disabled frustum culling, and no raycast. * Keep `particles.useMatrices` disabled for that path so the simulation does not * spend compute bandwidth producing unused per-instance matrices. * * @param {Object} [options={}] Canonical fluid configuration. * @return {PBF|SPH} Configured particle-fluid solver. */ export declare function createParticleFluid(options?: FluidConfigurationOptions): ParticleFluid;