import '../../../../../globals.js';
import StrictOmit from '../../../../../phet-core/js/types/StrictOmit.js';
import { BinaryOp, BufferSlot, OptionalLengthExpressionable, RakedSizable, reduceWGSLOptions, WGSLMainModule } from '../../../imports.js';
export type mainReduceNonCommutativeWGSLOptions<T> = {
    input: BufferSlot<T[]>;
    output: BufferSlot<T[]>;
    binaryOp: BinaryOp<T>;
    stripeOutput?: boolean;
    reduceOptions?: StrictOmit<reduceWGSLOptions<T>, 'value' | 'scratch' | 'workgroupSize' | 'binaryOp' | 'localIndex' | 'scratchPreloaded' | 'valuePreloaded' | 'mapScratchIndex' | 'convergent'>;
} & RakedSizable & OptionalLengthExpressionable;
export declare const MAIN_REDUCE_NON_COMMUTATIVE_DEFAULTS: {
    readonly lengthExpression: null;
    readonly stripeOutput: false;
    readonly reduceOptions: {};
};
declare const mainReduceNonCommutativeWGSL: <T>(providedOptions: mainReduceNonCommutativeWGSLOptions<T>) => WGSLMainModule;
export default mainReduceNonCommutativeWGSL;
//# sourceMappingURL=mainReduceNonCommutativeWGSL.d.ts.map