sig
  module type Interface =
    sig
      type regexp = CamomileLibrary.URe.regexp
      val regexp : string -> CamomileLibrary.UReStr.Interface.regexp
      val quote : string -> string
      val regexp_string : string -> CamomileLibrary.UReStr.Interface.regexp
      module type Type =
        sig
          type text
          type index
          type compiled_regexp
          module SubText :
            sig
              type t
              val get : t -> int -> UChar.t
              val init : int -> (int -> UChar.t) -> t
              val length : t -> int
              type index
              val look : t -> index -> UChar.t
              val nth : t -> int -> index
              val first : t -> index
              val last : t -> index
              val next : t -> index -> index
              val prev : t -> index -> index
              val move : t -> index -> int -> index
              val out_of_range : t -> index -> bool
              val compare_index : t -> index -> index -> int
              val iter : (UChar.t -> unit) -> t -> unit
              val compare : t -> t -> int
              module Buf :
                sig
                  type buf
                  val create : int -> buf
                  val contents : buf -> t
                  val clear : buf -> unit
                  val reset : buf -> unit
                  val add_char : buf -> UChar.t -> unit
                  val add_string : buf -> t -> unit
                  val add_buffer : buf -> buf -> unit
                end
              type ur_text = text
              type ur_index = index
              val refer : ur_text -> ur_index -> ur_index -> t
              val excerpt : t -> ur_text
              val context : t -> ur_text * ur_index * ur_index
              val ur_index_of : t -> index -> ur_index
            end
          val compile :
            CamomileLibrary.UReStr.Interface.regexp ->
            CamomileLibrary.UReStr.Interface.Type.compiled_regexp
          val regexp_match :
            ?sem:CamomileLibrary.URe.match_semantics ->
            CamomileLibrary.UReStr.Interface.Type.compiled_regexp ->
            CamomileLibrary.UReStr.Interface.Type.text ->
            CamomileLibrary.UReStr.Interface.Type.index ->
            CamomileLibrary.UReStr.Interface.Type.SubText.t option array
            option
          val string_match :
            CamomileLibrary.UReStr.Interface.Type.compiled_regexp ->
            CamomileLibrary.UReStr.Interface.Type.text ->
            CamomileLibrary.UReStr.Interface.Type.index -> bool
          val search_forward :
            ?sem:CamomileLibrary.URe.match_semantics ->
            CamomileLibrary.UReStr.Interface.Type.compiled_regexp ->
            CamomileLibrary.UReStr.Interface.Type.text ->
            CamomileLibrary.UReStr.Interface.Type.index ->
            CamomileLibrary.UReStr.Interface.Type.SubText.t option array
            option
        end
      module Make :
        functor (Text : UnicodeString.Type->
          sig
            type text = Text.t
            type index = Text.index
            type compiled_regexp
            module SubText :
              sig
                type t
                val get : t -> int -> UChar.t
                val init : int -> (int -> UChar.t) -> t
                val length : t -> int
                type index
                val look : t -> index -> UChar.t
                val nth : t -> int -> index
                val first : t -> index
                val last : t -> index
                val next : t -> index -> index
                val prev : t -> index -> index
                val move : t -> index -> int -> index
                val out_of_range : t -> index -> bool
                val compare_index : t -> index -> index -> int
                val iter : (UChar.t -> unit) -> t -> unit
                val compare : t -> t -> int
                module Buf :
                  sig
                    type buf
                    val create : int -> buf
                    val contents : buf -> t
                    val clear : buf -> unit
                    val reset : buf -> unit
                    val add_char : buf -> UChar.t -> unit
                    val add_string : buf -> t -> unit
                    val add_buffer : buf -> buf -> unit
                  end
                type ur_text = text
                type ur_index = index
                val refer : ur_text -> ur_index -> ur_index -> t
                val excerpt : t -> ur_text
                val context : t -> ur_text * ur_index * ur_index
                val ur_index_of : t -> index -> ur_index
              end
            val compile : regexp -> compiled_regexp
            val regexp_match :
              ?sem:URe.match_semantics ->
              compiled_regexp ->
              text -> index -> SubText.t option array option
            val string_match : compiled_regexp -> text -> index -> bool
            val search_forward :
              ?sem:URe.match_semantics ->
              compiled_regexp ->
              text -> index -> SubText.t option array option
          end
    end
  module Configure : functor (Config : ConfigInt.Type-> Interface
end