import * as React from 'react';
import { MobileMessageActionsType } from '../message/hooks/useMobileMessageActions';
import { MessagesModeType } from '../message/hooks/useMessagesMode';
import { ThreadModel } from '../../models/ThreadModel';
import { Thread, Message } from '../../models';
import { ApiManager } from '../core/useApiManager';
import { PrivateApiRefType } from '../core/useApiRef';
import { type ChatGlobalContextType } from '../core/ChatGlobalContext';
import { ChatScrollApiRef } from './ChatScroller';
import { Threads } from '../../models/Threads';
type ThreadContextType<DM extends Message, DD extends Thread<DM>> = {
    thread: ThreadModel<DM, DD> | undefined;
    mobileMessageActions: MobileMessageActionsType;
    messageMode: MessagesModeType;
    apiRef: React.RefObject<PrivateApiRefType<DM>>;
};
type Props<DM extends Message, DD extends Thread<DM>> = React.PropsWithChildren<{
    model: Threads<DM, DD>;
    thread: ThreadModel<DM, DD> | undefined;
    apiManager: ApiManager;
    scrollRef: React.RefObject<ChatScrollApiRef>;
    globalProps: Pick<ChatGlobalContextType<any, any>, 'onFirstMessageSent' | 'onAssistantMessageTypingFinish' | 'enableBranches' | 'beforeUserMessageSend' | 'getCurrentBranch' | 'getConversationBlockHeightMin'>;
    contentRef?: React.RefObject<HTMLDivElement | null>;
}>;
declare const ThreadProvider: <DM extends Message, DD extends Thread<DM>>({ children, model, thread, apiManager, scrollRef, contentRef, globalProps }: Props<DM, DD>) => React.JSX.Element;
declare const useThreadContext: <DM extends Message, DD extends Thread<DM>>() => ThreadContextType<DM, DD>;
export { ThreadProvider, useThreadContext };
