import type { APIEmbed, APIEmbedAuthor, APIEmbedField, APIEmbedFooter, APIEmbedImage, APIEmbedProvider, APIEmbedThumbnail, APIEmbedVideo } from 'discord-api-types/v9';
export interface AuthorOptions {
    name: string;
    url?: string;
    iconURL?: string;
}
export interface FooterOptions {
    text: string;
    iconURL?: string;
}
/**
 * Represents an embed in a message (image/video preview, rich embed, etc.)
 */
export declare class Embed implements APIEmbed {
    /**
     * An array of fields of this embed.
     */
    fields: APIEmbedField[];
    /**
     * The embed title.
     */
    title?: string;
    /**
     * The embed description.
     */
    description?: string;
    /**
     * The embed url.
     */
    url?: string;
    /**
     * The embed color.
     */
    color?: number;
    /**
     * The timestamp of the embed in the ISO format.
     */
    timestamp?: string;
    /**
     * The embed thumbnail data.
     */
    thumbnail?: APIEmbedThumbnail;
    /**
     * The embed image data.
     */
    image?: APIEmbedImage;
    /**
     * Received video data.
     */
    video?: APIEmbedVideo;
    /**
     * The embed author data.
     */
    author?: APIEmbedAuthor;
    /**
     * Received data about the embed provider.
     */
    provider?: APIEmbedProvider;
    /**
     * The embed footer data.
     */
    footer?: APIEmbedFooter;
    constructor(data?: APIEmbed);
    /**
     * The accumulated length for the embed title, description, fields, footer text, and author name.
     */
    get length(): number;
    /**
     * Adds a field to the embed (max 25).
     * @param field The field to add.
     */
    addField(field: APIEmbedField): this;
    /**
     * Adds fields to the embed (max 25).
     * @param fields The fields to add.
     */
    addFields(...fields: APIEmbedField[]): this;
    /**
     * Removes, replaces, or inserts fields in the embed (max 25).
     * @param index The index to start at.
     * @param deleteCount The number of fields to remove.
     * @param fields The replacing field objects.
     */
    spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this;
    /**
     * Sets the author of this embed.
     * @param options The options for the author.
     */
    setAuthor(options: AuthorOptions | null): this;
    /**
     * Sets the color of this embed.
     * @param color The color of the embed.
     */
    setColor(color: number | null): this;
    /**
     * Sets the description of this embed.
     * @param description The description.
     */
    setDescription(description: string | null): this;
    /**
     * Sets the footer of this embed.
     * @param options The options for the footer.
     */
    setFooter(options: FooterOptions | null): this;
    /**
     * Sets the image of this embed.
     * @param url The URL of the image.
     */
    setImage(url: string | null): this;
    /**
     * Sets the thumbnail of this embed.
     * @param url The URL of the thumbnail.
     */
    setThumbnail(url: string | null): this;
    /**
     * Sets the timestamp of this embed.
     * @param timestamp The timestamp or date.
     */
    setTimestamp(timestamp?: number | Date | null): this;
    /**
     * Sets the title of this embed.
     * @param title The title.
     */
    setTitle(title: string | null): this;
    /**
     * Sets the URL of this embed.
     * @param url The URL.
     */
    setURL(url: string | null): this;
    /**
     * Transforms the embed to a plain object.
     */
    toJSON(): APIEmbed;
    /**
     * Normalizes field input and resolves strings.
     * @param fields Fields to normalize.
     */
    static normalizeFields(...fields: APIEmbedField[]): APIEmbedField[];
}
//# sourceMappingURL=Embed.d.ts.map