import type { IInteractiveMessageProps } from 'mezon-sdk/dist/cjs/interfaces/client'; export type { IInteractiveMessageProps as EmbedData }; interface AnimatedImageOptions { id?: string; name?: string; value?: string; imageUrl: string; positionUrl: string; pool: string[][]; repeat?: number; duration?: number; isResult?: boolean; extra?: Record; } /** * Builder for creating embed components compatible with Mezon SDK. * Follows a fluent API pattern similar to Discord.js builders. * * @example * ```ts * const embed = new EmbedBuilder() * .setColor('#f0a8da') * .setTitle('Title') * .setDescription('Description') * .addField('Field Name', 'Field Value', true) * .setThumbnail('https://example.com/thumb.png') * .setImage('https://example.com/image.png') * .setFooter('Footer text') * .build(); * ``` */ export declare class EmbedBuilder { private color?; private title?; private url?; private author?; private description?; private thumbnail?; private fields; private image?; private timestamp?; private footer?; /** * Sets the color of the embed border. * * @param color - Hex color code (e.g., '#f0a8da') or color name * @returns This builder instance for method chaining */ setColor(color: string): this; addAnimatedImage(options: AnimatedImageOptions): this; /** * Sets the title of the embed. * * @param title - The embed title * @returns This builder instance for method chaining */ setTitle(title: string): this; /** * Sets the URL of the embed title. * * @param url - The URL to link the title to * @returns This builder instance for method chaining */ setURL(url: string): this; /** * Sets the author of the embed. * * @param name - The author name * @param options - Optional author icon URL and URL * @returns This builder instance for method chaining */ setAuthor(name: string, options?: { icon_url?: string; url?: string; }): this; /** * Sets the description of the embed. * * @param description - The embed description * @returns This builder instance for method chaining */ setDescription(description: string): this; setDescriptionMarkdown(description: string | string[], options?: { language?: string; before?: string; after?: string; wrap?: boolean; }): this; /** * Sets the thumbnail of the embed. * * @param url - The thumbnail image URL * @returns This builder instance for method chaining */ setThumbnail(url: string): this; /** * Adds a field to the embed. * * @param name - The field name * @param value - The field value * @param inline - Whether the field should be inline (default: false) * @returns This builder instance for method chaining */ addField(name: string, value: string, inline?: boolean): this; /** * Adds a text input field to the embed (form field). * * @param name - The field name * @param inputId - The unique identifier for the input * @param options - Input configuration (placeholder, defaultValue, isNumber) * @returns This builder instance for method chaining * * @example * ```ts * embed.addTextField('Title', 'title', { * placeholder: 'Input title here', * defaultValue: '', * }); * ``` */ addTextField(name: string, inputId: string, options?: { placeholder?: string; defaultValue?: string | number; isNumber?: boolean; }): this; /** * Adds a select/dropdown field to the embed (form field). * * @param name - The field name * @param inputId - The unique identifier for the input * @param options - Array of select options with label and value * @param selectedValue - Optional default selected value * @returns This builder instance for method chaining * * @example * ```ts * embed.addSelectField('Type', 'type', [ * { label: 'Single choice', value: 'SINGLE' }, * { label: 'Multiple choice', value: 'MULTIPLE' }, * ], 'SINGLE'); * ``` */ addSelectField(name: string, inputId: string, options: Array<{ label: string; value: string; }>, selectedValue?: string): this; /** * Sets the image of the embed. * * @param url - The image URL * @param options - Optional image width and height * @returns This builder instance for method chaining */ setImage(url: string, options?: { width?: string; height?: string; }): this; /** * Sets the timestamp of the embed. * * @param timestamp - ISO 8601 timestamp string * @returns This builder instance for method chaining */ setTimestamp(timestamp?: string): this; /** * Sets the footer of the embed. * * @param text - The footer text * @param icon_url - Optional footer icon URL * @returns This builder instance for method chaining */ setFooter(text: string, icon_url?: string): this; /** * Builds the embed according to Mezon SDK structure. * * @returns An IInteractiveMessageProps object ready to be added to message embeds */ build(): IInteractiveMessageProps; }