/*
 * Copyright 2025 The Emscripten Authors.  All rights reserved.
 * Emscripten is available under two separate licenses, the MIT license and the
 * University of Illinois/NCSA Open Source License.  Both these licenses can be
 * found in the LICENSE file.
 *
 * WebGPU globals
 * Generated using https://github.com/kainino0x/webidl-to-closure-externs
 * against the spec's WebIDL: https://gpuweb.github.io/gpuweb/webgpu.idl
 */

/** @type {?GPU} */
Navigator.prototype.gpu;

/** @type {?GPU} */
WorkerNavigator.prototype.gpu;

const GPUBufferUsage = {};
/** @type {number} */
GPUBufferUsage.MAP_READ;
/** @type {number} */
GPUBufferUsage.MAP_WRITE;
/** @type {number} */
GPUBufferUsage.COPY_SRC;
/** @type {number} */
GPUBufferUsage.COPY_DST;
/** @type {number} */
GPUBufferUsage.INDEX;
/** @type {number} */
GPUBufferUsage.VERTEX;
/** @type {number} */
GPUBufferUsage.UNIFORM;
/** @type {number} */
GPUBufferUsage.STORAGE;
/** @type {number} */
GPUBufferUsage.INDIRECT;
/** @type {number} */
GPUBufferUsage.QUERY_RESOLVE;

const GPUMapMode = {};
/** @type {number} */
GPUMapMode.READ;
/** @type {number} */
GPUMapMode.WRITE;

const GPUTextureUsage = {};
/** @type {number} */
GPUTextureUsage.COPY_SRC;
/** @type {number} */
GPUTextureUsage.COPY_DST;
/** @type {number} */
GPUTextureUsage.TEXTURE_BINDING;
/** @type {number} */
GPUTextureUsage.STORAGE_BINDING;
/** @type {number} */
GPUTextureUsage.RENDER_ATTACHMENT;

const GPUShaderStage = {};
/** @type {number} */
GPUShaderStage.VERTEX;
/** @type {number} */
GPUShaderStage.FRAGMENT;
/** @type {number} */
GPUShaderStage.COMPUTE;

const GPUColorWrite = {};
/** @type {number} */
GPUColorWrite.RED;
/** @type {number} */
GPUColorWrite.GREEN;
/** @type {number} */
GPUColorWrite.BLUE;
/** @type {number} */
GPUColorWrite.ALPHA;
/** @type {number} */
GPUColorWrite.ALL;

/** @constructor */
function GPUSupportedLimits() {}
/** @type {number} */
GPUSupportedLimits.prototype.maxTextureDimension1D;
/** @type {number} */
GPUSupportedLimits.prototype.maxTextureDimension2D;
/** @type {number} */
GPUSupportedLimits.prototype.maxTextureDimension3D;
/** @type {number} */
GPUSupportedLimits.prototype.maxTextureArrayLayers;
/** @type {number} */
GPUSupportedLimits.prototype.maxBindGroups;
/** @type {number} */
GPUSupportedLimits.prototype.maxBindGroupsPlusVertexBuffers;
/** @type {number} */
GPUSupportedLimits.prototype.maxBindingsPerBindGroup;
/** @type {number} */
GPUSupportedLimits.prototype.maxDynamicUniformBuffersPerPipelineLayout;
/** @type {number} */
GPUSupportedLimits.prototype.maxDynamicStorageBuffersPerPipelineLayout;
/** @type {number} */
GPUSupportedLimits.prototype.maxSampledTexturesPerShaderStage;
/** @type {number} */
GPUSupportedLimits.prototype.maxSamplersPerShaderStage;
/** @type {number} */
GPUSupportedLimits.prototype.maxStorageBuffersPerShaderStage;
/** @type {number} */
GPUSupportedLimits.prototype.maxStorageTexturesPerShaderStage;
/** @type {number} */
GPUSupportedLimits.prototype.maxUniformBuffersPerShaderStage;
/** @type {number} */
GPUSupportedLimits.prototype.maxUniformBufferBindingSize;
/** @type {number} */
GPUSupportedLimits.prototype.maxStorageBufferBindingSize;
/** @type {number} */
GPUSupportedLimits.prototype.minUniformBufferOffsetAlignment;
/** @type {number} */
GPUSupportedLimits.prototype.minStorageBufferOffsetAlignment;
/** @type {number} */
GPUSupportedLimits.prototype.maxVertexBuffers;
/** @type {number} */
GPUSupportedLimits.prototype.maxBufferSize;
/** @type {number} */
GPUSupportedLimits.prototype.maxVertexAttributes;
/** @type {number} */
GPUSupportedLimits.prototype.maxVertexBufferArrayStride;
/** @type {number} */
GPUSupportedLimits.prototype.maxInterStageShaderComponents;
/** @type {number} */
GPUSupportedLimits.prototype.maxInterStageShaderVariables;
/** @type {number} */
GPUSupportedLimits.prototype.maxColorAttachments;
/** @type {number} */
GPUSupportedLimits.prototype.maxColorAttachmentBytesPerSample;
/** @type {number} */
GPUSupportedLimits.prototype.maxComputeWorkgroupStorageSize;
/** @type {number} */
GPUSupportedLimits.prototype.maxComputeInvocationsPerWorkgroup;
/** @type {number} */
GPUSupportedLimits.prototype.maxComputeWorkgroupSizeX;
/** @type {number} */
GPUSupportedLimits.prototype.maxComputeWorkgroupSizeY;
/** @type {number} */
GPUSupportedLimits.prototype.maxComputeWorkgroupSizeZ;
/** @type {number} */
GPUSupportedLimits.prototype.maxComputeWorkgroupsPerDimension;

/**
 * @constructor
 * @implements {Iterable}
 */
function GPUSupportedFeatures() {}
/** @type {number} */
GPUSupportedFeatures.prototype.size;
/** @return {!Iterable<string>} */
GPUSupportedFeatures.prototype.entries = function(...args) {};
/** @return {!Iterable<string>} */
GPUSupportedFeatures.prototype.keys = function(...args) {};
/** @return {!Iterable<string>} */
GPUSupportedFeatures.prototype.values = function(...args) {};
/** @return {undefined} */
GPUSupportedFeatures.prototype.forEach = function(...args) {};
/** @return {boolean} */
GPUSupportedFeatures.prototype.has = function(...args) {};

/**
 * @constructor
 * @implements {Iterable}
 */
function WGSLLanguageFeatures() {}
/** @type {number} */
WGSLLanguageFeatures.prototype.size;
/** @return {!Iterable<string>} */
WGSLLanguageFeatures.prototype.entries = function(...args) {};
/** @return {!Iterable<string>} */
WGSLLanguageFeatures.prototype.keys = function(...args) {};
/** @return {!Iterable<string>} */
WGSLLanguageFeatures.prototype.values = function(...args) {};
/** @return {undefined} */
WGSLLanguageFeatures.prototype.forEach = function(...args) {};
/** @return {boolean} */
WGSLLanguageFeatures.prototype.has = function(...args) {};

/** @constructor */
function GPUAdapterInfo() {}
/** @type {string} */
GPUAdapterInfo.prototype.vendor;
/** @type {string} */
GPUAdapterInfo.prototype.architecture;
/** @type {string} */
GPUAdapterInfo.prototype.device;
/** @type {string} */
GPUAdapterInfo.prototype.description;
/** @type {number} */
GPUAdapterInfo.prototype.subgroupMinSize;
/** @type {number} */
GPUAdapterInfo.prototype.subgroupMaxSize;

/** @constructor */
function GPU() {}
/** @return {!Promise<?GPUAdapter>} */
GPU.prototype.requestAdapter = function(...args) {};
/** @return {string} */
GPU.prototype.getPreferredCanvasFormat = function(...args) {};
/** @type {!WGSLLanguageFeatures} */
GPU.prototype.wgslLanguageFeatures;

/** @constructor */
function GPUAdapter() {}
/** @type {!GPUSupportedFeatures} */
GPUAdapter.prototype.features;
/** @type {!GPUSupportedLimits} */
GPUAdapter.prototype.limits;
/** @type {boolean} */
GPUAdapter.prototype.isFallbackAdapter;
/** @return {!Promise<!GPUDevice>} */
GPUAdapter.prototype.requestDevice = function(...args) {};
/** @return {!Promise<!GPUAdapterInfo>} */
GPUAdapter.prototype.requestAdapterInfo = function(...args) {};
/** @type {!GPUAdapterInfo} */
GPUAdapter.prototype.info;

/** @constructor */
function GPUDevice() {}
/** @type {string} */
GPUDevice.prototype.label;
/** @type {!GPUSupportedFeatures} */
GPUDevice.prototype.features;
/** @type {!GPUSupportedLimits} */
GPUDevice.prototype.limits;
/** @type {!GPUQueue} */
GPUDevice.prototype.queue;
/** @return {undefined} */
GPUDevice.prototype.destroy = function(...args) {};
/** @return {!GPUBuffer} */
GPUDevice.prototype.createBuffer = function(...args) {};
/** @return {!GPUTexture} */
GPUDevice.prototype.createTexture = function(...args) {};
/** @return {!GPUSampler} */
GPUDevice.prototype.createSampler = function(...args) {};
/** @return {!GPUExternalTexture} */
GPUDevice.prototype.importExternalTexture = function(...args) {};
/** @return {!GPUBindGroupLayout} */
GPUDevice.prototype.createBindGroupLayout = function(...args) {};
/** @return {!GPUPipelineLayout} */
GPUDevice.prototype.createPipelineLayout = function(...args) {};
/** @return {!GPUBindGroup} */
GPUDevice.prototype.createBindGroup = function(...args) {};
/** @return {!GPUShaderModule} */
GPUDevice.prototype.createShaderModule = function(...args) {};
/** @return {!GPUComputePipeline} */
GPUDevice.prototype.createComputePipeline = function(...args) {};
/** @return {!GPURenderPipeline} */
GPUDevice.prototype.createRenderPipeline = function(...args) {};
/** @return {!Promise<!GPUComputePipeline>} */
GPUDevice.prototype.createComputePipelineAsync = function(...args) {};
/** @return {!Promise<!GPURenderPipeline>} */
GPUDevice.prototype.createRenderPipelineAsync = function(...args) {};
/** @return {!GPUCommandEncoder} */
GPUDevice.prototype.createCommandEncoder = function(...args) {};
/** @return {!GPURenderBundleEncoder} */
GPUDevice.prototype.createRenderBundleEncoder = function(...args) {};
/** @return {!GPUQuerySet} */
GPUDevice.prototype.createQuerySet = function(...args) {};
/** @type {!Promise<!GPUDeviceLostInfo>} */
GPUDevice.prototype.lost;
/** @return {undefined} */
GPUDevice.prototype.pushErrorScope = function(...args) {};
/** @return {!Promise<?GPUError>} */
GPUDevice.prototype.popErrorScope = function(...args) {};
/** @type {!Function} */
GPUDevice.prototype.onuncapturederror;
/** @type {!GPUAdapterInfo} */
GPUDevice.prototype.adapterInfo;

/** @constructor */
function GPUBuffer() {}
/** @type {string} */
GPUBuffer.prototype.label;
/** @type {number} */
GPUBuffer.prototype.size;
/** @type {number} */
GPUBuffer.prototype.usage;
/** @type {string} */
GPUBuffer.prototype.mapState;
/** @return {!Promise<undefined>} */
GPUBuffer.prototype.mapAsync = function(...args) {};
/** @return {!ArrayBuffer} */
GPUBuffer.prototype.getMappedRange = function(...args) {};
/** @return {undefined} */
GPUBuffer.prototype.unmap = function(...args) {};
/** @return {undefined} */
GPUBuffer.prototype.destroy = function(...args) {};

/** @constructor */
function GPUTexture() {}
/** @type {string} */
GPUTexture.prototype.label;
/** @return {!GPUTextureView} */
GPUTexture.prototype.createView = function(...args) {};
/** @return {undefined} */
GPUTexture.prototype.destroy = function(...args) {};
/** @type {number} */
GPUTexture.prototype.width;
/** @type {number} */
GPUTexture.prototype.height;
/** @type {number} */
GPUTexture.prototype.depthOrArrayLayers;
/** @type {number} */
GPUTexture.prototype.mipLevelCount;
/** @type {number} */
GPUTexture.prototype.sampleCount;
/** @type {string} */
GPUTexture.prototype.dimension;
/** @type {string} */
GPUTexture.prototype.format;
/** @type {number} */
GPUTexture.prototype.usage;

/** @constructor */
function GPUTextureView() {}
/** @type {string} */
GPUTextureView.prototype.label;

/** @constructor */
function GPUExternalTexture() {}
/** @type {string} */
GPUExternalTexture.prototype.label;

/** @constructor */
function GPUSampler() {}
/** @type {string} */
GPUSampler.prototype.label;

/** @constructor */
function GPUBindGroupLayout() {}
/** @type {string} */
GPUBindGroupLayout.prototype.label;

/** @constructor */
function GPUBindGroup() {}
/** @type {string} */
GPUBindGroup.prototype.label;

/** @constructor */
function GPUPipelineLayout() {}
/** @type {string} */
GPUPipelineLayout.prototype.label;

/** @constructor */
function GPUShaderModule() {}
/** @type {string} */
GPUShaderModule.prototype.label;
/** @return {!Promise<!GPUCompilationInfo>} */
GPUShaderModule.prototype.getCompilationInfo = function(...args) {};

/** @constructor */
function GPUCompilationMessage() {}
/** @type {string} */
GPUCompilationMessage.prototype.message;
/** @type {string} */
GPUCompilationMessage.prototype.type;
/** @type {number} */
GPUCompilationMessage.prototype.lineNum;
/** @type {number} */
GPUCompilationMessage.prototype.linePos;
/** @type {number} */
GPUCompilationMessage.prototype.offset;
/** @type {number} */
GPUCompilationMessage.prototype.length;

/** @constructor */
function GPUCompilationInfo() {}
/** @type {!Array<!GPUCompilationMessage>} */
GPUCompilationInfo.prototype.messages;

/** @constructor */
function GPUPipelineError() {}
/** @type {string} */
GPUPipelineError.prototype.reason;

/** @constructor */
function GPUComputePipeline() {}
/** @type {string} */
GPUComputePipeline.prototype.label;
/** @return {!GPUBindGroupLayout} */
GPUComputePipeline.prototype.getBindGroupLayout = function(...args) {};

/** @constructor */
function GPURenderPipeline() {}
/** @type {string} */
GPURenderPipeline.prototype.label;
/** @return {!GPUBindGroupLayout} */
GPURenderPipeline.prototype.getBindGroupLayout = function(...args) {};

/** @constructor */
function GPUCommandBuffer() {}
/** @type {string} */
GPUCommandBuffer.prototype.label;

/** @constructor */
function GPUCommandEncoder() {}
/** @type {string} */
GPUCommandEncoder.prototype.label;
/** @return {undefined} */
GPUCommandEncoder.prototype.pushDebugGroup = function(...args) {};
/** @return {undefined} */
GPUCommandEncoder.prototype.popDebugGroup = function(...args) {};
/** @return {undefined} */
GPUCommandEncoder.prototype.insertDebugMarker = function(...args) {};
/** @return {!GPURenderPassEncoder} */
GPUCommandEncoder.prototype.beginRenderPass = function(...args) {};
/** @return {!GPUComputePassEncoder} */
GPUCommandEncoder.prototype.beginComputePass = function(...args) {};
/** @return {undefined} */
GPUCommandEncoder.prototype.copyBufferToBuffer = function(...args) {};
/** @return {undefined} */
GPUCommandEncoder.prototype.copyBufferToTexture = function(...args) {};
/** @return {undefined} */
GPUCommandEncoder.prototype.copyTextureToBuffer = function(...args) {};
/** @return {undefined} */
GPUCommandEncoder.prototype.copyTextureToTexture = function(...args) {};
/** @return {undefined} */
GPUCommandEncoder.prototype.clearBuffer = function(...args) {};
/** @return {undefined} */
GPUCommandEncoder.prototype.resolveQuerySet = function(...args) {};
/** @return {!GPUCommandBuffer} */
GPUCommandEncoder.prototype.finish = function(...args) {};

/** @constructor */
function GPUComputePassEncoder() {}
/** @type {string} */
GPUComputePassEncoder.prototype.label;
/** @return {undefined} */
GPUComputePassEncoder.prototype.pushDebugGroup = function(...args) {};
/** @return {undefined} */
GPUComputePassEncoder.prototype.popDebugGroup = function(...args) {};
/** @return {undefined} */
GPUComputePassEncoder.prototype.insertDebugMarker = function(...args) {};
/** @return {undefined} */
GPUComputePassEncoder.prototype.setBindGroup = function(...args) {};
/** @return {undefined} */
GPUComputePassEncoder.prototype.setBindGroup = function(...args) {};
/** @return {undefined} */
GPUComputePassEncoder.prototype.setPipeline = function(...args) {};
/** @return {undefined} */
GPUComputePassEncoder.prototype.dispatchWorkgroups = function(...args) {};
/** @return {undefined} */
GPUComputePassEncoder.prototype.dispatchWorkgroupsIndirect = function(...args) {};
/** @return {undefined} */
GPUComputePassEncoder.prototype.end = function(...args) {};

/** @constructor */
function GPURenderPassEncoder() {}
/** @type {string} */
GPURenderPassEncoder.prototype.label;
/** @return {undefined} */
GPURenderPassEncoder.prototype.pushDebugGroup = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.popDebugGroup = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.insertDebugMarker = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setBindGroup = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setBindGroup = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setPipeline = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setIndexBuffer = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setVertexBuffer = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.draw = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.drawIndexed = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.drawIndirect = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.drawIndexedIndirect = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setViewport = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setScissorRect = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setBlendConstant = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.setStencilReference = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.beginOcclusionQuery = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.endOcclusionQuery = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.executeBundles = function(...args) {};
/** @return {undefined} */
GPURenderPassEncoder.prototype.end = function(...args) {};

/** @constructor */
function GPURenderBundle() {}
/** @type {string} */
GPURenderBundle.prototype.label;

/** @constructor */
function GPURenderBundleEncoder() {}
/** @type {string} */
GPURenderBundleEncoder.prototype.label;
/** @return {undefined} */
GPURenderBundleEncoder.prototype.pushDebugGroup = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.popDebugGroup = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.insertDebugMarker = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.setBindGroup = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.setBindGroup = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.setPipeline = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.setIndexBuffer = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.setVertexBuffer = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.draw = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.drawIndexed = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.drawIndirect = function(...args) {};
/** @return {undefined} */
GPURenderBundleEncoder.prototype.drawIndexedIndirect = function(...args) {};
/** @return {!GPURenderBundle} */
GPURenderBundleEncoder.prototype.finish = function(...args) {};

/** @constructor */
function GPUQueue() {}
/** @type {string} */
GPUQueue.prototype.label;
/** @return {undefined} */
GPUQueue.prototype.submit = function(...args) {};
/** @return {!Promise<undefined>} */
GPUQueue.prototype.onSubmittedWorkDone = function(...args) {};
/** @return {undefined} */
GPUQueue.prototype.writeBuffer = function(...args) {};
/** @return {undefined} */
GPUQueue.prototype.writeTexture = function(...args) {};
/** @return {undefined} */
GPUQueue.prototype.copyExternalImageToTexture = function(...args) {};

/** @constructor */
function GPUQuerySet() {}
/** @type {string} */
GPUQuerySet.prototype.label;
/** @return {undefined} */
GPUQuerySet.prototype.destroy = function(...args) {};
/** @type {string} */
GPUQuerySet.prototype.type;
/** @type {number} */
GPUQuerySet.prototype.count;

/** @constructor */
function GPUCanvasContext() {}
/** @type {!HTMLCanvasElement|!OffscreenCanvas} */
GPUCanvasContext.prototype.canvas;
/** @return {undefined} */
GPUCanvasContext.prototype.configure = function(...args) {};
/** @return {undefined} */
GPUCanvasContext.prototype.unconfigure = function(...args) {};
/** @return {!GPUTexture} */
GPUCanvasContext.prototype.getCurrentTexture = function(...args) {};

/** @constructor */
function GPUDeviceLostInfo() {}
/** @type {string} */
GPUDeviceLostInfo.prototype.reason;
/** @type {string} */
GPUDeviceLostInfo.prototype.message;

/** @constructor */
function GPUError() {}
/** @type {string} */
GPUError.prototype.message;

/** @constructor */
function GPUValidationError() {}

/** @constructor */
function GPUOutOfMemoryError() {}

/** @constructor */
function GPUInternalError() {}

/** @constructor */
function GPUUncapturedErrorEvent() {}
/** @type {!GPUError} */
GPUUncapturedErrorEvent.prototype.error;
