import { SeparatorBuilder } from 'discord.js';
import type { AttachmentUrlString, Button, MediaItem, TextInput, TextComponent, TextStyleOptions, Thumbnail } from '../types';
/** Text builder with markdown helpers attached. */
export type TextBuilder = {
    (content: TextInput): TextComponent;
    (content: TextInput, options?: TextStyleOptions): TextComponent;
    /**
     * Formats a bullet list as markdown text.
     *
     * @param items List items.
     * @returns Markdown text component.
     */
    list(items: TextInput): TextComponent;
    /**
     * Formats a numbered list as markdown text.
     *
     * @param items List items.
     * @returns Markdown text component.
     */
    ordered(items: TextInput): TextComponent;
    /**
     * Formats inline code as markdown text.
     *
     * @param content Inline code content.
     * @returns Markdown text component.
     */
    code(content: TextInput): TextComponent;
    /**
     * Formats quoted text as markdown text.
     *
     * @param input Text or lines to quote.
     * @returns Markdown text component.
     */
    quote(input: TextInput): TextComponent;
    /**
     * Formats spoiler text as markdown text.
     *
     * @param input Text or lines to hide.
     * @returns Markdown text component.
     */
    spoiler(input: TextInput): TextComponent;
};
/** Public text factory used by `ui.text(...)`. */
export declare const text: TextBuilder;
/**
 * Creates a public separator builder.
 *
 * @param options Separator configuration.
 * @returns Discord separator builder.
 */
export declare function separator(options?: Omit<import('../types').SeparatorComponent, 'type'>): SeparatorBuilder;
/**
 * @deprecated Use ui.separator(...) instead.
 *
 * Creates a public separator builder.
 *
 * @param options Separator configuration.
 * @returns Discord separator builder.
 */
export declare function divider(options?: Omit<import('../types').SeparatorComponent, 'type'>): SeparatorBuilder;
/**
 * Creates a public button descriptor.
 *
 * @param options Button configuration.
 * @returns Public button descriptor.
 */
export declare function button(options: Button): Button;
/**
 * Creates a public thumbnail descriptor.
 *
 * @param options Thumbnail configuration.
 * @returns Public thumbnail descriptor.
 */
export declare function thumbnail(options: Thumbnail): Thumbnail;
/**
 * Creates a public media gallery descriptor.
 *
 * @param items Gallery items.
 * @returns Public gallery descriptor.
 */
export declare function gallery(...items: MediaItem[]): {
    type: "gallery";
    items: MediaItem[];
};
/**
 * Creates a public media item descriptor.
 *
 * @param options Media item configuration.
 * @returns Public media item descriptor.
 */
export declare function image(options: MediaItem): MediaItem;
/**
 * Creates a public row descriptor.
 *
 * @param components Row components.
 * @returns Public row descriptor.
 */
export declare function row(...components: import('../types').RowComponent[]): {
    type: "row";
    components: import("../types").RowComponent[];
};
/**
 * Creates a public file descriptor.
 *
 * @param url Attachment URL.
 * @param fileOrSpoiler Attachment payload or spoiler flag.
 * @param spoiler Spoiler flag when an attachment payload is provided.
 * @returns Public file descriptor.
 */
declare function buildFile(url: AttachmentUrlString, fileOrSpoiler?: unknown | boolean, spoiler?: boolean): {
    type: "file";
    url: `attachment://${string}`;
    spoiler: boolean;
    attachment: unknown;
};
/**
 * Creates a public file descriptor from an attachment-like object.
 *
 * @param attachment Attachment-like object.
 * @param spoiler Whether the file should be marked as spoiler.
 * @returns Public file descriptor.
 */
declare function fromAttachment(attachment: unknown, spoiler?: boolean): {
    type: "file";
    url: `attachment://${string}`;
    spoiler: boolean;
    attachment: unknown;
};
/** Public file factory used by `ui.file(...)`. */
export declare const file: typeof buildFile & {
    fromAttachment: typeof fromAttachment;
};
export {};
//# sourceMappingURL=primitives.d.ts.map