export class ParticleVolume {
    __emitter: ParticleEmitter;
    /**
     *
     * @type {Transform}
     * @private
     */
    private __transform;
    /**
     * Particle count per unit of volume
     * @type {number}
     * @private
     */
    private __density;
    /**
     *
     * @type {AbstractShape3D}
     * @private
     */
    private __shape;
    /**
     *
     * @type {SamplingFunctionKind|number}
     * @private
     */
    private __sampling_function;
    /**
     *
     * @type {Entity}
     */
    entity: Entity;
    /**
     *
     * @type {Object<AttributeValue>}
     */
    attributes: any;
    get shape(): AbstractShape3D;
    /**
     * @private
     */
    private init_attributes;
    get emitter(): ParticleEmitter;
    get transform(): Transform;
    /**
     *
     * @param {number} [density]
     * @param {number} [particle_size]
     * @param {AbstractShape3D} [shape]
     * @param {boolean} sort
     * @param {boolean} lighting
     * @param {string} [sprite]
     * @param {SamplingFunctionKind|number} [sampling_function]
     */
    from({ density, particle_size, shape, sort, lighting, sprite, sampling_function }?: number): void;
    /**
     *
     * @param {number} density
     * @param {boolean} [is_density_size_adjusted]
     * @param {number} [particle_size]
     * @param {Object} shape
     * @param {boolean} [is_sorted]
     * @param {boolean} [is_lit]
     * @param {string} sprite
     * @param {Object<Object>} [attributes]
     * @param {string} [sampling_function]
     */
    fromJSON({ density, is_density_size_adjusted, particle_size, shape, is_sorted, is_lit, sprite, attributes, sampling_function }: number): void;
    /**
     *
     * @private
     */
    private __ensure_initialized;
    __distribute_grid(): void;
    /**
     *
     * @param {function} random
     * @private
     */
    private __distribute;
    /**
     * Distribute particles in the volume
     * @param {function():number} random
     * @private
     */
    private __distribute_random;
    /**
     *
     * @private
     */
    private __write_attributes;
    /**
     *
     * @param {number} index
     * @private
     */
    private __write_attribute;
    build(): void;
    /**
     *
     * @param {number} r
     * @param {number} g
     * @param {number} b
     * @param {number} a
     */
    setColor(r: number, g: number, b: number, a: number): void;
}
export namespace ParticleVolume {
    let typeName: string;
}
import { ParticleEmitter } from "../../emitter/ParticleEmitter.js";
import Entity from "../../../../../../ecs/Entity.js";
import { Transform } from "../../../../../../ecs/transform/Transform.js";
//# sourceMappingURL=ParticleVolume.d.ts.map