from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton

import config


def premium_plans_kb() -> InlineKeyboardMarkup:
    rows = []
    for key, plan in config.PREMIUM_PLANS.items():
        rows.append([
            InlineKeyboardButton(
                text=f"{plan['title']} — {plan['stars']} ⭐",
                callback_data=f"buy:{key}",
            )
        ])
    return InlineKeyboardMarkup(inline_keyboard=rows)


def incoming_message_kb(sender_id: int, msg_row_id: int) -> InlineKeyboardMarkup:
    """Xabarni qabul qiluvchiga ko'rinadigan tugmalar."""
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [
                InlineKeyboardButton(text="↩️ Javob berish", callback_data=f"reply:{sender_id}"),
                InlineKeyboardButton(text="🎁 Sovg'a", callback_data=f"gift_open:{sender_id}"),
            ],
            [
                InlineKeyboardButton(text="🕵 Kim yubordi?", callback_data=f"whois:{msg_row_id}"),
                InlineKeyboardButton(text="🚫 Bloklash", callback_data=f"block:{sender_id}"),
            ],
        ]
    )


def sent_confirmation_kb(msg_row_id: int, target_id: int) -> InlineKeyboardMarkup:
    """Xabarni yuborgan odamga ko'rinadigan tugmalar."""
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [InlineKeyboardButton(text="🗑 O'chirish (Premium)", callback_data=f"del:{msg_row_id}")],
            [InlineKeyboardButton(text="🎁 Sovg'a yuborish", callback_data=f"gift_open:{target_id}")],
        ]
    )


def gift_list_kb(gifts: list, target_id: int) -> InlineKeyboardMarkup:
    rows = []
    for g in gifts:
        rows.append([
            InlineKeyboardButton(
                text=f"{g.sticker.emoji if g.sticker and g.sticker.emoji else '🎁'} {g.star_count} ⭐",
                callback_data=f"gift_send:{g.id}:{target_id}",
            )
        ])
    rows.append([InlineKeyboardButton(text="⬅️ Bekor qilish", callback_data="gift_cancel")])
    return InlineKeyboardMarkup(inline_keyboard=rows)


def admin_menu_kb(maintenance_on: bool) -> InlineKeyboardMarkup:
    toggle_text = "✅ Ta'mirlashni OʻCHIRISH" if maintenance_on else "🛠 Ta'mirlashni YOQISH"
    return InlineKeyboardMarkup(
        inline_keyboard=[
            [InlineKeyboardButton(text="📨 Foydalanuvchiga xabar", callback_data="adm:dm")],
            [InlineKeyboardButton(text="📢 Umumiy xabar (barchaga)", callback_data="adm:broadcast")],
            [InlineKeyboardButton(text="📡 Kanalga yuborish", callback_data="adm:channel")],
            [InlineKeyboardButton(text=toggle_text, callback_data="adm:maintenance")],
            [InlineKeyboardButton(text="📊 Statistika", callback_data="adm:stats")],
            [
                InlineKeyboardButton(text="⭐ Premium berish", callback_data="adm:grant"),
                InlineKeyboardButton(text="🚫 Premium olish", callback_data="adm:revoke"),
            ],
        ]
    )


def grant_plan_kb(target_user_id: int) -> InlineKeyboardMarkup:
    rows = []
    for key, plan in config.PREMIUM_PLANS.items():
        rows.append([
            InlineKeyboardButton(
                text=plan["title"],
                callback_data=f"admgrant:{key}:{target_user_id}",
            )
        ])
    return InlineKeyboardMarkup(inline_keyboard=rows)


def back_to_admin_kb() -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup(
        inline_keyboard=[[InlineKeyboardButton(text="⬅️ Admin panel", callback_data="adm:menu")]]
    )
