import { NetworkQuality, RemoteVideoTrackStats, RemoteAudioTrackStats, IAgoraRTCClient, SDK_CODEC, UID, IAgoraRTCRemoteUser } from 'agora-rtc-sdk-ng'; interface RTCClient extends IAgoraRTCClient { sendStreamMessage(msg: Uint8Array | string, flag: boolean): Promise; } interface AgoraCredentials { agora_app_id: string; agora_channel: string; agora_token: string; agora_uid: number; } interface NetworkStats { localNetwork: NetworkQuality; remoteNetwork: NetworkQuality; video: RemoteVideoTrackStats; audio: RemoteAudioTrackStats; } interface Message { id: string; text: string; isSentByMe: boolean; } type Metadata = { vid?: string; vurl?: string; lang?: string; mode?: number; bgurl?: string; }; type CommandPayload = { cmd: string; data?: Metadata; }; type CommandResponsePayload = { cmd: string; code: number; msg?: string; }; type ChatPayload = { text: string; meta?: Metadata; }; type ChatResponsePayload = { text: string; from: 'bot' | 'user'; }; type StreamMessage = { v: number; type: string; mid: string; idx?: number; fin?: boolean; pld: CommandPayload | ChatPayload | CommandResponsePayload | ChatResponsePayload; }; interface SDKEvents { onStreamMessage?: (uid: UID, message: StreamMessage) => void; onException?: (error: { code: number; msg: string; uid: UID; }) => void; onNetworkQuality?: (stats: NetworkQuality) => void; onUserJoined?: (user: IAgoraRTCRemoteUser) => void; onUserLeft?: (user: IAgoraRTCRemoteUser, reason: string) => void; onRemoteAudioStats?: (stats: RemoteAudioTrackStats) => void; onRemoteVideoStats?: (stats: RemoteVideoTrackStats) => void; onTokenWillExpire?: () => void; onTokenDidExpire?: () => void; onMessageReceived?: (message: Message) => void; onMessageUpdated?: (message: Message) => void; onNetworkStatsUpdated?: (stats: NetworkStats) => void; onUserPublished?: (user: IAgoraRTCRemoteUser, mediaType: 'video' | 'audio' | 'datachannel') => void; onUserUnpublished?: (user: IAgoraRTCRemoteUser, mediaType: 'video' | 'audio' | 'datachannel') => void; } declare class GenericAgoraSDK { private client; private audioTrack; private events; private messageMap; private isJoined; constructor(options?: { mode?: string; codec?: SDK_CODEC; }); private registerDefaultListeners; on(events: SDKEvents): void; joinChannel(credentials: AgoraCredentials): Promise; private leaveChannel; closeStreaming(): Promise; sendMessage(content: string): Promise; interrupt(): Promise; toggleMic(): Promise; isMicEnabled(): boolean; isConnected(): boolean; isChannelJoined(): boolean; getMessages(): Message[]; getMessage(messageId: string): Message | undefined; getClient(): RTCClient; } export { type AgoraCredentials, type ChatPayload, type ChatResponsePayload, type CommandPayload, type CommandResponsePayload, GenericAgoraSDK, type Metadata, type RTCClient, type SDKEvents, type StreamMessage };