export declare class Interval {
    static invalid(): Interval;
    /**
     * interval mul by number
     * @param alpha
     * @returns
     */
    static mul(interval: Interval, alpha: number): Interval;
    /**
     * Get the intersect intervals of two list of intervals.
     * @param intervals1
     * @param intervals2
     * @returns List<Interval>
     */
    static intersect(intervals1: Interval[], intervals2: Interval[]): Interval[];
    /**
     * Combine the intervals.Return the list of intervals after unioned
     * @param intervals
     * @returns {Interval[]}
     */
    static union(intervals: Interval[]): Interval[];
    private _start;
    private _end;
    /**
     * constructor
     * @param start
     * @param end
     */
    constructor(start: number, end: number);
    /**
     * Get interval's start
     */
    get start(): number;
    /**
     * Get interval's end
     */
    get end(): number;
    /**
     * Returns true if this interval is equal to another within specified tolerance.
     * @param other
     * @param numericTolerance
     * @return
     */
    isEqual(other: Interval, numTol?: number): boolean;
    /**
     * Get the middle number
     * @return
     */
    get middle(): number;
    /**
     * Get the cloned object of this Interval.
     */
    clone(): Interval;
    /**
     * Get interval's length
     * @return
     */
    get length(): number;
    /**
     * interval string
     * @return
     */
    toString(): string;
    /**
     * Indicates whether the Interval is Valid
     * @return
     */
    isValid(): boolean;
    /**
     * interval mul by number
     * @param alpha
     * @returns
     */
    mul(alpha: number): Interval;
    /**
     * interval add by number
     * @param alpha
     * @returns
     */
    add(interval: Interval): Interval;
    addByNumber(alpha: number): Interval;
    /**
     * interval sub by Interval
     * @param interval
     * @returns
     */
    sub(interval: Interval): Interval;
    /**
     * Interval interpolate
     * @param alpha
     * @returns
     */
    interpolate(alpha: number): number;
    /**
     * Interval expand
     * @param length
     * @returns
     */
    expand(length: number): Interval;
    /**
     * Indicates whether the given value is included in this interval.
     * @param {number} point
     * @param {boolean} includeEnds - Indicates whether to check the ends.
     * @param {number} [tolerance] - Tolerance to check on the ends.
     * @returns {boolean}
     */
    contains(point: number, includeEnds: boolean, tolerance?: number): boolean;
    /**
     * Indicates whether the given interval is included in this interval.
     * @param {Interval} interval
     * @param {boolean} includeEnds - Indicates whether to check the ends.
     * @param {number} [tolerance] - Tolerance to check on the ends.
     * @returns {boolean}
     */
    containsInterval(interval: Interval, includeEnds: boolean, tolerance?: number): boolean;
    /**
     * Indicates whether the given interval is intersected with this interval.
     * @param {Interval} interval
     * @param {boolean} includeEnds - Indicates whether to check the ends.
     * @param {number} [tolerance] - Intersection tolerance.
     * @returns {boolean}
     */
    intersects(interval: Interval, includeEnds: boolean, tolerance?: number): boolean;
    /**
     * Indicates whether the given interval is intersected with this interval.
     * @param {Interval} interval
     * @param {boolean} includeEnds - Indicates whether to check the ends.
     * @param {number} [tolerance] - Intersection tolerance.
     * @returns {boolean}
     */
    intersected(interval: Interval, includeEnds: boolean, tolerance?: number): boolean;
    /**
     * Get the intersect part with interval. If the intervals are not intersectant, we will return an invalid interval
     * @param interval
     * @returns {Interval} | null
     */
    intersection(interval: Interval): Interval;
    /**
     * Combine with interval. If the intervals are not intersectant, we will return an invalid interval
     * @param interval
     * @returns
     */
    includeInterval(interval: Interval): Interval;
}
