import { Buffer } from "node:buffer"; import { AudioClosePayload, AudioCodec, AudioOpenPayload, AudioOpenedPayload, AudioWakewordPayload, ClientLinkCapabilities, ClientLinkChannel, ClientLinkFrame, ClientLinkIdentity, ErrorPayload, InboundAudioFrame, WelcomePayload } from "./types"; type ClientLinkEventMap = { connected: []; authenticated: [WelcomePayload]; disconnected: [{ code?: number; explicit: boolean; }]; error: [Error | ErrorPayload]; "audio.opened": [AudioOpenedPayload]; "audio.closed": [{ roomId?: string; roomExternalRef?: string; }]; "audio.frame": [InboundAudioFrame]; "audio.wakeword": [AudioWakewordPayload]; }; type ClientLinkEvent = keyof ClientLinkEventMap; type ClientLinkListener = (...args: ClientLinkEventMap[T]) => void; export type ClientLinkOptions = { url: string; token: string; identity: ClientLinkIdentity; capabilities?: ClientLinkCapabilities; pingIntervalMs?: number; autoReconnect?: boolean; reconnectInitialDelayMs?: number; debug?: boolean; }; export declare class ClientLink { private readonly options; private ws; private authenticated; private explicitClose; private reconnectAttempts; private pingTimer; private reconnectTimer; private desiredAudioOpen; private currentRoomId; private outboundSeq; private listeners; constructor(options: ClientLinkOptions); on(event: T, listener: ClientLinkListener): this; off(event: T, listener: ClientLinkListener): this; connect(): Promise; close(): void; isAuthenticated(): boolean; get roomId(): string | null; openAudio(payload: AudioOpenPayload): void; closeAudio(): void; sendAudioFrame(data: Buffer, codec?: AudioCodec, flags?: { activityStart?: boolean; activityEnd?: boolean; }): void; sendWakeword(payload: AudioWakewordPayload): void; private openSocket; private handleText; private handleControlFrame; private handleAudioFrame; private handleBinary; private sendFrame; private startPingLoop; private clearPingTimer; private scheduleReconnect; private clearReconnectTimer; private emit; } export type { AudioClosePayload, AudioCodec, AudioOpenPayload, AudioOpenedPayload, AudioWakewordPayload, ClientLinkCapabilities, ClientLinkChannel, ClientLinkFrame, ClientLinkIdentity, ErrorPayload, InboundAudioFrame, WelcomePayload, };