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