export interface VxlSummary { version: number; minVoxelSize: number; boundingBox: { minX: number; minY: number; minZ: number; maxX: number; maxY: number; maxZ: number; }; fragmentCount: number; /** Absent when the fragment table could not be walked to its end. */ voxelCount?: number; } /** True when the first four bytes are the VXL3 magic — cheap, no copy, no decompression. */ export declare function isVxl3(bytes: Uint8Array): boolean; /** * Read a VXL3 file's header. Returns `null` for anything that is not a well-formed VXL3 — a legacy * JSON `.vxl`, a truncated file, an unknown compression id — so the caller can name the problem * instead of writing an asset entry the engine would then fail to load. */ export declare function summarizeVxl(bytes: Uint8Array): VxlSummary | null; /** * True when these bytes really are a binary GLB. * * Checked before `assets add` uploads a `.glb` and spends a minute launching a browser: a `.gltf` * renamed, a truncated download or a Git-LFS pointer otherwise sails through classification and * fails inside the engine, with the bytes already in storage and no way to delete them. The `.vxl` * lane has always had this via `isVxl3`; this is the same guard for the other binary kind. */ export declare function isGlb(bytes: Uint8Array): boolean;