`sig
type t = BatText.t
exception Out_of_bounds
val max_length : int
val empty : t
val of_latin1 : string -> t
val of_string : string -> t
val to_string : t -> string
val of_uchar : BatUChar.t -> t
val of_char : char -> t
val make : int -> BatUChar.t -> t
val join : t -> t list -> t
val explode : t -> BatUChar.t list
val implode : BatUChar.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 : BatUChar.t -> t -> t
val prepend_char : BatUChar.t -> t -> t
val get : t -> int -> BatUChar.t
val set : t -> int -> BatUChar.t -> t
val sub : t -> int -> int -> t
val insert : int -> t -> t -> t
val remove : int -> int -> t -> t
val iter : (BatUChar.t -> unit) -> t -> unit
val iteri : ?base:int -> (int -> BatUChar.t -> unit) -> t -> unit
val range_iter : (BatUChar.t -> unit) -> int -> int -> t -> unit
val range_iteri :
(int -> BatUChar.t -> unit) -> ?base:int -> int -> int -> t -> unit
val fold : ('a -> BatUChar.t -> 'a) -> 'a -> t -> 'a
val init : int -> (int -> BatUChar.t) -> t
val map : (BatUChar.t -> BatUChar.t) -> t -> t
val filter_map : (BatUChar.t -> BatUChar.t option) -> t -> t
val filter : (BatUChar.t -> bool) -> t -> t
val index : t -> BatUChar.t -> int
val index_from : t -> int -> BatUChar.t -> int
val rindex : t -> BatUChar.t -> int
val rindex_from : t -> int -> BatUChar.t -> int
val contains : t -> BatUChar.t -> bool
val contains_from : t -> int -> BatUChar.t -> bool
val rcontains_from : t -> int -> BatUChar.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 left : t -> int -> t
val right : t -> int -> t
val head : t -> int -> t
val tail : t -> int -> t
val strip : ?chars:BatUChar.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 -> BatUChar.t -> t
val blit : t -> int -> t -> int -> int -> t
val concat : t -> t list -> 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 print : (t, 'a) BatIO.printer
val read_char : BatIO.input -> BatUChar.t
val read_text : BatIO.input -> int -> t
val read_line : BatIO.input -> t
val read_all : BatIO.input -> t
val write_char : (BatUChar.t, 'a) BatIO.printer
val write_text : (t, 'a) BatIO.printer
val write_line : (t, 'a) BatIO.printer
val lines_of : BatIO.input -> t BatEnum.t
val chars_of : BatIO.input -> BatUChar.t BatEnum.t
val output_text : unit BatIO.output -> t -> unit
val write_lines : (t BatEnum.t, 'a) BatIO.printer
val write_texts : (t BatEnum.t, 'a) BatIO.printer
val write_chars : (BatUChar.t BatEnum.t, 'a) BatIO.printer
end`