import type { EasingType } from '@visactor/vrender-core';
import { HybridEffectBase } from './base/CustomEffectBase';
export interface ParticleConfig {
    effectType?: 'explode' | 'vortex' | 'gravity';
    count?: number;
    size?: number;
    strength?: number;
    useWebGL: boolean;
}
export interface ParticleData {
    x: number;
    y: number;
    originX: number;
    originY: number;
    vx: number;
    vy: number;
    r: number;
    g: number;
    b: number;
    a: number;
    life: number;
    size: number;
}
export declare class Particle extends HybridEffectBase {
    private particles;
    private positionBuffer;
    private colorBuffer;
    private particleConfig;
    constructor(from: null, to: null, duration: number, easing: EasingType, params: any);
    protected getShaderSources(): {
        vertex: string;
        fragment: string;
    } | null;
    protected applyWebGLEffect(canvas: HTMLCanvasElement): HTMLCanvasElement | null;
    protected applyCanvas2DEffect(canvas: HTMLCanvasElement): HTMLCanvasElement | null;
    private extractParticles;
    private updateParticles;
    private applyParticleForces;
    private applyGravityEffect;
    private applyVortexEffect;
    private updateParticleProperties;
    private prepareAndDrawParticles;
    private updateParticleBuffers;
    private setParticleUniforms;
    private cleanupTempBuffers;
    private applyCanvas2DExplode;
    private applyCanvas2DGravity;
    private applyCanvas2DVortex;
}
