/**
 * Helper class, allowing us to treat geometry build process as a stream without having to create intermediate arrays and performing unnecessary copying
 */
export class StreamGeometryBuilder {
    /**
     *
     * @type {number}
     */
    cursor_vertices: number;
    /**
     *
     * @type {number}
     */
    cursor_indices: number;
    /**
     *
     * @type {Float32Array|number[]|null}
     * @private
     */
    private __vertex_positions;
    /**
     *
     * @type {Float32Array|number[]|null}
     * @private
     */
    private __vertex_normals;
    /**
     *
     * @type {Float32Array|number[]|null}
     * @private
     */
    private __vertex_uvs;
    /**
     *
     * @type {Uint8Array|Uint16Array|Uint32Array|number[]|null}
     * @private
     */
    private __indices;
    get positions(): number[] | Float32Array<ArrayBufferLike>;
    get normals(): number[] | Float32Array<ArrayBufferLike>;
    get uvs(): number[] | Float32Array<ArrayBufferLike>;
    get indices(): number[] | Uint8Array<ArrayBufferLike> | Uint16Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>;
    /**
     *
     * @param {number} vertex_count
     * @param {number} polygon_count
     */
    allocate(vertex_count: number, polygon_count: number): void;
    /**
     * @returns {THREE.BufferGeometry}
     */
    build(): THREE.BufferGeometry;
}
//# sourceMappingURL=StreamGeometryBuilder.d.ts.map