sig
  type uchar = int
  module Op :
    sig
      type ustring
      val ( ^. ) :
        Ustring.Op.ustring -> Ustring.Op.ustring -> Ustring.Op.ustring
      val ( ^.. ) :
        Ustring.Op.ustring -> Ustring.Op.ustring -> Ustring.Op.ustring
      val ( =. ) : Ustring.Op.ustring -> Ustring.Op.ustring -> bool
      val ( <>. ) : Ustring.Op.ustring -> Ustring.Op.ustring -> bool
      val us : string -> Ustring.Op.ustring
      val uc : char -> Ustring.uchar
      val ustring_of_bool : bool -> Ustring.Op.ustring
      val bool_of_ustring : Ustring.Op.ustring -> bool
      val ustring_of_int : int -> Ustring.Op.ustring
      val int_of_ustring : Ustring.Op.ustring -> int
      val ustring_of_float : float -> Ustring.Op.ustring
      val float_of_ustring : Ustring.Op.ustring -> float
      val uprint_char : Ustring.uchar -> unit
      val uprint_string : Ustring.Op.ustring -> unit
      val uprint_int : int -> unit
      val uprint_float : float -> unit
      val uprint_endline : Ustring.Op.ustring -> unit
      val uprint_newline : unit -> unit
      val uprint_bool : bool -> unit
    end
  type t = Ustring.Op.ustring
  type ustring = Ustring.Op.ustring
  type encoding =
      Ascii
    | Latin1
    | Utf8
    | Utf16le
    | Utf16be
    | Utf32le
    | Utf32be
    | Auto
  val length : Ustring.ustring -> int
  val get : Ustring.ustring -> int -> Ustring.uchar
  val set : Ustring.ustring -> int -> Ustring.uchar -> unit
  val create : int -> Ustring.ustring
  val make : int -> Ustring.uchar -> Ustring.ustring
  val copy : Ustring.ustring -> Ustring.ustring
  val sub : Ustring.ustring -> int -> int -> Ustring.ustring
  val concat : Ustring.ustring -> Ustring.ustring list -> Ustring.ustring
  val rindex : Ustring.ustring -> Ustring.uchar -> int
  val rindex_from : Ustring.ustring -> int -> Ustring.uchar -> int
  val append : Ustring.ustring -> Ustring.ustring -> Ustring.ustring
  val fast_append : Ustring.ustring -> Ustring.ustring -> Ustring.ustring
  val fast_concat :
    Ustring.ustring -> Ustring.ustring list -> Ustring.ustring
  val count : Ustring.ustring -> Ustring.uchar -> int
  val trim_left : Ustring.ustring -> Ustring.ustring
  val trim_right : Ustring.ustring -> Ustring.ustring
  val trim : Ustring.ustring -> Ustring.ustring
  val empty : unit -> Ustring.ustring
  val unix2dos : string -> string
  val string2hex : string -> Ustring.ustring
  val convert_escaped_chars : Ustring.ustring -> Ustring.ustring
  val read_file : ?encode_type:Ustring.encoding -> string -> Ustring.ustring
  val read_from_channel :
    ?encode_type:Ustring.encoding ->
    Pervasives.in_channel -> int -> Ustring.ustring
  exception Decode_error of (Ustring.encoding * int)
  val from_latin1 : string -> Ustring.ustring
  val from_latin1_char : char -> Ustring.ustring
  val from_utf8 : string -> Ustring.ustring
  val from_uchars : Ustring.uchar array -> Ustring.ustring
  val latin1_to_uchar : char -> Ustring.uchar
  val to_latin1 : Ustring.ustring -> string
  val to_utf8 : Ustring.ustring -> string
  val to_uchars : Ustring.ustring -> Ustring.uchar array
  val validate_utf8_string : string -> int -> int
  val lexing_from_channel :
    ?encode_type:Ustring.encoding -> Pervasives.in_channel -> Lexing.lexbuf
  val lexing_from_ustring : Ustring.ustring -> Lexing.lexbuf
  val equal : Ustring.t -> Ustring.t -> bool
  val not_equal : Ustring.t -> Ustring.t -> bool
  val compare : Ustring.t -> Ustring.t -> int
  val hash : Ustring.t -> int
end