import '../../../../assert/js/assert.js';
import '../../../../globals.js';
/**
 * TODO: doc
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { BindGroup, BindGroupLayout, BufferSlot, ComputePipeline, Executor, PipelineBlueprint, Resource, ResourceSlot } from '../../imports.js';
export default class ExecutionContext {
    readonly executor: Executor;
    readonly computePipelineMap: Map<PipelineBlueprint, ComputePipeline>;
    readonly bindGroupMap: Map<BindGroupLayout, BindGroup>;
    readonly resourceMap: Map<ResourceSlot, Resource>;
    readonly separateComputePasses: boolean;
    private computePass;
    constructor(executor: Executor, computePipelineMap: Map<PipelineBlueprint, ComputePipeline>, bindGroupMap: Map<BindGroupLayout, BindGroup>, resourceMap: Map<ResourceSlot, Resource>, separateComputePasses: boolean);
    dispatch(pipelineBlueprint: PipelineBlueprint, dispatchX?: number, dispatchY?: number, dispatchZ?: number): void;
    dispatchIndirect(pipelineBlueprint: PipelineBlueprint, indirectBuffer: GPUBuffer, indirectOffset: number): void;
    getEncoderForCustomRender(): GPUCommandEncoder;
    setTypedBufferValue<T>(bufferSlot: BufferSlot<T>, value: T): void;
    getTypedBufferValue<T>(bufferSlot: BufferSlot<T>): Promise<T>;
    arrayBuffer<T>(bufferSlot: BufferSlot<T>): Promise<ArrayBuffer>;
    u32<T>(bufferSlot: BufferSlot<T>): Promise<Uint32Array>;
    i32<T>(bufferSlot: BufferSlot<T>): Promise<Int32Array>;
    f32<T>(bufferSlot: BufferSlot<T>): Promise<Float32Array>;
    u32Numbers<T>(bufferSlot: BufferSlot<T>): Promise<number[]>;
    i32Numbers<T>(bufferSlot: BufferSlot<T>): Promise<number[]>;
    f32Numbers<T>(bufferSlot: BufferSlot<T>): Promise<number[]>;
    finish(): void;
    private getBuffer;
    private getTypedBuffer;
    private getBindGroups;
    private ensureComputePass;
    private releaseComputePass;
}
//# sourceMappingURL=ExecutionContext.d.ts.map