import { ApplicationRef, ChangeDetectorRef, ComponentFactoryResolver, ElementRef, EventEmitter, Injector, IterableDiffers, NgModuleRef, NgZone, TemplateRef, ViewContainerRef } from '@angular/core';
import { IgxGridBaseDirective } from '../grid-base.directive';
import { IgxHierarchicalGridAPIService } from './hierarchical-grid-api.service';
import { IgxRowIslandComponent } from './row-island.component';
import { IgxFilteringService } from '../filtering/grid-filtering.service';
import { IDisplayDensityOptions } from '../../core/displayDensity';
import { IgxHierarchicalGridNavigationService } from './hierarchical-grid-navigation.service';
import { IgxGridSummaryService } from '../summaries/grid-summary.service';
import { IgxGridSelectionService } from '../selection/selection.service';
import { IgxColumnResizingService } from '../resizing/resizing.service';
import { GridServiceType, GridType, IPathSegment } from '../common/grid.interface';
import { IgxColumnGroupComponent } from '../columns/column-group.component';
import { IgxColumnComponent } from '../columns/column.component';
import { IForOfState } from '../../directives/for-of/for_of.directive';
import { PlatformUtil } from '../../core/utils';
import { IgxFlatTransactionFactory } from '../../services/transaction/transaction-factory.service';
import { IgxTransactionService } from '../../services/transaction/igx-transaction';
import { IgxOverlayService } from '../../services/overlay/overlay';
import { State, Transaction, TransactionService } from '../../services/transaction/transaction';
import * as i0 from "@angular/core";
export declare const hierarchicalTransactionServiceFactory: () => IgxTransactionService<Transaction, State>;
export declare const IgxHierarchicalTransactionServiceFactory: {
    provide: import("@angular/core").InjectionToken<string>;
    useFactory: () => IgxTransactionService<Transaction, State>;
};
export declare abstract class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective implements GridType {
    selectionService: IgxGridSelectionService;
    colResizingService: IgxColumnResizingService;
    gridAPI: GridServiceType;
    protected transactionFactory: IgxFlatTransactionFactory;
    document: any;
    protected overlayService: IgxOverlayService;
    summaryService: IgxGridSummaryService;
    protected _displayDensityOptions: IDisplayDensityOptions;
    protected platform: PlatformUtil;
    protected _diTransactions?: TransactionService<Transaction, State>;
    /**
     * Gets/Sets the key indicating whether a row has children. If row has no children it does not render an expand indicator.
     *
     * @example
     * ```html
     * <igx-hierarchical-grid #grid [data]="localData" [hasChildrenKey]="'hasEmployees'">
     * </igx-hierarchical-grid>
     * ```
     */
    hasChildrenKey: string;
    /**
     * Gets/Sets whether the expand/collapse all button in the header should be rendered.
     *
     * @remark
     * The default value is false.
     * @example
     * ```html
     * <igx-hierarchical-grid #grid [data]="localData" [showExpandAll]="true">
     * </igx-hierarchical-grid>
     * ```
     */
    showExpandAll: boolean;
    /**
     * Emitted when a new chunk of data is loaded from virtualization.
     *
     * @example
     * ```typescript
     *  <igx-hierarchical-grid [id]="'igx-grid-1'" [data]="Data" [autoGenerate]="true" (dataPreLoad)="handleEvent()">
     *  </igx-hierarchical-grid>
     * ```
     */
    dataPreLoad: EventEmitter<IForOfState>;
    /**
     * @hidden
     * @internal
     */
    dragIndicatorIconBase: TemplateRef<any>;
    /**
     * @hidden
     */
    get maxLevelHeaderDepth(): any;
    /**
     * Gets the outlet used to attach the grid's overlays to.
     *
     * @remark
     * If set, returns the outlet defined outside the grid. Otherwise returns the grid's internal outlet directive.
     */
    get outlet(): any;
    /**
     * Sets the outlet used to attach the grid's overlays to.
     */
    set outlet(val: any);
    /** @hidden @internal */
    batchEditingChange: EventEmitter<boolean>;
    get batchEditing(): boolean;
    set batchEditing(val: boolean);
    /**
     * @hidden
     */
    hgridAPI: IgxHierarchicalGridAPIService;
    /**
     * @hidden
     */
    parentIsland: IgxRowIslandComponent;
    abstract rootGrid: GridType;
    abstract expandChildren: boolean;
    constructor(selectionService: IgxGridSelectionService, colResizingService: IgxColumnResizingService, gridAPI: GridServiceType, transactionFactory: IgxFlatTransactionFactory, elementRef: ElementRef<HTMLElement>, zone: NgZone, document: any, cdr: ChangeDetectorRef, resolver: ComponentFactoryResolver, differs: IterableDiffers, viewRef: ViewContainerRef, appRef: ApplicationRef, moduleRef: NgModuleRef<any>, factoryResolver: ComponentFactoryResolver, injector: Injector, navigation: IgxHierarchicalGridNavigationService, filteringService: IgxFilteringService, overlayService: IgxOverlayService, summaryService: IgxGridSummaryService, _displayDensityOptions: IDisplayDensityOptions, localeId: string, platform: PlatformUtil, _diTransactions?: TransactionService<Transaction, State>);
    /**
     * @hidden
     */
    createColumnsList(cols: Array<any>): void;
    protected _createColumn(col: any): any;
    protected _createColGroupComponent(col: IgxColumnGroupComponent): import("@angular/core").ComponentRef<IgxColumnGroupComponent>;
    protected _createColComponent(col: any): import("@angular/core").ComponentRef<IgxColumnComponent>;
    protected getGridsForIsland(rowIslandID: string): GridType[];
    protected getChildGrid(path: Array<IPathSegment>): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxHierarchicalGridBaseDirective, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, null, null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxHierarchicalGridBaseDirective, never, never, { "hasChildrenKey": "hasChildrenKey"; "showExpandAll": "showExpandAll"; }, { "dataPreLoad": "dataPreLoad"; }, never>;
}
