import { ChangeDetectorRef, DoCheck, ElementRef, QueryList, TemplateRef } from '@angular/core';
import { DisplayDensity } from '../../core/displayDensity';
import { IgxGridForOfDirective } from '../../directives/for-of/for_of.directive';
import { ColumnType, GridType } 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";
export interface IgxGridRowSelectorsTemplateContext {
    $implicit: {
        selectedCount: number;
        totalCount: number;
        selectAll?: () => void;
        deselectAll?: () => void;
    };
}
/**
 *
 * 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 {
    private ref;
    private cdr;
    /** 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;
    density: DisplayDensity;
    /**
     * @hidden
     * @internal
     */
    get cosyStyle(): boolean;
    /**
     * @hidden
     * @internal
     */
    get compactStyle(): boolean;
    /**
     * Header groups inside the header row.
     *
     * @remark
     * 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<IgxGridHeaderGroupComponent>;
    headerDragContainer: ElementRef<HTMLElement>;
    headerSelectorContainer: ElementRef<HTMLElement>;
    headerGroupContainer: ElementRef<HTMLElement>;
    headSelectorBaseTemplate: TemplateRef<IgxGridRowSelectorsTemplateContext>;
    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(): IgxGridRowSelectorsTemplateContext;
    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;
    headerRowSelection(event: MouseEvent): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxGridHeaderRowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<IgxGridHeaderRowComponent, "igx-grid-header-row", never, { "grid": "grid"; "pinnedColumnCollection": "pinnedColumnCollection"; "unpinnedColumnCollection": "unpinnedColumnCollection"; "activeDescendant": "activeDescendant"; "hasMRL": "hasMRL"; "width": "width"; "density": "density"; }, {}, never, never>;
}
