def METHOD_NAME(
    lang: discord.Locale | str,
    wish_data: WishData,
    dark_mode: bool,
) -> io.BytesIO:
    im: Image.Image = Image.open(
        f"yelan/templates/wish/[{'light' if not dark_mode else 'dark'}] Wish Overview.png"
    )
    im = im.resize((im.width // 3, im.height // 3))
    draw = ImageDraw.Draw(im)
    fill = asset.primary_text if not dark_mode else asset.white
    lang = str(lang)
    # banner name
    font = get_font(lang, 40, "Bold")
    draw.text((30, 100), wish_data.title, font=font, fill=fill)
    # primogem amount
    font = get_font(lang, 20, "Regular")
    primo_count = f"{wish_data.total_wishes*160:,}"
    draw.text(
        (69, 171),
        text_map.get(649, lang).format(a=primo_count),
        font=font,
        fill=fill,
    )
    # stats
    stats = {
        text_map.get(650, lang): wish_data.total_wishes,
        text_map.get(651, lang): wish_data.pity,
        text_map.get(652, lang): wish_data.four_star,
        text_map.get(653, lang): wish_data.five_star,
    }
    col = 0
    offset = (89, 273)
    for text, stat in stats.items():
        col += 1
        if col == 3:
            offset = (89, offset[1] + 118)
        font = get_font(lang, 20, "Light")
        text = text.upper().split(" ")
        draw.text(
            (offset[0] + 137 - font.getlength(text[0]), offset[1] - 27),
            text[0],
            font=font,
            fill=fill,
        )
        draw.text(
            (offset[0] + 137 - font.getlength(text[1]), offset[1]),
            text[1],
            font=font,
            fill=fill,
        )
        bigger = font.getlength(text[0])
        if font.getlength(text[1]) > bigger:
            bigger = font.getlength(text[1])
        left_point = offset[0] + 137 - bigger
        adder = 262 if col in [2, 4] else 30
        mid_point = (adder + left_point) // 2
        font = dynamic_font_size(
            str(stat), 30, 50, left_point - 30 - 20, get_font(lang, 50, "Medium")
        )
        draw.text((mid_point, offset[1]), str(stat), font=font, fill=fill, anchor="mm")
        offset = (offset[0] + 232, offset[1])
    # recent 5 star pulls
    font = get_font(lang, 30, "Bold")
    draw.text((30, 469), text_map.get(654, lang), font=font, fill=fill)
    draw_wish_recents(
        lang, wish_data.recents[:8], dark_mode, im, draw, CardType.OVERVIEW
    )
    fp = io.BytesIO()
    im = im.resize((im.width * 3, im.height * 3))
    im = im.crop((0, 240, im.width, im.height))
    im.save(fp, "PNG", optimize=True)
    return fp