export interface IObjectWithKey {
    key?: string | number;
}
export declare const SELECTION_CHANGE = "change";
export declare enum SelectionMode {
    none = 0,
    single = 1,
    multiple = 2,
}
export interface ISelection {
    count: number;
    mode: SelectionMode;
    canSelectItem: (item: IObjectWithKey) => boolean;
    setChangeEvents(isEnabled: boolean, suppressChange?: boolean): void;
    setItems(items: IObjectWithKey[], shouldClear: boolean): void;
    getItems(): IObjectWithKey[];
    getSelection(): IObjectWithKey[];
    getSelectedIndices(): number[];
    getSelectedCount(): number;
    isRangeSelected(fromIndex: number, count: number): boolean;
    isAllSelected(): boolean;
    isKeySelected(key: string): boolean;
    isIndexSelected(index: number): boolean;
    isModal?(): boolean;
    setAllSelected(isAllSelected: boolean): void;
    setKeySelected(key: string, isSelected: boolean, shouldAnchor: boolean): void;
    setIndexSelected(index: number, isSelected: boolean, shouldAnchor: boolean): void;
    setModal?(isModal: boolean): void;
    selectToKey(key: string, clearSelection?: boolean): void;
    selectToIndex(index: number, clearSelection?: boolean): void;
    toggleAllSelected(): void;
    toggleKeySelected(key: string): void;
    toggleIndexSelected(index: number): void;
    toggleRangeSelected(fromIndex: number, count: number): void;
}
export declare enum SelectionDirection {
    horizontal = 0,
    vertical = 1,
}
