sig
  type t [@@immediate]
  val min : Uchar.t
  val max : Uchar.t
  val bom : Uchar.t
  val rep : Uchar.t
  val succ : Uchar.t -> Uchar.t
  val pred : Uchar.t -> Uchar.t
  val is_valid : int -> bool
  val of_int : int -> Uchar.t
  val unsafe_of_int : int -> Uchar.t
  val to_int : Uchar.t -> int
  val is_char : Uchar.t -> bool
  val of_char : char -> Uchar.t
  val to_char : Uchar.t -> char
  val unsafe_to_char : Uchar.t -> char
  val equal : Uchar.t -> Uchar.t -> bool
  val compare : Uchar.t -> Uchar.t -> int
  val hash : Uchar.t -> int
  type utf_decode [@@immediate]
  val utf_decode_is_valid : Uchar.utf_decode -> bool
  val utf_decode_uchar : Uchar.utf_decode -> Uchar.t
  val utf_decode_length : Uchar.utf_decode -> int
  val utf_decode : int -> Uchar.t -> Uchar.utf_decode
  val utf_decode_invalid : int -> Uchar.utf_decode
  val utf_8_byte_length : Uchar.t -> int
  val utf_16_byte_length : Uchar.t -> int
end