import { ChangeDetectorRef, DoCheck, ElementRef, QueryList, TemplateRef } from '@angular/core';
import { trackByIdentity } from '../../core/utils';
import { IgxGridForOfDirective } from '../../directives/for-of/for_of.directive';
import { ColumnType, GridType, IgxHeadSelectorTemplateContext } from '../common/grid.interface';
import { IgxGridFilteringCellComponent } from '../filtering/base/grid-filtering-cell.component';
import { IgxGridFilteringRowComponent } from '../filtering/base/grid-filtering-row.component';
import { IgxGridHeaderGroupComponent } from './grid-header-group.component';
import { IgxGridHeaderComponent } from './grid-header.component';
import * as i0 from "@angular/core";
/**
 *
 * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.
 *
 * This container holds the grid header elements and their behavior/interactions.
 *
 * @hidden @internal
 */
export declare class IgxGridHeaderRowComponent implements DoCheck {
    protected ref: ElementRef<HTMLElement>;
    protected cdr: ChangeDetectorRef;
    /** The grid component containing this element. */
    grid: GridType;
    /** Pinned columns of the grid. */
    pinnedColumnCollection: ColumnType[];
    /** Unpinned columns of the grid. */
    unpinnedColumnCollection: ColumnType[];
    activeDescendant: string;
    hasMRL: boolean;
    width: number;
    /**
     * Header groups inside the header row.
     *
     * @remarks
     * Note: These are only the top level header groups in case there are multi-column headers
     * or a specific column layout. If you want to get the flattened collection use the `groups`
     * property below.
     *
     * @hidden @internal
     * */
    _groups: QueryList<IgxGridHeaderGroupComponent>;
    /**
     * The flattened header groups collection.
     *
     * @hidden @internal
     */
    get groups(): IgxGridHeaderGroupComponent[];
    /** Header components in the header row. */
    get headers(): IgxGridHeaderComponent[];
    /** Filtering cell components in the header row. */
    get filters(): IgxGridFilteringCellComponent[];
    /** The virtualized part of the header row containing the unpinned header groups. */
    headerContainer: IgxGridForOfDirective<ColumnType, ColumnType[]>;
    get headerForOf(): IgxGridForOfDirective<ColumnType, ColumnType[]>;
    headerDragContainer: ElementRef<HTMLElement>;
    headerSelectorContainer: ElementRef<HTMLElement>;
    headerGroupContainer: ElementRef<HTMLElement>;
    headSelectorBaseTemplate: TemplateRef<IgxHeadSelectorTemplateContext>;
    filterRow: IgxGridFilteringRowComponent;
    /**
     * Expand/collapse all child grids area in a hierarchical grid.
     * `undefined` in the base and tree grids.
     *
     * @internal @hidden
     */
    headerHierarchyExpander: ElementRef<HTMLElement>;
    get navigation(): any;
    get nativeElement(): HTMLElement;
    /**
     * Returns whether the current grid instance is a hierarchical grid.
     * as only hierarchical grids have the `isHierarchicalRecord` method.
     *
     * @hidden @internal
     */
    get isHierarchicalGrid(): boolean;
    get indentationCSSClasses(): string;
    get rowSelectorsContext(): IgxHeadSelectorTemplateContext;
    constructor(ref: ElementRef<HTMLElement>, cdr: ChangeDetectorRef);
    /**
     * This hook exists as a workaround for the unfortunate fact
     * that when we have pinned columns in the grid, the unpinned columns headers
     * are affected by a delayed change detection cycle after a horizontal scroll :(
     * Thus, we tell the parent grid change detector to check us at each cycle.
     *
     * @hidden @internal
     */
    ngDoCheck(): void;
    /**
     * @hidden @internal
     */
    scroll(event: Event): void;
    headerRowSelection(event: MouseEvent): void;
    /** state persistence switching all pinned columns resets collection */
    protected trackPinnedColumn: typeof trackByIdentity;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxGridHeaderRowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxGridHeaderRowComponent, "igx-grid-header-row", never, { "grid": { "alias": "grid"; "required": false; }; "pinnedColumnCollection": { "alias": "pinnedColumnCollection"; "required": false; }; "unpinnedColumnCollection": { "alias": "unpinnedColumnCollection"; "required": false; }; "activeDescendant": { "alias": "activeDescendant"; "required": false; }; "hasMRL": { "alias": "hasMRL"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_hasMRL: unknown;
}
