sig
  type t = Yojson.Safe.json
  val to_string : Yojson.Safe.json -> string
  val log : Yojson.Safe.json -> Ketrew_pervasives.Log.t
  module Versioned :
    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
end