/**
 * Balances splat budget across multiple octree instances by adjusting LOD levels.
 * Uses sqrt-based bucket distribution to give more precision to nearby geometry.
 * Bucket 0 = nearest to camera (highest priority), bucket N-1 = farthest (lowest priority).
 *
 * @ignore
 */
export class GSplatBudgetBalancer {
    /**
     * Buckets storing NodeInfo references.
     * @type {Array<Array>|null}
     * @private
     */
    private _buckets;
    /**
     * Initialize bucket infrastructure on first use.
     * @private
     */
    private _initBuckets;
    /**
     * Balances splat budget across all octree instances by adjusting LOD levels.
     * Uses sqrt-based bucket distribution to give more precision to nearby geometry.
     * Makes multiple passes, adjusting by one LOD level per pass, until budget is reached
     * or all nodes hit their respective limits (per-instance rangeMin or rangeMax).
     *
     * @param {Map<GSplatPlacement, GSplatOctreeInstance>} octreeInstances - Map of
     * GSplatOctreeInstance objects.
     * @param {number} budget - Target splat budget for octrees.
     */
    balance(octreeInstances: Map<GSplatPlacement, GSplatOctreeInstance>, budget: number): void;
}
import type { GSplatPlacement } from './gsplat-placement.js';
import type { GSplatOctreeInstance } from './gsplat-octree-instance.js';
