import { type SlickDataView, SlickEvent, SlickEventData, SlickEventHandler, SlickRange, type SlickGrid } from '../core/index';
import type { SelectionModel } from '../enums/index';
import type { CustomDataView, OnActiveCellChangedEventArgs } from '../interfaces/index';
import { SlickCellRangeSelector } from './index';
export interface CellSelectionModelOption {
    selectActiveCell?: boolean;
    cellRangeSelector: SlickCellRangeSelector;
}
export declare class SlickCellSelectionModel implements SelectionModel {
    onSelectedRangesChanged: SlickEvent<SlickRange[]>;
    pluginName: 'CellSelectionModel';
    protected _addonOptions?: CellSelectionModelOption;
    protected _cachedPageRowCount: number;
    protected _eventHandler: SlickEventHandler;
    protected _dataView?: CustomDataView | SlickDataView;
    protected _grid: SlickGrid;
    protected _prevSelectedRow?: number;
    protected _prevKeyDown: string;
    protected _ranges: SlickRange[];
    protected _selector: SlickCellRangeSelector;
    protected _defaults: {
        selectActiveCell: boolean;
    };
    constructor(options?: {
        selectActiveCell: boolean;
        cellRangeSelector: SlickCellRangeSelector;
    });
    get addonOptions(): CellSelectionModelOption | undefined;
    get cellRangeSelector(): SlickCellRangeSelector;
    get eventHandler(): SlickEventHandler;
    init(grid: SlickGrid): void;
    destroy(): void;
    dispose(): void;
    getSelectedRanges(): SlickRange[];
    rangesAreEqual(range1: SlickRange[], range2: SlickRange[]): boolean;
    refreshSelections(): void;
    removeInvalidRanges(ranges: SlickRange[]): SlickRange[];
    /** Provide a way to force a recalculation of page row count (for example on grid resize) */
    resetPageRowCount(): void;
    setSelectedRanges(ranges: SlickRange[], caller?: string): void;
    protected handleActiveCellChange(_e: SlickEventData, args: OnActiveCellChangedEventArgs): void;
    protected handleBeforeCellRangeSelected(e: SlickEventData): boolean | void;
    protected handleCellRangeSelected(_e: SlickEventData, args: {
        range: SlickRange;
    }): void;
    protected isKeyAllowed(key: string): boolean;
    protected handleKeyDown(e: SlickEventData): void;
}
//# sourceMappingURL=slickCellSelectionModel.d.ts.map