sig
  type t = Extlib.Rope.t
  exception Out_of_bounds
  exception Invalid_rope
  val max_length : int
  val empty : t
  val of_latin1 : string -> t
  val of_string : string -> t
  val to_string : t -> string
  val of_ustring : Extlib.ExtUTF8.UTF8.t -> t
  val to_ustring : t -> Extlib.ExtUTF8.UTF8.t
  val of_uchar : Extlib.ExtUChar.UChar.t -> t
  val of_char : char -> t
  val make : int -> Extlib.ExtUChar.UChar.t -> t
  val lowercase : t -> t
  val uppercase : t -> t
  val capitalize : t -> t
  val uncapitalize : t -> t
  val join : t -> t list -> t
  val explode : t -> Extlib.ExtUChar.UChar.t list
  val implode : Extlib.ExtUChar.UChar.t list -> t
  val is_empty : t -> bool
  val length : t -> int
  val height : t -> int
  val balance : t -> t
  val append : t -> t -> t
  val ( ^^^ ) : t -> t -> t
  val append_char : Extlib.ExtUChar.UChar.t -> t -> t
  val prepend_char : Extlib.ExtUChar.UChar.t -> t -> t
  val get : t -> int -> Extlib.ExtUChar.UChar.t
  val set : t -> int -> Extlib.ExtUChar.UChar.t -> t
  val sub : t -> int -> int -> t
  val insert : int -> t -> t -> t
  val remove : int -> int -> t -> t
  val concat : t -> t list -> t
  val iter : (Extlib.ExtUChar.UChar.t -> unit) -> t -> unit
  val iteri :
    ?base:int -> (int -> Extlib.ExtUChar.UChar.t -> unit) -> t -> unit
  val range_iter :
    (Extlib.ExtUChar.UChar.t -> unit) -> int -> int -> t -> unit
  val range_iteri :
    (int -> Extlib.ExtUChar.UChar.t -> unit) ->
    ?base:int -> int -> int -> t -> unit
  val bulk_iter : (Extlib.ExtUTF8.UTF8.t -> unit) -> t -> unit
  val bulk_iteri :
    ?base:int -> (int -> Extlib.ExtUTF8.UTF8.t -> unit) -> t -> unit
  val fold : ('-> Extlib.ExtUChar.UChar.t -> 'a) -> '-> t -> 'a
  val bulk_fold : ('-> Extlib.ExtUTF8.UTF8.t -> 'a) -> '-> t -> 'a
  val enum : t -> Extlib.ExtUChar.UChar.t Extlib.Enum.t
  val bulk_enum : t -> Extlib.ExtUTF8.UTF8.t Extlib.Enum.t
  val of_enum : Extlib.ExtUChar.UChar.t Extlib.Enum.t -> t
  val of_bulk_enum : Extlib.ExtUTF8.UTF8.t Extlib.Enum.t -> t
  val backwards : t -> Extlib.ExtUChar.UChar.t Extlib.Enum.t
  val of_backwards : Extlib.ExtUChar.UChar.t Extlib.Enum.t -> t
  val init : int -> (int -> Extlib.ExtUChar.UChar.t) -> t
  val of_int : int -> t
  val of_float : float -> t
  val to_int : t -> int
  val to_float : t -> float
  val bulk_map : (Extlib.ExtUTF8.UTF8.t -> Extlib.ExtUTF8.UTF8.t) -> t -> t
  val map : (Extlib.ExtUChar.UChar.t -> Extlib.ExtUChar.UChar.t) -> t -> t
  val bulk_filter_map :
    (Extlib.ExtUTF8.UTF8.t -> Extlib.ExtUTF8.UTF8.t option) -> t -> t
  val filter_map :
    (Extlib.ExtUChar.UChar.t -> Extlib.ExtUChar.UChar.t option) -> t -> t
  val filter : (Extlib.ExtUChar.UChar.t -> bool) -> t -> t
  val index : t -> Extlib.ExtUChar.UChar.t -> int
  val index_from : t -> int -> Extlib.ExtUChar.UChar.t -> int
  val rindex : t -> Extlib.ExtUChar.UChar.t -> int
  val rindex_from : t -> int -> Extlib.ExtUChar.UChar.t -> int
  val contains : t -> Extlib.ExtUChar.UChar.t -> bool
  val contains_from : t -> int -> Extlib.ExtUChar.UChar.t -> bool
  val rcontains_from : t -> int -> Extlib.ExtUChar.UChar.t -> bool
  val find : t -> t -> int
  val find_from : t -> int -> t -> int
  val rfind : t -> t -> int
  val rfind_from : t -> int -> t -> int
  val starts_with : t -> t -> bool
  val ends_with : t -> t -> bool
  val exists : t -> t -> bool
  val trim : t -> t
  val left : t -> int -> t
  val right : t -> int -> t
  val head : t -> int -> t
  val tail : t -> int -> t
  val strip : ?chars:Extlib.ExtUChar.UChar.t list -> t -> t
  val lchop : t -> t
  val rchop : t -> t
  val slice : ?first:int -> ?last:int -> t -> t
  val splice : t -> int -> int -> t -> t
  val fill : t -> int -> int -> Extlib.ExtUChar.UChar.t -> t
  val blit : t -> int -> t -> int -> int -> t
  val concat : t -> t list -> t
  val escaped : t -> t
  val replace_chars :
    (Extlib.ExtUChar.UChar.t -> Extlib.ExtUTF8.UTF8.t) -> t -> t
  val replace : str:t -> sub:t -> by:t -> bool * t
  val split : t -> t -> t * t
  val rsplit : t -> t -> t * t
  val nsplit : t -> t -> t list
  val compare : t -> t -> int
  val icompare : t -> t -> int
  module IRope : sig type t = t val compare : t -> t -> int end
  val t_of_sexp : Sexplib.Sexp.t -> t
  val sexp_of_t : t -> Sexplib.Sexp.t
  val print : 'Extlib.InnerIO.output -> t -> unit
  val t_printer : t Extlib.Value_printer.t
end