sig
  module type Type =
    sig
      type t
      val get :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        int -> CamomileLibrary.Type.UChar.t
      val init :
        int ->
        (int -> CamomileLibrary.Type.UChar.t) ->
        CamomileLibrary.Type.UnicodeString.Type.t
      val length : CamomileLibrary.Type.UnicodeString.Type.t -> int
      type index
      val look :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.index ->
        CamomileLibrary.Type.UChar.t
      val nth :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        int -> CamomileLibrary.Type.UnicodeString.Type.index
      val next :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.index ->
        CamomileLibrary.Type.UnicodeString.Type.index
      val prev :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.index ->
        CamomileLibrary.Type.UnicodeString.Type.index
      val out_of_range :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.index -> bool
      val iter :
        (CamomileLibrary.Type.UChar.t -> unit) ->
        CamomileLibrary.Type.UnicodeString.Type.t -> unit
      val compare :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.t -> int
      val first :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.index
      val last :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.index
      val move :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.index ->
        int -> CamomileLibrary.Type.UnicodeString.Type.index
      val compare_index :
        CamomileLibrary.Type.UnicodeString.Type.t ->
        CamomileLibrary.Type.UnicodeString.Type.index ->
        CamomileLibrary.Type.UnicodeString.Type.index -> int
      module Buf :
        sig
          type buf
          val create : int -> CamomileLibrary.Type.UnicodeString.Type.Buf.buf
          val contents :
            CamomileLibrary.Type.UnicodeString.Type.Buf.buf ->
            CamomileLibrary.Type.UnicodeString.Type.t
          val clear : CamomileLibrary.Type.UnicodeString.Type.Buf.buf -> unit
          val reset : CamomileLibrary.Type.UnicodeString.Type.Buf.buf -> unit
          val add_char :
            CamomileLibrary.Type.UnicodeString.Type.Buf.buf ->
            CamomileLibrary.Type.UChar.t -> unit
          val add_string :
            CamomileLibrary.Type.UnicodeString.Type.Buf.buf ->
            CamomileLibrary.Type.UnicodeString.Type.t -> unit
          val add_buffer :
            CamomileLibrary.Type.UnicodeString.Type.Buf.buf ->
            CamomileLibrary.Type.UnicodeString.Type.Buf.buf -> unit
        end
    end
end