sig
  module Debian :
    sig
      val equal : string -> string -> bool
      val compare : string -> string -> int
      type version_analysis =
          Native of string * string * string
        | NonNative of string * string * string * string
      val decompose : string -> Versioning.Debian.version_analysis
      val compose : Versioning.Debian.version_analysis -> string
      val strip_epoch_binnmu : string -> Versioning.Debian.version_analysis
      val strip_epoch : string -> Versioning.Debian.version_analysis
      val extract_epoch : string -> string
    end
  module Semver :
    sig
      val compare : string -> string -> int
      val equal : string -> string -> bool
    end
  module SemverNode :
    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
end