import React from "react";
import { Conversation as ConversationType, MessageEvent, StartTypingEvent, StopTypingEvent, SceneCompletedEvent, Message, StartEvent, ReplyEvent, SpeechConfig, Mood } from "@charisma-ai/sdk";
export interface UseConversationOptions {
    conversationId?: number;
    onChangeCharacterMoods?: (newCharacterMoods: CharacterMoods) => void;
    onMessage?: (event: MessageEvent) => void;
    onStartTyping?: (event: StartTypingEvent) => void;
    onStopTyping?: (event: StopTypingEvent) => void;
    onSceneCompleted?: (event: SceneCompletedEvent) => void;
    onStart?: (event: StartEvent) => void;
    onReply?: (event: ReplyEvent) => void;
    onTap?: () => void;
    speechConfig?: SpeechConfig;
    stopOnSceneComplete?: boolean;
}
export declare enum ChatMode {
    Tap = "tap",
    Chat = "chat"
}
export interface CharacterMoods {
    [id: number]: Mood;
}
export declare type StoredMessage = Message | {
    type: "player";
    message: {
        text: string;
    };
};
export interface ConversationChildProps {
    inputValue: string;
    isTyping: boolean;
    messages: StoredMessage[];
    mode: ChatMode;
    type: (newInputValue: string) => void;
    start: ConversationType["start"];
    reply: ConversationType["reply"];
    tap: ConversationType["tap"];
}
export declare const useConversation: ({ conversationId, onChangeCharacterMoods, onMessage, onStartTyping, onStopTyping, onSceneCompleted, onStart, onReply, onTap, speechConfig, stopOnSceneComplete }: UseConversationOptions) => ConversationChildProps;
export interface ConversationProps extends UseConversationOptions {
    children: (conversation: ConversationChildProps) => React.ReactNode;
}
export declare const Conversation: ({ children, ...props }: ConversationProps) => JSX.Element;
