UNPKG

2.25 kBTypeScriptView Raw
1import React from "react";
2import { Conversation as ConversationType, MessageEvent, StartTypingEvent, StopTypingEvent, EpisodeCompleteEvent, Message, StartEvent, ReplyEvent, SpeechConfig, Mood } from "@charisma-ai/sdk";
3export interface UseConversationOptions {
4 conversationId?: number;
5 onChangeCharacterMoods?: (newCharacterMoods: CharacterMoods) => void;
6 onMessage?: (event: MessageEvent) => Promise<void> | void;
7 onStartTyping?: (event: StartTypingEvent) => void;
8 onStopTyping?: (event: StopTypingEvent) => void;
9 onEpisodeComplete?: (event: EpisodeCompleteEvent) => void;
10 onStart?: (event: StartEvent) => void;
11 onReply?: (event: ReplyEvent) => void;
12 onResume?: () => void;
13 onTap?: () => void;
14 shouldResumeOnReady?: boolean | StartEvent;
15 shouldStartOnReady?: boolean | StartEvent;
16 speechConfig?: SpeechConfig;
17}
18export declare enum ChatMode {
19 Tap = "tap",
20 Chat = "chat"
21}
22export interface CharacterMoods {
23 [id: number]: Mood;
24}
25export declare type StoredMessage = Message | {
26 type: "player";
27 timestamp: number;
28 message: {
29 text: string;
30 };
31};
32export interface ConversationChildProps {
33 inputValue: string;
34 isTyping: boolean;
35 messages: StoredMessage[];
36 mode: ChatMode;
37 type: (newInputValue: string) => void;
38 start: ConversationType["start"];
39 reply: ConversationType["reply"];
40 tap: ConversationType["tap"];
41 resume: ConversationType["resume"];
42}
43export declare const useConversation: ({ conversationId, onChangeCharacterMoods, onMessage, onStartTyping, onStopTyping, onEpisodeComplete, onStart, onReply, onResume, onTap, shouldResumeOnReady, shouldStartOnReady, speechConfig, }: UseConversationOptions) => {
44 inputValue: string;
45 isTyping: boolean;
46 messages: StoredMessage[];
47 mode: ChatMode;
48 type: React.Dispatch<React.SetStateAction<string>>;
49 start: (event?: StartEvent) => void;
50 reply: (event: ReplyEvent) => void;
51 tap: () => void;
52 resume: () => void;
53};
54export interface ConversationProps extends UseConversationOptions {
55 children: (conversation: ConversationChildProps) => React.ReactNode;
56}
57export declare const Conversation: ({ children, ...props }: ConversationProps) => JSX.Element;