import React from 'react';
import type { GroupChannel } from '@sendbird/chat/groupChannel';
import { ThreadReplySelectType } from './const';
import type { GroupChannelProviderProps, MessageListQueryParamsType, GroupChannelState } from './types';
export declare const GroupChannelContext: React.Context<import("../../../utils/storeManager").Store<GroupChannelState>>;
export declare const InternalGroupChannelProvider: (props: GroupChannelProviderProps) => React.JSX.Element;
declare const GroupChannelManager: React.FC<React.PropsWithChildren<GroupChannelProviderProps>>;
declare const GroupChannelProvider: React.FC<GroupChannelProviderProps>;
declare const useGroupChannelContext: () => {
    setCurrentChannel: (channel: GroupChannel) => void;
    handleChannelError: (error: import("@sendbird/chat").SendbirdError) => void;
    markAsReadAll: (channel: GroupChannel) => void;
    markAsUnread: (message: import("../../../utils").SendableMessageType, source?: "manual" | "internal") => void;
    setReadStateChanged: (state: string) => void;
    setFirstUnreadMessageId: (messageId: string | number) => void;
    sendUserMessage: (params: import("@sendbird/chat/message").UserMessageCreateParams) => Promise<import("@sendbird/chat/message").UserMessage>;
    sendFileMessage: (params: import("@sendbird/chat/message").FileMessageCreateParams) => Promise<import("@sendbird/chat/message").FileMessage>;
    sendMultipleFilesMessage: (params: import("@sendbird/chat/message").MultipleFilesMessageCreateParams) => Promise<import("@sendbird/chat/message").MultipleFilesMessage>;
    updateUserMessage: (messageId: number, params: import("@sendbird/chat/message").UserMessageUpdateParams) => Promise<import("@sendbird/chat/message").UserMessage>;
    setNewMessageIds: (ids: number[]) => void;
    setQuoteMessage: (message: import("../../../utils").SendableMessageType) => void;
    setAnimatedMessageId: (messageId: number) => void;
    setIsScrollBottomReached: (isReached: boolean) => void;
    scrollToBottom: (animated?: boolean) => Promise<void>;
    scrollToMessage: (createdAt: number, messageId: number, messageFocusAnimated?: boolean, scrollAnimated?: boolean) => Promise<void>;
    toggleReaction: (message: import("../../../utils").SendableMessageType, emojiKey: string, isReacted: boolean) => void;
    sendVoiceMessage: (params: import("@sendbird/chat/message").FileMessageCreateParams, duration: number) => Promise<import("@sendbird/chat/message").FileMessage>;
    initialized: boolean;
    loading: boolean;
    refreshing: boolean;
    messages: import("@sendbird/chat/message").BaseMessage[];
    newMessages: import("@sendbird/chat/message").BaseMessage[];
    resetNewMessages: () => void;
    refresh: () => Promise<void>;
    loadPrevious: () => Promise<void>;
    hasPrevious: () => boolean;
    loadNext: () => Promise<void>;
    hasNext: () => boolean;
    sendFileMessages: (paramsList: import("@sendbird/chat/message").FileMessageCreateParams[], onPending?: (message: import("@sendbird/chat/message").FileMessage) => void) => Promise<import("@sendbird/chat/message").FileMessage[]>;
    updateFileMessage: (messageId: number, params: import("@sendbird/chat/message").FileMessageUpdateParams) => Promise<import("@sendbird/chat/message").FileMessage>;
    resendMessage: <T extends import("@sendbird/chat/message").UserMessage | import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").MultipleFilesMessage>(failedMessage: T) => Promise<T>;
    deleteMessage: <T_1 extends import("@sendbird/chat/message").UserMessage | import("@sendbird/chat/message").FileMessage | import("@sendbird/chat/message").MultipleFilesMessage>(message: T_1) => Promise<void>;
    resetWithStartingPoint: (startingPoint: number) => Promise<void>;
    _dangerous_reducer_updateMessages: (messages: import("@sendbird/chat/message").BaseMessage[], clearBeforeAction: boolean, currentUserId?: string, strictStreamingOrder?: boolean) => void;
    _dangerous_reducer_deleteMessages: (messageIds: number[], reqIds: string[]) => void;
    channelUrl: string;
    isReactionEnabled?: boolean;
    isMessageGroupingEnabled?: boolean;
    isMultipleFilesMessageEnabled?: boolean;
    autoscrollMessageOverflowToTop?: boolean;
    showSearchIcon?: boolean;
    replyType?: import("../../../types").ReplyType;
    threadReplySelectType?: ThreadReplySelectType;
    disableMarkAsRead?: boolean;
    scrollBehavior?: "auto" | "smooth";
    forceLeftToRightMessageLayout?: boolean;
    startingPoint?: number;
    animatedMessageId?: number;
    onMessageAnimated?: () => void;
    messageListQueryParams?: MessageListQueryParamsType;
    filterEmojiCategoryIds?: (message: import("../../../utils").SendableMessageType) => number[];
    onBeforeSendUserMessage?: import("./types").OnBeforeHandler<import("@sendbird/chat/message").UserMessageCreateParams>;
    onBeforeSendFileMessage?: import("./types").OnBeforeHandler<import("@sendbird/chat/message").FileMessageCreateParams>;
    onBeforeSendVoiceMessage?: import("./types").OnBeforeHandler<import("@sendbird/chat/message").FileMessageCreateParams>;
    onBeforeSendMultipleFilesMessage?: import("./types").OnBeforeHandler<import("@sendbird/chat/message").MultipleFilesMessageCreateParams>;
    onBeforeUpdateUserMessage?: import("./types").OnBeforeHandler<import("@sendbird/chat/message").UserMessageUpdateParams>;
    onBeforeDownloadFileMessage?: import("./types").OnBeforeDownloadFileMessageType;
    onBackClick?(): void;
    onChatHeaderActionClick?(event: React.MouseEvent<HTMLElement, MouseEvent>): void;
    onReplyInThreadClick?: (props: {
        message: import("../../../utils").SendableMessageType;
    }) => void;
    onSearchClick?(): void;
    onQuoteMessageClick?: (props: {
        message: import("../../../utils").SendableMessageType;
    }) => void;
    renderUserMentionItem?: (props: {
        user: import("@sendbird/chat").User;
    }) => JSX.Element;
    renderUserProfile?: ((props: import("../../../types").RenderUserProfileProps) => React.ReactElement<any, string | React.JSXElementConstructor<any>>) & ((props: import("../../../types").RenderUserProfileProps) => React.ReactElement<any, string | React.JSXElementConstructor<any>>);
    onStartDirectMessage?: (channel: GroupChannel) => void;
    onUserProfileMessage?: (channel: GroupChannel) => void;
    disableUserProfile?: boolean;
    children?: React.ReactNode;
    currentChannel: GroupChannel;
    fetchChannelError: import("@sendbird/chat").SendbirdError;
    nicknamesMap: Map<string, string>;
    quoteMessage: import("../../../utils").SendableMessageType;
    isScrollBottomReached: boolean;
    readState: string;
    newMessageIds: number[];
    scrollRef: React.RefObject<HTMLDivElement>;
    scrollDistanceFromBottomRef: React.MutableRefObject<number>;
    scrollPositionRef: React.MutableRefObject<number>;
    messageInputRef: React.RefObject<HTMLDivElement>;
    markAsUnreadSourceRef: React.MutableRefObject<"manual" | "internal">;
    scrollPubSub: import("../../../lib/pubSub").PubSubTypes<import("./hooks/useMessageListScroll").ScrollTopics, import("./hooks/useMessageListScroll").ScrollTopicUnion>;
};
export { GroupChannelProvider, useGroupChannelContext, GroupChannelManager, };
