import { type ColorResolvable, type ObjectToLower, type RestOrArray } from '../common';
import type { APIEmbed, APIEmbedAuthor, APIEmbedField, APIEmbedFooter } from '../types';
/**
 * Represents a message embed.
 * @example
 * const embed = new Embed();
 * embed.setTitle('Seyfert');
 * embed.setDescription('Better than discord.js');
 * embed.setColor('Green');
 * const embedJSON = embed.json();
 */
export declare class Embed {
    data: Partial<APIEmbed>;
    /**
     * Creates a new instance of Embed.
     * @param data - The initial data for the embed.
     * @example
     * const embed = new Embed({ title: 'Hello', description: 'This is an example embed' });
     */
    constructor(data?: Partial<APIEmbed>);
    /**
     * Sets the author of the embed.
     * @param author - The author information.
     * @returns The updated Embed instance.
     * @example
     * embed.setAuthor({ name: 'John Doe', iconUrl: 'https://example.com/avatar.png' });
     */
    setAuthor(author?: ObjectToLower<APIEmbedAuthor>): this;
    /**
     * Sets the color of the embed.
     * @param color - The color of the embed.
     * @returns The updated Embed instance.
     * @example
     * embed.setColor('#FF0000');
     * embed.setColor('Blurple');
     */
    setColor(color?: ColorResolvable): this;
    /**
     * Sets the description of the embed.
     * @param desc - The description of the embed.
     * @returns The updated Embed instance.
     * @example
     * embed.setDescription('This is the description of the embed');
     */
    setDescription(desc?: string): this;
    /**
     * Adds one or more fields to the embed.
     * @param fields - The fields to add to the embed.
     * @returns The updated Embed instance.
     * @example
     * embed.addFields({ name: 'Field 1', value: 'Value 1' }, { name: 'Field 2', value: 'Value 2' });
     */
    addFields(...fields: RestOrArray<APIEmbedField>): this;
    /**
     * Sets the fields of the embed.
     * @param fields - The fields of the embed.
     * @returns The updated Embed instance.
     * @example
     * embed.setFields([{ name: 'Field 1', value: 'Value 1' }, { name: 'Field 2', value: 'Value 2' }]);
     */
    setFields(fields?: APIEmbedField[]): this;
    /**
     * Sets the footer of the embed.
     * @param footer - The footer information.
     * @returns The updated Embed instance.
     * @example
     * embed.setFooter({ text: 'This is the footer', iconUrl: 'https://example.com/footer.png' });
     */
    setFooter(footer?: ObjectToLower<Omit<APIEmbedFooter, 'proxy_icon_url'>>): this;
    /**
     * Sets the image of the embed.
     * @param url - The URL of the image.
     * @returns The updated Embed instance.
     * @example
     * embed.setImage('https://example.com/image.png');
     */
    setImage(url?: string): this;
    /**
     * Sets the timestamp of the embed.
     * @param time - The timestamp value.
     * @returns The updated Embed instance.
     * @example
     * embed.setTimestamp();
     * embed.setTimestamp(1628761200000);
     * embed.setTimestamp(new Date());
     */
    setTimestamp(time?: string | number | Date): this;
    /**
     * Sets the title of the embed.
     * @param title - The title of the embed.
     * @returns The updated Embed instance.
     * @example
     * embed.setTitle('This is the title');
     */
    setTitle(title?: string): this;
    /**
     * Sets the URL of the embed.
     * @param url - The URL of the embed.
     * @returns The updated Embed instance.
     * @example
     * embed.setURL('https://seyfert.com');
     */
    setURL(url?: string): this;
    /**
     * Sets the thumbnail of the embed.
     * @param url - The URL of the thumbnail.
     * @returns The updated Embed instance.
     * @example
     * embed.setThumbnail('https://example.com/thumbnail.png');
     */
    setThumbnail(url?: string): this;
    /**
     * Converts the Embed instance to a JSON object.
     * @returns The JSON representation of the MessageEmbed instance.
     */
    toJSON(): APIEmbed;
}
