import { Colors, type ColorResolvable, EmbedBuilder } from "discord.js";

/**
 * Creates a standardized error embed.
 * @param message The error message to display.
 * @param title Optional title for the embed. Defaults to "Error".
 * @returns An EmbedBuilder instance configured as an error.
 */
export function createErrorEmbed(message: string, title: string = "Error"): EmbedBuilder {
    return new EmbedBuilder()
        .setTitle(`❌ ${title}`)
        .setDescription(message)
        .setColor(Colors.Red)
        .setTimestamp();
}

/**
 * Creates a standardized warning embed.
 * @param message The warning message to display.
 * @param title Optional title for the embed. Defaults to "Warning".
 * @returns An EmbedBuilder instance configured as a warning.
 */
export function createWarningEmbed(message: string, title: string = "Warning"): EmbedBuilder {
    return new EmbedBuilder()
        .setTitle(`⚠️ ${title}`)
        .setDescription(message)
        .setColor(Colors.Yellow)
        .setTimestamp();
}

/**
 * Creates a standardized success embed.
 * @param message The success message to display.
 * @param title Optional title for the embed. Defaults to "Success".
 * @returns An EmbedBuilder instance configured as a success.
 */
export function createSuccessEmbed(message: string, title: string = "Success"): EmbedBuilder {
    return new EmbedBuilder()
        .setTitle(`✅ ${title}`)
        .setDescription(message)
        .setColor(Colors.Green)
        .setTimestamp();
}

/**
 * Creates a standardized info embed.
 * @param message The info message to display.
 * @param title Optional title for the embed. Defaults to "Info".
 * @returns An EmbedBuilder instance configured as info.
 */
export function createInfoEmbed(message: string, title: string = "Info"): EmbedBuilder {
    return new EmbedBuilder()
        .setTitle(`ℹ️ ${title}`)
        .setDescription(message)
        .setColor(Colors.Blue)
        .setTimestamp();
}

/**
 * Creates a standardized base embed with common configuration.
 * @param title Optional title for the embed.
 * @param description Optional description for the embed.
 * @param color Optional color for the embed.
 * @returns An EmbedBuilder instance with base configuration.
 */
export function createBaseEmbed(title?: string, description?: string, color?: ColorResolvable): EmbedBuilder {
    const embed = new EmbedBuilder()
        .setTimestamp();

    if (title) embed.setTitle(title);
    if (description) embed.setDescription(description);
    if (color) embed.setColor(color);

    return embed;
}
