import type { DataChangeDescription } from './dataChangeDescription';
/**
 * Per-series selection state backed by a `Uint8Array` indexed by datum index.
 *
 * The `Uint8Array` is the sole mutable selection state — there is no secondary
 * structure to keep in sync. Series identity scoping is managed by `DataSet`'s
 * `selections: Map<string, DataSetSelection>`.
 */
export declare class DataSetSelection {
    private selection;
    private count;
    constructor(length: number);
    select(datumIndex: number): number;
    deselect(datumIndex: number): number;
    toggle(datumIndex: number): number;
    isSelected(datumIndex: number): boolean;
    isNotSelected(): boolean;
    isAllSelected(): boolean;
    selectRange(startIndex: number, endIndex: number): number;
    deselectRange(startIndex: number, endIndex: number): number;
    private countRange;
    clear(): void;
    applyDataChange(desc: DataChangeDescription): void;
    getLength(): number;
    getSelectedCount(): number;
    /** Direct access for the render loop. */
    getSelection(): Uint8Array;
}
