import type { StructArray, StructArrayMember } from '../util/struct_array';
import type Program from '../render/program';
import type Context from '../gl/context';
/**
 * The `VertexBuffer` class turns a `StructArray` into a WebGL buffer. Each member of the StructArray's
 * Struct type is converted to a WebGL atribute.
 * @private
 */
declare class VertexBuffer {
    length: number;
    attributes: ReadonlyArray<StructArrayMember>;
    itemSize: number;
    dynamicDraw: boolean | undefined | null;
    context: Context;
    buffer: WebGLBuffer;
    /**
     * @param dynamicDraw Whether this buffer will be repeatedly updated.
     * @private
     */
    constructor(context: Context, array: StructArray, attributes: ReadonlyArray<StructArrayMember>, dynamicDraw?: boolean);
    bind(): void;
    updateData(array: StructArray): void;
    enableAttributes(gl: WebGLRenderingContext, program: Program<any>): void;
    /**
     * Set the attribute pointers in a WebGL context
     * @param gl The WebGL context
     * @param program The active WebGL program
     * @param vertexOffset Index of the starting vertex of the segment
     */
    setVertexAttribPointers(gl: WebGLRenderingContext, program: Program<any>, vertexOffset?: number | null): void;
    /**
     * Destroy the GL buffer bound to the given WebGL context
     */
    destroy(): void;
}
export default VertexBuffer;
//# sourceMappingURL=vertex_buffer.d.ts.map