import '../../../../../globals.js';
import StrictOmit from '../../../../../phet-core/js/types/StrictOmit.js';
import { BinaryOp, BufferSlot, loadReducedWGSLOptions, RakedSizable, reduceWGSLOptions, WGSLMainModule } from '../../../imports.js';
export type mainReduceWGSLOptions<T> = {
    input: BufferSlot<T[]>;
    output: BufferSlot<T[]>;
    binaryOp: BinaryOp<T>;
    stripeOutput?: boolean;
    convergentRemap?: boolean;
    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_DEFAULTS: {
    readonly stripeOutput: false;
    readonly convergentRemap: false;
    readonly loadReducedOptions: {};
    readonly reduceOptions: {};
};
declare const mainReduceWGSL: <T>(providedOptions: mainReduceWGSLOptions<T>) => WGSLMainModule;
export default mainReduceWGSL;
//# sourceMappingURL=mainReduceWGSL.d.ts.map