export declare type Range = readonly [min: number, max: number];
export declare type MultiIntegerRange = readonly Range[];
export declare type MIR = MultiIntegerRange;
export declare type Options = {
    readonly parseNegative?: boolean;
    readonly parseUnbounded?: boolean;
};
export declare const parse: (data: string, options?: Options) => MultiIntegerRange;
export declare const normalize: (data?: (number | Range)[] | number) => MultiIntegerRange;
export declare const initialize: (data?: (number | Range)[] | number | string, options?: Options) => MultiIntegerRange;
export declare const append: (a: MultiIntegerRange, b: MultiIntegerRange) => MultiIntegerRange;
export declare const subtract: (a: MultiIntegerRange, b: MultiIntegerRange) => MultiIntegerRange;
export declare const intersect: (a: MultiIntegerRange, b: MultiIntegerRange) => MultiIntegerRange;
export declare const has: (a: MultiIntegerRange, b: MultiIntegerRange) => boolean;
export declare const length: (data: MultiIntegerRange) => number;
export declare const isUnbounded: (data: MultiIntegerRange) => boolean;
export declare const equals: (a: MultiIntegerRange, b: MultiIntegerRange) => boolean;
export declare const min: (data: MultiIntegerRange) => number | undefined;
export declare const max: (data: MultiIntegerRange) => number | undefined;
export declare const tail: (data: MultiIntegerRange) => MultiIntegerRange;
export declare const init: (data: MultiIntegerRange) => MultiIntegerRange;
export declare const stringify: (data: MultiIntegerRange) => string;
export declare const flatten: (data: MultiIntegerRange) => number[];
export declare const iterate: (data: MultiIntegerRange) => Iterable<number>;
