sig
  exception Error of int * int * string
  module Bin :
    sig
      type 'a enc = Stdlib.Buffer.t -> '-> unit
      val enc_err :
        kind:string ->
        ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a
      val enc_byte : int B0_std.Conv.Bin.enc
      val enc_bytes : string B0_std.Conv.Bin.enc
      val enc_list : 'B0_std.Conv.Bin.enc -> 'a list B0_std.Conv.Bin.enc
      type 'a dec = string -> start:int -> int * 'a
      val dec_err :
        kind:string ->
        int -> ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a
      val dec_err_eoi : kind:string -> int -> 'a
      val dec_err_exceed : kind:string -> int -> int -> max:int -> 'a
      val dec_need : kind:string -> string -> start:int -> len:int -> unit
      val dec_byte : kind:string -> int B0_std.Conv.Bin.dec
      val dec_bytes : kind:string -> string B0_std.Conv.Bin.dec
      val dec_list :
        'B0_std.Conv.Bin.dec -> kind:string -> 'a list B0_std.Conv.Bin.dec
    end
  module Txt :
    sig
      type 'a enc = Stdlib.Format.formatter -> '-> unit
      type 'a dec = string -> start:int -> int * 'a
      val enc_err :
        kind:string ->
        ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a
      val enc_atom : string B0_std.Conv.Txt.enc
      val enc_list : 'B0_std.Conv.Txt.enc -> 'a list B0_std.Conv.Txt.enc
      type lexeme = [ `Atom of string | `Le | `Ls ]
      val dec_err :
        kind:string ->
        int -> ('a, Stdlib.Format.formatter, unit, 'b) Stdlib.format4 -> 'a
      val dec_err_eoi : kind:string -> int -> 'a
      val dec_err_lexeme :
        kind:string ->
        int ->
        B0_std.Conv.Txt.lexeme -> exp:B0_std.Conv.Txt.lexeme list -> 'a
      val dec_err_atom :
        kind:string -> int -> string -> exp:string list -> 'a
      val dec_skip : kind:string -> string -> start:int -> int
      val dec_lexeme :
        kind:string -> (int * B0_std.Conv.Txt.lexeme) B0_std.Conv.Txt.dec
      val dec_ls : kind:string -> string -> start:int -> int
      val dec_le : kind:string -> string -> start:int -> int
      val dec_atom : kind:string -> string B0_std.Conv.Txt.dec
      val dec_list :
        'B0_std.Conv.Txt.dec -> kind:string -> 'a list B0_std.Conv.Txt.dec
      val dec_list_tail :
        'B0_std.Conv.Txt.dec ->
        kind:string -> ls:int -> 'a list B0_std.Conv.Txt.dec
    end
  type 'a t
  val v :
    kind:string ->
    docvar:string ->
    'B0_std.Conv.Bin.enc ->
    'B0_std.Conv.Bin.dec ->
    'B0_std.Conv.Txt.enc -> 'B0_std.Conv.Txt.dec -> 'B0_std.Conv.t
  val kind : 'B0_std.Conv.t -> string
  val docvar : 'B0_std.Conv.t -> string
  val bin_enc : 'B0_std.Conv.t -> 'B0_std.Conv.Bin.enc
  val bin_dec : 'B0_std.Conv.t -> 'B0_std.Conv.Bin.dec
  val txt_enc : 'B0_std.Conv.t -> 'B0_std.Conv.Txt.enc
  val txt_dec : 'B0_std.Conv.t -> 'B0_std.Conv.Txt.dec
  val with_kind :
    ?docvar:string -> string -> 'B0_std.Conv.t -> 'B0_std.Conv.t
  val with_docvar : string -> 'B0_std.Conv.t -> 'B0_std.Conv.t
  val with_conv :
    kind:string ->
    docvar:string ->
    ('-> 'a) -> ('-> 'b) -> 'B0_std.Conv.t -> 'B0_std.Conv.t
  val to_bin :
    ?buf:Stdlib.Buffer.t ->
    'B0_std.Conv.t -> '-> (string, string) Stdlib.result
  val of_bin : 'B0_std.Conv.t -> string -> ('a, string) Stdlib.result
  val to_txt :
    ?buf:Stdlib.Buffer.t ->
    'B0_std.Conv.t -> '-> (string, string) Stdlib.result
  val of_txt : 'B0_std.Conv.t -> string -> ('a, string) Stdlib.result
  val to_pp : 'B0_std.Conv.t -> 'B0_std.Fmt.t
  val bool : bool B0_std.Conv.t
  val byte : int B0_std.Conv.t
  val int : int B0_std.Conv.t
  val int31 : int B0_std.Conv.t
  val int32 : int32 B0_std.Conv.t
  val int64 : int64 B0_std.Conv.t
  val float : float B0_std.Conv.t
  val string_bytes : string B0_std.Conv.t
  val atom : string B0_std.Conv.t
  val atom_non_empty : string B0_std.Conv.t
  val option :
    ?kind:string ->
    ?docvar:string -> 'B0_std.Conv.t -> 'a option B0_std.Conv.t
  val some : 'B0_std.Conv.t -> 'a option B0_std.Conv.t
  val result :
    ?kind:string ->
    ?docvar:string ->
    'B0_std.Conv.t ->
    'B0_std.Conv.t -> ('a, 'b) Stdlib.result B0_std.Conv.t
  val list :
    ?kind:string ->
    ?docvar:string -> 'B0_std.Conv.t -> 'a list B0_std.Conv.t
  val array :
    ?kind:string ->
    ?docvar:string -> 'B0_std.Conv.t -> 'a array B0_std.Conv.t
  val pair :
    ?kind:string ->
    ?docvar:string ->
    'B0_std.Conv.t -> 'B0_std.Conv.t -> ('a * 'b) B0_std.Conv.t
  val enum :
    kind:string ->
    docvar:string ->
    ?eq:('-> '-> bool) -> (string * 'a) list -> 'B0_std.Conv.t
  val string_only : string B0_std.Conv.t
end