sig   type ('a, 'b) value_decoder = '-> [ `Error of string | `Ok of 'b ]   type ('b, 'a) value_encoder = '-> 'a   type ('a, 'b) value_codec =       ('a, 'b) Jsonc.value_decoder * ('b, 'a) Jsonc.value_encoder   type loc = (int * int) * (int * int)   type 'a def = Jsonc.loc * 'a   val invalid_loc : Jsonc.loc   val is_invalid_loc : Jsonc.loc -> bool   val invalid_def : '-> 'Jsonc.def   val undef : 'Jsonc.def -> 'a   type nat_string = Jsonc_codec.nat_string   val nat_string_of_string : string -> Jsonc.nat_string   val nat_string_to_string : Jsonc.nat_string -> string   type soup = Jsonc_codec.soup   type obj   type 'a codec   val default : 'Jsonc.codec -> 'a   val with_default : '-> 'Jsonc.codec -> 'Jsonc.codec   val null : [ `Null ] Jsonc.codec   val bool : bool Jsonc.codec   val float : float Jsonc.codec   val int : int Jsonc.codec   val int_strict : int Jsonc.codec   val string : string Jsonc.codec   val nat_string : Jsonc.nat_string Jsonc.codec   val nullable : 'Jsonc.codec -> 'a option Jsonc.codec   val view :     ?default:'->     ('a, 'b) Jsonc.value_codec -> 'Jsonc.codec -> 'Jsonc.codec   val enum : ?default:'-> (string * 'a) list -> 'Jsonc.codec   val type_match :     default:'->     ([ `Array | `Bool | `Float | `Null | `Object | `String ] ->      [ `Error of string | `Ok of 'Jsonc.codec ]) ->     ('-> 'Jsonc.codec) -> 'Jsonc.codec   val soup : Jsonc.soup Jsonc.codec   type json =       [ `A of Jsonc.json list       | `Bool of bool       | `Float of float       | `Null       | `O of (Jsonc.nat_string * Jsonc.json) list       | `String of Jsonc.nat_string ]   val json : Jsonc.json Jsonc.codec   val some : 'Jsonc.codec -> 'a option Jsonc.codec   val array : 'Jsonc.codec -> 'a list Jsonc.codec   val array_array : 'Jsonc.codec -> 'a array Jsonc.codec   type objc   type 'a mem   type 'a anon   val objc : ?kind:string -> unit -> Jsonc.objc   val mem :     ?eq:('-> '-> bool) ->     ?opt:[ `No | `Yes | `Yes_rem ] ->     Jsonc.objc -> string -> 'Jsonc.codec -> 'Jsonc.mem   val mem_opt : Jsonc.objc -> string -> 'Jsonc.codec -> 'a option Jsonc.mem   val mem_match :     ?eq:('-> '-> bool) ->     ?opt:[ `No | `Yes | `Yes_rem ] ->     Jsonc.objc ->     'Jsonc.mem -> string -> ('-> 'Jsonc.codec) -> 'Jsonc.mem   val anon :     ?default:(string * 'a) list ->     Jsonc.objc -> 'Jsonc.codec -> 'Jsonc.anon   val obj : ?seal:bool -> Jsonc.objc -> Jsonc.obj Jsonc.codec   type memv   val memv : 'Jsonc.mem -> '-> Jsonc.memv   val anonv : 'Jsonc.anon -> string -> '-> Jsonc.memv   val new_obj : Jsonc.obj Jsonc.codec -> Jsonc.memv list -> Jsonc.obj   val get : 'Jsonc.mem -> Jsonc.obj -> 'a   val set : 'Jsonc.mem -> Jsonc.obj -> '-> Jsonc.obj   val anon_names : 'Jsonc.anon -> Jsonc.obj -> string list   val find_anon : 'Jsonc.anon -> string -> Jsonc.obj -> 'a option   val get_anon : 'Jsonc.anon -> string -> Jsonc.obj -> 'a   val add_anon : 'Jsonc.anon -> string -> Jsonc.obj -> '-> Jsonc.obj   val rem_anon : 'Jsonc.anon -> string -> Jsonc.obj -> Jsonc.obj   val get_def : 'Jsonc.mem -> Jsonc.obj -> 'Jsonc.def   val find_anon_def :     'Jsonc.anon -> string -> Jsonc.obj -> 'Jsonc.def option   val get_anon_def : 'Jsonc.anon -> string -> Jsonc.obj -> 'Jsonc.def   type error =       [ `Json_decoder of Jsonc_codec.error       | `Member of string * string * [ `Dup | `Miss | `Unknown ]       | `Type of string * string       | `Value_decoder of string ]   val error_to_string : Jsonc.error -> string   type 'a decoder   val decoder :     ?loc:bool ->     ?dups:[ `Error | `Skip ] ->     ?unknown:[ `Error | `Skip ] ->     Jsonc_codec.decoder -> 'Jsonc.codec -> 'Jsonc.decoder   val decode :     'Jsonc.decoder ->     [ `Await | `Error of Jsonc.error Jsonc.def | `Ok of 'Jsonc.def ]   val decoder_decoder : 'Jsonc.decoder -> Jsonc_codec.decoder   type encoder   val encoder : Jsonc_codec.encoder -> 'Jsonc.codec -> '-> Jsonc.encoder   val encode : Jsonc.encoder -> [ `Ok | `Partial ]   val encoder_encoder : Jsonc.encoder -> Jsonc_codec.encoder end