sig
  module type Type =
    sig
      type general_category_type =
          [ `Cc
          | `Cf
          | `Cn
          | `Co
          | `Cs
          | `Ll
          | `Lm
          | `Lo
          | `Lt
          | `Lu
          | `Mc
          | `Me
          | `Mn
          | `Nd
          | `Nl
          | `No
          | `Pc
          | `Pd
          | `Pe
          | `Pf
          | `Pi
          | `Po
          | `Ps
          | `Sc
          | `Sk
          | `Sm
          | `So
          | `Zl
          | `Zp
          | `Zs ]
      val general_category :
        CamomileLibrary.UChar.t ->
        CamomileLibrary.UCharInfo.Type.general_category_type
      val load_general_category_map :
        unit ->
        CamomileLibrary.UCharInfo.Type.general_category_type
        CamomileLibrary.UMap.t
      type character_property_type =
          [ `Alphabetic
          | `Ascii_Hex_Digit
          | `Bidi_Control
          | `Default_Ignorable_Code_Point
          | `Deprecated
          | `Diacritic
          | `Extender
          | `Grapheme_Base
          | `Grapheme_Extend
          | `Grapheme_Link
          | `Hex_Digit
          | `Hyphen
          | `IDS_Binary_Operator
          | `IDS_Trinary_Operator
          | `ID_Continue
          | `ID_Start
          | `Ideographic
          | `Logical_Order_Exception
          | `Lowercase
          | `Math
          | `Noncharacter_Code_Point
          | `Other_Alphabetic
          | `Other_Grapheme_Extend
          | `Other_Lowercase
          | `Other_Math
          | `Other_Uppercase
          | `Other_default_Ignorable_Code_Point
          | `Quotation_Mark
          | `Radical
          | `Soft_Dotted
          | `Terminal_Punctuation
          | `Unified_Ideograph
          | `Uppercase
          | `White_Space
          | `XID_Continue
          | `XID_Start ]
      val load_property_tbl :
        CamomileLibrary.UCharInfo.Type.character_property_type ->
        CamomileLibrary.UCharTbl.Bool.t
      val load_property_tbl_by_name :
        string -> CamomileLibrary.UCharTbl.Bool.t
      val load_property_set :
        CamomileLibrary.UCharInfo.Type.character_property_type ->
        CamomileLibrary.USet.t
      val load_property_set_by_name : string -> CamomileLibrary.USet.t
      type script_type =
          [ `Arabic
          | `Armenian
          | `Bengali
          | `Bopomofo
          | `Buhid
          | `Canadian_Aboriginal
          | `Cherokee
          | `Common
          | `Cyrillic
          | `Deseret
          | `Devanagari
          | `Ethiopic
          | `Georgian
          | `Gothic
          | `Greek
          | `Gujarati
          | `Gurmukhi
          | `Han
          | `Hangul
          | `Hanunoo
          | `Hebrew
          | `Hiragana
          | `Inherited
          | `Kannada
          | `Katakana
          | `Khmer
          | `Lao
          | `Latin
          | `Malayalam
          | `Mongolian
          | `Myanmar
          | `Ogham
          | `Old_Italic
          | `Oriya
          | `Runic
          | `Sinhala
          | `Syriac
          | `Tagalog
          | `Tagbanwa
          | `Tamil
          | `Telugu
          | `Thaana
          | `Thai
          | `Tibetan
          | `Yi ]
      val script :
        CamomileLibrary.UChar.t -> CamomileLibrary.UCharInfo.Type.script_type
      val load_script_map :
        unit ->
        CamomileLibrary.UCharInfo.Type.script_type CamomileLibrary.UMap.t
      type version_type =
          [ `Nc | `v1_0 | `v1_1 | `v2_0 | `v2_1 | `v3_0 | `v3_1 | `v3_2 ]
      val age :
        CamomileLibrary.UChar.t ->
        CamomileLibrary.UCharInfo.Type.version_type
      val older :
        CamomileLibrary.UCharInfo.Type.version_type ->
        CamomileLibrary.UCharInfo.Type.version_type -> bool
      val load_to_lower1_tbl :
        unit -> CamomileLibrary.UChar.t CamomileLibrary.UCharTbl.t
      val load_to_upper1_tbl :
        unit -> CamomileLibrary.UChar.t CamomileLibrary.UCharTbl.t
      val load_to_title1_tbl :
        unit -> CamomileLibrary.UChar.t CamomileLibrary.UCharTbl.t
      type casemap_condition =
          [ `AfterSoftDotted
          | `BeforeDot
          | `FinalSigma
          | `Locale of string
          | `MoreAbove
          | `Not of CamomileLibrary.UCharInfo.Type.casemap_condition ]
      type special_casing_property = {
        lower : CamomileLibrary.UChar.t list;
        title : CamomileLibrary.UChar.t list;
        upper : CamomileLibrary.UChar.t list;
        condition : CamomileLibrary.UCharInfo.Type.casemap_condition list;
      }
      val load_conditional_casing_tbl :
        unit ->
        CamomileLibrary.UCharInfo.Type.special_casing_property list
        CamomileLibrary.UCharTbl.t
      val load_casefolding_tbl :
        unit -> CamomileLibrary.UChar.t list CamomileLibrary.UCharTbl.t
      val combined_class : CamomileLibrary.UChar.t -> int
      type decomposition_type =
          [ `Canon
          | `Circle
          | `Compat
          | `Final
          | `Font
          | `Fraction
          | `Initial
          | `Isolated
          | `Medial
          | `Narrow
          | `NoBreak
          | `Small
          | `Square
          | `Sub
          | `Super
          | `Vertical
          | `Wide ]
      type decomposition_info =
          [ `Canonform
          | `Composite of
              CamomileLibrary.UCharInfo.Type.decomposition_type *
              CamomileLibrary.UChar.t list
          | `HangulSyllable ]
      val load_decomposition_tbl :
        unit ->
        CamomileLibrary.UCharInfo.Type.decomposition_info
        CamomileLibrary.UCharTbl.t
      val load_composition_tbl :
        unit ->
        (CamomileLibrary.UChar.t * CamomileLibrary.UChar.t) list
        CamomileLibrary.UCharTbl.t
      val load_composition_exclusion_tbl :
        unit -> CamomileLibrary.UCharTbl.Bool.t
    end
  module Make : functor (Config : ConfigInt.Type-> Type
end