import { Rand } from "@galacean/engine-math";
import { ICustomClone } from "../../clone/ComponentCloner";
import { ParticleScaleMode } from "../enums/ParticleScaleMode";
import { ParticleSimulationSpace } from "../enums/ParticleSimulationSpace";
import { ParticleCompositeCurve } from "./ParticleCompositeCurve";
import { ParticleCompositeGradient } from "./ParticleCompositeGradient";
export declare class MainModule implements ICustomClone {
    private _tempVector40;
    private static _vector3One;
    private static readonly _positionScale;
    private static readonly _sizeScale;
    private static readonly _worldPosition;
    private static readonly _worldRotation;
    private static readonly _gravity;
    private static readonly _simulationSpace;
    private static readonly _startRotation3D;
    private static readonly _scaleMode;
    /** The duration of the Particle Generator in seconds. */
    duration: number;
    /** Specifies whether the Particle Generator loops. */
    isLoop: boolean;
    /** Start delay in seconds. */
    startDelay: ParticleCompositeCurve;
    /** A flag to enable 3D particle rotation, when disabled, only `startRotationZ` is used. */
    startRotation3D: boolean;
    /** The initial rotation of particles around the x-axis when emitted, in degrees. */
    startRotationX: ParticleCompositeCurve;
    /** The initial rotation of particles around the y-axis when emitted, in degrees. */
    startRotationY: ParticleCompositeCurve;
    /** The initial rotation of particles around the z-axis when emitted, in degrees. */
    startRotationZ: ParticleCompositeCurve;
    /** Makes some particles spin in the opposite direction. */
    flipRotation: number;
    /** The mode of start color */
    startColor: ParticleCompositeGradient;
    /** A scale that this Particle Generator applies to gravity, defined by Physics.gravity. */
    /** Override the default playback speed of the Particle Generator. */
    simulationSpeed: number;
    /** Control how the Particle Generator applies its Transform component to the particles it emits. */
    scalingMode: ParticleScaleMode;
    /** If set to true, the Particle Generator automatically begins to play on startup. */
    playOnEnabled: boolean;
    readonly _gravityModifierRand: Rand;
    private _startLifetime;
    private _startSpeed;
    private _startSize3D;
    private _startSizeX;
    private _startSizeY;
    private _startSizeZ;
    private _gravityModifier;
    private _simulationSpace;
    private _generator;
    /**
     * The initial lifetime of particles when emitted.
     */
    get startLifetime(): ParticleCompositeCurve;
    set startLifetime(value: ParticleCompositeCurve);
    /**
     * The initial speed of particles when the Particle Generator first spawns them.
     */
    get startSpeed(): ParticleCompositeCurve;
    set startSpeed(value: ParticleCompositeCurve);
    /**
     * A flag to enable specifying particle size individually for each axis.
     */
    get startSize3D(): boolean;
    set startSize3D(value: boolean);
    /**
     * The initial size of particles along the x-axis when the Particle Generator first spawns them.
     */
    get startSizeX(): ParticleCompositeCurve;
    set startSizeX(value: ParticleCompositeCurve);
    /**
     * The initial size of particles along the y-axis when the Particle Generator first spawns them.
     */
    get startSizeY(): ParticleCompositeCurve;
    set startSizeY(value: ParticleCompositeCurve);
    /**
     * The initial size of particles along the z-axis when the Particle Generator first spawns them.
     */
    get startSizeZ(): ParticleCompositeCurve;
    set startSizeZ(value: ParticleCompositeCurve);
    /**
     * A scale that this Particle Generator applies to gravity, defined by Physics.gravity.
     */
    get gravityModifier(): ParticleCompositeCurve;
    set gravityModifier(value: ParticleCompositeCurve);
    /**
     * This selects the space in which to simulate particles. It can be either world or local space.
     */
    get simulationSpace(): ParticleSimulationSpace;
    set simulationSpace(value: ParticleSimulationSpace);
    /**
     * Max particles count.
     */
    get maxParticles(): number;
    set maxParticles(value: number);
    /**
     * The initial size of particles when the Particle Generator first spawns them.
     */
    get startSize(): ParticleCompositeCurve;
    set startSize(value: ParticleCompositeCurve);
    private _onCompositeCurveChange;
}
