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