import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ComponentFactoryResolver, ElementRef, EventEmitter, IterableDiffers, NgZone, OnDestroy, OnInit, QueryList, TemplateRef, ViewContainerRef } from '@angular/core';
import { Subject } from 'rxjs';
import { IgxSelectionAPIService } from '../core/selection';
import { DisplayDensity } from '../core/utils';
import { DataType } from '../data-operations/data-util';
import { FilteringLogic } from '../data-operations/filtering-expression.interface';
import { IGroupByExpandState } from '../data-operations/groupby-expand-state.interface';
import { IGroupByRecord } from '../data-operations/groupby-record.interface';
import { ISortingExpression } from '../data-operations/sorting-expression.interface';
import { IForOfState, IgxForOfDirective } from '../directives/for-of/for_of.directive';
import { IgxBaseExporter, IgxExporterOptionsBase } from '../services/index';
import { IgxCheckboxComponent } from './../checkbox/checkbox.component';
import { IgxGridAPIService } from './api.service';
import { IgxGridCellComponent } from './cell.component';
import { IColumnVisibilityChangedEventArgs } from './column-hiding-item.directive';
import { IgxColumnComponent } from './column.component';
import { ISummaryExpression } from './grid-summary';
import { IgxGroupByRowTemplateDirective } from './grid.common';
import { IgxGridToolbarComponent } from './grid-toolbar.component';
import { IgxGridRowComponent } from './row.component';
import { IFilteringOperation, IFilteringExpressionsTree } from '../../public_api';
import { IgxGridHeaderComponent } from './grid-header.component';
export interface IGridCellEventArgs {
    cell: IgxGridCellComponent;
    event: Event;
}
export interface IGridEditEventArgs {
    row: IgxGridRowComponent;
    cell: IgxGridCellComponent;
    currentValue: any;
    newValue: any;
}
export interface IPinColumnEventArgs {
    column: IgxColumnComponent;
    insertAtIndex: number;
}
export interface IPageEventArgs {
    previous: number;
    current: number;
}
export interface IRowDataEventArgs {
    data: any;
}
export interface IColumnResizeEventArgs {
    column: IgxColumnComponent;
    prevWidth: string;
    newWidth: string;
}
export interface IRowSelectionEventArgs {
    oldSelection: any[];
    newSelection: any[];
    row?: IgxGridRowComponent;
    event?: Event;
}
export interface ISearchInfo {
    searchText: string;
    caseSensitive: boolean;
    activeMatchIndex: number;
    matchInfoCache: any[];
}
export interface IGridToolbarExportEventArgs {
    grid: IgxGridComponent;
    exporter: IgxBaseExporter;
    options: IgxExporterOptionsBase;
    cancel: boolean;
}
export interface IColumnMovingStartEventArgs {
    source: IgxColumnComponent;
}
export interface IColumnMovingEventArgs {
    source: IgxColumnComponent;
    cancel: boolean;
}
export interface IColumnMovingEndEventArgs {
    source: IgxColumnComponent;
    target: IgxColumnComponent;
    cancel: boolean;
}
/**
 * **Ignite UI for Angular Grid** -
 * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid.html)
 *
 * The Ignite UI Grid is used for presenting and manipulating tabular data in the simplest way possible.  Once data
 * has been bound, it can be manipulated through filtering, sorting & editing operations.
 *
 * Example:
 * ```html
 * <igx-grid [data]="employeeData" autoGenerate="false">
 *   <igx-column field="first" header="First Name"></igx-column>
 *   <igx-column field="last" header="Last Name"></igx-column>
 *   <igx-column field="role" header="Role"></igx-column>
 * </igx-grid>
 * ```
 */
export declare class IgxGridComponent implements OnInit, OnDestroy, AfterContentInit, AfterViewInit {
    private gridAPI;
    selection: IgxSelectionAPIService;
    private elementRef;
    private zone;
    document: any;
    cdr: ChangeDetectorRef;
    private resolver;
    private differs;
    private viewRef;
    /**
     * An @Input property that lets you fill the `IgxGridComponent` with an array of data.
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    data: any[];
    /**
     * An @Input property that autogenerates the `IgxGridComponent` columns.
     * The default value is false.
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    autoGenerate: boolean;
    /**
     * An @Input property that sets the value of the `id` attribute. If not provided it will be automatically generated.
     * ```html
     * <igx-grid [id]="'igx-grid-1'" [data]="Data" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    id: string;
    /**
     * An @Input property that sets a custom template when the `IgxGridComponent` is empty.
     * ```html
     * <igx-grid [id]="'igx-grid-1'" [data]="Data" [emptyGridTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    emptyGridTemplate: TemplateRef<any>;
    /**
     * Sets the filtering logic of the `IgxGridComponent`.
     * The default is AND.
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true" [filteringLogic]="filtering"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    filteringLogic: FilteringLogic;
    /**
     * Returns the filtering state of `IgxGridComponent`.
     * ```typescript
     * let filteringExpressionsTree = this.grid.filteringExpressionsTree;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the filtering state of the `IgxGridComponent`.
     * ```typescript
     * const logic = new FilteringExpressionsTree(FilteringLogic.And, "ID");
     * logic.filteringOperands = [
     *     {
     *          condition: IgxNumberFilteringOperand.instance().condition('greaterThan'),
     *          fieldName: 'ID',
     *          searchVal: 1
     *     }
     * ];
     * this.grid.filteringExpressionsTree = (logic);
     * ```
     * @memberof IgxGridComponent
     */
    filteringExpressionsTree: IFilteringExpressionsTree;
    /**
     * Returns an array of objects containing the filtered data in the `IgxGridComponent`.
     * ```typescript
     * let filteredData = this.grid.filteredData;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets an array of objects containing the filtered data in the `IgxGridComponent`.
     * ```typescript
     * this.grid.filteredData = [{
     *       ID: 1,
     *       Name: "A"
     * }];
     * ```
     * @memberof IgxGridComponent
     */
    filteredData: any;
    /**
     * Returns the group by state of the `IgxGridComponent`.
     * ```typescript
     * let groupByState = this.grid.groupingExpressions;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the group by state of the `IgxGridComponent`.
     * ```typescript
     * this.grid.groupingExpressions = [{
     *     fieldName: "ID",
     *     dir: SortingDirection.Asc,
     *     ignoreCase: false
     * }];
     * ```
     * @memberof IgxGridComponent
     */
    groupingExpressions: any[];
    /**
     * Returns a list of expansion states for group rows.
     * Includes only states that differ from the default one (controlled through groupsExpanded and states that the user has changed.
     * Contains the expansion state (expanded: boolean) and the unique identifier for the group row (Array).
     * ```typescript
     * const groupExpState = this.grid.groupingExpansionState;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets a list of expansion states for group rows.
     * ```typescript
     *      this.grid.groupingExpansionState = [{
     *      expanded: false,
     *      hierarchy: [{ fieldName: 'ID', value: 1 }]
     *   }];
     * // You can use DataUtil.getHierarchy(groupRow) to get the group `IgxGridRowComponent` hierarchy.
     * ```
     * @memberof IgxGridComponent
     */
    groupingExpansionState: IGroupByExpandState[];
    private collapsedHighlightedItem;
    /**
     * An @Input property that determines whether created groups are rendered expanded or collapsed.
     * The default rendered state is expanded.
     * ```html
     * <igx-grid #grid [data]="Data" [groupsExpanded]="false" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    groupsExpanded: boolean;
    /**
     * A hierarchical representation of the group by records.
     * ```typescript
     * let groupRecords = this.grid.groupsRecords;
     * ```
     * @memberof IgxGridComponent
     */
    groupsRecords: IGroupByRecord[];
    /**
     * Returns whether the paging feature is enabled/disabled.
     * The default state is disabled (false).
     * ```
     * const paging = this.grid.paging;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Enables/Disables the paging feature.
     * ```html
     * <igx-grid #grid [data]="Data" [autoGenerate]="true" [paging]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    paging: boolean;
    /**
     * Returns the current page index.
     * ```html
     * let gridPage = this.grid.page;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the current page index.
     * <igx-grid #grid [data]="Data" [paging]="true" [page]="5" [autoGenerate]="true"></igx-grid>
     */
    page: number;
    /**
     * Returns the number of visible items per page of the `IgxGridComponent`.
     * The default is 15.
     * ```html
     * let itemsPerPage = this.grid.perPage;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the number of visible items per page of the `IgxGridComponent`.
     * ```html
     * <igx-grid #grid [data]="Data" [paging]="true" [perPage]="5" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    perPage: number;
    /**
     * You can provide a custom `ng-template` for the pagination UI of the grid.
     * ```html
     * <igx-grid #grid [paging]="true" [myTemplate]="myTemplate" [height]="'305px'"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    paginationTemplate: TemplateRef<any>;
    /**
     * Return the display density currently applied to the grid.
     * The default value is `comfortable`.
     * Available options are `comfortable`, `cosy`, `compact`.
     * ```typescript
     * let gridTheme = this.grid.displayDensity;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the display density currently applied to the grid.
     * ```html
     * <igx-grid #grid [data]="localData" [displayDensity]="'compact'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    displayDensity: DisplayDensity | string;
    /**
     * Returns whether the column hiding UI for the `IgxGridComponent` is enabled.
     * By default it is disabled (false).
     * ```typescript
     * let gridColHiding = this.grid.columnHiding;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets whether the column hiding UI for the `IgxGridComponent` is enabled.
     * In order for the UI to work, you need to enable the toolbar as shown in the example below.
     * ```html
     * <igx-grid [data]="Data" [autoGenerate]="true" [showToolbar]="true" [columnHiding]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    columnHiding: boolean;
    /**
     * Sets whether the `IgxGridRowComponent` selection is enabled.
     * By default it is set to false.
     * ```typescript
     * let rowSelectable = this.grid.rowSelectable;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets whether rows can be selected.
     * ```html
     * <igx-grid #grid [showToolbar]="true" [rowSelectable]="true" [columnHiding]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    rowSelectable: boolean;
    /**
     * Returns the height of the `IgxGridComponent`.
     * ```typescript
     * let gridHeight = this.grid.height;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the height of the `IgxGridComponent`.
     * ```html
     * <igx-grid #grid [data]="Data" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    height: any;
    /**
     * Returns the width of the `IgxGridComponent`.
     * ```typescript
     * let gridWidth = this.grid.width;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the width of the `IgxGridComponent`.
     * ```html
     * <igx-grid #grid [data]="Data" [width]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    width: any;
    /**
     * Returns the width of the header of the `IgxGridComponent`.
     * ```html
     * let gridHeaderWidth = this.grid.headerWidth;
     * ```
     * @memberof IgxGridComponent
     */
    readonly headerWidth: number;
    /**
     * An @Input property that adds styling classes applied to all even `IgxGridRowComponent`s in the grid.
     * ```html
     * <igx-grid #grid [data]="Data" [evenRowCSS]="'igx-grid--my-even-class'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    evenRowCSS: string;
    /**
     * An @Input property that adds styling classes applied to all odd `IgxGridRowComponent`s in the grid.
     * ```html
     * <igx-grid #grid [data]="Data" [evenRowCSS]="'igx-grid--my-odd-class'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    oddRowCSS: string;
    /**
     * Returns the row height.
     * ```typescript
     * const rowHeight = this.grid.rowHeight;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the row height.
     * ```html
     * <igx-grid #grid [data]="localData" [showToolbar]="true" [rowHeight]="100" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    rowHeight: any;
    /**
     * An @Input property that sets the default width of the `IgxGridComponent`'s columns.
     * ```html
     * <igx-grid #grid [data]="localData" [showToolbar]="true" [columnWidth]="100" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    columnWidth: string;
    /**
     * An @Input property that sets the primary key of the `IgxGridComponent`.
     * ```html
     * <igx-grid #grid [data]="localData" [showToolbar]="true" [primaryKey]="6" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    primaryKey: any;
    /**
     * An @Input property that sets the message displayed when there are no records.
     * ```html
     * <igx-grid #grid [data]="Data" [emptyGridMessage]="'The grid is empty'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    emptyGridMessage: string;
    /**
     * An @Input property that sets the message displayed when there are no records and the grid is filtered.
     * ```html
     * <igx-grid #grid [data]="Data" [emptyGridMessage]="'The grid is empty'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    emptyFilteredGridMessage: string;
    /**
     * An @Input property that sets the message displayed inside the GroupBy drop area where columns can be dragged on.
     * Note: The grid needs to have at least one groupable column in order the GroupBy area to be displayed.
     * ```html
     * <igx-grid dropAreaMessage="Drop here to group!">
     *      <igx-column [groupable]="true" field="ID"></igx-column>
     * </igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    dropAreaMessage: string;
    /**
     * An @Input property that sets the template that will be rendered as a GroupBy drop area.
     * Note: The grid needs to have at least one groupable column in order the GroupBy area to be displayed.
     * ```html
     * <igx-grid [dropAreaTemplate]="dropAreaRef">
     *      <igx-column [groupable]="true" field="ID"></igx-column>
     * </igx-grid>
     *
     * <ng-template #myDropArea>
     *      <span> Custom drop area! </span>
     * </ng-template>
     * ```
     * ```ts
     * @ViewChild('myDropArea', { read: TemplateRef })
     * public dropAreaRef: TemplateRef<any>;
     * ```
     * @memberof IgxGridComponent
     */
    dropAreaTemplate: TemplateRef<any>;
    /**
     * An @Input property that sets the title to be displayed in the built-in column hiding UI.
     * ```html
     * <igx-grid [showToolbar]="true" [columnHiding]="true" columnHidingTitle="Column Hiding"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    columnHidingTitle: string;
    /**
     * Returns if the built-in column pinning UI should be shown in the toolbar.
     * ```typescript
     *  let colPinning = this.grid.columnPinning;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets if the built-in column pinning UI should be shown in the toolbar.
     * By default it's disabled.
     * ```html
     * <igx-grid #grid [data]="localData" [columnPinning]="'true" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    columnPinning: boolean;
    /**
     * An @Input property that sets the title to be displayed in the UI of the column pinning.
     * ```html
     * <igx-grid #grid [data]="localData" [columnPinning]="'true" [columnPinningTitle]="'Column Hiding'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    columnPinningTitle: string;
    /**
     * Emitted when `IgxGridCellComponent` is clicked. Returns the `IgxGridCellComponent`.
     * ```html
     * <igx-grid #grid (onCellClick)="onCellClick($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * ```typescript
     * public onCellClick(e){
     *     alert("The cell has been clicked!");
     * }
     * ```
     * @memberof IgxGridComponent
     */
    onCellClick: EventEmitter<IGridCellEventArgs>;
    /**
     * Emitted when `IgxGridCellComponent` is selected. Returns the `IgxGridCellComponent`.
     * ```html
     * <igx-grid #grid (onSelection)="onCellSelect($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * ```typescript
     * public onCellSelect(e){
     *     alert("The cell has been selected!");
     * }
     * ```
     * @memberof IgxGridComponent
     */
    onSelection: EventEmitter<IGridCellEventArgs>;
    /**
     *  Emitted when `IgxGridRowComponent` is selected.
     * ```html
     * <igx-grid #grid (onRowSelectionChange)="onRowClickChange($event)" [data]="localData" [autoGenerate]="true"></igx-grid>
     * ```
     * ```typescript
     * public onCellClickChange(e){
     *     alert("The selected row has been changed!");
     * }
     * ```
     * @memberof IgxGridComponent
     */
    onRowSelectionChange: EventEmitter<IRowSelectionEventArgs>;
    /**
     * Emitted when `IgxColumnComponent` is pinned.
     * The index that the column is inserted at may be changed through the `insertAtIndex` property.
     * ```typescript
     * public columnPinning(event) {
     *     if (event.column.field === "Name") {
     *       event.insertAtIndex = 0;
     *     }
     * }
     * ```
     * @memberof IgxGridComponent
     */
    onColumnPinning: EventEmitter<IPinColumnEventArgs>;
    /**
     * An @Output property emitting an event when `IgxGridCellComponent` or `IgxGridRowComponent`
     * editing has been performed in the grid.
     * On `IgxGridCellComponent` editing, both `IgxGridCellComponent` and `IgxGridRowComponent`
     * objects in the event arguments are defined for the corresponding
     * `IgxGridCellComponent` that is being edited and the `IgxGridRowComponent` the `IgxGridCellComponent` belongs to.
     * On `IgxGridRowComponent` editing, only the `IgxGridRowComponent` object is defined, for the `IgxGridRowComponent`
     * that is being edited.
     * The `IgxGridCellComponent` object is null on `IgxGridRowComponent` editing.
     * ```typescript
     * editDone(event: IgxColumnComponent){
     *    const column: IgxColumnComponent = event;
     * }
     * ```
     * ```html
     * <igx-grid #grid3 (onEditDone)="editDone($event)" [data]="remote | async" (onSortingDone)="process($event)"
     *          [primaryKey]="'ProductID'" [rowSelectable]="true">
     *          <igx-column [sortable]="true" [field]="'ProductID'"></igx-column>
     *          <igx-column [editable]="true" [field]="'ProductName'"></igx-column>
     *          <igx-column [sortable]="true" [field]="'UnitsInStock'" [header]="'Units in Stock'"></igx-column>
     * </igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onEditDone: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted when a grid column is initialized. Returns the column object.
     * ```html
     * <igx-grid #grid [data]="localData" [onColumnInit]="initColumns($event)" [autoGenerate]="true"</igx-grid>
     * ```
     * ```typescript
     * initColumns(event: IgxColumnComponent) {
     * const column: IgxColumnComponent = event;
     *       column.filterable = true;
     *       column.sortable = true;
     *       column.editable = true;
     * }
     * ```
     * @memberof IgxGridComponent
     */
    onColumnInit: EventEmitter<IgxColumnComponent>;
    /**
     * Emitted when sorting is performed through the UI. Returns the sorting expression.
     * ```html
     * <igx-grid #grid [data]="localData" [autoGenerate]="true" (onSortingDone)="sortingDone($event)"></igx-grid>
     * ```
     * ```typescript
     * sortingDone(event: SortingDirection){
     *     const sortingDirection = event;
     * }
     * ```
     * @memberof IgxGridComponent
     */
    onSortingDone: EventEmitter<ISortingExpression>;
    /**
     * Emitted when filtering is performed through the UI.
     * Returns the filtering expressions tree of the column for which filtering was performed.
     * ```typescript
     * filteringDone(event: IFilteringExpressionsTree){
     *     const filteringTree = event;
     *}
     * ```
     * ```html
     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (onFilteringDone)="filteringDone($event)"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onFilteringDone: EventEmitter<IFilteringExpressionsTree>;
    /**
     * Emitted when paging is performed. Returns an object consisting of the previous and next pages.
     * ```typescript
     * pagingDone(event: IPageEventArgs){
     *     const paging = event;
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (onPagingDone)="pagingDone($event)"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onPagingDone: EventEmitter<IPageEventArgs>;
    /**
     * Emitted when a `IgxGridRowComponent` is being added to the `IgxGridComponent` through the API.
     * Returns the data for the new `IgxGridRowComponent` object.
     * ```typescript
     * rowAdded(event: IRowDataEventArgs){
     *    const rowInfo = event;
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="localData" (onRowAdded)="rowAdded($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onRowAdded: EventEmitter<IRowDataEventArgs>;
    /**
     * Emitted when a `IgxGridRowComponent` is deleted through the `IgxGridComponent` API.
     * Returns an `IRowDataEventArgs` object.
     * ```typescript
     * rowDeleted(event: IRowDataEventArgs){
     *    const rowInfo = event;
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="localData" (onRowDeleted)="rowDeleted($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onRowDeleted: EventEmitter<IRowDataEventArgs>;
    /**
     * Emitted when a new `IgxColumnComponent` is grouped or ungrouped.
     * Returns the `ISortingExpression` related to the grouping operation.
     * ```typescript
     * groupingDone(event: any){
     *     const grouping = event;
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="localData" (onGroupingDone)="groupingDone($event)" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onGroupingDone: EventEmitter<ISortingExpression[]>;
    /**
     * Emitted when a new chunk of data is loaded from virtualization.
     * ```typescript
     *  <igx-grid #grid [data]="localData" [autoGenerate]="true" (onDataPreLoad)='handleDataPreloadEvent()'></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onDataPreLoad: EventEmitter<IForOfState>;
    /**
     * Emitted when `IgxColumnComponent` is resized.
     * Returns the `IgxColumnComponent` object's old and new width.
     * ```typescript
     * resizing(event: IColumnResizeEventArgs){
     *     const grouping = event;
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="localData" (onColumnResized)="resizing($event)" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onColumnResized: EventEmitter<IColumnResizeEventArgs>;
    /**
     * Emitted when a `IgxGridCellComponent` is right clicked. Returns the `IgxGridCellComponent` object.
     * ```typescript
     * contextMenu(event: IGridCellEventArgs){
     *     const resizing = event;
     *     console.log(resizing);
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="localData" (onContextMenu)="contextMenu($event)" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onContextMenu: EventEmitter<IGridCellEventArgs>;
    /**
     * Emitted when a `IgxGridCellComponent` is double clicked. Returns the `IgxGridCellComponent` object.
     * ```typescript
     * dblClick(event: IGridCellEventArgs){
     *     const dblClick = event;
     *     console.log(dblClick);
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="localData" (onDoubleClick)="dblClick($event)" [autoGenerate]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onDoubleClick: EventEmitter<IGridCellEventArgs>;
    /**
     * Emitted when `IgxColumnComponent` visibility is changed. Args: { column: any, newValue: boolean }
     * ```typescript
     * visibilityChanged(event: IColumnVisibilityChangedEventArgs){
     *    const visiblity = event;
     * }
     * ```
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" (onColumnVisibilityChanged)="visibilityChanged($event)"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onColumnVisibilityChanged: EventEmitter<IColumnVisibilityChangedEventArgs>;
    /**
     * Emitted when `IgxColumnComponent` moving starts. Returns the moved `IgxColumnComponent` object.
     * ```typescript
     * movingStart(event: IColumnMovingStartEventArgs){
     *     const movingStarts = event;
     * }
     * ```
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" (onColumnMovingStart)="movingStart($event)"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onColumnMovingStart: EventEmitter<IColumnMovingStartEventArgs>;
    /**
     * Emitted throughout the `IgxColumnComponent` moving operation.
     * Returns the source and target `IgxColumnComponent` objects. This event is cancelable.
     * ```typescript
     * moving(event: IColumnMovingEventArgs){
     *     const moving = event;
     * }
     * ```
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" (onColumnMoving)="moving($event)"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onColumnMoving: EventEmitter<IColumnMovingEventArgs>;
    /**
     * Emitted when `IgxColumnComponent` moving ends.
     * Returns the source and target `IgxColumnComponent` objects. This event is cancelable.
     * ```typescript
     * movingEnds(event: IColumnMovingEndEventArgs){
     *     const movingEnds = event;
     * }
     * ```
     * ```html
     * <igx-grid [columnHiding]="true" [showToolbar]="true" (onColumnMovingEnd)="movingEnds($event)"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    onColumnMovingEnd: EventEmitter<IColumnMovingEndEventArgs>;
    /**
     * @hidden
     */
    protected onDensityChanged: EventEmitter<any>;
    /**
     * @hidden
     */
    columnList: QueryList<IgxColumnComponent>;
    /**
     * @hidden
     */
    headerList: QueryList<IgxGridHeaderComponent>;
    /**
     * @hidden
     */
    protected groupTemplate: IgxGroupByRowTemplateDirective;
    private _rowList;
    /**
     * A list of `IgxGridRowComponent`.
     * ```typescript
     * const rowList = this.grid.rowList;
     * ```
     * @memberof IgxGridComponent
     */
    readonly rowList: QueryList<any>;
    private _dataRowList;
    /**
     * A list of `IgxGridRowComponent`, currently rendered.
     * ```typescript
     * const dataList = this.grid.dataRowList;
     * ```
     * @memberof IgxGridComponent
     */
    readonly dataRowList: QueryList<any>;
    private _groupsRowList;
    /**
     * A list of all group rows.
     * ```typescript
     * const groupList = this.grid.groupsRowList;
     * ```
     * @memberof IgxGridComponent
     */
    readonly groupsRowList: QueryList<any>;
    /**
     * A template reference for the template when the filtered `IgxGridComponent` is empty.
     * ```
     * const emptyTempalte = this.grid.emptyGridTemplate;
     * ```
     * @memberof IgxGridComponent
     */
    emptyFilteredGridTemplate: TemplateRef<any>;
    /**
     * A template reference for the template when the `IgxGridComponent` is empty.
     * ```
     * const emptyTempalte = this.grid.emptyGridTemplate;
     * ```
     * @memberof IgxGridComponent
     */
    emptyGridDefaultTemplate: TemplateRef<any>;
    /**
     * @hidden
     */
    defaultDropAreaTemplate: TemplateRef<any>;
    /**
     * @hidden
     */
    parentVirtDir: IgxForOfDirective<any>;
    /**
     * @hidden
     */
    verticalScrollContainer: IgxForOfDirective<any>;
    /**
     * @hidden
     */
    scr: ElementRef;
    /**
     * @hidden
     */
    paginator: ElementRef;
    /**
     * @hidden
     */
    headerContainer: IgxForOfDirective<any>;
    /**
     * @hidden
     */
    headerCheckboxContainer: ElementRef;
    /**
     * @hidden
     */
    headerGroupContainer: ElementRef;
    /**
     * @hidden
     */
    headerCheckbox: IgxCheckboxComponent;
    /**
     * @hidden
     */
    groupArea: ElementRef;
    /**
     * @hidden
     */
    theadRow: ElementRef;
    /**
     * @hidden
     */
    tbody: ElementRef;
    /**
     * @hidden
     */
    tfoot: ElementRef;
    /**
     * @hidden
     */
    summaries: ElementRef;
    /**
     * @hidden
     */
    tabindex: number;
    /**
     * @hidden
     */
    readonly hostClass: string;
    /**
     * @hidden
     */
    readonly groupAreaHostClass: string;
    /**
     * @hidden
     */
    hostRole: string;
    /**
     * @hidden
     */
    readonly pipeTrigger: number;
    /**
     * Returns the sorting state of the `IgxGridComponent`.
     * ```typescript
     * const sortingState = this.grid.sortingExpressions;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the sorting state of the `IgxGridComponent`.
     * ```typescript
     * this.grid.sortingExpressions = [{
     *     fieldName: "ID",
     *     dir: SortingDirection.Desc,
     *     ignoreCase: true
     * }];
     * ```
     * @memberof IgxGridComponent
     */
    sortingExpressions: any[];
    /**
     * Returns the state of the grid virtualization, including the start index and how many records are rendered.
     * ```typescript
     * const gridVirtState = this.grid1.virtualizationState;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * @hidden
     */
    virtualizationState: IForOfState;
    /**
     * Returns the total number of records in the data source.
     * Works only with remote grid virtualization.
     * ```typescript
     * const itemCount = this.grid1.totalItemCount;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the total number of records in the data source.
     * This property is required for virtualization to function when the grid is bound remotely.
     * ```typescript
     * this.grid1.totalItemCount = 55;
     * ```
     * @memberof IgxGridComponent
     */
    totalItemCount: number;
    /**
     * @hidden
     */
    readonly maxLevelHeaderDepth: any;
    /**
     * Returns the number of hidden `IgxColumnComponent`.
     * ```typescript
     * const hiddenCol = this.grid.hiddenColumnsCount;
     * ``
     */
    readonly hiddenColumnsCount: number;
    /**
     * Returns the text to be displayed inside the toggle button
     * for the built-in column hiding UI of the`IgxColumnComponent`.
     * ```typescript
     * const hiddenColText = this.grid.hiddenColumnsText;
     * ``
     */
    /**
     * Sets the text to be displayed inside the toggle button
     * for the built-in column hiding UI of the`IgxColumnComponent`.
     * ```typescript
     * <igx-grid [columnHiding]="true" [showToolbar]="true" [hiddenColumnsText]="'Hidden Columns'"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    hiddenColumnsText: string;
    /**
     * Returns the text to be displayed inside the toggle button
     * for the built-in column pinning UI of the`IgxColumnComponent`.
     * ```typescript
     * const pinnedText = this.grid.pinnedColumnsText;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the text to be displayed inside the toggle button
     * for the built-in column pinning UI of the`IgxColumnComponent`.
     * ```html
     * <igx-grid [pinnedColumnsText]="'PinnedCols Text" [data]="data" [width]="'100%'" [height]="'500px'"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    pinnedColumnsText: string;
    /**
     * @hidden
    */
    columnsWithNoSetWidths: any;
    private _showToolbar;
    private _exportExcel;
    private _exportCsv;
    private _toolbarTitle;
    private _exportText;
    private _exportExcelText;
    private _exportCsvText;
    /**
     * Provides access to the `IgxToolbarComponent`.
     * ```typescript
     * const gridToolbar = this.grid.toolbar;
     * ```
     * @memberof IgxGridComponent
     */
    toolbar: IgxGridToolbarComponent;
    private toolbarHtml;
    readonly shouldShowToolbar: boolean;
    /**
     * Returns whether the `IgxGridComponent`'s toolbar is shown or hidden.
     * ```typescript
     * const toolbarGrid = this.grid.showToolbar;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Shows or hides the `IgxGridComponent`'s toolbar.
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" ></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    showToolbar: boolean;
    /**
     * Returns the toolbar's title.
     * ```typescript
     * const toolbarTitle  = this.grid.toolbarTitle;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the toolbar's title.
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [toolbarTitle]="'My Grid'"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    toolbarTitle: string;
    /**
     * Returns whether the option for exporting to MS Excel is enabled or disabled.
     * ```typescript
     * cosnt excelExporter = this.grid.exportExcel;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Enable or disable the option for exporting to MS Excel.
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [exportExcel]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    exportExcel: boolean;
    /**
     * Returns whether the option for exporting to CSV is enabled or disabled.
     * ```typescript
     * const exportCsv = this.grid.exportCsv;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Enable or disable the option for exporting to CSV.
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [autoGenerate]="true" [exportCsv]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    exportCsv: boolean;
    /**
     * Returns the textual content for the main export button.
     * ```typescript
     * const exportText = this.grid.exportText;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the textual content for the main export button.
     * ```html
     * <igx-grid [data]="localData" [showToolbar]="true" [exportText]="'My Exporter'" [exportCsv]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    exportText: string;
    /**
     * Returns the textual content for the MS Excel export button.
     * ```typescript
     * const excelText = this.grid.exportExcelText;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * 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>
     * ```
     * @memberof IgxGridComponent
     */
    exportExcelText: string;
    /**
     * Returns the textual content for the CSV export button.
     * ```typescript
     * const csvText = this.grid.exportCsvText;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the textual content for the CSV export button.
     * ```html
     * <igx-grid [exportCsvText]="'My Csv Exporter" [showToolbar]="true" [exportText]="'My Exporter'" [exportExcel]="true"></igx-grid>
     * ```
     * @memberof IgxGridComponent
     */
    exportCsvText: string;
    /**
     * Emitted when an export process is initiated by the user.
     * ```typescript
     * toolbarExporting(event: IGridToolbarExportEventArgs){
     *     const toolbarExporting = event;
     * }
     * ```
     * @memberof IgxGridComponent
     */
    onToolbarExporting: EventEmitter<IGridToolbarExportEventArgs>;
    /**
     * @hidden
     */
    pagingState: any;
    /**
     * @hidden
     */
    calcWidth: number;
    /**
     * @hidden
     */
    calcRowCheckboxWidth: number;
    /**
     * @hidden
     */
    calcHeight: number;
    /**
     * @hidden
     */
    tfootHeight: number;
    /**
     * @hidden
     */
    chipsGoupingExpressions: any[];
    /**
     * @hidden
     */
    summariesHeight: number;
    /**
     * @hidden
     */
    draggedColumn: IgxColumnComponent;
    /**
     * @hidden
     */
    isColumnResizing: boolean;
    /**
     * @hidden
     */
    isColumnMoving: boolean;
    /**
     * @hidden
     */
    eventBus: Subject<boolean>;
    /**
     * @hidden
     */
    allRowsSelected: boolean;
    /**
     * @hidden
     */
    lastSearchInfo: ISearchInfo;
    /**
     * @hidden
     */
    protected destroy$: Subject<boolean>;
    /**
     * @hidden
     */
    protected _perPage: number;
    /**
     * @hidden
     */
    protected _page: number;
    /**
     * @hidden
     */
    protected _paging: boolean;
    /**
     * @hidden
     */
    protected _rowSelection: boolean;
    /**
     * @hidden
     */
    protected _pipeTrigger: number;
    /**
     * @hidden
     */
    protected _columns: IgxColumnComponent[];
    /**
     * @hidden
     */
    protected _pinnedColumns: IgxColumnComponent[];
    /**
     * @hidden
     */
    protected _unpinnedColumns: IgxColumnComponent[];
    /**
     * @hidden
     */
    protected _filteringExpressionsTree: IFilteringExpressionsTree;
    /**
     * @hidden
     */
    protected _sortingExpressions: any[];
    /**
     * @hidden
     */
    protected _maxLevelHeaderDepth: any;
    /**
     * @hidden
     */
    protected _groupingExpressions: any[];
    /**
     * @hidden
     */
    protected _groupingExpandState: IGroupByExpandState[];
    /**
     * @hidden
     */
    protected _groupRowTemplate: TemplateRef<any>;
    /**
     * @hidden
     */
    protected _groupAreaTemplate: TemplateRef<any>;
    /**
     * @hidden
     */
    protected _columnHiding: boolean;
    /**
     * @hidden
     */
    protected _columnPinning: boolean;
    private _filteredData;
    private resizeHandler;
    private columnListDiffer;
    private _hiddenColumnsText;
    private _pinnedColumnsText;
    private _height;
    private _width;
    private _rowHeight;
    private _displayDensity;
    private _ngAfterViewInitPaassed;
    private _columnWidth;
    private _columnWidthSetByUser;
    private _defaultTargetRecordNumber;
    constructor(gridAPI: IgxGridAPIService, selection: IgxSelectionAPIService, elementRef: ElementRef, zone: NgZone, document: any, cdr: ChangeDetectorRef, resolver: ComponentFactoryResolver, differs: IterableDiffers, viewRef: ViewContainerRef);
    /**
     * @hidden
     */
    ngOnInit(): void;
    /**
     * @hidden
     */
    ngAfterContentInit(): void;
    /**
     * @hidden
     */
    ngAfterViewInit(): void;
    /**
     * @hidden
     */
    ngOnDestroy(): void;
    /**
     * @hidden
     */
    dataLoading(event: any): void;
    /**
     * Toggles the specified column's visibility.
     * ```typescript
     * this.grid1.toggleColumnVisibility({
     *       column: this.grid1.columns[0],
     *       newValue: true
     * });
     * ```
     * @memberof IgxGridComponent
     */
    toggleColumnVisibility(args: IColumnVisibilityChangedEventArgs): void;
    /**
     * Returns the native element of the `IgxGridComponent`.
     * ```typescript
     * const nativeEl = this.grid.nativeElement.
     * ```
     * @memberof IgxGridComponent
     */
    readonly nativeElement: any;
    /**
     * Returns the template reference of the `IgxGridComponent`'s group row.
     * ```
     * const groupRowTemplate = this.grid.groupRowTemplate;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the template reference of the `IgxGridComponent`'s group `IgxGridRowComponent`.
     * ```typescript
     * this.grid.groupRowTemplate = myRowTemplate.
     * ```
     * @memberof IgxGridComponent
     */
    groupRowTemplate: TemplateRef<any>;
    /**
     * Returns the template reference of the `IgxGridComponent`'s group area.
     * ```typescript
     * const groupAreaTemplate = this.grid.groupAreaTemplate;
     * ```
     * @memberof IgxGridComponent
     */
    /**
     * Sets the template reference of the `IgxGridComponent`'s group area.
     * ```typescript
     * this.grid.groupAreaTemplate = myAreaTemplate.
     * ```
     * @memberof IgxGridComponent
     */
    groupAreaTemplate: TemplateRef<any>;
    /**
     * @hidden
     */
    readonly calcResizerHeight: number;
    /**
     * Returns the `IgxGridComponent`'s rows height.
     * ```typescript
     * const rowHeigh = this.grid.defaultRowHeight;
     * ```
     * @memberof IgxGridComponent
     */
    readonly defaultRowHeight: number;
    /**
     * Returns the maximum width of the container for the pinned `IgxColumnComponent`s.
     * ```typescript
     * const maxPinnedColWidth = this.grid.calcPinnedContainerMaxWidth;
     * ```
     * @memberof IgxGridComponent
     */
    readonly calcPinnedContainerMaxWidth: number;
    /**
     * Returns the minimum width of the container for the unpinned `IgxColumnComponent`s.
     * ```typescript
     * const minUnpinnedColWidth = this.grid.unpinnedAreaMinWidth;
     * ```
     * @memberof IgxGridComponent
     */
    readonly unpinnedAreaMinWidth: number;
    /**
     * Returns the current width of the container for the pinned `IgxColumnComponent`s.
     * ```typescript
     * const pinnedWidth = this.grid.getPinnedWidth;
     * ```
     * @memberof IgxGridComponent
     */
    readonly pinnedWidth: number;
    /**
     * Returns the current width of the container for the unpinned `IgxColumnComponent`s.
     * ```typescript
     * const unpinnedWidth = this.grid.getUnpinnedWidth;
     * ```
     * @memberof IgxGridComponent
     */
    readonly unpinnedWidth: number;
    /**
     * @hidden
     */
    readonly summariesMargin: number;
    /**
     * Returns an array of `IgxColumnComponent`s.
     * ```typescript
     * const colums = this.grid.columns.
     * ```
     * @memberof IgxGridComponent
     */
    readonly columns: IgxColumnComponent[];
    /**
     * Returns an array of the pinned `IgxColumnComponent`s.
     * ```typescript
     * const pinnedColumns = this.grid.pinnedColumns.
     * ```
     * @memberof IgxGridComponent
     */
    readonly pinnedColumns: IgxColumnComponent[];
    /**
     * Returns an array of unpinned `IgxColumnComponent`s.
     * ```typescript
     * const unpinnedColumns = this.grid.unpinnedColumns.
     * ```
     * @memberof IgxGridComponent
     */
    readonly unpinnedColumns: IgxColumnComponent[];
    /**
     * Returns the `IgxColumnComponent` by field name.
     * ```typescript
     * const myCol = this.grid1.getColumnByName("ID");
     * ```
     * @param name
     * @memberof IgxGridComponent
     */
    getColumnByName(name: string): IgxColumnComponent;
    /**
     * Returns the `IgxColumnComponent` by index.
     * ```typescript
     * const myRow = this.grid1.getRowByIndex(1);
     * ```
     * @param index
     * @memberof IgxGridComponent
     */
    getRowByIndex(index: number): IgxGridRowComponent;
    /**
     * Returns `IgxGridRowComponent` object by the specified primary key .
     * Requires that the `primaryKey` property is set.
     * ```typescript
     * const myRow = this.grid1.getRowByKey("cell5");
     * ```
     * @param keyValue
     * @memberof IgxGridComponent
     */
    getRowByKey(keyValue: any): IgxGridRowComponent;
    /**
     * Returns an array of visible `IgxColumnComponent`s.
     * ```typescript
     * const visibleColumns = this.grid.visibleColumns.
     * ```
     * @memberof IgxGridComponent
     */
    readonly visibleColumns: IgxColumnComponent[];
    /**
     * Returns the `IgxGridCellComponent` that matches the conditions.
     * ```typescript
     * const myCell = this.grid1.getCellByColumn(2,"UnitPrice");
     * ```
     * @param rowIndex
     * @param columnField
     * @memberof IgxGridComponent
     */
    getCellByColumn(rowIndex: number, columnField: string): IgxGridCellComponent;
    /**
     * Returns an `IgxGridCellComponent` object by the specified primary key and column field.
     * Requires that the primaryKey property is set.
     * ```typescript
     * grid.getCellByKey(1, 'index');
     * ```
     * @param rowSelector match any rowID
     * @param columnField
     * @memberof IgxGridComponent
     */
    getCellByKey(rowSelector: any, columnField: string): IgxGridCellComponent;
    /**
     * Returns the total number of pages.
     * ```typescript
     * const totalPages = this.grid.totalPages;
     * ```
     * @memberof IgxGridComponent
     */
    readonly totalPages: number;
    /**
     * Returns the total number of records.
     * Only functions when paging is enabled.
     * ```typescript
     * const totalRecords = this.grid.totalRecords;
     * ```
     * @memberof IgxGridComponent
     */
    readonly totalRecords: number;
    /**
     * Returns if the current page is the first page.
     * ```typescript
     * const firstPage = this.grid.isFirstPage;
     * ```
     * @memberof IgxGridComponent
     */
    readonly isFirstPage: boolean;
    /**
     * Returns if the current page is the last page.
     * ```typescript
     * const lastPage = this.grid.isLastPage;
     * ```
     * @memberof IgxGridComponent
     */
    readonly isLastPage: boolean;
    /**
     * Returns the total width of the `IgxGridComponent`.
     * ```typescript
     * const gridWidth = this.grid.totalWidth;
     * ```
     * @memberof IgxGridComponent
     */
    readonly totalWidth: number;
    /**
     * @hidden
     */
    protected _moveColumns(from: IgxColumnComponent, to: IgxColumnComponent): void;
    /**
     * @hidden
     */
    protected _resetColumnList(list?: any): any[];
    /**
     * @hidden
     */
    protected _moveChildColumns(parent: IgxColumnComponent, from: IgxColumnComponent, to: IgxColumnComponent): void;
    /**
     * Moves a column to the specified drop target.
     * ```typescript
     * grid.moveColumn(compName, persDetails);
     * ```
     * @memberof IgxGridComponent
     */
    moveColumn(column: IgxColumnComponent, dropTarget: IgxColumnComponent): void;
    /**
     * Goes to the next page of the `IgxGridComponent`, if the grid is not already at the last page.
     * ```typescript
     * this.grid1.nextPage();
     * ```
     * @memberof IgxGridComponent
     */
    nextPage(): void;
    /**
     * Goes to the previous page of the `IgxGridComponent`, if the grid is not already at the first page.
     * ```typescript
     * this.grid1.previousPage();
     * ```
     * @memberof IgxGridComponent
     */
    previousPage(): void;
    /**
     * Goes to the desired page index.
     * ```typescript
     * this.grid1.paginate(1);
     * ```
     * @param val
     * @memberof IgxGridComponent
     */
    paginate(val: number): void;
    /**
     * Manually marks the `IgxGridComponent` for change detection.
     * ```typescript
     * this.grid1.markForCheck();
     * ```
     * @memberof IgxGridComponent
     */
    markForCheck(): void;
    /**
     * Creates a new `IgxGridRowComponent` and adds the data record to the end of the data source.
     * ```typescript
     * const record = {
     *     ID: this.grid1.data[this.grid1.data.length - 1].ID + 1,
     *     Name: this.newRecord
     * };
     * this.grid1.addRow(record);
     * ```
     * @param data
     * @memberof IgxGridComponent
     */
    addRow(data: any): void;
    /**
     * Removes the `IgxGridRowComponent` and the corresponding data record by primary key.
     * Requires that the `primaryKey` property is set.
     * The method accept rowSelector as a parameter, which is the rowID.
     * ```typescript
     * this.grid1.deleteRow(0);
     * ```
     * @param rowSelector
     * @memberof IgxGridComponent
     */
    deleteRow(rowSelector: any): void;
    /**
     * Updates the `IgxGridRowComponent` and the corresponding data record by primary key.
     * Requires that the `primaryKey` property is set.
     * ```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.
     * @memberof IgxGridComponent
     */
    updateCell(value: any, rowSelector: any, column: string): void;
    /**
     * Updates the `IgxGridRowComponent`, which 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.
     * ```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
     * @memberof IgxGridComponent
     */
    updateRow(value: any, rowSelector: any): void;
    /**
     * Sort a single `IgxColumnComponent`.
     * Sort the `IgxGridComponent`'s `IgxColumnComponent` based on the provided array of sorting expressions.
     * ```typescript
     * this.grid.sort({ fieldName: name, dir: SortingDirection.Asc, ignoreCase: false });
     * ```
     * @memberof IgxGridComponent
     */
    sort(expression: ISortingExpression | Array<ISortingExpression>): void;
    /**
     * Groups by a new `IgxColumnComponent` based on the provided expression or modifies an existing one.
     * ```typescript
     * this.grid.groupBy({ fieldName: name, dir: SortingDirection.Asc, ignoreCase: false });
     * ```
     * @memberof IgxGridComponent
     */
    groupBy(expression: ISortingExpression | Array<ISortingExpression>): void;
    /**
     * Clears all grouping in the grid, if no parameter is passed.
     * If a parameter is provided clears grouping for a particular column
     * ```typescript
     * this.grid.clearGrouping();
     * this.grid.clearGrouping("ID");
     * ```
     *
     */
    clearGrouping(name?: string): void;
    /**
     * Returns if a group is expanded or not.
     * ```typescript
     * public groupRow: IGroupByRecord;
     * const expandedGroup = this.grid.isExpandedGroup(this.groupRow);
     * ```
     * @memberof IgxGridComponent
     */
    isExpandedGroup(group: IGroupByRecord): boolean;
    /**
     * Toggles the expansion state of a group.
     * ```typescript
     * public groupRow: IGroupByRecord;
     * const toggleExpGroup = this.grid.toggleGroup(this.groupRow);
     * ```
     * @memberof IgxGridComponent
     */
    toggleGroup(groupRow: IGroupByRecord): void;
    /**
     * @hidden
     */
    isGroupByRecord(record: any): boolean;
    /**
     * Returns if the grid's group by drop area is visible.
     * ```typescript
     * const dropVisible = this.grid.dropAreaVisible;
     * ```
     * @memberof IgxGridComponent
     */
    readonly dropAreaVisible: boolean;
    /**
     * Filters a single `IgxColumnComponent`.
     * ```typescript
     * public filter(term) {
     *      this.grid.filter("ProductName", term, IgxStringFilteringOperand.instance().condition("contains"));
     * }
     * ```
     * @param name
     * @param value
     * @param conditionOrExpressionTree
     * @param ignoreCase
     * @memberof IgxGridComponent
     */
    filter(name: string, value: any, conditionOrExpressionTree?: IFilteringOperation | IFilteringExpressionsTree, ignoreCase?: boolean): void;
    /**
     * Filters all the `IgxColumnComponent` in the `IgxGridComponent` with the same condition.
     * ```typescript
     * grid.filterGlobal('some', IgxStringFilteringOperand.instance().condition('contains'));
     * ```
     * @param value
     * @param condition
     * @param ignoreCase
     * @memberof IgxGridComponent
     */
    filterGlobal(value: any, condition?: any, ignoreCase?: any): void;
    /**
     * Enables summaries for the specified column and applies your customSummary.
     * If you do not provide the customSummary, then the default summary for the column data type will be applied.
     * ```typescript
     * grid.enableSummaries([{ fieldName: 'ProductName' }, { fieldName: 'ID' }]);
     * ```
     * Enable summaries for the listed columns.
     * ```typescript
     * grid.enableSummaries('ProductName');
     * ```
     * @param rest
     * @memberof IgxGridComponent
     */
    enableSummaries(...rest: any[]): void;
    /**
     * Disable summaries for the specified column.
     * ```typescript
     * grid.disableSummaries('ProductName');
     * ```
     *
     * Disable summaries for the listed columns.
     * ```typescript
     * grid.disableSummaries([{ fieldName: 'ProductName' }]);
     * ```
     * @memberof IgxGridComponent
     */
    disableSummaries(...rest: any[]): void;
    /**
     * If name is provided, clears the filtering state of the corresponding `IgxColumnComponent`,
     * otherwise clears the filtering state of all `IgxColumnComponent`s.
     * ```typescript
     * this.grid.clearFilter();
     * ```
     * @param name
     * @memberof IgxGridComponent
     */
    clearFilter(name?: string): void;
    /**
     * If name is provided, clears the sorting state of the corresponding `IgxColumnComponent`,
     * otherwise clears the sorting state of all `IgxColumnComponent`.
     * ```typescript
     * this.grid.clearSort();
     * ```
     * @param name
     * @memberof IgxGridComponent
     */
    clearSort(name?: string): void;
    /**
     * @hidden
     */
    clearSummaryCache(editCell?: any): void;
    /**
     * Pins a column by field name. Returns whether the operation is successful.
     * ```typescript
     * this.grid.pinColumn("ID");
     * ```
     * @param columnName
     * @param index
     * @memberof IgxGridComponent
     */
    pinColumn(columnName: string | IgxColumnComponent, index?: any): boolean;
    /**
     * Unpins a column by field name. Returns whether the operation is successful.
     * ```typescript
     * this.grid.pinColumn("ID");
     * ```
     * @param columnName
     * @param index
     * @memberof IgxGridComponent
     */
    unpinColumn(columnName: string | IgxColumnComponent, index?: any): boolean;
    /**
     * Toggles the expansion state of all group rows recursively.
     * ```typescript
     * this.grid.toggleAllGroupRows;
     * ```
     * @memberof IgxGridComponent
     */
    toggleAllGroupRows(): void;
    /**
     * Recalculates grid width/height dimensions. Should be run when changing DOM elements dimentions manually that affect the grid's size.
     * ```typescript
     * this.grid.reflow();
     * ```
     * @memberof IgxGridComponent
     */
    reflow(): void;
    /**
     * Recalculates grid summary area.
     * Should be run for example when enabling or disabling summaries for a column.
     * ```typescript
     * this.grid.recalculateSummaries();
     * ```
     * @memberof IgxGridComponent
     */
    recalculateSummaries(): void;
    /**
     * Finds the next occurrence of a given string in the grid and scrolls to the cell if it isn't visible.
     * Returns how many times the grid contains the string.
     * ```typescript
     * this.grid.findNext("financial");
     * ```
     * @param text the string to search.
     * @param caseSensitive optionally, if the search should be case sensitive (defaults to false).
     * @memberof IgxGridComponent
     */
    findNext(text: string, caseSensitive?: boolean): number;
    /**
     * Finds the previous occurrence of a given string in the grid and scrolls to the cell if it isn't visible.
     * Returns how many times the grid contains the string.
     * ```typescript
     * this.grid.findPrev("financial");
     * ````
     * @param text the string to search.
     * @param caseSensitive optionally, if the search should be case sensitive (defaults to false).
     * @memberof IgxGridComponent
     */
    findPrev(text: string, caseSensitive?: boolean): number;
    /**
     * Reapplies the existing search.
     * Returns how many times the grid contains the last search.
     * ```typescript
     * this.grid.refreshSearch();
     * ```
     * @param updateActiveInfo
     * @memberof IgxGridComponent
     */
    refreshSearch(updateActiveInfo?: boolean): number;
    /**
     * Removes all the highlights in the cell.
     * ```typescript
     * this.grid.clearSearch();
     * ```
     * @memberof IgxGridComponent
     */
    clearSearch(): void;
    /**
     * Returns if the `IgxGridComponent` has groupable columns.
     * ```typescript
     * const groupableGrid = this.grid.hasGroupableColumns;
     * ```
     * @memberof IgxGridComponent
     */
    readonly hasGroupableColumns: boolean;
    /**
     * Returns if the `IgxGridComponent` has sortable columns.
     * ```typescript
     * const sortableGrid = this.grid.hasSortableColumns;
     * ```
     * @memberof IgxGridComponent
     */
    readonly hasSortableColumns: boolean;
    /**
     * Returns if the `IgxGridComponent` has editable columns.
     * ```typescript
     * const editableGrid = this.grid.hasEditableColumns;
     * ```
     * @memberof IgxGridComponent
     */
    readonly hasEditableColumns: boolean;
    /**
     * Returns if the `IgxGridComponent` has fiterable columns.
     * ```typescript
     * const filterableGrid = this.grid.hasFilterableColumns;
     * ```
     * @memberof IgxGridComponent
     */
    readonly hasFilterableColumns: boolean;
    /**
     * Returns if the `IgxGridComponent` has summarized columns.
     * ```typescript
     * const summarizedGrid = this.grid.hasSummarizedColumns;
     * ```
     * @memberof IgxGridComponent
     */
    readonly hasSummarizedColumns: boolean;
    /**
     * Returns if the `IgxGridComponent` has moveable columns.
     * ```typescript
     * const movableGrid = this.grid.hasMovableColumns;
     * ```
     * @memberof IgxGridComponent
     */
    readonly hasMovableColumns: boolean;
    /**
     * Returns if the `IgxGridComponent` has column groups.
     * ```typescript
     * const groupGrid = this.grid.hasColumnGroups;
     * ```
     * @memberof IgxGridComponent
     */
    readonly hasColumnGroups: boolean;
    /**
     * Returns an array of the selected `IgxGridCellComponent`s.
     * ```typescript
     * const selectedCells = this.grid.selectedCells;
     * ```
     * @memberof IgxGridComponent
     */
    readonly selectedCells: IgxGridCellComponent[] | any[];
    /**
     * @hidden
     */
    protected readonly rowBasedHeight: number;
    /**
     * @hidden
     */
    protected _derivePossibleHeight(): void;
    /**
     * @hidden
     */
    protected _derivePossibleWidth(): void;
    /**
     * @hidden
     */
    private readonly defaultTargetBodyHeight;
    /**
     * @hidden
     */
    protected calculateGridHeight(): void;
    /**
     * @hidden
     */
    protected _calculateGridBodyHeight(gridHeight: number, toolbarHeight: number, pagingHeight: number, groupAreaHeight: number): number;
    /**
     * @hidden
     */
    protected getPossibleColumnWidth(): string;
    /**
     * @hidden
     */
    protected calculateGridWidth(): void;
    /**
     * @hidden
     */
    protected calcMaxSummaryHeight(): number;
    /**
     * @hidden
     */
    protected calculateGridSizes(): void;
    /**
     * Gets calculated width of the pinned area.
     * ```typescript
     * const pinnedWidth = this.grid.getPinnedWidth();
     * ```
     * @param takeHidden If we should take into account the hidden columns in the pinned area.
     * @memberof IgxGridComponent
     */
    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.
     * @memberof IgxGridComponent
     */
    protected getUnpinnedWidth(takeHidden?: boolean): number;
    /**
     * @hidden
     */
    protected _sort(expression: ISortingExpression): void;
    /**
     * @hidden
     */
    protected _sortMultiple(expressions: ISortingExpression[]): void;
    /**
     * @hidden
     */
    protected _groupBy(expression: ISortingExpression): void;
    /**
     * @hidden
     */
    protected _groupByMultiple(expressions: ISortingExpression[]): void;
    /**
     * @hidden
     */
    protected _getStateForGroupRow(groupRow: IGroupByRecord): IGroupByExpandState;
    /**
     * @hidden
     */
    protected _toggleGroup(groupRow: IGroupByRecord): void;
    /**
     * @hidden
     */
    protected _applyGrouping(): void;
    /**
     * @hidden
     */
    protected _summaries(fieldName: string, hasSummary: boolean, summaryOperand?: any): void;
    /**
     * @hidden
     */
    protected _multipleSummaries(expressions: ISummaryExpression[], hasSummary: boolean): void;
    /**
     * @hidden
     */
    protected _disableMultipleSummaries(expressions: string[], hasSummary: boolean): void;
    /**
     * @hidden
     */
    protected resolveDataTypes(rec: any): DataType;
    /**
     * @hidden
     */
    protected autogenerateColumns(): void;
    /**
     * @hidden
     */
    onlyTopLevel(arr: any): any;
    /**
     * @hidden
     */
    protected initColumns(collection: QueryList<IgxColumnComponent>, cb?: any): void;
    /**
     * @hidden
     */
    protected reinitPinStates(): void;
    /**
     * @hidden
     */
    protected setEventBusSubscription(): void;
    /**
     * @hidden
     */
    protected setVerticalScrollSubscription(): void;
    /**
     * @hidden
     */
    onHeaderCheckboxClick(event: any): void;
    /**
     * @hidden
     */
    readonly headerCheckboxAriaLabel: string;
    readonly template: TemplateRef<any>;
    /**
    * @hidden
    */
    getContext(rowData: any): any;
    /**
     * @hidden
     */
    readonly dropAreaTemplateResolved: TemplateRef<any>;
    /**
     * @hidden
     */
    checkHeaderCheckboxStatus(headerStatus?: boolean): void;
    /**
     * @hidden
     */
    filteredItemsStatus(componentID: string, filteredData: any[], primaryKey?: any): "indeterminate" | "allSelected" | "noneSelected";
    /**
     * @hidden
     */
    updateHeaderCheckboxStatusOnFilter(data: any): void;
    /**
     * Get current selection state.
     * Returns an array with selected rows' IDs (primaryKey or rowData)
     * ```typescript
     * const selectedRows = this.grid.selectedRows();
     * ```
     * @memberof IgxGridComponent
     */
    selectedRows(): any[];
    /**
     * Select specified rows by ID.
     * ```typescript
     * this.grid.selectRows([1,2,5], true);
     * ```
     * @param rowIDs
     * @param clearCurrentSelection if true clears the curren selection
     * @memberof IgxGridComponent
     */
    selectRows(rowIDs: any[], clearCurrentSelection?: boolean): void;
    /**
     * Deselect specified rows by ID.
     * ```typescript
     * this.grid.deselectRows([1,2,5]);
     * ```
     * @param rowIDs
     * @memberof IgxGridComponent
     */
    deselectRows(rowIDs: any[]): void;
    /**
     * Selects all rows
     * Note: If filtering is in place, selectAllRows() and deselectAllRows() select/deselect all filtered rows.
     * ```typescript
     * this.grid.selectAllRows();
     * ```
     * @memberof IgxGridComponent
     */
    selectAllRows(): void;
    /**
     * Deselects all rows
     * ```typescript
     * this.grid.deselectAllRows();
     * ```
     * Note: If filtering is in place, selectAllRows() and deselectAllRows() select/deselect all filtered rows.
     */
    deselectAllRows(): void;
    /**
     * @hidden
     */
    triggerRowSelectionChange(newSelectionAsSet: Set<any>, row?: IgxGridRowComponent, event?: Event, headerStatus?: boolean): void;
    /**
     * @hidden
     */
    navigateDown(rowIndex: number, columnIndex: number, event?: any): void;
    /**
     * @hidden
     */
    navigateUp(rowIndex: number, columnIndex: number, event?: any): void;
    /**
     * @hidden
     */
    scrollHandler(event: any): void;
    private _focusNextCell(rowIndex, columnIndex, dir?, event?);
    private subscribeNext(virtualContainer, callback);
    private performVerticalScroll(amount, rowIndex, columnIndex, event?);
    /**
     * @hidden
     */
    trackColumnChanges(index: any, col: any): any;
    private find(text, increment, caseSensitive?, scroll?);
    /**
     * Returns an array containing the filtered data.
     * ```typescript
     * const filteredData = this.grid1.filteredSortedData;
     * ```
     * @memberof IgxGridComponent
     */
    readonly filteredSortedData: any[];
    /**
     * @hidden
     */
    protected initPinning(): void;
    private scrollTo(row, column, page, groupByRecord?);
    private scrollDirective(directive, goal);
    private rebuildMatchCache();
    private getGroupIncrementData();
    private getLevelIncrement(currentIncrement, currentHierarchy, prevHierarchy);
    private getGroupByRecords();
    private getPagingIncrement(groupByIncrement, groupIndexData, page);
    private restoreHighlight();
    private checkIfGridIsAdded(node);
    /**
     * @hidden
     */
    notGroups(arr: any): any;
    /**
     * @hidden
     */
    onChipRemoved(event: any): void;
    /**
     * @hidden
     */
    chipsOrderChanged(event: any): void;
    /**
     * @hidden
     */
    chipsMovingEnded(): void;
    /**
     * @hidden
     */
    onChipClicked(event: any): void;
    /**
     * @hidden
     */
    onChipKeyDown(event: any): void;
    /**
     * @hidden
     */
    onKeydownPageDown(event: any): void;
    /**
     * @hidden
     */
    onKeydownPageUp(event: any): void;
}
