import '../../../globals.js';
import { BaseWorkgroupValues, ParallelKernel, ParallelWorkgroup } from '../imports.js';
export default class ParallelExecutor<WorkgroupValues extends BaseWorkgroupValues> {
    readonly kernel: ParallelKernel<WorkgroupValues>;
    readonly resolves: (() => void)[];
    readonly donePromises: Promise<void>[];
    constructor(kernel: ParallelKernel<WorkgroupValues>);
    dispatch(dispatchX?: number, dispatchY?: number, dispatchZ?: number): Promise<void>;
    /**
     * Kick off the next pending execution thread action.
     */
    next(): void;
    /**
     * Called from execution threads at the start of their execution. We'll pause all of them until we're ready to
     * proceed.
     */
    start(): Promise<void>;
    workgroupBarrier(workgroup: ParallelWorkgroup<WorkgroupValues>): Promise<void>;
    storageBarrier(workgroup: ParallelWorkgroup<WorkgroupValues>): Promise<void>;
    afterSet(): Promise<void>;
    afterGet(): Promise<void>;
}
//# sourceMappingURL=ParallelExecutor.d.ts.map