///
import { UID } from 'agora-rtc-react';
import { RtmClient, RtmEvents } from 'agora-rtm-react';
/**
* Callbacks to pass to RTM events
*/
export declare type rtmCallbacks = {
channel?: Partial;
client?: Partial;
};
export declare enum rtmStatusEnum {
initFailed = 0,
offline = 1,
initialising = 2,
loggingIn = 3,
loggedIn = 4,
connected = 5,
loginFailed = 6
}
export declare type messageType = 'UserData' | 'MuteRequest';
export declare type messageObject = userData | muteRequest | genericAction;
export declare enum clientRoleRaw {
broadcaster = 0,
audience = 1
}
export declare enum mutingDevice {
camera = 0,
microphone = 1
}
export declare type genericAction = {
messageType: 'RtmDataRequest';
type: 'ping' | 'pong' | 'userData';
};
export declare type muteRequest = {
messageType: 'MuteRequest';
rtcId: UID;
mute: boolean;
device: mutingDevice;
isForceful: boolean;
};
export declare type userData = {
messageType: 'UserData';
rtmId: string;
rtcId: UID;
username?: string;
role: clientRoleRaw;
uikit: {
platform: string;
framework: string;
version: string;
};
agora: {
rtm: string;
rtc: string;
};
};
export declare enum popUpStateEnum {
closed = 0,
muteMic = 1,
muteCamera = 2,
unmuteMic = 3,
unmuteCamera = 4
}
/**
* Interface for RTM Context
*/
interface rtmContext {
/**
* rtm connection status
*/
rtmStatus: rtmStatusEnum;
/**
* send message to everyone in the channel
*/
sendChannelMessage: (msg: messageObject) => void;
/**
* send message to a specific user
*/
sendPeerMessage: (msg: messageObject, uid: string) => void;
/**
* RTM Client instance
*/
rtmClient: RtmClient;
/**
* map with userdata for each rtc uid in the channel
*/
userDataMap: Object;
/**
* map with rtm uid for each rtc uid in the channel
*/
uidMap: Object;
/**
* Send a mute request
*/
sendMuteRequest: (device: mutingDevice, rtcId: UID, mute: boolean) => void;
/**
* RTM usernames
*/
usernames: {};
/**
* state to display pop up on remote mute request
*/
popUpState: popUpStateEnum;
/**
* set state to hide pop up
*/
setPopUpState: React.Dispatch>;
}
/**
* Context to access RTM data. It's setup by {@link RtmConfigure}.
*/
declare const RtmContext: import("react").Context;
export declare const RtmProvider: import("react").Provider;
export declare const RtmConsumer: import("react").Consumer;
export default RtmContext;