import { IClonable } from "@drozdik.m/common-interfaces/IClonable";
export declare class AVLTreeNode<T> implements IClonable<AVLTreeNode<T>> {
    parent: AVLTreeNode<T>;
    left: AVLTreeNode<T>;
    right: AVLTreeNode<T>;
    value: T;
    count: number;
    depth: number;
    sign: number;
    constructor(value: T);
    Update(): void;
    UpdateChildrensParent(): void;
    /**
     * Returns number of nodes in this (sub)tree (including this one, thus minimum is 1)
     * */
    Count(): number;
    /**
     * Returns number of nodes in left subtree. Zero if left subtree is null.
     * */
    CountLeft(): number;
    /**
     * Returns number of nodes in right subtree. Zero if right subtree is null.
     * */
    CountRight(): number;
    /**
     * Updates count number from it's children
     * */
    UpdateCount(): void;
    /**
     * Returns depth of this nodes tree. Zero if no children.
     * */
    Depth(): number;
    /**
     * Returns depth of left subtree. Zero if left subtree is null.
     * */
    DepthLeft(): number;
    /**
     * Returns depth of right subtree. Zero if right subtree is null.
     * */
    DepthRight(): number;
    /**
     * Updates depth number from it's children
     * */
    UpdateDepth(): void;
    /**
     * Updates sign number from it's children
     * */
    UpdateSign(): void;
    Clone(): AVLTreeNode<T>;
}
