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