import { ProgramWrapper } from './webgl/util';
export interface ParticleProgramAttributes {
    a_pos: number;
    a_index: number;
}
export interface ParticleProgramUniforms {
    u_screen: WebGLUniformLocation;
    u_opacity: WebGLUniformLocation;
    u_wind: WebGLUniformLocation;
    u_particles: WebGLUniformLocation;
    u_color_ramp: WebGLUniformLocation;
    u_particles1: WebGLUniformLocation;
    u_particles2: WebGLUniformLocation;
    u_particles_res: WebGLUniformLocation;
    u_viewport: WebGLUniformLocation;
    u_wind_min: WebGLUniformLocation;
    u_wind_max: WebGLUniformLocation;
    uVPars1: WebGLUniformLocation;
    u_wind_res: WebGLUniformLocation;
    u_rand_seed: WebGLUniformLocation;
    u_speed_factor: WebGLUniformLocation;
    u_drop_rate: WebGLUniformLocation;
    u_drop_rate_bump: WebGLUniformLocation;
}
export declare abstract class ParticleProgram {
    screenProgram: ProgramWrapper<string, any>;
    drawParticleProgram: ProgramWrapper<string, any>;
    updateParticleProgram: ProgramWrapper<string, any>;
    abstract createProgram(gl: WebGLRenderingContext): void;
}
