export = Range;
/**
 * @typedef {[number, boolean]} RangeValue
 */
/**
 * @callback RangeValueCallback
 * @param {RangeValue} rangeValue
 * @returns {boolean}
 */
declare class Range {
    /**
     * @param {"left" | "right"} side
     * @param {boolean} exclusive
     * @returns {">" | ">=" | "<" | "<="}
     */
    static getOperator(side: "left" | "right", exclusive: boolean): ">" | ">=" | "<" | "<=";
    /**
     * @param {number} value
     * @param {boolean} logic is not logic applied
     * @param {boolean} exclusive is range exclusive
     * @returns {string}
     */
    static formatRight(value: number, logic: boolean, exclusive: boolean): string;
    /**
     * @param {number} value
     * @param {boolean} logic is not logic applied
     * @param {boolean} exclusive is range exclusive
     * @returns {string}
     */
    static formatLeft(value: number, logic: boolean, exclusive: boolean): string;
    /**
     * @param {number} start left side value
     * @param {number} end right side value
     * @param {boolean} startExclusive is range exclusive from left side
     * @param {boolean} endExclusive is range exclusive from right side
     * @param {boolean} logic is not logic applied
     * @returns {string}
     */
    static formatRange(start: number, end: number, startExclusive: boolean, endExclusive: boolean, logic: boolean): string;
    /**
     * @param {Array<RangeValue>} values
     * @param {boolean} logic is not logic applied
     * @return {RangeValue} computed value and it's exclusive flag
     */
    static getRangeValue(values: Array<RangeValue>, logic: boolean): RangeValue;
    /** @type {Array<RangeValue>} */
    _left: Array<RangeValue>;
    /** @type {Array<RangeValue>} */
    _right: Array<RangeValue>;
    /**
     * @param {number} value
     * @param {boolean=} exclusive
     */
    left(value: number, exclusive?: boolean | undefined): void;
    /**
     * @param {number} value
     * @param {boolean=} exclusive
     */
    right(value: number, exclusive?: boolean | undefined): void;
    /**
     * @param {boolean} logic is not logic applied
     * @return {string} "smart" range string representation
     */
    format(logic?: boolean): string;
}
declare namespace Range {
    export { RangeValue, RangeValueCallback };
}
type RangeValue = [number, boolean];
type RangeValueCallback = (rangeValue: RangeValue) => boolean;
