import { Compare, nat } from "../index.js"; export type RedBlackTree = Red | Black | null; export declare class Red { elem: E; left: RedBlackTree; right: RedBlackTree; constructor(elem: E, left: RedBlackTree, right: RedBlackTree); } export declare class Black { elem: E; left: RedBlackTree; right: RedBlackTree; constructor(elem: E, left: RedBlackTree, right: RedBlackTree); } export declare function isRed(tree: RedBlackTree): tree is Red; export declare function isEmpty(tree: RedBlackTree): tree is null; export declare function empty(): RedBlackTree; export declare function isElementOf(order: Compare, x: E, tree: RedBlackTree): boolean; export declare function findEqualElement(order: Compare, x: E, tree: RedBlackTree): E | undefined; export declare function findMinimumElement(tree: RedBlackTree): E | undefined; export declare function findMaximumElement(tree: RedBlackTree): E | undefined; /** * Inserts a new element into the tree. Returns undefined if the element is already part of the tree. */ export declare function insertElement(order: Compare, x: E, tree: RedBlackTree): { result: RedBlackTree; previous: E | undefined; }; /** * Deletes an existing element from the tree. Returns undefined if the element is already part of the tree. */ export declare function deleteElement(order: Compare, x: E, tree: RedBlackTree): { result: RedBlackTree; deleted: E | undefined; }; export declare function iterateElements(tree: RedBlackTree): Generator; export declare function blackHeight(tree: RedBlackTree): nat;