import { EasingFunction } from "../easing"; import { Module, ModuleObject } from "../module"; import { Particle } from "../particle"; import { ParticleEffect } from "../particleEffect"; import { Velocity } from "../types"; declare type ParticleWithInitialVelocity = Particle & { /** * Saved initial velocity of particle. This is cached when particle is added. */ _velocityOverLifetime_initialVelocity?: Velocity; }; /** * Module that deaccelerates particle velocity over its lifetime. * * The direction of the deacceleration is based on the initial velocity of each particle. * For this reason, you should ensure that the module that initializes particle velocity is listed BEFORE this module! * * Deacceleration animation can be customized with `easing` property. * * This module modifies `Particle.velocity` property, but does not reassign it so this can be combined with other modules which affect particle velocity. * * @module * @category Modifier * easing { * @tooltip TODO * @type EasingFunction * @defaultValue easeOutSine * } */ export declare class DeaccelerationOverLifetime extends Module { /** * Easing function that controls the animation of velocity. * * Assign via `EasingFunctions` export. */ easing: EasingFunction; init(): void; handleParticleAdd: (particle: ParticleWithInitialVelocity) => void; update(dt: number): void; /** * Wrap the properties of the module into a JSON containing only primitive JavaScript data types * (such as numbers, strings, etc.) that can be serialized into strings natively. */ toObject(): ModuleObject; static fromObject(particleEffect: ParticleEffect, object: ModuleObject, hideWarnings: boolean): DeaccelerationOverLifetime; /** * Serializable identifier for the module. * * This must be unique between all existing Modules in the library. */ static moduleTypeId: string; } export {};