sig
  type bigstring =
      (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t
  module type S = Bin_prot.Binable.S
  module type S1 = Bin_prot.Binable.S1
  module type S2 = Bin_prot.Binable.S2
  module Of_binable :
    functor
      (Binable : S) (M : sig
                           type t
                           val to_binable : Binable.Of_binable.t -> Binable.t
                           val of_binable : Binable.t -> Binable.Of_binable.t
                         end->
      sig
        val bin_size_t : M.t Bin_prot.Size.sizer
        val bin_write_t : M.t Bin_prot.Write.writer
        val bin_read_t : M.t Bin_prot.Read.reader
        val __bin_read_t__ : (int -> M.t) Bin_prot.Read.reader
        val bin_writer_t : M.t Bin_prot.Type_class.writer
        val bin_reader_t : M.t Bin_prot.Type_class.reader
        val bin_t : M.t Bin_prot.Type_class.t
      end
  module Of_binable1 :
    functor
      (Binable : S1) (M : sig
                            type 'a t
                            val to_binable :
                              'Binable.Of_binable1.t -> 'Binable.t
                            val of_binable :
                              'Binable.t -> 'Binable.Of_binable1.t
                          end->
      sig
        val bin_size_t : ('a, 'M.t) Bin_prot.Size.sizer1
        val bin_write_t : ('a, 'M.t) Bin_prot.Write.writer1
        val bin_read_t : ('a, 'M.t) Bin_prot.Read.reader1
        val __bin_read_t__ : ('a, int -> 'M.t) Bin_prot.Read.reader1
        val bin_writer_t : ('a, 'M.t) Bin_prot.Type_class.S1.writer
        val bin_reader_t : ('a, 'M.t) Bin_prot.Type_class.S1.reader
        val bin_t : ('a, 'M.t) Bin_prot.Type_class.S1.t
      end
  module Of_binable2 :
    functor
      (Binable : S2) (M : sig
                            type ('a, 'b) t
                            val to_binable :
                              ('a, 'b) Binable.Of_binable2.t ->
                              ('a, 'b) Binable.t
                            val of_binable :
                              ('a, 'b) Binable.t ->
                              ('a, 'b) Binable.Of_binable2.t
                          end->
      sig
        val bin_size_t : ('a, 'b, ('a, 'b) M.t) Bin_prot.Size.sizer2
        val bin_write_t : ('a, 'b, ('a, 'b) M.t) Bin_prot.Write.writer2
        val bin_read_t : ('a, 'b, ('a, 'b) M.t) Bin_prot.Read.reader2
        val __bin_read_t__ :
          ('a, 'b, int -> ('a, 'b) M.t) Bin_prot.Read.reader2
        val bin_writer_t :
          ('a, 'b, ('a, 'b) M.t) Bin_prot.Type_class.S2.writer
        val bin_reader_t :
          ('a, 'b, ('a, 'b) M.t) Bin_prot.Type_class.S2.reader
        val bin_t : ('a, 'b, ('a, 'b) M.t) Bin_prot.Type_class.S2.t
      end
  module Of_stringable :
    functor (M : Stringable.S->
      sig
        val bin_size_t : M.t Bin_prot.Size.sizer
        val bin_write_t : M.t Bin_prot.Write.writer
        val bin_read_t : M.t Bin_prot.Read.reader
        val __bin_read_t__ : (int -> M.t) Bin_prot.Read.reader
        val bin_writer_t : M.t Bin_prot.Type_class.writer
        val bin_reader_t : M.t Bin_prot.Type_class.reader
        val bin_t : M.t Bin_prot.Type_class.t
      end
  type 'a m = (module Binable.S with type t = 'a)
  val of_bigstring : 'Binable.m -> Binable.bigstring -> 'a
  val to_bigstring :
    ?prefix_with_length:bool -> 'Binable.m -> '-> Binable.bigstring
  val of_string : 'Binable.m -> string -> 'a
  val to_string : 'Binable.m -> '-> string
end