sig
  type xstring
  type t = CamomileLibrary.XString.xstring
  val get : CamomileLibrary.XString.xstring -> int -> CamomileLibrary.UChar.t
  val set :
    CamomileLibrary.XString.xstring -> int -> CamomileLibrary.UChar.t -> unit
  val length : CamomileLibrary.XString.xstring -> int
  val init :
    int ->
    (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.XString.xstring
  type index
  val look :
    CamomileLibrary.XString.xstring ->
    CamomileLibrary.XString.index -> CamomileLibrary.UChar.t
  val nth :
    CamomileLibrary.XString.xstring -> int -> CamomileLibrary.XString.index
  val first :
    CamomileLibrary.XString.xstring -> CamomileLibrary.XString.index
  val last : CamomileLibrary.XString.xstring -> CamomileLibrary.XString.index
  val out_of_range :
    CamomileLibrary.XString.xstring -> CamomileLibrary.XString.index -> bool
  val next :
    CamomileLibrary.XString.xstring ->
    CamomileLibrary.XString.index -> CamomileLibrary.XString.index
  val prev :
    CamomileLibrary.XString.xstring ->
    CamomileLibrary.XString.index -> CamomileLibrary.XString.index
  val move :
    CamomileLibrary.XString.xstring ->
    CamomileLibrary.XString.index -> int -> CamomileLibrary.XString.index
  val compare_index :
    CamomileLibrary.XString.xstring ->
    CamomileLibrary.XString.index -> CamomileLibrary.XString.index -> int
  val make :
    ?bufsize:int ->
    int -> CamomileLibrary.UChar.t -> CamomileLibrary.XString.xstring
  val clear : CamomileLibrary.XString.xstring -> unit
  val reset : CamomileLibrary.XString.xstring -> unit
  val copy :
    CamomileLibrary.XString.xstring -> CamomileLibrary.XString.xstring
  val sub :
    CamomileLibrary.XString.xstring ->
    int -> int -> CamomileLibrary.XString.xstring
  val add_char :
    CamomileLibrary.XString.xstring -> CamomileLibrary.UChar.t -> unit
  val add_text :
    CamomileLibrary.XString.xstring -> 'CamomileLibrary.UText.text -> unit
  val add_xstring :
    CamomileLibrary.XString.xstring ->
    CamomileLibrary.XString.xstring -> unit
  val shrink : CamomileLibrary.XString.xstring -> int -> unit
  val append :
    CamomileLibrary.XString.xstring ->
    CamomileLibrary.XString.xstring -> CamomileLibrary.XString.xstring
  val utext_of : CamomileLibrary.XString.xstring -> CamomileLibrary.UText.t
  val ustring_of :
    CamomileLibrary.XString.xstring -> CamomileLibrary.UText.ustring
  val iter :
    (CamomileLibrary.UChar.t -> unit) ->
    CamomileLibrary.XString.xstring -> unit
  val compare : CamomileLibrary.XString.t -> CamomileLibrary.XString.t -> int
  module Buf :
    sig
      type buf
      val create : int -> CamomileLibrary.XString.Buf.buf
      val contents :
        CamomileLibrary.XString.Buf.buf -> CamomileLibrary.XString.t
      val length : CamomileLibrary.XString.Buf.buf -> int
      val clear : CamomileLibrary.XString.Buf.buf -> unit
      val reset : CamomileLibrary.XString.Buf.buf -> unit
      val add_char :
        CamomileLibrary.XString.Buf.buf -> CamomileLibrary.UChar.t -> unit
      val add_string :
        CamomileLibrary.XString.Buf.buf -> CamomileLibrary.XString.t -> unit
      val add_buffer :
        CamomileLibrary.XString.Buf.buf ->
        CamomileLibrary.XString.Buf.buf -> unit
    end
end