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