from typing import Dict


class Emoji:
    GRINNING_FACE = "\U0001f600"
    SMILING_FACE_WITH_SMILING_EYES = "\U0001f60a"
    FACE_WITH_TEARS_OF_JOY = "\U0001f602"
    SMILING_FACE_WITH_HEART_EYES = "\U0001f60d"
    SMILING_FACE_WITH_SUNGLASSES = "\U0001f60e"
    WINKING_FACE = "\U0001f609"
    PENSIVE_FACE = "\U0001f614"
    CRYING_FACE = "\U0001f622"
    ANGRY_FACE = "\U0001f620"
    SMILING_DEVIL = "\U0001f608"
    SKULL = "\U0001f480"
    PILE_OF_POO = "\U0001f4a9"
    GHOST = "\U0001f47b"
    ALIEN = "\U0001f47d"
    HEART_EYES_CAT = "\U0001f63b"
    KISSING_CAT = "\U0001f63d"
    WAVING_HAND = "\U0001f44b"
    THUMBS_UP = "\U0001f44d"
    THUMBS_DOWN = "\U0001f44e"
    OK_HAND = "\U0001f44c"
    CLAPPING_HANDS = "\U0001f44f"
    RAISING_HANDS = "\U0001f64c"
    PRAYING_HANDS = "\U0001f64f"
    FLEXED_BICEPS = "\U0001f4aa"
    PERSON_BOWING = "\U0001f647"
    PERSON_RUNNING = "\U0001f3c3"
    DANCING_WOMAN = "\U0001f483"
    COUPLE_WITH_HEART = "\U0001f491"
    FAMILY = "\U0001f46a"
    BUST_IN_SILHOUETTE = "\U0001f464"
    FOOTPRINTS = "\U0001f463"
    DOG_FACE = "\U0001f436"
    CAT_FACE = "\U0001f431"
    MOUSE_FACE = "\U0001f42d"
    LION_FACE = "\U0001f981"
    TIGER_FACE = "\U0001f42f"
    ELEPHANT = "\U0001f418"
    MONKEY_FACE = "\U0001f435"
    PANDA_FACE = "\U0001f43c"
    BEAR_FACE = "\U0001f43b"
    WOLF = "\U0001f43a"
    SUNFLOWER = "\U0001f33b"
    ROSE = "\U0001f339"
    TULIP = "\U0001f337"
    FOUR_LEAF_CLOVER = "\U0001f340"
    MAPLE_LEAF = "\U0001f341"
    FALLEN_LEAF = "\U0001f342"
    SNOWFLAKE = "\u2744"  # Correct Unicode for snowflake emoji
    PIZZA = "\U0001f355"
    HAMBURGER = "\U0001f354"
    FRENCH_FRIES = "\U0001f35f"
    SPAGHETTI = "\U0001f35d"
    SUSHI = "\U0001f363"
    BENTO_BOX = "\U0001f371"
    CAKE = "\U0001f370"
    CHOCOLATE_BAR = "\U0001f36b"
    BEER_MUG = "\U0001f37a"
    TROPICAL_DRINK = "\U0001f379"
    COFFEE = "\U00002615"
    TEACUP_WITHOUT_HANDLE = "\U0001f375"
    SOCCER_BALL = "\U000026bd"
    BASKETBALL = "\U0001f3c0"
    AMERICAN_FOOTBALL = "\U0001f3c8"
    TENNIS = "\U0001f3be"
    GOLFING = "\U0001f3cc"
    SKIING = "\U0001f3bf"
    MUSICAL_NOTE = "\U0001f3b5"
    GUITAR = "\U0001f3b8"
    MICROPHONE = "\U0001f3a4"
    MOVIE_CAMERA = "\U0001f3a5"
    ARTIST_PALETTE = "\U0001f3a8"
    CAR = "\U0001f697"
    AIRPLANE = "\U0001f6e9"
    ROCKET = "\U0001f680"
    SAILBOAT = "\U000026f5"
    HOUSE = "\U0001f3e0"
    CASTLE = "\U0001f3f0"
    STATUE_OF_LIBERTY = "\U0001f5fd"
    FERRIS_WHEEL = "\U0001f3a1"
    MOUNTAIN = "\U0001f3d4"
    SUNSET = "\U0001f307"
    FULL_MOON = "\U0001f315"
    GLOBE_SHOWING_EUROPE_AFRICA = "\U0001f30d"
    MOBILE_PHONE = "\U0001f4f1"
    LAPTOP = "\U0001f4bb"
    CAMERA = "\U0001f4f7"
    BOOKS = "\U0001f4da"
    LIGHT_BULB = "\U0001f4a1"
    MONEY_BAG = "\U0001f4b0"
    GEM_STONE = "\U0001f48e"
    GIFT = "\U0001f381"
    HOURGLASS = "\U0000231b"
    WATCH = "\U0000231a"
    LOCK = "\U0001f512"
    KEY = "\U0001f511"
    HEART = "\U00002764"
    BROKEN_HEART = "\U0001f494"
    YELLOW_HEART = "\U0001f49b"
    BLUE_HEART = "\U0001f499"
    STAR = "\U00002b50"
    SPARKLES = "\U00002728"
    EXCLAMATION_MARK = "\U00002757"
    QUESTION_MARK = "\U00002753"
    CHECK_MARK = "\U00002713"
    CROSS_MARK = "\U0000274c"
    COPYRIGHT = "\U000000a9"
    REGISTERED = "\U000000ae"
    TAG_DIGIT_ZERO = "\U000e0030"
    TAG_DIGIT_ONE = "\U000e0031"
    TAG_DIGIT_TWO = "\U000e0032"
    TAG_DIGIT_THREE = "\U000e0033"
    TAG_DIGIT_FOUR = "\U000e0034"
    TAG_DIGIT_FIVE = "\U000e0035"
    TAG_DIGIT_SIX = "\U000e0036"
    TAG_DIGIT_SEVEN = "\U000e0037"
    TAG_DIGIT_EIGHT = "\U000e0038"
    TAG_DIGIT_NINE = "\U000e0039"

    EMOJI_MAP: Dict[str, str] = {
        "GRINNING_FACE": GRINNING_FACE,
        "SMILING_FACE_WITH_SMILING_EYES": SMILING_FACE_WITH_SMILING_EYES,
        "FACE_WITH_TEARS_OF_JOY": FACE_WITH_TEARS_OF_JOY,
        "SMILING_FACE_WITH_HEART_EYES": SMILING_FACE_WITH_HEART_EYES,
        "SMILING_FACE_WITH_SUNGLASSES": SMILING_FACE_WITH_SUNGLASSES,
        "WINKING_FACE": WINKING_FACE,
        "PENSIVE_FACE": PENSIVE_FACE,
        "CRYING_FACE": CRYING_FACE,
        "ANGRY_FACE": ANGRY_FACE,
        "SMILING_DEVIL": SMILING_DEVIL,
        "SKULL": SKULL,
        "PILE_OF_POO": PILE_OF_POO,
        "GHOST": GHOST,
        "ALIEN": ALIEN,
        "HEART_EYES_CAT": HEART_EYES_CAT,
        "KISSING_CAT": KISSING_CAT,
        "WAVING_HAND": WAVING_HAND,
        "THUMBS_UP": THUMBS_UP,
        "THUMBS_DOWN": THUMBS_DOWN,
        "OK_HAND": OK_HAND,
        "CLAPPING_HANDS": CLAPPING_HANDS,
        "RAISING_HANDS": RAISING_HANDS,
        "PRAYING_HANDS": PRAYING_HANDS,
        "FLEXED_BICEPS": FLEXED_BICEPS,
        "PERSON_BOWING": PERSON_BOWING,
        "PERSON_RUNNING": PERSON_RUNNING,
        "DANCING_WOMAN": DANCING_WOMAN,
        "COUPLE_WITH_HEART": COUPLE_WITH_HEART,
        "FAMILY": FAMILY,
        "BUST_IN_SILHOUETTE": BUST_IN_SILHOUETTE,
        "FOOTPRINTS": FOOTPRINTS,
        "DOG_FACE": DOG_FACE,
        "CAT_FACE": CAT_FACE,
        "MOUSE_FACE": MOUSE_FACE,
        "LION_FACE": LION_FACE,
        "TIGER_FACE": TIGER_FACE,
        "ELEPHANT": ELEPHANT,
        "MONKEY_FACE": MONKEY_FACE,
        "PANDA_FACE": PANDA_FACE,
        "BEAR_FACE": BEAR_FACE,
        "WOLF": WOLF,
        "SUNFLOWER": SUNFLOWER,
        "ROSE": ROSE,
        "TULIP": TULIP,
        "FOUR_LEAF_CLOVER": FOUR_LEAF_CLOVER,
        "MAPLE_LEAF": MAPLE_LEAF,
        "FALLEN_LEAF": FALLEN_LEAF,
        "SNOWFLAKE": SNOWFLAKE,
        "PIZZA": PIZZA,
        "HAMBURGER": HAMBURGER,
        "FRENCH_FRIES": FRENCH_FRIES,
        "SPAGHETTI": SPAGHETTI,
        "SUSHI": SUSHI,
        "BENTO_BOX": BENTO_BOX,
        "CAKE": CAKE,
        "CHOCOLATE_BAR": CHOCOLATE_BAR,
        "BEER_MUG": BEER_MUG,
        "TROPICAL_DRINK": TROPICAL_DRINK,
        "COFFEE": COFFEE,
        "TEACUP_WITHOUT_HANDLE": TEACUP_WITHOUT_HANDLE,
        "SOCCER_BALL": SOCCER_BALL,
        "BASKETBALL": BASKETBALL,
        "AMERICAN_FOOTBALL": AMERICAN_FOOTBALL,
        "TENNIS": TENNIS,
        "GOLFING": GOLFING,
        "SKIING": SKIING,
        "MUSICAL_NOTE": MUSICAL_NOTE,
        "GUITAR": GUITAR,
        "MICROPHONE": MICROPHONE,
        "MOVIE_CAMERA": MOVIE_CAMERA,
        "ARTIST_PALETTE": ARTIST_PALETTE,
        "CAR": CAR,
        "AIRPLANE": AIRPLANE,
        "ROCKET": ROCKET,
        "SAILBOAT": SAILBOAT,
        "HOUSE": HOUSE,
        "CASTLE": CASTLE,
        "STATUE_OF_LIBERTY": STATUE_OF_LIBERTY,
        "FERRIS_WHEEL": FERRIS_WHEEL,
        "MOUNTAIN": MOUNTAIN,
        "SUNSET": SUNSET,
        "FULL_MOON": FULL_MOON,
        "GLOBE_SHOWING_EUROPE_AFRICA": GLOBE_SHOWING_EUROPE_AFRICA,
        "MOBILE_PHONE": MOBILE_PHONE,
        "LAPTOP": LAPTOP,
        "CAMERA": CAMERA,
        "BOOKS": BOOKS,
        "LIGHT_BULB": LIGHT_BULB,
        "MONEY_BAG": MONEY_BAG,
        "GEM_STONE": GEM_STONE,
        "GIFT": GIFT,
        "HOURGLASS": HOURGLASS,
        "WATCH": WATCH,
        "LOCK": LOCK,
        "KEY": KEY,
        "HEART": HEART,
        "BROKEN_HEART": BROKEN_HEART,
        "YELLOW_HEART": YELLOW_HEART,
        "BLUE_HEART": BLUE_HEART,
        "STAR": STAR,
        "SPARKLES": SPARKLES,
        "EXCLAMATION_MARK": EXCLAMATION_MARK,
        "QUESTION_MARK": QUESTION_MARK,
        "CHECK_MARK": CHECK_MARK,
        "CROSS_MARK": CROSS_MARK,
        "COPYRIGHT": COPYRIGHT,
        "REGISTERED": REGISTERED,
        "TAG_DIGIT_ZERO": TAG_DIGIT_ZERO,
        "TAG_DIGIT_ONE": TAG_DIGIT_ONE,
        "TAG_DIGIT_TWO": TAG_DIGIT_TWO,
        "TAG_DIGIT_THREE": TAG_DIGIT_THREE,
        "TAG_DIGIT_FOUR": TAG_DIGIT_FOUR,
        "TAG_DIGIT_FIVE": TAG_DIGIT_FIVE,
        "TAG_DIGIT_SIX": TAG_DIGIT_SIX,
        "TAG_DIGIT_SEVEN": TAG_DIGIT_SEVEN,
        "TAG_DIGIT_EIGHT": TAG_DIGIT_EIGHT,
        "TAG_DIGIT_NINE": TAG_DIGIT_NINE,
    }

    @classmethod
    def get_emoji(cls, name: str) -> str:
        """Retrieve an emoji by its name.

        Args:
            name (str): The name of the emoji (e.g., "GRINNING_FACE").

        Returns:
            str: The Unicode emoji string.

        Raises:
            KeyError: If the emoji name is not found.
        """
        return cls.EMOJI_MAP[name]