///
import type { Bindings, BindingsDescriptor, Buffer, BufferDescriptor, ComputePass, ComputePipeline, ComputePipelineDescriptor, Device, DeviceLimits, InputLayout, InputLayoutDescriptor, Program, ProgramDescriptor, QueryPool, QueryPoolType, Readback, RenderBundle, RenderPass, RenderPassDescriptor, RenderPipeline, RenderPipelineDescriptor, RenderTarget, RenderTargetDescriptor, Resource, Sampler, SamplerBinding, SamplerDescriptor, SwapChain, Texture, TextureDescriptor, VendorInfo } from '../api';
import { ClipSpaceNearZ, Format, ViewportOrigin } from '../api';
import type { glsl_compile as glsl_compile_, WGSLComposer } from '../../rust/pkg/glsl_wgsl_compiler';
import type { IDevice_WebGPU, TextureSharedDescriptor, TextureShared_WebGPU } from './interfaces';
export declare class Device_WebGPU implements SwapChain, IDevice_WebGPU {
private swapChainWidth;
private swapChainHeight;
private swapChainFormat;
private swapChainTextureUsage;
private _resourceUniqueId;
private renderPassPool;
private computePassPool;
private frameCommandEncoderPool;
private fallbackTexture2D;
private fallbackTexture2DDepth;
private fallbackTexture2DArray;
private fallbackTexture3D;
private fallbackTextureCube;
private fallbackSamplerFiltering;
private fallbackSamplerComparison;
private featureTextureCompressionBC;
readonly platformString: string;
readonly glslVersion = "#version 440";
readonly explicitBindingLocations = true;
readonly separateSamplerTextures = true;
readonly viewportOrigin = ViewportOrigin.UPPER_LEFT;
readonly clipSpaceNearZ = ClipSpaceNearZ.ZERO;
readonly supportsSyncPipelineCompilation: boolean;
readonly supportMRT: boolean;
device: GPUDevice;
private canvas;
private canvasContext;
private glsl_compile;
private WGSLComposer;
constructor(adapter: GPUAdapter, device: GPUDevice, canvas: HTMLCanvasElement | OffscreenCanvas, canvasContext: GPUCanvasContext, glsl_compile: typeof glsl_compile_, wGSLComposer: WGSLComposer);
destroy(): void;
configureSwapChain(width: number, height: number): void;
getOnscreenTexture(): Texture;
getDevice(): Device;
getCanvas(): HTMLCanvasElement | OffscreenCanvas;
beginFrame(): void;
endFrame(): void;
private getNextUniqueId;
createBuffer(descriptor: BufferDescriptor): Buffer;
createTexture(descriptor: TextureDescriptor): Texture;
/**
* @see https://www.w3.org/TR/webgpu/#dom-gpudevice-createsampler
* @see https://www.w3.org/TR/webgpu/#GPUSamplerDescriptor
*/
createSampler(descriptor: SamplerDescriptor): Sampler;
createRenderTarget(descriptor: RenderTargetDescriptor): RenderTarget;
createRenderTargetFromTexture(texture: Texture): RenderTarget;
createProgram(descriptor: ProgramDescriptor): Program;
private createProgramSimple;
createTextureShared(descriptor: TextureSharedDescriptor, texture: TextureShared_WebGPU, skipCreate: boolean): void;
getFallbackSampler(samplerEntry: SamplerBinding): Sampler;
getFallbackTexture(samplerEntry: SamplerBinding): Texture;
private createFallbackTexture;
createBindings(descriptor: BindingsDescriptor): Bindings;
createInputLayout(descriptor: InputLayoutDescriptor): InputLayout;
createComputePipeline(descriptor: ComputePipelineDescriptor): ComputePipeline;
createRenderPipeline(descriptor: RenderPipelineDescriptor): RenderPipeline;
createQueryPool(type: QueryPoolType, elemCount: number): QueryPool;
private createRenderPipelineInternal;
createReadback(): Readback;
createRenderBundle(): RenderBundle;
createRenderPass(renderPassDescriptor: RenderPassDescriptor): RenderPass;
createComputePass(): ComputePass;
submitPass(_pass: RenderPass | ComputePass): void;
copySubTexture2D(dst_: Texture, dstX: number, dstY: number, src_: Texture, srcX: number, srcY: number, depthOrArrayLayers?: number): void;
queryLimits(): DeviceLimits;
queryTextureFormatSupported(format: Format, width: number, height: number): boolean;
queryPlatformAvailable(): boolean;
queryVendorInfo(): VendorInfo;
queryRenderPass(o: RenderPass): Readonly;
queryRenderTarget(o: RenderTarget): Readonly;
setResourceName(o: Resource, s: string): void;
setResourceLeakCheck(o: Resource, v: boolean): void;
checkForLeaks(): void;
programPatched(o: Program): void;
pipelineQueryReady(o: RenderPipeline): boolean;
pipelineForceReady(o: RenderPipeline): void;
}