sig
  type 'a ocaml_array = 'a array
  module Biniou :
    sig
      type 'a reader = Bi_inbuf.t -> 'a
      type 'a writer = Bi_outbuf.t -> '-> unit
      val from_channel :
        ?len:int ->
        ?shrlen:int ->
        'Ag_util.Biniou.reader -> Pervasives.in_channel -> 'a
      val from_file :
        ?len:int -> ?shrlen:int -> 'Ag_util.Biniou.reader -> string -> 'a
      val to_channel :
        ?len:int ->
        ?shrlen:int ->
        'Ag_util.Biniou.writer -> Pervasives.out_channel -> '-> unit
      val to_file :
        ?len:int ->
        ?shrlen:int -> 'Ag_util.Biniou.writer -> string -> '-> unit
    end
  module Json :
    sig
      type 'a reader = Yojson.Safe.lexer_state -> Lexing.lexbuf -> 'a
      type 'a writer = Bi_outbuf.t -> '-> unit
      val from_lexbuf :
        ?stream:bool ->
        'Ag_util.Json.reader ->
        Yojson.Safe.lexer_state -> Lexing.lexbuf -> 'a
      val from_string :
        ?buf:Bi_outbuf.t ->
        ?fname:string -> ?lnum:int -> 'Ag_util.Json.reader -> string -> 'a
      val from_channel :
        ?buf:Bi_outbuf.t ->
        ?fname:string ->
        ?lnum:int -> 'Ag_util.Json.reader -> Pervasives.in_channel -> 'a
      val from_file :
        ?buf:Bi_outbuf.t ->
        ?fname:string -> ?lnum:int -> 'Ag_util.Json.reader -> string -> 'a
      val stream_from_lexbuf :
        ?fin:(unit -> unit) ->
        'Ag_util.Json.reader ->
        Yojson.Safe.lexer_state -> Lexing.lexbuf -> 'Stream.t
      val stream_from_string :
        ?buf:Bi_outbuf.t ->
        ?fin:(unit -> unit) ->
        ?fname:string ->
        ?lnum:int -> 'Ag_util.Json.reader -> string -> 'Stream.t
      val stream_from_channel :
        ?buf:Bi_outbuf.t ->
        ?fin:(unit -> unit) ->
        ?fname:string ->
        ?lnum:int ->
        'Ag_util.Json.reader -> Pervasives.in_channel -> 'Stream.t
      val stream_from_file :
        ?buf:Bi_outbuf.t ->
        ?fin:(unit -> unit) ->
        ?fname:string ->
        ?lnum:int -> 'Ag_util.Json.reader -> string -> 'Stream.t
      val list_from_string :
        ?buf:Bi_outbuf.t ->
        ?fin:(unit -> unit) ->
        ?fname:string ->
        ?lnum:int -> 'Ag_util.Json.reader -> string -> 'a list
      val list_from_channel :
        ?buf:Bi_outbuf.t ->
        ?fin:(unit -> unit) ->
        ?fname:string ->
        ?lnum:int ->
        'Ag_util.Json.reader -> Pervasives.in_channel -> 'a list
      val list_from_file :
        ?buf:Bi_outbuf.t ->
        ?fname:string ->
        ?lnum:int -> 'Ag_util.Json.reader -> string -> 'a list
      val to_string : ?len:int -> 'Ag_util.Json.writer -> '-> string
      val to_channel :
        ?len:int ->
        'Ag_util.Json.writer -> Pervasives.out_channel -> '-> unit
      val to_file :
        ?len:int -> 'Ag_util.Json.writer -> string -> '-> unit
      val stream_to_string :
        ?len:int ->
        ?lf:string -> 'Ag_util.Json.writer -> 'Stream.t -> string
      val stream_to_channel :
        ?len:int ->
        ?lf:string ->
        'Ag_util.Json.writer ->
        Pervasives.out_channel -> 'Stream.t -> unit
      val stream_to_file :
        ?len:int ->
        ?lf:string -> 'Ag_util.Json.writer -> string -> 'Stream.t -> unit
      val list_to_string :
        ?len:int -> ?lf:string -> 'Ag_util.Json.writer -> 'a list -> string
      val list_to_channel :
        ?len:int ->
        ?lf:string ->
        'Ag_util.Json.writer -> Pervasives.out_channel -> 'a list -> unit
      val list_to_file :
        ?len:int ->
        ?lf:string -> 'Ag_util.Json.writer -> string -> 'a list -> unit
      val preset_unknown_field_handler : string -> string -> unit
      val unknown_field_handler : (string -> string -> unit) Pervasives.ref
    end
  module Validation :
    sig
      type path_elem = [ `Field of string | `Index of int ]
      type path = Ag_util.Validation.path_elem list
      val string_of_path : Ag_util.Validation.path -> string
      type error = {
        error_path : Ag_util.Validation.path;
        error_msg : string option;
      }
      val error :
        ?msg:string -> Ag_util.Validation.path -> Ag_util.Validation.error
      val string_of_error : Ag_util.Validation.error -> string
    end
end