UNPKG

@charisma-ai/react

Version:
60 lines (59 loc) 2.5 kB
import React from "react"; import { Conversation as ConversationType, MessageEvent, StartTypingEvent, StopTypingEvent, EpisodeCompleteEvent, Message, StartEvent, ReplyEvent, SpeechConfig, ActionEvent, ProblemEvent } from "@charisma-ai/sdk"; export declare enum ChatMode { Tap = "tap", Chat = "chat" } export type PlayerMessage = { type: "player"; timestamp: number; message: { text: string; }; }; export type StoredMessage = Message | PlayerMessage; export interface ConversationChildProps { inputValue: string; isRestarting: boolean; isTyping: boolean; messages: StoredMessage[]; mode: ChatMode; type: (newInputValue: string) => void; start: ConversationType["start"]; reply: ConversationType["reply"]; tap: ConversationType["tap"]; action: ConversationType["action"]; resume: ConversationType["resume"]; restart: (eventId: string) => Promise<void>; } export interface ConversationState { inputValue: string; isTyping: boolean; messages: StoredMessage[]; mode: ChatMode; } export interface UseConversationOptions { conversationUuid?: string; onMessage?: (event: MessageEvent) => Promise<void> | void; onStartTyping?: (event: StartTypingEvent) => void; onStopTyping?: (event: StopTypingEvent) => void; onEpisodeComplete?: (event: EpisodeCompleteEvent) => void; onProblem?: (event: ProblemEvent) => void; onStart?: (event: StartEvent) => void; onReply?: (event: ReplyEvent) => void; onResume?: () => void; onTap?: () => void; onAction?: (event: ActionEvent) => void; initialState?: ConversationState; onStateChange?: (newState: ConversationState) => void; shouldResumeOnConnect?: boolean | StartEvent; shouldStartOnConnect?: boolean | StartEvent; speechConfig?: SpeechConfig; sendIntermediateEvents?: boolean; } export declare const useConversation: ({ conversationUuid, onMessage, onStartTyping, onStopTyping, onEpisodeComplete, onProblem, onStart, onReply, onResume, onTap, onAction, initialState, onStateChange, shouldResumeOnConnect, shouldStartOnConnect, speechConfig, sendIntermediateEvents, }: UseConversationOptions) => ConversationChildProps; export interface ConversationProps extends UseConversationOptions { children: React.ReactNode; } export declare const Conversation: ({ children, ...props }: ConversationProps) => React.JSX.Element; export declare const useConversationContext: () => ConversationChildProps | undefined;