import '../../../../../assert/js/assert.js';
import '../../../../../globals.js';
/**
 * Raked workgroup scan. Assumes the existence of things in the scratch array.
 *
 * WILL NEED workgroupBarrier() before/after (before if needed for scratch, after for scratch)
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { BinaryOp, LocalIndexable, RakedSizable, WGSLExpression, WGSLExpressionU32, WGSLStatements, WGSLVariableName, WorkgroupIndexable } from '../../../imports.js';
export type scanRakedWGSLOptions<T> = {
    scratch: WGSLVariableName;
    direction?: 'left' | 'right';
    binaryOp: BinaryOp<T>;
    storeReduction?: ((index: WGSLExpressionU32, expr: WGSLExpression) => WGSLStatements) | null;
    stripeReducedOutput?: boolean;
    exclusive?: boolean;
    getAddedValue?: ((varName: WGSLVariableName) => WGSLStatements) | null;
    addedValueNeedsWorkgroupBarrier?: boolean;
} & RakedSizable & WorkgroupIndexable & LocalIndexable;
export declare const SCAN_RAKED_DEFAULTS: {
    readonly localIndex: import("../WGSLString.js").default;
    readonly workgroupIndex: import("../WGSLString.js").default;
    readonly direction: "left";
    readonly exclusive: false;
    readonly storeReduction: null;
    readonly stripeReducedOutput: false;
    readonly getAddedValue: null;
    readonly addedValueNeedsWorkgroupBarrier: true;
};
declare const scanRakedWGSL: <T>(providedOptions: scanRakedWGSLOptions<T>) => WGSLStatements;
export default scanRakedWGSL;
//# sourceMappingURL=scanRakedWGSL.d.ts.map