import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * GPU profiling of tests.
 *
 * NOTE: Launch Chrome with the below command line parameters to enable the timestamp query feature:
 *
 * open -a "Google Chrome Canary" --args --enable-dawn-features=allow_unsafe_apis --enable-webgpu-developer-features --disable-dawn-features=timestamp_quantization
 *
 * or to dump shaders also:
 * open -a "Google Chrome Canary" --args --enable-dawn-features=allow_unsafe_apis,dump_shaders --enable-webgpu-developer-features --disable-dawn-features=timestamp_quantization
 *
 * NOTE: Potentially add dump_shaders - Dumped shaders will be log via EmitLog, thus printed "
      "in Chrome console or consumed by user-defined callback function.",
      "https://crbug.com/dawn/792"
 *
 * TODO: try disable_workgroup_init sometime, to see if we can get more parallelism, maybe record_detailed_timing_in_trace_events, disable_timestamp_query_conversion
 * TODO: --disable-dawn-features=timestamp_quantization
 *
 * Note: Dawn toggles at https://dawn.googlesource.com/dawn/+/refs/heads/main/src/dawn/native/Toggles.cpp
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { DeviceContext, TimestampLoggerResult } from '../imports.js';
declare class GPUProfiler {
    readonly name: string;
    readonly callback: () => Promise<TimestampLoggerResult>;
    readonly results: TimestampLoggerResult[];
    constructor(name: string, callback: () => Promise<TimestampLoggerResult>);
    addResult(): Promise<void>;
    discardResult(): Promise<void>;
    getAverage(): TimestampLoggerResult;
}
export default class GPUProfiling {
    static test(): Promise<void>;
    static loopingTest(profilerFactories: ((deviceContext: DeviceContext) => Promise<GPUProfiler>)[]): Promise<void>;
    static getRadixProfiler(deviceContext: DeviceContext, numbers: number[], options: {
        combineStrategy: boolean;
        radixWorkgroupSize: number;
        radixGrainSize: number;
        scanWorkgroupSize: number;
        scanGrainSize: number;
        bitsPerPass: number;
        bitsPerInnerPass: number;
    }): Promise<GPUProfiler>;
}
export {};
//# sourceMappingURL=GPUProfiling.d.ts.map