/** * Interface for mention content */ interface MentionContent { id: string; label: string; mentionSuggestionChar: string; } /** * Interface for emoji content */ interface EmojiContent { url: string; key: string; text: string; } /** * Enum defining different types of message content */ enum MessageContentType { TEXT = 'text', IMAGE = 'image', VIDEO = 'video', FILE = 'file', MENTION = 'mention', EMOJI = 'emoji', } /** * Interface representing a single input content item with its type and content */ type InputContent = | { type: MessageContentType.TEXT; content: string } | { type: MessageContentType.IMAGE; content: File | string } | { type: MessageContentType.VIDEO; content: File } | { type: MessageContentType.FILE; content: { file: File; src?: string; alt?: string; title?: string } } | { type: MessageContentType.MENTION; content: MentionContent } | { type: MessageContentType.EMOJI; content: EmojiContent }; export { MessageContentType, }; export type { InputContent, MentionContent, EmojiContent, };