import '../../../../../assert/js/assert.js';
import '../../../../../globals.js';
import StrictOmit from '../../../../../phet-core/js/types/StrictOmit.js';
import { BinaryOp, BufferSlot, loadReducedWGSLOptions, RakedSizable, reduceWGSLOptions, WGSLMainModule } from '../../../imports.js';
export type mainReduceAtomicWGSLOptions<T> = {
    input: BufferSlot<T[]>;
    output: BufferSlot<T>;
    binaryOp: BinaryOp<T>;
    loadReducedOptions?: StrictOmit<loadReducedWGSLOptions<T>, 'value' | 'binaryOp' | 'loadExpression' | 'loadStatements' | 'workgroupSize' | 'grainSize' | 'globalIndex' | 'workgroupIndex' | 'localIndex'>;
    reduceOptions?: StrictOmit<reduceWGSLOptions<T>, 'value' | 'scratch' | 'workgroupSize' | 'binaryOp' | 'localIndex' | 'scratchPreloaded' | 'valuePreloaded' | 'mapScratchIndex'>;
} & RakedSizable;
export declare const MAIN_REDUCE_ATOMIC_DEFAULTS: {
    readonly loadReducedOptions: {
        readonly inputAccessOrder: "striped";
    };
    readonly reduceOptions: {
        readonly convergent: true;
    };
};
declare const mainReduceAtomicWGSL: <T>(providedOptions: mainReduceAtomicWGSLOptions<T>) => WGSLMainModule;
export default mainReduceAtomicWGSL;
//# sourceMappingURL=mainReduceAtomicWGSL.d.ts.map