import * as THREE from 'three';
import { TweenKeyframe } from './utils';
type ParticleType = 'CUBE' | 'SPHERE';
/**
 * GPU粒子系统初始化参数
 */
interface ParticleArgs {
    /** 粒子的初始位置坐标 */
    positionBase: THREE.Vector3;
    /** 粒子坐标的抖动计算形式 */
    positionStyle: ParticleType;
    /** 粒子坐标的抖动`CUBE`计算形式下的扩散值 */
    positionCubeSpread: THREE.Vector3;
    /** 粒子坐标的抖动`SPHERE`计算形式下的扩散值 */
    positionSphereSpread: number;
    /** 粒子速度的抖动计算形式 */
    velocityStyle: ParticleType;
    /** 粒子速度的`CUBE`计算形式下的速度值 */
    velocityCubeBase: THREE.Vector3;
    /** 粒子速度的`CUBE`计算形式下的扩散值 */
    velocityCubeSpread: THREE.Vector3;
    /** 粒子速度的`SPHERE`计算形式下的速度值 */
    velocitySphereBase: number;
    /** 粒子速度的`SPHERE`计算形式下的扩散值 */
    velocitySphereSpread: number;
    /** 粒子加速度 */
    accelerationBase: THREE.Vector3;
    /** 粒子加速度扩散值 */
    accelerationSpread: THREE.Vector3;
    /** 旋转角度初始值 */
    angleBase: number;
    /** 旋转角度初始值的扩散值 */
    angleSpread: number;
    /** 旋转角度速度值 */
    angleVelocityBase: number;
    /** 旋转角度速度值的扩散值 */
    angleVelocitySpread: number;
    /** 粒子大小 */
    sizeBase: number;
    /** 粒子大小的扩散值 */
    sizeSpread: number;
    /** 粒子大小增长率 */
    sizeGrowth: number;
    /** 颜色（hsl） */
    colorBase: THREE.Vector3;
    /** 颜色（hsl）的扩散值 */
    colorSpread: THREE.Vector3;
    /** 透明度 */
    opacityBase: number;
    /** 透明度的扩散值 */
    opacitySpread: number;
    /** 贴图素材 */
    texture: THREE.Texture;
    /** 材质混合方式 */
    blending: THREE.Blending;
    /** 一秒产生多少粒子 */
    particlesPerSecond: number;
    /** 粒子存活时长 */
    particleDeathAge: number;
    /** 重力 */
    gravity: THREE.Vector3;
    /** 噪声强度 */
    noiseStrength: number;
    /** 阻尼系数 */
    damping: number;
}
declare class Particle extends THREE.Points<THREE.BufferGeometry, THREE.ShaderMaterial> {
    needsRender: boolean;
    paused: boolean;
    private disposed;
    private startTime;
    private particleCount;
    particlesPerSecond: number;
    particleDeathAge: number;
    constructor(args: Partial<ParticleArgs>);
    /** 贴图素材 */
    get texture(): THREE.Texture | null;
    set texture(value: THREE.Texture | null);
    /** 材质混合方式 */
    get blending(): THREE.Blending;
    set blending(value: THREE.Blending);
    /** 暂停 */
    pause(): void;
    /** 开始 */
    play(): void;
    /**
     * 通过 Five 默认调用的 setTime 方法
     * @param time - 毫秒
     */
    setTime(time: number): void;
    /** 析构 */
    dispose(): void;
}
export { Particle };
export type { ParticleArgs, ParticleType, TweenKeyframe as ParticleTweenKeyframe };
