sig
  module type WITH_VERSIONED_SERIALIZATION =
    sig
      type t
      val to_json :
        Ketrew_pervasives.Json.Versioned.WITH_VERSIONED_SERIALIZATION.t ->
        Yojson.Safe.json
      val of_json_exn :
        Yojson.Safe.json ->
        Ketrew_pervasives.Json.Versioned.WITH_VERSIONED_SERIALIZATION.t
      val serialize :
        Ketrew_pervasives.Json.Versioned.WITH_VERSIONED_SERIALIZATION.t ->
        string
      val deserialize_exn :
        string ->
        Ketrew_pervasives.Json.Versioned.WITH_VERSIONED_SERIALIZATION.t
    end
  module Of_v0 :
    functor
      (T : sig
             type t
             val to_yojson :
               Ketrew_pervasives.Json.Versioned.t -> Yojson.Safe.json
             val of_yojson :
               Yojson.Safe.json ->
               [ `Error of bytes | `Ok of Ketrew_pervasives.Json.Versioned.t ]
           end->
      sig
        val to_json : T.t -> Yojson.Safe.json
        val of_json_exn : Yojson.Safe.json -> T.t
        val serialize : T.t -> string
        val deserialize_exn : string -> T.t
      end
end