sig
  type mutability = [ `Immutable | `Mutable ]
  type 'a text
  type utext = [ `Immutable ] CamomileLibrary.UText.text
  type ustring = [ `Mutable ] CamomileLibrary.UText.text
  type t = CamomileLibrary.UText.utext
  val utext_of_ustring :
    CamomileLibrary.UText.ustring -> CamomileLibrary.UText.utext
  val ustring_of_utext :
    CamomileLibrary.UText.utext -> CamomileLibrary.UText.ustring
  val get : 'CamomileLibrary.UText.text -> int -> CamomileLibrary.UChar.t
  val set :
    CamomileLibrary.UText.ustring -> int -> CamomileLibrary.UChar.t -> unit
  type index
  val look :
    'CamomileLibrary.UText.text ->
    CamomileLibrary.UText.index -> CamomileLibrary.UChar.t
  val nth :
    'CamomileLibrary.UText.text -> int -> CamomileLibrary.UText.index
  val first : 'CamomileLibrary.UText.text -> CamomileLibrary.UText.index
  val last : 'CamomileLibrary.UText.text -> CamomileLibrary.UText.index
  val out_of_range :
    'CamomileLibrary.UText.text -> CamomileLibrary.UText.index -> bool
  val compare_index :
    'CamomileLibrary.UText.text ->
    CamomileLibrary.UText.index -> CamomileLibrary.UText.index -> int
  val next :
    'CamomileLibrary.UText.text ->
    CamomileLibrary.UText.index -> CamomileLibrary.UText.index
  val prev :
    'CamomileLibrary.UText.text ->
    CamomileLibrary.UText.index -> CamomileLibrary.UText.index
  val move :
    'CamomileLibrary.UText.text ->
    CamomileLibrary.UText.index -> int -> CamomileLibrary.UText.index
  val length : 'CamomileLibrary.UText.text -> int
  val of_string : string -> CamomileLibrary.UText.utext
  val init :
    int -> (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.UText.utext
  val init_ustring :
    int -> (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.UText.ustring
  val make : int -> CamomileLibrary.UChar.t -> CamomileLibrary.UText.ustring
  val copy : CamomileLibrary.UText.ustring -> CamomileLibrary.UText.ustring
  val sub :
    'CamomileLibrary.UText.text ->
    int -> int -> 'CamomileLibrary.UText.text
  val fill :
    CamomileLibrary.UText.ustring ->
    int -> int -> CamomileLibrary.UChar.t -> unit
  val blit :
    'CamomileLibrary.UText.text ->
    int -> CamomileLibrary.UText.ustring -> int -> int -> unit
  val append :
    'CamomileLibrary.UText.text ->
    'CamomileLibrary.UText.text -> 'CamomileLibrary.UText.text
  val iter :
    (CamomileLibrary.UChar.t -> unit) ->
    'CamomileLibrary.UText.text -> unit
  val compare :
    'CamomileLibrary.UText.text -> 'CamomileLibrary.UText.text -> int
  module Buf :
    sig
      type buf
      val create : int -> CamomileLibrary.UText.Buf.buf
      val contents : CamomileLibrary.UText.Buf.buf -> CamomileLibrary.UText.t
      val contents_string :
        CamomileLibrary.UText.Buf.buf -> CamomileLibrary.UText.ustring
      val length : CamomileLibrary.UText.Buf.buf -> int
      val clear : CamomileLibrary.UText.Buf.buf -> unit
      val reset : CamomileLibrary.UText.Buf.buf -> unit
      val add_char :
        CamomileLibrary.UText.Buf.buf -> CamomileLibrary.UChar.t -> unit
      val add_string :
        CamomileLibrary.UText.Buf.buf ->
        'CamomileLibrary.UText.text -> unit
      val add_buffer :
        CamomileLibrary.UText.Buf.buf ->
        CamomileLibrary.UText.Buf.buf -> unit
    end
end