/**
 * @import { GraphicsDevice } from '../../platform/graphics/graphics-device.js'
 * @import { Texture } from '../../platform/graphics/texture.js'
 */
/**
 * Render pass that counts digit occurrences per group (Pass 0 of radix sort).
 * Outputs to R32F prefix sums texture.
 *
 * Has two variants:
 * - sourceLinear=true: First pass, reads from user's linear-layout texture
 * - sourceLinear=false: Subsequent passes, reads from internal Morton-layout texture
 *
 * @category Graphics
 * @ignore
 */
export class RenderPassRadixSortCount extends RenderPassShaderQuad {
    /**
     * @param {GraphicsDevice} device - The graphics device.
     * @param {boolean} sourceLinear - Whether to read from linear-layout source texture.
     * @param {number} bitsPerStep - Bits per radix step (usually 4).
     * @param {number} groupSize - Log2 of group size (usually 4 for 16 elements).
     * @param {number} currentBit - Current bit offset for this pass.
     */
    constructor(device: GraphicsDevice, sourceLinear: boolean, bitsPerStep: number, groupSize: number, currentBit: number);
    /**
     * Whether this pass reads from linear-layout source texture (first pass).
     *
     * @type {boolean}
     */
    sourceLinear: boolean;
    /**
     * Bits per radix step (usually 4).
     *
     * @type {number}
     */
    bitsPerStep: number;
    /**
     * Log2 of group size (usually 4 for 16 elements).
     *
     * @type {number}
     */
    groupSize: number;
    /**
     * Current bit offset for this pass.
     *
     * @type {number}
     */
    currentBit: number;
    /**
     * Dynamic params updated per frame.
     *
     * @type {{elementCount: number, imageElementsLog2: number}}
     * @private
     */
    private _dynamicParams;
    keysTextureId: import("../../index.js").ScopeId;
    bitsPerStepId: import("../../index.js").ScopeId;
    groupSizeId: import("../../index.js").ScopeId;
    elementCountId: import("../../index.js").ScopeId;
    imageElementsLog2Id: import("../../index.js").ScopeId;
    currentBitId: import("../../index.js").ScopeId;
    /**
     * Sets the keys texture to read from.
     *
     * @param {Texture} keysTexture - The keys texture (R32U).
     */
    setKeysTexture(keysTexture: Texture): void;
    _keysTexture: Texture;
    /**
     * Sets dynamic parameters (called each frame).
     *
     * @param {number} elementCount - Number of elements to sort.
     * @param {number} imageElementsLog2 - Log2 of total texture elements.
     */
    setDynamicParams(elementCount: number, imageElementsLog2: number): void;
}
import { RenderPassShaderQuad } from './render-pass-shader-quad.js';
import type { Texture } from '../../platform/graphics/texture.js';
import type { GraphicsDevice } from '../../platform/graphics/graphics-device.js';
