import { ParticleStopMode } from "./enums/ParticleStopMode";
import { ColorOverLifetimeModule } from "./modules/ColorOverLifetimeModule";
import { EmissionModule } from "./modules/EmissionModule";
import { ForceOverLifetimeModule } from "./modules/ForceOverLifetimeModule";
import { LimitVelocityOverLifetimeModule } from "./modules/LimitVelocityOverLifetimeModule";
import { MainModule } from "./modules/MainModule";
import { RotationOverLifetimeModule } from "./modules/RotationOverLifetimeModule";
import { SizeOverLifetimeModule } from "./modules/SizeOverLifetimeModule";
import { TextureSheetAnimationModule } from "./modules/TextureSheetAnimationModule";
import { VelocityOverLifetimeModule } from "./modules/VelocityOverLifetimeModule";
/**
 * Particle Generator.
 */
export declare class ParticleGenerator {
    private static _tempVector20;
    private static _tempVector21;
    private static _tempVector22;
    private static _tempVector30;
    private static _tempVector31;
    private static _tempVector32;
    private static _tempMat;
    private static _tempColor0;
    private static _tempParticleRenderers;
    private static readonly _particleIncreaseCount;
    private static readonly _transformedBoundsIncreaseCount;
    private static readonly _transformFeedbackMacro;
    /** Use auto random seed. */
    useAutoRandomSeed: boolean;
    /** Main module. */
    readonly main: MainModule;
    /** Emission module. */
    readonly emission: EmissionModule;
    /** Velocity over lifetime module. */
    readonly velocityOverLifetime: VelocityOverLifetimeModule;
    /** Force over lifetime module. */
    readonly forceOverLifetime: ForceOverLifetimeModule;
    /** Limit velocity over lifetime module. */
    readonly limitVelocityOverLifetime: LimitVelocityOverLifetimeModule;
    /** Size over lifetime module. */
    readonly sizeOverLifetime: SizeOverLifetimeModule;
    /** Rotation over lifetime module. */
    readonly rotationOverLifetime: RotationOverLifetimeModule;
    /** Color over lifetime module. */
    readonly colorOverLifetime: ColorOverLifetimeModule;
    /** Texture sheet animation module. */
    readonly textureSheetAnimation: TextureSheetAnimationModule;
    private _isPlaying;
    private _instanceBufferResized;
    private _waitProcessRetiredElementCount;
    private _instanceVertexBufferBinding;
    private _instanceVertices;
    private _randomSeed;
    private _transformedBoundsArray;
    private _transformedBoundsCount;
    private _firstActiveTransformedBoundingBox;
    private _firstFreeTransformedBoundingBox;
    private _playStartDelay;
    /**
     * Whether the particle generator is contain alive or is still creating particles.
     */
    get isAlive(): boolean;
    /**
     * Random seed.
     *
     * @remarks
     * If `useAutoRandomSeed` is true, this value will be random changed when play.
     * If you set this value custom, `useAutoRandomSeed` will be false.
     */
    get randomSeed(): number;
    set randomSeed(value: number);
    /**
     * Start emitting particles.
     * @param withChildren - Whether to start the particle generator of the child entity
     */
    play(withChildren?: boolean): void;
    /**
     * Stop emitting particles.
     * @param withChildren - Whether to stop the particle generator of the child entity
     * @param stopMode - Stop mode
     */
    stop(withChildren?: boolean, stopMode?: ParticleStopMode): void;
    /**
     * Manually emit certain number of particles immediately.
     * @param count - Number of particles to emit
     */
    emit(count: number): void;
    private _addNewParticle;
    private _addFeedbackParticle;
    private _clearActiveParticles;
    private _retireActiveParticles;
    private _freeRetiredParticles;
    private _addActiveParticlesToVertexBuffer;
    private _addVertexBufferBindingsFilterDuplicate;
    private _resizeTransformedBoundsArray;
    private _retireTransformedBounds;
    private _calculateGeneratorBounds;
    private _mergeTransformedBounds;
    private _calculateTransformedBounds;
    private _addGravityToBounds;
    private _getExtremeValueFromZero;
}
