import { BinaryTree, BinaryTreeNode } from '../data-structures'; import type { BinaryTreeDeleteResult, BinaryTreeNested, BinaryTreeNodeNested, BinaryTreeOptions, BTNCallback, KeyOrNodeOrEntry } from '../types'; export interface IBinaryTree< K = any, V = any, R = [K, V], NODE extends BinaryTreeNode = BinaryTreeNodeNested, TREE extends BinaryTree = BinaryTreeNested > { createNode(key: K, value?: NODE['value']): NODE; createTree(options?: Partial>): TREE; add(keyOrNodeOrEntryOrRawElement: KeyOrNodeOrEntry, value?: V, count?: number): boolean; addMany(nodes: Iterable>, values?: Iterable): boolean[]; delete>(identifier: ReturnType | null, callback: C): BinaryTreeDeleteResult[]; }