import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ComponentFactoryResolver, ElementRef, EventEmitter, IterableDiffers, NgZone, OnDestroy, OnInit, QueryList, TemplateRef, ViewContainerRef, InjectionToken, DoCheck } from '@angular/core';
import ResizeObserver from 'resize-observer-polyfill';
import { Subject } from 'rxjs';
import { DataType } from '../data-operations/data-util';
import { FilteringLogic } from '../data-operations/filtering-expression.interface';
import { IGroupByRecord } from '../data-operations/groupby-record.interface';
import { ISortingExpression } from '../data-operations/sorting-expression.interface';
import { IForOfState, IgxGridForOfDirective } from '../directives/for-of/for_of.directive';
import { IgxOverlayService } from '../services/index';
import { GridBaseAPIService } from './api.service';
import { IgxGridCellComponent } from './cell.component';
import { IColumnVisibilityChangedEventArgs } from './hiding/column-hiding-item.directive';
import { ISummaryExpression } from './summaries/grid-summary';
import { IgxGridToolbarComponent } from './toolbar/grid-toolbar.component';
import { IgxRowDirective } from './row.directive';
import { IgxGridHeaderComponent } from './headers/grid-header.component';
import { IgxOverlayOutletDirective, IgxToggleDirective } from '../directives/toggle/toggle.directive';
import { IFilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
import { IFilteringOperation } from '../data-operations/filtering-condition';
import { Transaction, TransactionService, State } from '../services/index';
import { IgxRowEditTabStopDirective } from './grid.rowEdit.directive';
import { IgxGridNavigationService } from './grid-navigation.service';
import { IDisplayDensityOptions, DisplayDensityBase } from '../core/displayDensity';
import { IgxFilteringService } from './filtering/grid-filtering.service';
import { IgxGridFilteringCellComponent } from './filtering/base/grid-filtering-cell.component';
import { IgxGridHeaderGroupComponent } from './headers/grid-header-group.component';
import { IGridResourceStrings } from '../core/i18n/grid-resources';
import { IgxGridSummaryService } from './summaries/grid-summary.service';
import { IgxSummaryRowComponent } from './summaries/summary-row.component';
import { IgxGridSelectionService, GridSelectionRange, IgxGridCRUDService, IgxRow } from './selection/selection.service';
import { DragScrollDirection } from './selection/drag-select.directive';
import { ICachedViewLoadedEventArgs } from '../directives/template-outlet/template_outlet.directive';
import { IgxExcelStyleLoadingValuesTemplateDirective } from './filtering/excel-style/excel-style-search.component';
import { IgxExcelStyleSortingTemplateDirective, IgxExcelStylePinningTemplateDirective, IgxExcelStyleHidingTemplateDirective, IgxExcelStyleMovingTemplateDirective } from './filtering/excel-style/grid.excel-style-filtering.component';
import { IgxGridColumnResizerComponent } from './resizing/resizer.component';
import { IgxGridFilteringRowComponent } from './filtering/base/grid-filtering-row.component';
import { IgxColumnResizingService } from './resizing/resizing.service';
import { IFilteringStrategy } from '../data-operations/filtering-strategy';
import { GridSelectionMode, GridSummaryPosition, GridSummaryCalculationMode, FilterMode } from './common/enums';
import { IGridCellEventArgs, IRowSelectionEventArgs, IPinColumnEventArgs, IGridEditEventArgs, IPageEventArgs, IRowDataEventArgs, IColumnResizeEventArgs, IColumnMovingStartEventArgs, IColumnMovingEventArgs, IColumnMovingEndEventArgs, IGridKeydownEventArgs, IRowDragStartEventArgs, IRowDragEndEventArgs, IGridClipboardEvent, IGridToolbarExportEventArgs, ISearchInfo, ICellPosition, IRowToggleEventArgs } from './common/events';
import { GridType } from './common/grid.interface';
import { DropPosition } from './moving/moving.service';
import { IgxHeadSelectorDirective, IgxRowSelectorDirective } from './selection/row-selectors';
import { IgxGridToolbarCustomContentDirective } from './toolbar/toolbar.directive';
import { IgxColumnComponent } from './columns/column.component';
import { IGridSortingStrategy } from '../data-operations/sorting-strategy';
export declare const IgxGridTransaction: InjectionToken<string>;
export declare class IgxGridBaseDirective extends DisplayDensityBase implements OnInit, DoCheck, OnDestroy, AfterContentInit, AfterViewInit {
    selectionService: IgxGridSelectionService;
    crudService: IgxGridCRUDService;
    colResizingService: IgxColumnResizingService;
    protected gridAPI: GridBaseAPIService<IgxGridBaseDirective & GridType>;
    protected _transactions: TransactionService<Transaction, State>;
    private elementRef;
    private zone;
    document: any;
    cdr: ChangeDetectorRef;
    protected resolver: ComponentFactoryResolver;
    protected differs: IterableDiffers;
    protected viewRef: ViewContainerRef;
    navigation: IgxGridNavigationService;
    filteringService: IgxFilteringService;
    protected overlayService: IgxOverlayService;
    summaryService: IgxGridSummaryService;
    protected _displayDensityOptions: IDisplayDensityOptions;
    private _scrollWidth;
    private _customDragIndicatorIconTemplate;
    protected _init: boolean;
    private _cdrRequests;
    protected _cdrRequestRepaint: boolean;
    get scrollWidth(): number;
    private _resourceStrings;
    private _emptyGridMessage;
    private _emptyFilteredGridMessage;
    private _isLoading;
    private _locale;
    _destroyed: boolean;
    private overlayIDs;
    private _filteringStrategy;
    private _sortingStrategy;
    private _hostWidth;
    private _advancedFilteringOverlayId;
    private _advancedFilteringPositionSettings;
    private _advancedFilteringOverlaySettings;
    /**
    * @hidden @internal
    */
    protected defaultExpandedTemplate: TemplateRef<any>;
    /**
    * @hidden @internal
    */
    protected defaultCollapsedTemplate: TemplateRef<any>;
    /**
     * Gets/Sets the resource strings.
     * @remarks
     * By default it uses EN resources.
    */
    set resourceStrings(value: IGridResourceStrings);
    get resourceStrings(): IGridResourceStrings;
    /**
     * Gets/Sets whether to autogenerate the columns.
     * @remarks
     * The default value is false. When set to true, it will override all columns declared through code or in markup.
     * @example
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true"></igx-grid>
     * ```
     */
    autoGenerate: boolean;
    /**
    * @hidden @internal
    */
    id: string;
    /**
     * Gets/Sets a custom template when empty.
     * @example
     * ```html
     * <igx-grid [id]="'igx-grid-1'" [data]="Data" [emptyGridTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
     * ```
     */
    emptyGridTemplate: TemplateRef<any>;
    /**
     * Gets/Sets a custom template when loading.
     * @example
     * ```html
     * <igx-grid [id]="'igx-grid-1'" [data]="Data" [loadingGridTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
     * ```
     */
    loadingGridTemplate: TemplateRef<any>;
    /**
     * Gets/Sets the filtering logic of the `IgxGridComponent`.
     * @remarks
     * The default is AND.
     * @example
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true" [filteringLogic]="filtering"></igx-grid>
     * ```
     */
    get filteringLogic(): FilteringLogic;
    set filteringLogic(value: FilteringLogic);
    /**
     * Gets/Sets the filtering state.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [autoGenerate]="true" [(filteringExpressionsTree)]="model.filteringExpressions"></igx-grid>
     * ```
     * @remarks
     * Supports two-way binding.
     */
    get filteringExpressionsTree(): IFilteringExpressionsTree;
    set filteringExpressionsTree(value: IFilteringExpressionsTree);
    /**
     * Emitted after filtering is performed.
     * @remarks
     * Returns the filtering expressions tree of the column for which filtering was performed.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
     *              (filteringExpressionsTreeChange)="filteringExprTreeChange($event)"></igx-grid>
     * ```
    */
    filteringExpressionsTreeChange: EventEmitter<IFilteringExpressionsTree>;
    /**
     * Emitted after advanced filtering is performed.
     * @remarks
     * Returns the advanced filtering expressions tree.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
     *           (advancedFilteringExpressionsTreeChange)="advancedFilteringExprTreeChange($event)"></igx-grid>
     * ```
    */
    advancedFilteringExpressionsTreeChange: EventEmitter<IFilteringExpressionsTree>;
    /**
     * Gets/Sets the advanced filtering state.
     * @example
     * ```typescript
     * let advancedFilteringExpressionsTree = this.grid.advancedFilteringExpressionsTree;
     * this.grid.advancedFilteringExpressionsTree = logic;
     * ```
     */
    get advancedFilteringExpressionsTree(): IFilteringExpressionsTree;
    set advancedFilteringExpressionsTree(value: IFilteringExpressionsTree);
    /**
     * Gets/Sets the locale.
     * @remarks
     * If not set, returns browser's language.
     */
    get locale(): string;
    set locale(value: string);
    /**
     * Gets/Sets whether the paging feature is enabled.
     * @remarks
     * The default state is disabled (false).
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [autoGenerate]="true" [paging]="true"></igx-grid>
     * ```
     */
    get paging(): boolean;
    set paging(value: boolean);
    /**
     * Gets/Sets the current page index.
    *@example
    * ```html
     * <igx-grid #grid [data]="Data" [paging]="true" [(page)]="model.page" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * Supports two-way binding.
     */
    get page(): number;
    set page(val: number);
    /**
     * Emitted after the current page is changed.
     * @example
     * ```html
     * <igx-grid (pageChange)="onPageChange($event)"></igx-grid>
     * ```
     * ```typescript
     * public onPageChange(page: number) {
     *   this.currentPage = page;
     * }
     * ```
     */
    pageChange: EventEmitter<number>;
    /**
     * Gets/Sets the number of visible items per page.
     * @remarks
     * The default is 15.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [paging]="true" [(perPage)]="model.perPage" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get perPage(): number;
    set perPage(val: number);
    /**
     * Emitted when `perPage` property value of the grid is changed.
     * @example
     * ```html
     * <igx-grid #grid (perPageChange)="onPerPageChange($event)" [autoGenerate]="true"></igx-grid>
     * ```
     * ```typescript
     * public onPerPageChange(perPage: number) {
     *   this.perPage = perPage;
     * }
     * ```
     */
    perPageChange: EventEmitter<number>;
    /**
     * Gets/Sets a custom `ng-template` for the pagination UI of the grid.
     * @example
     * ```html
     * <igx-grid #grid [paging]="true" [myTemplate]="myTemplate" [height]="'305px'"></igx-grid>
     * ```
     */
    paginationTemplate: TemplateRef<any>;
    /**
     * Gets/Sets whether the column hiding UI is enabled.
     * @remarks
     * By default it is disabled (false). In order for the UI to work, you need to enable the toolbar as shown in the example below.
     * @example
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true" [showToolbar]="true" [columnHiding]="true"></igx-grid>
     * ```
     */
    get columnHiding(): boolean;
    set columnHiding(value: boolean);
    get rowSelectable(): boolean;
    set rowSelectable(val: boolean);
    /**
     * Gets/Sets if the row selectors are hidden.
     * @remarks
     *  By default row selectors are shown
    */
    get hideRowSelectors(): boolean;
    set hideRowSelectors(value: boolean);
    /**
     * Gets/Sets whether rows can be moved.
     * @example
     * ```html
     * <igx-grid #grid [rowDraggable]="true"></igx-grid>
     * ```
     */
    get rowDraggable(): boolean;
    set rowDraggable(val: boolean);
    /**
     * @hidden
     * @internal
     */
    rowDragging: boolean;
    /**
    * Gets/Sets whether the rows are editable.
    * @remarks
    * By default it is set to false.
    * @example
    * ```html
    * <igx-grid #grid [showToolbar]="true" [rowEditable]="true" [primaryKey]="'ProductID'" [columnHiding]="true"></igx-grid>
    * ```
    */
    get rowEditable(): boolean;
    set rowEditable(val: boolean);
    /**
     * @hidden
     * @internal
     */
    class: string;
    /**
     * Gets/Sets the height.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get height(): string;
    set height(value: string);
    /**
     * @hidden @internal
    */
    get hostWidth(): any;
    /**
     * Gets/Sets the width of the grid.
     * @example
     * ```typescript
     * let gridWidth = this.grid.width;
     * ```
     */
    get width(): string;
    set width(value: string);
    /**
     * Gets the width of the header.
     * @example
     * ```html
     * let gridHeaderWidth = this.grid.headerWidth;
     * ```
     */
    get headerWidth(): number;
    /**
     * Gets/Sets the styling classes applied to all even `IgxGridRowComponent`s in the grid.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [evenRowCSS]="'igx-grid--my-even-class'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    evenRowCSS: string;
    /**
     * Gets/Sets the styling classes applied to all odd `IgxGridRowComponent`s in the grid.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [evenRowCSS]="'igx-grid--my-odd-class'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    oddRowCSS: string;
    /**
     * Gets/Sets the row height.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [showToolbar]="true" [rowHeight]="100" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get rowHeight(): any;
    set rowHeight(value: any);
    /**
     * Gets/Sets the default width of the columns.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [showToolbar]="true" [columnWidth]="100" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get columnWidth(): string;
    set columnWidth(value: string);
    /**
     * Gets/Sets the primary key.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [showToolbar]="true" [primaryKey]="'ProductID'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    primaryKey: any;
    /**
     * Get/Sets the message displayed when there are no records.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [emptyGridMessage]="'The grid is empty'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    set emptyGridMessage(value: string);
    get emptyGridMessage(): string;
    /**
     * Gets/Sets whether the grid is going to show a loading indicator.
     *@example
     * ```html
     * <igx-grid #grid [data]="Data" [isLoading]="true" [autoGenerate]="true"></igx-grid>
     * ```
     */
    set isLoading(value: boolean);
    get isLoading(): boolean;
    /**
     * Gets/Sets whether the columns should be auto-generated once again after the initialization of the grid
     * @remarks
     * This will allow to bind the grid to remote data and having auto-generated columns at the same time.
     * Note that after generating the columns, this property would be disabled to avoid re-creating
     * columns each time a new data is assigned.
     * @example
     * ```typescript
     *  this.grid.shouldGenerate = true;
     * ```
     */
    shouldGenerate: boolean;
    /**
     * Gets/Sets the message displayed when there are no records and the grid is filtered.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [emptyGridMessage]="'The grid is empty'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    set emptyFilteredGridMessage(value: string);
    get emptyFilteredGridMessage(): string;
    /**
     * Gets/Sets the title to be displayed in the built-in column hiding UI.
     * @example
     * ```html
     * <igx-grid [showToolbar]="true" [columnHiding]="true" columnHidingTitle="Column Hiding"></igx-grid>
     * ```
     */
    columnHidingTitle: string;
    /**
     * Gets/Sets if the built-in column pinning UI should be shown in the toolbar.
     * @example
    * ```html
     * <igx-grid #grid [data]="localData" [columnPinning]="'true" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get columnPinning(): boolean;
    set columnPinning(value: boolean);
    /**
     * Gets/Sets the title to be displayed in the UI of the column pinning.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [columnPinning]="'true" [columnPinningTitle]="'Column Hiding'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    columnPinningTitle: string;
    /**
     * Gets/Sets if the filtering is enabled.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [allowFiltering]="true" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get allowFiltering(): boolean;
    set allowFiltering(value: boolean);
    /**
     * Gets/Sets a value indicating whether the advanced filtering is enabled.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [allowAdvancedFiltering]="true" [showToolbar]="true" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get allowAdvancedFiltering(): boolean;
    set allowAdvancedFiltering(value: boolean);
    /**
     * Gets/Sets the filter mode.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [filterMode]="'quickFilter'" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * By default it's set to FilterMode.quickFilter.
     */
    get filterMode(): FilterMode;
    set filterMode(value: FilterMode);
    /**
     * Gets/Sets the summary position.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" summaryPosition="top" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * By default it is bottom.
     */
    get summaryPosition(): GridSummaryPosition;
    set summaryPosition(value: GridSummaryPosition);
    /**
     * Gets/Sets the summary calculation mode.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" summaryCalculationMode="rootLevelOnly" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * By default it is rootAndChildLevels which means the summaries are calculated for the root level and each child level.
     */
    get summaryCalculationMode(): GridSummaryCalculationMode;
    set summaryCalculationMode(value: GridSummaryCalculationMode);
    /**
     * Gets/Sets the filtering strategy of the grid.
     * @example
     * ```html
     *  <igx-grid #grid [data]="localData" [filterStrategy]="filterStrategy"></igx-grid>
     * ```
     */
    get filterStrategy(): IFilteringStrategy;
    set filterStrategy(classRef: IFilteringStrategy);
    /**
     * Gets/Sets the sorting strategy of the grid.
     * @example
     * ```html
     *  <igx-grid #grid [data]="localData" [sortStrategy]="sortStrategy"></igx-grid>
     * ```
     */
    get sortStrategy(): IGridSortingStrategy;
    set sortStrategy(value: IGridSortingStrategy);
    /**
     * Gets/Sets a unique values strategy used by the Excel Style Filtering
     * @remarks
     * Provides a callback for loading unique column values on demand.
     * If this property is provided, the unique values it generates will be used by the Excel Style Filtering.
     * @example
     * ```html
     * <igx-grid [data]="localData" [filterMode]="'excelStyleFilter'" [uniqueColumnValuesStrategy]="columnValuesStrategy"></igx-grid>
     * ```
     */
    uniqueColumnValuesStrategy: (column: IgxColumnComponent, filteringExpressionsTree: IFilteringExpressionsTree, done: (values: any[]) => void) => void;
    /**
     * Emitted when `IgxGridCellComponent` is clicked.
     * @remarks
     * Returns the `IgxGridCellComponent`.
     * @example
     * ```html
     * <igx-grid #grid (onCellClick)="onCellClick($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onCellClick: EventEmitter<IGridCellEventArgs>;
    /**
     * Emitted when `IgxGridCellComponent` is selected.
     * @remarks
     *  Returns the `IgxGridCellComponent`.
     * @example
     * ```html
     * <igx-grid #grid (onSelection)="onCellSelect($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onSelection: EventEmitter<IGridCellEventArgs>;
    /**
     *  Emitted when `IgxGridRowComponent` is selected.
     * @example
     * ```html
     * <igx-grid #grid (onRowSelectionChange)="onCellClickChange($event)" [data]="localData" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onRowSelectionChange: EventEmitter<IRowSelectionEventArgs>;
    /**
     * Emitted when `IgxColumnComponent` is pinned.
     * @remarks
     * The index that the column is inserted at may be changed through the `insertAtIndex` property.
     * @example
     * ```typescript
     * public columnPinning(event) {
     *     if (event.column.field === "Name") {
     *       event.insertAtIndex = 0;
     *     }
     * }
     * ```
     */
    onColumnPinning: EventEmitter<IPinColumnEventArgs>;
    /**
     * Emitted when editing and **not** submitting the value.
     * @remarks
     * (e.g. `Esc` key was pressed)
     * This event is cancelable.
     *@example
     * ```html
     * <igx-grid #grid3 (onCellEditCancel)="editCancel($event)" [data]="data" [primaryKey]="'ProductID'">
     * </igx-grid>
     * ```
     */
    onCellEditCancel: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted when cell enters edit mode.
     * @remarks
     * This event is cancelable.
     *@example
     * ```html
     * <igx-grid #grid3 (onCellEditEnter)="editStart($event)" [data]="data" [primaryKey]="'ProductID'">
     * </igx-grid>
     * ```
     */
    onCellEditEnter: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted when cell has been edited.
     * @remarks
     * Event is fired after editing is completed, when the cell is exiting edit mode.
     * This event is cancelable.
     * @example
     * ```html
     * <igx-grid #grid3 (onCellEdit)="editDone($event)" [data]="data" [primaryKey]="'ProductID'">
     * </igx-grid>
     * ```
     */
    onCellEdit: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted when a row enters edit mode.
     * @remarks
     * Emitted when [rowEditable]="true".
     * This event is cancelable.
     *@example
     * ```html
     * <igx-grid #grid3 (onRowEditEnter)="editStart($event)" [primaryKey]="'ProductID'" [rowEditable]="true">
     * </igx-grid>
     * ```
     */
    onRowEditEnter: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted when exiting edit mode for a row.
     * @remarks
     * Emitted when [rowEditable]="true" & `endEdit(true)` is called.
     * Emitted when changing rows during edit mode, selecting an un-editable cell in the edited row,
     * performing paging operation, column resizing, pinning, moving or hitting  `Done`
     * button inside of the rowEditingOverlay, or hitting the `Enter` key while editing a cell.
     * This event is cancelable.
     *@example
     * ```html
     * <igx-grid #grid3 (onRowEdit)="editDone($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
     * </igx-grid>
     * ```
     */
    onRowEdit: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted when row editing is canceled.
     * @remarks
     * Emits when [rowEditable]="true" & `endEdit(false)` is called.
     * Emitted when changing hitting `Esc` key during cell editing and when click on the `Cancel` button
     * in the row editing overlay.
     * This event is cancelable.
     *@example
     * ```html
     * <igx-grid #grid3 (onRowEditCancel)="editCancel($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
     * </igx-grid>
     * ```
     */
    onRowEditCancel: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted when a column is initialized.
     * @remarks
     * Returns the column object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [onColumnInit]="initColumns($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onColumnInit: EventEmitter<IgxColumnComponent>;
    /**
     * Emitted when sorting is performed through the UI.
     * @remarks
     * Returns the sorting expression.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [autoGenerate]="true" (onSortingDone)="sortingDone($event)"></igx-grid>
     * ```
     */
    onSortingDone: EventEmitter<ISortingExpression | ISortingExpression[]>;
    /**
     * Emitted when filtering is performed through the UI.
     * @remarks
     * Returns the filtering expressions tree of the column for which filtering was performed.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (onFilteringDone)="filteringDone($event)"></igx-grid>
     * ```
     */
    onFilteringDone: EventEmitter<IFilteringExpressionsTree>;
    /**
     * Emitted when paging is performed.
     * @remarks
     * Returns an object consisting of the previous and next pages.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (onPagingDone)="pagingDone($event)"></igx-grid>
     * ```
     */
    onPagingDone: EventEmitter<IPageEventArgs>;
    /**
     * Emitted when a row added through the API.
     * @remarks
     * Returns the data for the new `IgxGridRowComponent` object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (onRowAdded)="rowAdded($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onRowAdded: EventEmitter<IRowDataEventArgs>;
    /**
     * Emitted when a row is deleted through API.
     * @remarks
     * Returns an `IRowDataEventArgs` object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (onRowDeleted)="rowDeleted($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onRowDeleted: EventEmitter<IRowDataEventArgs>;
    /**
     * Emitted when a new chunk of data is loaded from virtualization.
     * @example
     * ```typescript
     *  <igx-grid #grid [data]="localData" [autoGenerate]="true" (onDataPreLoad)='handleDataPreloadEvent()'></igx-grid>
     * ```
     */
    onDataPreLoad: EventEmitter<IForOfState>;
    /**
     * Emitted when column is resized.
     * @remarks
     * Returns the `IgxColumnComponent` object's old and new width.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (onColumnResized)="resizing($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onColumnResized: EventEmitter<IColumnResizeEventArgs>;
    /**
     * Emitted when a cell is right clicked.
     * @remarks
     * Returns the `IgxGridCellComponent` object.
     * ```html
     * <igx-grid #grid [data]="localData" (onContextMenu)="contextMenu($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onContextMenu: EventEmitter<IGridCellEventArgs>;
    /**
     * Emitted when a cell is double clicked.
     * @remarks
     * Returns the `IgxGridCellComponent` object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (onDoubleClick)="dblClick($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onDoubleClick: EventEmitter<IGridCellEventArgs>;
    /**
     * Emitted when column visibility is changed.
     * @remarks
     * Args: { column: any, newValue: boolean }
     * @example
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" (onColumnVisibilityChanged)="visibilityChanged($event)"></igx-grid>
     * ```
     */
    onColumnVisibilityChanged: EventEmitter<IColumnVisibilityChangedEventArgs>;
    /**
     * Emitted when column moving starts.
     * @remarks
     * Returns the moved `IgxColumnComponent` object.
     * @example
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" (onColumnMovingStart)="movingStart($event)"></igx-grid>
     * ```
     */
    onColumnMovingStart: EventEmitter<IColumnMovingStartEventArgs>;
    /**
     * Emitted during the column moving operation.
     * @remarks
     * Returns the source and target `IgxColumnComponent` objects. This event is cancelable.
     * @example
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" (onColumnMoving)="moving($event)"></igx-grid>
     * ```
     */
    onColumnMoving: EventEmitter<IColumnMovingEventArgs>;
    /**
     * Emitted when column moving ends.
     * @remarks
     * Returns the source and target `IgxColumnComponent` objects.
     * @example
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" (onColumnMovingEnd)="movingEnds($event)"></igx-grid>
     * ```
     */
    onColumnMovingEnd: EventEmitter<IColumnMovingEndEventArgs>;
    /**
     * Emitted when keydown is triggered over element inside grid's body.
     * @remarks
     * This event is fired only if the key combination is supported in the grid.
     * Return the target type, target object and the original event. This event is cancelable.
     * @example
     * ```html
     *  <igx-grid (onGridKeydown)="customKeydown($event)"></igx-grid>
     * ```
     */
    onGridKeydown: EventEmitter<IGridKeydownEventArgs>;
    /**
     * Emitted when start dragging a row.
     * @remarks
     * Return the dragged row.
     */
    onRowDragStart: EventEmitter<IRowDragStartEventArgs>;
    /**
     * Emitted when dropping a row.
     * @remarks
     * Return the dropped row.
     */
    onRowDragEnd: EventEmitter<IRowDragEndEventArgs>;
    /**
     * Emitted when a copy operation is executed.
     * @remarks
     * Fired only if copy behavior is enabled through the [`clipboardOptions`]{@link IgxGridBaseDirective#clipboardOptions}.
     */
    onGridCopy: EventEmitter<IGridClipboardEvent>;
    /**
     *@hidden @internal
     */
    expansionStatesChange: EventEmitter<Map<any, boolean>>;
    /**
     * Emitted when the expanded state of a row gets changed.
     * @example
     * ```html
     * <igx-grid [data]="employeeData" (onRowToggle)="rowToggle($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    onRowToggle: EventEmitter<IRowToggleEventArgs>;
    /**
     * @hidden @internal
     */
    resizeLine: IgxGridColumnResizerComponent;
    /**
     * @hidden @internal
     */
    loadingOverlay: ElementRef;
    /**
     * @hidden @internal
     */
    loadingOutlet: IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     */
    columnList: QueryList<IgxColumnComponent>;
    /**
     *@hidden @internal
     */
    excelStyleSortingTemplateDirective: IgxExcelStyleSortingTemplateDirective;
    /**
     *@hidden @internal
     */
    excelStyleMovingTemplateDirective: IgxExcelStyleMovingTemplateDirective;
    /**
     *@hidden @internal
     */
    excelStyleHidingTemplateDirective: IgxExcelStyleHidingTemplateDirective;
    /**
     *@hidden @internal
     */
    excelStylePinningTemplateDirective: IgxExcelStylePinningTemplateDirective;
    /**
     *@hidden @internal
     */
    excelStyleLoadingValuesTemplateDirective: IgxExcelStyleLoadingValuesTemplateDirective;
    /**
     * @hidden @internal
     */
    headerGroups: QueryList<IgxGridHeaderGroupComponent>;
    /**
     * A list of all `IgxGridHeaderGroupComponent`.
     * @example
     * ```typescript
     * const headerGroupsList = this.grid.headerGroupsList;
     * ```
     */
    get headerGroupsList(): IgxGridHeaderGroupComponent[];
    /**
     * A list of all `IgxGridHeaderComponent`.
     * @example
     * ```typescript
     * const headers = this.grid.headerCellList;
     * ```
     */
    get headerCellList(): IgxGridHeaderComponent[];
    /**
     * A list of all `IgxGridFilteringCellComponent`.
     * @example
     * ```typescript
     * const filterCells = this.grid.filterCellList;
     * ```
     */
    get filterCellList(): IgxGridFilteringCellComponent[];
    private _rowList;
    protected _summaryRowList: QueryList<IgxSummaryRowComponent>;
    /**
     * @hidden @internal
    */
    get summariesRowList(): QueryList<any>;
    /**
     * A list of `IgxGridRowComponent`.
     * @example
     * ```typescript
     * const rowList = this.grid.rowList;
     * ```
     */
    get rowList(): QueryList<any>;
    private _dataRowList;
    /**
     * A list of currently rendered `IgxGridRowComponent`'s.
     * @example
     * ```typescript
     * const dataList = this.grid.dataRowList;
     * ```
     */
    get dataRowList(): QueryList<IgxRowDirective<IgxGridBaseDirective>>;
    /**
     * A template reference for the template when the filtered grid is empty.
     * @example
     * ```
     * const emptyTempalte = this.grid.emptyGridTemplate;
     * ```
     */
    emptyFilteredGridTemplate: TemplateRef<any>;
    /**
     * A template reference for the template when the grid is empty.
     * @example
     * ```
     * const emptyTempalte = this.grid.emptyGridTemplate;
     * ```
     */
    emptyGridDefaultTemplate: TemplateRef<any>;
    /**
     * @hidden @internal
    */
    loadingGridDefaultTemplate: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    parentVirtDir: IgxGridForOfDirective<any>;
    /**
     * Returns the template which will be used by the toolbar to show custom content.
     * @example
     * ```typescript
     * let customContentTemplate = this.grid.toolbarCustomContentTemplate;
     * ```
    */
    get toolbarCustomContentTemplate(): IgxGridToolbarCustomContentDirective;
    /**
     * @hidden
     * @internal
     */
    toolbarCustomContentTemplates: QueryList<IgxGridToolbarCustomContentDirective>;
    /**
     * @hidden
     * @internal
     */
    get headSelectorTemplate(): TemplateRef<IgxHeadSelectorDirective>;
    /**
     * @hidden
     * @internal
     */
    headSelectorsTemplates: QueryList<IgxHeadSelectorDirective>;
    /**
     * @hidden
     * @internal
     */
    get rowSelectorTemplate(): TemplateRef<IgxRowSelectorDirective>;
    /**
     * @hidden
     * @internal
     */
    rowSelectorsTemplates: QueryList<IgxRowSelectorDirective>;
    /**
     * @hidden
     * @internal
     */
    dragGhostCustomTemplates: QueryList<TemplateRef<any>>;
    /**
     * @hidden @internal
     */
    verticalScrollContainer: IgxGridForOfDirective<any>;
    /**
     * @hidden @internal
     */
    verticalScroll: IgxGridForOfDirective<any>;
    /**
     * @hidden @internal
     */
    scr: ElementRef;
    /**
     * @hidden @internal
     */
    footer: ElementRef;
    /**
     * @hidden @internal
     */
    headerContainer: IgxGridForOfDirective<any>;
    /**
     * @hidden @internal
     */
    headerSelectorContainer: ElementRef;
    /**
     * @hidden @internal
     */
    headerDragContainer: ElementRef;
    /**
     * @hidden @internal
     */
    headerGroupContainer: ElementRef;
    /**
     * @hidden @internal
     */
    filteringRow: IgxGridFilteringRowComponent;
    /**
     * @hidden @internal
     */
    theadRow: ElementRef;
    /**
     * @hidden @internal
     */
    tbody: ElementRef;
    /**
     * @hidden @internal
    */
    tfoot: ElementRef;
    /**
     * @hidden @internal
     */
    protected _outletDirective: IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     */
    get outletDirective(): IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     */
    rowEditingOutletDirective: IgxOverlayOutletDirective;
    /**
     * @hidden @internal
    */
    tmpOutlets: QueryList<any>;
    /**
     * @hidden @internal
    */
    get rowOutletDirective(): IgxOverlayOutletDirective;
    /**
     * @hidden @internal
    */
    get parentRowOutletDirective(): IgxOverlayOutletDirective;
    /**
     * @hidden
     * @internal
     */
    dragIndicatorIconBase: TemplateRef<any>;
    /**
     * @hidden @internal
    */
    private defaultRowEditTemplate;
    /**
     * @hidden @internal
    */
    rowEditCustom: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    get rowEditContainer(): TemplateRef<any>;
    /**
     * @hidden @internal
     */
    rowEditText: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    rowEditActions: TemplateRef<any>;
    /**
    * The custom template, if any, that should be used when rendering a row expand indicator.
    */
    rowExpandedIndicatorTemplate: TemplateRef<any>;
    /**
    * The custom template, if any, that should be used when rendering a row collapse indicator.
    */
    rowCollapsedIndicatorTemplate: TemplateRef<any>;
    /**
    * The custom template, if any, that should be used when rendering a header expand indicator.
    */
    headerExpandIndicatorTemplate: TemplateRef<any>;
    /**
    * The custom template, if any, that should be used when rendering a header collapse indicator.
    */
    headerCollapseIndicatorTemplate: TemplateRef<any>;
    /**
     * @hidden
     * @internal
     */
    dragIndicatorIconTemplates: QueryList<TemplateRef<any>>;
    /**
    * The custom template, if any, that should be used when rendering the row drag indicator icon
    */
    get dragIndicatorIconTemplate(): TemplateRef<any>;
    set dragIndicatorIconTemplate(val: TemplateRef<any>);
    /**
     * @hidden @internal
    */
    get rowInEditMode(): IgxRowDirective<IgxGridBaseDirective & GridType>;
    /**
     * @hidden @internal
     */
    get firstEditableColumnIndex(): number;
    /**
     * @hidden @internal
     */
    get lastEditableColumnIndex(): number;
    /**
     * @hidden @internal
     */
    rowEditTabsDEFAULT: QueryList<IgxRowEditTabStopDirective>;
    /**
     * @hidden @internal
     */
    rowEditTabsCUSTOM: QueryList<IgxRowEditTabStopDirective>;
    /**
     * @hidden @internal
     * TODO: Nav service logic doesn't handle 0 results from this querylist
     */
    get rowEditTabs(): QueryList<IgxRowEditTabStopDirective>;
    /**
     * @hidden @internal
     */
    rowEditingOverlay: IgxToggleDirective;
    /**
     * @hidden @internal
     */
    tabindex: number;
    /**
     * @hidden @internal
     */
    get hostClass(): string;
    get bannerClass(): string;
    /**
     * @hidden @internal
     */
    hostRole: string;
    /**
     * @hidden @internal
     */
    get pipeTrigger(): number;
    /**
     * @hidden @internal
     */
    get filteringPipeTrigger(): number;
    /**
     * @hidden @internal
     */
    get summaryPipeTrigger(): number;
    /**
     * Gets/Sets the sorting state.
     * @remarks
     * Supports two-way data binding.
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [autoGenerate]="true" [(sortingExpressions)]="model.sortingExpressions"></igx-grid>
     * ```
     */
    get sortingExpressions(): ISortingExpression[];
    set sortingExpressions(value: ISortingExpression[]);
    /**
     * Emitted before sorting is performed.
     * @remarks
     * Returns the sorting expressions.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [autoGenerate]="true" (sortingExpressionsChange)="sortingExprChange($event)"></igx-grid>
     * ```
    */
    sortingExpressionsChange: EventEmitter<ISortingExpression[]>;
    /**
     * @hidden @internal
     */
    get maxLevelHeaderDepth(): any;
    /**
     * Gets the number of hidden columns.
     * @example
     * ```typescript
     * const hiddenCol = this.grid.hiddenColumnsCount;
     * ``
     */
    get hiddenColumnsCount(): number;
    /**
     * Gets/Sets the text to be displayed inside the toggle button.
     * @remarks
     * Used for the built-in column hiding UI of the`IgxColumnComponent`.
     * @example
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" [hiddenColumnsText]="'Hidden Columns'"></igx-grid>
     * ```
     */
    get hiddenColumnsText(): string;
    set hiddenColumnsText(value: string);
    /**
     * Gets/Sets the text to be displayed inside the toggle button.
     * @remarks
     * Used for the built-in column pinning UI of the`IgxColumnComponent`.
     * @example
     * ```html
     * <igx-grid [pinnedColumnsText]="'PinnedCols Text" [data]="data" [width]="'100%'" [height]="'500px'"></igx-grid>
     * ```
     */
    get pinnedColumnsText(): string;
    set pinnedColumnsText(value: string);
    /**
     * Get transactions service for the grid.
     */
    get transactions(): TransactionService<Transaction, State>;
    /**
     * @hidden @internal
    */
    columnsWithNoSetWidths: any;
    private _showToolbar;
    private _exportExcel;
    private _exportCsv;
    private _toolbarTitle;
    private _exportText;
    private _exportExcelText;
    private _exportCsvText;
    private _rowEditable;
    private _currentRowState;
    private _filteredSortedData;
    /**
     * @hidden @internal
    */
    get currentRowState(): any;
    /**
     * Provides access to the `IgxToolbarComponent`.
     * @example
     * ```typescript
     * const gridToolbar = this.grid.toolbar;
     * ```
     */
    toolbar: IgxGridToolbarComponent;
    private toolbarHtml;
    /**
     * Gets/Sets whether the toolbar is shown.
     * @example
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" ></igx-grid>
     * ```
     */
    get showToolbar(): boolean;
    set showToolbar(newValue: boolean);
    /**
     * Gets/Sets the toolbar's title.
     * @example
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [toolbarTitle]="'My Grid'"></igx-grid>
     * ```
     */
    get toolbarTitle(): string;
    set toolbarTitle(newValue: string);
    /**
     * Gets/Sets whether exporting to MS Excel is enabled or disabled.
     * @example
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [exportExcel]="true"></igx-grid>
     * ```
     */
    get exportExcel(): boolean;
    set exportExcel(newValue: boolean);
    /**
     * Gets/Sets whether the option for exporting to CSV is enabled or disabled.
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [exportCsv]="true"></igx-grid>
     * ```
     */
    get exportCsv(): boolean;
    set exportCsv(newValue: boolean);
    /**
     * Gets/Sets the textual content for the main export button.
     * @example
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [exportText]="'My Exporter'" [exportCsv]="true"></igx-grid>
     * ```
     */
    get exportText(): string;
    set exportText(newValue: string);
    /**
     * Gets/Sets the textual content for the MS Excel export button.
     * ```html
     * <igx-grid [exportExcelText]="'My Excel Exporter" [showToolbar]="true" [exportText]="'My Exporter'" [exportCsv]="true"></igx-grid>
     * ```
     */
    get exportExcelText(): string;
    set exportExcelText(newValue: string);
    /**
     * Gets/Sets the textual content for the CSV export button.
     * @example
     * ```html
     * <igx-grid [exportCsvText]="'My Csv Exporter" [showToolbar]="true" [exportText]="'My Exporter'" [exportExcel]="true"></igx-grid>
     * ```
     */
    get exportCsvText(): string;
    set exportCsvText(newValue: string);
    /**
     * Controls the copy behavior of the grid.
     */
    clipboardOptions: {
        /**
         * Enables/disables the copy behavior
         */
        enabled: boolean;
        /**
         * Include the columns headers in the clipboard output.
         */
        copyHeaders: boolean;
        /**
         * Apply the columns formatters (if any) on the data in the clipboard output.
         */
        copyFormatters: boolean;
        /**
         * The separator used for formatting the copy output. Defaults to `\t`.
         */
        separator: string;
    };
    /**
     * Gets/Sets cell selection mode.
     * @remarks
     * By default the cell selection mode is multiple
     * @param selectionMode: GridSelectionMode
    */
    get cellSelection(): GridSelectionMode;
    set cellSelection(selectionMode: GridSelectionMode);
    /**
     * Gets/Sets row selection mode
     * @remarks
     * By default the row selection mode is none
     * @param selectionMode: GridSelectionMode
    */
    get rowSelection(): GridSelectionMode;
    set rowSelection(selectionMode: GridSelectionMode);
    /**
     * @hidden @internal
     */
    rowEditMessage: any;
    /**
     * Emitted when an export process is initiated by the user.
     * @example
     * ```typescript
     * toolbarExporting(event: IGridToolbarExportEventArgs){
     *     const toolbarExporting = event;
     * }
     * ```
     */
    onToolbarExporting: EventEmitter<IGridToolbarExportEventArgs>;
    /**
     * Emitted when making a range selection.
     * @remarks
     * Range selection can be made either through drag selection or through keyboard selection.
     */
    onRangeSelection: EventEmitter<GridSelectionRange>;
    /**
     * @hidden @internal
     */
    pagingState: any;
    /**
     * @hidden @internal
     */
    calcWidth: number;
    /**
     * @hidden @internal
     */
    calcHeight: number;
    /**
     * @hidden @internal
     */
    tfootHeight: number;
    /**
     * @hidden @internal
     */
    chipsGoupingExpressions: any[];
    /**
     * @hidden @internal
     */
    summariesHeight: number;
    /**
     * @hidden @internal
     */
    draggedColumn: IgxColumnComponent;
    /**
     * @hidden @internal
     */
    disableTransitions: boolean;
    /**
     * @hidden @internal
     */
    lastSearchInfo: ISearchInfo;
    /**
     * @hidden @internal
     */
    columnWidthSetByUser: boolean;
    data: any[];
    filteredData: any[];
    /**
     * @hidden
     */
    protected destroy$: Subject<any>;
    /**
     * @hidden
     */
    protected _perPage: number;
    /**
     * @hidden
     */
    protected _page: number;
    /**
     * @hidden
     */
    protected _paging: boolean;
    /**
     * @hidden
     */
    protected _hideRowSelectors: boolean;
    /**
     * @hidden
     */
    protected _rowDrag: boolean;
    /**
     * @hidden
     */
    protected _pipeTrigger: number;
    /**
     * @hidden
     */
    protected _filteringPipeTrigger: number;
    /**
     * @hidden
     */
    protected _summaryPipeTrigger: number;
    /**
     * @hidden
     */
    protected _columns: IgxColumnComponent[];
    /**
     * @hidden
     */
    protected _pinnedColumns: IgxColumnComponent[];
    /**
     * @hidden
     */
    protected _unpinnedColumns: IgxColumnComponent[];
    /**
     * @hidden
     */
    protected _filteringExpressionsTree: IFilteringExpressionsTree;
    /**
     * @hidden
     */
    protected _advancedFilteringExpressionsTree: IFilteringExpressionsTree;
    /**
     * @hidden
     */
    protected _sortingExpressions: Array<ISortingExpression>;
    /**
     * @hidden
     */
    protected _maxLevelHeaderDepth: any;
    /**
     * @hidden
     */
    protected _columnHiding: boolean;
    /**
     * @hidden
     */
    protected _columnPinning: boolean;
    /**
     * @hidden
     */
    protected _hasVisibleColumns: any;
    protected _allowFiltering: boolean;
    protected _allowAdvancedFiltering: boolean;
    protected _filterMode: FilterMode;
    protected observer: ResizeObserver;
    protected resizeNotify: Subject<unknown>;
    private columnListDiffer;
    private _hiddenColumnsText;
    private _pinnedColumnsText;
    private _height;
    private _width;
    private _rowHeight;
    protected _baseFontSize: number;
    private _horizontalForOfs;
    private _multiRowLayoutRowSize;
    protected _loadingId: any;
    protected _expansionStates: Map<any, boolean>;
    protected _defaultExpandState: boolean;
    private _totalWidth;
    private _pinnedVisible;
    private _unpinnedVisible;
    private _pinnedWidth;
    private _unpinnedWidth;
    private _visibleColumns;
    private _columnGroups;
    private _autoGeneratedCols;
    protected _headerFeaturesWidth: number;
    private _columnWidth;
    protected _defaultTargetRecordNumber: number;
    private _summaryPosition;
    private _summaryCalculationMode;
    private _cellSelectionMode;
    private _rowSelectionMode;
    private rowEditPositioningStrategy;
    private rowEditSettings;
    private verticalScrollHandler;
    private horizontalScrollHandler;
    /**
    * @hidden
    * @internal
    */
    isDetailRecord(rec: any): boolean;
    /**
    * @hidden
    * @internal
    */
    isGroupByRecord(rec: any): boolean;
    /**
    * @hidden
    * @internal
    */
    get hasDetails(): boolean;
    /**
     * Returns the state of the grid virtualization.
     * @remarks
     * Includes the start index and how many records are rendered.
     * @example
     * ```typescript
     * const gridVirtState = this.grid1.virtualizationState;
     * ```
     */
    get virtualizationState(): IForOfState;
    /**
     * @hidden
     */
    set virtualizationState(state: IForOfState);
    /**
    * @hidden
    * @internal
    */
    hideOverlays(): void;
    private keydownHandler;
    constructor(selectionService: IgxGridSelectionService, crudService: IgxGridCRUDService, colResizingService: IgxColumnResizingService, gridAPI: GridBaseAPIService<IgxGridBaseDirective & GridType>, _transactions: TransactionService<Transaction, State>, elementRef: ElementRef, zone: NgZone, document: any, cdr: ChangeDetectorRef, resolver: ComponentFactoryResolver, differs: IterableDiffers, viewRef: ViewContainerRef, navigation: IgxGridNavigationService, filteringService: IgxFilteringService, overlayService: IgxOverlayService, summaryService: IgxGridSummaryService, _displayDensityOptions: IDisplayDensityOptions);
    _setupServices(): void;
    _setupListeners(): void;
    /**
     * @hidden
     */
    ngOnInit(): void;
    protected setupColumns(): void;
    /**
     * @hidden
     * @internal
     */
    resetColumnsCaches(): void;
    /**
     * @hidden
     * @internal
     */
    resetForOfCache(): void;
    /**
     * @hidden
     * @internal
     */
    resetColumnCollections(): void;
    /**
     * @hidden
     * @internal
     */
    resetCachedWidths(): void;
    /**
     * @hidden
     * @internal
     */
    resetCaches(recalcFeatureWidth?: boolean): void;
    /**
     * @hidden
     */
    ngAfterContentInit(): void;
    /**
     * @hidden
     * @internal
     */
    setFilteredSortedData(data: any): void;
    /**
     * @hidden @internal
     */
    _setupRowObservers(): void;
    /**
     * @hidden @internal
    */
    _zoneBegoneListeners(): void;
    /**
     * @hidden
     */
    ngAfterViewInit(): void;
    /**
     * @hidden @internal
    */
    notifyChanges(repaint?: boolean): void;
    protected resetNotifyChanges(): void;
    /**
     * @hidden @internal
    */
    ngDoCheck(): void;
    /**
     * @hidden
     * @internal
    */
    getDragGhostCustomTemplate(): TemplateRef<any>;
    /**
     * @hidden @internal
     */
    ngOnDestroy(): void;
    /**
     * @hidden @internal
    */
    dataLoading(event: any): void;
    /**
     * Toggles the specified column's visibility.
     * @example
     * ```typescript
     * this.grid1.toggleColumnVisibility({
     *       column: this.grid1.columns[0],
     *       newValue: true
     * });
     * ```
     */
    toggleColumnVisibility(args: IColumnVisibilityChangedEventArgs): void;
    /**
     * Gets/Sets a list of key-value pairs [row ID, expansion state].
     * @remarks
     * Includes only states that differ from the default one.
     * Supports two-way binding.
     * @example
     * ```html
     * <igx-grid #grid [data]="data" [(expansionStates)]="model.expansionStates">
     * </igx-grid>
     * ```
     */
    get expansionStates(): Map<any, boolean>;
    set expansionStates(value: Map<any, boolean>);
    /**
      * Expands all rows.
      * @example
      * ```typescript
      * this.grid.expandAll();
      * ```
     */
    expandAll(): void;
    /**
      * Collapses all rows.
      * @example
      * ```typescript
      * this.grid.collapseAll();
      * ```
     */
    collapseAll(): void;
    /**
     * Expands the row by its id.
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.expandRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
     */
    expandRow(rowID: any): void;
    /**
     * Collapses the row by its id.
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.collapseRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
    */
    collapseRow(rowID: any): void;
    /**
     * Toggles the row by its id.
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.toggleRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
    */
    toggleRow(rowID: any): void;
    /**
     * @hidden
     * @internal
    */
    getDefaultExpandState(rec: any): boolean;
    /**
     * Gets the native element.
     * @example
     * ```typescript
     * const nativeEl = this.grid.nativeElement.
     * ```
     */
    get nativeElement(): any;
    /**
     * @hidden @internal
     */
    protected get outlet(): IgxOverlayOutletDirective;
    /**
     * Gets the default row height.
     * @example
     * ```typescript
     * const rowHeigh = this.grid.defaultRowHeight;
     * ```
     */
    get defaultRowHeight(): number;
    /**
     * @hidden @internal
     */
    get defaultSummaryHeight(): number;
    /**
     * Returns the `IgxGridHeaderGroupComponent`'s minimum allowed width.
     * @remarks
     * Used internally for restricting header group component width.
     * The values below depend on the header cell default right/left padding values.
     */
    get defaultHeaderGroupMinWidth(): number;
    /**
     * @hidden @internal
     */
    paginatorClassName(): string;
    /**
     * Gets the current width of the container for the pinned `IgxColumnComponent`s.
     * @example
     * ```typescript
     * const pinnedWidth = this.grid.getPinnedWidth;
     * ```
     */
    get pinnedWidth(): number;
    /**
     * Gets the current width of the container for the unpinned `IgxColumnComponent`s.
     * @example
     * ```typescript
     * const unpinnedWidth = this.grid.getUnpinnedWidth;
     * ```
     */
    get unpinnedWidth(): number;
    /**
     * @hidden @internal
    */
    get isHorizontalScrollHidden(): boolean;
    /**
     * @hidden @internal
     * Gets the combined width of the columns that are specific to the enabled grid features. They are fixed.
     */
    featureColumnsWidth(expander?: ElementRef): number;
    /**
     * @hidden @internal
    */
    get summariesMargin(): number;
    /**
     * Gets an array of `IgxColumnComponent`s.
     * @example
     * ```typescript
     * const colums = this.grid.columns.
     * ```
     */
    get columns(): IgxColumnComponent[];
    /**
     * Gets an array of the pinned `IgxColumnComponent`s.
     * @example
     * ```typescript
     * const pinnedColumns = this.grid.pinnedColumns.
     * ```
     */
    get pinnedColumns(): IgxColumnComponent[];
    /**
     * Gets an array of unpinned `IgxColumnComponent`s.
     * @example
     * ```typescript
     * const unpinnedColumns = this.grid.unpinnedColumns.
     * ```
     */
    get unpinnedColumns(): IgxColumnComponent[];
    /**
     * Gets the `width` to be set on `IgxGridHeaderGroupComponent`.
     */
    getHeaderGroupWidth(column: IgxColumnComponent): string;
    /**
     * Returns the `IgxColumnComponent` by field name.
     * @example
     * ```typescript
     * const myCol = this.grid1.getColumnByName("ID");
     * ```
     * @param name
    */
    getColumnByName(name: string): IgxColumnComponent;
    /**
     * Returns the `IgxRowDirective` by index.
     * @example
     * ```typescript
     * const myRow = this.grid1.getRowByIndex(1);
     * ```
     * @param index
    */
    getRowByIndex(index: number): IgxRowDirective<IgxGridBaseDirective & GridType>;
    /**
     * Returns `IgxGridRowComponent` object by the specified primary key .
     * @remarks
     * Requires that the `primaryKey` property is set.
     * @example
     * ```typescript
     * const myRow = this.grid1.getRowByKey("cell5");
     * ```
     * @param keyValue
    */
    getRowByKey(keyValue: any): IgxRowDirective<IgxGridBaseDirective & GridType>;
    /**
     * Returns an array of visible `IgxColumnComponent`s.
     * @example
     * ```typescript
     * const visibleColumns = this.grid.visibleColumns.
     * ```
     */
    get visibleColumns(): IgxColumnComponent[];
    /**
     * Returns the `IgxGridCellComponent` that matches the conditions.
     * @example
     * ```typescript
     * const myCell = this.grid1.getCellByColumn(2,"UnitPrice");
     * ```
     * @param rowIndex
     * @param columnField
    */
    getCellByColumn(rowIndex: number, columnField: string): IgxGridCellComponent;
    /**
     * Returns an `IgxGridCellComponent` object by the specified primary key and column field.
     * @remarks
     * Requires that the primaryKey property is set.
     * @example
     * ```typescript
     * grid.getCellByKey(1, 'index');
     * ```
     * @param rowSelector match any rowID
     * @param columnField
    */
    getCellByKey(rowSelector: any, columnField: string): IgxGridCellComponent;
    /**
     * Gets the total number of pages.
     * @example
     * ```typescript
     * const totalPages = this.grid.totalPages;
     * ```
     */
    get totalPages(): number;
    /**
     * Gets if the current page is the first page.
     * @example
     * ```typescript
     * const firstPage = this.grid.isFirstPage;
     * ```
     */
    get isFirstPage(): boolean;
    /**
     * Goes to the next page, if the grid is not already at the last page.
     * @example
     * ```typescript
     * this.grid1.nextPage();
     * ```
     */
    nextPage(): void;
    /**
     * Goes to the previous page, if the grid is not already at the first page.
     * @example
     * ```typescript
     * this.grid1.previousPage();
     * ```
     */
    previousPage(): void;
    /**
     * Returns the total number of records.
     * @remarks
     * Only functions when paging is enabled.
     * @example
     * ```typescript
     * const totalRecords = this.grid.totalRecords;
     * ```
     */
    get totalRecords(): number;
    /**
     * Returns if the current page is the last page.
     * @example
     * ```typescript
     * const lastPage = this.grid.isLastPage;
     * ```
     */
    get isLastPage(): boolean;
    /**
     * Returns the total width of the `IgxGridComponent`.
     * @example
     * ```typescript
     * const gridWidth = this.grid.totalWidth;
     * ```
     */
    get totalWidth(): number;
    /**
     * @hidden
     * @internal
     */
    get showRowSelectors(): boolean;
    /**
     * @hidden
     * @internal
     */
    get showDragIcons(): boolean;
    /**
     * @hidden
     */
    protected _moveColumns(from: IgxColumnComponent, to: IgxColumnComponent, pos: DropPosition): void;
    /**
     * @hidden
     */
    protected _resetColumnList(list?: any): any[];
    /**
     * @hidden
     */
    protected _reorderColumns(from: IgxColumnComponent, to: IgxColumnComponent, position: DropPosition, columnCollection: any[]): void;
    /**
     * @hidden
     */
    protected _moveChildColumns(parent: IgxColumnComponent, from: IgxColumnComponent, to: IgxColumnComponent, pos: DropPosition): void;
    /**
     * Moves a column to the specified drop target.
     * @example
     * ```typescript
     * grid.moveColumn(compName, persDetails);
     * ```
      */
    moveColumn(column: IgxColumnComponent, dropTarget: IgxColumnComponent, pos?: DropPosition): void;
    /**
     * Goes to the desired page index.
     * @example
     * ```typescript
     * this.grid1.paginate(1);
     * ```
     * @param val
    */
    paginate(val: number): void;
    /**
     * Manually marks the `IgxGridComponent` for change detection.
     * @example
     * ```typescript
     * this.grid1.markForCheck();
     * ```
     */
    markForCheck(): void;
    /**
     * Creates a new `IgxGridRowComponent` and adds the data record to the end of the data source.
     * @example
     * ```typescript
     * this.grid1.addRow(record);
     * ```
     * @param data
    */
    addRow(data: any): void;
    /**
     * Removes the `IgxGridRowComponent` and the corresponding data record by primary key.
     * @remarks
     * Requires that the `primaryKey` property is set.
     * The method accept rowSelector as a parameter, which is the rowID.
     * @example
     * ```typescript
     * this.grid1.deleteRow(0);
     * ```
     * @param rowSelector
    */
    deleteRow(rowSelector: any): void;
    /** @hidden */
    deleteRowById(rowId: any): void;
    /**
     * @hidden
     */
    protected deleteRowFromData(rowID: any, index: number): void;
    /**
     * Updates the `IgxGridRowComponent` and the corresponding data record by primary key.
     * @remarks
     * Requires that the `primaryKey` property is set.
     * @example
     * ```typescript
     * this.gridWithPK.updateCell('Updated', 1, 'ProductName');
     * ```
     * @param value the new value which is to be set.
     * @param rowSelector corresponds to rowID.
     * @param column corresponds to column field.
    */
    updateCell(value: any, rowSelector: any, column: string): void;
    /**
     * Updates the `IgxGridRowComponent`
     * @remarks
     * The row is specified by
     * rowSelector parameter and the data source record with the passed value.
     * This method will apply requested update only if primary key is specified in the grid.
     * @example
     * ```typescript
     * grid.updateRow({
     *       ProductID: 1, ProductName: 'Spearmint', InStock: true, UnitsInStock: 1, OrderDate: new Date('2005-03-21')
     *   }, 1);
     * ```
     * @param value
     * @param rowSelector correspond to rowID
    */
    updateRow(value: any, rowSelector: any): void;
    /**
     * Sort a single `IgxColumnComponent`.
     * @remarks
     * Sort the `IgxGridComponent`'s `IgxColumnComponent` based on the provided array of sorting expressions.
     * @example
     * ```typescript
     * this.grid.sort({ fieldName: name, dir: SortingDirection.Asc, ignoreCase: false });
     * ```
     */
    sort(expression: ISortingExpression | Array<ISortingExpression>): void;
    /**
     * Filters a single `IgxColumnComponent`.
     * @example
     * ```typescript
     * public filter(term) {
     *      this.grid.filter("ProductName", term, IgxStringFilteringOperand.instance().condition("contains"));
     * }
     * ```
     * @param name
     * @param value
     * @param conditionOrExpressionTree
     * @param ignoreCase
    */
    filter(name: string, value: any, conditionOrExpressionTree?: IFilteringOperation | IFilteringExpressionsTree, ignoreCase?: boolean): void;
    /**
     * Filters all the `IgxColumnComponent` in the `IgxGridComponent` with the same condition.
     * @example
     * ```typescript
     * grid.filterGlobal('some', IgxStringFilteringOperand.instance().condition('contains'));
     * ```
     * @param value
     * @param condition
     * @param ignoreCase
    */
    filterGlobal(value: any, condition: any, ignoreCase?: any): void;
    /**
     * Enables summaries for the specified column and applies your customSummary.
     * @remarks
     * If you do not provide the customSummary, then the default summary for the column data type will be applied.
     * @example
     * ```typescript
     * grid.enableSummaries([{ fieldName: 'ProductName' }, { fieldName: 'ID' }]);
     * ```
     * Enable summaries for the listed columns.
     * @example
     * ```typescript
     * grid.enableSummaries('ProductName');
     * ```
     * @param rest
    */
    enableSummaries(...rest: any[]): void;
    /**
     * Disable summaries for the specified column.
     * @example
     * ```typescript
     * grid.disableSummaries('ProductName');
     * ```
     *@remarks
     * Disable summaries for the listed columns.
     *@example
     * ```typescript
     * grid.disableSummaries([{ fieldName: 'ProductName' }]);
     * ```
     */
    disableSummaries(...rest: any[]): void;
    /**
     * If name is provided, clears the filtering state of the corresponding `IgxColumnComponent`.
     *@remarks
     Otherwise clears the filtering state of all `IgxColumnComponent`s.
     *@example
     * ```typescript
     * this.grid.clearFilter();
     * ```
     * @param name
    */
    clearFilter(name?: string): void;
    /**
     * If name is provided, clears the sorting state of the corresponding `IgxColumnComponent`.
     * @remarks
     * otherwise clears the sorting state of all `IgxColumnComponent`.
     * @example
     * ```typescript
     * this.grid.clearSort();
     * ```
     * @param name
    */
    clearSort(name?: string): void;
    /**
     * @hidden @internal
     */
    refreshGridState(args?: any): void;
    /**
     * Pins a column by field name.
     * @remarks
     * Returns whether the operation is successful.
     * @example
     * ```typescript
     * this.grid.pinColumn("ID");
     * ```
     * @param columnName
     * @param index
    */
    pinColumn(columnName: string | IgxColumnComponent, index?: any): boolean;
    /**
     * Unpins a column by field name. Returns whether the operation is successful.
     * @example
     * ```typescript
     * this.grid.pinColumn("ID");
     * ```
     * @param columnName
     * @param index
    */
    unpinColumn(columnName: string | IgxColumnComponent, index?: any): boolean;
    /**
     * Recalculates grid width/height dimensions.
     * @remarks
     * Should be run when changing DOM elements dimentions manually that affect the grid's size.
     * @example
     * ```typescript
     * this.grid.reflow();
     * ```
     */
    reflow(): void;
    /**
     * Finds the next occurrence of a given string in the grid and scrolls to the cell if it isn't visible.
     * @remarks
     * Returns how many times the grid contains the string.
     * @example
     * ```typescript
     * this.grid.findNext("financial");
     * ```
     * @param text the string to search.
     * @param caseSensitive optionally, if the search should be case sensitive (defaults to false).
     * @param exactMatch optionally, if the text should match the entire value  (defaults to false).
    */
    findNext(text: string, caseSensitive?: boolean, exactMatch?: boolean): number;
    /**
     * Finds the previous occurrence of a given string in the grid and scrolls to the cell if it isn't visible.
     * @remarks
     * Returns how many times the grid contains the string.
     * @example
     * ```typescript
     * this.grid.findPrev("financial");
     * ```
     * @param text the string to search.
     * @param caseSensitive optionally, if the search should be case sensitive (defaults to false).
     * @param exactMatch optionally, if the text should match the entire value (defaults to false).
    */
    findPrev(text: string, caseSensitive?: boolean, exactMatch?: boolean): number;
    /**
     * Reapplies the existing search.
     * @remarks
     * Returns how many times the grid contains the last search.
     * @example
     * ```typescript
     * this.grid.refreshSearch();
     * ```
     * @param updateActiveInfo
    */
    refreshSearch(updateActiveInfo?: boolean, endEdit?: boolean): number;
    /**
     * Removes all the highlights in the cell.
     * @example
     * ```typescript
     * this.grid.clearSearch();
     * ```
     */
    clearSearch(): void;
    /**
     * Returns if the `IgxGridComponent` has sortable columns.
     * @example
     * ```typescript
     * const sortableGrid = this.grid.hasSortableColumns;
     * ```
     */
    get hasSortableColumns(): boolean;
    /**
     * Returns if the `IgxGridComponent` has editable columns.
     * @example
     * ```typescript
     * const editableGrid = this.grid.hasEditableColumns;
     * ```
     */
    get hasEditableColumns(): boolean;
    /**
     * Returns if the `IgxGridComponent` has fiterable columns.
     * @example
     * ```typescript
     * const filterableGrid = this.grid.hasFilterableColumns;
     * ```
     */
    get hasFilterableColumns(): boolean;
    /**
     * Returns if the `IgxGridComponent` has summarized columns.
     * @example
     * ```typescript
     * const summarizedGrid = this.grid.hasSummarizedColumns;
     * ```
     */
    get hasSummarizedColumns(): boolean;
    /**
     * @hidden @internal
     */
    get rootSummariesEnabled(): boolean;
    /**
     * @hidden @internal
     */
    get hasVisibleColumns(): boolean;
    set hasVisibleColumns(value: boolean);
    /**
     * Returns if the `IgxGridComponent` has moveable columns.
     * @example
     * ```typescript
     * const movableGrid = this.grid.hasMovableColumns;
     * ```
     */
    get hasMovableColumns(): boolean;
    /**
     * Returns if the `IgxGridComponent` has column groups.
     * @example
     * ```typescript
     * const groupGrid = this.grid.hasColumnGroups;
     * ```
     */
    get hasColumnGroups(): boolean;
    /**
     * Returns if the `IgxGridComponent` has column layouts for multi-row layout definition.
     * @example
     * ```typescript
     * const layoutGrid = this.grid.hasColumnLayouts;
     * ```
     */
    get hasColumnLayouts(): boolean;
    /**
     * Returns an array of the selected `IgxGridCellComponent`s.
     * @example
     * ```typescript
     * const selectedCells = this.grid.selectedCells;
     * ```
     */
    get selectedCells(): IgxGridCellComponent[] | any[];
    /**
     * @hidden @internal
     */
    get multiRowLayoutRowSize(): number;
    /**
     * @hidden
     */
    protected get rowBasedHeight(): number;
    /**
     * @hidden
     */
    protected get isPercentWidth(): boolean;
    /**
     * @hidden @internal
     */
    get isPercentHeight(): boolean;
    /**
     * @hidden
     * Sets columns defaultWidth property
     */
    protected _derivePossibleWidth(): void;
    /**
     * @hidden
     */
    protected get defaultTargetBodyHeight(): number;
    /**
     * @hidden @internal
     * The rowHeight input is bound to min-height css prop of rows that adds a 1px border in all cases
     */
    get renderedRowHeight(): number;
    /**
     * @hidden
     * @internal
     */
    protected calcGridHeadRow(): void;
    /**
     * @hidden
     * Sets TBODY height i.e. this.calcHeight
     */
    protected calculateGridHeight(): void;
    /**
     * @hidden
     */
    protected getGroupAreaHeight(): number;
    /**
     * @hidden
     */
    protected getToolbarHeight(): number;
    /**
     * @hidden
     */
    protected getPagingFooterHeight(): number;
    /**
     * @hidden
     */
    protected getFilterCellHeight(): number;
    /**
     * @hidden
     */
    protected _calculateGridBodyHeight(): number;
    protected checkContainerSizeChange(): boolean;
    protected _shouldAutoSize(renderedHeight: any): boolean;
    /**
     * @hidden @internal
     */
    get outerWidth(): number;
    /**
     * @hidden @internal
     * Gets the visible content height that includes header + tbody + footer.
     */
    getVisibleContentHeight(): any;
    /**
     * @hidden @internal
     */
    getPossibleColumnWidth(baseWidth?: number): string;
    /**
     * @hidden
     * Sets grid width i.e. this.calcWidth
     */
    protected calculateGridWidth(): void;
    private getColumnWidthSum;
    /**
     * @hidden @internal
     */
    hasVerticalScroll(): boolean;
    /**
     * @hidden @internal
     */
    protected getDataBasedBodyHeight(): number;
    /**
     * @hidden
     */
    protected onColumnsChanged(change: QueryList<IgxColumnComponent>): void;
    /**
     * @hidden
     */
    protected calculateGridSizes(recalcFeatureWidth?: boolean): void;
    private _applyWidthHostBinding;
    /**
     * Gets calculated width of the pinned area.
     * @example
     * ```typescript
     * const pinnedWidth = this.grid.getPinnedWidth();
     * ```
     * @param takeHidden If we should take into account the hidden columns in the pinned area.
    */
    getPinnedWidth(takeHidden?: boolean): number;
    /**
     * @hidden
     * Gets calculated width of the unpinned area
     * @param takeHidden If we should take into account the hidden columns in the pinned area.
    */
    protected getUnpinnedWidth(takeHidden?: boolean): number;
    /**
     * @hidden
     */
    protected _summaries(fieldName: string, hasSummary: boolean, summaryOperand?: any): void;
    /**
     * @hidden
     */
    protected _multipleSummaries(expressions: ISummaryExpression[], hasSummary: boolean): void;
    /**
     * @hidden
     */
    protected _disableMultipleSummaries(expressions: any): void;
    /**
     * @hidden
     */
    protected resolveDataTypes(rec: any): DataType;
    private getScrollWidth;
    /**
     * @hidden
     */
    protected autogenerateColumns(): void;
    protected generateDataFields(data: any[]): string[];
    /**
     * @hidden
     */
    onlyTopLevel(arr: any): any;
    /**
     * @hidden
     */
    protected initColumns(collection: QueryList<IgxColumnComponent>, cb?: Function): void;
    /**
     * @hidden
     */
    protected reinitPinStates(): void;
    /**
     * @hidden @internal
    */
    isColumnGrouped(fieldName: string): boolean;
    /**
     * @hidden @internal
    */
    onHeaderSelectorClick(event: any): void;
    /**
     * @hidden @internal
     */
    get headSelectorBaseAriaLabel(): "Deselect all filtered" | "Select all filtered" | "Deselect all" | "Select all";
    /**
     * @hidden
     * @internal
     */
    get totalRowsCountAfterFilter(): number;
    /**
     * Returns the currently transformed paged/filtered/sorted/grouped data, displayed in the grid.
     * @example
     * ```typescript
     *      const dataView = this.grid.dataView;
     * ```
     */
    get dataView(): any[];
    /**
     * Get current selection state.
     * @example
     * Returns an array with selected rows' IDs (primaryKey or rowData)
     * ```typescript
     * const selectedRows = this.grid.selectedRows();
     * ```
     */
    selectedRows(): any[];
    /**
     * Select specified rows by ID.
     * @example
     * ```typescript
     * this.grid.selectRows([1,2,5], true);
     * ```
     * @param rowIDs
     * @param clearCurrentSelection if true clears the current selection
    */
    selectRows(rowIDs: any[], clearCurrentSelection?: boolean): void;
    /**
     * Deselect specified rows by ID.
     * @example
     * ```typescript
     * this.grid.deselectRows([1,2,5]);
     * ```
     * @param rowIDs
    */
    deselectRows(rowIDs: any[]): void;
    /**
     * Selects all rows
     * @remarks
     * By default if filtering is in place, selectAllRows() and deselectAllRows() select/deselect all filtered rows.
     * If you set the parameter onlyFilterData to false that will select all rows in the grid exept deleted rows.
     * @example
     * ```typescript
     * this.grid.selectAllRows();
     * this.grid.selectAllRows(false);
     * ```
     * @param onlyFilterData
     */
    selectAllRows(onlyFilterData?: boolean): void;
    /**
     * Deselects all rows
     * @remarks
     * By default if filtering is in place, selectAllRows() and deselectAllRows() select/deselect all filtered rows.
     * If you set the parameter onlyFilterData to false that will select all rows in the grid exept deleted rows.
     * @example
     * ```typescript
     * this.grid.deselectAllRows();
     * ```
     * @param onlyFilterData
     */
    deselectAllRows(onlyFilterData?: boolean): void;
    /**
     * @hidden @internal
     */
    clearCellSelection(): void;
    /**
     * @hidden @internal
    */
    dragScroll(dir: DragScrollDirection): void;
    /**
     * @hidden @internal
    */
    isDefined(arg: any): boolean;
    /**
     * @hidden @internal
     */
    selectRange(arg: GridSelectionRange | GridSelectionRange[] | null | undefined): void;
    /**
     * @hidden @internal
    */
    columnToVisibleIndex(field: string | number): number;
    /**
     * @hidden @internal
    */
    setSelection(range: GridSelectionRange): void;
    /**
     * @hidden @internal
     */
    getSelectedRanges(): GridSelectionRange[];
    protected extractDataFromSelection(source: any[], formatters?: boolean, headers?: boolean): any[];
    protected getSelectableColumnsAt(index: any): IgxColumnComponent[];
    /**
     *
     * Returns an array of the current cell selection in the form of `[{ column.field: cell.value }, ...]`.
     * @remarks
     * If `formatters` is enabled, the cell value will be formatted by its respective column formatter (if any).
     * If `headers` is enabled, it will use the column header (if any) instead of the column field.
     */
    getSelectedData(formatters?: boolean, headers?: boolean): any[];
    /**
     * @hidden @internal
    */
    scrollHandler: (event: any) => void;
    /**
     * @hidden @internal
     */
    copyHandlerIE(): void;
    /**
     * @hidden
     * @internal
     */
    copyHandler(event: any, ie11?: boolean): void;
    /**Navigates to a posution in the grid based on provided `rowindex` and `visibleColumnIndex`.
     * @remarks
     * Also can execute a custom logic over the target element,
     * through a callback function that accepts { targetType: GridKeydownTargetType, target: Object }
     * @example
     * ```typescript
     *  this.grid.navigateTo(10, 3, (args) => { args.target.nativeElement.focus(); });
     * ```
     */
    navigateTo(rowIndex: number, visibleColIndex?: number, cb?: Function): void;
    /**
    * Returns `ICellPosition` which defines the next cell,
    * according to the current position, that match specific criteria.
    * @remarks
    * You can pass callback function as a third parameter of `getPreviousCell` method.
    * The callback function accepts IgxColumnComponent as a param
    * @example
    * ```typescript
    *  const nextEditableCellPosition = this.grid.getNextCell(0, 3, (column) => column.editable);
    * ```
    */
    getNextCell(currRowIndex: number, curVisibleColIndex: number, callback?: (IgxColumnComponent: any) => boolean): ICellPosition;
    /**
    * Returns `ICellPosition` which defines the previous cell,
    * according to the current position, that match specific criteria.
    * @remarks
    * You can pass callback function as a third parameter of `getPreviousCell` method.
    * The callback function accepts IgxColumnComponent as a param
    * @example
    * ```typescript
    *  const previousEditableCellPosition = this.grid.getPreviousCell(0, 3, (column) => column.editable);
    * ```
    */
    getPreviousCell(currRowIndex: number, curVisibleColIndex: number, callback?: (IgxColumnComponent: any) => boolean): ICellPosition;
    private executeCallback;
    private getPrevDataRowIndex;
    private getNextDataRowIndex;
    private isValidPosition;
    /**
     * @hidden @internal
     */
    wheelHandler: (isScroll?: boolean) => void;
    /**
     * @hidden @internal
     */
    trackColumnChanges(index: any, col: any): any;
    private find;
    /**
     * Returns an array containing the filtered sorted data.
     * @example
     * ```typescript
     * const filteredSortedData = this.grid1.filteredSortedData;
     * ```
    */
    get filteredSortedData(): any[];
    /**
     * @hidden
     */
    protected initPinning(): void;
    /**
     * @hidden
     */
    protected scrollTo(row: any | number, column: any | number, inCollection?: any[]): void;
    /**
     * @hidden
     */
    protected scrollToHorizontally(column: any | number): void;
    /**
     * @hidden
     */
    protected scrollDirective(directive: IgxGridForOfDirective<any>, goal: number): void;
    private rebuildMatchCache;
    /**
     * @hidden
     */
    isExpandedGroup(_group: IGroupByRecord): boolean;
    protected changeRowEditingOverlayStateOnScroll(row: IgxRowDirective<IgxGridBaseDirective & GridType>): void;
    /**
     * Should be called when data and/or isLoading input changes so that the overlay can be
     * hidden/shown based on the current value of shouldOverlayLoading
     */
    protected evaluateLoadingState(): void;
    /**
     * @hidden @internal
    */
    openRowOverlay(id: any): void;
    /**
     * @hidden @internal
     */
    closeRowEditingOverlay(): void;
    /**
     * @hidden @internal
    */
    toggleRowEditingOverlay(show: any): void;
    /**
     * @hidden @internal
     */
    repositionRowEditingOverlay(row: IgxRowDirective<IgxGridBaseDirective & GridType>): void;
    private configureRowEditingOverlay;
    /**
     * @hidden @internal
    */
    get rowChangesCount(): number;
    protected writeToData(rowIndex: number, value: any): void;
    /**
     * @hidden @internal
     */
    endRowTransaction(commit: boolean, row: IgxRow): void;
    /**
     * @hidden @internal
    */
    gridOutletKeyboardHandler(event: any): void;
    /**
     * Finishes the row transactions on the current row.
     * @remarks
     * If `commit === true`, passes them from the pending state to the data (or transaction service)
     * @example
     * ```html
     * <button igxButton (click)="grid.endEdit(true)">Commit Row</button>
     * ```
     * @param commit
     */
    endEdit(commit?: boolean, event?: Event): void;
    /**
     * @hidden
     */
    private rowEditingWheelHandler;
    /**
     * @hidden @internal
     */
    get dataWithAddedInTransactionRows(): any;
    /**
     * @hidden @internal
    */
    get dataLength(): any;
    /**
     * @hidden @internal
     */
    hasHorizontalScroll(): boolean;
    protected _restoreVirtState(row: any): void;
    /**
     * @hidden
     */
    protected getExportExcel(): boolean;
    /**
     * @hidden
     */
    protected getExportCsv(): boolean;
    /**
     * @hidden @internal
     */
    get shouldOverlayLoading(): boolean;
    /**
     * @hidden @internal
    */
    isSummaryRow(rowData: any): boolean;
    /**
     * @hidden @internal
     */
    get isMultiRowSelectionEnabled(): boolean;
    /**
     * @hidden @internal
     */
    get isRowSelectable(): boolean;
    /**
     * @hidden @internal
     */
    get isCellSelectable(): boolean;
    /**
     * @hidden @internal
    */
    viewDetachHandler(args: ICachedViewLoadedEventArgs): void;
    /**
     * @hidden @internal
    */
    cachedViewLoaded(args: ICachedViewLoadedEventArgs): void;
    /**
     * Opens the advanced filtering dialog.
     */
    openAdvancedFilteringDialog(): void;
    /**
     * Closes the advanced filtering dialog.
     * @param applyChanges indicates whether the changes should be applied
     */
    closeAdvancedFilteringDialog(applyChanges: boolean): void;
}
