import { SemVer } from 'semver';
import { Version } from './version.js';
/**
 * A range of versions which includes the beginning version and excludes the end version.
 */
export declare class VersionRange<T extends SemVer | number> {
    /**
     * The beginning of the version range (inclusive).
     */
    readonly begin: Version<T>;
    /**
     * The end of the version range (exclusive).
     */
    readonly end: Version<T>;
    constructor(
    /**
     * The beginning of the version range (inclusive).
     */
    begin: Version<T>, 
    /**
     * The end of the version range (exclusive).
     */
    end: Version<T>);
    /**
     * Creates a version range from the given integer bounds.
     *
     * @param begin - the beginning of the version range (inclusive).
     * @param end - the end of the version range (exclusive).
     * @returns the version range.
     * @throws RangeError if the bounds are invalid.
     */
    static fromIntegerBounds(begin: number, end: number): VersionRange<number>;
    /**
     * Creates a version range from the given integer version.
     *
     * @param version - the specific version for which to create a range.
     * @returns the version range.
     * @throws RangeError if the version is invalid.
     */
    static fromIntegerVersion(version: number): VersionRange<number>;
    /**
     * Creates a version range from the given semantic version bounds.
     *
     * @param begin - the beginning of the version range (inclusive).
     * @param end - the end of the version range (exclusive).
     * @returns the version range.
     * @throws RangeError if the bounds are invalid.
     */
    static fromSemVerBounds(begin: SemVer, end: SemVer): VersionRange<SemVer>;
    /**
     * Creates a version range which includes all patch releases for the given major and minor version.
     *
     * @param version - the semantic version.
     * @returns the version range.
     */
    static patchVersionBounds(version: SemVer): VersionRange<SemVer>;
    /**
     * Creates a version range which includes all minor and patch releases for the given major version.
     *
     * @param version - the semantic version.
     * @returns the version range.
     */
    static minorVersionBounds(version: SemVer): VersionRange<SemVer>;
    equals(other: VersionRange<T>): boolean;
    compare(other: VersionRange<T>): number;
    contains(version: Version<T>): boolean;
    toString(): string;
}
