sig
  type endian = [ `Big_endian | `Little_endian ]
  val unpack_signed_8 : buf:string -> pos:int -> int
  val pack_signed_8 : buf:string -> pos:int -> int -> unit
  val unpack_unsigned_8 : buf:string -> pos:int -> int
  val pack_unsigned_8 : buf:string -> pos:int -> int -> unit
  val unpack_signed_16 : byte_order:endian -> buf:string -> pos:int -> int
  val pack_signed_16 :
    byte_order:endian -> buf:string -> pos:int -> int -> unit
  val unpack_unsigned_16_big_endian : buf:string -> pos:int -> int
  val unpack_unsigned_16_little_endian : buf:string -> pos:int -> int
  val pack_unsigned_16_big_endian : buf:string -> pos:int -> int -> unit
  val pack_unsigned_16_little_endian : buf:string -> pos:int -> int -> unit
  val unpack_signed_16_big_endian : buf:string -> pos:int -> int
  val unpack_signed_16_little_endian : buf:string -> pos:int -> int
  val pack_signed_16_big_endian : buf:string -> pos:int -> int -> unit
  val pack_signed_16_little_endian : buf:string -> pos:int -> int -> unit
  val unpack_unsigned_16 : byte_order:endian -> buf:string -> pos:int -> int
  val pack_unsigned_16 :
    byte_order:endian -> buf:string -> pos:int -> int -> unit
  val unpack_signed_32 : byte_order:endian -> buf:string -> pos:int -> int32
  val unpack_signed_32_int :
    byte_order:endian -> buf:string -> pos:int -> int
  val pack_signed_32 :
    byte_order:endian -> buf:string -> pos:int -> Int32.t -> unit
  val pack_signed_32_int :
    byte_order:endian -> buf:string -> pos:int -> int -> unit
  val unpack_unsigned_32_int_big_endian : buf:string -> pos:int -> int
  val unpack_unsigned_32_int_little_endian : buf:string -> pos:int -> int
  val pack_unsigned_32_int_big_endian : buf:string -> pos:int -> int -> unit
  val pack_unsigned_32_int_little_endian :
    buf:string -> pos:int -> int -> unit
  val unpack_signed_32_int_big_endian : buf:string -> pos:int -> int
  val unpack_signed_32_int_little_endian : buf:string -> pos:int -> int
  val pack_signed_32_int_big_endian : buf:string -> pos:int -> int -> unit
  val pack_signed_32_int_little_endian : buf:string -> pos:int -> int -> unit
  val unpack_unsigned_32_int :
    byte_order:endian -> buf:string -> pos:int -> int
  val pack_unsigned_32_int :
    byte_order:endian -> buf:string -> pos:int -> int -> unit
  val unpack_signed_64 : byte_order:endian -> buf:string -> pos:int -> int64
  val unpack_signed_64_int :
    byte_order:endian -> buf:string -> pos:int -> int
  val pack_signed_64 :
    byte_order:endian -> buf:string -> pos:int -> Int64.t -> unit
  val pack_signed_64_int :
    byte_order:endian -> buf:string -> pos:int -> int -> unit
  val unpack_signed_64_big_endian : buf:string -> pos:int -> int64
  val unpack_signed_64_little_endian : buf:string -> pos:int -> int64
  val pack_signed_64_big_endian : buf:string -> pos:int -> int64 -> unit
  val pack_signed_64_little_endian : buf:string -> pos:int -> int64 -> unit
  val unpack_float : byte_order:endian -> buf:string -> pos:int -> float
  val pack_float :
    byte_order:endian -> buf:string -> pos:int -> float -> unit
  val unpack_padded_fixed_string :
    ?padding:char -> buf:string -> pos:int -> len:int -> unit -> string
  val pack_padded_fixed_string :
    ?padding:char -> buf:string -> pos:int -> len:int -> string -> unit
  val test : unit -> unit
end