sig
  type 'a t
  val name : 'a Record.Type.t -> string
  val of_yojson :
    'a Record.Type.t -> Yojson.Safe.json -> ('a, string) Result.result
  val to_yojson : 'a Record.Type.t -> 'a -> Yojson.Safe.json
  val make :
    name:string ->
    to_yojson:('a -> Yojson.Safe.json) ->
    of_yojson:(Yojson.Safe.json -> ('a, string) Result.result) ->
    unit -> 'a Record.Type.t
  val make_string :
    name:string ->
    to_string:('a -> string) ->
    of_string:(string -> ('a, string) Result.result) ->
    unit -> 'a 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 : 'a Record.Type.t -> 'a list Record.Type.t
  val product_2 :
    string ->
    'a Record.Type.t -> string -> 'b Record.Type.t -> ('a * 'b) Record.Type.t
  val result :
    'a Record.Type.t ->
    'b Record.Type.t -> ('a, 'b) Result.result Record.Type.t
  val view :
    name:string ->
    read:('a -> ('b, string) Result.result) ->
    write:('b -> 'a) -> 'a Record.Type.t -> 'b Record.Type.t
end