export class ParticlePool {
    /**
     *
     * @param {AttributeGroupSpec} spec
     * @constructor
     */
    constructor(spec: AttributeGroupSpec);
    /**
     *
     * @type {BitSet}
     */
    occupancy: BitSet;
    /**
     *
     * @type {BufferAttribute[]}
     */
    attributes: BufferAttribute[];
    /**
     * @type {ObservedValue.<BufferGeometry>}
     */
    geometry: any;
    /**
     *
     * @type {number}
     */
    growFactor: number;
    /**
     *
     * @type {number}
     */
    shrinkFactor: number;
    /**
     *
     * @type {number}
     */
    capacity: number;
    /**
     *
     * @type {AttributeGroupSpec}
     */
    spec: AttributeGroupSpec;
    size(): number;
    /**
     *
     * @returns {number}
     */
    create(): number;
    /**
     * Returns true if particle has discontinuous unused slots (holes)
     * @returns {boolean}
     */
    hasHoles(): boolean;
    /**
     *
     * @param {number} index
     */
    remove(index: number): void;
    /**
     * Remove holes from the occupancy set
     */
    compact(): void;
    updateAttributes(): void;
    update(): void;
    /**
     * Swap two particles identified by index
     * NOTE: Only attributes are swapped, occupancy is unaffected.
     * @param {number} indexA
     * @param {number} indexB
     */
    swap(indexA: number, indexB: number): void;
    build(): void;
    /**
     *
     * @param {number} capacity
     */
    growCapacity(capacity: number): void;
    /**
     *
     * @param {number} newCapacity
     */
    shrinkCapacity(newCapacity: number): void;
    /**
     *
     * @param {number} newCapacity
     */
    setCapacity(newCapacity: number): void;
    /**
     *
     * @param {int} particleIndex
     * @param {int} attributeIndex
     * @returns {number}
     */
    readAttributeScalar(particleIndex: int, attributeIndex: int): number;
    /**
     *
     * @param {int} particleIndex
     * @param {int} attributeIndex
     * @param {number} value
     */
    writeAttributeScalar(particleIndex: int, attributeIndex: int, value: number): void;
    /**
     *
     * @param {int} particleIndex
     * @param {int} attributeIndex
     * @param {number[]} result
     */
    readAttributeVector2(particleIndex: int, attributeIndex: int, result: number[]): void;
    /**
     *
     * @param {int} particleIndex
     * @param {int} attributeIndex
     * @param {number} x
     * @param {number} y
     */
    writeAttributeVector2(particleIndex: int, attributeIndex: int, x: number, y: number): void;
    /**
     *
     * @param {int} particleIndex
     * @param {int} attributeIndex
     * @param {number[]} result
     */
    readAttributeVector3(particleIndex: int, attributeIndex: int, result: number[]): void;
    /**
     *
     * @param {int} particleIndex
     * @param {int} attributeIndex
     * @param {number} x
     * @param {number} y
     * @param {number} z
     */
    writeAttributeVector3(particleIndex: int, attributeIndex: int, x: number, y: number, z: number): void;
    /**
     *
     * @param {int} particleIndex
     * @param {int} attributeIndex
     * @param {number[]} result
     */
    readAttributeVector4(particleIndex: int, attributeIndex: int, result: number[]): void;
    /**
     *
     * @param {int} particleIndex
     * @param {int} attributeIndex
     * @param {number} x
     * @param {number} y
     * @param {number} z
     * @param {number} w
     */
    writeAttributeVector4(particleIndex: int, attributeIndex: int, x: number, y: number, z: number, w: number): void;
    /**
     * Write the same attribute value for every particle.
     * Assumes particles are packed (no holes).
     * @param {number} attribute_index
     * @param {number[]|Float32Array|Uint8Array|Uint16Array|Int8Array|Int32Array} value
     */
    writeAttributeForAllArray(attribute_index: number, value: number[] | Float32Array | Uint8Array | Uint16Array | Int8Array | Int32Array): void;
    /**
     *
     * @param {number} attribute_index
     * @param {number[]} result
     */
    computeAttributeVector3AxisAlignedBoundingBox(attribute_index: number, result: number[]): void;
    dispose(): void;
}
import { BitSet } from "../../../../../../core/binary/BitSet.js";
import { BufferAttribute } from 'three';
//# sourceMappingURL=ParticlePool.d.ts.map