import type { TypedArray, VertexAttributeDataType, VertexAttributeUsageType, VertexObjectBuffersData } from './types.js';
import { VertexObjectDescriptor } from './VertexObjectDescriptor.js';
interface BufferAttribute {
    bufferName: string;
    attributeName: string;
    offset: number;
}
interface Buffer {
    bufferName: string;
    itemSize: number;
    dataType: VertexAttributeDataType;
    usageType: VertexAttributeUsageType;
    typedArray: TypedArray;
    serial: number;
}
export declare class VertexObjectBuffer {
    readonly descriptor: VertexObjectDescriptor;
    readonly capacity: number;
    readonly attributeNames: readonly string[];
    readonly buffers: Map<string, Buffer>;
    readonly bufferAttributes: Map<string, BufferAttribute>;
    readonly bufferNameAttributes: Map<string, BufferAttribute[]>;
    constructor(source: VertexObjectDescriptor | VertexObjectBuffer, capacityOrBuffersData: number | VertexObjectBuffersData);
    copy(other: VertexObjectBuffer, targetObjectOffset?: number): VertexObjectBuffer;
    clone(): VertexObjectBuffer;
    copyArray(source: TypedArray, bufferName: string, targetObjectOffset?: number): void;
    copyWithin(targetIndex: number, startIndex: number, endIndex?: number): void;
    copyAttributes(attributes: Record<string, ArrayLike<number>>, targetObjectOffset?: number): number;
    toAttributeArrays(attributeNames: string[], startIndex?: number, endIndex?: number): Record<string, TypedArray>;
    touch(): void;
}
export {};
//# sourceMappingURL=VertexObjectBuffer.d.ts.map