sig
  type a
  val t : Deriving_Json.Json.a Deriving_Json.t
  val write : Buffer.t -> Deriving_Json.Json.a -> unit
  val read : Deriving_Json_lexer.lexbuf -> Deriving_Json.Json.a
  val to_string : Deriving_Json.Json.a -> string
  val from_string : string -> Deriving_Json.Json.a
  val match_variant : [ `Cst of int | `NCst of int ] -> bool
  val read_variant :
    Deriving_Json_lexer.lexbuf ->
    [ `Cst of int | `NCst of int ] -> Deriving_Json.Json.a
end