import { ReactiveController, ReactiveElement } from 'lit';
declare type GridRange = {
    grid: HTMLElement;
    cells: NodeListOf<HTMLElement>;
    rows: NodeListOf<HTMLElement>;
    rangeSelection?: boolean;
};
/**
 * Given a 2d array grid structure provide a highlight/range selection of given cells
 */
export declare function gridRangeSelection<T extends ReactiveElement & GridRange>(): ClassDecorator;
export declare class GridRangeSelectionController<T extends ReactiveElement & GridRange> implements ReactiveController {
    private host;
    private selectionActive;
    private firstCell;
    private activeCell;
    private get enabled();
    constructor(host: T);
    hostConnected(): Promise<void>;
    private setupMouseEvents;
    private setupKeyboardListeners;
    private setFirstCell;
    private setActiveCell;
    private stopSelection;
    private resetAllActiveCells;
    private calculateSelection;
}
export {};
