import IBinaryTree from "../Interfaces/IBinaryTree";
import RedBlackTreeNode from "./RedBlackTreeNode";
declare class RedBlackTree<T> implements IBinaryTree<T, RedBlackTreeNode<T>> {
    comparator: (a: T, b: T) => boolean;
    root: RedBlackTreeNode<T>;
    private sentinel;
    constructor(comparator?: (a: T, b: T) => boolean);
    add(value: T): void;
    remove(value: T): boolean;
    inOrderTreeWalk(callback: (pv: any, cv: T) => any, initialValue: any): any;
    isEmpty(): boolean;
    max(): RedBlackTreeNode<T>;
    min(): RedBlackTreeNode<T>;
    reverseTreeWalk(callback: (pv: any, cv: T) => any, initialValue: any): any;
    search(value: T): RedBlackTreeNode<T>;
    successor(value: T): RedBlackTreeNode<T>;
    private addFixup;
    private inorderNodeWalk;
    private leftRotate;
    private reverseNodeWalk;
    private rightRotate;
}
export default RedBlackTree;
