sig
  type json =
      [ `Assoc of (string * Json.json) list
      | `Bool of bool
      | `Float of float
      | `Int of int
      | `List of Json.json list
      | `Null
      | `String of string ]
  type t = Json.json
  val equal : Json.t -> Json.t -> bool
  val compare : Json.t -> Json.t -> int
  val pp : Format.formatter -> Json.t -> unit
  val pp_dump : Format.formatter -> Json.t -> unit
  exception Error of Filepath.Normalized.t * int * string
  val of_bool : bool -> Json.t
  val of_int : int -> Json.t
  val of_string : string -> Json.t
  val of_float : float -> Json.t
  val of_list : Json.t list -> Json.t
  val of_array : Json.t array -> Json.t
  val of_fields : (string * Json.t) list -> Json.t
  val load_lexbuf : Lexing.lexbuf -> Json.t
  val load_channel : ?file:string -> Pervasives.in_channel -> Json.t
  val load_string : string -> Json.t
  val load_file : string -> Json.t
  val save_string : ?pretty:bool -> Json.t -> string
  val save_buffer : ?pretty:bool -> Buffer.t -> Json.t -> unit
  val save_channel : ?pretty:bool -> Pervasives.out_channel -> Json.t -> unit
  val save_formatter : ?pretty:bool -> Format.formatter -> Json.t -> unit
  val save_file : ?pretty:bool -> string -> Json.t -> unit
  val bool : Json.t -> bool
  val int : Json.t -> int
  val string : Json.t -> string
  val float : Json.t -> float
  val array : Json.t -> Json.t array
  val list : Json.t -> Json.t list
  val assoc : Json.t -> (string * Json.t) list
  val fold : (string -> Json.t -> '-> 'a) -> Json.t -> '-> 'a
  val field : string -> Json.t -> Json.t
end