sig
  type t
  external length : Bitpath.t -> int = "camlbitpath_length"
  val length8 : Bitpath.t -> int
  val length16 : Bitpath.t -> int
  external get : int -> Bitpath.t -> bool = "camlbitpath_get"
  external get8 : int -> Bitpath.t -> int = "camlbitpath_get8"
  external get16 : int -> Bitpath.t -> int = "camlbitpath_get16"
  external compare : Bitpath.t -> Bitpath.t -> int = "camlbitpath_compare"
  val equal : Bitpath.t -> Bitpath.t -> bool
  val empty : Bitpath.t
  val is_empty : Bitpath.t -> bool
  external init : int -> (int -> bool) -> Bitpath.t = "camlbitpath_init"
  external init8 : int -> (int -> int) -> Bitpath.t = "camlbitpath_init8"
  external init16 : int -> (int -> int) -> Bitpath.t = "camlbitpath_init16"
  external const : int -> bool -> Bitpath.t = "camlbitpath_const"
  val c0 : Bitpath.t
  val c1 : Bitpath.t
  external bitnot : Bitpath.t -> Bitpath.t = "camlbitpath_not"
  external slice : int -> int -> Bitpath.t -> Bitpath.t = "camlbitpath_slice"
  val prefix : int -> Bitpath.t -> Bitpath.t
  val suffix : int -> Bitpath.t -> Bitpath.t
  val has_slice : Bitpath.t -> int -> Bitpath.t -> bool
  val has_prefix : Bitpath.t -> Bitpath.t -> bool
  val has_suffix : Bitpath.t -> Bitpath.t -> bool
  external coprefix_length : Bitpath.t -> Bitpath.t -> int
    = "camlbitpath_coprefix_length"
  val coprefix : Bitpath.t -> Bitpath.t -> Bitpath.t
  external coslice_length : int -> Bitpath.t -> int -> Bitpath.t -> int
    = "camlbitpath_coslice_length"
  external cat : Bitpath.t -> Bitpath.t -> Bitpath.t = "camlbitpath_cat"
  val map : (bool -> bool) -> Bitpath.t -> Bitpath.t
  val mapi : (int -> bool -> bool) -> Bitpath.t -> Bitpath.t
  val fold : (bool -> '-> 'a) -> Bitpath.t -> '-> 'a
  val foldi : (int -> bool -> '-> 'a) -> Bitpath.t -> '-> 'a
  val foldi8 : (int -> int -> '-> 'a) -> Bitpath.t -> '-> 'a
  val foldi16 : (int -> int -> '-> 'a) -> Bitpath.t -> '-> 'a
  val iter : (bool -> unit) -> Bitpath.t -> unit
  val iteri : (int -> bool -> unit) -> Bitpath.t -> unit
  val of_array8 : int array -> Bitpath.t
  val of_array16 : int array -> Bitpath.t
  val of_string : string -> Bitpath.t
  val to_string : Bitpath.t -> string
  val of_hex_string : ?n:int -> string -> Bitpath.t
  val to_hex_string : ?n:int -> Bitpath.t -> string
  val of_bin_string : ?n:int -> string -> Bitpath.t
  val to_bin_string : ?n:int -> Bitpath.t -> string
end