import type { Message, MessageMapping } from '../types'; type MessageTypeList = { [K in keyof MessageMapping]: { type: K; } & MessageMapping[K]; }; /** * Single message class. * * @template T - Message type */ export declare class MessageSingle extends String { /** * Message data. * * @readonly */ data: MessageTypeList[T]; /** * Create a single message * * @param type - Message type * @param data - Message data */ constructor(type: T, data: MessageMapping[T]); /** * Convert message to string. * * @param isStrict - Whether to strictly convert message, strict convert will ignore the elements else text * @returns Message string */ toString(isStrict?: boolean): string; /** * Check whether the message is text. * * @returns Whether the message is text */ isText(): boolean; } declare class MessageListOrigin extends Array> { /** * Create a message list. * * @param messages - Message list */ constructor(...messages: Message[]); /** * Convert message list to string. * * @param isStrict - Whether to strictly convert message, strict convert will ignore the elements else text * @returns Message string */ toString(isStrict?: boolean): string; /** * Check whether the message list is pure. * * @param keys - Message type list * * @returns Whether the message list is pure */ isPure(...keys: T[]): boolean; /** * Check whether the message list is text. * * @returns Whether the message list is text */ isText(): boolean; /** * Pick message list. * * @param keys - Message type list * @returns Message list */ pick(...keys: T[]): MessageList; /** * Omit message list. * * @param keys - Message type list * @returns Message list */ omit(...keys: T[]): MessageList; } /** * Message list class. * * @template T - Message type * @class */ export type MessageList = (typeof String)['prototype'] & MessageListOrigin; export declare const MessageList: new (...args: ConstructorParameters) => MessageList; /** * Create a message list. * * @param messages - Message list * @returns Message list */ export declare function Messages(...messages: Message[]): MessageList; /** * Messages namespace * * @namespace */ export declare namespace Messages { /** * Create a text message. * * @param text - Text string * @returns Text message */ function text(text: string): MessageSingle<"text">; /** * Create a mention message. * * @param userId - User id * @returns Mention message */ function mention(userId: string): MessageSingle<"mention">; /** * Create a mention all message. * * @returns Mention all message */ function mentionAll(): MessageSingle<"mentionAll">; /** * Create an image message. * * @param content - Image content * @returns Image message */ function image(content: string): MessageSingle<"image">; /** * Create a voice message. * * @param content - Voice content * @returns Voice message */ function voice(content: string): MessageSingle<"voice">; /** * Create an audio message. * * @param content - Audio content * @returns Audio message */ function audio(content: string): MessageSingle<"audio">; /** * Create a video message. * * @param content - Video content * @returns Video message */ function video(content: string): MessageSingle<"video">; /** * Create a file message. * * @param content - File content * @returns File message */ function file(content: string): MessageSingle<"file">; /** * Create a location message. * * @param latitude - Latitude * @param longitude - Longitude * @param title - Title * @param content - Content * @returns Location message */ function location(latitude: number, longitude: number, title: string, content: string): MessageSingle<"location">; /** * Create a reply message. * * @param messageId - Message id * @returns Reply message */ function reply(messageId: string): MessageSingle<"reply">; /** * Stringify message. * * @param type - Message type * @param data - Message data * @param isStrict - Whether to strictly convert message, strict convert will ignore the elements else text * @returns Message string */ function stringify(type: T, data: MessageMapping[T], isStrict?: boolean): string; } export default Messages;