import '../../../../globals.js';
import { BufferLogger, ComputePass, DeviceContext, TypedBuffer } from '../../imports.js';
export type ExecutorOptions = {
    getTimestampWrites?: (name: string) => GPUComputePassTimestampWrites | null;
    logBuffer?: GPUBuffer | null;
};
export default class Executor {
    readonly deviceContext: DeviceContext;
    readonly encoder: GPUCommandEncoder;
    readonly bufferLogger: BufferLogger;
    private getTimestampWrites;
    constructor(deviceContext: DeviceContext, encoder: GPUCommandEncoder, bufferLogger: BufferLogger, providedOptions?: ExecutorOptions);
    getComputePass(name: string): ComputePass;
    setTypedBufferValue<T>(typedBuffer: TypedBuffer<T>, value: T): void;
    getTypedBufferValue<T>(typedBuffer: TypedBuffer<T>): Promise<T>;
    arrayBuffer(buffer: GPUBuffer): Promise<ArrayBuffer>;
    u32(buffer: GPUBuffer): Promise<Uint32Array>;
    i32(buffer: GPUBuffer): Promise<Int32Array>;
    f32(buffer: GPUBuffer): Promise<Float32Array>;
    u32Numbers(buffer: GPUBuffer): Promise<number[]>;
    i32Numbers(buffer: GPUBuffer): Promise<number[]>;
    f32Numbers(buffer: GPUBuffer): Promise<number[]>;
    static execute<T>(deviceContext: DeviceContext, task: (executor: Executor) => Promise<T>, options?: ExecutorOptions): Promise<T>;
}
//# sourceMappingURL=Executor.d.ts.map