import { AfterContentInit, AfterViewInit, ChangeDetectorRef, DoCheck, ElementRef, EnvironmentInjector, EventEmitter, Injector, IterableDiffers, NgZone, OnDestroy, OnInit, QueryList, TemplateRef, ViewContainerRef } from '@angular/core';
import { Subject } from 'rxjs';
import { PlatformUtil } from '../core/utils';
import { FilteringLogic } from '../data-operations/filtering-expression.interface';
import { IGroupByRecord } from '../data-operations/groupby-record.interface';
import { IForOfDataChangingEventArgs, IgxGridForOfDirective } from '../directives/for-of/for_of.directive';
import { IgxTextHighlightService } from '../directives/text-highlight/text-highlight.service';
import { ISummaryExpression } from './summaries/grid-summary';
import type { IgxGridToolbarComponent } from './toolbar/grid-toolbar.component';
import { IgxRowDirective } from './row.directive';
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/public_api';
import { IgxRowEditTabStopDirective } from './grid.rowEdit.directive';
import { IgxGridNavigationService } from './grid-navigation.service';
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 } from './selection/selection.service';
import { ICachedViewLoadedEventArgs } from '../directives/template-outlet/template_outlet.directive';
import { IgxExcelStyleLoadingValuesTemplateDirective } from './filtering/excel-style/excel-style-search.component';
import { IgxGridColumnResizerComponent } from './resizing/resizer.component';
import { IgxColumnResizingService } from './resizing/resizing.service';
import { IFilteringStrategy } from '../data-operations/filtering-strategy';
import { GridSelectionMode, GridSummaryPosition, GridSummaryCalculationMode, FilterMode, GridPagingMode, GridValidationTrigger, Size } from './common/enums';
import { IGridCellEventArgs, IRowSelectionEventArgs, IPinColumnEventArgs, IRowDataEventArgs, IColumnResizeEventArgs, IColumnMovingStartEventArgs, IColumnMovingEventArgs, IColumnMovingEndEventArgs, IGridKeydownEventArgs, IRowDragStartEventArgs, IRowDragEndEventArgs, IGridClipboardEvent, IGridToolbarExportEventArgs, ISearchInfo, ICellPosition, IRowToggleEventArgs, IColumnSelectionEventArgs, IPinRowEventArgs, IGridScrollEventArgs, IActiveNodeChangeEventArgs, ISortingEventArgs, IFilteringEventArgs, IColumnVisibilityChangedEventArgs, IColumnVisibilityChangingEventArgs, IPinColumnCancellableEventArgs, IGridEditEventArgs, IRowDataCancelableEventArgs, IGridEditDoneEventArgs, IGridRowEventArgs, IGridContextMenuEventArgs, IColumnsAutoGeneratedEventArgs } from './common/events';
import { ColumnType, GridServiceType, GridType, IGridFormGroupCreatedEventArgs, IGridValidationStatusEventArgs, IgxGridEmptyTemplateContext, IgxGridHeaderTemplateContext, IgxGridRowDragGhostContext, IgxGridRowEditActionsTemplateContext, IgxGridRowEditTemplateContext, IgxGridRowEditTextTemplateContext, IgxGridRowTemplateContext, IgxGridTemplateContext, IgxHeadSelectorTemplateContext, IgxRowSelectorTemplateContext, ISizeInfo, RowType, IPinningConfig, IClipboardOptions } from './common/grid.interface';
import { DropPosition } from './moving/moving.service';
import { IgxColumnComponent } from './columns/column.component';
import { IgxSnackbarComponent } from '../snackbar/snackbar.component';
import { IgxActionStripToken } from '../action-strip/token';
import { IgxGridRowComponent } from './grid/grid-row.component';
import type { IgxPaginatorComponent } from '../paginator/paginator.component';
import { IgxGridHeaderRowComponent } from './headers/grid-header-row.component';
import { IgxGridGroupByAreaComponent } from './grouping/grid-group-by-area.component';
import { IgxFlatTransactionFactory } from '../services/transaction/transaction-factory.service';
import { ISortingOptions } from './columns/interfaces';
import { GridSelectionRange } from './common/types';
import { OverlaySettings } from '../services/overlay/utilities';
import { IgxOverlayService } from '../services/overlay/overlay';
import { StateUpdateEvent } from '../services/transaction/transaction';
import { ISortingExpression } from '../data-operations/sorting-strategy';
import { IGridSortingStrategy } from './common/strategy';
import { IgxGridExcelStyleFilteringComponent } from './filtering/excel-style/excel-style-filtering.component';
import { IgxGridHeaderComponent } from './headers/grid-header.component';
import { IgxGridFilteringRowComponent } from './filtering/base/grid-filtering-row.component';
import { IDataCloneStrategy } from '../data-operations/data-clone-strategy';
import { IgxGridValidationService } from './grid/grid-validation.service';
import * as i0 from "@angular/core";
export declare abstract class IgxGridBaseDirective implements GridType, OnInit, DoCheck, OnDestroy, AfterContentInit, AfterViewInit {
    readonly validation: IgxGridValidationService;
    /** @hidden @internal */
    readonly selectionService: IgxGridSelectionService;
    protected colResizingService: IgxColumnResizingService;
    readonly gridAPI: GridServiceType;
    protected transactionFactory: IgxFlatTransactionFactory;
    private elementRef;
    protected zone: NgZone;
    /** @hidden @internal */
    document: any;
    readonly cdr: ChangeDetectorRef;
    protected differs: IterableDiffers;
    protected viewRef: ViewContainerRef;
    protected injector: Injector;
    protected envInjector: EnvironmentInjector;
    navigation: IgxGridNavigationService;
    /** @hidden @internal */
    filteringService: IgxFilteringService;
    protected textHighlightService: IgxTextHighlightService;
    protected overlayService: IgxOverlayService;
    /** @hidden @internal */
    summaryService: IgxGridSummaryService;
    private localeId;
    protected platform: PlatformUtil;
    protected _diTransactions?: TransactionService<Transaction, State>;
    /**
     * Gets/Sets the display time for the row adding snackbar notification.
     *
     * @remarks
     * By default it is 6000ms.
     */
    snackbarDisplayTime: number;
    /**
     * Gets/Sets whether to auto-generate 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;
    /**
     * Gets/Sets a list of property keys to be excluded from the generated column collection
     * @remarks
     * The collection is only used during initialization and changing it will not cause any changes in the generated columns at runtime
     * unless the grid is destroyed and recreated. To modify the columns visible in the UI at runtime, please use their
     * [hidden](https://www.infragistics.com/products/ignite-ui-angular/docs/typescript/latest/classes/IgxColumnComponent.html#hidden) property.
     * @example
     * ```html
     * <igx-grid data=[Data] [autoGenerate]="true" [autoGenerateExclude]="['ProductName', 'Count']"></igx-grid>
     * ```
     * ```typescript
     * const Data = [{ 'Id': '1', 'ProductName': 'name1', 'Description': 'description1', 'Count': 5 }]
     * ```
     */
    autoGenerateExclude: string[];
    /**
     * Controls whether columns moving is enabled in the grid.
     *
     */
    moving: boolean;
    /**
     * 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<void>;
    /**
     * Gets/Sets a custom template for adding row UI when grid is empty.
     *
     * @example
     * ```html
     * <igx-grid [id]="'igx-grid-1'" [data]="Data" [addRowEmptyTemplate]="myTemplate" [autoGenerate]="true"></igx-grid>
     * ```
     */
    addRowEmptyTemplate: TemplateRef<void>;
    /**
     * 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<void>;
    /**
     * Get/Set IgxSummaryRow height
     */
    set summaryRowHeight(value: number);
    get summaryRowHeight(): number;
    /** @hidden @internal */
    get hasColumnsToAutosize(): boolean;
    /**
     * Gets/Sets the data clone strategy of the grid when in edit mode.
     *
     * @example
     * ```html
     *  <igx-grid #grid [data]="localData" [dataCloneStrategy]="customCloneStrategy"></igx-grid>
     * ```
     */
    get dataCloneStrategy(): IDataCloneStrategy;
    set dataCloneStrategy(strategy: IDataCloneStrategy);
    /**
     * Controls the copy behavior of the grid.
     */
    clipboardOptions: IClipboardOptions;
    /**
     * 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>;
    /**
     * Emitted when grid is scrolled horizontally/vertically.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true"
     *              (gridScroll)="onScroll($event)"></igx-grid>
     * ```
     */
    gridScroll: EventEmitter<IGridScrollEventArgs>;
    /**
     * Sets a conditional class selector to the grid's row element.
     * Accepts an object literal, containing key-value pairs,
     * where the key is the name of the CSS class and the value is
     * either a callback function that returns a boolean, or boolean, like so:
     * ```typescript
     * callback = (row: RowType) => { return row.selected > 6; }
     * rowClasses = { 'className' : this.callback };
     * ```
     * ```html
     * <igx-grid #grid [data]="Data" [rowClasses] = "rowClasses" [autoGenerate]="true"></igx-grid>
     * ```
     *
     * @memberof IgxColumnComponent
     */
    rowClasses: any;
    /**
     * Sets conditional style properties on the grid row element.
     * It accepts an object literal where the keys are
     * the style properties and the value is an expression to be evaluated.
     * ```typescript
     * styles = {
     *  background: 'yellow',
     *  color: (row: RowType) => row.selected : 'red': 'white'
     * }
     * ```
     * ```html
     * <igx-grid #grid [data]="Data" [rowStyles]="styles" [autoGenerate]="true"></igx-grid>
     * ```
     *
     * @memberof IgxColumnComponent
     */
    rowStyles: any;
    /**
     * Gets/Sets the primary key.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [primaryKey]="'ProductID'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get primaryKey(): string;
    set primaryKey(value: string);
    /**
     * 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: ColumnType, filteringExpressionsTree: IFilteringExpressionsTree, done: (values: any[]) => void) => void;
    /** @hidden @internal */
    excelStyleFilteringComponents: QueryList<IgxGridExcelStyleFilteringComponent>;
    /** @hidden @internal */
    get excelStyleFilteringComponent(): IgxGridExcelStyleFilteringComponent;
    /** @hidden @internal */
    get headerGroups(): IgxGridHeaderGroupComponent[];
    /**
     * Emitted when a cell is clicked.
     *
     * @remarks
     * Returns the `IgxGridCell`.
     * @example
     * ```html
     * <igx-grid #grid (cellClick)="cellClick($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    cellClick: EventEmitter<IGridCellEventArgs>;
    /**
     * Emitted when a row is clicked.
     *
     * @remarks
     * Returns the `IgxGridRow`.
     * @example
     * ```html
     * <igx-grid #grid (rowClick)="rowClick($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowClick: EventEmitter<IGridRowEventArgs>;
    /**
     * Emitted when formGroup is created on edit of row/cell.
     *
     * @example
     * ```html
     * <igx-grid #grid (formGroupCreated)="formGroupCreated($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    formGroupCreated: EventEmitter<IGridFormGroupCreatedEventArgs>;
    /**
     * Emitted when grid's validation status changes.
     *
     * @example
     * ```html
     * <igx-grid #grid (validationStatusChange)="validationStatusChange($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    validationStatusChange: EventEmitter<IGridValidationStatusEventArgs>;
    /**
     * Emitted when a cell is selected.
     *
     * @remarks
     *  Returns the `IgxGridCell`.
     * @example
     * ```html
     * <igx-grid #grid (selected)="onCellSelect($event)" [data]="localData" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    selected: EventEmitter<IGridCellEventArgs>;
    /**
     *  Emitted when `IgxGridRowComponent` is selected.
     *
     * @example
     * ```html
     * <igx-grid #grid (rowSelectionChanging)="rowSelectionChanging($event)" [data]="localData" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowSelectionChanging: EventEmitter<IRowSelectionEventArgs>;
    /**
     *  Emitted when `IgxColumnComponent` is selected.
     *
     * @example
     * ```html
     * <igx-grid #grid (columnSelectionChanging)="columnSelectionChanging($event)" [data]="localData" [autoGenerate]="true"></igx-grid>
     * ```
     */
    columnSelectionChanging: EventEmitter<IColumnSelectionEventArgs>;
    /**
     * Emitted before `IgxColumnComponent` is pinned.
     *
     * @remarks
     * The index at which to insert the column may be changed through the `insertAtIndex` property.
     * @example
     * ```typescript
     * public columnPinning(event) {
     *     if (event.column.field === "Name") {
     *       event.insertAtIndex = 0;
     *     }
     * }
     * ```
     */
    columnPin: EventEmitter<IPinColumnCancellableEventArgs>;
    /**
     * Emitted after `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;
     *     }
     * }
     * ```
     */
    columnPinned: EventEmitter<IPinColumnEventArgs>;
    /**
     * Emitted when cell enters edit mode.
     *
     * @remarks
     * This event is cancelable.
     * @example
     * ```html
     * <igx-grid #grid3 (cellEditEnter)="editStart($event)" [data]="data" [primaryKey]="'ProductID'">
     * </igx-grid>
     * ```
     */
    cellEditEnter: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted when cell exits edit mode.
     *
     * @example
     * ```html
     * <igx-grid #grid3 (cellEditExit)="editExit($event)" [data]="data" [primaryKey]="'ProductID'">
     * </igx-grid>
     * ```
     */
    cellEditExit: EventEmitter<IGridEditDoneEventArgs>;
    /**
     * 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 (cellEdit)="editDone($event)" [data]="data" [primaryKey]="'ProductID'">
     * </igx-grid>
     * ```
     */
    cellEdit: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted after cell has been edited and editing has been committed.
     *
     * @example
     * ```html
     * <igx-grid #grid3 (cellEditDone)="editDone($event)" [data]="data" [primaryKey]="'ProductID'">
     * </igx-grid>
     * ```
     */
    cellEditDone: EventEmitter<IGridEditDoneEventArgs>;
    /**
     * Emitted when a row enters edit mode.
     *
     * @remarks
     * Emitted when [rowEditable]="true".
     * This event is cancelable.
     * @example
     * ```html
     * <igx-grid #grid3 (rowEditEnter)="editStart($event)" [primaryKey]="'ProductID'" [rowEditable]="true">
     * </igx-grid>
     * ```
     */
    rowEditEnter: 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 (rowEdit)="editDone($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
     * </igx-grid>
     * ```
     */
    rowEdit: EventEmitter<IGridEditEventArgs>;
    /**
     * Emitted after exiting edit mode for a row and editing has been committed.
     *
     * @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.
     * @example
     * ```html
     * <igx-grid #grid3 (rowEditDone)="editDone($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
     * </igx-grid>
     * ```
     */
    rowEditDone: EventEmitter<IGridEditDoneEventArgs>;
    /**
     * 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.
     * @example
     * ```html
     * <igx-grid #grid3 (rowEditExit)="editExit($event)" [data]="data" [primaryKey]="'ProductID'" [rowEditable]="true">
     * </igx-grid>
     * ```
     */
    rowEditExit: EventEmitter<IGridEditDoneEventArgs>;
    /**
     * Emitted when a column is initialized.
     *
     * @remarks
     * Returns the column object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (columnInit)="initColumns($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    columnInit: EventEmitter<IgxColumnComponent>;
    /**
     * @hidden @internal
     */
    columnsAutogenerated: EventEmitter<IColumnsAutoGeneratedEventArgs>;
    /**
     * Emitted before sorting expressions are applied.
     *
     * @remarks
     * Returns an `ISortingEventArgs` object. `sortingExpressions` key holds the sorting expressions.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [autoGenerate]="true" (sorting)="sorting($event)"></igx-grid>
     * ```
     */
    sorting: EventEmitter<ISortingEventArgs>;
    /**
     * Emitted after sorting is completed.
     *
     * @remarks
     * Returns the sorting expression.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [autoGenerate]="true" (sortingDone)="sortingDone($event)"></igx-grid>
     * ```
     */
    sortingDone: EventEmitter<ISortingExpression<any> | ISortingExpression<any>[]>;
    /**
     * Emitted before filtering expressions are applied.
     *
     * @remarks
     * Returns an `IFilteringEventArgs` object. `filteringExpressions` key holds the filtering expressions for the column.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [height]="'305px'" [autoGenerate]="true" (filtering)="filtering($event)"></igx-grid>
     * ```
     */
    filtering: EventEmitter<IFilteringEventArgs>;
    /**
     * Emitted after 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" (filteringDone)="filteringDone($event)"></igx-grid>
     * ```
     */
    filteringDone: EventEmitter<IFilteringExpressionsTree>;
    /**
     * Emitted when a row is added.
     *
     * @remarks
     * Returns the data for the new `IgxGridRowComponent` object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (rowAdded)="rowAdded($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowAdded: EventEmitter<IRowDataEventArgs>;
    /**
     * Emitted when a row is deleted.
     *
     * @remarks
     * Returns an `IRowDataEventArgs` object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (rowDeleted)="rowDeleted($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowDeleted: EventEmitter<IRowDataEventArgs>;
    /**
     * Emmited when deleting a row.
     *
     * @remarks
     * This event is cancelable.
     * Returns an IRowDataCancellableEventArgs` object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (rowDelete)="rowDelete($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowDelete: EventEmitter<IRowDataCancelableEventArgs>;
    /**
     * Emmited just before the newly added row is commited.
     *
     * @remarks
     * This event is cancelable.
     * Returns an IRowDataCancellableEventArgs` object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (rowAdd)="rowAdd($event)" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowAdd: EventEmitter<IRowDataCancelableEventArgs>;
    /**
     * Emitted after column is resized.
     *
     * @remarks
     * Returns the `IgxColumnComponent` object's old and new width.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (columnResized)="resizing($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    columnResized: EventEmitter<IColumnResizeEventArgs>;
    /**
     * Emitted when a cell or row is right clicked.
     *
     * @remarks
     * Returns the `IgxGridCell` object if the immediate context menu target is a cell or an `IgxGridRow` otherwise.
     * ```html
     * <igx-grid #grid [data]="localData" (contextMenu)="contextMenu($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    contextMenu: EventEmitter<IGridContextMenuEventArgs>;
    /**
     * Emitted when a cell is double clicked.
     *
     * @remarks
     * Returns the `IgxGridCell` object.
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" (doubleClick)="dblClick($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    doubleClick: EventEmitter<IGridCellEventArgs>;
    /**
     * Emitted before column visibility is changed.
     *
     * @remarks
     * Args: { column: any, newValue: boolean }
     * @example
     * ```html
     * <igx-grid (columnVisibilityChanging)="visibilityChanging($event)"></igx-grid>
     * ```
     */
    columnVisibilityChanging: EventEmitter<IColumnVisibilityChangingEventArgs>;
    /**
     * Emitted after column visibility is changed.
     *
     * @remarks
     * Args: { column: IgxColumnComponent, newValue: boolean }
     * @example
     * ```html
     * <igx-grid (columnVisibilityChanged)="visibilityChanged($event)"></igx-grid>
     * ```
     */
    columnVisibilityChanged: EventEmitter<IColumnVisibilityChangedEventArgs>;
    /**
     * Emitted when column moving starts.
     *
     * @remarks
     * Returns the moved `IgxColumnComponent` object.
     * @example
     * ```html
     * <igx-grid (columnMovingStart)="movingStart($event)"></igx-grid>
     * ```
     */
    columnMovingStart: EventEmitter<IColumnMovingStartEventArgs>;
    /**
     * Emitted during the column moving operation.
     *
     * @remarks
     * Returns the source and target `IgxColumnComponent` objects. This event is cancelable.
     * @example
     * ```html
     * <igx-grid (columnMoving)="moving($event)"></igx-grid>
     * ```
     */
    columnMoving: EventEmitter<IColumnMovingEventArgs>;
    /**
     * Emitted when column moving ends.
     *
     * @remarks
     * Returns the source and target `IgxColumnComponent` objects.
     * @example
     * ```html
     * <igx-grid (columnMovingEnd)="movingEnds($event)"></igx-grid>
     * ```
     */
    columnMovingEnd: 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 (gridKeydown)="customKeydown($event)"></igx-grid>
     * ```
     */
    gridKeydown: EventEmitter<IGridKeydownEventArgs>;
    /**
     * Emitted when start dragging a row.
     *
     * @remarks
     * Return the dragged row.
     */
    rowDragStart: EventEmitter<IRowDragStartEventArgs>;
    /**
     * Emitted when dropping a row.
     *
     * @remarks
     * Return the dropped row.
     */
    rowDragEnd: EventEmitter<IRowDragEndEventArgs>;
    /**
     * Emitted when a copy operation is executed.
     *
     * @remarks
     * Fired only if copy behavior is enabled through the [`clipboardOptions`]{@link IgxGridBaseDirective#clipboardOptions}.
     */
    gridCopy: EventEmitter<IGridClipboardEvent>;
    /**
     * @hidden @internal
     */
    expansionStatesChange: EventEmitter<Map<any, boolean>>;
    /** @hidden @internal */
    selectedRowsChange: EventEmitter<any[]>;
    /**
     * Emitted when the expanded state of a row gets changed.
     *
     * @example
     * ```html
     * <igx-grid [data]="employeeData" (rowToggle)="rowToggle($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowToggle: EventEmitter<IRowToggleEventArgs>;
    /**
     * Emitted when the pinned state of a row is changed.
     *
     * @example
     * ```html
     * <igx-grid [data]="employeeData" (rowPinning)="rowPin($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowPinning: EventEmitter<IPinRowEventArgs>;
    /**
     * Emitted when the pinned state of a row is changed.
     *
     * @example
     * ```html
     * <igx-grid [data]="employeeData" (rowPinned)="rowPin($event)" [autoGenerate]="true"></igx-grid>
     * ```
     */
    rowPinned: EventEmitter<IPinRowEventArgs>;
    /**
     * Emmited when the active node is changed.
     *
     * @example
     * ```
     * <igx-grid [data]="data" [autoGenerate]="true" (activeNodeChange)="activeNodeChange($event)"></igx-grid>
     * ```
     */
    activeNodeChange: EventEmitter<IActiveNodeChangeEventArgs>;
    /**
     * 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<any>[]>;
    /**
     * Emitted when an export process is initiated by the user.
     *
     * @example
     * ```typescript
     * toolbarExporting(event: IGridToolbarExportEventArgs){
     *     const toolbarExporting = event;
     * }
     * ```
     */
    toolbarExporting: EventEmitter<IGridToolbarExportEventArgs>;
    /**
     * Emitted when making a range selection.
     *
     * @remarks
     * Range selection can be made either through drag selection or through keyboard selection.
     */
    rangeSelected: EventEmitter<GridSelectionRange>;
    /** Emitted after the ngAfterViewInit hook. At this point the grid exists in the DOM */
    rendered: EventEmitter<boolean>;
    /**
     * @hidden @internal
     */
    localeChange: EventEmitter<boolean>;
    /**
     * Emitted before the grid's data view is changed because of a data operation, rebinding, etc.
     *
     * @example
     * ```typescript
     *  <igx-grid #grid [data]="localData" [autoGenerate]="true" (dataChanging)='handleDataChangingEvent()'></igx-grid>
     * ```
     */
    dataChanging: EventEmitter<IForOfDataChangingEventArgs>;
    /**
     * Emitted after the grid's data view is changed because of a data operation, rebinding, etc.
     *
     * @example
     * ```typescript
     *  <igx-grid #grid [data]="localData" [autoGenerate]="true" (dataChanged)='handleDataChangedEvent()'></igx-grid>
     * ```
     */
    dataChanged: EventEmitter<any>;
    /**
     * @hidden @internal
     */
    addRowSnackbar: IgxSnackbarComponent;
    /**
     * @hidden @internal
     */
    resizeLine: IgxGridColumnResizerComponent;
    /**
     * @hidden @internal
     */
    loadingOverlay: IgxToggleDirective;
    /**
     * @hidden @internal
     */
    loadingOutlet: IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     */
    columnList: QueryList<IgxColumnComponent>;
    /** @hidden @internal */
    protected actionStripComponents: QueryList<IgxActionStripToken>;
    /** @hidden @internal */
    get actionStrip(): IgxActionStripToken;
    /**
     * @hidden @internal
     */
    excelStyleLoadingValuesTemplateDirective: IgxExcelStyleLoadingValuesTemplateDirective;
    /** @hidden @internal */
    emptyFilteredGridTemplate: TemplateRef<any>;
    /** @hidden @internal */
    emptyGridDefaultTemplate: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    loadingGridDefaultTemplate: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    parentVirtDir: IgxGridForOfDirective<any, any[]>;
    /**
     * @hidden
     * @internal
     */
    headSelectorsTemplates: QueryList<TemplateRef<IgxHeadSelectorTemplateContext>>;
    /**
     * @hidden
     * @internal
     */
    rowSelectorsTemplates: QueryList<TemplateRef<IgxRowSelectorTemplateContext>>;
    /**
     * @hidden
     * @internal
     */
    dragGhostCustomTemplates: QueryList<TemplateRef<IgxGridRowDragGhostContext>>;
    /**
     * Gets the custom template, if any, used for row drag ghost.
     */
    get dragGhostCustomTemplate(): TemplateRef<IgxGridRowDragGhostContext>;
    /**
     * Sets a custom template for the row drag ghost.
     *```html
     * <ng-template #template igxRowDragGhost>
     *    <igx-icon>menu</igx-icon>
     * </ng-template>
     * ```
     * ```typescript
     * @ViewChild("'template'", {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.dragGhostCustomTemplate = this.template;
     * ```
     */
    set dragGhostCustomTemplate(template: TemplateRef<IgxGridRowDragGhostContext>);
    /**
     * @hidden @internal
     */
    verticalScrollContainer: IgxGridForOfDirective<any, any[]>;
    /**
     * @hidden @internal
     */
    verticalScroll: IgxGridForOfDirective<any, any[]>;
    /**
     * @hidden @internal
     */
    scr: ElementRef;
    /** @hidden @internal */
    headerSelectorBaseTemplate: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    footer: ElementRef;
    /** @hidden @internal */
    get headerContainer(): IgxGridForOfDirective<ColumnType, ColumnType[]>;
    /** @hidden @internal */
    get headerSelectorContainer(): ElementRef<HTMLElement>;
    /** @hidden @internal */
    get headerDragContainer(): ElementRef<HTMLElement>;
    /** @hidden @internal */
    get headerGroupContainer(): ElementRef<HTMLElement>;
    /** @hidden @internal */
    get filteringRow(): IgxGridFilteringRowComponent;
    /** @hidden @internal */
    theadRow: IgxGridHeaderRowComponent;
    /** @hidden @internal */
    groupArea: IgxGridGroupByAreaComponent;
    /**
     * @hidden @internal
     */
    tbody: ElementRef;
    protected tbodyContainer: ElementRef;
    /**
     * @hidden @internal
     */
    pinContainer: ElementRef;
    /**
     * @hidden @internal
     */
    tfoot: ElementRef<HTMLElement>;
    /**
     * @hidden @internal
     */
    rowEditingOutletDirective: IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     */
    tmpOutlets: QueryList<any>;
    /**
     * @hidden
     * @internal
     */
    dragIndicatorIconBase: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    rowEditCustomDirectives: QueryList<TemplateRef<IgxGridRowEditTemplateContext>>;
    /**
     * @hidden @internal
     */
    rowEditTextDirectives: QueryList<TemplateRef<IgxGridRowEditTextTemplateContext>>;
    /**
     * Gets the row edit text template.
     */
    get rowEditTextTemplate(): TemplateRef<IgxGridRowEditTextTemplateContext>;
    /**
     * Sets the row edit text template.
     *```html
     * <ng-template #template igxRowEditText let-rowChangesCount>
     * Changes: {{rowChangesCount}}
     * </ng-template>
     * ```
     *```typescript
     * @ViewChild('template', {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.rowEditTextTemplate = this.template;
     * ```
     */
    set rowEditTextTemplate(template: TemplateRef<IgxGridRowEditTextTemplateContext>);
    /**
     * @hidden @internal
     */
    rowAddText: TemplateRef<IgxGridEmptyTemplateContext>;
    /**
     * Gets the row add text template.
     */
    get rowAddTextTemplate(): TemplateRef<IgxGridEmptyTemplateContext>;
    /**
     * Sets the row add text template.
     *```html
     * <ng-template #template igxRowAddText>
     * Adding Row
     * </ng-template>
     * ```
     *```typescript
     * @ViewChild('template', {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.rowAddTextTemplate = this.template;
     * ```
     */
    set rowAddTextTemplate(template: TemplateRef<IgxGridEmptyTemplateContext>);
    /**
     * @hidden @internal
     */
    rowEditActionsDirectives: QueryList<TemplateRef<IgxGridRowEditActionsTemplateContext>>;
    /**
     * Gets the row edit actions template.
     */
    get rowEditActionsTemplate(): TemplateRef<IgxGridRowEditActionsTemplateContext>;
    /**
     * Sets the row edit actions template.
     *```html
     * <ng-template #template igxRowEditActions let-endRowEdit>
     *     <button type="button" igxButton igxRowEditTabStop (click)="endRowEdit(false)">Cancel</button>
     *     <button type="button" igxButton igxRowEditTabStop (click)="endRowEdit(true)">Apply</button>
     * </ng-template>
     * ```
     *```typescript
     * @ViewChild('template', {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.rowEditActionsTemplate = this.template;
     * ```
     */
    set rowEditActionsTemplate(template: TemplateRef<IgxGridRowEditActionsTemplateContext>);
    /**
     * The custom template, if any, that should be used when rendering a row expand indicator.
     */
    protected rowExpandedIndicatorDirectiveTemplate: TemplateRef<IgxGridRowTemplateContext>;
    /**
     * Gets the row expand indicator template.
    */
    get rowExpandedIndicatorTemplate(): TemplateRef<IgxGridRowTemplateContext>;
    /**
     * Sets the row expand indicator template.
     *```html
     *<ng-template igxRowExpandedIndicator>
     *  <igx-icon role="button">remove</igx-icon>
     *</ng-template>
     * ```
     *```typescript
     * @ViewChild('template', {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.rowExpandedIndicatorTemplate = this.template;
     * ```
    */
    set rowExpandedIndicatorTemplate(template: TemplateRef<IgxGridRowTemplateContext>);
    /**
     * The custom template, if any, that should be used when rendering a row collapse indicator.
     */
    protected rowCollapsedIndicatorDirectiveTemplate: TemplateRef<IgxGridRowTemplateContext>;
    /**
     * Gets the row collapse indicator template.
    */
    get rowCollapsedIndicatorTemplate(): TemplateRef<IgxGridRowTemplateContext>;
    /**
     * Sets the row collapse indicator template.
     *```html
     *<ng-template igxRowCollapsedIndicator>
     *  <igx-icon role="button">add</igx-icon>
     *</ng-template>
     * ```
     *```typescript
     * @ViewChild('template', {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.rowCollapsedIndicatorTemplate = this.template;
     * ```
    */
    set rowCollapsedIndicatorTemplate(template: TemplateRef<IgxGridRowTemplateContext>);
    /**
     * The custom template, if any, that should be used when rendering a header expand indicator.
     */
    protected headerExpandedIndicatorDirectiveTemplate: TemplateRef<IgxGridTemplateContext>;
    /**
     * Gets the header expand indicator template.
    */
    get headerExpandedIndicatorTemplate(): TemplateRef<IgxGridTemplateContext>;
    /**
     * Sets the header expand indicator template.
     *```html
     *<ng-template igxHeaderExpandedIndicator>
     *  <igx-icon role="button">remove</igx-icon>
     *</ng-template>
     * ```
     *```typescript
     * @ViewChild('template', {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.headerExpandedIndicatorTemplate = this.template;
     * ```
    */
    set headerExpandedIndicatorTemplate(template: TemplateRef<IgxGridTemplateContext>);
    /**
     * The custom template, if any, that should be used when rendering a header collapse indicator.
     */
    protected headerCollapsedIndicatorDirectiveTemplate: TemplateRef<IgxGridTemplateContext>;
    /**
     * Gets the row collapse indicator template.
    */
    get headerCollapsedIndicatorTemplate(): TemplateRef<IgxGridTemplateContext>;
    /**
     * Sets the row collapse indicator template.
     *```html
     *<ng-template igxHeaderCollapsedIndicator>
     *  <igx-icon role="button">add</igx-icon>
     *</ng-template>
     * ```
     *```typescript
     * @ViewChild('template', {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.headerCollapsedIndicatorTemplate = this.template;
     * ```
    */
    set headerCollapsedIndicatorTemplate(template: TemplateRef<IgxGridTemplateContext>);
    /** @hidden @internal */
    excelStyleHeaderIconDirectiveTemplate: TemplateRef<IgxGridHeaderTemplateContext>;
    /**
     * Gets the excel style header icon.
    */
    get excelStyleHeaderIconTemplate(): TemplateRef<IgxGridHeaderTemplateContext>;
    /**
     * Sets the excel style header icon.
     *```html
     *<ng-template #template igxExcelStyleHeaderIcon>
     * <igx-icon>filter_alt</igx-icon>
     *</ng-template>
     * ```
     *```typescript
     * @ViewChild('template', {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.excelStyleHeaderIconTemplate = this.template;
     * ```
    */
    set excelStyleHeaderIconTemplate(template: TemplateRef<IgxGridHeaderTemplateContext>);
    /**
     * @hidden
     * @internal
     */
    sortAscendingHeaderIconDirectiveTemplate: TemplateRef<IgxGridHeaderTemplateContext>;
    /**
     * The custom template, if any, that should be used when rendering a header sorting indicator when columns are sorted in asc order.
     */
    get sortAscendingHeaderIconTemplate(): TemplateRef<IgxGridHeaderTemplateContext>;
    /**
     * Sets a custom template that should be used when rendering a header sorting indicator when columns are sorted in asc order.
     *```html
     * <ng-template #template igxSortAscendingHeaderIcon>
     *    <igx-icon>expand_less</igx-icon>
     * </ng-template>
     * ```
     * ```typescript
     * @ViewChild("'template'", {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.sortAscendingHeaderIconTemplate = this.template;
     * ```
     */
    set sortAscendingHeaderIconTemplate(template: TemplateRef<IgxGridHeaderTemplateContext>);
    /** @hidden @internal */
    sortDescendingHeaderIconDirectiveTemplate: TemplateRef<IgxGridHeaderTemplateContext>;
    /**
     * The custom template, if any, that should be used when rendering a header sorting indicator when columns are sorted in desc order.
     */
    get sortDescendingHeaderIconTemplate(): TemplateRef<IgxGridHeaderTemplateContext>;
    /**
     * Sets a custom template that should be used when rendering a header sorting indicator when columns are sorted in desc order.
     *```html
     * <ng-template #template igxSortDescendingHeaderIcon>
     *    <igx-icon>expand_more</igx-icon>
     * </ng-template>
     * ```
     * ```typescript
     * @ViewChild("'template'", {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.sortDescendingHeaderIconTemplate = this.template;
     * ```
     */
    set sortDescendingHeaderIconTemplate(template: TemplateRef<IgxGridHeaderTemplateContext>);
    /**
     * @hidden
     * @internal
     */
    sortHeaderIconDirectiveTemplate: TemplateRef<IgxGridHeaderTemplateContext>;
    /**
     * Gets custom template, if any, that should be used when rendering a header sorting indicator when columns are not sorted.
     */
    get sortHeaderIconTemplate(): TemplateRef<IgxGridHeaderTemplateContext>;
    /**
     * Sets a custom template that should be used when rendering a header sorting indicator when columns are not sorted.
     *```html
     * <ng-template #template igxSortHeaderIcon>
     *    <igx-icon>unfold_more</igx-icon>
     * </ng-template>
     * ```
     * ```typescript
     * @ViewChild("'template'", {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.sortHeaderIconTemplate = this.template;
     * ```
     */
    set sortHeaderIconTemplate(template: TemplateRef<IgxGridHeaderTemplateContext>);
    /**
     * @hidden
     * @internal
     */
    dragIndicatorIconTemplates: QueryList<TemplateRef<IgxGridEmptyTemplateContext>>;
    /**
     * @hidden @internal
     */
    rowEditTabsDEFAULT: QueryList<IgxRowEditTabStopDirective>;
    /**
     * @hidden @internal
     */
    rowEditTabsCUSTOM: QueryList<IgxRowEditTabStopDirective>;
    /**
     * @hidden @internal
     */
    rowEditingOverlay: IgxToggleDirective;
    /**
     * @hidden @internal
     */
    tabindex: number;
    /**
     * @hidden @internal
     */
    hostRole: string;
    /** @hidden @internal */
    toolbar: QueryList<IgxGridToolbarComponent>;
    /** @hidden @internal */
    protected paginationComponents: QueryList<IgxPaginatorComponent>;
    /**
     * @hidden @internal
     */
    protected _outletDirective: IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     * @igxElementsAnchor
     */
    anchor: ViewContainerRef;
    /**
     * @hidden @internal
     */
    protected defaultExpandedTemplate: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    protected defaultCollapsedTemplate: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    protected defaultESFHeaderIconTemplate: TemplateRef<any>;
    protected _summaryRowList: QueryList<IgxSummaryRowComponent>;
    private _rowList;
    private _pinnedRowList;
    /**
     * @hidden @internal
     */
    private defaultRowEditTemplate;
    private _dataRowList;
    protected baseClass: string;
    /**
     * Gets/Sets the resource strings.
     *
     * @remarks
     * By default it uses EN resources.
     */
    set resourceStrings(value: IGridResourceStrings);
    get resourceStrings(): IGridResourceStrings;
    /**
     * 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);
    /**
     * 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);
    get pagingMode(): GridPagingMode;
    set pagingMode(val: GridPagingMode);
    /** @hidden @internal */
    get page(): number;
    set page(val: number);
    /** @hidden @internal */
    get perPage(): number;
    set perPage(val: number);
    /**
     * 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);
    /**
     * Gets/Sets the trigger for validators used when editing the grid.
     *
     * @example
     * ```html
     * <igx-grid #grid validationTrigger='blur'></igx-grid>
     * ```
     */
    validationTrigger: GridValidationTrigger;
    /**
     * @hidden
     * @internal
     */
    rowDragging: boolean;
    /** @hidden @internal */
    dragRowID: any;
    /**
     * Gets/Sets whether the rows are editable.
     *
     * @remarks
     * By default it is set to false.
     * @example
     * ```html
     * <igx-grid #grid [rowEditable]="true" [primaryKey]="'ProductID'" ></igx-grid>
     * ```
     */
    get rowEditable(): boolean;
    set rowEditable(val: boolean);
    /**
     * Gets/Sets the height.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="Data" [height]="'305px'" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get height(): string | null;
    set height(value: string | null);
    /**
     * @hidden @internal
     */
    get hostWidth(): any;
    /**
     * Gets/Sets the width of the grid.
     *
     * @example
     * ```typescript
     * let gridWidth = this.grid.width;
     * ```
     */
    get width(): string | null;
    set width(value: string | null);
    /** @hidden @internal */
    get headerWidth(): number;
    /**
     * Gets/Sets the row height.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [rowHeight]="100" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get rowHeight(): number;
    set rowHeight(value: number | string);
    /**
     * Gets/Sets the default width of the columns.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [columnWidth]="100" [autoGenerate]="true"></igx-grid>
     * ```
     */
    get columnWidth(): string;
    set columnWidth(value: string);
    /**
     * 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;
     * ```
     * @deprecated in version 18.2.0. Column re-creation now relies on `autoGenerate` instead.
     */
    get shouldGenerate(): boolean;
    set shouldGenerate(value: 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 initial pinning configuration.
     *
     * @remarks
     * Allows to apply pinning the columns to the start or the end.
     * Note that pinning to both sides at a time is not allowed.
     * @example
     * ```html
     * <igx-grid [pinning]="pinningConfig"></igx-grid>
     * ```
     */
    get pinning(): IPinningConfig;
    set pinning(value: IPinningConfig);
    /**
     * 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" [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);
    /**
     * Controls whether the summary row is visible when groupBy/parent row is collapsed.
     *
     * @example
     * ```html
     * <igx-grid #grid [data]="localData" [showSummaryOnCollapse]="true" [autoGenerate]="true"></igx-grid>
     * ```
     * @remarks
     * By default showSummaryOnCollapse is set to 'false' which means that the summary row is not visible
     * when the groupBy/parent row is collapsed.
     */
    get showSummaryOnCollapse(): boolean;
    set showSummaryOnCollapse(value: boolean);
    /**
     * 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 the sorting options - single or multiple sorting.
     * Accepts an `ISortingOptions` object with any of the `mode` properties.
     *
     * @example
     * ```typescript
     * const _sortingOptions: ISortingOptions = {
     *      mode: 'single'
     * }
     * ```html
     * <igx-grid [sortingOptions]="sortingOptions"><igx-grid>
     * ```
     */
    set sortingOptions(value: ISortingOptions);
    get sortingOptions(): ISortingOptions;
    /**
     * Gets/Sets the current selection state.
     *
     * @remarks
     * Represents the selected rows' IDs (primary key or rowData)
     * @example
     * ```html
     * <igx-grid [data]="localData" primaryKey="ID" rowSelection="multiple" [selectedRows]="[0, 1, 2]"><igx-grid>
     * ```
     */
    set selectedRows(rowIDs: any[]);
    get selectedRows(): any[];
    /** @hidden @internal */
    get headerGroupsList(): IgxGridHeaderGroupComponent[];
    /** @hidden @internal */
    get headerCellList(): IgxGridHeaderComponent[];
    /** @hidden @internal */
    get filterCellList(): IgxGridFilteringCellComponent[];
    /**
     * @hidden @internal
     */
    get summariesRowList(): QueryList<any>;
    /**
     * A list of `IgxGridRowComponent`.
     *
     * @example
     * ```typescript
     * const rowList = this.grid.rowList;
     * ```
     */
    get rowList(): QueryList<IgxRowDirective>;
    /**
     * A list of currently rendered `IgxGridRowComponent`'s.
     *
     * @example
     * ```typescript
     * const dataList = this.grid.dataRowList;
     * ```
     */
    get dataRowList(): QueryList<IgxRowDirective>;
    /**
     * Gets the header row selector template.
     */
    get headSelectorTemplate(): TemplateRef<IgxHeadSelectorTemplateContext>;
    /**
     * Sets the header row selector template.
     * ```html
     * <ng-template #template igxHeadSelector let-headContext>
     * {{ headContext.selectedCount }} / {{ headContext.totalCount  }}
     * </ng-template>
     * ```
     * ```typescript
     * @ViewChild("'template'", {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.headSelectorTemplate = this.template;
     * ```
     */
    set headSelectorTemplate(template: TemplateRef<IgxHeadSelectorTemplateContext>);
    /**
     * @hidden
     * @internal
     */
    get isPinningToStart(): boolean;
    /**
     * @hidden
     * @internal
     */
    get isRowPinningToTop(): boolean;
    /**
     * Gets the row selector template.
     */
    get rowSelectorTemplate(): TemplateRef<IgxRowSelectorTemplateContext>;
    /**
         * Sets a custom template for the row selectors.
         * ```html
         * <ng-template #template igxRowSelector let-rowContext>
         *    <igx-checkbox [checked]="rowContext.selected"></igx-checkbox>
         * </ng-template>
         * ```
         * ```typescript
         * @ViewChild("'template'", {read: TemplateRef })
         * public template: TemplateRef<any>;
         * this.grid.rowSelectorTemplate = this.template;
         * ```
         */
    set rowSelectorTemplate(template: TemplateRef<IgxRowSelectorTemplateContext>);
    /**
     * @hidden @internal
     */
    get rowOutletDirective(): IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     */
    get parentRowOutletDirective(): IgxOverlayOutletDirective;
    /**
     * @hidden @internal
     */
    get rowEditCustom(): TemplateRef<IgxGridRowEditTemplateContext>;
    /**

    /**
     * @hidden @internal
     */
    get rowEditContainer(): TemplateRef<IgxGridRowEditTemplateContext>;
    /**
     * The custom template, if any, that should be used when rendering the row drag indicator icon
     */
    get dragIndicatorIconTemplate(): TemplateRef<IgxGridEmptyTemplateContext>;
    /**
     * Sets a custom template that should be used when rendering the row drag indicator icon.
     *```html
     * <ng-template #template igxDragIndicatorIcon>
     *    <igx-icon>expand_less</igx-icon>
     * </ng-template>
     * ```
     * ```typescript
     * @ViewChild("'template'", {read: TemplateRef })
     * public template: TemplateRef<any>;
     * this.grid.dragIndicatorIconTemplate = this.template;
     * ```
     */
    set dragIndicatorIconTemplate(val: TemplateRef<IgxGridEmptyTemplateContext>);
    /**
     * @hidden @internal
     */
    get firstEditableColumnIndex(): number;
    /**
     * @hidden @internal
     */
    get lastEditableColumnIndex(): number;
    /**
     * @hidden @internal
     * TODO: Nav service logic doesn't handle 0 results from this querylist
     */
    get rowEditTabs(): QueryList<IgxRowEditTabStopDirective>;
    /** @hidden @internal */
    get activeDescendant(): string;
    /** @hidden @internal */
    get bannerClass(): string;
    /**
     * 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[]);
    /**
     * @hidden @internal
     */
    get maxLevelHeaderDepth(): any;
    /**
     * Gets the number of hidden columns.
     *
     * @example
     * ```typescript
     * const hiddenCol = this.grid.hiddenColumnsCount;
     * ``
     */
    get hiddenColumnsCount(): number;
    /**
     * Gets the number of pinned columns.
     */
    get pinnedColumnsCount(): number;
    /**
     * Gets/Sets whether the grid has batch editing enabled.
     * When batch editing is enabled, changes are not made directly to the underlying data.
     * Instead, they are stored as transactions, which can later be committed w/ the `commit` method.
     *
     * @example
     * ```html
     * <igx-grid [batchEditing]="true" [data]="someData">
     * </igx-grid>
     * ```
     */
    get batchEditing(): boolean;
    set batchEditing(val: boolean);
    /**
     * Get transactions service for the grid.
     */
    get transactions(): TransactionService<Transaction, State>;
    /**
     * @hidden @internal
     */
    get currentRowState(): any;
    /**
     * @hidden @internal
     */
    get currencyPositionLeft(): boolean;
    /**
     * 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'
     * Note that in IgxGrid and IgxHierarchicalGrid 'multipleCascade' behaves like 'multiple'
     */
    get rowSelection(): GridSelectionMode;
    set rowSelection(selectionMode: GridSelectionMode);
    /**
     * Gets/Sets column selection mode
     *
     * @remarks
     * By default the row selection mode is none
     * @param selectionMode: GridSelectionMode
     */
    get columnSelection(): GridSelectionMode;
    set columnSelection(selectionMode: GridSelectionMode);
    /**
     * @hidden @internal
     */
    set pagingState(value: any);
    get pagingState(): any;
    /**
     * @hidden @internal
     */
    rowEditMessage: any;
    /**
     * @hidden @internal
     */
    calcWidth: number;
    /**
     * @hidden @internal
     */
    calcHeight: number;
    /**
     * @hidden @internal
     */
    tfootHeight: number;
    /**
     * @hidden @internal
     */
    disableTransitions: boolean;
    /**
     * Represents the last search information.
     */
    get lastSearchInfo(): ISearchInfo;
    /**
     * @hidden @internal
     */
    columnWidthSetByUser: boolean;
    /**
     * @hidden @internal
     */
    pinnedRecords: any[];
    /**
     * @hidden @internal
     */
    unpinnedRecords: any[];
    /**
     * @hidden @internal
     */
    rendered$: import("rxjs").Observable<boolean>;
    /** @hidden @internal */
    resizeNotify: Subject<void>;
    /** @hidden @internal */
    rowAddedNotifier: Subject<IRowDataEventArgs>;
    /** @hidden @internal */
    rowDeletedNotifier: Subject<IRowDataEventArgs>;
    /** @hidden @internal */
    pipeTriggerNotifier: Subject<unknown>;
    /** @hidden @internal */
    _filteredSortedPinnedData: any[];
    /** @hidden @internal */
    _filteredSortedUnpinnedData: any[];
    /** @hidden @internal */
    _filteredPinnedData: any[];
    /**
     * @hidden
     */
    _filteredUnpinnedData: any;
    /**
     * @hidden @internal
     */
    _destroyed: boolean;
    /**
     * @hidden @internal
     */
    _totalRecords: number;
    /**
     * @hidden @internal
     */
    columnsWithNoSetWidths: any;
    /**
     * @hidden @internal
     */
    pipeTrigger: number;
    /**
     * @hidden @internal
     */
    filteringPipeTrigger: number;
    /**
     * @hidden @internal
     */
    isColumnWidthSum: boolean;
    /**
     * @hidden @internal
     */
    summaryPipeTrigger: number;
    /**
     * @hidden @internal
     */
    groupablePipeTrigger: number;
    /**
    * @hidden @internal
    */
    EMPTY_DATA: any[];
    /** @hidden @internal */
    get type(): GridType["type"];
    /** @hidden @internal */
    _baseFontSize: number;
    /**
     * @hidden
     */
    destroy$: Subject<any>;
    /**
     * @hidden
     */
    protected _pagingMode: GridPagingMode;
    /**
     * @hidden
     */
    protected _pagingState: any;
    /**
     * @hidden
     */
    protected _hideRowSelectors: boolean;
    /**
     * @hidden
     */
    protected _rowDrag: boolean;
    /**
     * @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;
    protected _pinnedRecordIDs: any[];
    /**
     * @hidden
     */
    protected _hasVisibleColumns: any;
    protected _allowFiltering: boolean;
    protected _allowAdvancedFiltering: boolean;
    protected _filterMode: FilterMode;
    protected _defaultTargetRecordNumber: number;
    protected _expansionStates: Map<any, boolean>;
    protected _defaultExpandState: boolean;
    protected _headerFeaturesWidth: number;
    protected _init: boolean;
    protected _firstAutoResize: boolean;
    protected _autoSizeColumnsNotify: Subject<void>;
    protected _cdrRequestRepaint: boolean;
    protected _userOutletDirective: IgxOverlayOutletDirective;
    protected _transactions: TransactionService<Transaction, State>;
    protected _batchEditing: boolean;
    protected _sortingOptions: ISortingOptions;
    protected _filterStrategy: IFilteringStrategy;
    protected _autoGeneratedCols: any[];
    protected _dataView: any[];
    protected _lastSearchInfo: ISearchInfo;
    protected gridComputedStyles: any;
    /** @hidden @internal */
    get paginator(): IgxPaginatorComponent;
    /**
     * @hidden @internal
     */
    get scrollSize(): number;
    private _primaryKey;
    private _rowEditable;
    private _currentRowState;
    private _filteredSortedData;
    private _filteredData;
    private _customDragIndicatorIconTemplate;
    private _excelStyleHeaderIconTemplate;
    private _rowSelectorTemplate;
    private _headSelectorTemplate;
    private _rowEditTextTemplate;
    private _rowAddTextTemplate;
    private _rowEditActionsTemplate;
    private _dragGhostCustomTemplate;
    private _rowExpandedIndicatorTemplate;
    private _rowCollapsedIndicatorTemplate;
    private _headerExpandIndicatorTemplate;
    private _headerCollapseIndicatorTemplate;
    private _cdrRequests;
    private _resourceStrings;
    private _emptyGridMessage;
    private _emptyFilteredGridMessage;
    private _isLoading;
    private _locale;
    private overlayIDs;
    private _sortingStrategy;
    private _pinning;
    private _shouldRecalcRowHeight;
    private _hostWidth;
    private _advancedFilteringOverlayId;
    private _advancedFilteringPositionSettings;
    private _advancedFilteringOverlaySettings;
    private columnListDiffer;
    private rowListDiffer;
    private _height;
    private _width;
    private _rowHeight;
    private _horizontalForOfs;
    private _multiRowLayoutRowSize;
    private _totalWidth;
    private _pinnedVisible;
    private _unpinnedVisible;
    private _pinnedWidth;
    private _unpinnedWidth;
    private _visibleColumns;
    private _columnGroups;
    private _columnWidth;
    private _summaryPosition;
    private _summaryCalculationMode;
    private _showSummaryOnCollapse;
    private _summaryRowHeight;
    private _cellSelectionMode;
    private _rowSelectionMode;
    private _selectRowOnClick;
    private _columnSelectionMode;
    private lastAddedRowIndex;
    private _currencyPositionLeft;
    private rowEditPositioningStrategy;
    private rowEditSettings;
    private transactionChange$;
    private _rendered;
    private readonly DRAG_SCROLL_DELTA;
    private _dataCloneStrategy;
    private _autoSize;
    private _sortHeaderIconTemplate;
    private _sortAscendingHeaderIconTemplate;
    private _sortDescendingHeaderIconTemplate;
    private _gridSize;
    private _defaultRowHeight;
    /**
     * @hidden @internal
     */
    get minColumnWidth(): number;
    protected get isCustomSetRowHeight(): boolean;
    /**
     * @hidden @internal
     */
    abstract id: string;
    abstract data: any[] | null;
    /**
     * Returns an array of objects containing the filtered data.
     *
     * @example
     * ```typescript
     * let filteredData = this.grid.filteredData;
     * ```
     */
    get filteredData(): any;
    /**
     * Returns an array containing the filtered sorted data.
     *
     * @example
     * ```typescript
     * const filteredSortedData = this.grid1.filteredSortedData;
     * ```
     */
    get filteredSortedData(): any[];
    /**
     * @hidden @internal
     */
    get rowChangesCount(): number;
    /**
     * @hidden @internal
     */
    get dataWithAddedInTransactionRows(): any[];
    /**
     * @hidden @internal
     */
    get dataLength(): number;
    /**
     * @hidden @internal
     */
    get template(): TemplateRef<IgxGridTemplateContext>;
    /**
     * @hidden @internal
     */
    private get hasZeroResultFilter();
    /**
     * @hidden @internal
     */
    private get hasNoData();
    /**
     * @hidden @internal
     */
    get shouldOverlayLoading(): boolean;
    /**
     * @hidden @internal
     */
    get isMultiRowSelectionEnabled(): boolean;
    /**
     * @hidden @internal
     */
    get isRowSelectable(): boolean;
    /**
     * @hidden @internal
     */
    get isCellSelectable(): boolean;
    /**
     * @hidden @internal
     */
    get columnInDrag(): ColumnType;
    constructor(validation: IgxGridValidationService, 
    /** @hidden @internal */
    selectionService: IgxGridSelectionService, colResizingService: IgxColumnResizingService, gridAPI: GridServiceType, transactionFactory: IgxFlatTransactionFactory, elementRef: ElementRef<HTMLElement>, zone: NgZone, 
    /** @hidden @internal */
    document: any, cdr: ChangeDetectorRef, differs: IterableDiffers, viewRef: ViewContainerRef, injector: Injector, envInjector: EnvironmentInjector, navigation: IgxGridNavigationService, 
    /** @hidden @internal */
    filteringService: IgxFilteringService, textHighlightService: IgxTextHighlightService, overlayService: IgxOverlayService, 
    /** @hidden @internal */
    summaryService: IgxGridSummaryService, localeId: string, platform: PlatformUtil, _diTransactions?: TransactionService<Transaction, State>);
    /**
     * @hidden
     * @internal
     */
    hideActionStrip(): void;
    /**
     * @hidden
     * @internal
     */
    get headerFeaturesWidth(): number;
    /**
     * @hidden
     * @internal
     */
    isDetailRecord(_rec: any): boolean;
    /**
     * @hidden
     * @internal
     */
    isGroupByRecord(_rec: any): boolean;
    /**
     * @hidden @internal
     */
    isGhostRecord(record: any): boolean;
    /**
     * @hidden @internal
     */
    isAddRowRecord(record: any): boolean;
    /**
     * @hidden
     * Returns the row index of a row that takes into account the full view data like pinning.
     */
    getDataViewIndex(rowIndex: any, pinned: any): any;
    /**
     * @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(): import("../directives/for-of/for_of.directive").IForOfState;
    /**
     * @hidden
     * @internal
     */
    hideOverlays(): void;
    /**
     * Returns whether the record is pinned or not.
     *
     * @param rowIndex Index of the record in the `dataView` collection.
     *
     * @hidden
     * @internal
     */
    isRecordPinnedByViewIndex(rowIndex: number): boolean;
    /**
     * Returns whether the record is pinned or not.
     *
     * @param rowIndex Index of the record in the `filteredSortedData` collection.
     */
    isRecordPinnedByIndex(rowIndex: number): boolean;
    /**
     * @hidden
     * @internal
     */
    isRecordPinned(rec: any): boolean;
    /**
     * @hidden
     * @internal
     * Returns the record index in order of pinning by the user. Does not consider sorting/filtering.
     */
    getInitialPinnedIndex(rec: any): number;
    /**
     * @hidden
     * @internal
     */
    get hasPinnedRecords(): boolean;
    /**
     * @hidden
     * @internal
     */
    get pinnedRecordsCount(): number;
    /**
     * @hidden
     * @internal
     */
    get crudService(): any;
    /**
     * @hidden
     * @internal
     */
    _setupServices(): void;
    /**
     * @hidden
     * @internal
     */
    _setupListeners(): void;
    /**
     * @hidden
     */
    ngOnInit(): void;
    /**
     * @hidden
     * @internal
     */
    resetColumnsCaches(): void;
    /**
     * @hidden @internal
     */
    generateRowID(): string | number;
    /**
     * @hidden
     * @internal
     */
    resetForOfCache(): void;
    /**
     * @hidden
     * @internal
     */
    setFilteredData(data: any, pinned: boolean): void;
    /**
     * @hidden
     * @internal
     */
    resetColumnCollections(): void;
    /**
     * @hidden
     * @internal
     */
    resetCachedWidths(): void;
    /**
     * @hidden
     * @internal
     */
    resetCaches(recalcFeatureWidth?: boolean): void;
    /**
     * @hidden
     */
    ngAfterContentInit(): void;
    /**
     * @hidden @internal
     */
    dataRebinding(event: IForOfDataChangingEventArgs): void;
    /**
     * @hidden @internal
     */
    dataRebound(event: any): void;
    /** @hidden @internal */
    createFilterDropdown(column: ColumnType, options: OverlaySettings): string;
    /** @hidden @internal */
    setUpPaginator(): void;
    /**
     * @hidden
     * @internal
     */
    setFilteredSortedData(data: any, pinned: boolean): void;
    /**
     * @hidden @internal
     */
    resetHorizontalVirtualization(): void;
    /**
     * @hidden @internal
     */
    _setupRowObservers(): void;
    /**
     * @hidden @internal
     */
    _zoneBegoneListeners(): void;
    /**
     * @hidden
     */
    ngAfterViewInit(): void;
    /**
     * @hidden @internal
     */
    notifyChanges(repaint?: boolean): void;
    /**
     * @hidden @internal
     */
    ngDoCheck(): void;
    /**
     * @hidden
     * @internal
     */
    getDragGhostCustomTemplate(): TemplateRef<IgxGridRowDragGhostContext>;
    /**
     * @hidden @internal
     */
    ngOnDestroy(): 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(): HTMLElement;
    /**
     * Gets/Sets the outlet used to attach the grid's overlays to.
     *
     * @remarks
     * If set, returns the outlet defined outside the grid. Otherwise returns the grid's internal outlet directive.
     */
    get outlet(): IgxOverlayOutletDirective;
    set outlet(val: 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 */
    get pinnedWidth(): number;
    /** @hidden @internal */
    get unpinnedWidth(): number;
    /**
     * @hidden @internal
     */
    isHorizontalScrollHidden: boolean;
    /**
     * @hidden @internal
     * Gets the header cell inner width for auto-sizing.
     */
    getHeaderCellWidth(element: HTMLElement): ISizeInfo;
    /**
     * @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 the pinned `IgxRowComponent`s.
     *
     * @example
     * ```typescript
     * const pinnedRow = this.grid.pinnedRows;
     * ```
     */
    get pinnedRows(): IgxGridRowComponent[];
    /**
     * 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;
    getColumnByVisibleIndex(index: number): IgxColumnComponent;
    /**
     * Recalculates all widths of columns that have size set to `auto`.
     *
     * @example
     * ```typescript
     * this.grid1.recalculateAutoSizes();
     * ```
     */
    recalculateAutoSizes(): void;
    /**
     * Returns an array of visible `IgxColumnComponent`s.
     *
     * @example
     * ```typescript
     * const visibleColumns = this.grid.visibleColumns.
     * ```
     */
    get visibleColumns(): IgxColumnComponent[];
    /**
     * Returns the total number of records.
     *
     * @remarks
     * Only functions when paging is enabled.
     * @example
     * ```typescript
     * const totalRecords = this.grid.totalRecords;
     * ```
     */
    get totalRecords(): number;
    set totalRecords(total: number);
    /** @hidden @internal */
    get totalWidth(): number;
    /**
     * @hidden
     * @internal
     */
    get showRowSelectors(): boolean;
    /**
     * @hidden
     * @internal
     */
    get showAddButton(): boolean;
    /**
     * @hidden
     * @internal
     */
    get showDragIcons(): boolean;
    /**
     * @hidden
     * @internal
     */
    protected _getDataViewIndex(index: number): number;
    /**
     * @hidden
     * @internal
     */
    protected getDataIndex(dataViewIndex: number): number;
    /**
     * Places a column before or after the specified target column.
     *
     * @example
     * ```typescript
     * grid.moveColumn(column, target);
     * ```
     */
    moveColumn(column: IgxColumnComponent, target: IgxColumnComponent, pos?: DropPosition): void;
    /**
     * Triggers change detection for the `IgxGridComponent`.
     * Calling markForCheck also triggers the grid pipes explicitly, resulting in all updates being processed.
     * May degrade performance if used when not needed, or if misused:
     * ```typescript
     * // DON'Ts:
     * // don't call markForCheck from inside a loop
     * // don't call markForCheck when a primitive has changed
     * grid.data.forEach(rec => {
     *  rec = newValue;
     *  grid.markForCheck();
     * });
     *
     * // DOs
     * // call markForCheck after updating a nested property
     * grid.data.forEach(rec => {
     *  rec.nestedProp1.nestedProp2 = newValue;
     * });
     * grid.markForCheck();
     * ```
     *
     * @example
     * ```typescript
     * grid.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): any;
    /** @hidden */
    deleteRowById(rowId: any): any;
    /**
     * 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;
    /**
     * Returns the data that is contained in the row component.
     *
     * @remarks
     * If the primary key is not specified the row selector match the row data.
     * @example
     * ```typescript
     * const data = grid.getRowData(94741);
     * ```
     * @param rowSelector correspond to rowID
     */
    getRowData(rowSelector: any): any;
    /**
     * 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
     * @deprecated in version 19.0.0.
     */
    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?: number): 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?: number): boolean;
    /**
     * Pin the row by its id.
     *
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.pinRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
     * @param index The index at which to insert the row in the pinned collection.
     */
    pinRow(rowID: any, index?: number, row?: RowType): boolean;
    /**
     * Unpin the row by its id.
     *
     * @remarks
     * ID is either the primaryKey value or the data record instance.
     * @example
     * ```typescript
     * this.grid.unpinRow(rowID);
     * ```
     * @param rowID The row id - primaryKey value or the data record instance.
     */
    unpinRow(rowID: any, row?: RowType): boolean;
    /** @hidden @internal */
    get pinnedRowHeight(): any;
    /** @hidden @internal */
    get totalHeight(): any;
    /**
     * 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;
    /** @hidden @internal */
    get hasEditableColumns(): boolean;
    /** @hidden @internal */
    get hasSummarizedColumns(): boolean;
    /**
     * @hidden @internal
     */
    get rootSummariesEnabled(): boolean;
    /**
     * @hidden @internal
     */
    get hasVisibleColumns(): boolean;
    set hasVisibleColumns(value: boolean);
    /** @hidden @internal */
    get hasMovableColumns(): boolean;
    /** @hidden @internal */
    get hasColumnGroups(): boolean;
    /** @hidden @internal */
    get hasColumnLayouts(): boolean;
    /**
     * @hidden @internal
     */
    get multiRowLayoutRowSize(): number;
    /**
     * @hidden
     */
    protected get rowBasedHeight(): number;
    /**
     * @hidden
     */
    protected get isPercentWidth(): boolean;
    protected get shouldResize(): boolean;
    /**
     * @hidden @internal
     */
    get isPercentHeight(): boolean;
    /**
     * @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
     */
    get outerWidth(): number;
    /**
     * @hidden @internal
     * Gets the size of the grid
     */
    get gridSize(): Size;
    /**
     * @hidden @internal
     * Gets the visible content height that includes header + tbody + footer.
     */
    getVisibleContentHeight(): any;
    /**
     * @hidden @internal
     */
    getPossibleColumnWidth(baseWidth?: number): string;
    /**
     * @hidden @internal
     */
    hasVerticalScroll(): boolean;
    /**
     * 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 @internal
     */
    isColumnGrouped(_fieldName: string): boolean;
    /**
     * @hidden @internal
     * TODO: REMOVE
     */
    onHeaderSelectorClick(event: any): void;
    /**
     * @hidden @internal
     */
    get headSelectorBaseAriaLabel(): "Deselect all filtered" | "Select all filtered" | "Deselect all" | "Select all";
    /**
     * @hidden
     * @internal
     */
    get totalRowsCountAfterFilter(): number;
    /** @hidden @internal */
    get pinnedDataView(): any[];
    /** @hidden @internal */
    get unpinnedDataView(): any[];
    /**
     * Returns the currently transformed paged/filtered/sorted/grouped/pinned/unpinned row data, displayed in the grid.
     *
     * @example
     * ```typescript
     *      const dataView = this.grid.dataView;
     * ```
     */
    get dataView(): any[];
    /**
     * Gets/Sets whether clicking over a row should select/deselect it
     *
     * @remarks
     * By default it is set to true
     * @param enabled: boolean
     */
    get selectRowOnClick(): boolean;
    set selectRowOnClick(enabled: boolean);
    /**
     * 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 deselect all rows in the grid exept deleted rows.
     * @example
     * ```typescript
     * this.grid.deselectAllRows();
     * ```
     * @param onlyFilterData
     */
    deselectAllRows(onlyFilterData?: boolean): void;
    /**
     * Deselect selected cells.
     * @example
     * ```typescript
     * this.grid.clearCellSelection();
     * ```
     */
    clearCellSelection(): void;
    /**
     * @hidden @internal
     */
    dragScroll(delta: {
        left: number;
        top: number;
    }): void;
    /**
     * @hidden @internal
     */
    isDefined(arg: any): boolean;
    /**
     * Select range(s) of cells between certain rows and columns of the grid.
     */
    selectRange(arg: GridSelectionRange | GridSelectionRange[] | null | undefined): void;
    /**
     * @hidden @internal
     */
    columnToVisibleIndex(field: string | number): number;
    /**
     * @hidden @internal
     */
    setSelection(range: GridSelectionRange): void;
    /**
     * Get the currently selected ranges in the grid.
     */
    getSelectedRanges(): GridSelectionRange[];
    /**
     *
     * 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[];
    /**
     * Get current selected columns.
     *
     * @example
     * Returns an array with selected columns
     * ```typescript
     * const selectedColumns = this.grid.selectedColumns();
     * ```
     */
    selectedColumns(): ColumnType[];
    /**
     * Select specified columns.
     *
     * @example
     * ```typescript
     * this.grid.selectColumns(['ID','Name'], true);
     * ```
     * @param columns
     * @param clearCurrentSelection if true clears the current selection
     */
    selectColumns(columns: string[] | ColumnType[], clearCurrentSelection?: boolean): void;
    /**
     * Deselect specified columns by field.
     *
     * @example
     * ```typescript
     * this.grid.deselectColumns(['ID','Name']);
     * ```
     * @param columns
     */
    deselectColumns(columns: string[] | ColumnType[]): void;
    /**
     * Deselects all columns
     *
     * @example
     * ```typescript
     * this.grid.deselectAllColumns();
     * ```
     */
    deselectAllColumns(): void;
    /**
     * Selects all columns
     *
     * @example
     * ```typescript
     * this.grid.deselectAllColumns();
     * ```
     */
    selectAllColumns(): void;
    /**
     *
     * Returns an array of the current columns 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.
     */
    getSelectedColumnsData(formatters?: boolean, headers?: boolean): any[];
    /** @hidden @internal **/
    combineSelectedCellAndColumnData(columnData: any[], formatters?: boolean, headers?: boolean): any[];
    /**
     * @hidden @internal
     */
    preventContainerScroll: (evt: any) => void;
    /**
     * @hidden
     * @internal
     */
    copyHandler(event: any): void;
    /**
     * @hidden @internal
     */
    prepareCopyData(event: any, data: any, keys?: any): string;
    /**
     * @hidden @internal
     */
    showSnackbarFor(index: number): void;
    /**
     * Navigates to a position 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?: (args: any) => void): 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;
    /**
     * @hidden
     * @internal
     */
    endRowEditTabStop(commit?: boolean, event?: Event): boolean;
    /**
     * @hidden @internal
     */
    trackColumnChanges(index: any, col: any): any;
    /**
     * @hidden
     */
    isExpandedGroup(_group: IGroupByRecord): boolean;
    /**
     * @hidden @internal
     * TODO: MOVE to CRUD
     */
    openRowOverlay(id: any): void;
    /**
     * @hidden @internal
     */
    closeRowEditingOverlay(): void;
    /**
     * @hidden @internal
     */
    toggleRowEditingOverlay(show: any): void;
    /**
     * @hidden @internal
     */
    repositionRowEditingOverlay(row: RowType): void;
    /**
     * @hidden @internal
     */
    cachedViewLoaded(args: ICachedViewLoadedEventArgs): void;
    /**
     * Opens the advanced filtering dialog.
     */
    openAdvancedFilteringDialog(overlaySettings?: OverlaySettings): void;
    /**
     * Closes the advanced filtering dialog.
     *
     * @param applyChanges indicates whether the changes should be applied
     */
    closeAdvancedFilteringDialog(applyChanges: boolean): void;
    /**
     * @hidden @internal
     */
    getEmptyRecordObjectFor(inRow: RowType): {
        rowID: string | number;
        data: any;
        recordRef: any;
    };
    /**
     * @hidden @internal
     */
    hasHorizontalScroll(): boolean;
    /**
     * @hidden @internal
     */
    isSummaryRow(rowData: any): boolean;
    /**
     * @hidden @internal
     */
    triggerPipes(): void;
    /**
     * @hidden
     */
    rowEditingWheelHandler(event: WheelEvent): void;
    /**
     * @hidden
     */
    getUnpinnedIndexById(id: any): number;
    /**
     * Finishes the row transactions on the current row and returns whether the grid editing was canceled.
     *
     * @remarks
     * If `commit === true`, passes them from the pending state to the data (or transaction service)
     * @example
     * ```html
     * <button type="button" igxButton (click)="grid.endEdit(true)">Commit Row</button>
     * ```
     * @param commit
     */
    endEdit(commit?: boolean, event?: Event): boolean;
    /**
     * Enters add mode by spawning the UI under the specified row by rowID.
     *
     * @remarks
     * If null is passed as rowID, the row adding UI is spawned as the first record in the data view
     * @remarks
     * Spawning the UI to add a child for a record only works if you provide a rowID
     * @example
     * ```typescript
     * this.grid.beginAddRowById('ALFKI');
     * this.grid.beginAddRowById('ALFKI', true);
     * this.grid.beginAddRowById(null);
     * ```
     * @param rowID - The rowID to spawn the add row UI for, or null to spawn it as the first record in the data view
     * @param asChild - Whether the record should be added as a child. Only applicable to igxTreeGrid.
     */
    beginAddRowById(rowID: any, asChild?: boolean): void;
    protected _addRowForIndex(index: number, asChild?: boolean): void;
    /**
     * Enters add mode by spawning the UI at the specified index.
     *
     * @remarks
     * Accepted values for index are integers from 0 to this.grid.dataView.length
     * @example
     * ```typescript
     * this.grid.beginAddRowByIndex(0);
     * ```
     * @param index - The index to spawn the UI at. Accepts integers from 0 to this.grid.dataView.length
     */
    beginAddRowByIndex(index: number): void;
    /**
     * @hidden
     */
    preventHeaderScroll(args: any): void;
    protected beginAddRowForIndex(index: number, asChild?: boolean): void;
    protected switchTransactionService(val: boolean): void;
    protected subscribeToTransactions(): void;
    protected transactionStatusUpdate(event: StateUpdateEvent): void;
    protected writeToData(rowIndex: number, value: any): void;
    protected _restoreVirtState(row: any): void;
    protected changeRowEditingOverlayStateOnScroll(row: RowType): 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
     * Sets grid width i.e. this.calcWidth
     */
    protected calculateGridWidth(): void;
    /**
     * @hidden
     * Sets columns defaultWidth property
     */
    protected _derivePossibleWidth(): void;
    /**
     * @hidden
     * @internal
     */
    protected getExtremumBasedColWidth(column: IgxColumnComponent): string;
    protected resetNotifyChanges(): void;
    /** @hidden @internal */
    resolveOutlet(): IgxOverlayOutletDirective;
    /**
     * Reorder columns in the main columnList and _columns collections.
     *
     * @hidden
     */
    protected _moveColumns(from: IgxColumnComponent, to: IgxColumnComponent, pos: DropPosition): void;
    /**
     * Update internal column's collection.
     * @hidden
     */
    updateColumns(newColumns: IgxColumnComponent[]): void;
    /**
     * @hidden
     */
    protected _resetColumnList(list?: any): any[];
    /**
     * Reorders columns inside the passed column collection.
     * When reordering column group collection, the collection is not flattened.
     * In all other cases, the columns collection is flattened, this is why adittional calculations on the dropIndex are done.
     *
     * @hidden
     */
    protected _reorderColumns(from: IgxColumnComponent, to: IgxColumnComponent, position: DropPosition, columnCollection: any[], inGroup?: boolean): void;
    /**
     * Reorder column group collection.
     *
     * @hidden
     */
    protected _moveChildColumns(parent: IgxColumnComponent, from: IgxColumnComponent, to: IgxColumnComponent, pos: DropPosition): void;
    /**
     * @hidden @internal
     */
    protected setupColumns(): void;
    protected getColumnList(): IgxColumnComponent[];
    /**
     * @hidden
     */
    protected deleteRowFromData(rowID: any, index: number): void;
    /**
     * @hidden @internal
     */
    protected getDataBasedBodyHeight(): number;
    /**
     * @hidden @internal
     */
    protected onPinnedRowsChanged(change: QueryList<IgxGridRowComponent>): void;
    /**
     * @hidden
     */
    protected onColumnsChanged(change: QueryList<IgxColumnComponent>): void;
    protected checkPrimaryKeyField(): void;
    /**
     * @hidden @internal
     */
    protected onColumnsAddedOrRemoved(): void;
    /**
     * @hidden
     */
    protected calculateGridSizes(recalcFeatureWidth?: boolean): void;
    /**
     * @hidden
     * Sets TBODY height i.e. this.calcHeight
     */
    protected calculateGridHeight(): void;
    /**
     * @hidden
     */
    protected getGroupAreaHeight(): number;
    /**
     * @hidden
     */
    protected getComputedHeight(elem: any): number;
    /**
     * @hidden
     */
    protected getFooterHeight(): number;
    /**
     * @hidden
     */
    protected getTheadRowHeight(): 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
     * 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
     */
    resolveDataTypes(rec: any): "string" | "number" | "boolean" | "date" | "image";
    /**
     * @hidden
     */
    protected autogenerateColumns(): void;
    protected generateDataFields(data: any[]): string[];
    /**
     * @hidden
     */
    protected initColumns(collection: IgxColumnComponent[], cb?: (args: any) => void): void;
    /**
     * @hidden
     */
    protected reinitPinStates(): void;
    protected extractDataFromSelection(source: any[], formatters?: boolean, headers?: boolean, columnData?: any[]): any[];
    protected getSelectableColumnsAt(index: any): IgxColumnComponent[];
    protected autoSizeColumnsInView(): void;
    protected extractDataFromColumnsSelection(source: any[], formatters?: boolean, headers?: boolean): 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, any[]>, goal: number): void;
    /**
     * @hidden
     */
    protected getColumnWidthSum(): number;
    /**
     * Notify changes, reset cache and populateVisibleIndexes.
     *
     * @hidden
     */
    private _columnsReordered;
    protected buildDataView(_data: any[]): void;
    private _applyWidthHostBinding;
    protected verticalScrollHandler(event: any): void;
    protected horizontalScrollHandler(event: any): void;
    protected get renderedActualRowHeight(): number;
    private executeCallback;
    private getNavigationArguments;
    private getNextDataRowIndex;
    /**
     * Returns the previous editable row index or -1 if no such row is found.
     *
     * @param currentIndex The index of the current editable record.
     */
    private findPrevEditableDataRowIndex;
    /**
     * Returns if the record at the specified data view index is a an editable data record.
     * If record is group rec, summary rec, child rec, ghost rec. etc. it is not editable.
     *
     * @param dataViewIndex The index of that record in the data view.
     *
     */
    private isEditableDataRecordAtIndex;
    /**
     * Returns if the record at the specified data view index is a ghost.
     * If record is pinned but is not in pinned area then it is a ghost record.
     *
     * @param dataViewIndex The index of that record in the data view.
     */
    private isGhostRecordAtIndex;
    private isValidPosition;
    private find;
    private rebuildMatchCache;
    protected updateDefaultRowHeight(): void;
    private configureRowEditingOverlay;
    private handleColumnPinningForGroups;
    protected shouldRecreateColumns(oldData: any[] | null | undefined, newData: any[] | null | undefined): boolean;
    /**
     * Clears the current navigation service active node
     */
    private clearActiveNode;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxGridBaseDirective, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxGridBaseDirective, never, never, { "snackbarDisplayTime": { "alias": "snackbarDisplayTime"; "required": false; }; "autoGenerate": { "alias": "autoGenerate"; "required": false; }; "autoGenerateExclude": { "alias": "autoGenerateExclude"; "required": false; }; "moving": { "alias": "moving"; "required": false; }; "emptyGridTemplate": { "alias": "emptyGridTemplate"; "required": false; }; "addRowEmptyTemplate": { "alias": "addRowEmptyTemplate"; "required": false; }; "loadingGridTemplate": { "alias": "loadingGridTemplate"; "required": false; }; "summaryRowHeight": { "alias": "summaryRowHeight"; "required": false; }; "dataCloneStrategy": { "alias": "dataCloneStrategy"; "required": false; }; "clipboardOptions": { "alias": "clipboardOptions"; "required": false; }; "rowClasses": { "alias": "rowClasses"; "required": false; }; "rowStyles": { "alias": "rowStyles"; "required": false; }; "primaryKey": { "alias": "primaryKey"; "required": false; }; "uniqueColumnValuesStrategy": { "alias": "uniqueColumnValuesStrategy"; "required": false; }; "dragGhostCustomTemplate": { "alias": "dragGhostCustomTemplate"; "required": false; }; "rowEditTextTemplate": { "alias": "rowEditTextTemplate"; "required": false; }; "rowAddTextTemplate": { "alias": "rowAddTextTemplate"; "required": false; }; "rowEditActionsTemplate": { "alias": "rowEditActionsTemplate"; "required": false; }; "rowExpandedIndicatorTemplate": { "alias": "rowExpandedIndicatorTemplate"; "required": false; }; "rowCollapsedIndicatorTemplate": { "alias": "rowCollapsedIndicatorTemplate"; "required": false; }; "headerExpandedIndicatorTemplate": { "alias": "headerExpandedIndicatorTemplate"; "required": false; }; "headerCollapsedIndicatorTemplate": { "alias": "headerCollapsedIndicatorTemplate"; "required": false; }; "excelStyleHeaderIconTemplate": { "alias": "excelStyleHeaderIconTemplate"; "required": false; }; "sortAscendingHeaderIconTemplate": { "alias": "sortAscendingHeaderIconTemplate"; "required": false; }; "sortDescendingHeaderIconTemplate": { "alias": "sortDescendingHeaderIconTemplate"; "required": false; }; "sortHeaderIconTemplate": { "alias": "sortHeaderIconTemplate"; "required": false; }; "resourceStrings": { "alias": "resourceStrings"; "required": false; }; "filteringLogic": { "alias": "filteringLogic"; "required": false; }; "filteringExpressionsTree": { "alias": "filteringExpressionsTree"; "required": false; }; "advancedFilteringExpressionsTree": { "alias": "advancedFilteringExpressionsTree"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "pagingMode": { "alias": "pagingMode"; "required": false; }; "hideRowSelectors": { "alias": "hideRowSelectors"; "required": false; }; "rowDraggable": { "alias": "rowDraggable"; "required": false; }; "validationTrigger": { "alias": "validationTrigger"; "required": false; }; "rowEditable": { "alias": "rowEditable"; "required": false; }; "height": { "alias": "height"; "required": false; }; "width": { "alias": "width"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "columnWidth": { "alias": "columnWidth"; "required": false; }; "emptyGridMessage": { "alias": "emptyGridMessage"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "emptyFilteredGridMessage": { "alias": "emptyFilteredGridMessage"; "required": false; }; "pinning": { "alias": "pinning"; "required": false; }; "allowFiltering": { "alias": "allowFiltering"; "required": false; }; "allowAdvancedFiltering": { "alias": "allowAdvancedFiltering"; "required": false; }; "filterMode": { "alias": "filterMode"; "required": false; }; "summaryPosition": { "alias": "summaryPosition"; "required": false; }; "summaryCalculationMode": { "alias": "summaryCalculationMode"; "required": false; }; "showSummaryOnCollapse": { "alias": "showSummaryOnCollapse"; "required": false; }; "filterStrategy": { "alias": "filterStrategy"; "required": false; }; "sortStrategy": { "alias": "sortStrategy"; "required": false; }; "sortingOptions": { "alias": "sortingOptions"; "required": false; }; "selectedRows": { "alias": "selectedRows"; "required": false; }; "headSelectorTemplate": { "alias": "headSelectorTemplate"; "required": false; }; "rowSelectorTemplate": { "alias": "rowSelectorTemplate"; "required": false; }; "dragIndicatorIconTemplate": { "alias": "dragIndicatorIconTemplate"; "required": false; }; "sortingExpressions": { "alias": "sortingExpressions"; "required": false; }; "batchEditing": { "alias": "batchEditing"; "required": false; }; "cellSelection": { "alias": "cellSelection"; "required": false; }; "rowSelection": { "alias": "rowSelection"; "required": false; }; "columnSelection": { "alias": "columnSelection"; "required": false; }; "expansionStates": { "alias": "expansionStates"; "required": false; }; "outlet": { "alias": "outlet"; "required": false; }; "totalRecords": { "alias": "totalRecords"; "required": false; }; "selectRowOnClick": { "alias": "selectRowOnClick"; "required": false; }; }, { "filteringExpressionsTreeChange": "filteringExpressionsTreeChange"; "advancedFilteringExpressionsTreeChange": "advancedFilteringExpressionsTreeChange"; "gridScroll": "gridScroll"; "cellClick": "cellClick"; "rowClick": "rowClick"; "formGroupCreated": "formGroupCreated"; "validationStatusChange": "validationStatusChange"; "selected": "selected"; "rowSelectionChanging": "rowSelectionChanging"; "columnSelectionChanging": "columnSelectionChanging"; "columnPin": "columnPin"; "columnPinned": "columnPinned"; "cellEditEnter": "cellEditEnter"; "cellEditExit": "cellEditExit"; "cellEdit": "cellEdit"; "cellEditDone": "cellEditDone"; "rowEditEnter": "rowEditEnter"; "rowEdit": "rowEdit"; "rowEditDone": "rowEditDone"; "rowEditExit": "rowEditExit"; "columnInit": "columnInit"; "columnsAutogenerated": "columnsAutogenerated"; "sorting": "sorting"; "sortingDone": "sortingDone"; "filtering": "filtering"; "filteringDone": "filteringDone"; "rowAdded": "rowAdded"; "rowDeleted": "rowDeleted"; "rowDelete": "rowDelete"; "rowAdd": "rowAdd"; "columnResized": "columnResized"; "contextMenu": "contextMenu"; "doubleClick": "doubleClick"; "columnVisibilityChanging": "columnVisibilityChanging"; "columnVisibilityChanged": "columnVisibilityChanged"; "columnMovingStart": "columnMovingStart"; "columnMoving": "columnMoving"; "columnMovingEnd": "columnMovingEnd"; "gridKeydown": "gridKeydown"; "rowDragStart": "rowDragStart"; "rowDragEnd": "rowDragEnd"; "gridCopy": "gridCopy"; "expansionStatesChange": "expansionStatesChange"; "selectedRowsChange": "selectedRowsChange"; "rowToggle": "rowToggle"; "rowPinning": "rowPinning"; "rowPinned": "rowPinned"; "activeNodeChange": "activeNodeChange"; "sortingExpressionsChange": "sortingExpressionsChange"; "toolbarExporting": "toolbarExporting"; "rangeSelected": "rangeSelected"; "rendered": "rendered"; "localeChange": "localeChange"; "dataChanging": "dataChanging"; "dataChanged": "dataChanged"; }, ["excelStyleLoadingValuesTemplateDirective", "rowAddText", "rowExpandedIndicatorDirectiveTemplate", "rowCollapsedIndicatorDirectiveTemplate", "headerExpandedIndicatorDirectiveTemplate", "headerCollapsedIndicatorDirectiveTemplate", "excelStyleHeaderIconDirectiveTemplate", "sortAscendingHeaderIconDirectiveTemplate", "sortDescendingHeaderIconDirectiveTemplate", "sortHeaderIconDirectiveTemplate", "excelStyleFilteringComponents", "columnList", "actionStripComponents", "headSelectorsTemplates", "rowSelectorsTemplates", "dragGhostCustomTemplates", "rowEditCustomDirectives", "rowEditTextDirectives", "rowEditActionsDirectives", "dragIndicatorIconTemplates", "rowEditTabsCUSTOM", "toolbar", "paginationComponents"], never, true, never>;
    static ngAcceptInputType_autoGenerate: unknown;
    static ngAcceptInputType_moving: unknown;
    static ngAcceptInputType_hideRowSelectors: unknown;
    static ngAcceptInputType_rowDraggable: unknown;
    static ngAcceptInputType_rowEditable: unknown;
    static ngAcceptInputType_isLoading: unknown;
    static ngAcceptInputType_allowFiltering: unknown;
    static ngAcceptInputType_allowAdvancedFiltering: unknown;
    static ngAcceptInputType_showSummaryOnCollapse: unknown;
    static ngAcceptInputType_batchEditing: unknown;
    static ngAcceptInputType_selectRowOnClick: unknown;
}
