import { AfterViewInit, ElementRef, EventEmitter, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';
import { DsfrSelectionMode } from '../shared/models/selection-mode.type';
import { TreeFocusable } from '../shared/utils/tree/tree-focus-manager';
import { TreeSelectable } from '../shared/utils/tree/tree-select-manager';
import { DsfrNode } from '../shared/utils/tree/tree.model';
import * as i0 from "@angular/core";
/** Événement émis lors de la sélection d'un nœud. */
export interface DsfrNodeEvent extends Omit<DsfrNode, 'children'> {
}
export interface DsfrTreeNodeEvent {
    node: DsfrNodeEvent | null;
    nodesSelected: DsfrNode[];
}
export declare class DsfrTreeComponent implements TreeFocusable, TreeSelectable, AfterViewInit, OnChanges {
    private elementRef;
    /** Un tableau de nœuds d'arbre */
    value: DsfrNode[];
    /** Template pour personnaliser le contenu d'un noeud.
     * Le slot s'ajoute après le label en mode checkbox et le remplace dans les autres modes.  */
    nodeTemplate: TemplateRef<any>;
    /** Indique le changement d'état d'un nœud. */
    nodeSelect: EventEmitter<DsfrNodeEvent>;
    /** Indique un changement sur la sélection. Renvoie le noeud concerné et liste des noeuds (feuilles) sélectionnés */
    selectionChange: EventEmitter<DsfrTreeNodeEvent>;
    /** Indique si toutes les options sont sélectionnées ou non. */
    /** @internal */
    isAllSelected: boolean;
    protected isModeSelectable: boolean;
    private cd;
    private focusManager;
    private selectManager;
    private _viewNodes;
    constructor(elementRef: ElementRef);
    get selectionMode(): DsfrSelectionMode;
    /** Synonyme de value, mais plus explicite. */
    get nodes(): DsfrNode[];
    /** Mode de sélection, `undefined` par défaut. */
    set selectionMode(value: DsfrSelectionMode);
    /**
     * Permet la récupération du modèle interne de l'arbre.
     *
     * @returns Un tableau de DsfrNode[].
     */
    getTreeState(): DsfrNode[];
    /**
     * Permet la récupération de la sélection courante de l'arbre.
     *
     * @returns Un tableau de DsfrNode[].
     */
    getSelection(): DsfrNode[];
    /** @internal */
    ngAfterViewInit(): void;
    /** @internal */
    ngOnChanges({ value }: SimpleChanges): void;
    /** @internal */
    getCheckboxId(node: DsfrNode): string;
    /** @internal */
    isCheckboxMode(): boolean;
    /** @internal */
    isSelectable(): boolean;
    /**
     * Ouvre tous les nœuds de l'arborescence.
     */
    /** @internal */
    onNodeButton(node: DsfrNode): void;
    /**
     * Sélection du label d'un nœud lorsque que l'on a un label sans checkbox. Si le mode est `selectable` :
     * - on inverse la sélection, uniquement du nœud, on émet un événement.
     */
    /** @internal */
    onNodeSelect(node: DsfrNode, event: Event): void;
    /**
     * Gestion des touches de navigation.
     * On transfère la gestion au composant qui gère la liste.
     */
    /** @internal */
    onNodeKeydown(node: DsfrNode, event: KeyboardEvent): void;
    /** Ouvre tous les nœuds de l'arborescence. */
    /** @internal */
    expandAll(): void;
    /** Ferme tous les nœuds de l'arborescence.  */
    /** @internal */
    collapseAll(): void;
    /** @internal */
    doNodeDefaultAction(node: DsfrNode, event: Event): void;
    /**
     * Trouver tous les noeuds <li> visibles (possèdent une hauteur minimale).
     *
     * @internal
     */
    findVisibleNodesElt(): HTMLElement[];
    /** Retourne l'élément avec focus ou undefined. */
    /** @internal */
    findFocusElement(): HTMLElement | undefined;
    /**
     * Mise a jour du contenu de l'arbre. Conserve l'état (nœuds étendus et sélectionnés) si l'id des nœuds est renseigné.
     * @internal
     */
    updateContent(): void;
    /**
     * Réinitialise l'état de l'arbre (nœuds étendus et sélectionnés)
     * @internal
     */
    reinitializeState(): void;
    /** Sélectionne / désélectionne tous les nœuds en mode multiple ou checkbox.
     * @internal
     */
    selectAll(selected?: boolean): void;
    /** Emission d'un événement pour un nœud.
     * @internal
     */
    notifySelectEvent(node: DsfrNode): void;
    /**
     * Met à jour la propriété `indeterminate` de la checkbox `node.inputId` en fonction de la valeur de 'node.selected'.
     * @param node Nœud de l'arbre
     */
    /** @internal */
    updateIndeterminate(node: DsfrNode): void;
    /** @internal */
    trackById(index: number, item: DsfrNode): string | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTreeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTreeComponent, "dsfr-ext-tree, dsfrx-tree", never, { "value": { "alias": "value"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; }, { "nodeSelect": "nodeSelect"; "selectionChange": "selectionChange"; }, ["nodeTemplate"], never, true, never>;
}
