import { SimliClientEvents } from './Events'; import { Logger, LogLevel } from './Logger'; interface SimliSessionRequest { faceId: string; handleSilence: boolean; maxSessionLength: number; maxIdleTime: number; model?: "fasttalk" | "artalk"; } interface TokenRequestData { config: SimliSessionRequest; apiKey: string; } interface SimliSessionToken { session_token: string; } type TransportMode = "livekit" | "p2p"; type SignalingMode = "websockets"; type session_token = string; declare function generateSimliSessionToken(request: TokenRequestData, SimliURL?: string): Promise; declare function generateIceServers(apiKey: string, SimliURL?: string): Promise; declare class SimliClient { session_token: string; transport: TransportMode; signaling: SignalingMode; videoElement: HTMLVideoElement; audioElement: HTMLAudioElement; audioBufferSize: number; private connection; private connectionTimeout; private connectionResolve; private connectionReject; private connectionPromise; private sourceNode; private audioWorklet; private readonly MAX_RETRY_ATTEMPTS; private RETRY_DELAY; private readonly CONNECTION_TIMEOUT_MS; private retryAttempt; private SimliWSURL; private audioContext; private logger; private iceServers; private persistent_events; private failReason; private shouldStop; on(event: K, callback: SimliClientEvents[K]): void; off(event: K, callback: SimliClientEvents[K]): void; constructor(session_token: session_token, videoElement: HTMLVideoElement, audioElement: HTMLAudioElement, iceServers: RTCIceServer[] | null, logLevel?: LogLevel, transport_mode?: TransportMode, signaling?: SignalingMode, SimliWSURL?: string, audioBufferSize?: number); private resetConnections; start(): Promise; stop(): Promise; listenToMediastreamTrack(stream: MediaStreamTrack): void; private initializeAudioWorklet; ClearBuffer: () => void; sendAudioData(audioData: Uint8Array): void; sendAudioDataImmediate(audioData: Uint8Array): void; } export { SimliClient, generateSimliSessionToken, generateIceServers, Logger, LogLevel }; export type { SimliSessionRequest };