import '../../../../globals.js';
/**
 * Assists in logging out buffers for WebGPU debugging.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { DeviceContext } from '../../imports.js';
export type FromArrayBufferable = {
    fromArrayBuffer: (arrayBuffer: ArrayBuffer) => {
        toString(): string;
    }[];
};
export type FromMultiArrayBufferable = {
    fromArrayBuffer: (arrayBuffer: ArrayBuffer) => {
        toStrings(): string[];
    }[];
};
export default class BufferLogger {
    private readonly deviceContext;
    private readonly callbacksOnComplete;
    constructor(deviceContext: DeviceContext);
    complete(): Promise<void>;
    hasCallbacks(): boolean;
    withBuffer(encoder: GPUCommandEncoder, buffer: GPUBuffer, callback: (arrayBuffer: ArrayBuffer) => Promise<void>): void;
    arrayBufferPromise(encoder: GPUCommandEncoder, buffer: GPUBuffer): Promise<ArrayBuffer>;
    arrayBuffer(encoder: GPUCommandEncoder, buffer: GPUBuffer): Promise<ArrayBuffer>;
    u32(encoder: GPUCommandEncoder, buffer: GPUBuffer): Promise<Uint32Array>;
    i32(encoder: GPUCommandEncoder, buffer: GPUBuffer): Promise<Int32Array>;
    f32(encoder: GPUCommandEncoder, buffer: GPUBuffer): Promise<Float32Array>;
    u32Numbers(encoder: GPUCommandEncoder, buffer: GPUBuffer): Promise<number[]>;
    i32Numbers(encoder: GPUCommandEncoder, buffer: GPUBuffer): Promise<number[]>;
    f32Numbers(encoder: GPUCommandEncoder, buffer: GPUBuffer): Promise<number[]>;
    logIndexed(encoder: GPUCommandEncoder, buffer: GPUBuffer, name: string, type: FromArrayBufferable, lengthCallback?: (() => number) | null): void;
    logIndexedMultiline(encoder: GPUCommandEncoder, buffer: GPUBuffer, name: string, type: FromMultiArrayBufferable, lengthCallback?: (() => number) | null): void;
    logIndexedImmediate(arrayBuffer: ArrayBuffer, name: string, type: FromArrayBufferable, lengthCallback?: (() => number) | null): void;
    static readonly RasterU32: {
        fromArrayBuffer(arrayBuffer: ArrayBuffer): number[];
    };
    static readonly RasterI32: {
        fromArrayBuffer(arrayBuffer: ArrayBuffer): number[];
    };
    static readonly RasterF32: {
        fromArrayBuffer(arrayBuffer: ArrayBuffer): number[];
    };
    static toIndexedString(n: {
        toString(): string;
    }, i: number): string;
    static toMultiIndexedString(n: {
        toStrings(): string[];
    }, i: number): string;
    static startGroup(name: string): void;
    static endGroup(): void;
}
//# sourceMappingURL=BufferLogger.d.ts.map