import { DataSource } from "./DataSource";
import { JSX } from "react";
import { additionalParams } from "./ConversationUtils";
import { CometChatMentionsFormatter } from "../formatters/CometChatFormatters/CometChatMentionsFormatter/CometChatMentionsFormatter";
import { CometChatUrlsFormatter } from "../formatters/CometChatFormatters/CometChatUrlsFormatter/CometChatUrlsFormatter";
import { CometChatTextFormatter } from "../formatters/CometChatFormatters/CometChatTextFormatter";
import { CometChatActionsIcon, CometChatActionsView, CometChatMessageComposerAction, CometChatMessageTemplate } from "../modals";
import { MentionsTargetElement, MessageBubbleAlignment } from "../Enums/Enums";
import { CalendarObject } from "./CalendarObject";
export type ComposerId = {
    parentMessageId: number | null;
    user: string | null;
    group: string | null;
};
/**
 * Utility class that extends DataSource and provides getters for message options.
 * It is used in message and dataSource utils.
 */
export interface additionalParamsOptions {
    hideReplyInThreadOption?: boolean;
    hideTranslateMessageOption?: boolean;
    hideReactionOption?: boolean;
    hideEditMessageOption?: boolean;
    hideDeleteMessageOption?: boolean;
    hideMessagePrivatelyOption?: boolean;
    hideCopyMessageOption?: boolean;
    hideMessageInfoOption?: boolean;
}
export declare class MessagesDataSource implements DataSource {
    getEditOption(): CometChatActionsIcon;
    getDeleteOption(): CometChatActionsIcon;
    getReactionOption(): CometChatActionsView;
    getReplyInThreadOption(): CometChatActionsIcon;
    getSendMessagePrivatelyOption(): CometChatActionsIcon;
    getCopyOption(): CometChatActionsIcon;
    getMessageInfoOption(): CometChatActionsIcon;
    isSentByMe(loggedInUser: CometChat.User, message: CometChat.BaseMessage): boolean;
    getTextMessageOptions(loggedInUser: CometChat.User, messageObject: CometChat.BaseMessage, group?: CometChat.Group, additionalParams?: additionalParamsOptions): Array<CometChatActionsIcon | CometChatActionsView>;
    getIsSentByMe(message: CometChat.BaseMessage): boolean;
    getImageMessageOptions(loggedInUser: CometChat.User, messageObject: CometChat.BaseMessage, group?: CometChat.Group, additionalParams?: Object | undefined): Array<CometChatActionsIcon | CometChatActionsView>;
    getVideoMessageOptions(loggedInUser: CometChat.User, messageObject: CometChat.BaseMessage, group?: CometChat.Group, additionalParams?: Object | undefined): Array<CometChatActionsIcon | CometChatActionsView>;
    getAudioMessageOptions(loggedInUser: CometChat.User, messageObject: CometChat.BaseMessage, group?: CometChat.Group, additionalParams?: Object | undefined): Array<CometChatActionsIcon | CometChatActionsView>;
    getFileMessageOptions(loggedInUser: CometChat.User, messageObject: CometChat.BaseMessage, group?: CometChat.Group, additionalParams?: Object | undefined): Array<CometChatActionsIcon | CometChatActionsView>;
    getReceiptClass(status?: number): "error" | "wait" | "read" | "delivered" | "sent" | undefined;
    /**
  * Function to get receipt for message bubble
  * @param {CometChat.BaseMessage} item - The message bubble for which the receipt needs to be fetched
  * @returns {JSX.Element | null} Returns JSX.Element for receipt of a message bubble or null
  */
    getBubbleStatusInfoReceipt: (item: CometChat.BaseMessage, hideReceipts?: boolean) => JSX.Element | null;
    /**
* Function for displaying the timestamp  next to messages.
* @returns CalendarObject
*/
    getMessageSentAtDateFormat(messageSentAtDateTimeFormat?: CalendarObject): {
        today: string;
        yesterday: string;
        lastWeek?: string;
        otherDays: string;
        relativeTime?: {
            minute?: string;
            minutes?: string;
            hour?: string;
            hours?: string;
        };
    };
    /**
  * Function to get status and date for message bubble
  * @param {CometChat.BaseMessage} item - The message bubble for which the information needs to be fetched
  * @returns {JSX.Element | null} Returns JSX.Element for status and date of a message bubble or null
  */
    getBubbleStatusInfoDate: (item: CometChat.BaseMessage, messageSentAtDateTimeFormat?: CalendarObject) => JSX.Element | null;
    getStatusInfoView: (_messageObject: CometChat.BaseMessage, _alignment: MessageBubbleAlignment, hideReceipts?: boolean, messageSentAtDateTimeFormat?: CalendarObject) => import("react/jsx-runtime").JSX.Element | null;
    getBottomView(_messageObject: CometChat.BaseMessage, _alignment: MessageBubbleAlignment): null;
    getTextMessageTemplate(additionalConfigurations?: additionalParams): CometChatMessageTemplate;
    getAudioMessageTemplate(): CometChatMessageTemplate;
    getVideoMessageTemplate(): CometChatMessageTemplate;
    getImageMessageTemplate(): CometChatMessageTemplate;
    getGroupActionTemplate(additionalConfigurations?: {
        hideGroupActionMessages?: boolean;
    }): CometChatMessageTemplate;
    getFileMessageTemplate(): CometChatMessageTemplate;
    getAllMessageTemplates(additionalConfigurations?: additionalParams): Array<CometChatMessageTemplate>;
    getMessageTemplate(messageType: string, messageCategory: string, additionalConfigurations?: additionalParams): CometChatMessageTemplate | null;
    getMessageOptions(loggedInUser: CometChat.User, messageObject: CometChat.BaseMessage, group?: CometChat.Group, additionalParams?: additionalParamsOptions): Array<CometChatActionsIcon | CometChatActionsView>;
    getCommonOptions(loggedInUser: CometChat.User, messageObject: CometChat.BaseMessage, group?: CometChat.Group, additionalParams?: additionalParamsOptions): Array<CometChatActionsIcon | CometChatActionsView>;
    getAllMessageTypes(): Array<string>;
    addList(): string;
    getAllMessageCategories(additionalConfigurations?: {
        hideGroupActionMessages?: boolean;
    }): Array<string>;
    getStickerButton(id: ComposerId, user?: CometChat.User, group?: CometChat.Group): JSX.Element | undefined;
    getId(): string;
    getTextMessageContentView(message: CometChat.TextMessage, _alignment: MessageBubbleAlignment, additionalConfigurations?: additionalParams): JSX.Element | Element;
    getAudioMessageContentView(message: CometChat.MediaMessage, _alignment: MessageBubbleAlignment): Element | JSX.Element;
    getFileMessageContentView(message: CometChat.MediaMessage, _alignment: MessageBubbleAlignment): Element | JSX.Element;
    getImageMessageContentView(message: CometChat.MediaMessage, _alignment: MessageBubbleAlignment): Element | JSX.Element;
    getVideoMessageContentView(message: CometChat.MediaMessage, _alignment: MessageBubbleAlignment): Element | JSX.Element;
    getActionMessage(message: any): string;
    getDeleteMessageBubble(message: CometChat.BaseMessage, text?: string, alignment?: MessageBubbleAlignment): import("react/jsx-runtime").JSX.Element;
    getGroupActionBubble(message: CometChat.BaseMessage): import("react/jsx-runtime").JSX.Element;
    getTextMessageBubble(messageText: string, message: CometChat.TextMessage, alignment: MessageBubbleAlignment, additionalConfigurations?: additionalParams): Element | JSX.Element;
    getAudioMessageBubble(audioUrl: string, message: CometChat.MediaMessage, title?: string, alignment?: MessageBubbleAlignment): Element | JSX.Element;
    /**
     * Function to check mimeType and return the iconUrl of that type
     * @param mimeType
     * @returns
     */
    getFileType: (mimeType: string) => string;
    /**
     * Function to convert bites to human readable fromat eg. kb,mb,gb
     * @param sizeInBytes
     * @returns
     */
    getFileSize: (sizeInBytes: number) => string;
    getFileMessageBubble(fileUrl: string, message: CometChat.MediaMessage, title?: string, alignment?: MessageBubbleAlignment): Element | JSX.Element;
    getImageMessageBubble(imageUrl: string, placeholderImage: string, message: CometChat.MediaMessage, onClick?: Function): import("react/jsx-runtime").JSX.Element;
    getVideoMessageBubble(videoUrl: string, message: CometChat.MediaMessage, thumbnailUrl?: string, onClick?: Function): Element | JSX.Element;
    imageAttachmentOption(): CometChatMessageComposerAction;
    videoAttachmentOption(): CometChatMessageComposerAction;
    audioAttachmentOption(): CometChatMessageComposerAction;
    fileAttachmentOption(): CometChatMessageComposerAction;
    getAttachmentOptions(id: ComposerId, additionalConfigurations?: any): Array<CometChatMessageComposerAction>;
    getLastConversationMessage(conversation: CometChat.Conversation, loggedInUser: CometChat.User, additionalConfigurations: additionalParams): string;
    getAuxiliaryHeaderMenu(user?: CometChat.User, group?: CometChat.Group, additionalConfigurations?: any): Element[] | JSX.Element[];
    /**
     * Adds styled @ for every mention in the text by matching uid
     *
     * @param {CometChat.TextMessage} message
     * @param {string} subtitle
     * @returns {void}
     */
    getMentionsFormattedText(message: CometChat.TextMessage, subtitle: string, mentionsFormatterParams: {
        mentionsTargetElement: MentionsTargetElement;
    }): string;
    getAllTextFormatters(formatterParams: additionalParams): CometChatTextFormatter[];
    getMentionsTextFormatter(params: additionalParams): CometChatMentionsFormatter;
    getUrlTextFormatter(params?: additionalParams): CometChatUrlsFormatter;
    getFormMessageBubble(message: CometChat.InteractiveMessage, alignment: MessageBubbleAlignment): Element | JSX.Element;
    getSchedulerMessageBubble(message: CometChat.InteractiveMessage, alignment: MessageBubbleAlignment): Element | JSX.Element;
    getCardMessageBubble(message: CometChat.InteractiveMessage, alignment: MessageBubbleAlignment): Element | JSX.Element;
    getFormMessageTemplate(): CometChatMessageTemplate;
    getSchedulerMessageTemplate(): CometChatMessageTemplate;
    getCardMessageTemplate(): CometChatMessageTemplate;
    getFormMessageContentView(message: CometChat.InteractiveMessage, _alignment: MessageBubbleAlignment): Element | JSX.Element;
    getSchedulerMessageContentView(message: CometChat.InteractiveMessage, _alignment: MessageBubbleAlignment): Element | JSX.Element;
    getCardMessageContentView(message: CometChat.InteractiveMessage, _alignment: MessageBubbleAlignment): Element | JSX.Element;
}
