/**
 * Interval tree.
 *
 * @public
 * @constructor
 */
export class IntervalTree {
    /**
     * Root node of the tree.
     * @type {IntervalTreeNode | null}
     */
    root: IntervalTreeNode | null;
    /**
     * Add new interval to the tree.
     *
     * @public
     * @param {Interval} interval - Array with start and end points of the interval.
     */
    public add(interval: Interval): void;
    /**
     * Checks or point belongs to at least one intarval from the tree.<br><br>
     * Complexity: O(log N).
     *
     * @public
     * @method
     * @param {Number} point Point which should be checked.
     * @return {Boolean} True if point belongs to one of the intervals.
     */
    public contains(point: number): boolean;
    /**
     * Checks or interval belongs to at least one intarval from the tree.<br><br>
     * Complexity: O(log N).
     *
     * @public
     * @method
     * @param {Interval} interval Interval which should be checked.
     * @return {boolean} True if interval intersects with one of the intervals.
     */
    public intersects(interval: Interval): boolean;
    /**
     * Returns height of the tree.
     *
     * @public
     * @method
     * @return {Number} Height of the tree.
     */
    public height(): number;
    /**
     * Returns node with the max endpoint in subtree.
     *
     * @public
     * @method
     * @param {IntervalTreeNode} node Root node of subtree.
     * @return {IntervalTreeNode | null} IntervalTreeNode with the largest endpoint.
     */
    public findMax(node: IntervalTreeNode): IntervalTreeNode | null;
    /**
     * Adjust the max value.
     *
     * @param {Interval} interval
     * @param {IntervalTreeNode | null} node
     */
    _removeHelper(interval: Interval, node: IntervalTreeNode | null): void;
    /**
     * Remove interval from the tree.
     *
     * @public
     * @method
     * @param {Interval} interval - Array with start and end of the interval.
     */
    public remove(interval: Interval): void;
}
export type Interval = [start: number, end: number];
/** @typedef {[start: number, end: number]} Interval */
declare class IntervalTreeNode {
    /**
     * @param {number} start
     * @param {number} end
     * @param {IntervalTreeNode} [left]
     * @param {IntervalTreeNode} [right]
     */
    constructor(start: number, end: number, left?: IntervalTreeNode, right?: IntervalTreeNode);
    /**
     * Node interval.
     * @type {Interval}
     */
    interval: Interval;
    /**
     * Max endpoint in subtree which starts from this node.
     * @type {number}
     */
    max: number;
    /**
     * Parent node.
     * @type {IntervalTreeNode | null}
     */
    parentNode: IntervalTreeNode | null;
    /**
     * Left child node.
     * @type {IntervalTreeNode | null}
     */
    left: IntervalTreeNode | null;
    /**
     * Right child node.
     * @type {IntervalTreeNode | null}
     */
    right: IntervalTreeNode | null;
}
export {};
