import * as React from 'react'; import { Thread, Message, MessageModel, MessageUserContent } from '../../models'; import { IdType } from '../../types'; import { ThreadMessages } from '../../models/ThreadMessages'; import { ObservableReactValue } from '../../utils/observers'; import { ThreadListenersMap } from '../thread/ThreadListenersMap'; import { EventsEmitterMethods } from '../../models/EventsEmitter'; export type ApiRefType = any> = { /** * Get all messages from current thread */ getAllMessages: () => DM[]; /** * Get all threads */ getAllThreads: () => DD[]; /** * Get current thread */ getCurrentThread: () => DD | undefined; /** * Get thread by id */ getThreadById: (id: IdType) => DD | undefined; /** * Represents an instance of an event emitter used to handle chat events */ emitter: EventsEmitterMethods; /** * Get messages from current branch * @see https://docs.playliner.com/introduction/branching/ */ getBranchMessages: () => DM[]; /** * Delete thread by id */ deleteThread: (threadId: IdType) => void; /** * Rename thread by id */ renameThread: (threadId: IdType, title: string) => void; /** * Changes the value of renameItem; if there is a value, a rename dialog opens. */ setRenameItem: (v: DD | undefined) => void; /** * Triggered when thread is renamed. */ onThreadRenamed?: (v: { thread: DD; oldTitle: string; newTitle: string; }) => void; /** * Send message to conversation */ sendUserMessage: (content: Message['content']) => Promise; /** * Triggered when another thread is opened. */ onChangeThread: (threadId: IdType) => void; /** * Triggered when a new thread is opened. * @param thread */ openNewThread: (thread?: DD) => void; /** * Set your own waiting status for a chat response. */ setProgressStatus: (status: string, inProgress?: boolean) => void; /** * Set text for specific message */ setMessageText: (messageId: string, text: string) => void; /** * Get waiting status for a chat response. */ getProgressStatus: () => string; /** * Change thread branch. */ handleChangeBranch: ThreadMessages['handleChangeBranch']; /** * Changes the state of opening the drawer menu. */ setMenuDrawerOpen: (v: boolean) => void; /** * Changes the value of deleteItem; if there is a value, a confirm dialog opens. */ setDeleteItem: (v: DD | undefined) => void; /** * Set active tool. If there is no `threadId`, change the value of the current thread. */ setActiveTool: (v: string | undefined, threadId?: IdType) => void; /** * Create new thread. */ handleCreateNewThread?: () => DD; /** * Change current thread. */ onChangeCurrentThread?: (v: DD) => void; /** * Triggered when thread is deleted. */ onThreadDeleted?: (v: DD) => void; }; export type PrivateApiRefType = any> = { allMessages: ObservableReactValue[]>>; branch: ObservableReactValue[]>>; getListener: >(key: K) => ThreadListenersMap[K] | undefined; updateScrollButtonState: () => void; onEditMessage: (newContent: MessageUserContent, messageEdit: MessageModel) => Promise; getConversationBlockHeight: () => number; } & ApiRefType; export declare const useApiRef: >(userApiRef: React.MutableRefObject | undefined) => React.MutableRefObject>;