import '../../../../../assert/js/assert.js';
import '../../../../../globals.js';
import { BinaryOp, BufferSlot, RakedSizable, scanComprehensiveWGSLOptions, WGSLMainModule } from '../../../imports.js';
type SelfOptions<T> = {
    binaryOp: BinaryOp<T>;
    inPlace?: boolean;
    storeReduction?: boolean;
    addScannedReduction?: boolean;
    addScannedDoubleReduction?: boolean;
    areScannedReductionsExclusive?: boolean;
    input?: BufferSlot<T[]> | null;
    output?: BufferSlot<T[]> | null;
    data?: BufferSlot<T[]> | null;
    reduction?: BufferSlot<T[]> | null;
    scannedReduction?: BufferSlot<T[]> | null;
    scannedDoubleReduction?: BufferSlot<T[]> | null;
    getAddedValue?: scanComprehensiveWGSLOptions<T>['getAddedValue'];
} & RakedSizable;
export type mainScanWGSLOptions<T> = SelfOptions<T> & Pick<scanComprehensiveWGSLOptions<T>, 'exclusive' | 'lengthExpression' | 'inputOrder' | 'inputAccessOrder' | 'factorOutSubexpressions' | 'stripeReducedOutput'>;
export declare const MAIN_SCAN_DEFAULTS: {
    readonly inPlace: false;
    readonly storeReduction: false;
    readonly addScannedReduction: false;
    readonly addScannedDoubleReduction: false;
    readonly areScannedReductionsExclusive: false;
    readonly input: null;
    readonly output: null;
    readonly data: null;
    readonly reduction: null;
    readonly scannedReduction: null;
    readonly scannedDoubleReduction: null;
    readonly getAddedValue: null;
};
declare const mainScanWGSL: <T>(providedOptions: mainScanWGSLOptions<T>) => WGSLMainModule;
export default mainScanWGSL;
//# sourceMappingURL=mainScanWGSL.d.ts.map