import { EventEmitter, OnInit, TemplateRef, QueryList, AfterContentInit, DoCheck } from '@angular/core';
import { IgxGridBaseDirective } from '../grid-base.directive';
import { ITreeGridRecord } from './tree-grid.interfaces';
import { IRowToggleEventArgs } from './tree-grid.interfaces';
import { HierarchicalTransaction, HierarchicalState } from '../../services/transaction/transaction';
import { IgxHierarchicalTransactionService } from '../../services/index';
import { IgxRowLoadingIndicatorTemplateDirective } from './tree-grid.directives';
import { GridType } from '../common/grid.interface';
import { IgxColumnComponent } from '../columns/column.component';
/**
* **Ignite UI for Angular Tree Grid** -
* [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid.html)
*
* The Ignite UI Tree Grid displays and manipulates hierarchical data with consistent schema formatted as a table and
* provides features such as sorting, filtering, editing, column pinning, paging, column moving and hiding.
*
* Example:
* ```html
*
*
*
*
*
* ```
*/
export declare class IgxTreeGridComponent extends IgxGridBaseDirective implements GridType, OnInit, DoCheck, AfterContentInit {
private _id;
private _data;
private _rowLoadingIndicatorTemplate;
protected _transactions: IgxHierarchicalTransactionService;
/**
* An @Input property that sets the value of the `id` attribute. If not provided it will be automatically generated.
* ```html
*
* ```
* @memberof IgxTreeGridComponent
*/
id: string;
/**
* An @Input property that lets you fill the `IgxTreeGridComponent` with an array of data.
* ```html
*
* ```
* @memberof IgxTreeGridComponent
*/
data: any[];
/**
* Returns an array of objects containing the filtered data in the `IgxGridComponent`.
* ```typescript
* let filteredData = this.grid.filteredData;
* ```
* @memberof IgxTreeGridComponent
*/
/**
* Sets an array of objects containing the filtered data in the `IgxGridComponent`.
* ```typescript
* this.grid.filteredData = [{
* ID: 1,
* Name: "A"
* }];
* ```
* @memberof IgxTreeGridComponent
*/
filteredData: any;
/**
* Get transactions service for the grid.
* @experimental @hidden
*/
readonly transactions: IgxHierarchicalTransactionService;
/**
* @hidden
*/
flatData: any[];
/**
* @hidden
*/
processedExpandedFlatData: any[];
/**
* Returns an array of the root level `ITreeGridRecord`s.
* ```typescript
* // gets the root record with index=2
* const states = this.grid.rootRecords[2];
* ```
* @memberof IgxTreeGridComponent
*/
rootRecords: ITreeGridRecord[];
/**
* Returns a map of all `ITreeGridRecord`s.
* ```typescript
* // gets the record with primaryKey=2
* const states = this.grid.records.get(2);
* ```
* @memberof IgxTreeGridComponent
*/
records: Map;
/**
* Returns an array of processed (filtered and sorted) root `ITreeGridRecord`s.
* ```typescript
* // gets the processed root record with index=2
* const states = this.grid.processedRootRecords[2];
* ```
* @memberof IgxTreeGridComponent
*/
processedRootRecords: ITreeGridRecord[];
/**
* Returns a map of all processed (filtered and sorted) `ITreeGridRecord`s.
* ```typescript
* // gets the processed record with primaryKey=2
* const states = this.grid.processedRecords.get(2);
* ```
* @memberof IgxTreeGridComponent
*/
processedRecords: Map;
/**
* An @Input property that sets the child data key of the `IgxTreeGridComponent`.
* ```html
*
* ```
* @memberof IgxTreeGridComponent
*/
childDataKey: any;
/**
* An @Input property that sets the foreign key of the `IgxTreeGridComponent`.
* ```html
*
*
* ```
* @memberof IgxTreeGridComponent
*/
foreignKey: any;
/**
* An @Input property that sets the key indicating whether a row has children.
* This property is only used for load on demand scenarios.
* ```html
*
*
* ```
* @memberof IgxTreeGridComponent
*/
hasChildrenKey: any;
/**
* An @Input property indicating whether child records should be deleted when their parent gets deleted.
* By default it is set to true and deletes all children along with the parent.
* ```html
*
*
* ```
* @memberof IgxTreeGridComponent
*/
cascadeOnDelete: boolean;
private _expansionDepth;
/**
* An @Input property that sets the count of levels to be expanded in the `IgxTreeGridComponent`. By default it is
* set to `Infinity` which means all levels would be expanded.
* ```html
*
* ```
* @memberof IgxTreeGridComponent
*/
expansionDepth: number;
private _expansionStates;
/**
* Returns a list of key-value pairs [row ID, expansion state]. Includes only states that differ from the default one.
* ```typescript
* const expansionStates = this.grid.expansionStates;
* ```
* @memberof IgxTreeGridComponent
*/
/**
* Sets a list of key-value pairs [row ID, expansion state].
* ```typescript
* const states = new Map();
* states.set(1, true);
* this.grid.expansionStates = states;
* ```
*
* Two-way data binding.
* ```html
*
*
* ```
* @memberof IgxTreeGridComponent
*/
expansionStates: Map;
/**
*@hidden
*/
expansionStatesChange: EventEmitter