sig
  type endian = BigEndian | LittleEndian | NativeEndian
  val string_of_endian : Bitstring.endian -> string
  type bitstring = string * int * int
  type t = Bitstring.bitstring
  exception Construct_failure of string * string * int * int
  val compare : Bitstring.bitstring -> Bitstring.bitstring -> int
  val equals : Bitstring.bitstring -> Bitstring.bitstring -> bool
  val bitstring_length : Bitstring.bitstring -> int
  val subbitstring : Bitstring.bitstring -> int -> int -> Bitstring.bitstring
  val dropbits : int -> Bitstring.bitstring -> Bitstring.bitstring
  val takebits : int -> Bitstring.bitstring -> Bitstring.bitstring
  val concat : Bitstring.bitstring list -> Bitstring.bitstring
  val empty_bitstring : Bitstring.bitstring
  val create_bitstring : int -> Bitstring.bitstring
  val make_bitstring : int -> char -> Bitstring.bitstring
  val zeroes_bitstring : int -> Bitstring.bitstring
  val ones_bitstring : int -> Bitstring.bitstring
  val bitstring_of_string : string -> Bitstring.bitstring
  val bitstring_of_file : string -> Bitstring.bitstring
  val bitstring_of_chan : Pervasives.in_channel -> Bitstring.bitstring
  val bitstring_of_chan_max :
    Pervasives.in_channel -> int -> Bitstring.bitstring
  val bitstring_of_file_descr : Unix.file_descr -> Bitstring.bitstring
  val bitstring_of_file_descr_max :
    Unix.file_descr -> int -> Bitstring.bitstring
  val string_of_bitstring : Bitstring.bitstring -> string
  val bitstring_to_file : Bitstring.bitstring -> string -> unit
  val bitstring_to_chan :
    Bitstring.bitstring -> Pervasives.out_channel -> unit
  val hexdump_bitstring :
    Pervasives.out_channel -> Bitstring.bitstring -> unit
  module Buffer :
    sig
      type t
      val create : unit -> Bitstring.Buffer.t
      val contents : Bitstring.Buffer.t -> Bitstring.bitstring
      val add_bits : Bitstring.Buffer.t -> string -> int -> unit
      val add_bit : Bitstring.Buffer.t -> bool -> unit
      val add_byte : Bitstring.Buffer.t -> int -> unit
    end
  val set : Bitstring.bitstring -> int -> unit
  val clear : Bitstring.bitstring -> int -> unit
  val is_set : Bitstring.bitstring -> int -> bool
  val is_clear : Bitstring.bitstring -> int -> bool
  val put : Bitstring.bitstring -> int -> int -> unit
  val get : Bitstring.bitstring -> int -> int
  val package : string
  val version : string
  val debug : bool Pervasives.ref
  val extract_bit : string -> int -> int -> int -> bool
  val extract_char_unsigned : string -> int -> int -> int -> int
  val extract_int_be_unsigned : string -> int -> int -> int -> int
  val extract_int_le_unsigned : string -> int -> int -> int -> int
  val extract_int_ne_unsigned : string -> int -> int -> int -> int
  val extract_int_ee_unsigned :
    Bitstring.endian -> string -> int -> int -> int -> int
  val extract_int32_be_unsigned : string -> int -> int -> int -> int32
  val extract_int32_le_unsigned : string -> int -> int -> int -> int32
  val extract_int32_ne_unsigned : string -> int -> int -> int -> int32
  val extract_int32_ee_unsigned :
    Bitstring.endian -> string -> int -> int -> int -> int32
  val extract_int64_be_unsigned : string -> int -> int -> int -> int64
  val extract_int64_le_unsigned : string -> int -> int -> int -> int64
  val extract_int64_ne_unsigned : string -> int -> int -> int -> int64
  val extract_int64_ee_unsigned :
    Bitstring.endian -> string -> int -> int -> int -> int64
  external extract_fastpath_int16_be_unsigned : string -> int -> int
    = "ocaml_bitstring_extract_fastpath_int16_be_unsigned" "noalloc"
  external extract_fastpath_int16_le_unsigned : string -> int -> int
    = "ocaml_bitstring_extract_fastpath_int16_le_unsigned" "noalloc"
  external extract_fastpath_int16_ne_unsigned : string -> int -> int
    = "ocaml_bitstring_extract_fastpath_int16_ne_unsigned" "noalloc"
  external extract_fastpath_int16_be_signed : string -> int -> int
    = "ocaml_bitstring_extract_fastpath_int16_be_signed" "noalloc"
  external extract_fastpath_int16_le_signed : string -> int -> int
    = "ocaml_bitstring_extract_fastpath_int16_le_signed" "noalloc"
  external extract_fastpath_int16_ne_signed : string -> int -> int
    = "ocaml_bitstring_extract_fastpath_int16_ne_signed" "noalloc"
  external extract_fastpath_int32_be_unsigned :
    string -> int -> int32 -> int32
    = "ocaml_bitstring_extract_fastpath_int32_be_unsigned" "noalloc"
  external extract_fastpath_int32_le_unsigned :
    string -> int -> int32 -> int32
    = "ocaml_bitstring_extract_fastpath_int32_le_unsigned" "noalloc"
  external extract_fastpath_int32_ne_unsigned :
    string -> int -> int32 -> int32
    = "ocaml_bitstring_extract_fastpath_int32_ne_unsigned" "noalloc"
  external extract_fastpath_int32_be_signed : string -> int -> int32 -> int32
    = "ocaml_bitstring_extract_fastpath_int32_be_signed" "noalloc"
  external extract_fastpath_int32_le_signed : string -> int -> int32 -> int32
    = "ocaml_bitstring_extract_fastpath_int32_le_signed" "noalloc"
  external extract_fastpath_int32_ne_signed : string -> int -> int32 -> int32
    = "ocaml_bitstring_extract_fastpath_int32_ne_signed" "noalloc"
  external extract_fastpath_int64_be_unsigned :
    string -> int -> int64 -> int64
    = "ocaml_bitstring_extract_fastpath_int64_be_unsigned" "noalloc"
  external extract_fastpath_int64_le_unsigned :
    string -> int -> int64 -> int64
    = "ocaml_bitstring_extract_fastpath_int64_le_unsigned" "noalloc"
  external extract_fastpath_int64_ne_unsigned :
    string -> int -> int64 -> int64
    = "ocaml_bitstring_extract_fastpath_int64_ne_unsigned" "noalloc"
  external extract_fastpath_int64_be_signed : string -> int -> int64 -> int64
    = "ocaml_bitstring_extract_fastpath_int64_be_signed" "noalloc"
  external extract_fastpath_int64_le_signed : string -> int -> int64 -> int64
    = "ocaml_bitstring_extract_fastpath_int64_le_signed" "noalloc"
  external extract_fastpath_int64_ne_signed : string -> int -> int64 -> int64
    = "ocaml_bitstring_extract_fastpath_int64_ne_signed" "noalloc"
  val construct_bit : Bitstring.Buffer.t -> bool -> int -> exn -> unit
  val construct_char_unsigned :
    Bitstring.Buffer.t -> int -> int -> exn -> unit
  val construct_int_be_unsigned :
    Bitstring.Buffer.t -> int -> int -> exn -> unit
  val construct_int_le_unsigned :
    Bitstring.Buffer.t -> int -> int -> exn -> unit
  val construct_int_ne_unsigned :
    Bitstring.Buffer.t -> int -> int -> exn -> unit
  val construct_int_ee_unsigned :
    Bitstring.endian -> Bitstring.Buffer.t -> int -> int -> exn -> unit
  val construct_int32_be_unsigned :
    Bitstring.Buffer.t -> int32 -> int -> exn -> unit
  val construct_int32_le_unsigned :
    Bitstring.Buffer.t -> int32 -> int -> exn -> unit
  val construct_int32_ne_unsigned :
    Bitstring.Buffer.t -> int32 -> int -> exn -> unit
  val construct_int32_ee_unsigned :
    Bitstring.endian -> Bitstring.Buffer.t -> int32 -> int -> exn -> unit
  val construct_int64_be_unsigned :
    Bitstring.Buffer.t -> int64 -> int -> exn -> unit
  val construct_int64_le_unsigned :
    Bitstring.Buffer.t -> int64 -> int -> exn -> unit
  val construct_int64_ne_unsigned :
    Bitstring.Buffer.t -> int64 -> int -> exn -> unit
  val construct_int64_ee_unsigned :
    Bitstring.endian -> Bitstring.Buffer.t -> int64 -> int -> exn -> unit
  val construct_string : Bitstring.Buffer.t -> string -> unit
  val construct_bitstring : Bitstring.Buffer.t -> Bitstring.bitstring -> unit
end