import '../../../../../assert/js/assert.js';
import '../../../../../globals.js';
import { BinaryOp, BufferArraySlot, CompositeModule, MainReduceModuleOptions, MainReduceNonCommutativeModuleOptions, MainScanModuleOptions, PipelineBlueprintOptions, WGSLExpressionU32 } from '../../../imports.js';
type SelfOptions<T> = {
    input: BufferArraySlot<T>;
    output: BufferArraySlot<T>;
    binaryOp: BinaryOp<T>;
    exclusive: boolean;
    workgroupSize: number;
    grainSize: number;
    lengthExpression: WGSLExpressionU32;
    inputOrder?: 'blocked' | 'striped';
    inputAccessOrder?: 'blocked' | 'striped';
    internalStriping?: boolean;
    areScannedReductionsExclusive?: boolean;
};
type ParentOptions<T> = {
    mainScanModuleOptions?: Partial<MainScanModuleOptions<T>>;
    mainReduceModuleOptions?: Partial<MainReduceModuleOptions<T>>;
    mainReduceNonCommutativeModuleOptions?: Partial<MainReduceNonCommutativeModuleOptions<T>>;
} & PipelineBlueprintOptions;
export type ScanModuleOptions<T> = SelfOptions<T> & ParentOptions<T>;
export declare const SCAN_MODULE_DEFAULTS: {
    readonly name: "scan";
    readonly log: false;
    readonly inputOrder: "blocked";
    readonly inputAccessOrder: "striped";
    readonly internalStriping: false;
    readonly areScannedReductionsExclusive: false;
    readonly mainScanModuleOptions: {};
    readonly mainReduceModuleOptions: {};
    readonly mainReduceNonCommutativeModuleOptions: {};
};
export default class ScanModule<T> extends CompositeModule<number> {
    readonly input: BufferArraySlot<T>;
    readonly output: BufferArraySlot<T>;
    readonly slots: BufferArraySlot<T>[];
    readonly internalSlots: BufferArraySlot<T>[];
    constructor(providedOptions: ScanModuleOptions<T>);
}
export {};
//# sourceMappingURL=ScanModule.d.ts.map