/**
 * A standard representation of a semantic version number.
 */
export declare class SemanticVersion {
    private readonly _major;
    private readonly _minor;
    private readonly _patch;
    private readonly _prerelease;
    private readonly _build;
    /**
     * Constant value representing a zero version number.
     */
    static readonly ZERO: SemanticVersion;
    /**
     * A precompiled regular expression used to parse a semantic version string and extract the individual components.
     */
    private static readonly SEMVER_PATTERN;
    /**
     * Constructs a new instance of a {@link SemanticVersion} with the supplied components.
     *
     * @param _major      the major version.
     * @param _minor      the minor version.
     * @param _patch      the patch version.
     * @param _prerelease the optional prerelease specifier.
     * @param _build      the optional build specifier.
     */
    private constructor();
    get major(): number;
    get minor(): number;
    get patch(): number;
    get prerelease(): string;
    get build(): string;
    /**
     * Parses a semantic version string into the individual components.
     *
     * @param version a semantic version number in string form.
     * @returns an instance of a {@link SemanticVersion} containing the individual components.
     * @throws InvalidSemanticVersionException if the supplied string cannot be parsed as a semantic version number.
     * @throws Error if the {@code version} argument is a {@code null} reference.
     */
    static parse(version: string): SemanticVersion;
    /**
     * Returns a new instance of a {@link SemanticVersion} with the build information cleared.
     *
     * @returns a new instance of a {@link SemanticVersion}.
     */
    withClearedBuild(): SemanticVersion;
    /**
     * Returns a new instance of a {@link SemanticVersion} with prerelease information cleared.
     *
     * @returns a new instance of a {@link SemanticVersion}.
     */
    withClearedPrerelease(): SemanticVersion;
    /**
     * Compares this version with another version.
     *
     * @param other the other version to compare with
     * @returns a negative number if this version is less than the other,
     *          zero if they are equal, or a positive number if this version is greater
     */
    compareTo(other: SemanticVersion | null): number;
    /**
     * Checks if this version equals another object.
     *
     * @param object_ the object to compare with
     * @returns true if the objects are equal, false otherwise
     */
    equals(object_: unknown): boolean;
    /**
     * Returns a string representation of this version.
     *
     * @returns the version string
     */
    toString(): string;
    /**
     * Helper method to convert null to blank string.
     *
     * @param string_ the string to check
     * @returns the string or blank if null/undefined
     */
    private static nullToBlank;
    /**
     * Helper method to compare strings.
     *
     * @param a first string
     * @param b second string
     * @returns comparison result
     */
    private compareStrings;
}
