sig
  type t
  exception Out_of_bounds
  val max_length : int
  val empty : BatText.t
  val of_latin1 : string -> BatText.t
  val of_string : string -> BatText.t
  val to_string : BatText.t -> string
  val of_uchar : BatUChar.t -> BatText.t
  val of_char : char -> BatText.t
  val make : int -> BatUChar.t -> BatText.t
  val join : BatText.t -> BatText.t list -> BatText.t
  val explode : BatText.t -> BatUChar.t list
  val implode : BatUChar.t list -> BatText.t
  val is_empty : BatText.t -> bool
  val length : BatText.t -> int
  val height : BatText.t -> int
  val balance : BatText.t -> BatText.t
  val append : BatText.t -> BatText.t -> BatText.t
  val ( ^^^ ) : BatText.t -> BatText.t -> BatText.t
  val append_char : BatUChar.t -> BatText.t -> BatText.t
  val prepend_char : BatUChar.t -> BatText.t -> BatText.t
  val get : BatText.t -> int -> BatUChar.t
  val set : BatText.t -> int -> BatUChar.t -> BatText.t
  val sub : BatText.t -> int -> int -> BatText.t
  val insert : int -> BatText.t -> BatText.t -> BatText.t
  val remove : int -> int -> BatText.t -> BatText.t
  val iter : (BatUChar.t -> unit) -> BatText.t -> unit
  val iteri : ?base:int -> (int -> BatUChar.t -> unit) -> BatText.t -> unit
  val range_iter : (BatUChar.t -> unit) -> int -> int -> BatText.t -> unit
  val range_iteri :
    (int -> BatUChar.t -> unit) ->
    ?base:int -> int -> int -> BatText.t -> unit
  val fold : ('-> BatUChar.t -> 'a) -> '-> BatText.t -> 'a
  val init : int -> (int -> BatUChar.t) -> BatText.t
  val map : (BatUChar.t -> BatUChar.t) -> BatText.t -> BatText.t
  val filter_map :
    (BatUChar.t -> BatUChar.t option) -> BatText.t -> BatText.t
  val filter : (BatUChar.t -> bool) -> BatText.t -> BatText.t
  val enum : BatText.t -> BatUChar.t BatEnum.t
  val backwards : BatText.t -> BatUChar.t BatEnum.t
  val of_enum : BatUChar.t BatEnum.t -> BatText.t
  val index : BatText.t -> BatUChar.t -> int
  val index_from : BatText.t -> int -> BatUChar.t -> int
  val rindex : BatText.t -> BatUChar.t -> int
  val rindex_from : BatText.t -> int -> BatUChar.t -> int
  val contains : BatText.t -> BatUChar.t -> bool
  val contains_from : BatText.t -> int -> BatUChar.t -> bool
  val rcontains_from : BatText.t -> int -> BatUChar.t -> bool
  val find : BatText.t -> BatText.t -> int
  val find_from : BatText.t -> int -> BatText.t -> int
  val rfind : BatText.t -> BatText.t -> int
  val rfind_from : BatText.t -> int -> BatText.t -> int
  val starts_with : BatText.t -> BatText.t -> bool
  val ends_with : BatText.t -> BatText.t -> bool
  val exists : BatText.t -> BatText.t -> bool
  val left : BatText.t -> int -> BatText.t
  val right : BatText.t -> int -> BatText.t
  val head : BatText.t -> int -> BatText.t
  val tail : BatText.t -> int -> BatText.t
  val strip : ?chars:BatUChar.t list -> BatText.t -> BatText.t
  val lchop : BatText.t -> BatText.t
  val rchop : BatText.t -> BatText.t
  val slice : ?first:int -> ?last:int -> BatText.t -> BatText.t
  val splice : BatText.t -> int -> int -> BatText.t -> BatText.t
  val fill : BatText.t -> int -> int -> BatUChar.t -> BatText.t
  val blit : BatText.t -> int -> BatText.t -> int -> int -> BatText.t
  val concat : BatText.t -> BatText.t list -> BatText.t
  val replace :
    str:BatText.t -> sub:BatText.t -> by:BatText.t -> bool * BatText.t
  val split : BatText.t -> BatText.t -> BatText.t * BatText.t
  val rsplit : BatText.t -> BatText.t -> BatText.t * BatText.t
  val nsplit : BatText.t -> BatText.t -> BatText.t list
  val compare : BatText.t -> BatText.t -> int
  val equal : BatText.t -> BatText.t -> bool
  val print : (BatText.t, 'a) BatIO.printer
  val read_char : BatIO.input -> BatUChar.t
  val read_text : BatIO.input -> int -> BatText.t
  val read_line : BatIO.input -> BatText.t
  val read_all : BatIO.input -> BatText.t
  val write_char : (BatUChar.t, 'a) BatIO.printer
  val write_text : (BatText.t, 'a) BatIO.printer
  val write_line : (BatText.t, 'a) BatIO.printer
  val lines_of : BatIO.input -> BatText.t BatEnum.t
  val chars_of : BatIO.input -> BatUChar.t BatEnum.t
  val output_text : unit BatIO.output -> BatText.t -> unit
  val write_lines : (BatText.t BatEnum.t, 'a) BatIO.printer
  val write_texts : (BatText.t BatEnum.t, 'a) BatIO.printer
  val write_chars : (BatUChar.t BatEnum.t, 'a) BatIO.printer
end