import '../../../../../assert/js/assert.js';
import '../../../../../globals.js';
import { BitOrder, BufferArraySlot, CompositeModule, MainRadixHistogramModuleOptions, MainRadixScatterModuleOptions, PipelineBlueprintOptions, ScanModuleOptions, WGSLExpressionU32 } from '../../../imports.js';
type SelfOptions<T> = {
    input: BufferArraySlot<T>;
    output: BufferArraySlot<T>;
    order: BitOrder<T>;
    totalBits: number;
    radixWorkgroupSize: number;
    radixGrainSize: number;
    scanWorkgroupSize: number;
    scanGrainSize: number;
    lengthExpression: WGSLExpressionU32;
    bitsPerPass?: number;
    bitsPerInnerPass?: number;
    earlyLoad?: boolean;
    canMutateInput?: boolean;
};
type ParentOptions<T> = {
    mainRadixHistogramModuleOptions?: Partial<MainRadixHistogramModuleOptions<T>>;
    mainRadixScatterModuleOptions?: Partial<MainRadixScatterModuleOptions<T>>;
    scanModuleOptions?: Partial<ScanModuleOptions<number>>;
} & PipelineBlueprintOptions;
export type RadixSortModuleOptions<T> = SelfOptions<T> & ParentOptions<T>;
export declare const RADIX_SORT_MODULE_DEFAULTS: {
    readonly bitsPerPass: 8;
    readonly bitsPerInnerPass: 2;
    readonly earlyLoad: false;
    readonly canMutateInput: false;
    readonly mainRadixHistogramModuleOptions: {};
    readonly mainRadixScatterModuleOptions: {};
    readonly scanModuleOptions: {};
};
export declare const getMaxRadixBitsPerInnerPass: (workgroupSize: number, grainSize: number) => number;
export declare const getRadixBitVectorSize: (workgroupSize: number, grainSize: number, bitsPerInnerPass: number) => number;
export default class RadixSortModule<T> extends CompositeModule<number> {
    readonly input: BufferArraySlot<T>;
    readonly output: BufferArraySlot<T>;
    readonly histogram: BufferArraySlot<number>;
    readonly extraSlots: BufferArraySlot<T>[];
    constructor(providedOptions: RadixSortModuleOptions<T>);
    static getMaximumElementQuantity(radixWorkgroupSize: number, radixGrainSize: number, scanWorkgroupSize: number, scanGrainSize: number, bitsPerPass: number, scanLevels?: number): number;
}
export {};
//# sourceMappingURL=RadixSortModule.d.ts.map