/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { ChangeDetectorRef, AfterViewInit, OnChanges, OnDestroy, OnInit, QueryList, TemplateRef } from '@angular/core';
import { LocalizationService } from '@progress/kendo-angular-l10n';
import { SortDescriptor } from '@progress/kendo-data-query';
import { CompositeFilterDescriptor } from '@progress/kendo-data-query';
import { SVGIcon } from '@progress/kendo-svg-icons';
import { ColumnComponent } from '../../columns/column.component';
import { ColumnBase } from '../../columns/column-base';
import { SortSettings } from '../../columns/sort-settings';
import { SinglePopupService } from '../../common/single-popup.service';
import { FilterableSettings } from '../../filtering/filterable';
import { DropTargetDirective } from '../../dragdrop/drop-target.directive';
import { DraggableColumnDirective } from '../../dragdrop/draggable-column.directive';
import { DragHintService } from '../../dragdrop/drag-hint.service';
import { DropCueService } from '../../dragdrop/drop-cue.service';
import { ColumnReorderService } from '../../dragdrop/column-reorder.service';
import { SortService } from '../../common/sort.service';
import { SelectionService } from '../../selection/selection.service';
import { ColumnMenuSettings } from '../../column-menu/column-menu-settings.interface';
import { ColumnsContainer } from '../../columns/columns-container';
import { ColumnMenuComponent } from '../../column-menu/column-menu.component';
import { FilterMenuComponent } from '../../filtering/menu/filter-menu.component';
import { ColumnInfoService } from '../../common/column-info.service';
import { ContextService } from '../../common/provider.service';
import { NavigationService } from '../../navigation/navigation.service';
import { IdService } from '../../common/id.service';
import * as i0 from "@angular/core";
/**
 * @hidden
 */
export declare class HeaderComponent implements AfterViewInit, OnInit, OnChanges, OnDestroy {
    private popupService;
    private hint;
    private cue;
    private reorderService;
    private idService;
    private sortService;
    private selectionService;
    private localization;
    private cd;
    private columnInfoService;
    private contextService;
    private navigationService;
    /**
     * @hidden
     */
    totalColumnLevels: number;
    columns: Array<ColumnBase>;
    scrollable: boolean;
    filterable: FilterableSettings;
    sort: Array<SortDescriptor>;
    filter: CompositeFilterDescriptor;
    sortable: SortSettings;
    lockedColumnsCount: number;
    resizable: boolean;
    reorderable: boolean;
    columnMenu: boolean | ColumnMenuSettings;
    columnMenuTemplate: TemplateRef<any>;
    totalColumnsCount: number;
    totalColumns: ColumnsContainer;
    tabIndex: string;
    get isNavigable(): boolean;
    sortedFields: any;
    get headerClass(): boolean;
    hostClass: boolean;
    get sortableLabel(): string;
    get columnMenuSettings(): ColumnMenuSettings;
    dropTargets: QueryList<DropTargetDirective>;
    filterMenus: QueryList<FilterMenuComponent>;
    columnMenus: QueryList<ColumnMenuComponent>;
    get unlockedColumnsCount(): number;
    sortAscSmallIcon: SVGIcon;
    sortDescSmallIcon: SVGIcon;
    private subscription;
    private targetSubscription;
    private stopSorting;
    private _leafColumns;
    constructor(popupService: SinglePopupService, hint: DragHintService, cue: DropCueService, reorderService: ColumnReorderService, idService: IdService, sortService: SortService, selectionService: SelectionService, localization: LocalizationService, cd: ChangeDetectorRef, columnInfoService: ColumnInfoService, contextService: ContextService, navigationService: NavigationService);
    ngAfterViewInit(): void;
    ngDoCheck(): void;
    ngOnChanges(changes: any): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    getColumnComponent(column: ColumnBase): ColumnComponent;
    onSortClick(column: ColumnComponent, event: MouseEvent, link: Element): void;
    selectAllCheckboxId(): string;
    get selectAllCheckboxLabel(): string;
    sortColumn(descriptor: SortDescriptor[]): void;
    /**
     *
     * Determines whether the modifier key (if any) passed
     * with a click/keyboard event matches the user-defined multiSortKey.
     */
    matchModifier(event: MouseEvent | KeyboardEvent): boolean;
    onHeaderKeydown(column: ColumnComponent, args: KeyboardEvent): void;
    showSortNumbering(column: ColumnComponent): boolean;
    sortOrder(field: string): number;
    sortState(column: ColumnComponent): string;
    /**
     *
     * @param column
     * @param modifier - Indicates whether the client-defined `multiSortKey` modifier is met. Defaults to `true`.
     * @returns - SortDescriptor[]
     */
    toggleSort(column: ColumnComponent, modifier?: boolean): Array<SortDescriptor>;
    isFirstOnRow(column: ColumnComponent, index: number): boolean;
    logicalColumnIndex(column: any): number;
    get showFilterMenu(): boolean;
    get showFilterRow(): boolean;
    showColumnMenu(column: any): boolean;
    isFilterable(column: ColumnComponent): boolean;
    canDrop(draggable: DraggableColumnDirective, target: DropTargetDirective): boolean;
    isSortable(column: ColumnComponent): boolean;
    trackByIndex(index: number, _item: any): any;
    shouldActivate(column: ColumnBase): boolean;
    isInteractive(column: ColumnComponent, prop: string): boolean;
    isCheckboxColumn(column: any): boolean;
    private isReorderable;
    protected toggleDirection(field: string, allowUnsort: boolean, initialDirection: "asc" | "desc"): SortDescriptor;
    columnsForLevel(level: number): Array<ColumnBase>;
    isColumnGroupComponent(column: ColumnBase): boolean;
    get columnLevels(): Array<number>;
    renderSelectAll(column: any): boolean;
    selectAllChange(state: any): void;
    sortDescriptor(field: string): SortDescriptor;
    get leafColumns(): ColumnBase[];
    messageFor(token: string): string;
    private attachTargets;
    private normalizeTarget;
    private trackMove;
    private calculateBefore;
    private enter;
    private leave;
    private drop;
    static ɵfac: i0.ɵɵFactoryDeclaration<HeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "[kendoTreeListHeader]", never, { "totalColumnLevels": { "alias": "totalColumnLevels"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "scrollable": { "alias": "scrollable"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "lockedColumnsCount": { "alias": "lockedColumnsCount"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; }; "reorderable": { "alias": "reorderable"; "required": false; }; "columnMenu": { "alias": "columnMenu"; "required": false; }; "columnMenuTemplate": { "alias": "columnMenuTemplate"; "required": false; }; "totalColumnsCount": { "alias": "totalColumnsCount"; "required": false; }; "totalColumns": { "alias": "totalColumns"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, {}, never, never, true, never>;
}
