import { CometChatMessageTemplate } from "../../modals";
import { DatePatterns, MessageListAlignment } from "../../Enums/Enums";
import { CometChatTextFormatter } from "../../formatters/CometChatFormatters/CometChatTextFormatter";
import { JSX } from "react";
/**
 * Props for the MessageList component.
 */
interface MessageListProps {
    /**
     * Enables conversation starters for new chats.
     * @default false
     */
    showConversationStarters?: boolean;
    /**
     * Enables the generation of Smart Replies for incoming messages.
     * @default false
     */
    showSmartReplies?: boolean;
    /**
     * Hides the visibility of the date separator in the message list.
     * @default false
     */
    hideDateSeparator?: boolean;
    /**
     * Hides the sticky date header in the message list.
     * @default false
     */
    hideStickyDate?: boolean;
    /**
     * Hides the visibility of receipts in the message list.
     * @default false
     */
    hideReceipts?: boolean;
    /**
     * Hides the default & custom error view passed in `errorView` prop.
     * @default false
     */
    hideError?: boolean;
    /**
     * Hides the option to reply to messages in a thread.
     * @default false
     */
    hideReplyInThreadOption?: boolean;
    /**
     * Hides the option to translate messages.
     * @default false
     */
    hideTranslateMessageOption?: boolean;
    /**
     * Hides the option to edit messages.
     * @default false
     */
    hideEditMessageOption?: boolean;
    /**
     * Hides the option to delete messages.
     * @default false
     */
    hideDeleteMessageOption?: boolean;
    /**
     * Hides the option to react to messages.
     * @default false
     */
    hideReactionOption?: boolean;
    /**
     * Hides the option to message a user privately.
     * @default false
     */
    hideMessagePrivatelyOption?: boolean;
    /**
     * Hides the option to copy messages.
     * @default false
     */
    hideCopyMessageOption?: boolean;
    /**
     * Hides the option to view message information.
     * @default false
     */
    hideMessageInfoOption?: boolean;
    /**
     * Hides avatars for messages.
     * @default false
     */
    hideAvatar?: boolean;
    /**
     * Hides group action messages.
     * @default false
     */
    hideGroupActionMessages?: boolean;
    /**
     * Unique identifier of the parent message for displaying threaded conversations.
     */
    parentMessageId?: number;
    /**
     * A `CometChat.User` object representing the participant of the chat whose details are displayed.
     */
    user?: CometChat.User;
    /**
     * A `CometChat.Group` object representing the group whose chat messages are displayed.
     */
    group?: CometChat.Group;
    /**
     * Instance of the `CometChat.ReactionsRequestBuilder` for managing message reactions.
     */
    reactionsRequestBuilder?: CometChat.ReactionsRequestBuilder;
    /**
     * Instance of the `CometChat.MessagesRequestBuilder` for building the request to fetch messages.
     */
    messagesRequestBuilder?: CometChat.MessagesRequestBuilder;
    /**
     * Array of message templates to define how various types of messages should be displayed.
     */
    templates?: CometChatMessageTemplate[];
    /**
     * Array of text formatters for custom styling or formatting of message text bubbles.
     */
    textFormatters?: CometChatTextFormatter[];
    /**
     * Specifies the alignment of messages in the list (e.g., left, right).
     * @default MessageListAlignment.standard
     */
    messageAlignment?: MessageListAlignment;
    /**
     * User-defined time format for displaying message timestamps.
     */
    timePattern?: DatePatterns;
    /**
     * User-defined date format for displaying message timestamps.
     */
    datePattern?: DatePatterns;
    /**
     * Automatically scrolls the message list to the bottom when a new message arrives.
     * @default false
     */
    scrollToBottomOnNewMessages?: boolean;
    /**
     * Specifies how many message options are visible in the main menu by default.
     * @default 2
     */
    quickOptionsCount?: number;
    /**
     * Disables the sound effect when new messages arrive.
     * @default true
     */
    disableSoundForMessages?: boolean;
    /**
     * Specifies a custom sound file to play when new messages arrive.
     */
    customSoundForMessages?: string;
    /**
      * Specifies the keywords in incoming messages that will trigger Smart Replies.
      * If set to an empty array [], Smart Replies will be generated for all messages.
      * @default ['what', 'when', 'why', 'who', 'where', 'how', '?']
      */
    smartRepliesKeywords?: string[];
    /**
     * Specifies the delay in milliseconds before Smart Replies are displayed.
     * Setting it to 0 fetches Smart Replies instantly without delay.
     * @default 10000
     */
    smartRepliesDelayDuration?: number;
    /**
     * Callback function triggered when an error occurs during message fetching.
     *
     * @param error - An instance of `CometChat.CometChatException` representing the error.
     * @returns void
     */
    onError?: ((error: CometChat.CometChatException) => void) | null;
    /**
     * Callback function triggered when a thread reply is clicked.
     *
     * @param parentMessageId - The ID of the parent message to which replies belong.
     */
    onThreadRepliesClick?: (message: CometChat.BaseMessage) => void;
    /**
     * Callback function that triggers when a reaction is clicked.
     *
     * @param reaction - The reaction object.
     * @param message - The message associated with the reaction.
     */
    onReactionClick?: (reaction: CometChat.ReactionCount, message: CometChat.BaseMessage) => void;
    /**
     * Callback function that triggers when an item in the reaction list is clicked.
     *
     * @param reaction - The reaction object.
     * @param message - The message associated with the reaction.
     */
    onReactionListItemClick?: (reaction: CometChat.Reaction, message: CometChat.BaseMessage) => void;
    /**
     * Custom empty state view to display when there are no messages.
     */
    emptyView?: JSX.Element;
    /**
     * A custom view displayed when there are no messages.
     */
    errorView?: JSX.Element;
    /**
     * A custom view displayed while messages are being fetched.
     */
    loadingView?: JSX.Element;
    /**
     * A custom header view component for the message list.
     */
    headerView?: JSX.Element;
    /**
     * A custom footer view component for the message list.
     */
    footerView?: JSX.Element;
    /**
      * Controls the visibility of the scrollbar in the list.
      * @defaultValue `false`
    */
    showScrollbar?: boolean;
}
declare const CometChatMessageList: (props: MessageListProps) => import("react/jsx-runtime").JSX.Element;
export { CometChatMessageList };
