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 : UChar.t -> UCharInfo.general_category_type
  val load_general_category_map :
    unit -> UCharInfo.general_category_type 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 :
    UCharInfo.character_property_type -> UCharTbl.Bool.t
  val load_property_tbl_by_name : string -> UCharTbl.Bool.t
  val load_property_set : UCharInfo.character_property_type -> USet.t
  val load_property_set_by_name : string -> 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 : UChar.t -> UCharInfo.script_type
  val load_script_map : unit -> UCharInfo.script_type UMap.t
  val load_to_lower1_tbl : unit -> UChar.t UCharTbl.t
  val load_to_upper1_tbl : unit -> UChar.t UCharTbl.t
  val load_to_title1_tbl : unit -> UChar.t UCharTbl.t
  type casemap_condition =
    [ `AfterSoftDotted
    | `BeforeDot
    | `FinalSigma
    | `Locale of string
    | `MoreAbove
    | `Not of UCharInfo.casemap_condition ]
  type special_casing_property = {
    lower : UChar.t list;
    title : UChar.t list;
    upper : UChar.t list;
    condition : UCharInfo.casemap_condition list;
  }
  val load_conditional_casing_tbl :
    unit -> UCharInfo.special_casing_property list UCharTbl.t
  val load_casefolding_tbl : unit -> UChar.t list UCharTbl.t
  val combined_class : 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 UCharInfo.decomposition_type * UChar.t list
    | `HangulSyllable ]
  val load_decomposition_tbl :
    unit -> UCharInfo.decomposition_info UCharTbl.t
  val load_composition_tbl : unit -> (UChar.t * UChar.t) list UCharTbl.t
  val load_composition_exclusion_tbl : unit -> UCharTbl.Bool.t
end