import '../../../../../assert/js/assert.js';
import '../../../../../globals.js';
/**
 * Loads data (usually from main memory) with multiple values per thread, but reduces them into a single value per
 * thread. Supports multiple orders of data (both in access order and storage order).
 *
 * grainSize controls how many items are loaded per thread.
 *
 * For each thread, it will essentially load the first value, and then combine that with subsequently loaded values.
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { BinaryOp, GlobalIndexable, LocalIndexable, OptionalLengthExpressionable, RakedSizable, WGSLExpressionT, WGSLExpressionU32, WGSLStatements, WGSLVariableName, WorkgroupIndexable } from '../../../imports.js';
export type loadReducedWGSLOptions<T> = {
    value: WGSLVariableName;
    binaryOp: BinaryOp<T>;
    loadExpression?: ((index: WGSLExpressionU32) => WGSLExpressionT) | null;
    loadStatements?: ((varName: WGSLVariableName, index: WGSLExpressionU32) => WGSLStatements) | null;
    inputOrder?: 'blocked' | 'striped';
    inputAccessOrder?: 'blocked' | 'striped';
    sequentialReduceStyle?: 'factored' | 'unfactored' | 'nested';
    useSelectIfOptional?: boolean;
    orderOverride?: boolean;
} & RakedSizable & GlobalIndexable & WorkgroupIndexable & LocalIndexable & OptionalLengthExpressionable;
export declare const LOAD_REDUCED_DEFAULTS: {
    readonly lengthExpression: null;
    readonly localIndex: import("../WGSLString.js").default;
    readonly workgroupIndex: import("../WGSLString.js").default;
    readonly globalIndex: import("../WGSLString.js").default;
    readonly loadExpression: null;
    readonly loadStatements: null;
    readonly inputOrder: "blocked";
    readonly inputAccessOrder: "striped";
    readonly sequentialReduceStyle: "factored";
    readonly useSelectIfOptional: false;
    readonly orderOverride: false;
};
declare const loadReducedWGSL: <T>(providedOptions: loadReducedWGSLOptions<T>) => WGSLStatements;
export default loadReducedWGSL;
//# sourceMappingURL=loadReducedWGSL.d.ts.map