import { ActionConfig, GetResponseResponse } from "../../Proto/generated";
import { AudioPlayer } from "./streaming_audio_player";
export interface ConvaiClientParams {
    apiKey: string;
    characterId: string;
    speaker?: string;
    speakerId?: string;
    enableAudio?: boolean;
    sessionId?: string;
    enableFacialData?: boolean;
    enableFacialEmotionData?: boolean;
    faceModel?: 0 | 1 | 2 | 3;
    narrativeTemplateKeysMap?: Map<string, string>;
    textOnlyResponse?: boolean;
    micUsage?: boolean;
    webstreamUrl?: string;
    languageCode?: string;
    retryCount?: number;
    apiBaseUrl?: string;
}
export declare class ConvaiClient {
    private sessionId;
    private responseCallback;
    private errorCallback;
    private requestQueue;
    private apiKey;
    private characterId;
    private speaker;
    private speakerId;
    private languageCode;
    private enableAudio;
    private enableAddingChunk;
    private finalChunkReceived;
    private audioRecorder;
    private audioPlayer;
    private convaiGrpcClient;
    private retryCount;
    private totalReties;
    private temporaryUserTranscript;
    private webstreamUrl;
    private narrativeTemplateKeysMap;
    private apiBaseUrl;
    private speakerResolutionPromise;
    private dynamicInfo;
    private enableFacialData;
    private enableFacialEmotionData;
    private faceModel;
    constructor(params: ConvaiClientParams);
    private whenSpeakerReady;
    private validateBeforeRequest;
    resetSession(): void;
    setResponseCallback(fn: (response: GetResponseResponse) => void): void;
    setErrorCallback(fn: (type: string, statusMessage: string, status: string) => void): void;
    invokeTrigger(name: string, message?: string): void;
    sendFeedback(interaction_id: string, character_id: string, session_id: string, thumbs_up: boolean, feedback_text: string): void;
    sendTextChunk(text: string): void;
    sendTextStream(text: string, isTyping?: boolean): void;
    connectionState(text: string): void;
    startAudioChunk(): void;
    endAudioChunk(): void;
    toggleAudioVolume(): void;
    private processRequestQueue;
    getAudioVolume(): number;
    stopCharacterAudio(): void;
    onAudioPlay(fn: () => void): void;
    onAudioStop(fn: () => void): void;
    endRecording(): void;
    pauseAudio(): void;
    resumeAudio(): void;
    onAudioStateChange(fn: () => void): void;
    playAudio(): void;
    setActionConfig(actionConfig: ActionConfig): void;
    updateDynamicInfo(_dynamicInfo: string): void;
    updateNarrativeTemplate(narrativeTemplateKeysMap: Map<string, string>): void;
    updateSpeakerMetadata(metadata: Record<string, string>): Promise<{
        speakerId: string;
        name: string;
    } | null>;
    getSpeakerMetadata(): {
        name: string;
        metadata: Record<string, string>;
    };
    getSpeakerId(): string;
    getSpeakerName(): string;
    getAudioPlayer(): AudioPlayer | undefined;
}
