// Copyright 2025 International Digital Economy Academy
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

///|
/// WebGPU C API contract (generated from webgpu.h).
///
/// This is a declaration-only mirror of the upstream header.
/// It is meant for spec-first / test-first development:
/// - `moon check` must stay green
/// - `moon test` is allowed to be red until the real FFI is implemented
///
/// Generated by: scripts/gen_webgpu_capi_spec.py

///|
#declaration_only
pub type UIntPtr

///|
#declaration_only
pub type UnitPtr

///|
#declaration_only
pub type WGPUAdapter

///|
#declaration_only
pub type WGPUAdapterInfo

///|
#declaration_only
pub type WGPUAdapterInfoPtr

///|
#declaration_only
pub type WGPUAdapterPtr

///|
#declaration_only
pub type WGPUBindGroup

///|
#declaration_only
pub type WGPUBindGroupDescriptorPtr

///|
#declaration_only
pub type WGPUBindGroupLayout

///|
#declaration_only
pub type WGPUBindGroupLayoutDescriptorPtr

///|
#declaration_only
pub type WGPUBuffer

///|
#declaration_only
pub type WGPUBufferDescriptorPtr

///|
#declaration_only
pub type WGPUBufferMapCallbackInfo

///|
#declaration_only
pub type WGPUBufferMapState

///|
pub type WGPUBufferUsage = UInt64

///|
#declaration_only
pub type WGPUColorPtr

///|
#declaration_only
pub type WGPUCommandBuffer

///|
#declaration_only
pub type WGPUCommandBufferDescriptorPtr

///|
#declaration_only
pub type WGPUCommandBufferPtr

///|
#declaration_only
pub type WGPUCommandEncoder

///|
#declaration_only
pub type WGPUCommandEncoderDescriptorPtr

///|
#declaration_only
pub type WGPUCompilationInfoCallbackInfo

///|
#declaration_only
pub type WGPUComputePassDescriptorPtr

///|
#declaration_only
pub type WGPUComputePassEncoder

///|
#declaration_only
pub type WGPUComputePipeline

///|
#declaration_only
pub type WGPUComputePipelineDescriptorPtr

///|
#declaration_only
pub type WGPUCreateComputePipelineAsyncCallbackInfo

///|
#declaration_only
pub type WGPUCreateRenderPipelineAsyncCallbackInfo

///|
#declaration_only
pub type WGPUDevice

///|
#declaration_only
pub type WGPUDeviceDescriptorPtr

///|
#declaration_only
pub type WGPUErrorFilter

///|
#declaration_only
pub type WGPUExtent3DPtr

///|
#declaration_only
pub type WGPUExternalTexture

///|
#declaration_only
pub type WGPUFeatureName

///|
#declaration_only
pub type WGPUFuture

///|
#declaration_only
pub type WGPUFutureWaitInfoPtr

///|
#declaration_only
pub type WGPUGlobalReportPtr

///|
#declaration_only
pub type WGPUImageSubresourceRangePtr

///|
#declaration_only
pub type WGPUIndexFormat

///|
#declaration_only
pub type WGPUInstance

///|
#declaration_only
pub type WGPUInstanceDescriptorPtr

///|
#declaration_only
pub type WGPUInstanceEnumerateAdapterOptionsPtr

///|
#declaration_only
pub type WGPUInstanceFeatureName

///|
#declaration_only
pub type WGPUInstanceLimitsPtr

///|
#declaration_only
pub type WGPULimitsPtr

///|
#declaration_only
pub type WGPULogCallback

///|
pub type WGPULogLevel = UInt

///|
pub type WGPUMapMode = UInt64

///|
#declaration_only
pub type WGPUPipelineLayout

///|
#declaration_only
pub type WGPUPipelineLayoutDescriptorPtr

///|
#declaration_only
pub type WGPUPopErrorScopeCallbackInfo

///|
#declaration_only
pub type WGPUProc

///|
#declaration_only
pub type WGPUQuerySet

///|
#declaration_only
pub type WGPUQuerySetDescriptorPtr

///|
#declaration_only
pub type WGPUQueryType

///|
#declaration_only
pub type WGPUQueue

///|
#declaration_only
pub type WGPUQueueWorkDoneCallbackInfo

///|
#declaration_only
pub type WGPURenderBundle

///|
#declaration_only
pub type WGPURenderBundleDescriptorPtr

///|
#declaration_only
pub type WGPURenderBundleEncoder

///|
#declaration_only
pub type WGPURenderBundleEncoderDescriptorPtr

///|
#declaration_only
pub type WGPURenderBundlePtr

///|
#declaration_only
pub type WGPURenderPassDescriptorPtr

///|
#declaration_only
pub type WGPURenderPassEncoder

///|
#declaration_only
pub type WGPURenderPipeline

///|
#declaration_only
pub type WGPURenderPipelineDescriptorPtr

///|
#declaration_only
pub type WGPURequestAdapterCallbackInfo

///|
#declaration_only
pub type WGPURequestAdapterOptionsPtr

///|
#declaration_only
pub type WGPURequestDeviceCallbackInfo

///|
#declaration_only
pub type WGPUSampler

///|
#declaration_only
pub type WGPUSamplerDescriptorPtr

///|
#declaration_only
pub type WGPUShaderModule

///|
#declaration_only
pub type WGPUShaderModuleDescriptorPtr

///|
#declaration_only
pub type WGPUShaderModuleDescriptorSpirVPtr

///|
pub type WGPUShaderRuntimeChecks = UInt64

///|
#declaration_only
pub type WGPUStatus

///|
#declaration_only
pub type WGPUStringView

///|
pub type WGPUSubmissionIndex = UInt64

///|
#declaration_only
pub type WGPUSubmissionIndexPtr

///|
#declaration_only
pub type WGPUSupportedFeatures

///|
#declaration_only
pub type WGPUSupportedFeaturesPtr

///|
#declaration_only
pub type WGPUSupportedInstanceFeatures

///|
#declaration_only
pub type WGPUSupportedInstanceFeaturesPtr

///|
#declaration_only
pub type WGPUSupportedWGSLLanguageFeatures

///|
#declaration_only
pub type WGPUSupportedWGSLLanguageFeaturesPtr

///|
#declaration_only
pub type WGPUSurface

///|
#declaration_only
pub type WGPUSurfaceCapabilities

///|
#declaration_only
pub type WGPUSurfaceCapabilitiesPtr

///|
#declaration_only
pub type WGPUSurfaceConfigurationPtr

///|
#declaration_only
pub type WGPUSurfaceDescriptorPtr

///|
#declaration_only
pub type WGPUSurfaceTexturePtr

///|
#declaration_only
pub type WGPUTexelCopyBufferInfoPtr

///|
#declaration_only
pub type WGPUTexelCopyBufferLayoutPtr

///|
#declaration_only
pub type WGPUTexelCopyTextureInfoPtr

///|
#declaration_only
pub type WGPUTexture

///|
#declaration_only
pub type WGPUTextureDescriptorPtr

///|
#declaration_only
pub type WGPUTextureDimension

///|
#declaration_only
pub type WGPUTextureFormat

///|
pub type WGPUTextureUsage = UInt64

///|
#declaration_only
pub type WGPUTextureView

///|
#declaration_only
pub type WGPUTextureViewDescriptorPtr

///|
#declaration_only
pub type WGPUTextureViewDimension

///|
#declaration_only
pub type WGPUWGSLLanguageFeatureName

///|
#declaration_only
pub type WGPUWaitStatus

///|
#declaration_only
declare pub fn wgpuAdapterAddRef(adapter : WGPUAdapter) -> Unit

///|
#declaration_only
declare pub fn wgpuAdapterGetFeatures(
  adapter : WGPUAdapter,
  features : WGPUSupportedFeaturesPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuAdapterGetInfo(
  adapter : WGPUAdapter,
  info : WGPUAdapterInfoPtr,
) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuAdapterGetLimits(
  adapter : WGPUAdapter,
  limits : WGPULimitsPtr,
) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuAdapterHasFeature(
  adapter : WGPUAdapter,
  feature : WGPUFeatureName,
) -> Bool

///|
#declaration_only
declare pub fn wgpuAdapterInfoFreeMembers(adapterInfo : WGPUAdapterInfo) -> Unit

///|
#declaration_only
declare pub fn wgpuAdapterRelease(adapter : WGPUAdapter) -> Unit

///|
#declaration_only
declare pub fn wgpuAdapterRequestDevice(
  adapter : WGPUAdapter,
  descriptor : WGPUDeviceDescriptorPtr,
  callbackInfo : WGPURequestDeviceCallbackInfo,
) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuBindGroupAddRef(bindGroup : WGPUBindGroup) -> Unit

///|
#declaration_only
declare pub fn wgpuBindGroupLayoutAddRef(
  bindGroupLayout : WGPUBindGroupLayout,
) -> Unit

///|
#declaration_only
declare pub fn wgpuBindGroupLayoutRelease(
  bindGroupLayout : WGPUBindGroupLayout,
) -> Unit

///|
#declaration_only
declare pub fn wgpuBindGroupLayoutSetLabel(
  bindGroupLayout : WGPUBindGroupLayout,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuBindGroupRelease(bindGroup : WGPUBindGroup) -> Unit

///|
#declaration_only
declare pub fn wgpuBindGroupSetLabel(
  bindGroup : WGPUBindGroup,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuBufferAddRef(buffer : WGPUBuffer) -> Unit

///|
#declaration_only
declare pub fn wgpuBufferDestroy(buffer : WGPUBuffer) -> Unit

///|
#declaration_only
declare pub fn wgpuBufferGetConstMappedRange(
  buffer : WGPUBuffer,
  offset : UInt64,
  size : UInt64,
) -> UnitPtr

///|
#declaration_only
declare pub fn wgpuBufferGetMapState(buffer : WGPUBuffer) -> WGPUBufferMapState

///|
#declaration_only
declare pub fn wgpuBufferGetMappedRange(
  buffer : WGPUBuffer,
  offset : UInt64,
  size : UInt64,
) -> UnitPtr

///|
#declaration_only
declare pub fn wgpuBufferGetSize(buffer : WGPUBuffer) -> UInt64

///|
#declaration_only
declare pub fn wgpuBufferGetUsage(buffer : WGPUBuffer) -> WGPUBufferUsage

///|
#declaration_only
declare pub fn wgpuBufferMapAsync(
  buffer : WGPUBuffer,
  mode : WGPUMapMode,
  offset : UInt64,
  size : UInt64,
  callbackInfo : WGPUBufferMapCallbackInfo,
) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuBufferReadMappedRange(
  buffer : WGPUBuffer,
  offset : UInt64,
  data : UnitPtr,
  size : UInt64,
) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuBufferRelease(buffer : WGPUBuffer) -> Unit

///|
#declaration_only
declare pub fn wgpuBufferSetLabel(
  buffer : WGPUBuffer,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuBufferUnmap(buffer : WGPUBuffer) -> Unit

///|
#declaration_only
declare pub fn wgpuBufferWriteMappedRange(
  buffer : WGPUBuffer,
  offset : UInt64,
  data : UnitPtr,
  size : UInt64,
) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuCommandBufferAddRef(
  commandBuffer : WGPUCommandBuffer,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandBufferRelease(
  commandBuffer : WGPUCommandBuffer,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandBufferSetLabel(
  commandBuffer : WGPUCommandBuffer,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderAddRef(
  commandEncoder : WGPUCommandEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderBeginComputePass(
  commandEncoder : WGPUCommandEncoder,
  descriptor : WGPUComputePassDescriptorPtr,
) -> WGPUComputePassEncoder

///|
#declaration_only
declare pub fn wgpuCommandEncoderBeginRenderPass(
  commandEncoder : WGPUCommandEncoder,
  descriptor : WGPURenderPassDescriptorPtr,
) -> WGPURenderPassEncoder

///|
#declaration_only
declare pub fn wgpuCommandEncoderClearBuffer(
  commandEncoder : WGPUCommandEncoder,
  buffer : WGPUBuffer,
  offset : UInt64,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderClearTexture(
  commandEncoder : WGPUCommandEncoder,
  texture : WGPUTexture,
  range : WGPUImageSubresourceRangePtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderCopyBufferToBuffer(
  commandEncoder : WGPUCommandEncoder,
  source : WGPUBuffer,
  sourceOffset : UInt64,
  destination : WGPUBuffer,
  destinationOffset : UInt64,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderCopyBufferToTexture(
  commandEncoder : WGPUCommandEncoder,
  source : WGPUTexelCopyBufferInfoPtr,
  destination : WGPUTexelCopyTextureInfoPtr,
  copySize : WGPUExtent3DPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderCopyTextureToBuffer(
  commandEncoder : WGPUCommandEncoder,
  source : WGPUTexelCopyTextureInfoPtr,
  destination : WGPUTexelCopyBufferInfoPtr,
  copySize : WGPUExtent3DPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderCopyTextureToTexture(
  commandEncoder : WGPUCommandEncoder,
  source : WGPUTexelCopyTextureInfoPtr,
  destination : WGPUTexelCopyTextureInfoPtr,
  copySize : WGPUExtent3DPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderFinish(
  commandEncoder : WGPUCommandEncoder,
  descriptor : WGPUCommandBufferDescriptorPtr,
) -> WGPUCommandBuffer

///|
#declaration_only
declare pub fn wgpuCommandEncoderInsertDebugMarker(
  commandEncoder : WGPUCommandEncoder,
  markerLabel : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderPopDebugGroup(
  commandEncoder : WGPUCommandEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderPushDebugGroup(
  commandEncoder : WGPUCommandEncoder,
  groupLabel : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderRelease(
  commandEncoder : WGPUCommandEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderResolveQuerySet(
  commandEncoder : WGPUCommandEncoder,
  querySet : WGPUQuerySet,
  firstQuery : UInt,
  queryCount : UInt,
  destination : WGPUBuffer,
  destinationOffset : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderSetLabel(
  commandEncoder : WGPUCommandEncoder,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCommandEncoderWriteTimestamp(
  commandEncoder : WGPUCommandEncoder,
  querySet : WGPUQuerySet,
  queryIndex : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderAddRef(
  computePassEncoder : WGPUComputePassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderBeginPipelineStatisticsQuery(
  computePassEncoder : WGPUComputePassEncoder,
  querySet : WGPUQuerySet,
  queryIndex : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderDispatchWorkgroups(
  computePassEncoder : WGPUComputePassEncoder,
  workgroupCountX : UInt,
  workgroupCountY : UInt,
  workgroupCountZ : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderDispatchWorkgroupsIndirect(
  computePassEncoder : WGPUComputePassEncoder,
  indirectBuffer : WGPUBuffer,
  indirectOffset : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderEnd(
  computePassEncoder : WGPUComputePassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderEndPipelineStatisticsQuery(
  computePassEncoder : WGPUComputePassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderInsertDebugMarker(
  computePassEncoder : WGPUComputePassEncoder,
  markerLabel : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderPopDebugGroup(
  computePassEncoder : WGPUComputePassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderPushDebugGroup(
  computePassEncoder : WGPUComputePassEncoder,
  groupLabel : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderRelease(
  computePassEncoder : WGPUComputePassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderSetBindGroup(
  computePassEncoder : WGPUComputePassEncoder,
  groupIndex : UInt,
  group : WGPUBindGroup,
  dynamicOffsetCount : UInt64,
  dynamicOffsets : UIntPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderSetImmediates(
  computePassEncoder : WGPUComputePassEncoder,
  offset : UInt,
  data : UnitPtr,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderSetLabel(
  computePassEncoder : WGPUComputePassEncoder,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderSetPipeline(
  computePassEncoder : WGPUComputePassEncoder,
  pipeline : WGPUComputePipeline,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePassEncoderWriteTimestamp(
  computePassEncoder : WGPUComputePassEncoder,
  querySet : WGPUQuerySet,
  queryIndex : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePipelineAddRef(
  computePipeline : WGPUComputePipeline,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePipelineGetBindGroupLayout(
  computePipeline : WGPUComputePipeline,
  groupIndex : UInt,
) -> WGPUBindGroupLayout

///|
#declaration_only
declare pub fn wgpuComputePipelineRelease(
  computePipeline : WGPUComputePipeline,
) -> Unit

///|
#declaration_only
declare pub fn wgpuComputePipelineSetLabel(
  computePipeline : WGPUComputePipeline,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuCreateInstance(
  descriptor : WGPUInstanceDescriptorPtr,
) -> WGPUInstance

///|
#declaration_only
declare pub fn wgpuDeviceAddRef(device : WGPUDevice) -> Unit

///|
#declaration_only
declare pub fn wgpuDeviceCreateBindGroup(
  device : WGPUDevice,
  descriptor : WGPUBindGroupDescriptorPtr,
) -> WGPUBindGroup

///|
#declaration_only
declare pub fn wgpuDeviceCreateBindGroupLayout(
  device : WGPUDevice,
  descriptor : WGPUBindGroupLayoutDescriptorPtr,
) -> WGPUBindGroupLayout

///|
#declaration_only
declare pub fn wgpuDeviceCreateBuffer(
  device : WGPUDevice,
  descriptor : WGPUBufferDescriptorPtr,
) -> WGPUBuffer

///|
#declaration_only
declare pub fn wgpuDeviceCreateCommandEncoder(
  device : WGPUDevice,
  descriptor : WGPUCommandEncoderDescriptorPtr,
) -> WGPUCommandEncoder

///|
#declaration_only
declare pub fn wgpuDeviceCreateComputePipeline(
  device : WGPUDevice,
  descriptor : WGPUComputePipelineDescriptorPtr,
) -> WGPUComputePipeline

///|
#declaration_only
declare pub fn wgpuDeviceCreateComputePipelineAsync(
  device : WGPUDevice,
  descriptor : WGPUComputePipelineDescriptorPtr,
  callbackInfo : WGPUCreateComputePipelineAsyncCallbackInfo,
) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuDeviceCreatePipelineLayout(
  device : WGPUDevice,
  descriptor : WGPUPipelineLayoutDescriptorPtr,
) -> WGPUPipelineLayout

///|
#declaration_only
declare pub fn wgpuDeviceCreateQuerySet(
  device : WGPUDevice,
  descriptor : WGPUQuerySetDescriptorPtr,
) -> WGPUQuerySet

///|
#declaration_only
declare pub fn wgpuDeviceCreateRenderBundleEncoder(
  device : WGPUDevice,
  descriptor : WGPURenderBundleEncoderDescriptorPtr,
) -> WGPURenderBundleEncoder

///|
#declaration_only
declare pub fn wgpuDeviceCreateRenderPipeline(
  device : WGPUDevice,
  descriptor : WGPURenderPipelineDescriptorPtr,
) -> WGPURenderPipeline

///|
#declaration_only
declare pub fn wgpuDeviceCreateRenderPipelineAsync(
  device : WGPUDevice,
  descriptor : WGPURenderPipelineDescriptorPtr,
  callbackInfo : WGPUCreateRenderPipelineAsyncCallbackInfo,
) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuDeviceCreateSampler(
  device : WGPUDevice,
  descriptor : WGPUSamplerDescriptorPtr,
) -> WGPUSampler

///|
#declaration_only
declare pub fn wgpuDeviceCreateShaderModule(
  device : WGPUDevice,
  descriptor : WGPUShaderModuleDescriptorPtr,
) -> WGPUShaderModule

///|
#declaration_only
declare pub fn wgpuDeviceCreateShaderModuleSpirV(
  device : WGPUDevice,
  descriptor : WGPUShaderModuleDescriptorSpirVPtr,
) -> WGPUShaderModule

///|
#declaration_only
declare pub fn wgpuDeviceCreateShaderModuleTrusted(
  device : WGPUDevice,
  descriptor : WGPUShaderModuleDescriptorPtr,
  runtimeChecks : WGPUShaderRuntimeChecks,
) -> WGPUShaderModule

///|
#declaration_only
declare pub fn wgpuDeviceCreateTexture(
  device : WGPUDevice,
  descriptor : WGPUTextureDescriptorPtr,
) -> WGPUTexture

///|
#declaration_only
declare pub fn wgpuDeviceDestroy(device : WGPUDevice) -> Unit

///|
#declaration_only
declare pub fn wgpuDeviceGetAdapterInfo(
  device : WGPUDevice,
  adapterInfo : WGPUAdapterInfoPtr,
) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuDeviceGetFeatures(
  device : WGPUDevice,
  features : WGPUSupportedFeaturesPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuDeviceGetLimits(
  device : WGPUDevice,
  limits : WGPULimitsPtr,
) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuDeviceGetLostFuture(device : WGPUDevice) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuDeviceGetNativeMetalDevice(device : WGPUDevice) -> UnitPtr

///|
#declaration_only
declare pub fn wgpuDeviceGetQueue(device : WGPUDevice) -> WGPUQueue

///|
#declaration_only
declare pub fn wgpuDeviceHasFeature(
  device : WGPUDevice,
  feature : WGPUFeatureName,
) -> Bool

///|
#declaration_only
declare pub fn wgpuDevicePoll(
  device : WGPUDevice,
  wait : Bool,
  submissionIndex : WGPUSubmissionIndexPtr,
) -> Bool

///|
#declaration_only
declare pub fn wgpuDevicePopErrorScope(
  device : WGPUDevice,
  callbackInfo : WGPUPopErrorScopeCallbackInfo,
) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuDevicePushErrorScope(
  device : WGPUDevice,
  filter : WGPUErrorFilter,
) -> Unit

///|
#declaration_only
declare pub fn wgpuDeviceRelease(device : WGPUDevice) -> Unit

///|
#declaration_only
declare pub fn wgpuDeviceSetLabel(
  device : WGPUDevice,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuDeviceStartGraphicsDebuggerCapture(
  device : WGPUDevice,
) -> Bool

///|
#declaration_only
declare pub fn wgpuDeviceStopGraphicsDebuggerCapture(
  device : WGPUDevice,
) -> Unit

///|
#declaration_only
declare pub fn wgpuExternalTextureAddRef(
  externalTexture : WGPUExternalTexture,
) -> Unit

///|
#declaration_only
declare pub fn wgpuExternalTextureRelease(
  externalTexture : WGPUExternalTexture,
) -> Unit

///|
#declaration_only
declare pub fn wgpuExternalTextureSetLabel(
  externalTexture : WGPUExternalTexture,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuGenerateReport(
  instance : WGPUInstance,
  report : WGPUGlobalReportPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuGetInstanceFeatures(
  features : WGPUSupportedInstanceFeaturesPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuGetInstanceLimits(
  limits : WGPUInstanceLimitsPtr,
) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuGetProcAddress(procName : WGPUStringView) -> WGPUProc

///|
#declaration_only
declare pub fn wgpuGetVersion() -> UInt

///|
#declaration_only
declare pub fn wgpuHasInstanceFeature(feature : WGPUInstanceFeatureName) -> Bool

///|
#declaration_only
declare pub fn wgpuInstanceAddRef(instance : WGPUInstance) -> Unit

///|
#declaration_only
declare pub fn wgpuInstanceCreateSurface(
  instance : WGPUInstance,
  descriptor : WGPUSurfaceDescriptorPtr,
) -> WGPUSurface

///|
#declaration_only
declare pub fn wgpuInstanceEnumerateAdapters(
  instance : WGPUInstance,
  options : WGPUInstanceEnumerateAdapterOptionsPtr,
  adapters : WGPUAdapterPtr,
) -> UInt64

///|
#declaration_only
declare pub fn wgpuInstanceGetWGSLLanguageFeatures(
  instance : WGPUInstance,
  features : WGPUSupportedWGSLLanguageFeaturesPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuInstanceHasWGSLLanguageFeature(
  instance : WGPUInstance,
  feature : WGPUWGSLLanguageFeatureName,
) -> Bool

///|
#declaration_only
declare pub fn wgpuInstanceProcessEvents(instance : WGPUInstance) -> Unit

///|
#declaration_only
declare pub fn wgpuInstanceRelease(instance : WGPUInstance) -> Unit

///|
#declaration_only
declare pub fn wgpuInstanceRequestAdapter(
  instance : WGPUInstance,
  options : WGPURequestAdapterOptionsPtr,
  callbackInfo : WGPURequestAdapterCallbackInfo,
) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuInstanceWaitAny(
  instance : WGPUInstance,
  futureCount : UInt64,
  futures : WGPUFutureWaitInfoPtr,
  timeoutNS : UInt64,
) -> WGPUWaitStatus

///|
#declaration_only
declare pub fn wgpuPipelineLayoutAddRef(
  pipelineLayout : WGPUPipelineLayout,
) -> Unit

///|
#declaration_only
declare pub fn wgpuPipelineLayoutRelease(
  pipelineLayout : WGPUPipelineLayout,
) -> Unit

///|
#declaration_only
declare pub fn wgpuPipelineLayoutSetLabel(
  pipelineLayout : WGPUPipelineLayout,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuQuerySetAddRef(querySet : WGPUQuerySet) -> Unit

///|
#declaration_only
declare pub fn wgpuQuerySetDestroy(querySet : WGPUQuerySet) -> Unit

///|
#declaration_only
declare pub fn wgpuQuerySetGetCount(querySet : WGPUQuerySet) -> UInt

///|
#declaration_only
declare pub fn wgpuQuerySetGetType(querySet : WGPUQuerySet) -> WGPUQueryType

///|
#declaration_only
declare pub fn wgpuQuerySetRelease(querySet : WGPUQuerySet) -> Unit

///|
#declaration_only
declare pub fn wgpuQuerySetSetLabel(
  querySet : WGPUQuerySet,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuQueueAddRef(queue : WGPUQueue) -> Unit

///|
#declaration_only
declare pub fn wgpuQueueGetNativeMetalCommandQueue(queue : WGPUQueue) -> UnitPtr

///|
#declaration_only
declare pub fn wgpuQueueGetTimestampPeriod(queue : WGPUQueue) -> Float

///|
#declaration_only
declare pub fn wgpuQueueOnSubmittedWorkDone(
  queue : WGPUQueue,
  callbackInfo : WGPUQueueWorkDoneCallbackInfo,
) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuQueueRelease(queue : WGPUQueue) -> Unit

///|
#declaration_only
declare pub fn wgpuQueueSetLabel(
  queue : WGPUQueue,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuQueueSubmit(
  queue : WGPUQueue,
  commandCount : UInt64,
  commands : WGPUCommandBufferPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuQueueSubmitForIndex(
  queue : WGPUQueue,
  commandCount : UInt64,
  commands : WGPUCommandBufferPtr,
) -> WGPUSubmissionIndex

///|
#declaration_only
declare pub fn wgpuQueueWriteBuffer(
  queue : WGPUQueue,
  buffer : WGPUBuffer,
  bufferOffset : UInt64,
  data : UnitPtr,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuQueueWriteTexture(
  queue : WGPUQueue,
  destination : WGPUTexelCopyTextureInfoPtr,
  data : UnitPtr,
  dataSize : UInt64,
  dataLayout : WGPUTexelCopyBufferLayoutPtr,
  writeSize : WGPUExtent3DPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleAddRef(renderBundle : WGPURenderBundle) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderAddRef(
  renderBundleEncoder : WGPURenderBundleEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderDraw(
  renderBundleEncoder : WGPURenderBundleEncoder,
  vertexCount : UInt,
  instanceCount : UInt,
  firstVertex : UInt,
  firstInstance : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderDrawIndexed(
  renderBundleEncoder : WGPURenderBundleEncoder,
  indexCount : UInt,
  instanceCount : UInt,
  firstIndex : UInt,
  baseVertex : Int,
  firstInstance : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderDrawIndexedIndirect(
  renderBundleEncoder : WGPURenderBundleEncoder,
  indirectBuffer : WGPUBuffer,
  indirectOffset : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderDrawIndirect(
  renderBundleEncoder : WGPURenderBundleEncoder,
  indirectBuffer : WGPUBuffer,
  indirectOffset : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderFinish(
  renderBundleEncoder : WGPURenderBundleEncoder,
  descriptor : WGPURenderBundleDescriptorPtr,
) -> WGPURenderBundle

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderInsertDebugMarker(
  renderBundleEncoder : WGPURenderBundleEncoder,
  markerLabel : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderPopDebugGroup(
  renderBundleEncoder : WGPURenderBundleEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderPushDebugGroup(
  renderBundleEncoder : WGPURenderBundleEncoder,
  groupLabel : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderRelease(
  renderBundleEncoder : WGPURenderBundleEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderSetBindGroup(
  renderBundleEncoder : WGPURenderBundleEncoder,
  groupIndex : UInt,
  group : WGPUBindGroup,
  dynamicOffsetCount : UInt64,
  dynamicOffsets : UIntPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderSetImmediates(
  renderBundleEncoder : WGPURenderBundleEncoder,
  offset : UInt,
  data : UnitPtr,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderSetIndexBuffer(
  renderBundleEncoder : WGPURenderBundleEncoder,
  buffer : WGPUBuffer,
  format : WGPUIndexFormat,
  offset : UInt64,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderSetLabel(
  renderBundleEncoder : WGPURenderBundleEncoder,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderSetPipeline(
  renderBundleEncoder : WGPURenderBundleEncoder,
  pipeline : WGPURenderPipeline,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleEncoderSetVertexBuffer(
  renderBundleEncoder : WGPURenderBundleEncoder,
  slot : UInt,
  buffer : WGPUBuffer,
  offset : UInt64,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleRelease(renderBundle : WGPURenderBundle) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderBundleSetLabel(
  renderBundle : WGPURenderBundle,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderAddRef(
  renderPassEncoder : WGPURenderPassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderBeginOcclusionQuery(
  renderPassEncoder : WGPURenderPassEncoder,
  queryIndex : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderBeginPipelineStatisticsQuery(
  renderPassEncoder : WGPURenderPassEncoder,
  querySet : WGPUQuerySet,
  queryIndex : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderDraw(
  renderPassEncoder : WGPURenderPassEncoder,
  vertexCount : UInt,
  instanceCount : UInt,
  firstVertex : UInt,
  firstInstance : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderDrawIndexed(
  renderPassEncoder : WGPURenderPassEncoder,
  indexCount : UInt,
  instanceCount : UInt,
  firstIndex : UInt,
  baseVertex : Int,
  firstInstance : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderDrawIndexedIndirect(
  renderPassEncoder : WGPURenderPassEncoder,
  indirectBuffer : WGPUBuffer,
  indirectOffset : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderDrawIndirect(
  renderPassEncoder : WGPURenderPassEncoder,
  indirectBuffer : WGPUBuffer,
  indirectOffset : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderEnd(
  renderPassEncoder : WGPURenderPassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderEndOcclusionQuery(
  renderPassEncoder : WGPURenderPassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderEndPipelineStatisticsQuery(
  renderPassEncoder : WGPURenderPassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderExecuteBundles(
  renderPassEncoder : WGPURenderPassEncoder,
  bundleCount : UInt64,
  bundles : WGPURenderBundlePtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderInsertDebugMarker(
  renderPassEncoder : WGPURenderPassEncoder,
  markerLabel : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderMultiDrawIndexedIndirect(
  encoder : WGPURenderPassEncoder,
  buffer : WGPUBuffer,
  offset : UInt64,
  count : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderMultiDrawIndexedIndirectCount(
  encoder : WGPURenderPassEncoder,
  buffer : WGPUBuffer,
  offset : UInt64,
  count_buffer : WGPUBuffer,
  count_buffer_offset : UInt64,
  max_count : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderMultiDrawIndirect(
  encoder : WGPURenderPassEncoder,
  buffer : WGPUBuffer,
  offset : UInt64,
  count : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderMultiDrawIndirectCount(
  encoder : WGPURenderPassEncoder,
  buffer : WGPUBuffer,
  offset : UInt64,
  count_buffer : WGPUBuffer,
  count_buffer_offset : UInt64,
  max_count : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderPopDebugGroup(
  renderPassEncoder : WGPURenderPassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderPushDebugGroup(
  renderPassEncoder : WGPURenderPassEncoder,
  groupLabel : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderRelease(
  renderPassEncoder : WGPURenderPassEncoder,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetBindGroup(
  renderPassEncoder : WGPURenderPassEncoder,
  groupIndex : UInt,
  group : WGPUBindGroup,
  dynamicOffsetCount : UInt64,
  dynamicOffsets : UIntPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetBlendConstant(
  renderPassEncoder : WGPURenderPassEncoder,
  color : WGPUColorPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetImmediates(
  renderPassEncoder : WGPURenderPassEncoder,
  offset : UInt,
  data : UnitPtr,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetIndexBuffer(
  renderPassEncoder : WGPURenderPassEncoder,
  buffer : WGPUBuffer,
  format : WGPUIndexFormat,
  offset : UInt64,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetLabel(
  renderPassEncoder : WGPURenderPassEncoder,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetPipeline(
  renderPassEncoder : WGPURenderPassEncoder,
  pipeline : WGPURenderPipeline,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetScissorRect(
  renderPassEncoder : WGPURenderPassEncoder,
  x : UInt,
  y : UInt,
  width : UInt,
  height : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetStencilReference(
  renderPassEncoder : WGPURenderPassEncoder,
  reference : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetVertexBuffer(
  renderPassEncoder : WGPURenderPassEncoder,
  slot : UInt,
  buffer : WGPUBuffer,
  offset : UInt64,
  size : UInt64,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderSetViewport(
  renderPassEncoder : WGPURenderPassEncoder,
  x : Float,
  y : Float,
  width : Float,
  height : Float,
  minDepth : Float,
  maxDepth : Float,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPassEncoderWriteTimestamp(
  renderPassEncoder : WGPURenderPassEncoder,
  querySet : WGPUQuerySet,
  queryIndex : UInt,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPipelineAddRef(
  renderPipeline : WGPURenderPipeline,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPipelineGetBindGroupLayout(
  renderPipeline : WGPURenderPipeline,
  groupIndex : UInt,
) -> WGPUBindGroupLayout

///|
#declaration_only
declare pub fn wgpuRenderPipelineRelease(
  renderPipeline : WGPURenderPipeline,
) -> Unit

///|
#declaration_only
declare pub fn wgpuRenderPipelineSetLabel(
  renderPipeline : WGPURenderPipeline,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSamplerAddRef(sampler : WGPUSampler) -> Unit

///|
#declaration_only
declare pub fn wgpuSamplerRelease(sampler : WGPUSampler) -> Unit

///|
#declaration_only
declare pub fn wgpuSamplerSetLabel(
  sampler : WGPUSampler,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSetLogCallback(
  callback : WGPULogCallback,
  userdata : UnitPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSetLogLevel(level : WGPULogLevel) -> Unit

///|
#declaration_only
declare pub fn wgpuShaderModuleAddRef(shaderModule : WGPUShaderModule) -> Unit

///|
#declaration_only
declare pub fn wgpuShaderModuleGetCompilationInfo(
  shaderModule : WGPUShaderModule,
  callbackInfo : WGPUCompilationInfoCallbackInfo,
) -> WGPUFuture

///|
#declaration_only
declare pub fn wgpuShaderModuleRelease(shaderModule : WGPUShaderModule) -> Unit

///|
#declaration_only
declare pub fn wgpuShaderModuleSetLabel(
  shaderModule : WGPUShaderModule,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSupportedFeaturesFreeMembers(
  supportedFeatures : WGPUSupportedFeatures,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSupportedInstanceFeaturesFreeMembers(
  supportedInstanceFeatures : WGPUSupportedInstanceFeatures,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSupportedWGSLLanguageFeaturesFreeMembers(
  supportedWGSLLanguageFeatures : WGPUSupportedWGSLLanguageFeatures,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSurfaceAddRef(surface : WGPUSurface) -> Unit

///|
#declaration_only
declare pub fn wgpuSurfaceCapabilitiesFreeMembers(
  surfaceCapabilities : WGPUSurfaceCapabilities,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSurfaceConfigure(
  surface : WGPUSurface,
  config : WGPUSurfaceConfigurationPtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSurfaceGetCapabilities(
  surface : WGPUSurface,
  adapter : WGPUAdapter,
  capabilities : WGPUSurfaceCapabilitiesPtr,
) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuSurfaceGetCurrentTexture(
  surface : WGPUSurface,
  surfaceTexture : WGPUSurfaceTexturePtr,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSurfacePresent(surface : WGPUSurface) -> WGPUStatus

///|
#declaration_only
declare pub fn wgpuSurfaceRelease(surface : WGPUSurface) -> Unit

///|
#declaration_only
declare pub fn wgpuSurfaceSetLabel(
  surface : WGPUSurface,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuSurfaceUnconfigure(surface : WGPUSurface) -> Unit

///|
#declaration_only
declare pub fn wgpuTextureAddRef(texture : WGPUTexture) -> Unit

///|
#declaration_only
declare pub fn wgpuTextureCreateView(
  texture : WGPUTexture,
  descriptor : WGPUTextureViewDescriptorPtr,
) -> WGPUTextureView

///|
#declaration_only
declare pub fn wgpuTextureDestroy(texture : WGPUTexture) -> Unit

///|
#declaration_only
declare pub fn wgpuTextureGetDepthOrArrayLayers(texture : WGPUTexture) -> UInt

///|
#declaration_only
declare pub fn wgpuTextureGetDimension(
  texture : WGPUTexture,
) -> WGPUTextureDimension

///|
#declaration_only
declare pub fn wgpuTextureGetFormat(texture : WGPUTexture) -> WGPUTextureFormat

///|
#declaration_only
declare pub fn wgpuTextureGetHeight(texture : WGPUTexture) -> UInt

///|
#declaration_only
declare pub fn wgpuTextureGetMipLevelCount(texture : WGPUTexture) -> UInt

///|
#declaration_only
declare pub fn wgpuTextureGetNativeMetalTexture(
  texture : WGPUTexture,
) -> UnitPtr

///|
#declaration_only
declare pub fn wgpuTextureGetSampleCount(texture : WGPUTexture) -> UInt

///|
#declaration_only
declare pub fn wgpuTextureGetTextureBindingViewDimension(
  texture : WGPUTexture,
) -> WGPUTextureViewDimension

///|
#declaration_only
declare pub fn wgpuTextureGetUsage(texture : WGPUTexture) -> WGPUTextureUsage

///|
#declaration_only
declare pub fn wgpuTextureGetWidth(texture : WGPUTexture) -> UInt

///|
#declaration_only
declare pub fn wgpuTextureRelease(texture : WGPUTexture) -> Unit

///|
#declaration_only
declare pub fn wgpuTextureSetLabel(
  texture : WGPUTexture,
  label : WGPUStringView,
) -> Unit

///|
#declaration_only
declare pub fn wgpuTextureViewAddRef(textureView : WGPUTextureView) -> Unit

///|
#declaration_only
declare pub fn wgpuTextureViewRelease(textureView : WGPUTextureView) -> Unit

///|
#declaration_only
declare pub fn wgpuTextureViewSetLabel(
  textureView : WGPUTextureView,
  label : WGPUStringView,
) -> Unit