import { NgZone, OnDestroy } from '@angular/core';
import { Nullable } from '@angular-ru/cdk/typings';
import { Subject } from 'rxjs';
import { ProduceDisableFn } from '../../interfaces/table-builder.external';
import { RowId, SelectionStatus } from '../../interfaces/table-builder.internal';
import { SelectionMap } from './selection';
import { SelectionRange } from './selection-range';
import * as i0 from "@angular/core";
export declare class SelectionService<T> implements OnDestroy {
    private readonly ngZone;
    private readonly handler;
    selectionModel: SelectionMap<T>;
    range: SelectionRange;
    selectionStart: SelectionStatus;
    primaryKey: string;
    selectionTaskIdle: Nullable<number>;
    onChanges$: Subject<void>;
    selectionModeIsEnabled: boolean;
    rows: Nullable<T[]>;
    constructor(ngZone: NgZone);
    listenShiftKey(): void;
    unListenShiftKey(): void;
    setProducerDisableFn(producer: ProduceDisableFn<T>): void;
    ngOnDestroy(): void;
    invalidate(): void;
    toggleAll(rows: Nullable<T[]>): void;
    reset(): void;
    toggle(row?: Nullable<T>): void;
    selectRow(row: Nullable<T>, event: MouseEvent): void;
    getIdByRow(row?: Nullable<T>): RowId;
    shiftKeyDetectSelection({ shiftKey }: KeyboardEvent): void;
    private listenShiftKeyByType;
    private removeListenerByType;
    private checkIsAllSelected;
    private multipleSelectByShiftKeydown;
    private multipleSelectByCtrlKeydown;
    private singleSelect;
    static ɵfac: i0.ɵɵFactoryDeclaration<SelectionService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SelectionService<any>>;
}
//# sourceMappingURL=selection.service.d.ts.map