/**
 * Contains changes made to a selection
 */
export interface SelectionChangeSet {
  /**
   * Tells whether the items were selected or deselected
   */
  selected: boolean;
  /**
   * Gets the affected items
   */
  items: any[];
  /**
   * Gets the indexes of the affected items
   */
  indexes: number[];
}
/**
 * Contains a set of selected data objects with methods for adding and removing
 * items to the selection by referring to them by their index/position.
 * Maintains a memory of the last toggled item which can be used to select or
 * deselect a range of items between the last toggled item and a given item.
 */
export declare class Selection {
  private getDataByIndex;
  private selectedItems;
  private lastToggledIndex;
  /**
   * Creates an instance of the Selection class.
   * The provided function `getDataByIndex` is used to provide data for the
   * selected items when selection is toggled by using the item index,
   * which can be the row position in a table.
   *
   * @param getDataByIndex - A function that returns the data at the given index
   */
  constructor(getDataByIndex: (index: number) => any);
  /**
   * @returns The size of the selection
   */
  get size(): number;
  /**
   * @returns The selected items
   */
  get items(): any[];
  /**
   * @param items - The selected items
   */
  set items(items: any[]);
  /**
   * Checks whether the given item exist in the selection
   *
   * @param data - The data to look up
   * @returns `true` if the given data exist in the selection, otherwise `false`
   */
  has(data: any): boolean;
  /**
   * Toggles the item at the given index in the selection
   *
   * @param index - The index of the item to toggle
   * @returns The changes made to the selection
   */
  toggleSelection(index: number): SelectionChangeSet;
  /**
   * Toggles the items from the last toggled index to the given index in the selection.
   * The toggled items will be toggled as the item at the given index no matter
   * their current state in the selection.
   * Initially, when no last toggled index exist, this function behaves like
   * `toggleSelection`.
   *
   * @param index - The index of the item to toggle
   * @returns The changes made to the selection
   */
  toggleSelectionFromLastIndex(index: number): SelectionChangeSet;
  /**
   * Clears the current selection and resets last toggled index
   */
  clear(): void;
  private toggleRange;
}
//# sourceMappingURL=selection.d.ts.map