import { AfterContentInit, AfterViewInit, ChangeDetectorRef, ComponentFactoryResolver, ElementRef, EventEmitter, IterableDiffers, NgZone, OnDestroy, OnInit, QueryList, TemplateRef, ViewContainerRef } from '@angular/core';
import { Subject } from 'rxjs';
import { IgxSelectionAPIService } from '../core/selection';
import { DisplayDensity } from '../core/utils';
import { DataType } from '../data-operations/data-util';
import { FilteringLogic } from '../data-operations/filtering-expression.interface';
import { IGroupByExpandState } from '../data-operations/groupby-expand-state.interface';
import { IGroupByRecord } from '../data-operations/groupby-record.interface';
import { ISortingExpression } from '../data-operations/sorting-expression.interface';
import { IForOfState, IgxForOfDirective } from '../directives/for-of/for_of.directive';
import { IgxBaseExporter, IgxExporterOptionsBase } from '../services/index';
import { IgxCheckboxComponent } from './../checkbox/checkbox.component';
import { IgxGridAPIService } from './api.service';
import { IgxGridCellComponent } from './cell.component';
import { IColumnVisibilityChangedEventArgs } from './column-hiding-item.directive';
import { IgxColumnComponent } from './column.component';
import { ISummaryExpression } from './grid-summary';
import { IgxGroupByRowTemplateDirective } from './grid.common';
import { IgxGridToolbarComponent } from './grid-toolbar.component';
import { IgxGridGroupByRowComponent } from './groupby-row.component';
import { IgxGridRowComponent } from './row.component';
import { IFilteringOperation, IFilteringExpressionsTree } from '../../public_api';
export interface IGridCellEventArgs {
    cell: IgxGridCellComponent;
    event: Event;
}
export interface IGridEditEventArgs {
    row: IgxGridRowComponent;
    cell: IgxGridCellComponent;
    currentValue: any;
    newValue: any;
}
export interface IPinColumnEventArgs {
    column: IgxColumnComponent;
    insertAtIndex: number;
}
export interface IPageEventArgs {
    previous: number;
    current: number;
}
export interface IRowDataEventArgs {
    data: any;
}
export interface IColumnResizeEventArgs {
    column: IgxColumnComponent;
    prevWidth: string;
    newWidth: string;
}
export interface IRowSelectionEventArgs {
    oldSelection: any[];
    newSelection: any[];
    row?: IgxGridRowComponent;
    event?: Event;
}
export interface ISearchInfo {
    searchText: string;
    caseSensitive: boolean;
    activeMatchIndex: number;
    matchInfoCache: any[];
}
export interface IGridToolbarExportEventArgs {
    grid: IgxGridComponent;
    exporter: IgxBaseExporter;
    options: IgxExporterOptionsBase;
    cancel: boolean;
}
export interface IColumnMovingStartEventArgs {
    source: IgxColumnComponent;
}
export interface IColumnMovingEventArgs {
    source: IgxColumnComponent;
    cancel: boolean;
}
export interface IColumnMovingEndEventArgs {
    source: IgxColumnComponent;
    target: IgxColumnComponent;
    cancel: boolean;
}
/**
 * **Ignite UI for Angular Grid** -
 * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid.html)
 *
 * The Ignite UI Grid is used for presenting and manipulating tabular data in the simplest way possible.  Once data
 * has been bound, it can be manipulated through filtering, sorting & editing operations.
 *
 * Example:
 * ```html
 * <igx-grid [data]="employeeData" autoGenerate="false">
 *   <igx-column field="first" header="First Name"></igx-column>
 *   <igx-column field="last" header="Last Name"></igx-column>
 *   <igx-column field="role" header="Role"></igx-column>
 * </igx-grid>
 * ```
 */
export declare class IgxGridComponent implements OnInit, OnDestroy, AfterContentInit, AfterViewInit {
    private gridAPI;
    selectionAPI: IgxSelectionAPIService;
    private elementRef;
    private zone;
    document: any;
    cdr: ChangeDetectorRef;
    private resolver;
    private differs;
    private viewRef;
    data: any[];
    autoGenerate: boolean;
    id: string;
    filteringLogic: FilteringLogic;
    filteringExpressionsTree: IFilteringExpressionsTree;
    filteredData: any;
    groupingExpressions: any[];
    groupingExpansionState: IGroupByExpandState[];
    private collapsedHighlightedItem;
    groupsExpanded: boolean;
    groupsRecords: IGroupByRecord[];
    paging: boolean;
    page: number;
    perPage: number;
    paginationTemplate: TemplateRef<any>;
    displayDensity: DisplayDensity | string;
    columnHiding: boolean;
    rowSelectable: boolean;
    height: any;
    width: any;
    readonly headerWidth: number;
    evenRowCSS: string;
    oddRowCSS: string;
    rowHeight: number;
    columnWidth: string;
    primaryKey: any;
    emptyGridMessage: string;
    columnHidingTitle: string;
    columnPinning: boolean;
    columnPinningTitle: string;
    onCellClick: EventEmitter<IGridCellEventArgs>;
    onSelection: EventEmitter<IGridCellEventArgs>;
    onRowSelectionChange: EventEmitter<IRowSelectionEventArgs>;
    onColumnPinning: EventEmitter<IPinColumnEventArgs>;
    /**
     * An @Output property emitting an event when cell or row editing has been performed in the grid.
     * On cell editing, both cell and row objects in the event arguments are defined for the corresponding
     * cell that is being edited and the row the cell belongs to.
     * On row editing, only the row object is defined, for the row that is being edited.
     * The cell object is null on row editing.
     */
    onEditDone: EventEmitter<IGridEditEventArgs>;
    onColumnInit: EventEmitter<IgxColumnComponent>;
    onSortingDone: EventEmitter<ISortingExpression>;
    onFilteringDone: EventEmitter<IFilteringExpressionsTree>;
    onPagingDone: EventEmitter<IPageEventArgs>;
    onRowAdded: EventEmitter<IRowDataEventArgs>;
    onRowDeleted: EventEmitter<IRowDataEventArgs>;
    onGroupingDone: EventEmitter<any>;
    onDataPreLoad: EventEmitter<any>;
    onColumnResized: EventEmitter<IColumnResizeEventArgs>;
    onContextMenu: EventEmitter<IGridCellEventArgs>;
    onDoubleClick: EventEmitter<IGridCellEventArgs>;
    onColumnVisibilityChanged: EventEmitter<IColumnVisibilityChangedEventArgs>;
    onColumnMovingStart: EventEmitter<IColumnMovingStartEventArgs>;
    onColumnMoving: EventEmitter<IColumnMovingEventArgs>;
    onColumnMovingEnd: EventEmitter<IColumnMovingEndEventArgs>;
    protected onDensityChanged: EventEmitter<any>;
    columnList: QueryList<IgxColumnComponent>;
    protected groupTemplate: IgxGroupByRowTemplateDirective;
    rowList: QueryList<any>;
    dataRowList: QueryList<any>;
    groupsRowList: QueryList<IgxGridGroupByRowComponent>;
    emptyGridTemplate: TemplateRef<any>;
    parentVirtDir: IgxForOfDirective<any>;
    verticalScrollContainer: IgxForOfDirective<any>;
    scr: ElementRef;
    paginator: ElementRef;
    headerContainer: IgxForOfDirective<any>;
    headerCheckboxContainer: ElementRef;
    headerGroupContainer: ElementRef;
    headerCheckbox: IgxCheckboxComponent;
    groupArea: ElementRef;
    theadRow: ElementRef;
    tbody: ElementRef;
    tfoot: ElementRef;
    summaries: ElementRef;
    tabindex: number;
    readonly hostClass: string;
    readonly groupAreaHostClass: string;
    hostRole: string;
    readonly pipeTrigger: number;
    sortingExpressions: any[];
    virtualizationState: IForOfState;
    totalItemCount: number;
    readonly maxLevelHeaderDepth: any;
    readonly hiddenColumnsCount: number;
    hiddenColumnsText: string;
    pinnedColumnsText: string;
    private _showToolbar;
    private _exportExcel;
    private _exportCsv;
    private _toolbarTitle;
    private _exportText;
    private _exportExcelText;
    private _exportCsvText;
    toolbar: IgxGridToolbarComponent;
    private toolbarHtml;
    readonly shouldShowToolbar: boolean;
    showToolbar: boolean;
    toolbarTitle: string;
    exportExcel: boolean;
    exportCsv: boolean;
    exportText: string;
    exportExcelText: string;
    exportCsvText: string;
    onToolbarExporting: EventEmitter<IGridToolbarExportEventArgs>;
    pagingState: any;
    calcWidth: number;
    calcRowCheckboxWidth: number;
    calcHeight: number;
    tfootHeight: number;
    chipsGoupingExpressions: any[];
    summariesHeight: number;
    draggedColumn: IgxColumnComponent;
    isColumnResizing: boolean;
    isColumnMoving: boolean;
    eventBus: Subject<boolean>;
    allRowsSelected: boolean;
    lastSearchInfo: ISearchInfo;
    protected destroy$: Subject<boolean>;
    protected _perPage: number;
    protected _page: number;
    protected _paging: boolean;
    protected _rowSelection: boolean;
    protected _pipeTrigger: number;
    protected _columns: IgxColumnComponent[];
    protected _pinnedColumns: IgxColumnComponent[];
    protected _unpinnedColumns: IgxColumnComponent[];
    protected _filteringExpressionsTree: IFilteringExpressionsTree;
    protected _sortingExpressions: any[];
    protected _maxLevelHeaderDepth: any;
    protected _groupingExpressions: any[];
    protected _groupingExpandState: IGroupByExpandState[];
    protected _groupRowTemplate: TemplateRef<any>;
    protected _groupAreaTemplate: TemplateRef<any>;
    protected _columnHiding: boolean;
    protected _columnPinning: boolean;
    private _filteredData;
    private resizeHandler;
    private columnListDiffer;
    private _hiddenColumnsText;
    private _pinnedColumnsText;
    private _height;
    private _width;
    private _displayDensity;
    private _ngAfterViewInitPaassed;
    constructor(gridAPI: IgxGridAPIService, selectionAPI: IgxSelectionAPIService, elementRef: ElementRef, zone: NgZone, document: any, cdr: ChangeDetectorRef, resolver: ComponentFactoryResolver, differs: IterableDiffers, viewRef: ViewContainerRef);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    dataLoading(event: any): void;
    toggleColumnVisibility(args: IColumnVisibilityChangedEventArgs): void;
    readonly nativeElement: any;
    groupRowTemplate: TemplateRef<any>;
    groupAreaTemplate: TemplateRef<any>;
    readonly calcResizerHeight: number;
    readonly defaultRowHeight: number;
    readonly calcPinnedContainerMaxWidth: number;
    readonly unpinnedAreaMinWidth: number;
    readonly pinnedWidth: number;
    readonly unpinnedWidth: number;
    readonly summariesMargin: number;
    readonly columns: IgxColumnComponent[];
    readonly pinnedColumns: IgxColumnComponent[];
    readonly unpinnedColumns: IgxColumnComponent[];
    getColumnByName(name: string): IgxColumnComponent;
    getRowByIndex(index: number): IgxGridRowComponent;
    getRowByKey(keyValue: any): IgxGridRowComponent;
    readonly visibleColumns: IgxColumnComponent[];
    getCellByColumn(rowIndex: number, columnField: string): IgxGridCellComponent;
    getCellByKey(rowSelector: any, columnField: string): IgxGridCellComponent;
    readonly totalPages: number;
    readonly totalRecords: number;
    readonly isFirstPage: boolean;
    readonly isLastPage: boolean;
    readonly totalWidth: number;
    protected _moveColumns(from: IgxColumnComponent, to: IgxColumnComponent): void;
    protected _resetColumnList(list?: any): any[];
    protected _moveChildColumns(parent: IgxColumnComponent, from: IgxColumnComponent, to: IgxColumnComponent): void;
    moveColumn(column: IgxColumnComponent, dropTarget: IgxColumnComponent): void;
    nextPage(): void;
    previousPage(): void;
    paginate(val: number): void;
    markForCheck(): void;
    addRow(data: any): void;
    deleteRow(rowSelector: any): void;
    updateCell(value: any, rowSelector: any, column: string): void;
    updateRow(value: any, rowSelector: any): void;
    sort(expression: ISortingExpression | Array<ISortingExpression>): void;
    groupBy(expression: ISortingExpression | Array<ISortingExpression>): void;
    clearGrouping(name?: string): void;
    isExpandedGroup(group: IGroupByRecord): boolean;
    toggleGroup(groupRow: IGroupByRecord): void;
    isGroupByRecord(record: any): boolean;
    readonly dropAreaVisible: boolean;
    filter(name: string, value: any, conditionOrExpressionTree?: IFilteringOperation | IFilteringExpressionsTree, ignoreCase?: boolean): void;
    filterGlobal(value: any, condition?: any, ignoreCase?: any): void;
    enableSummaries(...rest: any[]): void;
    disableSummaries(...rest: any[]): void;
    clearFilter(name?: string): void;
    clearSort(name?: string): void;
    clearSummaryCache(editCell?: any): void;
    pinColumn(columnName: string | IgxColumnComponent, index?: any): boolean;
    unpinColumn(columnName: string | IgxColumnComponent, index?: any): boolean;
    toggleAllGroupRows(): void;
    /**
     * Recalculates grid width/height dimensions. Should be run when changing DOM elements dimentions manually that affect the grid's size.
     */
    reflow(): void;
    findNext(text: string, caseSensitive?: boolean): number;
    findPrev(text: string, caseSensitive?: boolean): number;
    refreshSearch(updateActiveInfo?: boolean): number;
    clearSearch(): void;
    readonly hasGroupableColumns: boolean;
    readonly hasSortableColumns: boolean;
    readonly hasEditableColumns: boolean;
    readonly hasFilterableColumns: boolean;
    readonly hasSummarizedColumns: boolean;
    readonly hasMovableColumns: boolean;
    readonly hasColumnGroups: boolean;
    readonly selectedCells: IgxGridCellComponent[] | any[];
    protected readonly rowBasedHeight: number;
    protected _derivePossibleHeight(): void;
    protected _derivePossibleWidth(): void;
    protected calculateGridHeight(): void;
    protected _calculateGridBodyHeight(gridHeight: number, toolbarHeight: number, pagingHeight: number, groupAreaHeight: number): number;
    protected getPossibleColumnWidth(): string;
    protected calculateGridWidth(): void;
    protected calcMaxSummaryHeight(): number;
    protected calculateGridSizes(): void;
    /**
     * Gets calculated width of the start pinned area
     * @param takeHidden If we should take into account the hidden columns in the pinned area
     */
    getPinnedWidth(takeHidden?: boolean): number;
    /**
     * 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;
    protected _sort(expression: ISortingExpression): void;
    protected _sortMultiple(expressions: ISortingExpression[]): void;
    protected _groupBy(expression: ISortingExpression): void;
    protected _groupByMultiple(expressions: ISortingExpression[]): void;
    protected _getStateForGroupRow(groupRow: IGroupByRecord): IGroupByExpandState;
    protected _toggleGroup(groupRow: IGroupByRecord): void;
    protected _applyGrouping(): void;
    protected _summaries(fieldName: string, hasSummary: boolean, summaryOperand?: any): void;
    protected _multipleSummaries(expressions: ISummaryExpression[], hasSummary: boolean): void;
    protected _disableMultipleSummaries(expressions: string[], hasSummary: boolean): void;
    protected resolveDataTypes(rec: any): DataType;
    protected autogenerateColumns(): void;
    onlyTopLevel(arr: any): any;
    protected initColumns(collection: QueryList<IgxColumnComponent>, cb?: any): void;
    protected reinitPinStates(): void;
    protected setEventBusSubscription(): void;
    protected setVerticalScrollSubscription(): void;
    onHeaderCheckboxClick(event: any): void;
    readonly headerCheckboxAriaLabel: string;
    readonly template: TemplateRef<any>;
    checkHeaderChecboxStatus(headerStatus?: boolean): void;
    filteredItemsStatus(componentID: string, filteredData: any[], primaryKey?: any): "indeterminate" | "allSelected" | "noneSelected";
    updateHeaderChecboxStatusOnFilter(data: any): void;
    selectedRows(): any[];
    selectRows(rowIDs: any[], clearCurrentSelection?: boolean): void;
    deselectRows(rowIDs: any[]): void;
    selectAllRows(): void;
    deselectAllRows(): void;
    triggerRowSelectionChange(newSelection: any[], row?: IgxGridRowComponent, event?: Event, headerStatus?: boolean): void;
    navigateDown(rowIndex: number, columnIndex: number): void;
    navigateUp(rowIndex: number, columnIndex: number): void;
    scrollHandler(event: any): void;
    private _focusNextCell(rowIndex, columnIndex, dir?);
    private subscribeNext(virtualContainer, callback);
    private performVerticalScroll(amount, rowIndex, columnIndex);
    trackColumnChanges(index: any, col: any): any;
    private find(text, increment, caseSensitive?, scroll?);
    readonly filteredSortedData: any[];
    protected initPinning(): void;
    private scrollTo(row, column, page, groupByRecord?);
    private scrollDirective(directive, goal);
    private rebuildMatchCache();
    private getGroupIncrementData();
    private getLevelIncrement(currentIncrement, currentHierarchy, prevHierarchy);
    private getGroupByRecords();
    private getPagingIncrement(groupByIncrement, groupIndexData, page);
    private restoreHighlight();
    notGroups(arr: any): any;
    onChipRemoved(event: any): void;
    chipsOrderChanged(event: any): void;
    chipsMovingEnded(): void;
    onChipClicked(event: any): void;
    onChipKeyDown(event: any): void;
}
