| import Model from '../model/Model.js'; | 
| import SeriesData from './SeriesData.js'; | 
| import { DimensionLoose, ParsedValue, OptionDataValue, OptionDataItemObject } from '../util/types.js'; | 
| import { Dictionary } from 'zrender/lib/core/types.js'; | 
| declare type TreeTraverseOrder = 'preorder' | 'postorder'; | 
| declare type TreeTraverseCallback<Ctx> = (this: Ctx, node: TreeNode) => boolean | void; | 
| declare type TreeTraverseOption = { | 
|     order?: TreeTraverseOrder; | 
|     attr?: 'children' | 'viewChildren'; | 
| }; | 
| interface TreeNodeOption extends Pick<OptionDataItemObject<OptionDataValue>, 'name' | 'value'> { | 
|     children?: TreeNodeOption[]; | 
| } | 
| export declare class TreeNode { | 
|     name: string; | 
|     depth: number; | 
|     height: number; | 
|     parentNode: TreeNode; | 
|     /** | 
|      * Reference to list item. | 
|      * Do not persistent dataIndex outside, | 
|      * besause it may be changed by list. | 
|      * If dataIndex -1, | 
|      * this node is logical deleted (filtered) in list. | 
|      */ | 
|     dataIndex: number; | 
|     children: TreeNode[]; | 
|     viewChildren: TreeNode[]; | 
|     isExpand: boolean; | 
|     readonly hostTree: Tree<Model>; | 
|     constructor(name: string, hostTree: Tree<Model>); | 
|     /** | 
|      * The node is removed. | 
|      */ | 
|     isRemoved(): boolean; | 
|     /** | 
|      * Travel this subtree (include this node). | 
|      * Usage: | 
|      *    node.eachNode(function () { ... }); // preorder | 
|      *    node.eachNode('preorder', function () { ... }); // preorder | 
|      *    node.eachNode('postorder', function () { ... }); // postorder | 
|      *    node.eachNode( | 
|      *        {order: 'postorder', attr: 'viewChildren'}, | 
|      *        function () { ... } | 
|      *    ); // postorder | 
|      * | 
|      * @param options If string, means order. | 
|      * @param options.order 'preorder' or 'postorder' | 
|      * @param options.attr 'children' or 'viewChildren' | 
|      * @param cb If in preorder and return false, | 
|      *                      its subtree will not be visited. | 
|      */ | 
|     eachNode<Ctx>(options: TreeTraverseOrder, cb: TreeTraverseCallback<Ctx>, context?: Ctx): void; | 
|     eachNode<Ctx>(options: TreeTraverseOption, cb: TreeTraverseCallback<Ctx>, context?: Ctx): void; | 
|     eachNode<Ctx>(cb: TreeTraverseCallback<Ctx>, context?: Ctx): void; | 
|     /** | 
|      * Update depth and height of this subtree. | 
|      */ | 
|     updateDepthAndHeight(depth: number): void; | 
|     getNodeById(id: string): TreeNode; | 
|     contains(node: TreeNode): boolean; | 
|     /** | 
|      * @param includeSelf Default false. | 
|      * @return order: [root, child, grandchild, ...] | 
|      */ | 
|     getAncestors(includeSelf?: boolean): TreeNode[]; | 
|     getAncestorsIndices(): number[]; | 
|     getDescendantIndices(): number[]; | 
|     getValue(dimension?: DimensionLoose): ParsedValue; | 
|     setLayout(layout: any, merge?: boolean): void; | 
|     /** | 
|      * @return {Object} layout | 
|      */ | 
|     getLayout(): any; | 
|     getModel<T = unknown>(): Model<T>; | 
|     getLevelModel(): Model; | 
|     /** | 
|      * @example | 
|      *  setItemVisual('color', color); | 
|      *  setItemVisual({ | 
|      *      'color': color | 
|      *  }); | 
|      */ | 
|     setVisual(key: string, value: any): void; | 
|     setVisual(obj: Dictionary<any>): void; | 
|     /** | 
|      * Get item visual | 
|      * FIXME: make return type better | 
|      */ | 
|     getVisual(key: string): unknown; | 
|     getRawIndex(): number; | 
|     getId(): string; | 
|     /** | 
|      * index in parent's children | 
|      */ | 
|     getChildIndex(): number; | 
|     /** | 
|      * if this is an ancestor of another node | 
|      * | 
|      * @param node another node | 
|      * @return if is ancestor | 
|      */ | 
|     isAncestorOf(node: TreeNode): boolean; | 
|     /** | 
|      * if this is an descendant of another node | 
|      * | 
|      * @param node another node | 
|      * @return if is descendant | 
|      */ | 
|     isDescendantOf(node: TreeNode): boolean; | 
| } | 
| declare class Tree<HostModel extends Model = Model, LevelOption = any> { | 
|     type: 'tree'; | 
|     root: TreeNode; | 
|     data: SeriesData; | 
|     hostModel: HostModel; | 
|     levelModels: Model<LevelOption>[]; | 
|     private _nodes; | 
|     constructor(hostModel: HostModel); | 
|     /** | 
|      * Travel this subtree (include this node). | 
|      * Usage: | 
|      *    node.eachNode(function () { ... }); // preorder | 
|      *    node.eachNode('preorder', function () { ... }); // preorder | 
|      *    node.eachNode('postorder', function () { ... }); // postorder | 
|      *    node.eachNode( | 
|      *        {order: 'postorder', attr: 'viewChildren'}, | 
|      *        function () { ... } | 
|      *    ); // postorder | 
|      * | 
|      * @param options If string, means order. | 
|      * @param options.order 'preorder' or 'postorder' | 
|      * @param options.attr 'children' or 'viewChildren' | 
|      * @param cb | 
|      * @param context | 
|      */ | 
|     eachNode<Ctx>(options: TreeTraverseOrder, cb: TreeTraverseCallback<Ctx>, context?: Ctx): void; | 
|     eachNode<Ctx>(options: TreeTraverseOption, cb: TreeTraverseCallback<Ctx>, context?: Ctx): void; | 
|     eachNode<Ctx>(cb: TreeTraverseCallback<Ctx>, context?: Ctx): void; | 
|     getNodeByDataIndex(dataIndex: number): TreeNode; | 
|     getNodeById(name: string): TreeNode; | 
|     /** | 
|      * Update item available by list, | 
|      * when list has been performed options like 'filterSelf' or 'map'. | 
|      */ | 
|     update(): void; | 
|     /** | 
|      * Clear all layouts | 
|      */ | 
|     clearLayouts(): void; | 
|     /** | 
|      * data node format: | 
|      * { | 
|      *     name: ... | 
|      *     value: ... | 
|      *     children: [ | 
|      *         { | 
|      *             name: ... | 
|      *             value: ... | 
|      *             children: ... | 
|      *         }, | 
|      *         ... | 
|      *     ] | 
|      * } | 
|      */ | 
|     static createTree<T extends TreeNodeOption, HostModel extends Model>(dataRoot: T, hostModel: HostModel, beforeLink?: (data: SeriesData) => void): Tree<HostModel, any>; | 
| } | 
| export default Tree; |