import { ThreadState } from './ThreadProvider';
import { FileUploadInfoParams } from '../types';
import { GroupChannel, Member } from '@sendbird/chat/groupChannel';
import { CoreMessageType, SendableMessageType } from '../../../utils';
import { EmojiContainer, User } from '@sendbird/chat';
import { BaseMessage, ReactionEvent } from '@sendbird/chat/message';
declare const useThread: () => {
    state: ThreadState;
    actions: {
        initializeThreadFetcher: (callback?: (messages: BaseMessage[]) => void) => Promise<void>;
        fetchPrevThreads: (callback?: (messages: BaseMessage[]) => void) => Promise<void>;
        fetchNextThreads: (callback?: (messages: BaseMessage[]) => void) => Promise<void>;
        initializeThreadListStart: () => void;
        initializeThreadListSuccess: (parentMessage: BaseMessage, anchorMessage: SendableMessageType, threadedMessages: BaseMessage[]) => void;
        initializeThreadListFailure: () => void;
        getPrevMessagesStart: () => void;
        getPrevMessagesSuccess: (threadedMessages: CoreMessageType[]) => void;
        getPrevMessagesFailure: () => void;
        getNextMessagesStart: () => void;
        getNextMessagesSuccess: (threadedMessages: CoreMessageType[]) => void;
        getNextMessagesFailure: () => void;
        updateMessage: (props: {
            messageId: number;
            message: string;
            mentionedUsers?: User[];
            mentionedUserIds?: string[];
            mentionTemplate?: string;
        }) => void;
        deleteMessage: (message: SendableMessageType) => Promise<void>;
        onMessageUpdated: (channel: GroupChannel, message: SendableMessageType) => void;
        onMessageDeleted: (channel: GroupChannel, messageId: number) => void;
        onMessageDeletedByReqId: (reqId: string | number) => void;
        sendMessage: (props: import("./hooks/useSendUserMessageCallback").SendMessageParams) => void;
        sendFileMessage: import("./hooks/useSendFileMessage").SendFileMessageFunctionType;
        sendVoiceMessage: (file: File, duration: number, quoteMessage: SendableMessageType) => void;
        sendMultipleFilesMessage: import("../../Channel/context/hooks/useSendMultipleFilesMessage").SendMFMFunctionType;
        resendMessage: (failedMessage: SendableMessageType) => void;
        sendMessageStart: (message: SendableMessageType) => void;
        sendMessageSuccess: (message: SendableMessageType) => void;
        sendMessageFailure: (message: SendableMessageType) => void;
        resendMessageStart: (message: SendableMessageType) => void;
        toggleReaction: (message: BaseMessage, key: string, isReacted: boolean) => void;
        setCurrentUserId: (currentUserId: string) => void;
        getChannelStart: () => void;
        getChannelSuccess: (groupChannel: GroupChannel) => void;
        getChannelFailure: () => void;
        getParentMessageStart: () => void;
        getParentMessageSuccess: (parentMessage: SendableMessageType) => void;
        getParentMessageFailure: () => void;
        setEmojiContainer: (emojiContainer: EmojiContainer) => void;
        onMessageReceived: (channel: GroupChannel, message: SendableMessageType) => void;
        onReactionUpdated: (reactionEvent: ReactionEvent) => void;
        onUserMuted: (channel: GroupChannel, user: User) => void;
        onUserUnmuted: (channel: GroupChannel, user: User) => void;
        onUserBanned: (channel: GroupChannel, user: User) => void;
        onUserUnbanned: () => void;
        onUserLeft: (channel: GroupChannel, user: User) => void;
        onChannelFrozen: () => void;
        onChannelUnfrozen: () => void;
        onOperatorUpdated: (channel: GroupChannel) => void;
        onTypingStatusUpdated: (channel: GroupChannel, typingMembers: Member[]) => void;
        onFileInfoUpdated: ({ channelUrl, requestId, index, uploadableFileInfo, error, }: FileUploadInfoParams) => void;
    };
};
export default useThread;
