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_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_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_float : byte_order:endian -> buf:string -> pos:int -> float
  val pack_float :
    byte_order:endian -> buf:string -> pos:int -> float -> unit
  val test : unit -> unit
  val ounit_tests : unit -> OUnit.test
end