import type { WeightedItem } from "../types/types";
export declare class WeightedRandomSelector<T> {
    private readonly SMALL_DATASET_THRESHOLD;
    private isSmallDataset;
    private fastAccessArray?;
    private items?;
    private totalWeight;
    /**
     * Creates a WeightedRandomSelector that respects actual weights
     * @param items Array of items with weights
     * @param isSorted boolean indicating if items are pre-sorted
     */
    constructor(items: WeightedItem<T>[], isSorted?: boolean);
    private initializeSmallDataset;
    /**
     * Initialization for large datasets using cumulative weights
     */
    private initializeLargeDataset;
    /**
     * Returns a random item respecting actual weights
     */
    select(): T;
    private binarySearch;
    selectMultiple(count: number): T[];
}
