import { EventEmitter, TemplateRef } from '@angular/core';
import { MenuComponent, MenuItem, MenuTemplateType } from '../../controls/menu/menu.component';
import { ToggledHierarchyItem, HierarchyItem } from '../hierarchy/hierarchy-base';
import { HierarchyTreeComponent } from '../hierarchy/hierarchy-tree/hierarchy-tree.component';
import { Overlay } from '../view-overlay/view-overlay.component';
import * as i0 from "@angular/core";
export type TreeType = 'hierarchy' | 'menu';
export declare class TreeComponent {
    /** The value of the host elements id attribute */
    attrId: string;
    /**
     * The ID of the component, bound to the host element's id attribute and passed
     * to child components
     */
    set id(value: string);
    get id(): string;
    private _id;
    /** The tree's title displayed in the header */
    treeTitle: string;
    /** Hides the tree header when set to true */
    hideTreeHeader?: boolean;
    /** Items to display in the tree when type is 'menu' */
    treeItems?: MenuItem[];
    /** Hide the root tree item when type is 'hierarchy' */
    treeHierarchyHideRootNode?: boolean;
    /** Items to display in the tree when type is 'hierarchy' */
    treeHierarchy?: HierarchyItem;
    /** Used when the tree is in menu mode to tell the menu if it should maintain the selected item
     *  Useful in side nav components where this tree component may exist alongside other trees or menus
     *  used for navigation. If this tree is in menu mode you would want this set to false so when you select an item
     *  from a sibling navigation element the selection will not be maintained.
     */
    treeMenuMaintainSelectedItem: boolean;
    /** Used when a custom template is needed for the menu items when the tree is in menu mode */
    customTreeMenuTemplate?: TemplateRef<any>;
    /** Used when a custom template is needed for the hierarchy items when the tree is in hierarchy mode */
    customHierarchyItemTemplate?: TemplateRef<any>;
    /** Tree overlay */
    status?: Overlay;
    /** Display the tree items with a MenuComponent or a HierarchyTreeComponent */
    type?: TreeType;
    /** Items to display in the dropdown menu */
    menuItems?: MenuItem[];
    /** Tree dropdown menu overlay */
    menuStatus?: Overlay;
    /** The menu item template */
    menuTemplateType?: MenuTemplateType;
    /**
     * When true, the space for the icon is preserved for menu items that do not have icons.
     * Only applicable for iconAndLabel menus. Not applicable to hierarchy trees.
     */
    preserveIconSpace: boolean;
    /** Emits the item currently selected item in the tree */
    treeSelection: EventEmitter<MenuItem | HierarchyItem>;
    /** Emits when a hierarchy tree item is expanded as a hook to load the item's children */
    getTreeItemChildren: EventEmitter<HierarchyItem>;
    /** Emits when a hierarchy tree item is expanded or collapsed */
    treeItemToggled: EventEmitter<ToggledHierarchyItem>;
    /** Reference to the MenuComponent instance in the template */
    menuComponent?: MenuComponent;
    /** Reference to the HierarchyTreeComponent instance in the template */
    hierarchyTreeComponent?: HierarchyTreeComponent;
    templateType: MenuTemplateType;
    constructor();
    /** Emits when a tree item is selected */
    onItemSelected(item: MenuItem | HierarchyItem): void;
    /** Emits when a hierarchy tree item is expanded to load the item's children */
    onHierarchyGetItemChildren(item: HierarchyItem): void;
    /** Emits when a hierarchy tree item is expanded or collapsed */
    onHierarchyItemToggled(item: ToggledHierarchyItem): void;
    /** Scroll to the tree item that is currently selected. */
    scrollToSelectedItem(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TreeComponent, "ec-tree", never, { "id": { "alias": "id"; "required": false; }; "treeTitle": { "alias": "treeTitle"; "required": false; }; "hideTreeHeader": { "alias": "hideTreeHeader"; "required": false; }; "treeItems": { "alias": "treeItems"; "required": false; }; "treeHierarchyHideRootNode": { "alias": "treeHierarchyHideRootNode"; "required": false; }; "treeHierarchy": { "alias": "treeHierarchy"; "required": false; }; "treeMenuMaintainSelectedItem": { "alias": "treeMenuMaintainSelectedItem"; "required": false; }; "customTreeMenuTemplate": { "alias": "customTreeMenuTemplate"; "required": false; }; "customHierarchyItemTemplate": { "alias": "customHierarchyItemTemplate"; "required": false; }; "status": { "alias": "status"; "required": false; }; "type": { "alias": "type"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "menuStatus": { "alias": "menuStatus"; "required": false; }; "menuTemplateType": { "alias": "menuTemplateType"; "required": false; }; "preserveIconSpace": { "alias": "preserveIconSpace"; "required": false; }; "templateType": { "alias": "templateType"; "required": false; }; }, { "treeSelection": "treeSelection"; "getTreeItemChildren": "getTreeItemChildren"; "treeItemToggled": "treeItemToggled"; }, never, never, false, never>;
}
