import type { ValidAnswerId } from '../api/Routes/channels'; import type { ListenerOptions } from '../builders'; import { Embed } from '../builders/Embed'; import type { ReturnCache } from '../cache'; import { type GuildMemberStructure, type GuildStructure, type MessageStructure, type PollStructure, type UserStructure, type WebhookMessageStructure, type WebhookStructure } from '../client/transformers'; import type { UsingClient } from '../commands'; import type { EmojiResolvable } from '../common/types/resolvables'; import type { ObjectToLower } from '../common/types/util'; import type { MessageCreateBodyRequest, MessageUpdateBodyRequest } from '../common/types/write'; import type { TopLevelComponents } from '../components'; import type { APIChannelMention, APIEmbed, APIMessage, GatewayMessageCreateDispatchData } from '../types'; import type { AllChannels } from './channels'; import { DiscordBase } from './extra/DiscordBase'; import type { MessageWebhookMethodEditParams, MessageWebhookMethodWriteParams, MessageWebhookMethodWriteWaitParams } from './Webhook'; export type MessageData = APIMessage | GatewayMessageCreateDispatchData; export interface BaseMessage extends DiscordBase, ObjectToLower> { timestamp?: number; guildId?: string; author: UserStructure; member?: GuildMemberStructure; components: TopLevelComponents[]; poll?: PollStructure; mentions: { roles: string[]; channels: APIChannelMention[]; users: (GuildMemberStructure | UserStructure)[]; }; } export declare class BaseMessage extends DiscordBase { embeds: InMessageEmbed[]; constructor(client: UsingClient, data: MessageData); get user(): UserStructure; createComponentCollector(options?: ListenerOptions): import("../components/handler").CreateComponentCollectorResult; get url(): `https://discord.com/channels/${string}/${string}/${string}`; guild(mode?: 'rest' | 'flow'): Promise | undefined>; guild(mode: 'cache'): ReturnCache | undefined>; channel(mode?: 'rest' | 'flow'): Promise; channel(mode: 'cache'): ReturnCache; react(emoji: EmojiResolvable): Promise; private patch; } export interface Message extends BaseMessage, ObjectToLower> { } export declare class Message extends BaseMessage { constructor(client: UsingClient, data: MessageData); fetch(force?: boolean): Promise; reply(body: Omit, fail?: boolean): Promise; edit(body: MessageUpdateBodyRequest): Promise; write(body: MessageCreateBodyRequest): Promise; delete(reason?: string): Promise; crosspost(reason?: string): Promise; endPoll(): Promise; getAnswerVoters(answerId: ValidAnswerId, checkAnswer?: boolean): Promise; } export type EditMessageWebhook = Omit['body'] & Pick; export type WriteMessageWebhook = MessageWebhookMethodWriteParams['body'] & Pick; export type WriteMessageWebhookWait = MessageWebhookMethodWriteWaitParams['body'] & Pick; export declare class WebhookMessage extends BaseMessage { readonly webhookId: string; readonly webhookToken: string; constructor(client: UsingClient, data: MessageData, webhookId: string, webhookToken: string); fetchWebhook(): Promise; fetch(): Promise; edit(body: EditMessageWebhook): Promise; write(body: WriteMessageWebhookWait): Promise; write(body: WriteMessageWebhook): Promise; delete(reason?: string): Promise; } export declare class InMessageEmbed { data: APIEmbed; constructor(data: APIEmbed); get title(): string | undefined; get type(): import("..").EmbedType | undefined; get description(): string | undefined; get url(): string | undefined; get timestamp(): string | undefined; get color(): number | undefined; get footer(): { text: string; iconUrl?: string | undefined; proxyIconUrl?: string | undefined; } | undefined; get image(): { url: string; proxyUrl?: string | undefined; height?: number | undefined; width?: number | undefined; } | undefined; get thumbnail(): { url: string; proxyUrl?: string | undefined; height?: number | undefined; width?: number | undefined; } | undefined; get video(): { url?: string | undefined; proxyUrl?: string | undefined; height?: number | undefined; width?: number | undefined; } | undefined; get provider(): import("..").APIEmbedProvider | undefined; get author(): { name: string; url?: string | undefined; iconUrl?: string | undefined; proxyIconUrl?: string | undefined; } | undefined; get fields(): import("..").APIEmbedField[] | undefined; toBuilder(): Embed; toJSON(): { title?: string; type?: import("..").EmbedType; description?: string; url?: string; timestamp?: string; color?: number; footer?: import("..").APIEmbedFooter; image?: import("..").APIEmbedImage; thumbnail?: import("..").APIEmbedThumbnail; video?: import("..").APIEmbedVideo; provider?: import("..").APIEmbedProvider; author?: import("..").APIEmbedAuthor; fields?: import("..").APIEmbedField[]; }; }