import { Room, RoomOptions } from 'livekit-client';
import { HTTPClient } from './HTTPClient';
import { AvatarClientConfig, Avatars, CreateVideoConfig, GetSupportedVoicesResponse, Prompt, VideoPlayerConfig, SynthesizerOptions, Landmarks, AvatarAttribute } from './types';
import { VideoPlayer } from './VideoPlayer';
export declare class AvatarClient extends HTTPClient {
    private room?;
    private avatarId?;
    private isAvatarSpeaking;
    private avatarsAvailable;
    private landmarks;
    private conversational;
    private initialPrompt?;
    private synthesizeOptions?;
    private audioElement?;
    private _videoPlayer?;
    private videoPlayerConfig?;
    private canvas;
    private ctx;
    private currentLandmarks;
    private targetLandmarks;
    private previousLandmarks;
    private lerpFactor;
    private isLerpingActive;
    private animationFrameId;
    private readonly LERP_THRESHOLD;
    private readonly MAX_DISTANCE_THRESHOLD;
    private attributes;
    private eventEmitter;
    private customPreset?;
    constructor(config: AvatarClientConfig);
    init(videoPlayerConfig: VideoPlayerConfig, audioElement: HTMLAudioElement, canvas?: HTMLCanvasElement): Promise<void>;
    connect(avatarId?: number, roomOpts?: RoomOptions & Omit<AvatarClientConfig, 'apiKey'>): Promise<Room>;
    get avatars(): Avatars;
    get isConnected(): boolean;
    get isSpeaking(): boolean;
    get videoPlayer(): VideoPlayer | undefined;
    get attributesList(): Map<string, AvatarAttribute>;
    getAvatars(): Promise<Avatars>;
    getSupportedVoices(): Promise<GetSupportedVoicesResponse>;
    say(message: string, options?: SynthesizerOptions): void;
    stop(): void;
    setMessagesHistory(messages: Prompt[]): void;
    setSynthesizerOptions(options: SynthesizerOptions): void;
    switchAvatar(avatarId: number): void;
    sendConversationalMessage(message: any): void;
    addEventListener(eventName: string, listener: (...args: any[]) => void): void;
    removeEventListener(eventName: string, listener: (...args: any[]) => void): void;
    enableMicrophone(): Promise<void>;
    disableMicrophone(): Promise<void>;
    createVideo(avatarId: number, message: string, config?: CreateVideoConfig): Promise<{
        url: string;
    }>;
    setLerpFactor(factor: number): void;
    addAttribute(name: string, imageSrc: string, drawFunction?: (ctx: CanvasRenderingContext2D, landmarks: Landmarks, image: HTMLImageElement) => void): Promise<void>;
    removeAttribute(name: string): void;
    disconnect(): void;
    loadPresetAttributes(): void;
    generateAvatarVideo({ image, text, voiceId, }: {
        image: string;
        text: string;
        voiceId: string;
    }): Promise<unknown>;
    getAvatarVideoStatus(id: string): Promise<unknown>;
    private lerp;
    private startLerping;
    private stopLerping;
    private getPresetDrawFunction;
    private drawAttributes;
    private clearRect;
    private setupRoomListeners;
    private removeRoomListeners;
    private handleTrackSubscribed;
    private handleTrackUnsubscribed;
    private handleDataReceived;
    private processLandmarks;
    private calculateDistance;
    private updateAndEmitLerpedLandmarks;
    private emitLandmarks;
    private destroyEmitter;
    private fetchAvatars;
    private sendMessage;
}
