sig
  type t
  val to_string : UtilsLib.ImString.t -> string
  val of_string : string -> UtilsLib.ImString.t
  val init : int -> (int -> char) -> UtilsLib.ImString.t
  val fold_left : ('-> char -> 'a) -> '-> UtilsLib.ImString.t -> 'a
  val nth : UtilsLib.ImString.t -> int -> char option
  val nth_is : UtilsLib.ImString.t -> int -> char -> bool
  val char_rindex_from : UtilsLib.ImString.t -> int -> char -> int option
  val char_index_from : UtilsLib.ImString.t -> int -> char -> int option
  val char_index_all : UtilsLib.ImString.t -> char -> int list
  val char_split : char -> UtilsLib.ImString.t -> UtilsLib.ImString.t list
  val char_splitter : char -> UtilsLib.ImString.t -> UtilsLib.ImString.t list
  val char_cut :
    char ->
    UtilsLib.ImString.t -> (UtilsLib.ImString.t * UtilsLib.ImString.t) option
  val char_rcut :
    char ->
    UtilsLib.ImString.t -> (UtilsLib.ImString.t * UtilsLib.ImString.t) option
  val starts_with : UtilsLib.ImString.t -> UtilsLib.ImString.t -> bool
  val ends_with : UtilsLib.ImString.t -> UtilsLib.ImString.t -> bool
  val str_split :
    UtilsLib.ImString.t -> UtilsLib.ImString.t -> UtilsLib.ImString.t list
  val str_cut :
    UtilsLib.ImString.t ->
    UtilsLib.ImString.t -> (UtilsLib.ImString.t * UtilsLib.ImString.t) option
  val string_index : UtilsLib.ImString.t -> UtilsLib.ImString.t -> int option
  val string_rindex :
    UtilsLib.ImString.t -> UtilsLib.ImString.t -> int option
  val string_index_from :
    UtilsLib.ImString.t -> int -> UtilsLib.ImString.t -> int option
  val string_rindex_from :
    UtilsLib.ImString.t -> int -> UtilsLib.ImString.t -> int option
  external length : UtilsLib.ImString.t -> int = "%string_length"
  external get : UtilsLib.ImString.t -> int -> char = "%string_safe_get"
  val make : int -> char -> UtilsLib.ImString.t
  val copy : UtilsLib.ImString.t -> UtilsLib.ImString.t
  val sub : UtilsLib.ImString.t -> int -> int -> UtilsLib.ImString.t
  val blit : UtilsLib.ImString.t -> int -> string -> int -> int -> unit
  val concat :
    UtilsLib.ImString.t -> UtilsLib.ImString.t list -> UtilsLib.ImString.t
  val iter : (char -> unit) -> UtilsLib.ImString.t -> unit
  val iteri : (int -> char -> unit) -> UtilsLib.ImString.t -> unit
  val map : (char -> char) -> UtilsLib.ImString.t -> UtilsLib.ImString.t
  val trim : UtilsLib.ImString.t -> UtilsLib.ImString.t
  val escaped : UtilsLib.ImString.t -> UtilsLib.ImString.t
  val index : UtilsLib.ImString.t -> char -> int
  val rindex : UtilsLib.ImString.t -> char -> int
  val index_from : UtilsLib.ImString.t -> int -> char -> int
  val rindex_from : UtilsLib.ImString.t -> int -> char -> int
  val contains : UtilsLib.ImString.t -> char -> bool
  val contains_from : UtilsLib.ImString.t -> int -> char -> bool
  val rcontains_from : UtilsLib.ImString.t -> int -> char -> bool
  val uppercase : UtilsLib.ImString.t -> UtilsLib.ImString.t
  val lowercase : UtilsLib.ImString.t -> UtilsLib.ImString.t
  val capitalize : UtilsLib.ImString.t -> UtilsLib.ImString.t
  val uncapitalize : UtilsLib.ImString.t -> UtilsLib.ImString.t
  val compare : UtilsLib.ImString.t -> UtilsLib.ImString.t -> int
  external unsafe_get : UtilsLib.ImString.t -> int -> char
    = "%string_unsafe_get"
  external unsafe_blit :
    UtilsLib.ImString.t -> int -> string -> int -> int -> unit
    = "caml_blit_string" "noalloc"
end