import { TgdDataset } from "../../dataset";
import { TgdShaderFragment, TgdShaderVertex } from "../../shader";
import { TgdPainter } from "../painter";
import { TgdContext } from "../../context";
import { TgdProgram } from "../../program";
import { TgdTexture2D, TgdTextureCube } from "../../texture";
export interface TgdPainterParticlesUniformsContext {
    time: number;
    delta: number;
    prg: TgdProgram;
}
export interface TgdPainterParticlesOptions {
    name?: string;
    dataset: TgdDataset;
    drawMode: "POINTS" | "LINES" | "TRIANGLES";
    shader: {
        vert: TgdShaderVertex;
        frag: TgdShaderFragment;
    };
    textures?: Record<string, TgdTexture2D | TgdTextureCube>;
    setUniforms?(options: TgdPainterParticlesUniformsContext): void;
    prefixAttribute?: string;
    prefixVarying?: string;
}
export declare class TgdPainterParticles extends TgdPainter {
    readonly context: TgdContext;
    protected static counter: number;
    readonly count: number;
    drawMode: "POINTS" | "LINES" | "TRIANGLES";
    setUniforms?: (options: TgdPainterParticlesUniformsContext) => void;
    private readonly textures;
    private readonly vaos;
    private readonly buffers;
    private readonly prg;
    private pingPong;
    constructor(context: TgdContext, { name, dataset, shader, drawMode, textures, setUniforms, prefixAttribute, prefixVarying, }: TgdPainterParticlesOptions);
    paint(time: number, delta: number): void;
    delete(): void;
}
//# sourceMappingURL=particles.d.ts.map