sig
  type 'a t
  val name : 'Record.Type.t -> string
  val of_yojson :
    'Record.Type.t -> Yojson.Safe.json -> ('a, string) Result.result
  val to_yojson : 'Record.Type.t -> '-> Yojson.Safe.json
  val make :
    name:string ->
    to_yojson:('-> Yojson.Safe.json) ->
    of_yojson:(Yojson.Safe.json -> ('a, string) Result.result) ->
    unit -> 'Record.Type.t
  val make_string :
    name:string ->
    to_string:('-> string) ->
    of_string:(string -> ('a, string) Result.result) ->
    unit -> 'Record.Type.t
  val exn : exn Record.Type.t
  exception UnserializedException of string
  val unit : unit Record.Type.t
  val string : string Record.Type.t
  val int : int Record.Type.t
  val int32 : int32 Record.Type.t
  val int64 : int64 Record.Type.t
  val list : 'Record.Type.t -> 'a list Record.Type.t
  val product_2 :
    string ->
    'Record.Type.t -> string -> 'Record.Type.t -> ('a * 'b) Record.Type.t
  val result :
    'Record.Type.t ->
    'Record.Type.t -> ('a, 'b) Result.result Record.Type.t
  val view :
    name:string ->
    read:('-> ('b, string) Result.result) ->
    write:('-> 'a) -> 'Record.Type.t -> 'Record.Type.t
end