declare module "bintrees" { type Callback = (item: T) => void; type Comparator = (a: T, b: T) => number; class Iterator { constructor(tree: TreeBase); data(): T | null; next(): T | null; prev(): T | null; } class TreeBase { size: number; clear(): void; find(data: T): T | null; findIter(data: T): Iterator | null; lowerBound(item: T): Iterator; upperBound(item: T): Iterator; min(): T | null; max(): T | null; iterator(): Iterator; each(cb: Callback): void; reach(cb: Callback): void; } export class RBTree extends TreeBase { constructor(comparator: Comparator); insert(item: T): boolean; remove(item: T): boolean; } export class BinTree extends TreeBase { constructor(comparator: Comparator); insert(item: T): boolean; remove(item: T): boolean; } }