import { TemplatePortal } from '@angular/cdk/portal';
import { FlatTreeControl } from '@angular/cdk/tree';
import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit, Renderer2, ViewContainerRef } from '@angular/core';
import { Node, NodeGetIconFunction, NodeGetStyleFunction, NodeGetTypeFunction, NodeHasDetailsFunction, NodeToDisplayFunction } from '@rxap/data-structure-tree';
import { Method } from '@rxap/pattern';
import { WithChildren, WithIdentifier } from '@rxap/utilities';
import { SearchForm } from './search.form';
import { TreeContentDirective } from './tree-content.directive';
import { TreeDataSource } from './tree.data-source';
import * as i0 from "@angular/core";
export declare class TreeComponent<Data extends WithIdentifier & WithChildren = any> implements OnInit, AfterContentInit {
    private readonly viewContainerRef;
    private readonly cdr;
    private readonly renderer;
    private readonly elementRef;
    readonly searchForm: SearchForm | null;
    treeControl: FlatTreeControl<Node<Data>>;
    dataSource: TreeDataSource<Data>;
    contentEditableMethod?: Method<any, string | null> | null;
    toDisplay?: NodeToDisplayFunction<any>;
    getIcon?: NodeGetIconFunction<any>;
    getType?: NodeGetTypeFunction<any>;
    getStyle?: NodeGetStyleFunction<any>;
    multiple: boolean;
    hasDetails?: NodeHasDetailsFunction<any>;
    content?: TreeContentDirective;
    hideLeafIcon: boolean;
    id?: string;
    details: EventEmitter<any>;
    dividerOffset: string;
    portal: TemplatePortal | null;
    treeContainer: ElementRef;
    readonly showTreeNavigation: import("@angular/core").WritableSignal<boolean>;
    /**
     * Indicates that the divider is moved with mouse down
     * @private
     */
    private _moveDivider;
    /**
     * Holds the current tree container width.
     * If null the move divider feature was not yet used and the initial
     * container width is not calculated
     * @private
     */
    private _treeContainerWidth;
    constructor(viewContainerRef: ViewContainerRef, cdr: ChangeDetectorRef, contentEditableMethod: Method<any, string | null> | null, renderer: Renderer2, elementRef: ElementRef<HTMLElement>, searchForm: SearchForm | null);
    get nodeDisplayEditable(): boolean;
    get cacheId(): string;
    getLevel: (node: Node<Data>) => number;
    isExpandable: (node: Node<Data>) => boolean;
    hasChild: (_: number, nodeData: Node<Data>) => boolean;
    ngOnInit(): void;
    ngAfterContentInit(): void;
    openDetails(node: Node<Data>): void;
    onContentEditableChange(value: string | null, node: Node<Data>): any;
    onMousedown(): void;
    onMouseup(): void;
    onMousemove($event: MouseEvent): void;
    toggleTreeNavigation(): void;
    private setDividerOffset;
    static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent<any>, [null, null, { optional: true; }, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TreeComponent<any>, "rxap-tree", never, { "dataSource": { "alias": "dataSource"; "required": true; }; "contentEditableMethod": { "alias": "contentEditableMethod"; "required": false; }; "toDisplay": { "alias": "toDisplay"; "required": false; }; "getIcon": { "alias": "getIcon"; "required": false; }; "getType": { "alias": "getType"; "required": false; }; "getStyle": { "alias": "getStyle"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "hasDetails": { "alias": "hasDetails"; "required": false; }; "hideLeafIcon": { "alias": "hideLeafIcon"; "required": false; }; "id": { "alias": "id"; "required": false; }; "dividerOffset": { "alias": "dividerOffset"; "required": false; }; }, { "details": "details"; }, ["content"], ["[searchHeader]", "*"], true, never>;
}
