import { Particle, ParticleCreation } from '../interfaces/particle.interface.js'; import { SimulationInterface, SimulationOptions, SimulationOutput } from '../interfaces/simulation.interface.js'; import { DiffusionEquation } from '../interfaces/time.interface.js'; export declare class Simulation implements SimulationInterface { running: boolean; stopped: boolean; particles: Particle[]; options: SimulationOptions; private particles_history; private times; private pause_interval; private current_simulation_step; private readonly BOLTZMANN_CONSTANT; constructor(options: SimulationOptions); initParticles(): void; addParticle(particle: ParticleCreation): void; stop(): SimulationOutput; pause(): void; resume(): void; run(): Promise; /** * @description Finish the simulation and return the output */ finish(): SimulationOutput; /** * @description Process a particle at a given step and time */ processParticleAtGivenStepAndTime(particle: Particle, time: number, step_size: number): Particle; /** * @description Get the diffusion coefficient at a given time for a given particle. Calculates the global diffusion coefficient if it is defined, otherwise uses the particle's diffusion coefficient */ getDiffusionCoefficient(particle: Particle, time: number): number; /** * @description Get the diffusion coefficient based on the equation provided */ getDiffusionCoefficientBasedOnEquation(equation: DiffusionEquation, particle: Particle): number; /** * @description Calculate the diffusion coefficient using the Einstein-Stokes equation */ einsteinStokesEquation(particle: Particle): number; /** * @description Run validations on the simulation options to ensure the simulation can run */ runValidations(): void; /** * @description Validate the particles in the simulation */ validateParticles(particles: Particle[]): void; }