import { ContainerBuilder, SectionBuilder, TextDisplayBuilder, SeparatorBuilder, MediaGalleryBuilder, ActionRowBuilder, ButtonBuilder, SeparatorSpacingSize, type MessageActionRowComponentBuilder } from 'discord.js'; export { ContainerBuilder, SectionBuilder, TextDisplayBuilder, SeparatorBuilder, MediaGalleryBuilder, MediaGalleryItemBuilder, ThumbnailBuilder, SeparatorSpacingSize, } from 'discord.js'; /** * Create a new empty Container. * Optionally set an accent colour (hex integer e.g. `0x5865F2`) and spoiler flag. * * Containers are the top-level component when using Components V2 messages. * Pass to `message.reply({ components: [container], flags: MessageFlags.IsComponentsV2 })`. */ export declare function container(accentColor?: number, spoiler?: boolean): ContainerBuilder; /** * Create a TextDisplay component — plain or markdown text inside a container. * * @example * text('Hello **world**!') */ export declare function text(content: string): TextDisplayBuilder; /** * Create a Section — a text block with an optional thumbnail on the right. * * @param content Markdown text for the section body * @param imageUrl Optional URL for the right-hand thumbnail * * @example * section('👋 Welcome to the server!', 'https://example.com/logo.png') */ export declare function section(content: string, imageUrl?: string): SectionBuilder; /** * Create a Separator — a horizontal divider between components. * * @param divider Show a visible line. Default: true * @param spacing `SeparatorSpacingSize.Small` (default) or `SeparatorSpacingSize.Large` */ export declare function separator(divider?: boolean, spacing?: SeparatorSpacingSize): SeparatorBuilder; /** * Create a MediaGallery from an array of image URLs. * Each entry can be a URL string or `{ url, description }`. * * @example * mediaGallery(['https://i.imgur.com/a.png', 'https://i.imgur.com/b.png']) * mediaGallery([{ url: 'https://i.imgur.com/a.png', description: 'Cat photo' }]) */ export declare function mediaGallery(items: (string | { url: string; description?: string; spoiler?: boolean; })[]): MediaGalleryBuilder; /** * Create a button ActionRow — for use inside a container. * * @example * buttonRow([ * new ButtonBuilder().setCustomId('ok').setLabel('Confirm').setStyle(ButtonStyle.Success), * new ButtonBuilder().setCustomId('no').setLabel('Cancel').setStyle(ButtonStyle.Danger), * ]) */ export declare function buttonRow(buttons: ButtonBuilder[]): ActionRowBuilder; export interface QuickContainerOptions { /** Accent colour (hex integer). Maps to green/red/blurple presets or any custom value */ color?: number; /** Header text (rendered as bold markdown) */ header?: string; /** Main body text */ body?: string; /** Right-hand thumbnail URL for the body section */ thumbnail?: string; /** Additional text blocks beneath the body */ extra?: string[]; /** Image gallery URLs */ images?: string[]; /** Add a separator before the images. Default: true if images present */ imageSeparator?: boolean; /** Action row of buttons to append at the bottom */ buttons?: ButtonBuilder[]; spoiler?: boolean; } /** * Build a fully composed Container from a simple options object. * * @example * const c = Containers.compose({ * color: 0x57F287, * header: '✅ Deployment complete', * body: 'Version **1.4.2** is now live on production.', * thumbnail: 'https://example.com/logo.png', * images: ['https://example.com/screenshot.png'], * buttons: [new ButtonBuilder().setCustomId('rollback').setLabel('Rollback').setStyle(ButtonStyle.Danger)], * }); */ export declare function compose(opts: QuickContainerOptions): ContainerBuilder; export declare const Containers: { container: typeof container; text: typeof text; section: typeof section; separator: typeof separator; mediaGallery: typeof mediaGallery; buttonRow: typeof buttonRow; compose: typeof compose; }; //# sourceMappingURL=containers.d.ts.map