sig
  type raw_version = string * string * string * string list * string list
  type ident = S of string | N of int
  type version = {
    major : int;
    minor : int;
    patch : int;
    pre : Versioning.SemverNode.ident list;
    build : string list;
  }
  val parse_raw_version : string -> Versioning.SemverNode.raw_version
  val parse_version : string -> Versioning.SemverNode.version
  val convert :
    Versioning.SemverNode.raw_version -> Versioning.SemverNode.version
  val compose : Versioning.SemverNode.version -> string
  val compare_version :
    Versioning.SemverNode.version -> Versioning.SemverNode.version -> int
  val compare : string -> string -> int
  val equal : string -> string -> bool
end