import { FluidBoundarySet } from './FluidBoundarySet.cjs'; import type { FluidBoundaryProvider } from './FluidBoundarySet.cjs'; import { FluidDiagnostics } from './FluidDiagnostics.cjs'; import type { FluidDiagnosticsOptions, FluidMetrics } from './FluidDiagnostics.cjs'; import type { FluidComponentsInput, FluidParticleLayoutOptions } from './FluidInitialization.cjs'; import type { FluidCalibrationResult } from './FluidCalibration.cjs'; export interface ParticleFluidSimulationOptions { solver?: string | undefined; diagnostics?: FluidDiagnosticsOptions | null | undefined; } export interface ParticleFluidMaterialOptions { restDensity?: number | undefined; mass?: number | undefined; } export interface ParticleFluidLayoutOptions { smoothingRadius?: number | undefined; mass?: number | undefined; } export interface ParticleFluidTimeStepOptions { fixedDelta?: number | null | undefined; maxSubsteps?: number | undefined; maxFrameDelta?: number | undefined; timeScale?: number | undefined; } export interface ParticleFluidStats { solver: string; particleCount: number; fixedDelta: number | null; maxSubsteps: number; spatialGrid: boolean; calibration: Readonly | null; } interface ParticleFluidUniforms { timeScale?: { value: number; } | undefined; h?: { value: number; } | undefined; } interface ParticleFluidUpdateTarget { needsUpdate: boolean; } interface ParticleFluidStorageNode { value: ParticleFluidUpdateTarget; } interface ParticleFluidBuffers { positions?: ParticleFluidStorageNode | undefined; velocities?: ParticleFluidStorageNode | undefined; prevPositions?: ParticleFluidStorageNode | undefined; } /** * Shared public contract for concrete SPH and PBF simulations. */ export declare class ParticleFluidSimulation { solver: string; boundaries: FluidBoundarySet; diagnostics: FluidDiagnostics; calibration: Readonly | null; fixedTimeStep: number | null; maxSubsteps: number; _maxFrameDelta: number; ubos: ParticleFluidUniforms | undefined; particleCount: number; grid: unknown; is3D: boolean; particleRadius: number; _positionsArray: Float32Array | undefined; _velocitiesArray: Float32Array | undefined; _prevPositionsArray: Float32Array | undefined; _domainSize: FluidComponentsInput; buffers: ParticleFluidBuffers | undefined; _accumulator: number; _prev: unknown; constructor({ solver, diagnostics }?: ParticleFluidSimulationOptions); setMaterial(material?: ParticleFluidMaterialOptions): this; setParticleLayout(layout?: ParticleFluidLayoutOptions): this; setTimeStepOptions(options?: ParticleFluidTimeStepOptions): this; addBoundary(boundary: FluidBoundaryProvider): this; removeBoundary(boundary: FluidBoundaryProvider): this; requestMetricsReadback(): this; getLastMetrics(): FluidMetrics | null; getStats(): ParticleFluidStats; reset(_renderer: unknown, initializationOptions?: FluidParticleLayoutOptions): Promise; } export {};