import '../../../../../assert/js/assert.js';
import '../../../../../globals.js';
/**
 * A template that performs a reduce operation on a single workgroup. The value will be valid at local_id.x === 0.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { BinaryOp, LocalIndexable, WGSLExpressionU32, WGSLStatements, WGSLVariableName, WorkgroupSizable } from '../../../imports.js';
export type reduceWGSLOptions<T> = {
    value: WGSLVariableName;
    scratch: WGSLVariableName;
    binaryOp: BinaryOp<T>;
    mapScratchIndex?: (index: WGSLExpressionU32) => WGSLExpressionU32;
    convergent?: boolean;
    scratchPreloaded?: boolean;
    valuePreloaded?: boolean;
} & WorkgroupSizable & LocalIndexable;
export declare const REDUCE_DEFAULTS: {
    readonly localIndex: import("../WGSLString.js").default;
    readonly mapScratchIndex: {
        <T>(value: T): T;
        (): undefined;
    };
    readonly convergent: false;
    readonly scratchPreloaded: false;
    readonly valuePreloaded: true;
};
declare const reduceWGSL: <T>(providedOptions: reduceWGSLOptions<T>) => WGSLStatements;
export default reduceWGSL;
//# sourceMappingURL=reduceWGSL.d.ts.map