import type { FluidCalibrationMode, FluidCalibrationResult } from './FluidCalibration.js'; import type { FluidMaterialOptions, FluidMaterialPresets } from './FluidMaterials.js'; import type { FluidComponentsInput, FluidInitializationMode } from './FluidInitialization.js'; export type FluidSolver = 'pbf' | 'sph'; export type FluidMaterialPresetName = keyof FluidMaterialPresets; export interface FluidMaterialConfiguration extends FluidMaterialOptions { preset?: FluidMaterialPresetName; } export interface FluidParticleConfigurationOptions { count?: number | undefined; spacing?: number | undefined; particleRadius?: number | 'auto' | undefined; smoothingRadius?: number | 'auto' | undefined; mass?: number | 'auto' | undefined; dimension?: number | string | undefined; calibrationMode?: FluidCalibrationMode | undefined; readonly [name: string]: unknown; } export interface FluidParticleConfiguration extends FluidParticleConfigurationOptions { count: number; spacing: number; particleRadius: number | 'auto'; smoothingRadius: number | 'auto'; mass: number | 'auto'; dimension: 2 | 3; calibrationMode: FluidCalibrationMode; } export interface FluidDomainConfigurationOptions { dimensions?: FluidComponentsInput | undefined; particleRadiusOffset?: boolean | undefined; restitution?: number | undefined; friction?: number | undefined; readonly [name: string]: unknown; } export interface FluidDomainConfiguration extends FluidDomainConfigurationOptions { dimensions: FluidComponentsInput; particleRadiusOffset: boolean; restitution: number; friction: number; } export interface FluidTimeStepConfigurationOptions { fixedDelta?: number | undefined; maxSubsteps?: number | undefined; maxFrameDelta?: number | undefined; policy?: string | undefined; timeScale?: number | undefined; readonly [name: string]: unknown; } export interface FluidTimeStepConfiguration extends FluidTimeStepConfigurationOptions { fixedDelta: number; maxSubsteps: number; maxFrameDelta: number; policy: string; timeScale: number; } export interface FluidNeighborConfigurationOptions { enabled?: boolean | undefined; buildAlgorithm?: string | undefined; lookupAlgorithm?: string | undefined; readonly [name: string]: unknown; } export interface FluidNeighborConfiguration extends FluidNeighborConfigurationOptions { enabled: boolean; buildAlgorithm: string; lookupAlgorithm: string; } export interface FluidInitializationConfiguration { mode?: FluidInitializationMode | undefined; fill?: FluidComponentsInput | undefined; jitter?: number | undefined; seed?: number | undefined; readonly [name: string]: unknown; } export interface FluidSolverConfigurationOptions { iterations?: number | undefined; solverIterations?: number | undefined; xsphViscosity?: number | undefined; vorticityConfinement?: number | undefined; equationOfState?: 'linear' | 'tait' | undefined; speedOfSound?: number | undefined; gamma?: number | undefined; kinematicViscosity?: number | undefined; densityDiffusion?: number | undefined; readonly [name: string]: unknown; } export interface FluidSpatialGridOptions { buildAlgorithm?: string | undefined; lookupAlgorithm?: string | undefined; readonly [name: string]: unknown; } export interface FluidConfigurationOptions { solver?: FluidSolver | undefined; material?: FluidMaterialConfiguration | undefined; particles?: FluidParticleConfigurationOptions | undefined; domain?: FluidDomainConfigurationOptions | undefined; timeStep?: FluidTimeStepConfigurationOptions | undefined; neighbors?: FluidNeighborConfigurationOptions | undefined; initialization?: FluidInitializationConfiguration | undefined; solverOptions?: FluidSolverConfigurationOptions | undefined; diagnostics?: Record | undefined; count?: number | undefined; spacing?: number | undefined; h?: number | undefined; particleRadius?: number | undefined; mass?: number | undefined; restDensity?: number | undefined; is3D?: boolean | undefined; calibrationMode?: FluidCalibrationMode | undefined; domainDimensions?: FluidComponentsInput | undefined; restitution?: number | undefined; friction?: number | undefined; fixedTimeStep?: number | undefined; maxSubsteps?: number | undefined; maxFrameDelta?: number | undefined; timeScale?: number | undefined; useSpatialGrid?: boolean | undefined; spatialGridOptions?: FluidSpatialGridOptions | undefined; readonly [name: string]: unknown; } export interface FluidCanonicalConfiguration { solver: FluidSolver; particles: FluidParticleConfiguration; material: FluidMaterialOptions; timeStep: FluidTimeStepConfiguration; domain: FluidDomainConfiguration; neighbors: FluidNeighborConfiguration; initialization: FluidInitializationConfiguration; solverOptions: FluidSolverConfigurationOptions; diagnostics: Record; calibration: Readonly; legacy: FluidConfigurationOptions; } export interface FluidSolverOptions extends FluidConfigurationOptions { count: number; is3D: boolean; domainDimensions: FluidComponentsInput; mass: number; h: number; restDensity: number; restitution: number; friction: number; particleRadius: number; fixedTimeStep: number; maxSubsteps: number; maxFrameDelta: number; timeScale: number; useSpatialGrid: boolean; spatialGridOptions: FluidSpatialGridOptions; initialization: FluidInitializationConfiguration; calibration: Readonly; diagnostics: Record; } /** Canonical nested particle-fluid configuration normalizer. */ export declare class FluidConfiguration { static normalize(options?: FluidConfigurationOptions, defaults?: FluidConfigurationOptions): FluidCanonicalConfiguration; static toSolverOptions(configuration: FluidCanonicalConfiguration | FluidConfigurationOptions): FluidSolverOptions; }