sig
  type t = string
  type char = Cd_Chars.Chars.Latin1.Char.t
  external length : t -> int = "%string_length"
  external get : t -> int -> char = "%string_safe_get"
  val make : int -> char -> t
  val copy : t -> t
  val sub : t -> int -> int -> t
  val concat : t -> t list -> t
  val iter : (char -> unit) -> t -> unit
  val escaped : t -> t
  val index : t -> char -> int
  val rindex : t -> char -> int
  val index_from : t -> int -> char -> int
  val rindex_from : t -> int -> char -> int
  val contains : t -> char -> bool
  val contains_from : t -> int -> char -> bool
  val rcontains_from : t -> int -> char -> bool
  val uppercase : t -> t
  val lowercase : t -> t
  val capitalize : t -> t
  val uncapitalize : t -> t
  val compare : t -> t -> int
  external unsafe_get : t -> int -> char = "%string_unsafe_get"
  val is_prefix : string:string -> prefix:string -> bool
  val chop_prefix : string:string -> prefix:string -> string
  val is_suffix : string:string -> suffix:string -> bool
  val chop_suffix : string:string -> suffix:string -> string
  val trim_count : (char -> bool) -> string -> int * string * int
  val trim : (char -> bool) -> string -> string
  val split_by_first : (char -> bool) -> string -> string * string * string
  val split_exact : (char -> bool) -> string -> string list
  val split : (char -> bool) -> string -> string list
  val decode_hex_opt : char -> int option
  val urldecode : string -> string
  val urlencode : string -> string
  val concat_array : string -> string array -> string
  val explode : string -> char list
  val compare_nocase_latin1 : string -> string -> int
  val of_bytes : Cd_Bytes.Bytes.t -> string
  val of_char : char -> string
  val length_bytes : string -> int
  val map_reduce : (char -> 'a) -> 'Monoid.t -> string -> 'a
  val monoid_concat : string Monoid.t
  val append : string -> string -> string
  val eq_nocase_latin1 : string -> string -> bool
  val cmp_nocase_latin1 : string -> string -> Cdt.cmp_res
  val hash_nocase_latin1 : string -> int
  val hexdump : style:[ `Line ] -> string -> string
  val cmp : string -> string -> Cdt.cmp_res
  val eq : string -> string -> bool
  val hash : string -> int
  val show : string -> string
  val opt_cmp : string -> string -> Cdt.cmp_res
  val opt_eq : string -> string -> bool
  val opt_hash : string -> int
  val opt_show : string -> string
  val ti : string Cdt.ti
  val tifull : string Cdt.tifull
end