sig
  type variable_option =
      [ `Blanked | `Non_ignorable | `Shift_Trimmed | `Shifted ]
  type precision = [ `Primary | `Quaternary | `Secondary | `Tertiary ]
  module type Type = UCol.Type
  module Make :
    functor (Text : UnicodeString.Type->
      sig
        type text = Text.t
        type index = Text.index
        val compare :
          ?locale:string ->
          ?prec:UCol.precision ->
          ?variable:UCol.variable_option -> text -> text -> int
        val sort_key :
          ?locale:string ->
          ?prec:UCol.precision ->
          ?variable:UCol.variable_option -> text -> string
        val compare_with_key :
          ?locale:string ->
          ?prec:UCol.precision ->
          ?variable:UCol.variable_option -> string -> text -> int
        val search_with_key :
          ?locale:string ->
          ?prec:UCol.precision ->
          ?variable:UCol.variable_option ->
          string -> text -> index -> index * index
        val search :
          ?locale:string ->
          ?prec:UCol.precision ->
          ?variable:UCol.variable_option ->
          text -> text -> index -> index * index
      end
end