import { ChangeDetectorRef, ElementRef, EnvironmentInjector, EventEmitter, Injector, IterableDiffers, NgZone, 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 { 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 { 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 { IgxGridValidationService } from '../grid/grid-validation.service';
import { IgxTextHighlightService } from '../../directives/text-highlight/text-highlight.service';
import { IgxIconService } from '../../icon/icon.service';
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 {
    gridAPI: IgxHierarchicalGridAPIService;
    /**
     * 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 */
    get type(): GridType["type"];
    /**
     * @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
     */
    parentIsland: IgxRowIslandComponent;
    abstract rootGrid: GridType;
    abstract expandChildren: boolean;
    constructor(validationService: IgxGridValidationService, selectionService: IgxGridSelectionService, colResizingService: IgxColumnResizingService, gridAPI: IgxHierarchicalGridAPIService, transactionFactory: IgxFlatTransactionFactory, elementRef: ElementRef<HTMLElement>, zone: NgZone, document: any, cdr: ChangeDetectorRef, differs: IterableDiffers, viewRef: ViewContainerRef, injector: Injector, envInjector: EnvironmentInjector, navigation: IgxHierarchicalGridNavigationService, filteringService: IgxFilteringService, textHighlightService: IgxTextHighlightService, overlayService: IgxOverlayService, summaryService: IgxGridSummaryService, localeId: string, platform: PlatformUtil, _diTransactions?: TransactionService<Transaction, State>, iconService?: IgxIconService);
    /**
     * @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, null, { optional: true; }, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxHierarchicalGridBaseDirective, never, never, { "hasChildrenKey": { "alias": "hasChildrenKey"; "required": false; }; "showExpandAll": { "alias": "showExpandAll"; "required": false; }; }, { "dataPreLoad": "dataPreLoad"; }, never, never, false, never>;
    static ngAcceptInputType_showExpandAll: unknown;
}
