import { GetResponseResponse } from '../Proto/service/service_pb';
import { ActionConfigParamsType, ConvaiGRPCClientConfigType } from './types';
import * as narrativeDesign from "./narrativeDesign";
export interface ConvaiClientParams {
    apiKey: string;
    characterId: string;
    speaker: string;
    enableAudio: boolean;
    speakerId: string;
    sessionId: string;
    languageCode?: string;
    enableFacialData?: boolean;
    faceModel?: 0 | 1 | 2 | 3;
    narrativeTemplateKeysMap: Map<string, string>;
    textOnlyResponse?: boolean;
    micUsage?: boolean;
}
export declare class ConvaiClient {
    private sessionId;
    private responseCallback;
    private errorCallback;
    private apiKey;
    private characterId;
    private speaker;
    private speakerId;
    private languageCode;
    private enableAudio;
    private enableAddingChunk;
    private finalChunkReceived;
    private audioRecorder;
    private audioPlayer;
    private convaiGrpcClient;
    private disableAudioGeneration;
    private enableFacialData;
    private faceModel;
    private micUsage?;
    private narrativeTemplateKeysMap;
    private actionConfig;
    convaiConfig: ConvaiGRPCClientConfigType;
    constructor(params: ConvaiClientParams);
    private validateBeforeRequest;
    resetSession(): void;
    setResponseCallback(fn: (response: GetResponseResponse) => void): void;
    setErrorCallback(fn: (type: string, statusMessage: string, status: string) => void): void;
    sendTextChunk(text: string): void;
    startAudioChunk(): void;
    invokeTrigger(name: string | null, message?: string | null, preload?: boolean): void;
    sendFeedback(interaction_id: string, character_id: string, session_id: string, thumbs_up: boolean, feedback_text: string): void;
    endAudioChunk(): void;
    toggleAudioVolume(): void;
    getAudioVolume(): number;
    stopCharacterAudio(): void;
    onAudioPlay(fn: () => void): void;
    onAudioStop(fn: () => void): void;
    pauseAudio(): void;
    resumeAudio(): void;
    onAudioStateChange(fn: () => void): void;
    playAudio(): void;
    setActionConfig(actionConfig: ActionConfigParamsType): void;
}
export { narrativeDesign };
