import '../../../assert/js/assert.js';
import '../../../globals.js';
import IntentionalAny from '../../../phet-core/js/types/IntentionalAny.js';
export default class WebGPURecorder {
    private readonly commandLists;
    start(): WebGPUCommandList;
    stop(commandList: WebGPUCommandList): void;
    private recordCommand;
    recordGetAdapter(result: GPUAdapter | null, options?: GPURequestAdapterOptions): void;
    recordAdapterRequestDevice(result: GPUDevice, adapter: GPUAdapter, descriptor?: GPUDeviceDescriptor): void;
    recordDeviceCreateBuffer(result: GPUBuffer, device: GPUDevice, descriptor: GPUBufferDescriptor): void;
    recordDeviceCreateQuerySet(result: GPUQuerySet, device: GPUDevice, descriptor: GPUQuerySetDescriptor): void;
    recordDeviceCreateBindGroupLayout(result: GPUBindGroupLayout, device: GPUDevice, descriptor: GPUBindGroupLayoutDescriptor): void;
    recordDeviceCreatePipelineLayout(result: GPUPipelineLayout, device: GPUDevice, descriptor: GPUPipelineLayoutDescriptor): void;
    recordDeviceCreateShaderModule(result: GPUShaderModule, device: GPUDevice, descriptor: GPUShaderModuleDescriptor): void;
    recordDeviceCreateComputePipeline(result: GPUComputePipeline, device: GPUDevice, descriptor: GPUComputePipelineDescriptor, async: boolean): void;
    recordDeviceCreateBindGroup(result: GPUBindGroup, device: GPUDevice, descriptor: GPUBindGroupDescriptor): void;
    recordDeviceCreateCommandEncoder(result: GPUCommandEncoder, device: GPUDevice, descriptor?: GPUCommandEncoderDescriptor): void;
    recordDeviceWriteBuffer(device: GPUDevice, buffer: GPUBuffer, bufferOffset: number, data: BufferSource | SharedArrayBuffer, dataOffset?: number, size?: number): void;
    recordDeviceQueueSubmit(device: GPUDevice, commandBuffers: Iterable<GPUCommandBuffer>): void;
    recordDeviceDestroy(device: GPUDevice): void;
    recordBufferMapAsync(buffer: GPUBuffer, mode: GPUMapModeFlags, offset?: number, size?: number): void;
    recordBufferUnmap(buffer: GPUBuffer): void;
    recordBufferDestroy(buffer: GPUBuffer): void;
    recordEncoderBeginRenderPass(result: GPURenderPassEncoder, commandEncoder: GPUCommandEncoder, descriptor: GPURenderPassDescriptor): void;
    recordEncoderBeginComputePass(result: GPUComputePassEncoder, commandEncoder: GPUCommandEncoder, descriptor?: GPUComputePassDescriptor): void;
    recordEncoderCopyBufferToBuffer(encoder: GPUCommandEncoder, source: GPUBuffer, sourceOffset: number, destination: GPUBuffer, destinationOffset: number, size: number): void;
    recordEncoderCopyBufferToTexture(encoder: GPUCommandEncoder, source: GPUImageCopyBuffer, destination: GPUImageCopyTexture, copySize: GPUExtent3DStrict): void;
    recordEncoderCopyTextureToBuffer(encoder: GPUCommandEncoder, source: GPUImageCopyTexture, destination: GPUImageCopyBuffer, copySize: GPUExtent3DStrict): void;
    recordEncoderCopyTextureToTexture(encoder: GPUCommandEncoder, source: GPUImageCopyTexture, destination: GPUImageCopyTexture, copySize: GPUExtent3DStrict): void;
    recordEncoderClearBuffer(encoder: GPUCommandEncoder, buffer: GPUBuffer, offset?: number, size?: number): void;
    recordEncoderResolveQuerySet(encoder: GPUCommandEncoder, querySet: GPUQuerySet, firstQuery: number, queryCount: number, destination: GPUBuffer, destinationOffset: number): void;
    recordEncoderFinish(result: GPUCommandBuffer, encoder: GPUCommandEncoder, descriptor?: GPUCommandBufferDescriptor): void;
    recordComputePassEncoderSetPipeline(encoder: GPUComputePassEncoder, pipeline: GPUComputePipeline): void;
    recordComputePassEncoderDispatchWorkgroups(encoder: GPUComputePassEncoder, x: number, y?: number, z?: number): void;
    recordComputePassEncoderDispatchWorkgroupsIndirect(encoder: GPUComputePassEncoder, indirectBuffer: GPUBuffer, indirectOffset: number): void;
    recordComputePassEncoderEnd(encoder: GPUComputePassEncoder): void;
    recordPassEncoderSetBindGroup(passEncoder: GPURenderPassEncoder | GPUComputePassEncoder, index: number, bindGroup: GPUBindGroup | null, dynamicOffsets?: Iterable<number>): void;
    recordQuerySetDestroy(querySet: GPUQuerySet): void;
    static getNamePrefix(obj: IntentionalAny): string;
    static createNameMap(objects: IntentionalAny[]): Map<IntentionalAny, string>;
    static arrayBufferLikeString(data: ArrayLike<number> | ArrayBufferLike): string;
    static objectToString(level: number, map: Record<string, string | undefined>): string;
    static rawValue(level: number, value: IntentionalAny, nameMap?: Map<IntentionalAny, string>, objectOverrides?: Record<string, (value: IntentionalAny) => string>): string | undefined;
    static bitfieldToString(bitfield: number, nameMap: Map<number, string>): string;
}
export declare class WebGPUCommandList {
    readonly commands: WebGPUCommand[];
    constructor(commands?: WebGPUCommand[]);
    push(command: WebGPUCommand): void;
    getDeclaredObjects(): IntentionalAny[];
    getUnboundObjects(declaredObjects?: IntentionalAny[]): IntentionalAny[];
    getObjects(): IntentionalAny[];
    getNameMap(): Map<IntentionalAny, string>;
    toJS(nameMap?: Map<IntentionalAny, string>, level?: number): string;
    toJSClosure(nameMap?: Map<IntentionalAny, string>, level?: number): string;
}
export declare abstract class WebGPUCommand {
    readonly result: IntentionalAny | null;
    readonly dependencies: IntentionalAny[];
    constructor(result: IntentionalAny | null, dependencies: IntentionalAny[]);
    abstract toJS(nameMap: Map<IntentionalAny, string>, level?: number): string;
    protected getDeclaration(nameMap: Map<IntentionalAny, string>): string;
}
//# sourceMappingURL=WebGPURecorder.d.ts.map