/** @packageDocumentation * @module Tree */ import { immerable } from "immer"; /** @internal */ export interface Node { readonly id: string; } /** * Structure for sparse tree storage. * It uses SparseArray to store children ids for parent. This allows * having tree structure with some nodes missing in the tree branch. * @internal */ export declare class SparseTree { [immerable]: boolean; private _rootNodes; private _parentToChildren; private _idToNode; getNode(nodeId: string): T | undefined; getChildOffset(parentId: string | undefined, childId: string): number | undefined; getChildren(parentId: string | undefined, createIfNotExist?: boolean): SparseArray | undefined; setChildren(parentId: string | undefined, children: T[], offset: number): void; insertChild(parentId: string | undefined, child: T, offset: number): void; setNodeId(parentId: string | undefined, index: number, newId: string): boolean; moveNode(sourceParentId: string | undefined, sourceNodeId: string, targetParentId: string | undefined, targetIndex: number): void; setNumChildren(parentId: string | undefined, numChildren: number): void; removeChild(parentId: string | undefined, child: string | number): void; deleteSubtree(parentId: string | undefined, deleteParent?: boolean): void; } /** * Structure for sparse array value storage. * The main advantage of this class over the standard javascript array is that * this class does not need to check each index when iterating values that are * stored in the array. * @public */ export declare class SparseArray implements Iterable { [immerable]: boolean; private _length; private _array; /** Returns length of array including intermediate 'undefined' values */ getLength(): number; /** Sets length of array. */ setLength(length: number): void; /** Returns index of supplied value. * * @returns index of value or undefined if value is not found. */ getIndex(lookupValue: T): number | undefined; /** Returns value at specific position. * * @returns stored value or undefined. */ get(index: number): T | undefined; /** Sets value at specific position. Overrides any existing value. */ set(index: number, value: T): void; /** Inserts value at specific position. Increases array length by one. */ insert(index: number, value: T): void; /** Removes value at specified index and reduces array length by one. */ remove(index: number): void; /** * Iterates values that are stored in the array * @returns `[value, index]` tuples. */ iterateValues(): IterableIterator<[T, number]>; /** Iterates the array with all intermediate `undefined` values */ [Symbol.iterator](): IterableIterator; private lowerBound; private static compare; } //# sourceMappingURL=SparseTree.d.ts.map