// generated by diplomat-tool
import type { GeneralCategoryGroup } from "./GeneralCategoryGroup"
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";



/**
 * See the [Rust documentation for `GeneralCategory`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html) for more information.
 */
export class GeneralCategory {

    /** @internal */
    static fromValue(value: GeneralCategory | string): GeneralCategory;

    get value(): string;

    /** @internal */
    get ffiValue(): number;

    /**
     * See the [Rust documentation for `Unassigned`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.Unassigned) for more information.
     */
    static Unassigned : GeneralCategory;
    /**
     * See the [Rust documentation for `UppercaseLetter`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.UppercaseLetter) for more information.
     */
    static UppercaseLetter : GeneralCategory;
    /**
     * See the [Rust documentation for `LowercaseLetter`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.LowercaseLetter) for more information.
     */
    static LowercaseLetter : GeneralCategory;
    /**
     * See the [Rust documentation for `TitlecaseLetter`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.TitlecaseLetter) for more information.
     */
    static TitlecaseLetter : GeneralCategory;
    /**
     * See the [Rust documentation for `ModifierLetter`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.ModifierLetter) for more information.
     */
    static ModifierLetter : GeneralCategory;
    /**
     * See the [Rust documentation for `OtherLetter`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.OtherLetter) for more information.
     */
    static OtherLetter : GeneralCategory;
    /**
     * See the [Rust documentation for `NonspacingMark`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.NonspacingMark) for more information.
     */
    static NonspacingMark : GeneralCategory;
    /**
     * See the [Rust documentation for `EnclosingMark`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.EnclosingMark) for more information.
     */
    static EnclosingMark : GeneralCategory;
    /**
     * See the [Rust documentation for `SpacingMark`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.SpacingMark) for more information.
     */
    static SpacingMark : GeneralCategory;
    /**
     * See the [Rust documentation for `DecimalNumber`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.DecimalNumber) for more information.
     */
    static DecimalNumber : GeneralCategory;
    /**
     * See the [Rust documentation for `LetterNumber`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.LetterNumber) for more information.
     */
    static LetterNumber : GeneralCategory;
    /**
     * See the [Rust documentation for `OtherNumber`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.OtherNumber) for more information.
     */
    static OtherNumber : GeneralCategory;
    /**
     * See the [Rust documentation for `SpaceSeparator`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.SpaceSeparator) for more information.
     */
    static SpaceSeparator : GeneralCategory;
    /**
     * See the [Rust documentation for `LineSeparator`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.LineSeparator) for more information.
     */
    static LineSeparator : GeneralCategory;
    /**
     * See the [Rust documentation for `ParagraphSeparator`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.ParagraphSeparator) for more information.
     */
    static ParagraphSeparator : GeneralCategory;
    /**
     * See the [Rust documentation for `Control`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.Control) for more information.
     */
    static Control : GeneralCategory;
    /**
     * See the [Rust documentation for `Format`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.Format) for more information.
     */
    static Format : GeneralCategory;
    /**
     * See the [Rust documentation for `PrivateUse`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.PrivateUse) for more information.
     */
    static PrivateUse : GeneralCategory;
    /**
     * See the [Rust documentation for `Surrogate`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.Surrogate) for more information.
     */
    static Surrogate : GeneralCategory;
    /**
     * See the [Rust documentation for `DashPunctuation`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.DashPunctuation) for more information.
     */
    static DashPunctuation : GeneralCategory;
    /**
     * See the [Rust documentation for `OpenPunctuation`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.OpenPunctuation) for more information.
     */
    static OpenPunctuation : GeneralCategory;
    /**
     * See the [Rust documentation for `ClosePunctuation`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.ClosePunctuation) for more information.
     */
    static ClosePunctuation : GeneralCategory;
    /**
     * See the [Rust documentation for `ConnectorPunctuation`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.ConnectorPunctuation) for more information.
     */
    static ConnectorPunctuation : GeneralCategory;
    /**
     * See the [Rust documentation for `OtherPunctuation`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.OtherPunctuation) for more information.
     */
    static OtherPunctuation : GeneralCategory;
    /**
     * See the [Rust documentation for `MathSymbol`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.MathSymbol) for more information.
     */
    static MathSymbol : GeneralCategory;
    /**
     * See the [Rust documentation for `CurrencySymbol`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.CurrencySymbol) for more information.
     */
    static CurrencySymbol : GeneralCategory;
    /**
     * See the [Rust documentation for `ModifierSymbol`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.ModifierSymbol) for more information.
     */
    static ModifierSymbol : GeneralCategory;
    /**
     * See the [Rust documentation for `OtherSymbol`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.OtherSymbol) for more information.
     */
    static OtherSymbol : GeneralCategory;
    /**
     * See the [Rust documentation for `InitialPunctuation`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.InitialPunctuation) for more information.
     */
    static InitialPunctuation : GeneralCategory;
    /**
     * See the [Rust documentation for `FinalPunctuation`](https://docs.rs/icu/2.2.0/icu/properties/props/enum.GeneralCategory.html#variant.FinalPunctuation) for more information.
     */
    static FinalPunctuation : GeneralCategory;


    /**
     * See the [Rust documentation for `for_char`](https://docs.rs/icu/2.2.0/icu/properties/props/trait.EnumeratedProperty.html#tymethod.for_char) for more information.
     */
    static forChar(ch: codepoint): GeneralCategory;

    /**
     * Get the "long" name of this property value (returns empty if property value is unknown)
     *
     * See the [Rust documentation for `get`](https://docs.rs/icu/2.2.0/icu/properties/struct.PropertyNamesLongBorrowed.html#method.get) for more information.
     */
    longName(): string | null;

    /**
     * Get the "short" name of this property value (returns empty if property value is unknown)
     *
     * See the [Rust documentation for `get`](https://docs.rs/icu/2.2.0/icu/properties/struct.PropertyNamesShortBorrowed.html#method.get) for more information.
     */
    shortName(): string | null;

    /**
     * Convert to an integer value usable with ICU4C and `CodePointMapData`
     *
     * See the [Rust documentation for `to_icu4c_value`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.GeneralCategory.html#method.to_icu4c_value) for more information.
     */
    toIntegerValue(): number;

    /**
     * Convert from an integer value from ICU4C or `CodePointMapData`
     *
     * See the [Rust documentation for `from_icu4c_value`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.GeneralCategory.html#method.from_icu4c_value) for more information.
     */
    static fromIntegerValue(other: number): GeneralCategory | null;

    static tryFromStr(s: string): GeneralCategory | null;

    /**
     * Produces a `GeneralCategoryGroup` mask that can represent a group of general categories
     *
     * See the [Rust documentation for `GeneralCategoryGroup`](https://docs.rs/icu/2.2.0/icu/properties/props/struct.GeneralCategoryGroup.html) for more information.
     */
    toGroup(): GeneralCategoryGroup;

    constructor(value: GeneralCategory | string );
}