import { BufferGeometry, TypedArray } from 'three';
export type BufferAttributeDrawRange = {
    start: number;
    count: number;
};
export type BufferAttributeGroups = (BufferAttributeDrawRange & {
    materialIndex?: number | undefined;
})[];
export type BufferAttributeLike = {
    array: TypedArray;
    itemSize: number;
};
export type BufferGeometryLike = {
    [index: string]: any;
    drawRange?: BufferAttributeDrawRange | undefined;
    groups?: BufferAttributeGroups | undefined;
    attributes: Record<string, BufferAttributeLike>;
    index?: ArrayBufferLike | undefined;
    userData?: any;
};
export type PackedBufferAttribute = {
    buffer: ArrayBufferLike;
    attributeType: string;
    itemSize: number;
};
export type PackedAttributes = Record<string, PackedBufferAttribute>;
export type PackedBufferGeometry = {
    drawRange: BufferAttributeDrawRange;
    groups: BufferAttributeGroups;
    attributes: PackedAttributes;
    index: ArrayBufferLike | undefined;
    indexType: string | undefined;
    userData?: any;
};
export type PackedBufferGeometryCollection = Record<string, PackedBufferGeometry>;
export declare function getTypedArrayType(array: ArrayBufferLike): "Int8Array" | "Float32Array" | "Uint8Array" | "Int16Array" | "Uint16Array" | "Int32Array" | "Uint32Array" | "Float64Array";
export declare function getTypedArrayFromBuffer(buffer: ArrayBufferLike, type: string): Float32Array<ArrayBufferLike> | Int8Array<ArrayBufferLike> | Uint8Array<ArrayBufferLike> | Int16Array<ArrayBufferLike> | Uint16Array<ArrayBufferLike> | Int32Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike> | Float64Array<ArrayBufferLike>;
export declare function packAttribute(typedArray: TypedArray, itemSize?: number): PackedBufferAttribute;
export declare function packBufferGeometryLike(geometry: BufferGeometryLike): [PackedBufferGeometry, ArrayBufferLike[]];
export declare function packBufferGeometry(bufferGeometry: BufferGeometry): [PackedBufferGeometry, ArrayBufferLike[]];
export declare function packBufferGeometries(bufferGeometries: BufferGeometry[]): {
    data: PackedBufferGeometryCollection;
    transferrables: ArrayBufferLike[];
};
export declare function unpackBufferGeometry(packed: PackedBufferGeometry): BufferGeometry<import('three').NormalBufferAttributes>;
export declare function unpackBufferGeometries(data: PackedBufferGeometryCollection): Record<string, BufferGeometry<import('three').NormalBufferAttributes>>;
