import { CSSProperties, PropsWithChildren } from "react";
import { ConfigType } from "../../types/ConfigType";
import { Core } from "../../services/VirtualService";
type Props = {
    /**
     * User name that VIRTUAL will address
     */
    userName?: string;
    /**
     * VIRTUAL name
     */
    virtualName?: string;
    /**
     * Whether to hide voice input button
     */
    hideVoice?: boolean;
    /**
     * Addional class name for input container
     */
    inputClassName?: string;
    /**
     * Additional input style
     */
    inputStyle?: CSSProperties;
    /**
     * Whether to hide input component
     */
    hideInput?: boolean;
    /**
     * ThreeJS camera zoom (default 2)
     */
    zoom?: number;
    /**
     * 3D model position in [x,y,z] (default [0, -10, 0])
     */
    position?: number[];
    /**
     * 3D model scale in number (default 10)
     */
    scale?: number;
    /**
     * virtualId that will decide user memory
     */
    virtualId?: number | string;
    /**
     * Whether to put 3D model aside
     */
    aside?: boolean;
    /**
     * Callback on user message created
     * @param content any
     * @returns
     */
    onUserMessageCreated?: (content: any) => Promise<void>;
    /**
     * Callback on virtual message created
     * @param content any
     * @returns
     */
    onVirtualMessageCreated?: (content: any) => Promise<void>;
    /**
     * Callback before sending message
     * @returns
     */
    onBeforeSendMessage?: (content: string | Blob) => Promise<string | Blob>;
    /**
     * Callback when sending message encounters error
     * @param err Error
     * @returns
     */
    onErrorSendingMessage?: (err: any) => void;
    /**
     * Callback when input is focused
     * @returns
     */
    onInputFocused?: () => void;
    /**
     * Callback when input is blurred
     * @returns
     */
    onInputBlurred?: () => void;
    /**
     * Function that takes in virtualId and additional metadata to return runner access token
     * @returns runner access token
     */
    initAccessToken?: (virtualId: number | string, metadata?: {
        [id: string]: any;
    }) => Promise<string>;
    /**
     * Callback on audio playback error
     * @returns
     */
    onAudioErr?: () => void;
    /**
     * Validate if user is allowed to send message
     * @returns true if can send message, else false
     */
    validateMessageCapability?: () => boolean;
    /**
     * Override the 3D model URL
     */
    overrideModelUrl?: string;
    /**
     * Function to transform raw model URL
     * @param modelUrl Raw model URL
     * @returns Transformed model URL
     */
    transformModelUrl?: (modelUrl: string) => string;
    /**
     * Callback when /prompt to runner encounters error
     * @param error Error
     * @returns
     */
    onPromptError?: (error: any) => void;
    /**
     * Callback when init is completed
     * @param cores array of supported cores
     * @returns void
     */
    onInitCompleted?: (cores: Core[]) => void;
    /**
     * Additional metadata to pass during initAccessToken
     */
    metadata?: {
        [id: string]: any;
    };
    /**
     * Override default loading text
     */
    loadingText?: string;
    /**
     * Additinal configurations to send during prompting
     */
    configs?: ConfigType;
    /**
     * Callback on 3D model loading progress change
     * @param v Progerss in percentage (0-100)
     * @returns
     */
    onProgressChange?: (v: number) => void;
    /**
     * Callback when 3D model loading encounters error
     * @param err Error
     * @returns
     */
    onLoadErr?: (err: any) => void;
    showSettings?: boolean;
    modelConfigs?: {
        [boneName: string]: {
            stiffness?: number;
            dragForce?: number;
            hitRadius?: number;
        };
    };
    lang?: "en" | "zh-CN";
    sceneConfigs?: {
        linear: boolean;
        flat: boolean;
        shadows: boolean;
    };
};
export declare const CharacterRoom: React.FC<PropsWithChildren<Props>>;
export {};
