import type { ColorLike, Particle, Vector3Like } from "./Particle.js";
import type { ParticleSystem } from "./ParticleSystem.js";
export interface ParticleSprite {
    id: number;
    position: Vector3Like;
    color: ColorLike;
    size: number;
    rotation: number;
}
export interface ParticleBatchBounds {
    min: Vector3Like;
    max: Vector3Like;
}
export interface ParticleRenderBatch {
    sprites: ParticleSprite[];
    liveCount: number;
    uploadedBytes: number;
    bounds: ParticleBatchBounds | null;
}
export interface ParticleDrawTarget {
    drawParticles(batch: ParticleRenderBatch): void;
}
export type ParticleSortMode = "none" | "front-to-back" | "back-to-front";
export interface ParticleRenderOptions {
    readonly sort?: ParticleSortMode;
    readonly cameraPosition?: Vector3Like;
}
export declare class ParticleRenderer {
    private lastBatch;
    buildBatch(particles: readonly Particle[], options?: ParticleRenderOptions): ParticleRenderBatch;
    render(system: ParticleSystem, target: ParticleDrawTarget, options?: ParticleRenderOptions): ParticleRenderBatch;
    getLastBatch(): ParticleRenderBatch;
}
//# sourceMappingURL=ParticleRenderer.d.ts.map