import type IBinarySearchNodeOptions from './IBinarySearchNodeOptions';
import type IBinarySearchTree from './IBinarySearchTree';
import type IBinarySearchTreeData from './IBinarySearchTreeData';
export default class BinarySearchTree<T = number> implements IBinarySearchTree<T> {
    private _root;
    private _size;
    constructor({ inputs, lessThanOrEqualTo }?: Readonly<IBinarySearchNodeOptions<T>>);
    get data(): IBinarySearchTreeData<T>;
    get size(): number;
    get min(): T | null;
    get max(): T | null;
    insert(value: T): T;
    walkInOrder(callback: (_value: T) => any): void;
    walkPreOrder(callback: (_value: T) => any): void;
    walkPostOrder(callback: (_value: T) => any): void;
    search(value: T): boolean;
    remove(value: T): T | null;
    private _lessThanOrEqualTo;
    private _insertChild;
    private _visitNodeInOrder;
    private _visitNodePreOrder;
    private _visitNodePostOrder;
    private [Symbol.toPrimitive];
}
