import { BooleanInput } from '@angular/cdk/coercion';
import { ChangeDetectorRef, ElementRef, EventEmitter, TemplateRef } from '@angular/core';
import { DejaClipboardService, Destroy } from '@deja-js/component/core';
import { ISortInfos } from '@deja-js/component/core/item-list';
import { IDejaDragContext, IDejaDropContext } from '@deja-js/component/dragdrop';
import { IDejaGridColumn, IDejaGridColumnEvent, IDejaGridColumnLayoutEvent, IDejaGridColumnSizeEvent } from '../data-grid-column/data-grid-column';
import { IDejaGridColumnLayout } from '../data-grid-column/data-grid-column-layout';
import * as i0 from "@angular/core";
export declare class DejaGridHeaderComponent extends Destroy {
    private changeDetectorRef;
    private clipboardService;
    /** Template d'entête de colonne si définit extérieurement à la grille */
    columnHeaderTemplateExternal: TemplateRef<unknown>;
    /** Infos de tri à afficher dans les entêtes */
    sortInfos: ISortInfos;
    /** Cet évenement est levé lorsque la taille d'une colonne est modifiée */
    readonly columnSizeChanged: EventEmitter<IDejaGridColumnSizeEvent>;
    /** Cet évenement est levé lorsque la position des colonnes est modifiée */
    readonly columnLayoutChanged: EventEmitter<IDejaGridColumnLayoutEvent>;
    /** Cet évenement est levé lorsqu'une entête de colonne est cliquée */
    readonly columnHeaderClicked: EventEmitter<IDejaGridColumnEvent>;
    /** Cet évenement est levé lorsqu'une colonne est drag and dropée */
    readonly columnDragEnd: EventEmitter<any>;
    /** Template d'entête de colonne par defaut définit dans le HTML de la grille */
    columnHeaderTemplateInternal: TemplateRef<unknown>;
    _sizedColumn: IDejaGridColumn;
    private _columnsDraggable;
    private _columnsSortable;
    private _columnsSizable;
    private _columnLayout;
    private backupColumnOrder;
    private columnGroupKey;
    /** Définit si toutes les colonnes peuvent être draggable vers un autre composant.
     * Si une valeur spécifique à une colonne est spécifiée dans le modèle de la colonne, cette dernière sera prioritaire.
     */
    set columnsDraggable(value: BooleanInput);
    /** Retourne si toutes les colonnes peuvent être draggable vers un autre composant.
     * Si une valeur spécifique à une colonne est spécifiée dans le modèle de la colonne, cette dernière sera prioritaire.
     */
    get columnsDraggable(): BooleanInput;
    /** Définit si toutes les colonnes peuvent être déplacées parmis les autres colonnes.
     * Si une valeur spécifique à une colonne est spécifiée dans le modèle de la colonne, cette dernière sera prioritaire.
     */
    set columnsSortable(value: BooleanInput);
    /** Retourne si toutes les colonnes peuvent être déplacées parmis les autres colonnes.
     * Si une valeur spécifique à une colonne est spécifiée dans le modèle de la colonne, cette dernière sera prioritaire.
     */
    get columnsSortable(): BooleanInput;
    get sizedColumn(): IDejaGridColumn;
    /** Définit si toutes les colonnes peuvent être redimensionées
     * Si une valeur spécifique à une colonne est spécifiée dans le modèle de la colonne, cette dernière sera prioritaire.
     */
    set columnsSizable(value: BooleanInput);
    /** Retourne si toutes les colonnes peuvent être redimensionées
     * Si une valeur spécifique à une colonne est spécifiée dans le modèle de la colonne, cette dernière sera prioritaire.
     */
    get columnsSizable(): BooleanInput;
    set columnLayout(layout: IDejaGridColumnLayout);
    /** Retourne la structire de colonnes associée aux entêtes */
    get columnLayout(): IDejaGridColumnLayout;
    get columnHeaderTemplate(): TemplateRef<unknown>;
    constructor(elementRef: ElementRef, changeDetectorRef: ChangeDetectorRef, clipboardService: DejaClipboardService);
    refresh(): void;
    getDragContext(column: IDejaGridColumn): IDejaDragContext;
    getDropContext(): IDejaDropContext;
    private getColumnElementFromHtmlElement;
    private getColumnFromHtmlElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<DejaGridHeaderComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DejaGridHeaderComponent, "deja-grid-header", never, { "columnHeaderTemplateExternal": "columnHeaderTemplateExternal"; "sortInfos": "sortInfos"; "columnsDraggable": "columnsDraggable"; "columnsSortable": "columnsSortable"; "columnsSizable": "columnsSizable"; "columnLayout": "columnLayout"; }, { "columnSizeChanged": "columnSizeChanged"; "columnLayoutChanged": "columnLayoutChanged"; "columnHeaderClicked": "columnHeaderClicked"; "columnDragEnd": "columnDragEnd"; }, ["columnHeaderTemplateInternal"], never, false>;
}
