import * as UmbraMath from './Math' import { TextureFormat, TextureType, ColorSpace } from './NativeEnums' export * from './NativeEnums' export type UserPointer = number export type Pointer = number export interface ByteBuffer { ptr: Pointer byteSize: number flags: number } export interface ElementBuffer { ptr: Pointer elementCapacity: number // buffer capacity, in number of elements elementByteSize: number // size of one element, in bytes elementStride: number // stride from element start to next element start, in bytes flags: number } export interface MaterialInfo { transparent: boolean textures: (UserPointer | undefined)[] // Entry for each TextureType value } export interface MeshInfo { bounds: { mn: UmbraMath.Vector3; mx: UmbraMath.Vector3 } material: UserPointer numUniqueVertices: number numIndices: number attributes: number } export interface TextureInfo { width: number height: number format: TextureFormat colorSpace: ColorSpace numMipLevels: number mipByteSizes: number[] mipByteOffsets: number[] dataByteSize: number type: TextureType metaDataByteSize: number } export interface SceneInfo { bounds: { mn: UmbraMath.Vector3; mx: UmbraMath.Vector3 } numLodLevels: number unitsToMeters: number ecefToLocal: UmbraMath.Matrix4x4 localToEcef: UmbraMath.Matrix4x4 } export interface EnvironmentInfo { textureSupportFlags: number localCacheDirectory: string localCacheMaximumByteSize: number } export interface StreamingState { numResourceLoadsActive: number numResourceLoadsPending: number numResidentTiles: number numResidentTilesLoaded: number numAssetLoadsPending: number } export interface TranscodeResult { texture: { width: number height: number format: TextureFormat dataByteSize: number data: Pointer } success: boolean }