import { type CompareFunction } from "./Comparator"; export declare class BSTNode { value: V; left?: BSTNode | null; right?: BSTNode | null; parent?: BSTNode | null; constructor(data: V, parent?: BSTNode); asBST(): BST; } export declare class BST implements Iterable { #private; constructor(compareFn?: CompareFunction); static fromNode(node: BSTNode): BST; search(value: V): BSTNode | null; insert(value: V): boolean; has(value: V): boolean; delete(valueOrNode: V | BSTNode): boolean; max(node?: BSTNode): BSTNode | null; min(node?: BSTNode): BSTNode | null; successor(node: BSTNode): BSTNode | null; predecessor(node: BSTNode): BSTNode | null; asOrdered(): V[]; asPreOrdered(): V[]; asPostOrdered(): V[]; [Symbol.iterator](): Generator; }