import React from 'react';
import type { GroupChannel } from '@sendbird/chat/groupChannel';
import { MessageSearchQuery } from '@sendbird/chat/message';
import { ClientSentMessages } from '../../../types';
import { SendbirdError } from '@sendbird/chat';
import type { MessageSearchQueryParams } from '@sendbird/chat/lib/__definition';
import useScrollCallback from './hooks/useScrollCallback';
import { CoreMessageType } from '../../../utils';
export interface MessageSearchProviderProps {
    channelUrl: string;
    children?: React.ReactElement;
    searchString?: string;
    messageSearchQuery?: MessageSearchQueryParams;
    onResultLoaded?(messages?: Array<CoreMessageType> | null, error?: SendbirdError | null): void;
    onResultClick?(message: ClientSentMessages): void;
}
export interface MessageSearchState extends MessageSearchProviderProps {
    channelUrl: string;
    allMessages: ClientSentMessages[];
    loading: boolean;
    isInvalid: boolean;
    initialized: boolean;
    currentChannel: GroupChannel | null;
    currentMessageSearchQuery: MessageSearchQuery | null;
    hasMoreResult: boolean;
    retryCount: number;
    selectedMessageId: number | null;
    requestString: string;
    onScroll?: ReturnType<typeof useScrollCallback>;
    handleOnScroll?: (e: React.BaseSyntheticEvent) => void;
    scrollRef?: React.RefObject<HTMLDivElement>;
}
export declare const MessageSearchContext: React.Context<import("../../../utils/storeManager").Store<MessageSearchState>>;
declare const MessageSearchManager: React.FC<MessageSearchProviderProps>;
declare const MessageSearchProvider: React.FC<MessageSearchProviderProps>;
declare const useMessageSearchContext: () => {
    setCurrentChannel: (channel: GroupChannel) => void;
    setChannelInvalid: () => void;
    getSearchedMessages: (messages: ClientSentMessages[], createdQuery: MessageSearchQuery) => void;
    setQueryInvalid: () => void;
    startMessageSearch: () => void;
    startGettingSearchedMessages: (query: MessageSearchQuery) => void;
    getNextSearchedMessages: (messages: ClientSentMessages[]) => void;
    resetSearchString: () => void;
    setSelectedMessageId: (messageId: number) => void;
    handleRetryToConnect: () => void;
    setRetryCount: () => void;
    channelUrl: string;
    allMessages: ClientSentMessages[];
    loading: boolean;
    isInvalid: boolean;
    initialized: boolean;
    currentChannel: GroupChannel | null;
    currentMessageSearchQuery: MessageSearchQuery | null;
    hasMoreResult: boolean;
    retryCount: number;
    selectedMessageId: number | null;
    requestString: string;
    onScroll?: ReturnType<typeof useScrollCallback>;
    handleOnScroll?: (e: React.BaseSyntheticEvent) => void;
    scrollRef?: React.RefObject<HTMLDivElement>;
    children?: React.ReactElement;
    searchString?: string;
    messageSearchQuery?: MessageSearchQueryParams;
    onResultLoaded?(messages?: Array<CoreMessageType> | null, error?: SendbirdError | null): void;
    onResultClick?(message: ClientSentMessages): void;
};
export { MessageSearchProvider, useMessageSearchContext, MessageSearchManager, };
