import * as Native from './NativeTypes'; import { Pointer, ElementBuffer } from './NativeTypes'; import { UmbraFunctions } from './NativeFunctions'; import { TextureFormat, AssetLoadResult } from './NativeEnums'; import { Vector3 } from './Math'; import { LibraryConfig } from '.'; declare type EnvironmentType = 'WEB' | 'NODE' | 'SHELL' | 'WORKER'; declare type ValueType = 'number' | 'string' | 'array' | 'boolean'; declare type TypeCompatibleWithC = number | string | any[] | boolean; declare type WebAssemblyImports = Array<{ name: string; kind: string; }>; declare type WebAssemblyExports = Array<{ module: string; name: string; kind: string; }>; interface CCallOpts { async?: boolean; } interface EmscriptenModule { print(str: string): void; printErr(str: string): void; arguments: string[]; environment: EnvironmentType; preInit: Array<{ (): void; }>; preRun: Array<{ (): void; }>; postRun: Array<{ (): void; }>; onAbort: { (what: any): void; }; onRuntimeInitialized: { (): void; }; preinitializedWebGLContext: WebGLRenderingContext; noInitialRun: boolean; noExitRuntime: boolean; logReadFiles: boolean; filePackagePrefixURL: string; wasmBinary: ArrayBuffer; destroy(object: object): void; getPreloadedPackage(remotePackageName: string, remotePackageSize: number): ArrayBuffer; instantiateWasm(imports: WebAssemblyImports, successCallback: (module: WebAssembly.Module) => void): WebAssemblyExports; locateFile(url: string): string; onCustomMessage(event: MessageEvent): void; Runtime: any; ccall(ident: string, returnType: ValueType | null, argTypes: ValueType[], args: TypeCompatibleWithC[], opts?: CCallOpts): any; cwrap(ident: string, returnType: ValueType | null, argTypes: ValueType[], opts?: CCallOpts): (...args: any[]) => any; setValue(ptr: number, value: any, type: string, noSafe?: boolean): void; getValue(ptr: number, type: string, noSafe?: boolean): number; ALLOC_NORMAL: number; ALLOC_STACK: number; ALLOC_STATIC: number; ALLOC_DYNAMIC: number; ALLOC_NONE: number; allocate(slab: any, types: string | string[], allocator: number, ptr: number): number; HEAP: Int32Array; IHEAP: Int32Array; FHEAP: Float64Array; HEAP8: Int8Array; HEAP16: Int16Array; HEAP32: Int32Array; HEAPU8: Uint8Array; HEAPU16: Uint16Array; HEAPU32: Uint32Array; HEAPF32: Float32Array; HEAPF64: Float64Array; TOTAL_STACK: number; TOTAL_MEMORY: number; FAST_MEMORY: number; addOnPreRun(cb: () => any): void; addOnInit(cb: () => any): void; addOnPreMain(cb: () => any): void; addOnExit(cb: () => any): void; addOnPostRun(cb: () => any): void; intArrayFromString(stringy: string, dontAddNull?: boolean, length?: number): number[]; intArrayToString(array: number[]): string; writeStringToMemory(str: string, buffer: number, dontAddNull: boolean): void; writeArrayToMemory(array: number[], buffer: number): void; writeAsciiToMemory(str: string, buffer: number, dontAddNull: boolean): void; addRunDependency(id: any): void; removeRunDependency(id: any): void; preloadedImages: any; preloadedAudios: any; umbraAlloc(size: number): number; umbraFree(ptr: number): void; } export interface NativeModule extends EmscriptenModule, UmbraFunctions { wgetRequests: any; readonly umbraLibraryConfig: LibraryConfig; readonly maxBytesDownloaded: number; readonly minBytesDownloaded: number; readonly meshInfoSize: number; readonly textureInfoSize: number; readonly materialInfoSize: number; readonly renderableSize: number; readonly elementBufferSize: number; readonly byteBufferSize: number; readonly sceneInfoSize: number; readonly streamingStateSize: number; readonly meshLoadDispatchHeaderSize: number; readonly meshLoadResultHeaderSize: number; readonly textureLoadDispatchHeaderSize: number; readonly textureLoadResultHeaderSize: number; readonly INVALID_USERPOINTER: Native.UserPointer; readonly CONFIG_SIZE: number; _exit(code: number): void; convertGeodeticToEcef(geodeticCoord: Vector3): Vector3; convertEcefToGeodetic(ecefCoord: Vector3): Vector3; serializeElementBuffer(buffer: Native.ElementBuffer, outPtr: Pointer): Pointer; deserializeElementBuffer(ptr: Pointer): Native.ElementBuffer; serializeByteBuffer(buffer: Native.ByteBuffer, outPtr: Pointer): Pointer; deserializeMeshInfo(meshInfoPtr: Pointer): Native.MeshInfo; deserializeMaterialInfo(meshInfoPtr: Pointer): Native.MaterialInfo; deserializeTextureInfo(meshInfoPtr: Pointer): Native.TextureInfo; serializeEnvironmentInfo(info: { textureSupportFlags: number; localCacheDirectory: string; localCacheMaximumByteSize: number; }, outPtr: Pointer): Pointer; deserializeSceneInfo(sceneInfoPtr: Pointer): any; deserializeStreamingState(statePtr: Pointer): Native.StreamingState; textureLoadSerialize(assetLoad: Pointer, bufferPtr: Pointer): boolean; meshLoadSerialize(assetLoad: Pointer, bufferPtr: Pointer): boolean; meshLoadResultBuildUmbraBuffers(meshLoadPtr: Pointer, basePtr: Pointer): { position: ElementBuffer; index: ElementBuffer; uv?: ElementBuffer; normal?: ElementBuffer; tangent?: ElementBuffer; }; meshLoadFinishExternalWithLoadResultHeader(meshLoad: Pointer, meshLoadResultPtr: Pointer, basePtr: number): void; umbraAlloc(numBytes: number): Pointer; umbraFree(ptr: Pointer): any; deserializeMeshLoadResult(result: Pointer): { result: AssetLoadResult; assetLoad: Pointer; runtimeMesh: Pointer; pipelineMem: number; }; deserializeTextureLoadResult(result: Pointer): { result: AssetLoadResult; assetLoad: Pointer; textureInfo: Native.TextureInfo; pipelineMem: number; }; convertAssetLoadToMeshDispatch(assetLoad: Pointer, userPointer: Native.UserPointer, outBufPtr: Pointer, outBufSize: number): any; convertAssetLoadToTextureDispatch(assetLoadPtr: Pointer, userPointer: Native.UserPointer, textureSupportFlags: number, supportsSRGB: boolean, outBufPtr: Pointer, outBufSize: number): {} | undefined; getRenderableMemberOffsets(): { mesh: number; lodLevel: number; visibilityMask: number; transform: number; scene: number; }; downsampleAndTranscodeTexture(inputFormat: TextureFormat, outputFormat: TextureFormat, width: number, height: number, data: Pointer, byteSize: number, outBuffer: Pointer, outBufferSize: number): Native.TranscodeResult; getTextureByteSize(width: number, height: number, format: TextureFormat): number; getUncompressedFromBCFormat(format: TextureFormat): TextureFormat; } export declare type EmscriptenHeapName = 'HEAP8' | 'HEAP16' | 'HEAP32' | 'HEAPU8' | 'HEAPU16' | 'HEAPU32' | 'HEAPF32' | 'HEAPF64'; export {};