import { ConfigType } from "../types/ConfigType";
import { PromptType } from "../types/PromptType";
export declare enum Core {
    VISUAL = 0,
    VOICE = 1,
    COGNITIVE = 2
}
/**
 * VirtualService configurations
 */
export type VirtualServiceConfigs = {
    /**
     * Unique virtualId, this ID will be used as the reference when creating memory for users
     */
    virtualId?: number | string;
    /**
     * User's name to address when VIRTUAL replies
     */
    userName?: string;
    /**
     * Virtual's name that user addresses
     */
    virtualName?: string;
    /**
     * Function that returns runner access token.
     * YOU MUST override this function to avoid accidentally leaking API Key and Secret using the default sample function. For more information, read {@link UNSAFE_initAccessToken} function
     * @param virtualId virtualId that decides virtual's memory
     * @param metadata additional metadata when requesting access token
     * @returns runner access token
     */
    initAccessToken?: (virtualId: number | string, metadata?: {
        [id: string]: any;
    }) => Promise<string>;
    /**
     * Callback when prompt throws error
     * @param error Error
     * @returns void
     */
    onPromptError?: (error: any) => void;
    /**
     * Additional metadata to pass to initAccessToken function
     */
    metadata?: {
        [id: string]: any;
    };
    /**
     * Callback when init is completed
     * @param cores array of supported cores
     * @returns void
     */
    onInitCompleted?: (cores: Core[]) => void;
};
/**
 * VirtualService contains all operations required to send prompt to the VIRTUAL.
 * If you are using React, consider using the {@link useVirtual} hook to automatically switch between VIRTUALs.
 */
export declare class VirtualService {
    /**
     * Configurations for VirtualService prompting
     */
    configs: VirtualServiceConfigs;
    /**
     * 3D Model URL
     */
    modelUrl: string;
    /**
     * Runner URL
     */
    runnerUrl: string;
    /**
     * Runner supported cores
     */
    cores: string[];
    constructor(configs: VirtualServiceConfigs);
    /**
     * Function to initialize modelUrl and runnerUrl.
     */
    initVirtual(): Promise<void>;
    /**
     * Function when init completed
     */
    initComplete(): Promise<void>;
    /**
     * Function to initialize user session by virtual id
     * @param vid virtualId
     * @param retry function will retry for 3 times, to prevent this behavior, set to a number above 3
     */
    initSession(vid: number | string, retry?: number): Promise<void>;
    /**
     * Function to send prompt to the runner service and get Virtual response.
     * @param content text / audio blob contents
     * @param configs additional configuration during prompting
     * @param onPromptReceived callback when prompt is received from the runner service
     * @param retry function will retry for 3 times, to prevent this behavior, set to a number above 3
     * @returns Prompt object
     */
    createPrompt(content: string | Blob, configs?: ConfigType, onPromptReceived?: (prompt: PromptType) => void, retry?: number): Promise<PromptType>;
    /**
     * Text-to-speech function
     * @param content text content
     * @returns audio in URL
     */
    getTTSResponse(content: string): Promise<string>;
}
export declare const defaultVirtualService: VirtualService;
