sig
  type endian = BigEndian | LittleEndian | NativeEndian
  val string_of_endian : Bitmatch.endian -> string
  type bitstring = string * int * int
  exception Construct_failure of string * string * int * int
  val empty_bitstring : Bitmatch.bitstring
  val create_bitstring : int -> Bitmatch.bitstring
  val make_bitstring : int -> char -> Bitmatch.bitstring
  val bitstring_of_string : string -> Bitmatch.bitstring
  val bitstring_of_file : string -> Bitmatch.bitstring
  val bitstring_of_chan : Pervasives.in_channel -> Bitmatch.bitstring
  val bitstring_of_chan_max :
    Pervasives.in_channel -> int -> Bitmatch.bitstring
  val bitstring_of_file_descr : Unix.file_descr -> Bitmatch.bitstring
  val bitstring_of_file_descr_max :
    Unix.file_descr -> int -> Bitmatch.bitstring
  val bitstring_length : Bitmatch.bitstring -> int
  val string_of_bitstring : Bitmatch.bitstring -> string
  val bitstring_to_file : Bitmatch.bitstring -> string -> unit
  val bitstring_to_chan :
    Bitmatch.bitstring -> Pervasives.out_channel -> unit
  val hexdump_bitstring :
    Pervasives.out_channel -> Bitmatch.bitstring -> unit
  module Buffer :
    sig
      type t
      val create : unit -> Bitmatch.Buffer.t
      val contents : Bitmatch.Buffer.t -> Bitmatch.bitstring
      val add_bits : Bitmatch.Buffer.t -> string -> int -> unit
      val add_bit : Bitmatch.Buffer.t -> bool -> unit
      val add_byte : Bitmatch.Buffer.t -> int -> unit
    end
  val package : string
  val version : string
  val debug : bool Pervasives.ref
  val extract_bitstring :
    string -> int -> int -> int -> Bitmatch.bitstring * int * int
  val extract_remainder :
    string -> int -> int -> Bitmatch.bitstring * int * int
  val extract_bit : string -> int -> int -> int -> bool * int * int
  val extract_char_unsigned : string -> int -> int -> int -> int * int * int
  val extract_int_be_unsigned :
    string -> int -> int -> int -> int * int * int
  val extract_int_le_unsigned :
    string -> int -> int -> int -> int * int * int
  val extract_int_ne_unsigned :
    string -> int -> int -> int -> int * int * int
  val extract_int_ee_unsigned :
    Bitmatch.endian -> string -> int -> int -> int -> int * int * int
  val extract_int32_be_unsigned :
    string -> int -> int -> int -> int32 * int * int
  val extract_int32_le_unsigned :
    string -> int -> int -> int -> int32 * int * int
  val extract_int32_ne_unsigned :
    string -> int -> int -> int -> int32 * int * int
  val extract_int32_ee_unsigned :
    Bitmatch.endian -> string -> int -> int -> int -> int32 * int * int
  val extract_int64_be_unsigned :
    string -> int -> int -> int -> int64 * int * int
  val extract_int64_le_unsigned :
    string -> int -> int -> int -> int64 * int * int
  val extract_int64_ne_unsigned :
    string -> int -> int -> int -> int64 * int * int
  val extract_int64_ee_unsigned :
    Bitmatch.endian -> string -> int -> int -> int -> int64 * int * int
  val construct_bit : Bitmatch.Buffer.t -> bool -> int -> exn -> unit
  val construct_char_unsigned :
    Bitmatch.Buffer.t -> int -> int -> exn -> unit
  val construct_int_be_unsigned :
    Bitmatch.Buffer.t -> int -> int -> exn -> unit
  val construct_int_ne_unsigned :
    Bitmatch.Buffer.t -> int -> int -> exn -> unit
  val construct_int_ee_unsigned :
    Bitmatch.endian -> Bitmatch.Buffer.t -> int -> int -> exn -> unit
  val construct_int32_be_unsigned :
    Bitmatch.Buffer.t -> int32 -> int -> exn -> unit
  val construct_int32_ne_unsigned :
    Bitmatch.Buffer.t -> int32 -> int -> exn -> unit
  val construct_int32_ee_unsigned :
    Bitmatch.endian -> Bitmatch.Buffer.t -> int32 -> int -> exn -> unit
  val construct_int64_be_unsigned :
    Bitmatch.Buffer.t -> int64 -> int -> exn -> unit
  val construct_int64_ne_unsigned :
    Bitmatch.Buffer.t -> int64 -> int -> exn -> unit
  val construct_int64_ee_unsigned :
    Bitmatch.endian -> Bitmatch.Buffer.t -> int64 -> int -> exn -> unit
  val construct_string : Bitmatch.Buffer.t -> string -> unit
end