import '../../../../../globals.js';
/**
 * A template that performs a scan operation using workgroup memory on a single workgroup (one value per thread).
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { BinaryOp, LocalIndexable, WGSLExpressionU32, WGSLStatements, WGSLVariableName, WorkgroupSizable } from '../../../imports.js';
type SelfOptions<T> = {
    value: WGSLVariableName;
    scratch: WGSLVariableName;
    direction?: 'left' | 'right';
    binaryOp: BinaryOp<T>;
    mapScratchIndex?: (index: WGSLExpressionU32) => WGSLExpressionU32;
    exclusive?: boolean;
    needsValidScratch?: boolean;
    scratchPreloaded?: boolean;
    valuePreloaded?: boolean;
} & WorkgroupSizable & LocalIndexable;
export type scanWGSLOptions<T> = SelfOptions<T>;
export declare const SCAN_DEFAULTS: {
    readonly localIndex: import("../WGSLString.js").default;
    readonly direction: "left";
    readonly exclusive: false;
    readonly mapScratchIndex: {
        <T>(value: T): T;
        (): undefined;
    };
    readonly needsValidScratch: false;
    readonly scratchPreloaded: false;
    readonly valuePreloaded: true;
};
declare const scanWGSL: <T>(providedOptions: scanWGSLOptions<T>) => WGSLStatements;
export default scanWGSL;
//# sourceMappingURL=scanWGSL.d.ts.map