/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { EventEmitter, OnDestroy } from '@angular/core';
import { SelectableSettings, SelectionEvent } from './types';
import { RowSelectableFn, RowSelectedFn } from '../rendering/common/row-class';
import { DomEventsService } from '../common/dom-events.service';
import { LocalDataChangesService } from '../editing/local-data-changes.service';
import { NavigationService } from '../navigation/navigation.service';
import { SelectionAggregates } from '../aggregates/aggregate-types';
import { ContextService } from '../common/provider.service';
import { CellSelectionAggregateService } from '../aggregates/selection-aggregate.service';
import * as i0 from "@angular/core";
/**
 * @hidden
 */
type SelectionServiceSettings = {
    rowSelected: RowSelectedFn;
    isRowSelectable: RowSelectableFn;
    selectable: boolean | SelectableSettings;
    view: {
        accessor: Function;
        at: Function;
        length: number;
    };
};
/**
 * @hidden
 */
export declare class SelectionService implements OnDestroy {
    private domEvents;
    private aggregateService;
    private localDataChangesService?;
    private navigationService?;
    private ctxService?;
    changes: EventEmitter<SelectionEvent>;
    lastSelectionStartIndex: any;
    currentSelection: any[];
    nonSelectableRows: Map<any, any>;
    selectAllChecked: boolean;
    settings: SelectionServiceSettings;
    active: boolean;
    aggregates: SelectionAggregates;
    get enableMarquee(): boolean;
    mouseDownEventArgs: any;
    dragging: boolean;
    get hasNonSelectable(): boolean;
    private cellClickSubscription;
    private mousedownSubscription;
    private dataChangedSubscription;
    private lastSelectionData;
    private _selectAllState;
    constructor(domEvents: DomEventsService, aggregateService: CellSelectionAggregateService, localDataChangesService?: LocalDataChangesService, navigationService?: NavigationService, ctxService?: ContextService);
    init(settings: any): void;
    isSelected(index: number): boolean;
    handleClick(item: any, event: any): void;
    toggle(item: any): any;
    toggleByIndex(index: number): any;
    select(item: any): any;
    deselect(removedItem: any): void;
    addAllTo(item: any, ctrlKey: boolean, preserveSelection?: boolean): any;
    updateAll(selectAllChecked: boolean): void;
    selectRange(startIndex: number, endIndex: number, preserveSelection: boolean, existingSelections?: any[]): any;
    get selectAllState(): any;
    get selected(): number[];
    get options(): SelectableSettings;
    ngOnDestroy(): void;
    targetArgs(): any;
    addSubscriptions(): void;
    private getIterator;
    private removeSubscriptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<SelectionService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SelectionService>;
}
export {};
