import * as React from 'react';
import { ChatPropsTypes } from './useChatProps';
import { Thread, Message, FileAttachedParams } from '../../models';
import { PrivateApiRefType } from './useApiRef';
import { Threads } from '../../models/Threads';
import { FnType } from '../../models/types';
import SnackbarModel from '../../models/SnackbarModel';
import { ApiManager } from './useApiManager';
export type ChatGlobalContextType<DM extends Message = any, DD extends Thread<DM> = any> = {
    apiRef: React.RefObject<PrivateApiRefType>;
    model: Threads<DM, DD>;
    actionsAssistant: {
        element: Exclude<ChatPropsTypes<DM, DD>['assistantActions'], undefined>[number];
    }[];
    handleCreateNewThread: FnType<DD>;
    snackbar: SnackbarModel;
    onFileAttached?: (params: FileAttachedParams) => Promise<void> | void;
} & Omit<ChatPropsTypes<DM, DD>, 'assistantActions' | 'thread' | 'threads' | 'handleCreateNewThread'>;
type ProviderProps<DM extends Message = any, DD extends Thread<DM> = any> = React.PropsWithChildren<{
    props: ChatPropsTypes<DM, DD>;
    apiManager: ApiManager;
}>;
declare const useChatContext: <DM extends Message, DD extends Thread<DM>>() => ChatGlobalContextType<DM, DD>;
export declare const useSafeChatContext: <DM extends Message, DD extends Thread<DM>>() => ChatGlobalContextType<DM, DD>;
declare const useChatModel: () => Threads<Message, Thread<Message>>;
declare const ChatGlobalProvider: React.MemoExoticComponent<({ props, children, apiManager }: ProviderProps) => React.JSX.Element>;
export { ChatGlobalProvider, useChatContext, useChatModel };
