import { IgxForOfDirective } from '../directives/for-of/for_of.directive';
import { GridType } from './common/grid.interface';
import { IgxGridBaseDirective } from './grid-base.directive';
import { IMultiRowLayoutNode } from './selection/selection.service';
import { GridKeydownTargetType } from './common/enums';
export interface ColumnGroupsCache {
    level: number;
    visibleIndex: number;
}
export interface IActiveNode {
    gridID?: string;
    row: number;
    column?: number;
    level?: number;
    mchCache?: ColumnGroupsCache;
    layout?: IMultiRowLayoutNode;
}
/** @hidden */
export declare class IgxGridNavigationService {
    grid: IgxGridBaseDirective & GridType;
    _activeNode: IActiveNode;
    protected pendingNavigation: boolean;
    get activeNode(): IActiveNode;
    set activeNode(value: IActiveNode);
    handleNavigation(event: KeyboardEvent): void;
    dispatchEvent(event: KeyboardEvent): void;
    protected getNextPosition(rowIndex: number, colIndex: number, key: string, shift: boolean, ctrl: boolean, event: KeyboardEvent): {
        rowIndex: number;
        colIndex: number;
    };
    summaryNav(event: KeyboardEvent): void;
    headerNavigation(event: KeyboardEvent): void;
    protected horizontalNav(event: KeyboardEvent, key: string, rowIndex: number, tag: GridKeydownTargetType): void;
    focusTbody(event: any): void;
    focusFirstCell(header?: boolean): void;
    get lastColumnIndex(): number;
    get displayContainerWidth(): number;
    get displayContainerScrollLeft(): number;
    get containerTopOffset(): number;
    isColumnFullyVisible(columnIndex: number): boolean;
    protected getColumnUnpinnedIndex(visibleColumnIndex: number): any;
    protected forOfDir(): IgxForOfDirective<any>;
    protected handleAlt(key: string, event: KeyboardEvent): void;
    protected handleEditing(shift: boolean, event: KeyboardEvent): void;
    shouldPerformHorizontalScroll(visibleColIndex: number, rowIndex?: number): boolean;
    shouldPerformVerticalScroll(targetRowIndex: number, visibleColIndex: number): boolean;
    protected navigateInBody(rowIndex: any, visibleColIndex: any, cb?: Function): void;
    performVerticalScrollToCell(rowIndex: number, visibleColIndex?: number, cb?: () => void): void;
    performHorizontalScrollToCell(visibleColumnIndex: number, cb?: () => void): void;
    isDataRow(rowIndex: number, includeSummary?: boolean): boolean;
    setActiveNode(activeNode: IActiveNode): void;
    isActiveNodeChanged(activeNode: IActiveNode): boolean;
    protected emitKeyDown(type: GridKeydownTargetType, rowIndex: any, event: any): true;
    protected isColumnPinned(columnIndex: number, forOfDir: IgxForOfDirective<any>): boolean;
    protected findFirstDataRowIndex(): number;
    protected findLastDataRowIndex(): number;
    protected getRowElementByIndex(index: any): any;
    protected isValidPosition(rowIndex: number, colIndex: number): boolean;
    protected performHeaderKeyCombination(column: any, key: any, shift: any, ctrl: any, alt: any, event: any): void;
    private handleMCHeaderNav;
    private handleMCHExpandCollapse;
    private handleColumnSelection;
    private getNextColumnMCH;
    private get currentActiveColumn();
    private isActiveNode;
    private isToggleKey;
}
