import { EmbedBuilder } from "discord.js";
import type { ItemUsageData } from "@/lib/types";
import { EffectType } from "@/lib/constants";

/**
 * Inventory entry with item details
 */
interface InventoryEntry {
    quantity: bigint | null;
    item: {
        id: number;
        name: string;
        [key: string]: any;
    };
}

/**
 * Creates an embed displaying a user's inventory
 */
export function getInventoryEmbed(items: InventoryEntry[], username: string): EmbedBuilder {
    const description = items.map(entry => {
        return `**${entry.item.name}** x${entry.quantity}`;
    }).join("\n");

    return new EmbedBuilder()
        .setTitle(`📦 ${username}'s Inventory`)
        .setDescription(description)
        .setColor(0x3498db); // Blue
}

/**
 * Creates an embed showing the results of using an item
 */
export function getItemUseResultEmbed(results: string[], item?: { name: string, iconUrl: string | null, usageData: any }): EmbedBuilder {
    const description = results.map(r => `• ${r}`).join("\n");

    // Check if it was a lootbox
    const isLootbox = item?.usageData?.effects?.some((e: any) => e.type === EffectType.LOOTBOX);

    const embed = new EmbedBuilder()
        .setDescription(description)
        .setColor(isLootbox ? 0xFFD700 : 0x2ecc71); // Gold for lootbox, Green otherwise

    if (isLootbox && item) {
        embed.setTitle(`🎁 ${item.name} Opened!`);
        if (item.iconUrl) {
            embed.setThumbnail(item.iconUrl);
        }
    } else {
        embed.setTitle(item ? `✅ Used ${item.name}` : "✅ Item Used!");
    }

    return embed;
}
