import { Stackable, stackDepth, Listable, List } from '.'; export type Tree = Listable & Stackable & { parent?: Tree; next?: Tree; previous?: Tree; children: List; size: number; }; export declare const TreeCompareFn: (a: T, b: T) => number; export declare const treeCreate: (props?: Omit) => T; export declare function treeInsertChild(parent: T, node: T): void; export declare function treeInsertChildBefore(parent: T, node: T, before: T, compare?: (a: T, b: T) => number): void; export declare function treeInsertChildAfter(parent: T, node: T, after: T, compare?: (a: T, b: T) => number): void; export declare function treeAppendChild(parent: T, node: T): void; export declare function treeRemove(node: T, compare?: (a: T, b: T) => number): void; export declare const treeDepth: (root: T) => ReturnType; export declare function treeIsRoot(node: T): boolean; export declare function treeIsLeaf(node: T): boolean; export declare function treeIsChild(parent: T, node: T, compare?: (a: T, b: T) => number): boolean; export declare function treeIsFirstChild(parent: T, node: T, compare?: (a: T, b: T) => number): boolean; export declare function treeIsLastChild(parent: T, node: T, compare?: (a: T, b: T) => number): boolean; export declare function treeIsOnlyChild(parent: T, node: T, compare?: (a: T, b: T) => number): boolean; export declare function treeIsChildDeep(parent: T, node: T, compare?: (a: T, b: T) => number): boolean; export declare function treeIncreaseSize(root: T, size: number): void; export declare function treeDecreaseSize(root: T, size: number): void; export declare function depthFirstIterator(root: T): IterableIterator; export declare function breadthFirstIterator(root: T): IterableIterator; export declare function treeQuery(root: T, ...fn: ((node: T) => boolean)[]): Set; //# sourceMappingURL=Tree.d.ts.map