import { ZIMErrorCode } from './ZIMErrorCode';
/** Connection state. */
export declare enum ZIMConnectionState {
    /** Unconnected state, enter this state before logging in and after logging out. */
    Disconnected = 0,
    /** The state that the connection is being requested. It will enter this state after successful execution login function. */
    Connecting = 1,
    /** The state that is successfully connected. */
    Connected = 2,
    /** The connection is being reconnected. */
    Reconnecting = 3
}
/** The event that caused the connection status to change. */
export declare enum ZIMConnectionEvent {
    /** Success. */
    Success = 0,
    /** The user actively logs in. */
    ActiveLogin = 1,
    /** Connection timed out. */
    LoginTimeout = 2,
    /** The network connection is temporarily interrupted. */
    LoginInterrupted = 3,
    /** Being kicked out. */
    KickedOut = 4,
    /** Detail description: Disconnected due to expired login token. */
    TokenExpired = 5,
    /** The user account was unregistered. */
    Unregistered = 6
}
/** conversation changed event. */
export declare enum ZIMConversationEvent {
    /** A new conversation was added. */
    Added = 0,
    /** The conversation was updated. */
    Updated = 1,
    /** The conversation was disabled. */
    Disabled = 2,
    /** The conversation was deleted. */
    Deleted = 3
}
/** Conversation list change action. */
export declare enum ZIMConversationListChangeAction {
    /** A conversation was added to the list. */
    Added = 0,
    /** A conversation was deleted from the list. */
    Deleted = 1,
    /** A conversation in the list was updated. */
    Updated = 2
}
/** Enumeration of conversation notification status. */
export declare enum ZIMConversationNotificationStatus {
    /** Message notifications are enabled. */
    Notify = 1,
    /** Do not disturb mode is enabled. */
    DoNotDisturb = 2
}
/** Conversation type. */
export declare enum ZIMConversationType {
    /** Unknown conversation type. */
    Unknown = -1,
    /** Conversation type peer. */
    Peer = 0,
    /** Conversation type room. */
    Room = 1,
    /** Conversation type group. */
    Group = 2,
    /** Community channel conversation type. */
    CommunityChannel = 3
}
/** Identifies the SDK's state in syncing conversation list from server. */
export declare enum ZIMConversationSyncState {
    /** Conversation list synchronization start status */
    Started = 0,
    /** Conversation list synchronization completion status */
    Finished = 1,
    /** The synchronization of the conversation list failed. The synchronization failure may be caused by network reasons. */
    Failed = 2
}
/** When a user queries the session list, it serves as a filter item for the top session of the query. */
export declare enum ZIMConversationPinnedFilter {
    /** Both pinned and unpinned conversations can be queried. */
    All = 0,
    /** Only pinned conversations can be queried. */
    OnlyPinned = 1,
    /** Only unpinned conversations can be queried. */
    OnlyUnpinned = 2
}
/** Conversational search mode. */
export declare enum ZIMConversationSearchMode {
    /** Query the corresponding conversation by searching for messages that meet the criteria. */
    MatchMessage = 0,
    /** Query the corresponding conversation by searching for the conversation name. */
    MatchConversationName = 1
}
/** Media file type */
export declare enum ZIMMediaFileType {
    /** Original file type, suitable for original images, audio files, and video files. After calling [downloadMediaFile], the SDK will update the fileLocalPath property in ZIMFileMessage. */
    OriginalFile = 1,
    /** Large image type. After calling [downloadMediaFile], the SDK will update the largeImageLocalPath property in [ZIMImageMessage]. */
    LargeImage = 2,
    /** Image thumbnail type. After calling [downloadMediaFile], the SDK will update the thumbnailLocalPath property in [ZIMImageMessage]. */
    Thumbnail = 3,
    /** The type of the first frame of the video. After calling [downloadMediaFile], the SDK will update the videoFirstFrameLocalPath property in [ZIMVideoMessage]. */
    VideoFirstFrame = 4
}
/** the direction of the message. */
export declare enum ZIMMessageDirection {
    /** The message was sent by the local user. */
    Send = 0,
    /** The message was received by the local user. */
    Receive = 1
}
/** Message order. */
export declare enum ZIMMessageOrder {
    /** Represents message list in descending order (message list order is from new to old). */
    Descending = 0,
    /** Represents message list in ascending order (message list order is from old to new). */
    Ascending = 1
}
/** The priority of the message. */
export declare enum ZIMMessagePriority {
    /** Low priority. */
    Low = 1,
    /** Medium priority. */
    Medium = 2,
    /** High priority. */
    High = 3
}
/** . */
export declare enum ZIMMessageQueryMode {
    /** General mode. In this mode, the SDK automatically determines whether it needs to request merged message data from the server. This mode is recommended for most common scenarios. */
    General = 0,
    /** Server-priority query mode. */
    PreferServer = 1,
    /** Local-messages-only query mode. */
    OnlyLocal = 2
}
/** The status of the receipt */
export declare enum ZIMMessageReceiptStatus {
    /** Unknown receipt status. */
    Unknown = -1,
    /** Not a receipt. */
    None = 0,
    /** Receipt in progress. */
    Processing = 1,
    /** Receipt completed. */
    Done = 2,
    /** Receipt has expired. */
    Expired = 3,
    /** Receipt failed. */
    Failed = 4
}
/** Message revoke status */
export declare enum ZIMMessageRevokeStatus {
    /** Unknown revoke status. */
    Unknown = -1,
    /** The message was revoked by the sender. */
    SelfRevoke = 0,
    /** The message was revoked by the system. */
    SystemRevoke = 1,
    /** The message was revoked via the server API. */
    ServerAPIRevoke = 2,
    /** The message was revoked by a group administrator. */
    GroupAdminRevoke = 3,
    /** The message was revoked by the group owner. */
    GroupOwnerRevoke = 4,
    /** Revoked for audit reject. */
    AuditRejectRevoke = 5
}
/** The status of the message being sent. */
export declare enum ZIMMessageSentStatus {
    /** The message is being sent. */
    Sending = 0,
    /** The message was sent successfully. */
    Success = 1,
    /** The message failed to send. */
    Failed = 2
}
/** The type of the message. */
export declare enum ZIMMessageType {
    /** Unknown message. */
    Unknown = 0,
    /** Normal text message. */
    Text = 1,
    /** Custom binary message. */
    Command = 2,
    /** Multiple messages can be used to send multiple messages of text, rich media files, and custom messages. */
    Multiple = 10,
    /** Image message. */
    Image = 11,
    /** File message. */
    File = 12,
    /** Audio message. */
    Audio = 13,
    /** Video message. */
    Video = 14,
    /** Barrage message. */
    Barrage = 20,
    /** Reovked message. */
    Revoke = 31,
    /** Tips message. */
    Tips = 32,
    /** Combined message. */
    Combine = 100,
    /** Custom message. */
    Custom = 200
}
/** The type of the revoke message. */
export declare enum ZIMRevokeType {
    /** Unknown revoke type. */
    Unknown = -1,
    /** Two-way revoke: the message is deleted for both sender and recipient. */
    TwoWay = 0,
    /** One-way revoke: the message is deleted for the sender only. */
    OneWay = 1
}
/** Event of tips message. */
export declare enum ZIMTipsMessageEvent {
    /** Unknown tips message event. */
    Unknown = 0,
    /** The group was created. */
    GroupCreated = 1,
    /** The group was dismissed. */
    GroupDismissed = 2,
    /** A member joined the group. */
    GroupJoined = 3,
    /** A member was invited to join the group. */
    GroupInvited = 4,
    /** A member left the group. */
    GroupLeft = 5,
    /** A member was kicked out of the group. */
    GroupKickedOut = 6,
    /** The group information was changed. */
    GroupInfoChanged = 7,
    /** The group member information was changed. */
    GroupMemberInfoChanged = 8,
    /** A group message was pinned. */
    GroupMessagePinned = 9,
    /** The community was created. */
    CommunityCreated = 101,
    /** A member joined the community. */
    CommunityJoined = 103,
    /** A member was invited to join the community. */
    CommunityInvited = 104,
    /** A community channel was created. */
    CommunityChannelCreated = 151
}
/** Type of additional information for tips messages. */
export declare enum ZIMTipsMessageChangeInfoType {
    /** Unknown change info type. */
    Unknown = 0,
    /** Group name, group avatar, and group notice have multiple changes. */
    GroupDataChanged = 1,
    /** Group notice change event. */
    GroupNoticeChanged = 2,
    /** Group name change event. */
    GroupNameChanged = 3,
    /** Group avatar change event. */
    GroupAvatarUrlChanged = 4,
    /** Group mute info change event. */
    GroupMuteChanged = 5,
    /** Group owner transfer event. */
    GroupOwnerTransferred = 10,
    /** Group member role change event. */
    GroupMemberRoleChanged = 11,
    /** The group member mute status changed. */
    GroupMemberMuteChanged = 12,
    /** Group messages are pinned or unpinned event. */
    GroupMessagePinInfoChanged = 21
}
/** The type of the revoke message. */
export declare enum ZIMMessageMentionedType {
    /** Unknown mention type. */
    Unknown = 0,
    /** mention me */
    MentionMe = 1,
    /** mention all user */
    MentionAll = 2,
    /** mention all user and mention me */
    MentionAllAndMe = 3
}
/** Message deleted type */
export declare enum ZIMMessageDeleteType {
    /** Selected messages were deleted. */
    MessageListDeleted = 0,
    /** All messages in the conversation were deleted. */
    ConversationAllMessagesDeleted = 1,
    /** All messages across all conversations were deleted. */
    AllConversationMessagesDeleted = 2
}
/** The state of the source message to be replied. */
export declare enum ZIMMessageRepliedInfoState {
    /** normal state. */
    Normal = 0,
    /** deleted state. */
    Deleted = 1,
    /** Not found. The original message may have expired on the server or is not visible to the current user. */
    NotFound = 2
}
/** Enumeration of message pinned status. */
export declare enum ZIMMessagePinStatus {
    /** The message is not pinned. */
    NotPinned = 0,
    /** The message is pinned. */
    Pinned = 1,
    /** The message pin status was updated. */
    Updated = 2
}
/** User operation action for message reactions. */
export declare enum ZIMMessageReactionUserChangeAction {
    /** Add message reaction. */
    Added = 0,
    /** Delete message reaction. */
    Deleted = 1
}
/** The event that caused the room connection status to change. */
export declare enum ZIMRoomEvent {
    /** Success. */
    Success = 0,
    /** The network in the room is temporarily interrupted. */
    NetworkInterrupted = 1,
    /** The network in the room is disconnected. */
    NetworkDisconnected = 2,
    /** The room not exist. */
    RoomNotExist = 3,
    /** The user actively creates a room. */
    ActiveCreate = 4,
    /** Failed to create room. */
    CreateFailed = 5,
    /** The user starts to enter the room. */
    ActiveEnter = 6,
    /** user failed to enter the room. */
    EnterFailed = 7,
    /** user was kicked out of the room. */
    KickedOut = 8,
    /** The connection to the room timed out. */
    ConnectTimeout = 9,
    /** Multi-device logins into the same room will result in the user being kicked out of the room. */
    KickedOutByOtherDevice = 10,
    /** Switch room. */
    ActiveSwitch = 11,
    /** Switch room failed. */
    SwitchFailed = 12
}
/** Used to indicate the user's connection status to the room. */
export declare enum ZIMRoomState {
    /** Indicates that the connection to the room is interrupted, and the [createRoom], [joinRoom], and [enterRoom] fails. If the network is disconnected for a long time, the heartbeat of the room times out, the background notifies the user that he has been kicked out of the room, or the logout will throw this status. */
    Disconnected = 0,
    /** connecting indicates that the connection between a room and a room is in the connecting state. When the create, join, or enter room connection is not returned, this state is thrown when the network is disconnected. */
    Connecting = 1,
    /** connected indicates that the device is properly connected to the room. If create, join, or enter room succeeds, the state will be thrown if the network is disconnected and the room heartbeat does not time out. */
    Connected = 2
}
/** Room attributes update action. */
export declare enum ZIMRoomAttributesUpdateAction {
    /** Set action. */
    Set = 0,
    /** Delete the room attributes. */
    Delete = 1
}
/** The action type for room member attribute updates. */
export declare enum ZIMRoomMemberAttributesUpdateAction {
    /** Set the room member attributes. */
    Set = 0
}
/** group status. */
export declare enum ZIMGroupState {
    /** The local user has left the group. */
    Quit = 0,
    /** The local user has entered the group. */
    Enter = 1
}
/** Group events. */
export declare enum ZIMGroupEvent {
    /** Unknown event. */
    Unknown = -1,
    /** The group was created. */
    Created = 1,
    /** The group was dismissed. */
    Dismissed = 2,
    /** A member joined the group. */
    Joined = 3,
    /** A member was invited to join the group. */
    Invited = 4,
    /** A member left the group. */
    Left = 5,
    /** A member was kicked out of the group. */
    KickedOut = 6
}
/** Group member events. */
export declare enum ZIMGroupMemberEvent {
    /** Unknown event. */
    Unknown = -1,
    /** A member joined the group. */
    Joined = 1,
    /** A member left the group. */
    Left = 2,
    /** A member was kicked out of the group. */
    KickedOut = 4,
    /** A member was invited to join the group. */
    Invited = 5
}
/** group membership status. */
export declare enum ZIMGroupMemberState {
    /** The member has left the group. */
    Quit = 0,
    /** The member has entered the group. */
    Enter = 1
}
/** Enumeration of group notification status. */
export declare enum ZIMGroupMessageNotificationStatus {
    /** Message notifications are enabled. */
    Notify = 1,
    /** Do not disturb mode is enabled. */
    DoNotDisturb = 2
}
/** Group attributes update action. */
export declare enum ZIMGroupAttributesUpdateAction {
    /** Set action. */
    Set = 0,
    /** Delete the group attributes. */
    Delete = 1
}
/** Group mute mode. */
export declare enum ZIMGroupMuteMode {
    /** Unmute. */
    None = 0,
    /** Group normal members mute mode. */
    Normal = 1,
    /** Group all members mute mode. */
    All = 2,
    /** Customize group mute mode */
    Custom = 3
}
/** Verification mode for joining the group. */
export declare enum ZIMGroupJoinMode {
    /** Anyone can join the group directly. */
    Any = 0,
    /** Requires group owner or administrator approval. */
    Auth = 1,
    /** Joining the group is prohibited. */
    Forbid = 2
}
/** Verification mode for invite to the group. */
export declare enum ZIMGroupInviteMode {
    /** Everyone in the group can invite. */
    Any = 0,
    /** Only group owners or administrators can invite. */
    Admin = 1
}
/** Verification mode for being invited to the group. */
export declare enum ZIMGroupBeInviteMode {
    /** The invitees enter the group directly. */
    None = 0,
    /** The invitee's consent is required to join the group. */
    Auth = 1
}
/** Group enter type. */
export declare enum ZIMGroupEnterType {
    /** Unknown enter type. */
    Unknown = 0,
    /** The user created the group. */
    Created = 1,
    /** The user joined the group via an application. */
    JoinApply = 2,
    /** The user actively joined the group. */
    Joined = 3,
    /** The user was invited to join the group. */
    Invited = 4,
    /** The user joined the group via invitation application. */
    InviteApply = 5
}
/** Group application type. */
export declare enum ZIMGroupApplicationType {
    /** Unknown group application type. */
    Unknown = -1,
    /** None. */
    None = 0,
    /** Join type. */
    Join = 1,
    /** Invite type. */
    Invite = 2,
    /** Be invite type. */
    BeInvite = 3
}
/** Group application state. */
export declare enum ZIMGroupApplicationState {
    /** Unknown group application state. */
    Unknown = -1,
    /** Awaiting response. */
    Waiting = 1,
    /** Accepted. */
    Accepted = 2,
    /** Rejected. */
    Rejected = 3,
    /** Expired. */
    Expired = 4,
    /** Disabled */
    Disabled = 5
}
/** Group  application list update action. */
export declare enum ZIMGroupApplicationListChangeAction {
    /** Add action. */
    Added = 0
}
/** Call invitation mode. */
export declare enum ZIMCallInvitationMode {
    /** Unknown type, as a guaranteed enumeration value. */
    Unknown = -1,
    /** general. */
    General = 0,
    /** advanced */
    Advanced = 1
}
/** call status. */
export declare enum ZIMCallState {
    /** Unknown call state. */
    Unknown = -1,
    /** The call has started. */
    Started = 1,
    /** The call has ended. */
    Ended = 2
}
/** Call user status. */
export declare enum ZIMCallUserState {
    /** unknown */
    Unknown = -1,
    /** inviting. */
    Inviting = 0,
    /** accepted. */
    Accepted = 1,
    /** rejected. */
    Rejected = 2,
    /** cancelled. */
    Cancelled = 3,
    /** received. */
    Received = 5,
    /** timeout. */
    Timeout = 6,
    /** quit. */
    Quit = 7,
    /** ended. */
    Ended = 8,
    /** Not received. */
    NotYetReceived = 9,
    /** Be cancelled. */
    BeCancelled = 10
}
/** User type. */
export declare enum ZIMUserInfoType {
    /** Basic user type. */
    BasicUser = 1,
    /** Room member type. */
    RoomMember = 2,
    /** Group member type. */
    GroupMember = 3,
    /** Group member brief info type. */
    GroupSimpleMember = 4,
    /** Friend type. */
    Friend = 5,
    /** Community member type. */
    CommunityMember = 6,
    /** Community member brief info type. */
    CommunitySimpleMember = 7
}
/** friend list update action. */
export declare enum ZIMFriendListChangeAction {
    /** Add action. */
    Added = 0,
    /** Delete action. */
    Deleted = 1
}
/** friend  application list update action. */
export declare enum ZIMFriendApplicationListChangeAction {
    /** Add action. */
    Added = 0,
    /** Delete action. */
    Deleted = 1
}
/** Friend application type. */
export declare enum ZIMFriendApplicationType {
    /** Unknown friend application type. */
    Unknown = -1,
    /** Friend application type none. */
    None = 0,
    /** Applications received. */
    Received = 1,
    /** Application sent. */
    Sent = 2,
    /** Both parties sent friend applications to each other. */
    Both = 3
}
/** Friend application state. */
export declare enum ZIMFriendApplicationState {
    /** Unknown friend application state. */
    Unknown = -1,
    /** Awaiting response. */
    Waiting = 1,
    /** Accepted. */
    Accepted = 2,
    /** Rejected. */
    Rejected = 3,
    /** The friend application has expired. */
    Expired = 4,
    /** The friend application is disabled. */
    Disabled = 5
}
/** Check the friend relationship type. */
export declare enum ZIMFriendRelationCheckType {
    /** Check the friend relationship from both sides. */
    Both = 0,
    /** Check the friend relationship from one side only. */
    Single = 1
}
/** Delete friend type. */
export declare enum ZIMFriendDeleteType {
    /** Delete the friend from both sides. */
    Both = 0,
    /** Delete the friend from one side only. */
    Single = 1
}
/** Friend relationship type. */
export declare enum ZIMUserRelationType {
    /** Unknown relation type. */
    Unknown = 0,
    /** No friendship from the user's perspective. */
    SingleNo = 1,
    /** Friendship exists from the user's perspective. */
    SingleHave = 2,
    /** No friendship from either side. */
    BothAllNo = 3,
    /** The user has added the other as a friend, but not vice versa. */
    BothSelfHave = 4,
    /** The other party has added the user as a friend, but not vice versa. */
    BothOtherHave = 5,
    /** Both parties are friends with each other. */
    BothAllHave = 6
}
/** blacklist update action. */
export declare enum ZIMBlacklistChangeAction {
    /** Add action. */
    Added = 0,
    /** Removed action. */
    Removed = 1
}
/** Type of contact information for the VoIP initiator. */
export declare enum ZIMCXHandleType {
    /** Generic handle type. */
    Generic = 1,
    /** Phone number handle type. */
    PhoneNumber = 2,
    /** Email address handle type. */
    EmailAddress = 3
}
/** Geofencing type. */
export declare enum ZIMGeofencingType {
    /** The default type. */
    None = 0,
    /** Federated mode. */
    Include = 1,
    /** Exclusion mode. */
    Exclude = 2
}
/** Platform on which the SDK runs. */
export declare enum ZIMPlatformType {
    /** Windows. */
    Win = 1,
    /** iOS. */
    IPhoneOS = 2,
    /** Android. */
    Android = 3,
    /** MacOS. */
    MacOS = 4,
    /** Linux. */
    Linux = 5,
    /** Web. */
    Web = 6,
    /** Mini program. */
    MiniProgram = 7,
    /** iPad. */
    IPadOS = 9,
    /** HarmonyOS (OHOS) platform. */
    OHOS = 10,
    /** Platforms not mentioned above. */
    Unknown = 32
}
/** User online status. */
export declare enum ZIMUserOnlineStatus {
    /** Online. The user is in this state when the user is logged in and the network status is good. */
    Online = 0,
    /** Offline. The user does not call logout to actively logout because the network is disconnected, the app is killed, the background is withdrawn, and the screen is locked. The user will be in this state after the long background link is disconnected. */
    Offline = 1,
    /** Log out. User active logout will be in this state. */
    Logout = 2,
    /** Unknown status. Guaranteed enumeration. */
    Unknown = 99
}
/** The action type for list changes. */
export declare enum ZIMListChangeAction {
    /** An item was added. */
    Added = 0,
    /** An item was deleted. */
    Deleted = 1
}
/** The action type for community list changes. */
export declare enum ZIMCommunityListChangeAction {
    /** A community was added. */
    Added = 0,
    /** A community was deleted. */
    Deleted = 1,
    /** A community was updated. */
    Updated = 2
}
/** The enter type for community members. */
export declare enum ZIMCommunityMemberEnterType {
    /** Unknown enter type. */
    Unknown = 0,
    /** The member joined when the community was created. */
    CommunityCreated = 1,
    /** The member actively joined the community. */
    CommunityJoined = 2,
    /** The member was invited to join the community. */
    CommunityInvited = 3
}
/** The state change type for community members. */
export declare enum ZIMCommunityMemberChangeState {
    /** The member exited the community. */
    Exited = 0,
    /** The member entered the community. */
    Entered = 1
}
/** The action type for community member status changes. */
export declare enum ZIMCommunityMemberChangeAction {
    /** Unknown action. */
    Unknown = 0,
    /** The member actively joined the community. */
    Joined = 1,
    /** The member was invited to join the community. */
    Invited = 2,
    /** The member actively left the community. */
    Left = 3,
    /** The member was kicked out of the community. */
    KickedOut = 4
}
/** The type of community channel. */
export declare enum ZIMCommunityChannelType {
    /** Unknown channel. */
    Unknown = -1,
    /** Default channel, automatically created when the community is created. */
    General = 0,
    /** Public channel, visible to all members of the community. */
    Public = 1,
    /** Private channel, visible only to specific members. */
    Private = 2
}
/** The action type for community channel list changes. */
export declare enum ZIMCommunityChannelListChangeAction {
    /** A community channel was added. */
    Added = 0,
    /** A community channel was deleted. */
    Deleted = 1,
    /** A community channel was updated. */
    Updated = 2
}
/** The mute mode for community channels. */
export declare enum ZIMCommunityChannelMuteMode {
    /** No mute mode. */
    None = 0,
    /** Normal mute mode; only administrators and the owner can speak. */
    Normal = 1,
    /** All members are muted. */
    All = 2,
    /** Custom mute mode. */
    Custom = 3
}
/** The mute type for community members. */
export declare enum ZIMCommunityMemberMuteType {
    /** Not muted. */
    None = 0,
    /** Muted at the community level. */
    Community = 1,
    /** Muted at the community channel level. */
    Channel = 2
}
/** The notification status for community messages. */
export declare enum ZIMCommunityMessageNotificationStatus {
    /** Message notifications are enabled. */
    Notify = 1,
    /** Do not disturb mode is enabled. */
    DoNotDisturb = 2
}
/** Community member role */
export declare enum ZIMCommunityMemberRole {
    /** Community Owner. */
    Owner = 1,
    /** Community Admin. */
    Admin = 2,
    /** Community Member. */
    Member = 3
}
/**
 * Error infomation
 *
 * Description: Error infomation.
 */
export interface ZIMError {
    /** Description: The storage path of the log files. Refer to the official website document for the default path. */
    code: ZIMErrorCode;
    /** Description: Error infomation description. */
    message: string;
}
/**
 * ZIM application configuration, including AppID and AppSign.
 */
export interface ZIMAppConfig {
    /** Description:AppID, please go to the ZEGO official website console to apply for it. Required: Required. */
    appID: number;
}
/**
 * Log configuration
 *
 * Description: Configure the storage path of log files and the maximum log file size.
 */
export interface ZIMLogConfig {
    logLevel: 'debug' | 'info' | 'warn' | 'error' | 'report' | 'disable';
}
/**
 * User information object.
 *
 * Description: Identifies a unique user.
 * Caution: Note that the userID must be unique under the same appID, otherwise mutual kicks out will occur. It is strongly recommended that userID corresponds to the user ID of the business APP, that is, a userID and a real user are fixed and unique, and should not be passed to the SDK in a random userID. Because the unique and fixed userID allows ZEGO technicians to quickly locate online problems.
 */
export interface ZIMUserInfo {
    /** User ID, a string with a maximum length of 32 bytes or less. It is customized by the developer. Only support numbers, English characters and  '!', '#', '$', '%', '&', '(', ')', '+', '-', ':', ';', '<', '=', '.', '>', '?', '@', '[', ']', '^', '_', '{', '}', '|', '~'. */
    userID: string;
    /** Description: User name, defined by you. For version 2.0.0 and onwards, the string has a maximum length of 256 bytes.Required: Not required.Privacy reminder: Please do not provide sensitive personal information, including but not limited to mobile phone numbers, ID card numbers, passport numbers, and real names. */
    userName: string;
    /** User avatar URL */
    userAvatarUrl: string;
    /** User extended data. This field is currently only available in room related interfaces. */
    userExtendedData: string;
    /** User Type. This field is used to identify which subclass the current entity belongs to. */
    type: ZIMUserInfoType;
}
/**
 * User full information object.
 *
 * Description: Identifies a unique user.
 * Caution: Note that the userID must be unique under the same appID, otherwise mutual kicks out will occur. It is strongly recommended that userID corresponds to the user ID of the business APP, that is, a userID and a real user are fixed and unique, and should not be passed to the SDK in a random userID. Because the unique and fixed userID allows ZEGO technicians to quickly locate online problems.
 */
export interface ZIMUserFullInfo {
    /** Description: User basic information. */
    baseInfo: ZIMUserInfo;
}
/**
 * Data class of the user's offline push rule.
 *
 * Description: Data class of the user's offline push rule.
 */
export interface ZIMUserOfflinePushRule {
    /** With the data in the class member variables notToReceiveOfflinePushPlatforms collocation is used. OnlinePlatforms specified platform, online notToReceiveOfflinePushPlatforms specified platform will not receive offline push. */
    onlinePlatforms: ZIMPlatformType[];
    /** With the data in the class member variables onlinePlatforms collocation is used. OnlinePlatforms specified platform, online notToReceiveOfflinePushPlatforms specified platform will not receive offline push. */
    notToReceiveOfflinePushPlatforms: ZIMPlatformType[];
}
/**
 * User rule configuration.
 */
export interface ZIMUserRule {
    /** The user's current rule information. */
    offlinePushRule: ZIMUserOfflinePushRule;
}
/**
 * User status data
 *
 * Description: Contains data about the user's online status.
 */
export interface ZIMUserStatus {
    /** A unique identifier for a single user. */
    userID: string;
    /** Enumeration that represents the current online status of the user. */
    onlineStatus: ZIMUserOnlineStatus;
    /** The list of online platforms of the current user can be used to display the online platforms of the user, such as iPhone online and PC online. Please refer to ZIMPlatform for the meanings of the numbers. */
    onlinePlatforms: ZIMPlatformType[];
    /** User-defined status. The default maximum value is 64 bytes. The default expiration time is 1 day. At login, if the field is an empty string (which is the default), the current user's custom state is not modified. */
    customStatus: string;
    /** Expired timestamp of the custom status. */
    customStatusExpiredTime: number;
    /** Timestamp when user onlineStatus or customStatus was last changed, whichever is the greater. */
    lastUpdateTime: number;
    /** The timestamp of the last change of the user onlineStatus, which can be used to show that the user was offline/logged in before xxx minutes. */
    lastOnlineStatusUpdateTime: number;
    /** The timestamp when User customStatus was last changed, which can be used to show when the custom status was last changed. */
    lastCustomStatusUpdateTime: number;
}
/**
 * User status subscription information. Contains the user's online status, a list of online platforms, subscription expiration time stamps, and more.
 *
 * Available since: 2.18.0
 * Description: User status subscription information. Contains the user's online status, a list of online platforms, subscription expiration time stamps, and more.
 */
export interface ZIMUserStatusSubscription {
    /** The online status of the user. */
    userStatus: ZIMUserStatus;
    /** The timestamp when the user's subscription expired. */
    subscribeExpiredTime: number;
}
/**
 * Carry user information and rules of the current user.
 *
 * Description: Carry user information and rules of the current user.
 */
export interface ZIMSelfUserInfo {
    /** Personal information of the current user. */
    userFullInfo: ZIMUserFullInfo;
    /** Rules for the current user, setting information. */
    userRule: ZIMUserRule;
    /** The online status of the user. */
    userStatus: ZIMUserStatus;
}
/**
 * subscribeUsersStatus Configuration items of the online status interface for subscribing users in batches.
 *
 * Description: subscribeUsersStatus Configuration items of the online status interface for subscribing users in batches.
 */
export interface ZIMUserStatusSubscribeConfig {
    /** Subscription duration, in minutes. */
    subscriptionDuration: number;
}
/**
 * QuerySubscribedUserStatusList query subscription list interface configuration items.
 *
 * Description: QuerySubscribedUserStatusList query subscription list interface configuration items.
 */
export interface ZIMSubscribedUserStatusQueryConfig {
    /** List of user IDs to query. */
    userIDs: string[];
}
/**
 * User custom status update configuration.
 *
 * Available since: 2.29.0 and above.
 * Description: Update user custom status parameters.
 */
export interface ZIMUserCustomStatusUpdateConfig {
    /** Duration of user custom status. */
    duration: number;
}
/**
 * Error user information class.
 *
 * Description: Used to show the failed user and the reason for the failure.
 */
export interface ZIMErrorUserInfo {
    /** User ID, a string with a maximum length of 32 bytes or less. It is customized by the developer. Only support numbers, English characters and '!', '#', '$', '%', '&', '(', ')', '+', '-', ':', ';', '<', '=', '.', '>', '?', '@', '[', ']', '^', '_', '{', '}', '|', '~'. */
    userID: string;
    /** Description Reason for the query failure. */
    reason: number;
}
/**
 * Configuration of login-related parameters.
 *
 * Available since: 2.13.0 and above.
 * Description: Login-related parameters.
 * Use cases: Used to set different parameters during login.
 */
export interface ZIMLoginConfig {
    /** Description: User name.Use cases: Used in the scenario where user nickname is modified during login, leave it blank if no change is needed.Required: No. */
    userName: string;
    /** Description: Token carried during login.Use cases: Only pass this parameter in the scenario where token is used for authentication.Required: No. */
    token: string;
    /** Description: Whether it is offline login.Use cases: Set this parameter to true when performing offline login.Required: No.Default value: false. */
    isOfflineLogin: boolean;
    /** Description: Custom status.Use cases: Only pass this parameter when you need to customize the user status during login.Required: No. */
    customStatus: string;
    /** Description: Expired duration of the custom status. */
    customStatusDuration: number;
}
/**
 * Configuration of logout-related parameters.
 *
 * Available since: 2.28.0 and later.
 * Description: Parameters related to logout.
 * Use cases: Used to configure specific behaviors during logout.
 */
export interface ZIMLogoutConfig {
    /** Whether to clear the current user’s local DB data when logging out. Default: [false]. */
    isClearDB: boolean;
}
/**
 * User information query configuration.
 *
 * Description: User information query configuration, you can choose to query from the local or from the server. Query the unlimited frequency constraints from the local, and query the limited frequency constraints from the server. You can only query the detailed configuration of 10 users within 10 s.
 */
export interface ZIMUsersInfoQueryConfig {
    /** Detail description: Whether to query user details from the server. Query the unlimited frequency constraints from the local, and query the limited frequency constraints from the server. You can only query the detailed configuration of 10 users within 10 s.Required: not required.Default: false. */
    isQueryFromServer: boolean;
}
/**
 * The private message template is currently only applicable to the OPPO manufacturer.
 *
 * Description: According to [OPUSH DMS template check ability to access instructions](https://open.oppomobile.com/documentation/page/info?id=12391), OPPO in new message classification on the basis of the new push DMS templates, After you have configured the private message template in the OPPO console, if you need to apply the corresponding template during push notifications, you can assign a value to the privateMessageTemplate in ZIMPushConfig.
 */
export interface ZIMOfflinePushPrivateMessageTemplate {
    /** Description: The private message template ID is currently only applicable to OPPO manufacturers. Please fill in the template ID preset in the OPPO Open Platform console. */
    templateID: string;
    /** Description: To replace the content of the preset title field in the template, a json string needs to be filled in, such as "{"user_name":" Li Hua "}". */
    titleParameters: string;
    /** Description: To replace the content of the preset fields in the template, a json string needs to be filled in, such as "{"city":" Shenzhen "}". */
    contentParameters: string;
}
/**
 * Provides information about the iOS VoIP offline push.
 *
 * Description: Provides information about the iOS VoIP offline push.
 */
export interface ZIMVoIPConfig {
    /** Description: The type of contact information for the VoIP caller, by default, is generic. */
    iOSVoIPHandleType: ZIMCXHandleType;
    /** Description: The contact information of the VoIP caller. It is related to iOSVoIPHandleType. When iOSVoIPHandleType is PhoneNumber, the Value is a sequence of digits; when iOSVoIPHandleType is EmailAddress, the Value is an email address; when the contact information is of other types, the Value typically follows some domain-specific format, such as a username, numeric ID, or URL. */
    iOSVoIPHandleValue: string;
    /** Description: Video call or not. The default value is audio */
    iOSVoIPHasVideo: boolean;
}
/**
 * Description: Offline push configuration.
 *
 * Description: Configuration before sending offline push.
 */
export interface ZIMPushConfig {
    /** Description: Used to set the push title.Required: Not required. */
    title: string;
    /** Description: Used to set offline push content.Required: Not required. */
    content: string;
    /** Description: This parameter is used to set the pass-through field of offline push.Required: Not required. */
    payload: string;
    /** Description: Offline push advanced configuration for mapping console Settings, with the maximum of 32 characters and defined by yourself.Required: Not required. */
    resourcesID: string;
    /** Description: Used to set the thread ID of offline push.Required: Not required. */
    threadID: string;
    /** Description: Push whether to carry corner information switch. */
    enableBadge: boolean;
    /** Description: The incremental index number carried by the push. */
    badgeIncrement: number;
    /** Description: If you use Flutter, RN ZPNs, offline push receiving device has iOS and uses VoIP push type, you can customize some VoIP options with this parameter. */
    voIPConfig?: ZIMVoIPConfig;
    /** Description: If you use OPPO Push, you can carry the push template through this field. */
    privateMessageTemplate?: ZIMOfflinePushPrivateMessageTemplate;
}
/**
 * Add configuration for message reactions.
 *
 * Description: Configuration class for adding message reactions.
 */
export interface ZIMMessageReactionAddConfig {
    /** Description: When this value is greater than 0, the same user is allowed to react multiple times with the same reaction type, and the counts from those reactions will be accumulated. */
    increaseCount: number;
}
/**
 * reaction user information.
 *
 * Description: A class describing reaction user.
 */
export interface ZIMMessageReactionUserInfo {
    /** Description: user ID */
    userID: string;
}
/**
 * message reaction infos
 *
 * Description: message reaction infos.
 */
export interface ZIMMessageReaction {
    /** Description: Type of reaction, defined by you, with a maximum length of 32 bytes. */
    reactionType: string;
    /** Description: conversationID. */
    conversationID: string;
    /** Description: conversation type. */
    conversationType: ZIMConversationType;
    /** Detail description: reaction message ID. */
    messageID: string;
    /** Detail description: message sequence. */
    messageSeq: number;
    /** Description: The reaction users number. */
    totalCount: number;
    /** Description:  The reaciton users if included myself. */
    isSelfIncluded: boolean;
    /** Description:  Reaction user info list. */
    userList: ZIMMessageReactionUserInfo[];
    /** Detailed description: The sum count of reaction. */
    sumCount: number;
}
/**
 * message reaction infos
 *
 * Description: message reaction infos.
 */
export interface ZIMMessageReactionSimpleInfo {
    /** Description: Type of reaction, defined by you, with a maximum length of 32 bytes. */
    reactionType: string;
    /** Detailed description: The sum count of reaction. */
    sumCount: number;
}
/**
 * message reaction user full information.
 *
 * Description: A class describing reaction user.
 */
export interface ZIMMessageReactionUserFullInfo {
    /** Description: user ID */
    userID: string;
    /** Description: A list of summary information for the current user’s reactions under this message. */
    reactions: ZIMMessageReactionSimpleInfo[];
}
/**
 * User operation change information for message reactions.
 *
 * Description: A class that describes reaction change information.
 */
export interface ZIMMessageReactionUserChangeInfo {
    /** user ID. */
    userID: string;
    /** Type of reaction, defined by you, with a maximum length of 32 bytes. */
    reactionType: string;
    /** reaction change action. */
    action: ZIMMessageReactionUserChangeAction;
    /** Description: The sum count for the current reaction type. */
    sumCount: number;
}
/**
 * Base class of message lite info object.
 *
 * Description: Identifies the basic parameters of a message.
 */
export interface ZIMMessageLiteInfo {
    /** Description: Message type. */
    type: ZIMMessageType;
}
/**
 * Normal text message lite info object.
 */
export interface ZIMTextMessageLiteInfo extends ZIMMessageLiteInfo {
    /** Description: Text message content. */
    message: string;
    type: ZIMMessageType.Text;
}
/**
 * Custom message lite information.
 */
export interface ZIMCustomMessageLiteInfo extends ZIMMessageLiteInfo {
    /** Description: Custom message content. */
    message: string;
    /** Description: Custom message search content. */
    searchedContent: string;
    /** Description: Custom message sub-type. */
    subType: number;
    type: ZIMMessageType.Custom;
}
/**
 * Base class for combine message lite info objects.
 */
export interface ZIMCombineMessageLiteInfo extends ZIMMessageLiteInfo {
    /** Description: Combine message title. */
    title: string;
    /** Description: Combine message summary. */
    summary: string;
    type: ZIMMessageType.Combine;
}
/**
 * Base class for revoke message lite info objects.
 */
export interface ZIMRevokeMessageLiteInfo extends ZIMMessageLiteInfo {
    type: ZIMMessageType.Revoke;
}
/**
 * Base class for media message lite info objects.
 */
export interface ZIMMediaMessageLiteInfo extends ZIMMessageLiteInfo {
    /** Description: Media file size. */
    fileSize?: number;
    /** Description: Media file name. */
    fileName?: string;
    /** Description: Media file local path. */
    fileLocalPath?: File;
    /** Description: Media file download address. */
    fileDownloadUrl?: string;
}
/**
 * Image message lite information.
 */
export interface ZIMImageMessageLiteInfo extends ZIMMediaMessageLiteInfo {
    /** Description: Original image width. */
    originalImageWidth?: number;
    /** Description: Original image height. */
    originalImageHeight?: number;
    /** Description: Large image width. */
    largeImageWidth?: number;
    /** Description: Large image height. */
    largeImageHeight?: number;
    /** Description: Large image download address. */
    largeImageDownloadUrl?: string;
    /** Description: Thumbnail image width. */
    thumbnailWidth?: number;
    /** Description: Thumbnail image height. */
    thumbnailHeight?: number;
    /** Description: Thumbnail image download address. */
    thumbnailDownloadUrl?: string;
    type: ZIMMessageType.Image;
}
/**
 * File message lite information.
 */
export interface ZIMFileMessageLiteInfo extends ZIMMediaMessageLiteInfo {
    type: ZIMMessageType.File;
}
/**
 * Audio message lite information.
 */
export interface ZIMAudioMessageLiteInfo extends ZIMMediaMessageLiteInfo {
    /** Description: Audio duration. */
    audioDuration: number;
    type: ZIMMessageType.Audio;
}
/**
 * Video message lite information.
 */
export interface ZIMVideoMessageLiteInfo extends ZIMMediaMessageLiteInfo {
    /** Description: Video duration. */
    videoDuration: number;
    /** Description: Video first frame width. */
    videoFirstFrameWidth: number;
    /** Description: Video first frame height. */
    videoFirstFrameHeight?: number;
    /** Description: Video first frame download address. */
    videoFirstFrameDownloadUrl?: string;
    type: ZIMMessageType.Video;
}
/**
 * Multiple messages lite information.
 */
export interface ZIMMultipleMessageLiteInfo extends ZIMMessageLiteInfo {
    /** Description: Message list. */
    messageInfoList: ZIMMessageLiteInfo[];
    type: ZIMMessageType.Multiple;
}
/**
 * The reply message refers to the information of the source message.
 */
export interface ZIMMessageRepliedInfo {
    /** Description: Message replied state. */
    state: ZIMMessageRepliedInfoState;
    /** Description: Replied message lite information. */
    messageInfo: ZIMMessageLiteInfo;
    /** Description: Sender user ID of the replied message. */
    senderUserID: string;
    /** Description: Sent time of the replied message. */
    sentTime: number;
    /** Description: ID of the replied message. */
    messageID: string;
    /** Description: Sequence number of the replied message. */
    messageSeq: number;
}
/**
 * Base class of message object
 *
 * Description: Identifies the basic parameters of a message.
 * Caution: Some of the parameters, such as Message ID, only have values ​​during the callback. Developers do not need to assign values ​​to these parameters when they actively create this object for sending messages.
 */
export interface ZIMMessage {
    /** Identifies the type of this message. */
    type: ZIMMessageType;
    /** Description: The unique ID that identifies this message.Use cases: Can be used to index other messages.Caution: When the developer actively creates a message, there is no need to modify this parameter.This parameter only has a value during callback. */
    messageID?: string;
    /** Description: SDK locally generated MessageID, developers do not need to pay attention to. */
    localMessageID?: string;
    /** Description: The sequence number of the message. */
    messageSeq?: number;
    /** Description：Displays the userID of the sender of this message. */
    senderUserID?: string;
    /** Description: Conversation ID. Ids of the same conversation type are unique. */
    conversationID?: string;
    /** Description: The type of conversation to which the message belongs. */
    conversationType?: ZIMConversationType;
    /** Description: Used to describe whether a message is sent or received. */
    direction?: ZIMMessageDirection;
    /** Description: Describes the sending status of a message. */
    sentStatus?: ZIMMessageSentStatus;
    /** Description: Identifies the sending time of a messageUse cases: Used to present the sending time of a message, and can be used for message sorting.Caution: This is a standard UNIX timestamp, in milliseconds. */
    timestamp?: number;
    /** Description:The larger the orderKey, the newer the message, and can be used for ordering messages. */
    orderKey?: number;
    /** Detail description: Describes whether the message is a message inserted by the developer through [insertMessageToLocalDB].Default: false. */
    isUserInserted?: boolean;
    /** Detailed Description: Describe the receipt status of the messageBusiness scenario: used to determine the status of the current message in the receipt message */
    receiptStatus?: ZIMMessageReceiptStatus;
    /** Description: message extension field Use cases: You can add extended fields to the message and send it to the peer Required: no Caution:the length is 1k, you can contact technical support for configuration Available since: 2.6.0 or higher */
    extendedData?: string;
    /** Description:  The expandable message field visible only on this end can store additional information locally, Through [updateMessageLocalExtendedData] change and currently has a length limit of 128K. If you have special requirements, please contact ZEGO technical support for configuration. */
    localExtendedData?: string;
    /** Description: Message statement list, which can carry data strongly related to users such as emoji expressions and voting information. */
    reactions?: ZIMMessageReaction[];
    /** Description: Whether the message is pushed by all employees. Required: Internal assignment. */
    isBroadcastMessage?: boolean;
    /** Description: Whether to mention everyone. It can be presented as "@User". Use cases: For example, it can be used in sending messages. Required: No. Caution: This value does not add the "@User" to the message text. Developers need to implement it themselves. Available since: 2.14.0 or above */
    mentionedUserIDs?: string[];
    /** Description: Whether to mention everyone. It can be presented as "@Everyone". Use cases: For example, it can be used in groups or rooms. Required: No. Default value: false. Recommended value: Set to true if you need to mention everyone. Caution: This value does not add the "@Everyone" to the message text. Developers need to implement it themselves. Available since: 2.14.0 or above */
    isMentionAll?: boolean;
    /** Description: Message reply information. */
    repliedInfo?: ZIMMessageRepliedInfo;
    /** Description: Root replied count. */
    rootRepliedCount?: number;
    /** Whether the message was sent by the server. */
    isServerMessage?: boolean;
    /** Description: The userID of the message editor. */
    editorUserID?: string;
    /** Description: The time of message editing. */
    editedTime?: number;
    /** Indicates whether the message is a group-targeted message. */
    isGroupTargetedMessage?: boolean;
    /** Description: The userID of the message pinner. */
    pinnedUserID?: string;
    /** Description: The time of message pinning. */
    pinnedTime?: number;
}
/**
 * Base class for media message objects.
 *
 * Description: Identifies a media message.
 * Caution: This base class is the basis of all media messages and contains the properties required by media messages.
 */
export interface ZIMMediaMessage extends ZIMMessage {
    /** Detail description: The local path of the media message. Required: If a local file is sent, this parameter must be set by the sender. Otherwise, the message fails to be sent. */
    fileLocalPath?: File;
    /** Detail description: The external download url of the media message is used for the developer to transparently transmit the media file to other users by filling in this URL when the developer uploads the media file to his own server.Required or not: If an external URL is sent, this parameter is mandatory on the sender end. */
    fileDownloadUrl?: string;
    /** Detail description: The unique ID of the media file. Required or not: The sender does not need to fill in, this value is generated by the SDK. */
    fileUID?: string;
    /** Detail description: The filename of the media file. Required or not: If you are sending an external URL, you need to fill in this value and include the file extension. If a local file is sent, the value is optional. */
    fileName?: string;
    /** Detail description: The size of the media file. Required or not: The sender does not need to fill in, this value is generated by the SDK. */
    fileSize?: number;
}
/**
 * Normal text message object.
 *
 * Description: Identifies the basic parameters of a message.
 * Caution: If the Type parameter of the base class is Text during callback, you can force the base class message object to be of this type.
 */
export interface ZIMTextMessage extends ZIMMessage {
    /** The content of the text message. */
    message: string;
    type: ZIMMessageType.Text;
}
/**
 * Custom message object.
 *
 * Available since: 2.8.0 and above.
 * Description: Identifies a custom message.
 * Caution: When calling back, if the Type parameter of the base class is Custom, the base class message object can be forcibly converted to this class.
 */
export interface ZIMCustomMessage extends ZIMMessage {
    /** The content of the text message. */
    message: string;
    /** Description: The search content of the message. */
    searchedContent?: string;
    /** Description: The subtype of the message, which is used by customers to customize the usage of different custom messages. Required: The sender is required, otherwise the message will fail to be sent. */
    subType: number;
    type: ZIMMessageType.Custom;
}
/**
 * Custom binary message object.
 *
 * Description: Identifies a binary message.
 * Caution: If the Type parameter of the base class is Custom during callback, you can force the base class message object to be of this type.
 */
export interface ZIMCommandMessage extends ZIMMessage {
    /** The content of the custom message. */
    message: Uint8Array;
    type: ZIMMessageType.Command;
}
/**
 * Barrage message class.
 *
 * Description: The barrage message class does not appear in the session and does not store historical messages.
 */
export interface ZIMBarrageMessage extends ZIMMessage {
    /** Description: The content of the barrage message. */
    message: string;
    type: ZIMMessageType.Barrage;
}
/**
 * Image message object.
 *
 * Description: Identifies the basic parameters of a message.
 * Caution: If the Type parameter of the base class is Image during callback, you can force the base class message object to be of this type.
 */
export interface ZIMImageMessage extends ZIMMediaMessage {
    /** Detail description: Thumbnail external download URL of the image file. When developers upload thumbnails to their own servers, the SDK can pass through this field to other users. Required or not: optional on the sender side, this field will only take effect when fileDownloadUrl is filled in. */
    thumbnailDownloadUrl?: string;
    /** Detail description: large Image external download URL of the image file. When developers upload large Images to their own servers, the SDK can pass through this field to other users.Required or not: optional on the sender side, this field will only take effect when fileDownloadUrl is filled in. */
    largeImageDownloadUrl?: string;
    /** Detailed description: The width of the original image. */
    originalImageWidth?: number;
    /** Detailed description: The height of the original image. */
    originalImageHeight?: number;
    /** Detailed description: The width of the large image. */
    largeImageWidth?: number;
    /** Detailed description: The height of the large image. */
    largeImageHeight?: number;
    /** Detailed description: The width of the thumbnail. */
    thumbnailWidth?: number;
    /** Detailed description: The height of the thumbnail. */
    thumbnailHeight?: number;
    type: ZIMMessageType.Image;
}
/**
 * File message object.
 *
 * Description: Identifies the basic parameters of a message.
 * Caution: If the Type parameter of the base class is File during callback, you can force the base class message object to be of this type.
 */
export interface ZIMFileMessage extends ZIMMediaMessage {
    type: ZIMMessageType.File;
}
/**
 * Audio message object.
 *
 * Description: Identifies the basic parameters of a message.
 * Caution: If the Type parameter of the base class is Audio during callback, you can force the base class message object to be of this type.
 */
export interface ZIMAudioMessage extends ZIMMediaMessage {
    /** Detail description: The duration of the audio file. Required: Required by the sender, if not filled, the audio message will fail to be sent When sending local audio messages. */
    audioDuration: number;
    type: ZIMMessageType.Audio;
}
/**
 * Video message object.
 *
 * Description: Identifies a video message.
 * Caution: When the Type parameter of the base class in the callback is Video, the base class message object can be cast to this class.
 * Restrictions: Only video files with H264 and H265 encoding formats are supported for getting the width and height of the first frame after the video message is sent successfully.
 */
export interface ZIMVideoMessage extends ZIMMediaMessage {
    /** Detail description: The duration of the video file. Required: Required by the sender, if not filled, the video message will fail to be sent when sending local video messages. */
    videoDuration: number;
    /** Detail description: Video first frame external download URL of the video file. When developers upload thumbnails to their own servers, the SDK can pass through this field to other users. Required or not: optional on the sender side, this field will only take effect when fileDownloadUrl is filled in. */
    videoFirstFrameDownloadUrl?: string;
    /** Detailed description: The width of the first frame of the video. */
    videoFirstFrameWidth?: number;
    /** Detailed description: The height of the first frame of the video. */
    videoFirstFrameHeight?: number;
    type: ZIMMessageType.Video;
}
/**
 * Base class for revoke message objects.
 *
 * Description: Identifies a revoke message.
 * Caution: This base class is the basis of all revoke messages and contains the properties required by revoke messages.
 */
export interface ZIMRevokeMessage extends ZIMMessage {
    /** Detail description: revoke type. */
    revokeType: ZIMRevokeType;
    /** Detail description: revoke timestamp. */
    revokeTimestamp: number;
    /** Detail description: operated user ID. */
    operatedUserID: string;
    /** Description: original message type */
    originalMessageType: ZIMMessageType;
    /** Detail description: original text message content, if the message to be revoked is not a text message, this field is empty. */
    originalTextMessageContent: string;
    /** Detail description: revoke extended data. */
    revokeExtendedData: string;
    /** Detail description: revoke status. */
    revokeStatus: ZIMMessageRevokeStatus;
    type: ZIMMessageType.Revoke;
}
/**
 * Base class for combine message objects.
 *
 * Description: Identifies a combine message.
 * Caution: This base class is the basis of all combine messages and contains the properties required by combine messages.
 * Available since: 2.14.0 and above.
 */
export interface ZIMCombineMessage extends ZIMMessage {
    /** Detail description: Combine message title. */
    title: string;
    /** Detail description: The summary of combine message. */
    summary: string;
    /** Detail description: Combine ID, internal used */
    combineID?: string;
    /** List of child messages */
    messageList: ZIMMessage[];
    type: ZIMMessageType.Combine;
}
/**
 * Tips message object.
 *
 * Description: Identifies a tips info message.
 * Caution: If the Type parameter of the base class is Tips during callback, you can force the base class message object to be of this type.
 */
export interface ZIMTipsMessage extends ZIMMessage {
    /** Detail description: Tips event type. */
    event: ZIMTipsMessageEvent;
    /** Detail description: Operated user information. */
    operatedUser: ZIMUserInfo;
    /** Detail description: Target user list. */
    targetUserList: ZIMUserInfo[];
    /** Detail description: Change information. */
    changeInfo?: ZIMTipsMessageChangeInfo;
    type: ZIMMessageType.Tips;
}
/**
 * Multiple message object.
 */
export interface ZIMMultipleMessage extends ZIMMessage {
    /** Detail description: List of content in the multiple message. */
    messageInfoList: ZIMMessageLiteInfo[];
    /** Detail description: List of failed index in the multiple message. */
    failedIndexList?: number[];
    type: ZIMMessageType.Multiple;
}
/**
 * Reply to the root message of the message tree.
 */
export interface ZIMMessageRootRepliedInfo {
    /** Description: Message replied state. */
    state: ZIMMessageRepliedInfoState;
    /** Description: Root message. */
    message?: ZIMMessage;
    /** Description: Sender user ID of the root message. */
    senderUserID: string;
    /** Description: Sent time of the root message. */
    sentTime: number;
    /** Description: Root replied count. */
    repliedCount: number;
}
/**
 * Information about the number of replies in the reply message tree.
 */
export interface ZIMMessageRootRepliedCountInfo {
    /** Description: Message ID. */
    messageID: string;
    /** Description: Conversation ID. */
    conversationID: string;
    /** Description: Conversation type. */
    conversationType: ZIMConversationType;
    /** Description: Root replied count. */
    count: number;
}
/**
 * message mention information.
 *
 * message mention information.
 */
export interface ZIMMessageMentionedInfo {
    /** Description: Message ID, used to match the notification information to which message it belongs toRequired or not: Developers do not need to fill in. */
    messageID: string;
    /** Description: Message sequence number, used to match the notification information to which message it belongs toRequired or not: Developers do not need to fill in. */
    messageSeq: number;
    /** Description: From which user. Required:  Developers do not need to fill in. */
    fromUserID: string;
    /** Details Description: Type of notification, used to distinguish between reminding oneself and reminding everyone. Required: Developers do not need to fill in. */
    type: ZIMMessageMentionedType;
}
/**
 * A structure in which the message receiving event carries relevant information.
 */
export interface ZIMMessageReceivedInfo {
    /** Description: The ID of conversation. */
    conversationID: string;
    /** Description: The type of conversation. */
    conversationType: ZIMConversationType;
    /** Description: Whether it is an offline message. */
    isOfflineMessage: boolean;
}
/**
 * Configurations related to sending messages.
 *
 * Description: Configurations related to sending messages.
 */
export interface ZIMMessageSendConfig {
    /** Description: Configures the offline push function, If Android or iOS platform is integrated, it is strongly recommended to configure this. Required: Not mandatory. */
    pushConfig?: ZIMPushConfig;
    /** Enumeration value used to set message priority. Required: Must mandatory. */
    priority: ZIMMessagePriority;
    /** Detailed description: When sending a message, whether the message has a receipt.Business scenario: use when you need to bring a receipt for a message.Required: not required.Default value: false. */
    hasReceipt?: boolean;
    /** Whether to send push notifications to mentioned users. */
    isNotifyMentionedUsers?: boolean;
    /** Whether to resend the failed message. */
    isRetrySend?: boolean;
    /** When sending messages that would otherwise affect the other party's unread count, should they no longer be counted as unread by the other party? Whether required: Not required. Default value: false. */
    disableUnreadMessageCount?: boolean;
    /** Whether to allow some sub-messages to fail to send when sending a multiple message. Whether required: Not required. Default value: false. */
    isAllowMultipleMessagePartialFailed?: boolean;
}
/**
 * Example Query message configuration.
 *
 * Description: Example Query the configurations of messages.
 */
export interface ZIMMessageQueryConfig {
    /** Description: Query the anchor point of the message. Required: This parameter is not required for the first query but is required for subsequent paging queries. */
    nextMessage?: ZIMMessage;
    /** Description: Number of query messages. Required: not required. */
    count: number;
    /** Description: Indicates whether the query is in reverse order. Required: not required. Default value: false. */
    reverse: boolean;
    /** Description: Sets the mode for querying historical messages. Since the SDK can determine whether local data is complete and therefore return historical messages more quickly, it is recommended to use the default value in most cases. Required: No. */
    mode: ZIMMessageQueryMode;
}
/**
 * Revoke configurations related to messages.
 *
 * Description: Revoke configurations related to messages.
 */
export interface ZIMMessageRevokeConfig {
    /** Description: Configures the offline push function, If Android or iOS platform is integrated, it is strongly recommended to configure this. Required: Not required. */
    pushConfig?: ZIMPushConfig;
    /** Description: revoking additional messages. Required: Not required. */
    revokeExtendedData?: string;
}
/**
 * Delete message configuration.
 *
 * Description: Delete configurations related to messages.
 */
export interface ZIMMessageDeleteConfig {
    /** Description: Whether to remove flags for server messages. Required: not required. Default value: false. */
    isAlsoDeleteServerMessage: boolean;
}
/**
 * The notification callback when the message is sent, you can get the relevant information before the message object is sent through this notification
 *
 * Description: Through this notification, developers can obtain relevant information before the message object is sent, such as localMessageID, etc.
 * Use cases: When developers need to record and cache relevant information before sending a message, they can obtain it by listening to the notification.
 * Caution: If no monitoring is required, it can be passed null.
 */
export interface ZIMMessageSendNotification {
    /** Detail description: After the message falls into the local DB, the notification will be called back before the message is sent to the server. Business scenario: This interface can be used when the developer needs to obtain the relevant information in the message in advance before sending the message. Required: not required. If no monitoring is required, it can be passed empty. Default: empty. */
    onMessageAttached?: ZIMMessageAttachedResult;
    /** Description: Media file upload progress. */
    onMediaUploadingProgress?: ZIMMediaUploadingProgress;
    /** Description: Multiple media file upload progress. */
    onMultipleMediaUploadingProgress?: ZIMMultipleMediaUploadingProgress;
}
/**
 * The notification callback when the media message is sent, you can get the relevant information before the message object is sent through this notification
 *
 * Description: Through this notification, developers can obtain relevant information before the message object is sent, such as localMessageID, etc.
 * Use cases: When developers need to record and cache relevant information before sending a message, they can obtain it by listening to the notification.
 * Caution: If no monitoring is required, it can be passed null.
 */
export interface ZIMMediaMessageSendNotification {
    /** Detail description: After the message falls into the local DB, the notification will be called back before the message is sent to the server. Business scenario: This interface can be used when the developer needs to obtain the relevant information in the message in advance before sending the message. Required: not required. If no monitoring is required, it can be passed empty. Default: empty. */
    onMessageAttached?: ZIMMessageAttachedResult;
    /** Callback for media upload progress. */
    onMediaUploadingProgress?: ZIMMediaUploadingProgress;
}
/**
 * receipt information.
 *
 * Description: receipt information.
 */
export interface ZIMMessageReceiptInfo {
    /** Detail description: receipt status. */
    status: ZIMMessageReceiptStatus;
    /** Detailed Description: Message ID. Business scenario: Developers can match the loaded message list according to this ID. Is it required: No, SDK fills in. */
    messageID: string;
    /** Session ID. */
    conversationID: string;
    /** Session type. */
    conversationType: ZIMConversationType;
    /** Description: Number of read members. */
    readMemberCount: number;
    /** Description: Number of unread members. */
    unreadMemberCount: number;
    /** Description: Whether it is self-operated by multi-terminal. */
    isSelfOperated: boolean;
    /** Description: All the recipients have read the timestamp of that moment. */
    readTime: number;
}
/**
 * Configuration for querying reaction user list
 *
 * Description: When querying reaction member, you need to configure this object.
 */
export interface ZIMMessageReactionUserQueryConfig {
    /** Description: The flag of the paging query. For the first query, set this field to an empty string. If the "nextFlag" field of the [ZIMMessageReactionUserListQueriedCallback] callback is not an empty string, it needs to be set here to continue the query on the next page.Required: Not required. */
    nextFlag: number;
    /** Description: How many members are retrieved in one query, 100 at most.Caution: To obtain members in pages to reduce overhead, it is recommended to obtain within 20 members at a time. If the value is 0, the SDK will query 100 members by default.Required: Required. */
    count: number;
    /** Description: reaction type, defined by you. */
    reactionType: string;
}
/**
 * Notice of Room Message Status Change.
 *
 * Description: Notice of Room Message Status Change.
 */
export interface ZIMMessageSentStatusChangeInfo {
    /** message sent status. */
    status: ZIMMessageSentStatus;
    /** ZIMMessage. */
    message: ZIMMessage;
    /** This field stores the reason why a message was rejected by ZEGOCLOUD In-app Chat due to interception by the server-side callback on message not sent yer. If you have enabled the ZEGOCLOUD In-app Chat content moderation service and require this field to capture failure reasons caused by failed content moderation, contact ZEGOCLOUD Technical Support for configuration. */
    reason: string;
}
/**
 * Message search configuration.
 *
 * Description: Message search configuration.
 */
export interface ZIMMessageSearchConfig {
    /** Paging fetch flag, which means fetching messages before or after nextMessage, with 'before' or 'after' determined by the order value. On the first search, nextMessage is null. On subsequent searches, nextMessage needs to pass in the last message in the message list queried last time. */
    nextMessage?: ZIMMessage;
    /** count It is recommended to keep the number of items less than 20 to reduce performance overhead. */
    count: number;
    /** When the 'order' is 'DESCENDING' during message search, it means querying messages with sending time earlier than nextMessage. If it's the first message query (i.e. nextMessage is null), then query from the last message stored locally forward. When 'order' is 'ASCENDING', it means querying messages with sending time later than nextMessage. If it's the first message query (i.e. nextMessage is null), then query from the first message stored locally backward. The default is 'DESCENDING'. */
    order: ZIMMessageOrder;
    /** Search keywords, up to 5 keywords are supported, otherwise an error will be reported. For example: passing in '1' and '2' will make the search results only show messages that contain both keywords '1' and '2'. */
    keywords: string[];
    /** Message types, can be used to specify message types. Support passing in multiple types. */
    messageTypes: ZIMMessageType[];
    /** The subtypes of custom messages have a value range of [0,200]. Developers can use this range to search for specific custom types. */
    subMessageTypes: number[];
    /** The user ID of the message sender, supporting up to 5 IDs. For example, if 'zego2023' is passed in, the search results will only display all the messages sent by the user 'zego2023' in that conversation. */
    senderUserIDs: string[];
    /** The starting point of the search, in milliseconds, with a default value of 0. The format is UTC timestamp. */
    startTime: number;
    /** The ending point of the search, which must be greater than the startTime, in milliseconds. The default value is 0 and the format is UTC timestamp. */
    endTime: number;
}
/**
 * Configuration for querying reply message list.
 *
 * Description: Configuration class for querying the replied message list.
 */
export interface ZIMMessageRepliedListQueryConfig {
    /** The flag of paginated query. When querying for the first time, set this field to 0. If the 'nextFlag' field of the [queryMessageRepliedList] callback is not 0, it means that the query has not ended yet. You need to set it here to continue querying the next page. */
    nextFlag: number;
    /** The number of queries per query. The upper limit is 100. Exceeding 100 will result in an error. */
    count: number;
}
/**
 * (Empty Class) Configurations related to editing messages.
 *
 * Description: (Empty Class) Configurations related to editing messages.
 */
export interface ZIMMessageEditConfig {
}
/**
 * (Empty Class) Configurations related to cancel sending messages.
 *
 * Description: (Empty Class) Configurations related to cancel sending messages.
 */
export interface ZIMSendingMessageCancelConfig {
}
/**
 * Pinning message configuration
 *
 * Description: Pin configurations related to messages.
 */
export interface ZIMMessagePinConfig {
    /** When the number of pinned messages exceeds the limit, replacing older pinned messages in the pinned list during the next pin operation is not allowed. The default value is [false]. */
    disableAutoReplace: boolean;
}
/**
 * Tips message additional information.
 *
 * Description: Tips message additional information.
 */
export interface ZIMTipsMessageChangeInfo {
    /** Tips message additional information type. */
    type: ZIMTipsMessageChangeInfoType;
}
/**
 * Tips Additional information about change events related to the message group.
 *
 * Description: Tips Additional information about change events related to the message group.
 */
export interface ZIMTipsMessageGroupChangeInfo extends ZIMTipsMessageChangeInfo {
    /** If there are multiple changes in the group name, group avatar, and group announcement, you need to know which ones have changed based on the value of this field. Among them, 0b0001 is the group name, 0b0010 is the group notice, and 0b0100 is the group avatar. */
    groupDataFlag: number;
    /** If the group name is changed, the changed value will be displayed here. */
    groupName: string;
    /** If the group notice is changed, the changed value will be displayed here. */
    groupNotice: string;
    /** If the group avatar url is changed, the changed value will be displayed here. */
    groupAvatarUrl: string;
    /** If the group mute info is changed, the changed value will be displayed here. */
    groupMutedInfo?: ZIMGroupMuteInfo;
}
/**
 * Tips Additional information about change events related to the message group member.
 *
 * Description: Tips Additional information about change events related to the message group member.
 */
export interface ZIMTipsMessageGroupMemberChangeInfo extends ZIMTipsMessageChangeInfo {
    /** If a group member's role changes, the changed role will be displayed here. */
    memberRole: number;
    /** If the group member's muting expired time changes, the new muting expired time will be displayed here. */
    muteExpiredTime: number;
    /** Detailed description: tips message generated when the original group owner leaves the group and causes a change in the group owner. This field is true and indicates a newly created group owner. */
    groupNewOwner?: ZIMGroupMemberSimpleInfo;
}
/**
 * Tips Additional information about change events related to the message pinned or unpined.
 *
 * Description: Tips Additional information about change events related to the message pinned or unpined.
 */
export interface ZIMTipsMessagePinStatusChangeInfo extends ZIMTipsMessageChangeInfo {
    /** Describes whether the current operation is a pin operation or an unpin operation. */
    isPinned: boolean;
}
/**
 * Notification of the message pinned status changed.
 *
 * Description: When a message in a conversation is successfully pinned or unpinned and a notification is raised, this structure can be used to obtain the operated message and its current pinned status.
 */
export interface ZIMMessagePinStatusChangeInfo {
    /** Message pin status */
    pinStatus: ZIMMessagePinStatus;
    /** The message object whose pin status changed. */
    message: ZIMMessage;
}
/**
 * message reaction change information.
 *
 * Description: A class that describes reaction change information.
 */
export interface ZIMMessageReactionChangeInfo {
    /** Description: The message object containing updated reaction information, which can be used to directly replace the old data held by the developer. */
    message: ZIMMessage;
    /** Description: A list of user reaction operation changes under the current message. */
    userChangeInfoList: ZIMMessageReactionUserChangeInfo[];
}
/**
 * Session specific content.
 *
 * Description: The specific content of the session.
 */
export interface ZIMConversation {
    /** conversationID. */
    conversationID: string;
    /** conversation type. */
    type: ZIMConversationType;
    /** conversationName is the same as the groupName/userName value corresponding to the session. */
    conversationName: string;
    /** Detail description: Conversation avatar URL. The peer to peer chat conversation avatar URL is the same as the user avatar URL, and the group chat conversation avatar URL is the same as the group avatar URL. */
    conversationAvatarUrl: string;
    /** After the friend remarks are set through [updateFriendAlias], this parameter is changed for each chat conversation. After setting a group alias by [updateGroupAlias], the corresponding group chat conversation's parameter will be modified synchronously. */
    conversationAlias: string;
    /** session notification status. */
    notificationStatus: ZIMConversationNotificationStatus;
    /** Session unread. */
    unreadMessageCount: number;
    /** last message. */
    lastMessage?: ZIMMessage;
    /** OrderKey is used to describe the order of messages in the session. The larger orderKey is, the newer it is. */
    orderKey: number;
    /** Whether the conversation is pinned. */
    isPinned: boolean;
    /** Description: The timestamp of conversation pinned. */
    pinnedTime: number;
    /** When reminded in a message or reminded to everyone in a conversation, this array will record the reminders. */
    mentionedInfoList: ZIMMessageMentionedInfo[];
    /** Conversation draft, when draft set conversation will carry this parameter. */
    draft: string;
    /** Describes all the existing marks for the conversation. */
    marks: number[];
    /** Conversation read message sequence number. */
    readMessageSeq: number;
    /** Whether the conversation is unavailable. */
    isConversationDisabled: boolean;
    /** The expiration date of the conversation. */
    selfMutedExpiredTime: number;
}
/**
 * Conversation base information
 *
 * Description: The base content of the session.
 */
export interface ZIMConversationBaseInfo {
    /** Conversation ID. For single chat, the conversation ID is the other user ID. For group chat, the conversation ID is the group ID. */
    conversationID: string;
    /** Conversation type */
    conversationType: ZIMConversationType;
}
/**
 * Group session object, extend from ZIMGroupConversation.
 *
 * Description: Group session object, extend from ZIMGroupConversation.
 *
 * @deprecated Deprecated since 3.0.0. Use the [isConversationDisabled] and [selfMutedExpiredTime] properties in the [ZIMConversation] class instead.
 */
export interface ZIMGroupConversation extends ZIMConversation {
    /** Whether the group session is unavailable. */
    isDisabled: boolean;
    /** The expiration date of the group gag. */
    mutedExpiredTime: number;
}
/**
 * Query the relevant configuration of the session.
 *
 * Description: Configurable information when querying a session.
 */
export interface ZIMConversationQueryConfig {
    /** Session that needs to be queried. */
    nextConversation?: ZIMConversation;
    /** The number of sessions to query. */
    count: number;
}
/**
 * Search filters related to the conversation.
 *
 * Description: Configurable filter options when querying conversation list.
 */
export interface ZIMConversationFilterOption {
    /** Conversation type list */
    conversationTypes: ZIMConversationType[];
    /** Conversation mark list */
    marks: number[];
    /** Whether to query only unread conversations */
    isOnlyUnreadConversation: boolean;
    /** Conversation pinned filter */
    pinnedFilter: ZIMConversationPinnedFilter;
}
/**
 * Search filters related to the conversation total unread message count.
 *
 * Description: Configurable filter options when querying conversation total unread message count.
 */
export interface ZIMConversationTotalUnreadMessageCountQueryConfig {
    /** Conversation type list */
    conversationTypes: ZIMConversationType[];
    /** Conversation mark list */
    marks: number[];
}
/**
 * Conversation delete configuration
 *
 * Description: Delete the related configuration of the session.
 */
export interface ZIMConversationDeleteConfig {
    /** Whether to delete server conversations at the same time */
    isAlsoDeleteServerConversation: boolean;
}
/**
 * Conversation change information
 *
 * Description: Contains information after session changes.
 */
export interface ZIMConversationChangeInfo {
    /** @deprecated Conversation change event */
    event: ZIMConversationEvent;
    /** Conversation change action */
    action: ZIMConversationListChangeAction;
    /** Changed conversation */
    conversation: ZIMConversation;
}
/**
 * Conversation search configuration.
 *
 * Description: Conversation search configuration.
 */
export interface ZIMConversationSearchConfig {
    /** Conversation search mode. */
    mode: ZIMConversationSearchMode;
    /** Pagination token, fill in 0 initially, and then fill in the nextFlag returned from the callback to retrieve data for the next page. */
    nextFlag?: number;
    /** The number of messages that can be retrieved in one search. It is recommended to be less than 20 to reduce performance overhead. */
    totalConversationCount: number;
    /** Search keywords, supports up to 5. Otherwise, an error will occur. For example, if you pass in '1' and '2', the search results will only display conversations that contain both '1' and '2' keywords in the messages. */
    keywords: string[];
    /** The number of local messages that can be retrieved for a single conversation in one search. It is recommended to be less than 10 to reduce performance overhead. */
    conversationMessageCount: number;
    /** Message types, can be used to specify message types. Support passing in multiple types. */
    messageTypes: ZIMMessageType[];
    /** The subtypes of custom messages have a value range of [0,200]. Developers can use this range to search for specific custom types. */
    subMessageTypes: number[];
    /** Send user ID, supports up to 5. For example, if you pass in zego2023, the search results will only display conversations where messages have been sent by the user zego2023. */
    senderUserIDs: string[];
    /** The starting point of the search, in milliseconds, with a default value of 0. The format is UTC timestamp. */
    startTime: number;
    /** The ending point of the search, which must be greater than the startTime, in milliseconds. The default value is 0 and the format is UTC timestamp. */
    endTime: number;
}
/**
 * Conversation search result
 *
 * Description: Information class for conversation search results.
 */
export interface ZIMConversationSearchInfo {
    /** The conversation ID of the local message to be search. */
    conversationID: string;
    /** conversation type. */
    conversationType: ZIMConversationType;
    /** Conversation object. */
    conversation: ZIMConversation;
    /** Total message count. */
    totalMessageCount: number;
    /** Search results of messages. */
    messageList: ZIMMessage[];
}
/**
 * Room information object.
 *
 * Description: Identifies a unique room.
 */
export interface ZIMRoomInfo {
    /** Room ID.  a string with a maximum length of 128 bytes.  It is customized by the developer and supports only digits, English characters, ~, and  '!', '#', '$', '%', '&', '(', ')', '+', '-', ':', ';', '<', '=', '.', '>', '?', '@', '[', ']', '^', '_', '{', '}', '|', '~'. */
    roomID: string;
    /** Room name, It is customized by the developer .a string with a maximum length of 64 bytes or less. */
    roomName: string;
}
/**
 * The room details object.
 *
 * Description: Identifies the detailed information of a room.
 */
export interface ZIMRoomFullInfo {
    /** Room base information */
    baseInfo: ZIMRoomInfo;
}
/**
 * Room user information.
 *
 * Description: A class describing room user.
 */
export interface ZIMRoomMemberInfo extends ZIMUserInfo {
}
/**
 * Configuration for querying room member.
 *
 * Description: When querying member, you need to configure this object.
 */
export interface ZIMRoomMemberQueryConfig {
    /** The flag of the paging query. For the first query, set this field to an empty string. If the 'nextFlag' field of the callback is not an empty string, it needs to be set here to continue the query on the next page. */
    nextFlag: string;
    /** How many messages are retrieved in one query. */
    count: number;
}
/**
 * Room advanced configuration
 *
 * Description: Room‘s advanced config.
 */
export interface ZIMRoomAdvancedConfig {
    /** Room attributes of a room. */
    roomAttributes: Record<string, string>;
    /** Room destruction time delayed, the unit is seconds. The maximum room destroy delay time is 3 hours. */
    roomDestroyDelayTime: number;
}
/**
 * The behavior attribute set by the room attribute.
 *
 * Description: The behavior attribute set by the room attribute.
 */
export interface ZIMRoomAttributesSetConfig {
    /** Whether the operation is mandatory, that is, the property of the room whose owner is another user can be modified. */
    isForce: boolean;
    /** Room attributes are automatically deleted after the owner leaves the room. */
    isDeleteAfterOwnerLeft: boolean;
    /** Whether to update the owner of the room attribute involved. */
    isUpdateOwner: boolean;
}
/**
 * The behavior attribute set by the room attribute.
 *
 * Description: The behavior attribute set by the room attribute.
 */
export interface ZIMRoomAttributesBatchOperationConfig {
    /** Whether the operation is mandatory, that is, the property of the room whose owner is another user can be modified. */
    isForce: boolean;
    /** Room attributes are automatically deleted after the owner leaves the room. */
    isDeleteAfterOwnerLeft: boolean;
    /** Whether to update the owner of the room attribute involved. */
    isUpdateOwner: boolean;
}
/**
 * The behavior attribute set by the room attribute.
 *
 * Description: The behavior attribute set by the room attribute.
 */
export interface ZIMRoomAttributesDeleteConfig {
    /** Whether the operation is mandatory, that is, the property of the room whose owner is another user can be deleted. */
    isForce: boolean;
}
/**
 * Room attribute update information
 *
 * Description: Notice of Room Attribute Change.
 */
export interface ZIMRoomAttributesUpdateInfo {
    /** Behavioral information of room attribute change notification. */
    action: ZIMRoomAttributesUpdateAction;
    /** Room attributes. */
    roomAttributes: Record<string, string>;
}
/**
 * Room user attribute information.
 *
 * Description: Detail description: A class describing room user attributes, including UserID and its corresponding attributes.
 */
export interface ZIMRoomMemberAttributesInfo {
    /** Detail description: User ID. */
    userID: string;
    /** Detailed description: room user attributes. */
    attributes: Record<string, string>;
}
/**
 * Room user attribute operation information.
 *
 * Description: Detail description: room user attribute operation information, including attributes of successful operation and keys of failure.
 */
export interface ZIMRoomMemberAttributesOperatedInfo {
    /** Detailed description: room user attribute information. */
    attributesInfo: ZIMRoomMemberAttributesInfo;
    /** Detail description: The key of the room user attribute operation failure. */
    errorKeys: string[];
}
/**
 * Room user attribute update information.
 *
 * Description: Detailed description: Room user attribute update information.
 */
export interface ZIMRoomMemberAttributesUpdateInfo {
    /** Detailed description: room user attributes. */
    attributesInfo: ZIMRoomMemberAttributesInfo;
}
/**
 * Room user property settings configuration.
 *
 * Description: room user attribute setting configuration, including configurable whether to retain user attributes after the user leaves, etc.
 * Use cases: When setting room user attributes, developers can choose to use them according to their actual application scenarios.
 */
export interface ZIMRoomMemberAttributesSetConfig {
    /** Default: true. */
    isDeleteAfterOwnerLeft: boolean;
}
/**
 * Room member attribute query configuration
 *
 * Description: Detailed description: room user attribute query configuration.
 */
export interface ZIMRoomMemberAttributesQueryConfig {
    /** Detail description: Query anchor for room user properties. */
    nextFlag: string;
    /** count. */
    count: number;
}
/**
 * Room operation information.
 *
 * Description: Detailed description: Room operation information.
 */
export interface ZIMRoomOperatedInfo {
    /** Detail description: UserID of the operator. */
    userID: string;
}
/**
 * group information.
 *
 * Description: group information.
 */
export interface ZIMGroupInfo {
    /** groupID. */
    groupID: string;
    /** Group name. */
    groupName: string;
    /** Use Limit: the maximum number of characters is 500 bytes. There is no limit on special characters. */
    groupAvatarUrl: string;
}
/**
 * Group mute information.
 *
 * Description: Group mute information.
 */
export interface ZIMGroupMuteInfo {
    /** Group mute mode. */
    mode: ZIMGroupMuteMode;
    /** Group mute expiration time, measured in seconds. When it's 0, there is no mute; when it's -1, it means permanent mute. */
    expiredTime: number;
    /** Detail description: Role list muted in the group. */
    roles: number[];
}
/**
 * Verification mode for joining the group.
 *
 * Description: Group verification information class, describing the group entry verification mode.
 */
export interface ZIMGroupVerifyInfo {
    /** Verification mode for joining the group. */
    joinMode: ZIMGroupJoinMode;
    /** Verification mode for invite to the group. */
    inviteMode: ZIMGroupInviteMode;
    /** Verification mode for being invited to the group. */
    beInviteMode: ZIMGroupBeInviteMode;
}
/**
 * complete group information.
 *
 * Description: complete group information.
 */
export interface ZIMGroupFullInfo {
    /** basic group information. */
    baseInfo: ZIMGroupInfo;
    /** Group of announcement. */
    groupNotice: string;
    /** group properties. */
    groupAttributes: Record<string, string>;
    /** the group alias defined by user, which is  visible only to that user. */
    groupAlias: string;
    /** group message notification status. */
    notificationStatus: ZIMGroupMessageNotificationStatus;
    /** Group mute info. */
    mutedInfo: ZIMGroupMuteInfo;
    /** The timestamp of the server when the group was created. */
    createTime: number;
    /** The maximum number of group members. */
    maxMemberCount: number;
    /** Verification mode for joining the group. */
    verifyInfo: ZIMGroupVerifyInfo;
}
/**
 * complete group information for group list.
 *
 * Description: complete group information for group list.
 */
export interface ZIMGroup {
    /** basic group information. */
    baseInfo: ZIMGroupInfo;
    /** the group alias defined by user, which is  visible only to that user. */
    groupAlias: string;
    /** group message notification status. */
    notificationStatus: ZIMGroupMessageNotificationStatus;
}
/**
 * Group member simple information.
 *
 * Description: Simple information class for group members.
 */
export interface ZIMGroupMemberSimpleInfo extends ZIMUserInfo {
    /** Group member nickname. */
    memberNickname: string;
    /** group role. */
    memberRole: number;
}
/**
 * Information about group members when they join the group.
 *
 * Description: Information class for a user entering a group.
 */
export interface ZIMGroupEnterInfo {
    /** The timestamp of the server when joining the group. */
    enterTime: number;
    /** Group entry type. */
    enterType: ZIMGroupEnterType;
    /** Group entry type. */
    operatedUser?: ZIMGroupMemberSimpleInfo;
}
/**
 * Group member information.
 *
 * Description: Group member information.
 */
export interface ZIMGroupMemberInfo extends ZIMUserInfo {
    /** Group member nickname. */
    memberNickname: string;
    /** group role. */
    memberRole: number;
    /** Group member's mute expiration time. When it's 0, it means no mute; when it's -1, it means permanent mute. */
    muteExpiredTime: number;
    /** Information about group members when they join the group. */
    groupEnterInfo: ZIMGroupEnterInfo;
}
/**
 * The group causes the event to change the operator's information.
 *
 * Description: The group causes the event to change the operator's information.
 */
export interface ZIMGroupOperatedInfo {
    /** The operator's user ID. */
    userID: string;
    /** The operator's username. */
    userName: string;
    /** The operator's group member nickname. */
    memberNickname: string;
    /** The operator's group member role. */
    memberRole: number;
}
/**
 * group member query configuration.
 *
 * Description: group member query configuration.
 */
export interface ZIMGroupMemberQueryConfig {
    /** nextFlag. */
    nextFlag: number;
    /** count. Quantity, upper limit is 100, over 100 will be treated as 100. */
    count: number;
}
/**
 * Group advanced configuration.
 *
 * Description: Group advanced configuration.
 */
export interface ZIMGroupAdvancedConfig {
    /** group notice. */
    groupNotice: string;
    /** Group properties, up to 10 can be configured.. */
    groupAttributes: Record<string, string>;
    /** The maximum number of group members. */
    maxMemberCount: number;
    /** Verification mode for joining the group. */
    joinMode: ZIMGroupJoinMode;
    /** Verification mode for invite to the group. */
    inviteMode: ZIMGroupInviteMode;
    /** Verification mode for being invited to the group. */
    beInviteMode: ZIMGroupBeInviteMode;
}
/**
 * Group attribute update information.
 *
 * Description: Group attribute update information.
 */
export interface ZIMGroupAttributesUpdateInfo {
    /** Group attribute update action. */
    action: ZIMGroupAttributesUpdateAction;
    /** group properties. */
    groupAttributes: Record<string, string>;
}
/**
 * Group message receipt read/unread member query configuration.
 *
 * Description: Group message receipt read/unread member query configuration.
 */
export interface ZIMGroupMessageReceiptMemberQueryConfig {
    /** Detailed description: The next sign. Initially fill in 0, then get the next next flag from the [ZIMGroupMessageReceiptMemberListQueriedCallback] callback. */
    nextFlag: number;
    /** count. */
    count: number;
}
/**
 * Group search configuration.
 *
 * Description: Group search configuration.
 */
export interface ZIMGroupSearchConfig {
    /** The flag used to search groups. */
    nextFlag: number;
    /** count. */
    count: number;
    /** Search keywords. For example: passing in '1' and '2' will make the search results only show groups whose group names contain both keywords '1' and '2'. */
    keywords: string[];
    /** Whether the search scope includes group member user names. Default is false. */
    isAlsoMatchGroupMemberUserName: boolean;
    /** Whether the search scope includes group member user nicknames. Default is false. */
    isAlsoMatchGroupMemberNickname: boolean;
}
/**
 * Group search info.
 *
 * Description: Group search info.
 */
export interface ZIMGroupSearchInfo {
    /** group info. */
    groupInfo: ZIMGroupInfo;
    /** Group member information. */
    userList: ZIMGroupMemberInfo[];
}
/**
 * group member search configuration.
 *
 * Description: group member search configuration.
 */
export interface ZIMGroupMemberSearchConfig {
    /** The flag for querying, fill in 0 when calling the interface for the first time. When calling the interface again later, fill in the nextFlag returned from the callback to retrieve the remaining data. */
    nextFlag: number;
    /** count. */
    count: number;
    /** Search keywords, up to 5 keywords are supported, otherwise an error will be reported. For example: passing in '1' and '2' will make the search results only show group members whose names contain both keywords '1' and '2'. */
    keywords: string[];
    /** Whether the search scope includes group member user nickname. Default is false. */
    isAlsoMatchGroupMemberNickname: boolean;
}
/**
 * Group mute configuration.
 *
 * Description: Group mute configuration.
 */
export interface ZIMGroupMuteConfig {
    /** Group mute mode. */
    mode: ZIMGroupMuteMode;
    /** Group mute duration, the unit is seconds. The value is -1, which means permanent mute. If you need to implement non-permanent mute, the upper limit is 604800 (7 days). If you need to increase it, please contact ZEGO technical support. */
    duration: number;
    /** Group role list. */
    roles: number[];
}
/**
 * Group members mute configuration.
 *
 * Description: Group members mute configuration.
 */
export interface ZIMGroupMemberMuteConfig {
    /** Group members mute duration, the unit is seconds. The value is -1, which means permanent mute. If you need to implement non-permanent mute, the upper limit is 604800 (7 days). If you need to increase it, please contact ZEGO technical support. */
    duration: number;
}
/**
 * Group muted member list query configuration.
 *
 * Description: Group muted member list query configuration.
 */
export interface ZIMGroupMemberMutedListQueryConfig {
    /** nextFlag. */
    nextFlag: number;
    /** count. */
    count: number;
}
/**
 * Group application information.
 *
 * Description: Group application information class, containing details of join or invite applications.
 */
export interface ZIMGroupApplicationInfo {
    /** Group application type. */
    type: ZIMGroupApplicationType;
    /** Group application state. */
    state: ZIMGroupApplicationState;
    /** Group information for applying to join the group. */
    groupInfo: ZIMGroupInfo;
    /** Detail description: The applicant is the applicant when applying to join, the invitee when applying to invite, and the inviter when applying by invitation. */
    applyUser: ZIMUserInfo;
    /** Group application create time. */
    createTime: number;
    /** Group application status update time. */
    updateTime: number;
    /** The wording of group application information. */
    wording: string;
    /** The operator who agrees to join the group application. */
    operatedUser?: ZIMGroupMemberSimpleInfo;
}
/**
 * The behavior property of the send group join application setting.
 *
 * Description: Configuration class for sending group join applications.
 */
export interface ZIMGroupJoinApplicationSendConfig {
    /** Postscript to the application operation. */
    wording: string;
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * The behavior property of the accept group join application setting.
 *
 * Description: Configuration class for accepting group join applications.
 */
export interface ZIMGroupJoinApplicationAcceptConfig {
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * The behavior property of the reject group join application setting.
 *
 * Description: Configuration class for rejecting group join applications.
 */
export interface ZIMGroupJoinApplicationRejectConfig {
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * The behavior property of the send group invite application setting.
 *
 * Description: Configuration class for sending group invite applications.
 */
export interface ZIMGroupInviteApplicationSendConfig {
    /** Postscript to the application operation. */
    wording: string;
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * The behavior property of the accept group invite application setting.
 *
 * Description: Configuration class for accepting group invite applications.
 */
export interface ZIMGroupInviteApplicationAcceptConfig {
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * The behavior property of the reject group invite application setting.
 *
 * Description: Configuration class for rejecting group invite applications.
 */
export interface ZIMGroupInviteApplicationRejectConfig {
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * Query the group application configuration.
 *
 * Description: Through this configuration, you can set the total number of queries and the pagination query.
 */
export interface ZIMGroupApplicationListQueryConfig {
    /** nextFlag. */
    nextFlag: number;
    /** count. It is advised to be no more than 30. */
    count: number;
}
/**
 * Group list query configuration.
 *
 * Description: Configuration class for querying the group list.
 */
export interface ZIMGroupListQueryConfig {
    /** nextFlag. */
    nextFlag: number;
    /** Specify the list of users. */
    userIDs: string[];
}
/**
 * Call invitation user information.
 *
 * Description: Call invitation user information.
 */
export interface ZIMCallUserInfo {
    /** User ID, a string with a maximum length of 32 bytes or less. It is customized by the developer. Only support numbers, English characters and  '!', '#', '$', '%', '&', '(', ')', '+', '-', ':', ';', '<', '=', '.', '>', '?', '@', '[', ']', '^', '_', '{', '}', '|', '~'. */
    userID: string;
    /** user status. */
    state: ZIMCallUserState;
    /** Call the additional information in user information. */
    extendedData: string;
}
/**
 * The behavior property of the Send Call Invitation setting.
 *
 * Description: The behavior property of the Send Call Invitation setting.
 */
export interface ZIMCallInviteConfig {
    /** The timeout setting of the call invitation, the unit is seconds. The range is  [1, 600]. */
    timeout: number;
    /** Call invitation mode configuration. */
    mode: ZIMCallInvitationMode;
    /** Extended field, through which the inviter can carry information to the invitee. */
    extendedData: string;
    /** If the pass value is true, the system checks whether the call invitation is delivered in this call and subsequent calls. */
    enableNotReceivedCheck?: boolean;
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * Behavior property set by quit a call invitation.
 *
 * Description: Behavior property set by quit a call invitation.
 */
export interface ZIMCallingInviteConfig {
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * Add the behavior attribute of the call invitation setting.<br/>.
 *
 * Description: Add the behavior attribute of the call invitation setting.
 */
export interface ZIMCallJoinConfig {
    /** Extended field, through which the inviter can carry information to the invitee. */
    extendedData: string;
}
/**
 * Behavior property set by quit a call invitation.
 *
 * Description: Behavior property set by quit a call invitation.
 */
export interface ZIMCallQuitConfig {
    /** Extended field, through which the inviter can carry information to the invitee. */
    extendedData: string;
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * End the behavior attribute of the call invitation setting.
 *
 * Description: End the behavior attribute of the call invitation setting.
 */
export interface ZIMCallEndConfig {
    /** Extended field, through which the inviter can carry information to the invitee. */
    extendedData: string;
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * Behavior property that cancels the call invitation setting.
 *
 * Description: Behavior property that cancels the call invitation setting.
 */
export interface ZIMCallCancelConfig {
    /** Extended field, through which the inviter can carry information to the invitee. */
    extendedData: string;
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * Behavior property set by accepting a call invitation.
 *
 * Description: Behavior property set by accepting a call invitation.
 */
export interface ZIMCallAcceptConfig {
    /** Extended field, through which the inviter can carry information to the invitee. */
    extendedData: string;
}
/**
 * This parameter is used to set the configuration item of call invitation rejection.
 *
 * Description: This command is used to customize the call invitation when sending invitation rejection.
 * Use cases: You need to pass the configuration item to the interface when invoking the call rejection invitation.
 */
export interface ZIMCallRejectConfig {
    /** Additional fields for attaching custom content when sending a reject invitation. */
    extendedData: string;
}
/**
 * Inquiry the setting attribute of the call invitation list.
 *
 * Description: Inquiry the setting attribute of the call invitation list
 */
export interface ZIMCallInvitationQueryConfig {
    /** The query number is limited to up to 100. */
    count: number;
    /** The flag of the query list.No padding is required for the first query. After the query, callback will return a nextFlag, which can be filled in the next query to continue the query based on the last query. */
    nextFlag?: number;
}
/**
 * Call invitation information.
 *
 * Description: Call invitation information.
 */
export interface ZIMCallInfo {
    /** Call invite ID. */
    callID: string;
    /** Call invitation initiator ID. */
    caller: string;
    /** The inviter ID of the call invitation. */
    inviter: string;
    /** Call invites to create a timestamp. */
    createTime: number;
    /** Call invitation end time. */
    endTime: number;
    /** Call invitation status. */
    state: ZIMCallState;
    /** Call invitation mode. */
    mode: ZIMCallInvitationMode;
    /** Create a call invitation additional information. */
    extendedData: string;
    /** The list of call member. */
    callUserList: ZIMCallUserInfo[];
}
/**
 * Call member status change information.
 *
 * Description: Call member status change information.
 */
export interface ZIMCallUserStateChangeInfo {
    /** List of call members whose status changes. */
    callUserList: ZIMCallUserInfo[];
}
/**
 * Query the blacklist configuration.
 *
 * Description: Through this configuration, you can set the total number of queries and the pagination query.
 */
export interface ZIMBlacklistQueryConfig {
    /** nextFlag. */
    nextFlag?: number;
    /** count. */
    count: number;
}
/**
 * The behavior property of the Add Friend setting.
 *
 * Description: The behavior property of the Add Friend setting.
 */
export interface ZIMFriendAddConfig {
    /** Alias of friend. */
    friendAlias: string;
    /** Friend attributes. Up to 5 can be set. The key of the attribute can only be selected from k0 to k4. */
    friendAttributes: Record<string, string>;
    /** Add a friend postscript. */
    wording: string;
}
/**
 * The behavior property of the Delete Friend setting.
 *
 * Description: The behavior property of the Delete Friend setting.
 */
export interface ZIMFriendDeleteConfig {
    /** Delete type. */
    type: ZIMFriendDeleteType;
}
/**
 * Query the configuration of the friend list.
 *
 * Description: Query the configuration of the friend list.
 */
export interface ZIMFriendListQueryConfig {
    /** The index of the current query anchor point. */
    nextFlag?: number;
    /** Total number of current queries. */
    count: number;
}
/**
 * Friend search configuration.
 *
 * Description: Configuration class for searching friends.
 */
export interface ZIMFriendSearchConfig {
    /** nextFlag. */
    nextFlag: number;
    /** count. */
    count: number;
    /** Search keywords, supports up to 5. Otherwise, an error will occur. For example, if you pass in '1' and '2', the search results will only display conversations that contain both '1' and '2' keywords in the messages. */
    keywords: string[];
    /** Whether to match friend aliases. */
    isAlsoMatchFriendAlias: boolean;
}
/**
 * Check the behavior properties of friend relationships.
 *
 * Description: Check the behavior properties of friend relationships.
 */
export interface ZIMFriendRelationCheckConfig {
    /** Check type. */
    type: ZIMFriendRelationCheckType;
}
/**
 * Friend relationship information.
 *
 * Description: Detailed description: Friend relationship information.
 */
export interface ZIMFriendRelationInfo {
    /** Friend relationship type. */
    type: ZIMUserRelationType;
    /** user ID. */
    userID: string;
}
/**
 * Friend information.
 *
 * Description: Detailed description: Friend information.
 */
export interface ZIMFriendInfo extends ZIMUserInfo {
    /** The alias of friend. */
    friendAlias: string;
    /** Friend attributes. Up to 5 can be set. The key of the attribute can only be selected from k0 to k4. */
    friendAttributes: Record<string, string>;
    /** Friend add time. */
    createTime: number;
    /** Add a friend postscript. */
    wording: string;
}
/**
 * The behavior property of the Send Friend Application setting.
 *
 * Description: The behavior property of the Send Friend Application setting.
 */
export interface ZIMFriendApplicationSendConfig {
    /** Add a friend postscript. */
    wording: string;
    /** Alias of friend. */
    friendAlias: string;
    /** Friend attributes. Up to 5 can be set. The key of the attribute can only be selected from k0 to k4. */
    friendAttributes: Record<string, string>;
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * Behavior attributes for accepting friend requests.
 *
 * Description: Behavior attributes for accepting friend requests.
 */
export interface ZIMFriendApplicationAcceptConfig {
    /** friend alias. */
    friendAlias: string;
    /** friend attributes. */
    friendAttributes: Record<string, string>;
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * Behavior attributes for rejecting friend application.
 *
 * Description: Behavior attributes for rejecting friend application.
 */
export interface ZIMFriendApplicationRejectConfig {
    /** Offline push configuration. */
    pushConfig?: ZIMPushConfig;
}
/**
 * Query the configuration of the friend application list.
 *
 * Description: Query the configuration of the friend application list.
 */
export interface ZIMFriendApplicationListQueryConfig {
    /** The index of the current query anchor point. */
    nextFlag?: number;
    /** Total number of current queries. */
    count: number;
}
/**
 * Friend application information.
 *
 * Description: Detailed description: Friend application information.
 */
export interface ZIMFriendApplicationInfo {
    /** Friend application type. */
    type: ZIMFriendApplicationType;
    /** Friend application state. */
    state: ZIMFriendApplicationState;
    /** Detail description: If you are the applicant, here is the respondent information; if you are the respondent, here is the applicant information;. */
    applyUser: ZIMUserInfo;
    /** The wording of friend application information. */
    wording: string;
    /** Friend add time. */
    createTime: number;
    /** Friend application status update time. */
    updateTime: number;
}
/**
 * Basic community information.
 *
 * Description: Community basic information class.
 */
export interface ZIMCommunityInfo {
    /** The community ID. */
    communityID: string;
    /** The community name. */
    communityName: string;
    /** The URL of the community avatar. */
    communityAvatarUrl: string;
}
/**
 * Community object.
 *
 * Description: Community information class, containing basic attributes of a community.
 */
export interface ZIMCommunity {
    /** The basic information of the community. */
    baseInfo: ZIMCommunityInfo;
    /** The total unread message count across all channels. */
    totalUnreadMessageCount: number;
}
/**
 * Full community information.
 *
 * Description: Community full information class, containing all attributes of a community.
 */
export interface ZIMCommunityFullInfo {
    /** The basic information of the community. */
    baseInfo: ZIMCommunityInfo;
    /** The community notice. */
    communityNotice: string;
    /** The community attributes. */
    communityAttributes: Record<string, string>;
    /** The time when the community was created. */
    createTime: number;
    /** The user ID of the community creator. */
    creatorUserID: string;
    /** The current number of community members. */
    currentMemberCount: number;
    /** The notification status of the community. */
    notificationStatus: ZIMCommunityMessageNotificationStatus;
}
/**
 * Configuration for creating a community.
 *
 * Description: Configuration class for creating a community.
 */
export interface ZIMCommunityCreateConfig {
    /** The community notice to set when creating the community. */
    communityNotice: string;
    /** The community attributes to set when creating the community. */
    communityAttributes: Record<string, string>;
}
/**
 * Configuration for querying the community list.
 *
 * Description: Configuration class for querying the community list.
 */
export interface ZIMCommunityListQueryConfig {
    /** The pagination flag for querying the next page. */
    nextFlag: number;
}
/**
 * Community change information
 *
 * Description: Community change information class, describing changes to community attributes.
 */
export interface ZIMCommunityChangeInfo {
    /** Conmmunity change event */
    action: ZIMCommunityListChangeAction;
    /** Changed community */
    community: ZIMCommunity;
}
/**
 * Community member list query configuration
 *
 * Description: Configuration class for querying the community member list.
 */
export interface ZIMCommunityMemberListQueryConfig {
    /** The pagination flag for querying the next page. */
    nextFlag: number;
    /** The channel ID to query members from. */
    channelID: string;
    /** Whether to query only muted members. */
    isMutedMember: boolean;
}
/**
 * Community full info update information
 *
 * Description: Community full information update notification class.
 */
export interface ZIMCommunityFullInfoUpdateInfo {
    /** Changed community full info */
    communityInfo: ZIMCommunityFullInfo;
}
/**
 * Community member enter information
 *
 * Description: Information class for a member entering a community.
 */
export interface ZIMCommunityMemberEnterInfo {
    /** The time when the member entered the community. */
    enterTime: number;
    /** The type of how the member entered the community. */
    enterType: ZIMCommunityMemberEnterType;
    /** The user ID of the operator (e.g., the inviter). */
    operatedUserID: string;
}
/**
 * Community member mute info
 *
 * Description: Community member mute status information class.
 */
export interface ZIMCommunityMemberMuteInfo {
    /** The mute type indicating which level the member is muted at. */
    muteType: ZIMCommunityMemberMuteType;
    /** The channel ID of the mute. Empty means muted at the community level. */
    channelID: string;
    /** The expiration time of the member's mute. */
    muteExpiredTime: number;
}
/**
 * Community member information
 *
 * Description: Community member information class.
 */
export interface ZIMCommunityMemberInfo extends ZIMUserInfo {
    /** The role of the community member. */
    memberRole: number;
    /** The information about how the member entered the community. */
    enterInfo: ZIMCommunityMemberEnterInfo;
    /** The mute information of the community member. */
    muteInfo: ZIMCommunityMemberMuteInfo;
}
/**
 * Community member simple information
 *
 * Description: Simple community member information class.
 */
export interface ZIMCommunityMemberSimpleInfo extends ZIMUserInfo {
    /** The role of the community member. */
    memberRole: number;
}
/**
 * Community member state info change information
 *
 * Description: Community member state change information class.
 */
export interface ZIMCommunityMemberStateChangeInfo {
    /** The current state of the community member. */
    state: ZIMCommunityMemberChangeState;
    /** The action type of the member state change. */
    action: ZIMCommunityMemberChangeAction;
    /** Changed community member simple info */
    memberInfo: ZIMCommunityMemberSimpleInfo;
}
/**
 * Community member full info update information
 *
 * Description: Community member information update notification class.
 */
export interface ZIMCommunityMemberInfoUpdateInfo {
    /** Changed community member info */
    memberInfo: ZIMCommunityMemberInfo;
}
/**
 * Basic community channel information.
 *
 * Description: Community channel basic information class.
 */
export interface ZIMCommunityChannelInfo {
    /** The channel ID. */
    channelID: string;
    /** The type of the community channel. */
    channelType: ZIMCommunityChannelType;
    /** The channel name. */
    channelName: string;
    /** The URL of the channel avatar. */
    channelAvatarUrl: string;
    /** The ID of the community that the channel belongs to. */
    communityID: string;
}
/**
 * Community channel mute info
 *
 * Description: Community channel mute status information class.
 */
export interface ZIMCommunityChannelMuteInfo {
    /** The mute mode of the community channel. */
    mode: ZIMCommunityChannelMuteMode;
    /** The expiration time of the channel mute. */
    expiredTime: number;
    /** The muted roles in the community channel. */
    roles: number[];
}
/**
 * Community channel object.
 *
 * Description: Community channel information class, containing basic attributes of a channel.
 */
export interface ZIMCommunityChannel {
    /** The basic information of the community channel. */
    baseInfo: ZIMCommunityChannelInfo;
    /** The conversation ID of the community channel. */
    conversationID: string;
    /** The community channel attributes. */
    channelAttributes: Record<string, string>;
    /** The notification status of the community channel. */
    notificationStatus: ZIMConversationNotificationStatus;
    /** The number of unread messages in the community channel. */
    unreadMessageCount: number;
    /** The last message in the community channel. */
    lastMessage?: ZIMMessage;
    /** The list of mention information in the community channel. */
    mentionedInfoList: ZIMMessageMentionedInfo[];
    /** The expiration time of the local user's mute in the channel. */
    selfMutedExpiredTime: number;
    /** The draft message of the community channel. */
    draft: string;
}
/**
 * Full community channel information.
 *
 * Description: Community channel full information class, containing all attributes of a channel.
 */
export interface ZIMCommunityChannelFullInfo {
    /** The basic information of the community channel. */
    baseInfo: ZIMCommunityChannelInfo;
    /** The time when the channel was created. */
    createTime: number;
    /** The user ID of the channel creator. */
    creatorUserID: string;
    /** The community channel notice. */
    channelNotice: string;
    /** The community channel attributes. */
    channelAttributes: Record<string, string>;
    /** The current number of channel members. */
    currentMemberCount: number;
    /** The mute information of the community channel. */
    muteInfo: ZIMCommunityChannelMuteInfo;
}
/**
 * Configuration for creating a community channel.
 *
 * Description: Configuration class for creating a community channel.
 */
export interface ZIMCommunityChannelCreateConfig {
    /** The channel notice to set when creating the channel. */
    channelNotice: string;
    /** The channel attributes to set when creating the channel. */
    channelAttributes: Record<string, string>;
}
/**
 * Configuration for querying the community channel list.
 *
 * Description: Configuration class for querying the community channel list.
 */
export interface ZIMCommunityChannelListQueryConfig {
    /** The pagination flag for querying the next page. */
    nextFlag: number;
}
/**
 * Community channel change information.
 *
 * Description: Community channel change information class, describing changes to channel attributes.
 */
export interface ZIMCommunityChannelChangeInfo {
    /** The action type of the channel list change. */
    action: ZIMCommunityChannelListChangeAction;
    /** The changed community channel information. */
    channel: ZIMCommunityChannel;
}
/**
 * Community channel full info update information
 *
 * Description: Community channel full information update notification class.
 */
export interface ZIMCommunityChannelFullInfoUpdateInfo {
    /** Changed community channel full info */
    channelInfo: ZIMCommunityChannelFullInfo;
}
/**
 * Community channel mute configuration
 *
 * Description: Configuration class for muting a community channel.
 */
export interface ZIMCommunityChannelMuteConfig {
    /** The mute mode for the community channel. */
    mode: ZIMCommunityChannelMuteMode;
    /** The roles to mute. Empty means muting all roles. */
    roles: number[];
    /** The mute duration in seconds. 0 means unmute. */
    duration: number;
}
/**
 * Community channel mute configuration
 *
 * Description: Configuration class for muting community members.
 */
export interface ZIMCommunityMemberMuteConfig {
    /** The mute duration in seconds. 0 means unmute. */
    duration: number;
    /** The channel ID. Leave empty to mute at the community level. */
    channelID: string;
}
/**
 * Callback of the log upload result.
 */
export interface ZIMLogUploadedResult {
}
/**
 * Callback of the login result.
 *
 * Available since: 1.2.0 and above.
 * Description: After the developer login, execute the callback of the result.
 * Use cases: Developers can use the [errorCode] in the callback to determine whether the login is successful.
 * Triggered when: When the developer calls the [login] interface, the callback will be triggered.
 */
export interface ZIMLoggedInResult {
}
/**
 * Callback of the result of renewing the token.
 *
 * @param token The renewed token.
 */
export interface ZIMTokenRenewedResult {
    /** The renewed token. */
    token: string;
}
/**
 * Update the user name callback.
 *
 * @param userName The updated user name.
 */
export interface ZIMUserNameUpdatedResult {
    /** The updated user name. */
    userName: string;
}
/**
 * Callback for updating the user avatar URL.
 *
 * @param userAvatarUrl The updated user avatar URL.
 */
export interface ZIMUserAvatarUrlUpdatedResult {
    /** The updated user avatar URL. */
    userAvatarUrl: string;
}
/**
 * Update the user extended data callback.
 *
 * @param extendedData The updated user extended data.
 */
export interface ZIMUserExtendedDataUpdatedResult {
    /** The updated user extended data. */
    extendedData: string;
}
/**
 * The callback of the custom status update.
 *
 * @param customStatus The updated user custom status.
 */
export interface ZIMUserCustomStatusUpdatedResult {
    /** The updated user custom status. */
    customStatus: string;
}
/**
 * Query the userInfo callback.
 *
 * @param userList The queried user information list.
 * @param errorUserList The list of user IDs that failed to be queried.
 */
export interface ZIMUsersInfoQueriedResult {
    /** The queried user information list. */
    userList: ZIMUserFullInfo[];
    /** The list of user IDs that failed to be queried. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Update the result callback of the user offline push rule.
 *
 * @param offlinePushRule The updated user offline push rule.
 */
export interface ZIMUserOfflinePushRuleUpdatedResult {
    /** The updated user offline push rule. */
    offlinePushRule: ZIMUserOfflinePushRule;
}
/**
 * Callback result of querying personal user information and rules.
 *
 * @param selfUserInfo The current user information and rules.
 */
export interface ZIMSelfUserInfoQueriedResult {
    /** The current user information and rules. */
    selfUserInfo: ZIMSelfUserInfo;
}
/**
 * Result callback of the queryUsersStatus interface for batch querying user online status.
 *
 * @param userStatusList The queried user status list.
 * @param errorUserList The list of user IDs that failed to be queried.
 */
export interface ZIMUsersStatusQueriedResult {
    /** The queried user status list. */
    userStatusList: ZIMUserStatus[];
    /** The list of user IDs that failed to be queried. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback for the operation results of the batch subscription interface.
 *
 * @param errorUserList The list of user IDs that failed to subscribe.
 */
export interface ZIMUsersStatusSubscribedResult {
    /** The list of user IDs that failed to subscribe. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback for canceling the operations of subscribing interfaces in a batch.
 *
 * @param errorUserList The list of user IDs that failed to unsubscribe.
 */
export interface ZIMUsersStatusUnsubscribedResult {
    /** The list of user IDs that failed to unsubscribe. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Query for the current user subscription list operation results callback.
 *
 * @param userStatusSubscriptionList The user status subscription list.
 */
export interface ZIMSubscribedUserStatusListQueriedResult {
    /** The user status subscription list. */
    userStatusSubscriptionList: ZIMUserStatusSubscription[];
}
/**
 * Conversation query callback.
 *
 * @param conversation The queried conversation object.
 */
export interface ZIMConversationQueriedResult {
    /** The queried conversation object. */
    conversation: ZIMConversation;
}
/**
 * Session list query callback.
 *
 * @param conversationList The queried conversation list.
 */
export interface ZIMConversationListQueriedResult {
    /** The queried conversation list. */
    conversationList: ZIMConversation[];
}
/**
 * Query conversation unread total count callback.
 *
 * @param unreadMessageCount The total count of unread messages across all conversations.
 */
export interface ZIMConversationTotalUnreadMessageCountQueriedResult {
    /** The total count of unread messages across all conversations. */
    unreadMessageCount: number;
}
/**
 * Callback for conversation deletion.
 *
 * @param conversationID The ID of the deleted conversation.
 * @param conversationType The type of the deleted conversation.
 */
export interface ZIMConversationDeletedResult {
    /** The ID of the deleted conversation. */
    conversationID: string;
    /** The type of the deleted conversation. */
    conversationType: ZIMConversationType;
}
/**
 * Callback for conversations deletion.
 */
export interface ZIMConversationsAllDeletedResult {
}
/**
 * Callback for session unread clearing.
 *
 * @param conversationID The conversation ID whose unread message count was cleared.
 * @param conversationType The conversation type whose unread message count was cleared.
 */
export interface ZIMConversationUnreadMessageCountClearedResult {
    /** The conversation ID whose unread message count was cleared. */
    conversationID: string;
    /** The conversation type whose unread message count was cleared. */
    conversationType: ZIMConversationType;
}
/**
 * Callback for sessions unread clearing.
 */
export interface ZIMConversationTotalUnreadMessageCountClearedResult {
}
/**
 * Callback for conversation notification state settings.
 *
 * @param conversationID The conversation ID for which the notification status was set.
 * @param conversationType The conversation type for which the notification status was set.
 */
export interface ZIMConversationNotificationStatusSetResult {
    /** The conversation ID for which the notification status was set. */
    conversationID: string;
    /** The conversation type for which the notification status was set. */
    conversationType: ZIMConversationType;
}
/**
 * Callback interface for setting the read receipt conversation.
 *
 * @param conversationID The conversation ID for which the receipt was sent.
 * @param conversationType The conversation type for which the receipt was sent.
 */
export interface ZIMConversationMessageReceiptReadSentResult {
    /** The conversation ID for which the receipt was sent. */
    conversationID: string;
    /** The conversation type for which the receipt was sent. */
    conversationType: ZIMConversationType;
}
/**
 * Callback for conversation pinned state updated.
 *
 * @param conversationID The conversation ID whose pinned state was updated.
 * @param conversationType The conversation type whose pinned state was updated.
 */
export interface ZIMConversationPinnedStateUpdatedResult {
    /** The conversation ID whose pinned state was updated. */
    conversationID: string;
    /** The conversation type whose pinned state was updated. */
    conversationType: ZIMConversationType;
}
/**
 * Callback for querying the pinned conversation list.
 *
 * @param conversationList The queried pinned conversation list.
 */
export interface ZIMConversationPinnedListQueriedResult {
    /** The queried pinned conversation list. */
    conversationList: ZIMConversation[];
}
/**
 * Sets the callback for the session draft.
 *
 * @param conversationID The conversation ID for which the draft was set.
 * @param conversationType The conversation type for which the draft was set.
 */
export interface ZIMConversationDraftSetResult {
    /** The conversation ID for which the draft was set. */
    conversationID: string;
    /** The conversation type for which the draft was set. */
    conversationType: ZIMConversationType;
}
/**
 * Callback for conversation mark set.
 *
 * @param failedConversationInfos The list of conversation info objects that failed to have marks set.
 */
export interface ZIMConversationMarkSetResult {
    /** The list of conversation info objects that failed to have marks set. */
    failedConversationInfos: ZIMConversationBaseInfo[];
}
/**
 * Search for the return of local conversations results based on local messages.
 *
 * @param conversationSearchInfoList The list of searched conversation results.
 * @param nextFlag Anchor for the next page query.
 */
export interface ZIMConversationsSearchedResult {
    /** The list of searched conversation results. */
    conversationSearchInfoList: ZIMConversationSearchInfo[];
    /** Anchor for the next page query. */
    nextFlag: number;
}
/**
 * Callback of the result of sending the message.
 *
 * @param message Message object.
 */
export interface ZIMMessageSentResult {
    /** Message object. */
    message: ZIMMessage;
}
export type ZIMMessageAttachedResult = (message: ZIMMessage) => void;
export type ZIMMediaUploadingProgress = (message: ZIMMediaMessage, currentFileSize: number, totalFileSize: number) => void;
export type ZIMMultipleMediaUploadingProgress = (message: ZIMMultipleMessage, currentFileSize: number, totalFileSize: number, messageInfoIndex: number, currentIndexFileSize: number, totalIndexFileSize: number) => void;
/**
 * The developer uses this callback to get a list of queried messages, which can be used to display historical messages.
 *
 * @param conversationID Conversation ID.
 * @param conversationType Conversation type.
 * @param messageList Message list.
 */
export interface ZIMMessageQueriedResult {
    /** Conversation ID. */
    conversationID: string;
    /** Conversation type. */
    conversationType: ZIMConversationType;
    /** Message list. */
    messageList: ZIMMessage[];
}
/**
 * A callback to delete a message.
 *
 * @param conversationID Conversation ID.
 * @param conversationType Conversation type.
 */
export interface ZIMMessageDeletedResult {
    /** Conversation ID. */
    conversationID: string;
    /** Conversation type. */
    conversationType: ZIMConversationType;
}
/**
 * Deletes callbacks of all messages for all sessions.
 */
export interface ZIMConversationMessagesAllDeletedResult {
}
/**
 * Retracted news consequential reconciliation.
 *
 * @param message Message object.
 */
export interface ZIMMessageRevokedResult {
    /** Message object. */
    message: ZIMMessage;
}
/**
 * Callback of the result of inserting the message.
 *
 * @param message Message object.
 */
export interface ZIMMessageInsertedResult {
    /** Message object. */
    message: ZIMMessage;
}
/**
 * Callback for updating message local extension fields.
 *
 * @param message Message object.
 */
export interface ZIMMessageLocalExtendedDataUpdatedResult {
    /** Message object. */
    message: ZIMMessage;
}
/**
 * Callback interface for setting the read receipt message.
 *
 * @param conversationID Conversation ID.
 * @param conversationType Conversation type.
 * @param errorMessageIDs Error message ID list.
 */
export interface ZIMMessageReceiptsReadSentResult {
    /** Conversation ID. */
    conversationID: string;
    /** Conversation type. */
    conversationType: ZIMConversationType;
    /** Error message ID list. */
    errorMessageIDs: string[];
}
/**
 * Callback interface for query receipt message read.
 *
 * @param infos Message receipt information list.
 * @param errorMessageIDs Error message ID list.
 */
export interface ZIMMessageReceiptsInfoQueriedResult {
    /** Message receipt information list. */
    infos: ZIMMessageReceiptInfo[];
    /** Error message ID list. */
    errorMessageIDs: string[];
}
/**
 * Return of local message search results.
 *
 * @param conversationID Conversation ID.
 * @param conversationType Conversation type.
 * @param messageList Message list.
 * @param nextMessage Next message object.
 */
export interface ZIMMessagesSearchedResult {
    /** Conversation ID. */
    conversationID: string;
    /** Conversation type. */
    conversationType: ZIMConversationType;
    /** Message list. */
    messageList: ZIMMessage[];
    /** Next message object. */
    nextMessage?: ZIMMessage;
}
/**
 * Return of local message search results.
 *
 * @param messageList Message list.
 * @param nextMessage Next message object.
 */
export interface ZIMMessagesGlobalSearchedResult {
    /** Message list. */
    messageList: ZIMMessage[];
    /** Next message object. */
    nextMessage?: ZIMMessage;
}
/**
 * The addition of return for message reactions.
 *
 * @param reaction Message reaction object.
 */
export interface ZIMMessageReactionAddedResult {
    /** Message reaction object. */
    reaction: ZIMMessageReaction;
}
/**
 * The delete of return for message reactions.
 *
 * @param reaction Message reaction object.
 */
export interface ZIMMessageReactionDeletedResult {
    /** Message reaction object. */
    reaction: ZIMMessageReaction;
}
/**
 * The return of the query for the details of the reaction.
 *
 * @param message Message object.
 * @param userInfoList List of user reaction information.
 * @param reactionType Message reaction type.
 * @param nextFlag List query anchor, used to query the next page. The current value returns 0, which means that the list has been pulled out.
 * @param totalCount Total user count.
 */
export interface ZIMMessageReactionUserListQueriedResult {
    /** Message object. */
    message: ZIMMessage;
    /** List of user reaction information. */
    userInfoList: ZIMMessageReactionUserFullInfo[];
    /** Message reaction type. */
    reactionType: string;
    /** List query anchor, used to query the next page. The current value returns 0, which means that the list has been pulled out. */
    nextFlag: number;
    /** Total user count. */
    totalCount: number;
}
/**
 * Result callback for querying merge message details.
 *
 * @param message Combine message object. The messageList in this object already contains the sub-message list of the merged message.
 */
export interface ZIMCombineMessageDetailQueriedResult {
    /** Combine message object. The messageList in this object already contains the sub-message list of the merged message. */
    message: ZIMCombineMessage;
}
/**
 * The callback for querying the reply message list result.
 *
 * @param messageList Message list.
 * @param nextFlag List query anchor, used to query the next page. The current value returns 0, which means that the list has been pulled out.
 * @param rootRepliedInfo Root message reply information.
 */
export interface ZIMMessageRepliedListQueriedResult {
    /** Message list. */
    messageList: ZIMMessage[];
    /** List query anchor, used to query the next page. The current value returns 0, which means that the list has been pulled out. */
    nextFlag: number;
    /** Root message reply information. */
    rootRepliedInfo: ZIMMessageRootRepliedInfo;
}
/**
 * Callback of the result of editing the message.
 *
 * @param message Message object.
 */
export interface ZIMMessageEditedResult {
    /** Message object. */
    message: ZIMMessage;
}
/**
 * Callback of the result of cancel sending the message.
 */
export interface ZIMSendingMessageCancelledResult {
}
/**
 * Callback of the result of the message to be pinned or unpinned.
 */
export interface ZIMMessagePinnedResult {
}
/**
 * The developer uses this callback to get a list of queried pinned messages, which can be used to display pinned messages.
 *
 * @param messageList Message list.
 */
export interface ZIMPinnedMessageListQueriedResult {
    /** Message list. */
    messageList: ZIMMessage[];
}
/**
 * Callback of the result of creating the room.
 *
 * @param roomInfo Room information.
 */
export interface ZIMRoomCreatedResult {
    /** Room information. */
    roomInfo: ZIMRoomFullInfo;
}
/**
 * Callback of the result of joining the room.
 *
 * @param roomInfo Room information.
 */
export interface ZIMRoomJoinedResult {
    /** Room information. */
    roomInfo: ZIMRoomFullInfo;
}
/**
 * Callback of the result of entering the room.
 *
 * @param roomInfo Room information.
 */
export interface ZIMRoomEnteredResult {
    /** Room information. */
    roomInfo: ZIMRoomFullInfo;
}
/**
 * Callback of the result of switched rooms.
 *
 * @param roomInfo Room information.
 */
export interface ZIMRoomSwitchedResult {
    /** Room information. */
    roomInfo: ZIMRoomFullInfo;
}
/**
 * Callback of the result of leaving the room.
 *
 * @param roomID Room ID.
 */
export interface ZIMRoomLeftResult {
    /** Room ID. */
    roomID: string;
}
/**
 * Callback for the results of leaving all rooms.
 *
 * @param roomIDs Room ID list.
 */
export interface ZIMRoomAllLeftResult {
    /** Room ID list. */
    roomIDs: string[];
}
/**
 * Callback of the result of querying the room members list.
 *
 * @param roomID Room ID.
 * @param memberList Room member list.
 * @param nextFlag Used to query the next page. The current value returns an empty string, which means that the list has been pulled out.
 */
export interface ZIMRoomMemberQueriedResult {
    /** Room ID. */
    roomID: string;
    /** Room member list. */
    memberList: ZIMUserInfo[];
    /** Used to query the next page. The current value returns an empty string, which means that the list has been pulled out. */
    nextFlag: string;
}
/**
 * Callback for the result of querying the specified member of the room.
 *
 * @param roomID Room ID.
 * @param memberList Room member list.
 * @param errorUserList Error member list.
 */
export interface ZIMRoomMembersQueriedResult {
    /** Room ID. */
    roomID: string;
    /** Room member list. */
    memberList: ZIMRoomMemberInfo[];
    /** Error member list. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback of the result of querying the online members count in the room.
 *
 * @param roomID Room ID.
 * @param count Online member count.
 */
export interface ZIMRoomOnlineMemberCountQueriedResult {
    /** Room ID. */
    roomID: string;
    /** Online member count. */
    count: number;
}
/**
 * The return of the operation result of the room attribute.
 *
 * @param roomID Room ID.
 * @param errorKeys Error key list.
 */
export interface ZIMRoomAttributesOperatedResult {
    /** Room ID. */
    roomID: string;
    /** Error key list. */
    errorKeys: string[];
}
/**
 * The return of the result of the room attribute combination operation.
 *
 * @param roomID Room ID.
 */
export interface ZIMRoomAttributesBatchOperatedResult {
    /** Room ID. */
    roomID: string;
}
/**
 * Return of room attribute query results.
 *
 * @param roomID Room ID.
 * @param roomAttributes Room attributes.
 */
export interface ZIMRoomAttributesQueriedResult {
    /** Room ID. */
    roomID: string;
    /** Room attributes. */
    roomAttributes: Record<string, string>;
}
/**
 * Callback of the result of setting room member attributes.
 *
 * @param roomID Room ID.
 * @param infos Room member attribute operation information list.
 * @param errorUserList Error member list.
 */
export interface ZIMRoomMembersAttributesOperatedResult {
    /** Room ID. */
    roomID: string;
    /** Room member attribute operation information list. */
    infos: ZIMRoomMemberAttributesOperatedInfo[];
    /** Error member list. */
    errorUserList: string[];
}
/**
 * Returns the results of batch query of room user attributes.
 *
 * @param roomID Room ID.
 * @param infos Room member attribute information list.
 */
export interface ZIMRoomMembersAttributesQueriedResult {
    /** Room ID. */
    roomID: string;
    /** Room member attribute information list. */
    infos: ZIMRoomMemberAttributesInfo[];
}
/**
 * Returns the query result of the user attribute list in the room.
 *
 * @param roomID Room ID.
 * @param infos Room member attribute information list.
 * @param nextFlag Used to query the next page. The current value returns 0, which means that the list has been pulled out.
 */
export interface ZIMRoomMemberAttributesListQueriedResult {
    /** Room ID. */
    roomID: string;
    /** Room member attribute information list. */
    infos: ZIMRoomMemberAttributesInfo[];
    /** Used to query the next page. The current value returns 0, which means that the list has been pulled out. */
    nextFlag: string;
}
/**
 * Returns the result of creating a group.
 *
 * @param groupInfo Group information.
 * @param userList Group member information list.
 * @param errorUserList Error member list.
 */
export interface ZIMGroupCreatedResult {
    /** Group information. */
    groupInfo: ZIMGroupFullInfo;
    /** Group member information list. */
    userList: ZIMGroupMemberInfo[];
    /** Error member list. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Returns the result of dismissing the group.
 *
 * @param groupID Group ID.
 */
export interface ZIMGroupDismissedResult {
    /** Group ID. */
    groupID: string;
}
/**
 * Returns the result of joining the group.
 *
 * @param groupInfo Group information.
 */
export interface ZIMGroupJoinedResult {
    /** Group information. */
    groupInfo: ZIMGroupFullInfo;
}
/**
 * Return of the result of leaving the group.
 *
 * @param groupID Group ID.
 */
export interface ZIMGroupLeftResult {
    /** Group ID. */
    groupID: string;
}
/**
 * The result of the user being invited to the group is returned.
 *
 * @param groupID Group ID.
 * @param userList Group member information list.
 * @param errorUserList Error member list.
 */
export interface ZIMGroupUsersInvitedResult {
    /** Group ID. */
    groupID: string;
    /** Group member information list. */
    userList: ZIMGroupMemberInfo[];
    /** Error member list. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Returns the result of kicking out a group member.
 *
 * @param groupID Group ID.
 * @param kickedUserIDList List of user IDs kicked out.
 * @param errorUserList Error member list.
 */
export interface ZIMGroupMemberKickedResult {
    /** Group ID. */
    groupID: string;
    /** List of user IDs kicked out. */
    kickedUserIDs: string[];
    /** Error member list. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Returns the result of the group owner assignment.
 *
 * @param groupID Group ID.
 * @param toUserID New group owner user ID.
 */
export interface ZIMGroupOwnerTransferredResult {
    /** Group ID. */
    groupID: string;
    /** New group owner user ID. */
    toUserID: string;
}
/**
 * Returns the result of the group name update.
 *
 * @param groupID Group ID.
 * @param groupName Group name.
 */
export interface ZIMGroupNameUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** Group name. */
    groupName: string;
}
/**
 * Returns the result of the group avatar URL update.
 *
 * @param groupID Group ID.
 * @param groupAvatarUrl Group avatar URL.
 */
export interface ZIMGroupAvatarUrlUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** Group avatar URL. */
    groupAvatarUrl: string;
}
/**
 * The return of the results of the group announcement update.
 *
 * @param groupID Group ID.
 * @param groupNotice Group notice.
 */
export interface ZIMGroupNoticeUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** Group notice. */
    groupNotice: string;
}
/**
 * Returns the result of the group alias update.
 *
 * @param groupID Group ID.
 * @param groupAlias Group alias.
 */
export interface ZIMGroupAliasUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** Group alias. */
    groupAlias: string;
}
/**
 * Returns the result of querying group information.
 *
 * @param groupInfo Group information.
 */
export interface ZIMGroupInfoQueriedResult {
    /** Group information. */
    groupInfo: ZIMGroupFullInfo;
}
/**
 * Returns the result of a group attribute operation.
 *
 * @param groupID Group ID.
 * @param errorKeys Error keys.
 */
export interface ZIMGroupAttributesOperatedResult {
    /** Group ID. */
    groupID: string;
    /** Error keys. */
    errorKeys: string[];
}
/**
 * The return of query group attribute results.
 *
 * @param groupID Group ID.
 * @param groupAttributes Group attributes.
 */
export interface ZIMGroupAttributesQueriedResult {
    /** Group ID. */
    groupID: string;
    /** Group attributes. */
    groupAttributes: Record<string, string>;
}
/**
 * Returns the result of the member role update.
 *
 * @param groupID Group ID.
 * @param forUserID User ID.
 * @param role User role.
 */
export interface ZIMGroupMemberRoleUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** User ID. */
    forUserID: string;
    /** User role. */
    role: number;
}
/**
 * Returns the result of the group member's nickname update.
 *
 * @param groupID Group ID.
 * @param forUserID User ID.
 * @param nickname User nickname.
 */
export interface ZIMGroupMemberNicknameUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** User ID. */
    forUserID: string;
    /** User nickname. */
    nickname: string;
}
/**
 * Returns the result of the group member query.
 *
 * @param groupID Group ID.
 * @param userInfo Group member user information.
 */
export interface ZIMGroupMemberInfoQueriedResult {
    /** Group ID. */
    groupID: string;
    /** Group member user information. */
    userInfo: ZIMGroupMemberInfo;
}
/**
 * Returns the results of the query group list.
 *
 * @param groupList Group list.
 * @param nextFlag The pagination anchor returned by the SDK is 0 if it means the list has been completely queried, and non-0 if it means there is still data to be queried.
 */
export interface ZIMGroupListQueriedResult {
    /** Group list. */
    groupList: ZIMGroup[];
    /** The pagination anchor returned by the SDK is 0 if it means the list has been completely queried, and non-0 if it means there is still data to be queried. */
    nextFlag: number;
}
/**
 * Returns the result of querying the group member list.
 *
 * @param groupID Group ID.
 * @param userList Group member list.
 * @param nextFlag Used to query the next page. The current value returns 0, which means that the list has been pulled out.
 */
export interface ZIMGroupMemberListQueriedResult {
    /** Group ID. */
    groupID: string;
    /** Group member list. */
    userList: ZIMGroupMemberInfo[];
    /** Used to query the next page. The current value returns 0, which means that the list has been pulled out. */
    nextFlag: number;
}
/**
 * Returns the result of querying the group member count.
 *
 * @param groupID Group ID.
 * @param count Group member count.
 */
export interface ZIMGroupMemberCountQueriedResult {
    /** Group ID. */
    groupID: string;
    /** Group member count. */
    count: number;
}
/**
 * Callback interface for querying the specific read/unread member list of group receipt messages.
 *
 * @param groupID Group ID.
 * @param userList Group member list.
 * @param nextFlag Used to query the next page. The current value returns 0, which means that the list has been pulled out.
 */
export interface ZIMGroupMessageReceiptMemberListQueriedResult {
    /** Group ID. */
    groupID: string;
    /** Group member list. */
    userList: ZIMGroupMemberInfo[];
    /** Used to query the next page. The current value returns 0, which means that the list has been pulled out. */
    nextFlag: number;
}
/**
 * Returns the result of the group mute info update.
 *
 * @param groupID Group ID.
 * @param isMute Whether to mute.
 * @param mutedInfo Group mute information.
 */
export interface ZIMGroupMutedResult {
    /** Group ID. */
    groupID: string;
    /** Whether to mute. */
    isMute: boolean;
    /** Group mute information. */
    mutedInfo: ZIMGroupMuteInfo;
}
/**
 * Returns the result of the group members mute info update.
 *
 * @param groupID Group ID.
 * @param isMute Whether to mute.
 * @param duration Mute duration.
 * @param mutedUserIDs List of muted member userIDs.
 * @param errorUserList List of user information that failed to be muted.
 */
export interface ZIMGroupMembersMutedResult {
    /** Group ID. */
    groupID: string;
    /** Whether to mute. */
    isMute: boolean;
    /** Mute duration. */
    duration: number;
    /** List of muted member userIDs. */
    mutedUserIDs: string[];
    /** List of user information that failed to be muted. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Returns the result of querying the group muted member list.
 *
 * @param groupID Group ID.
 * @param nextFlag Used to query the next page. The current value returns 0, which means that the list has been pulled out.
 * @param userList Group member list.
 */
export interface ZIMGroupMemberMutedListQueriedResult {
    /** Group ID. */
    groupID: string;
    /** Used to query the next page. The current value returns 0, which means that the list has been pulled out. */
    nextFlag: number;
    /** Group member list. */
    userList: ZIMGroupMemberInfo[];
}
/**
 * Returns the result of search a group.
 *
 * @param groupSearchInfoList Group search information list.
 * @param nextFlag Used to query the next page. The current value returns 0, which means that the list has been pulled out.
 */
export interface ZIMGroupsSearchedResult {
    /** Group search information list. */
    groupSearchInfoList: ZIMGroupSearchInfo[];
    /** Used to query the next page. The current value returns 0, which means that the list has been pulled out. */
    nextFlag: number;
}
/**
 * Returns the result of search a group members.
 *
 * @param groupID Group ID.
 * @param userList Group member list.
 * @param nextFlag Used to query the next page. The current value returns 0, which means that the list has been pulled out.
 */
export interface ZIMGroupMembersSearchedResult {
    /** Group ID. */
    groupID: string;
    /** Group member list. */
    userList: ZIMGroupMemberInfo[];
    /** Used to query the next page. The current value returns 0, which means that the list has been pulled out. */
    nextFlag: number;
}
/**
 * The return of the results of the group verification mode update.
 *
 * @param groupID Group ID.
 * @param mode Group join mode.
 */
export interface ZIMGroupJoinModeUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** Group join mode. */
    mode: ZIMGroupJoinMode;
}
/**
 * The return of the results of the group verification mode update.
 *
 * @param groupID Group ID.
 * @param mode Group invite mode.
 */
export interface ZIMGroupInviteModeUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** Group invite mode. */
    mode: ZIMGroupInviteMode;
}
/**
 * The return of the results of the group verification mode update.
 *
 * @param groupID Group ID.
 * @param mode Group be invite mode.
 */
export interface ZIMGroupBeInviteModeUpdatedResult {
    /** Group ID. */
    groupID: string;
    /** Group be invite mode. */
    mode: ZIMGroupBeInviteMode;
}
/**
 * The return of the results of the group join application sent.
 *
 * @param groupID Group ID.
 */
export interface ZIMGroupJoinApplicationSentResult {
    /** Group ID. */
    groupID: string;
}
/**
 * The return of the results of the group join application accept.
 *
 * @param groupID Group ID.
 * @param userID User ID.
 */
export interface ZIMGroupJoinApplicationAcceptedResult {
    /** Group ID. */
    groupID: string;
    /** User ID. */
    userID: string;
}
/**
 * The return of the results of the group join application reject.
 *
 * @param groupID Group ID.
 * @param userID User ID.
 */
export interface ZIMGroupJoinApplicationRejectedResult {
    /** Group ID. */
    groupID: string;
    /** User ID. */
    userID: string;
}
/**
 * The return of the results of the group invite application sent.
 *
 * @param groupID Group ID.
 * @param errorUserList Invite failed user information list.
 */
export interface ZIMGroupInviteApplicationsSentResult {
    /** Group ID. */
    groupID: string;
    /** Invite failed user information list. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * The return of the results of the group invite application accept.
 *
 * @param groupInfo Group information.
 * @param inviterUserID Inviter user ID.
 */
export interface ZIMGroupInviteApplicationAcceptedResult {
    /** Group information. */
    groupInfo: ZIMGroupFullInfo;
    /** Inviter user ID. */
    inviterUserID: string;
}
/**
 * The return of the results of the group invite application accept.
 *
 * @param groupID Group information.
 * @param inviterUserID Inviter user ID.
 */
export interface ZIMGroupInviteApplicationRejectedResult {
    /** Group information. */
    groupID: string;
    /** Inviter user ID. */
    inviterUserID: string;
}
/**
 * Query the callback of group application list.
 *
 * @param applicationList Group application information list.
 * @param nextFlag Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out.
 */
export interface ZIMGroupApplicationListQueriedResult {
    /** Group application information list. */
    applicationList: ZIMGroupApplicationInfo[];
    /** Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out. */
    nextFlag: number;
}
/**
 * Action callback for sending a call invitation.
 *
 * @param callID Call ID.
 * @param errorUserList List of users who failed to receive the invitation.
 */
export interface ZIMCallInvitationSentResult {
    /** Call ID. */
    callID: string;
    timeout: number;
    /** List of users who failed to receive the invitation. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback result of inviting the current call.
 *
 * @param callID Call ID.
 * @param errorUserList List of users who failed to receive the invitation.
 */
export interface ZIMCallingInvitationSentResult {
    /** Call ID. */
    callID: string;
    /** List of users who failed to receive the invitation. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback for the action to cancel the call invitation.
 *
 * @param callID Call ID.
 * @param errorInvitees Call invitation failed user ID list.
 */
export interface ZIMCallCancelSentResult {
    /** Call ID. */
    callID: string;
    /** Call invitation failed user ID list. */
    errorInvitees: string[];
}
/**
 * Action callback for accepting call invitations.
 *
 * @param callID Call ID.
 */
export interface ZIMCallAcceptanceSentResult {
    /** Call ID. */
    callID: string;
}
/**
 * Action callback for rejecting a call invitation.
 *
 * @param callID Call ID.
 */
export interface ZIMCallRejectionSentResult {
    /** Call ID. */
    callID: string;
}
/**
 * Result callback of joining the call invitation.
 *
 * @param callID Call ID.
 * @param createTime Timestamp when the call was created, in milliseconds.
 * @param joinTime Timestamp when the user joined the call, in milliseconds.
 * @param extendedData Extended data.
 * @param callUserList List of call user information.
 */
export interface ZIMCallJoinSentResult {
    /** Call ID. */
    callID: string;
    /** Timestamp when the call was created, in milliseconds. */
    createTime: number;
    /** Timestamp when the user joined the call, in milliseconds. */
    joinTime: number;
    /** Extended data. */
    extendedData: string;
    /** List of call user information. */
    callUserList: ZIMCallUserInfo[];
}
/**
 * Quit the callback closure of the call invitation operation.
 *
 * @param callID Call ID.
 * @param createTime Timestamp when the call was created, in milliseconds.
 * @param acceptTime Timestamp when the call was accepted, in milliseconds.
 * @param quitTime Timestamp when the user quit the call, in milliseconds.
 */
export interface ZIMCallQuitSentResult {
    /** Call ID. */
    callID: string;
    /** Timestamp when the call was created, in milliseconds. */
    createTime: number;
    /** Timestamp when the call was accepted, in milliseconds. */
    acceptTime: number;
    /** Timestamp when the user quit the call, in milliseconds. */
    quitTime: number;
}
/**
 * Result callback of ending the call invitation.
 *
 * @param callID Call ID.
 * @param createTime Timestamp when the call was created, in milliseconds.
 * @param acceptTime Timestamp when the call was accepted, in milliseconds.
 * @param endTime Timestamp when the call ended, in milliseconds.
 */
export interface ZIMCallEndSentResult {
    /** Call ID. */
    callID: string;
    /** Timestamp when the call was created, in milliseconds. */
    createTime: number;
    /** Timestamp when the call was accepted, in milliseconds. */
    acceptTime: number;
    /** Timestamp when the call ended, in milliseconds. */
    endTime: number;
}
/**
 * Result Callback of querying the call list.
 *
 * @param callList Call information list.
 * @param nextFlag Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out.
 */
export interface ZIMCallInvitationListQueriedResult {
    /** Call information list. */
    callList: ZIMCallInfo[];
    /** Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out. */
    nextFlag: number;
}
/**
 * Add a friend result callback.
 *
 * @param friendInfo Friend information.
 */
export interface ZIMFriendAddedResult {
    /** Friend information. */
    friendInfo: ZIMFriendInfo;
}
/**
 * Return results of deleting friends.
 *
 * @param errorUserList Friend information.
 */
export interface ZIMFriendsDeletedResult {
    /** Friend information. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * The returned result of querying the friends list.
 *
 * @param friendList Friend information list.
 * @param nextFlag Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out.
 */
export interface ZIMFriendListQueriedResult {
    /** Friend information list. */
    friendList: ZIMFriendInfo[];
    /** Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out. */
    nextFlag: number;
}
/**
 * Return results of querying friend information in batches.
 *
 * @param friendInfos Friend information list.
 * @param errorUserList Friend information.
 */
export interface ZIMFriendsInfoQueriedResult {
    /** Friend information list. */
    friendInfos: ZIMFriendInfo[];
    /** Friend information. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Check the friend relationship result.
 *
 * @param relationInfos Friend relationship information list.
 * @param errorUserList Friend information.
 */
export interface ZIMFriendsRelationCheckedResult {
    /** Friend relationship information list. */
    relationInfos: ZIMFriendRelationInfo[];
    /** Friend information. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * The result of sending a friend application.
 *
 * @param applicationInfo Friend application information.
 */
export interface ZIMFriendApplicationSentResult {
    /** Friend application information. */
    applicationInfo: ZIMFriendApplicationInfo;
}
/**
 * Accept the returned result of friend application.
 *
 * @param friendInfo Friend information.
 */
export interface ZIMFriendApplicationAcceptedResult {
    /** Friend information. */
    friendInfo: ZIMFriendInfo;
}
/**
 * Accept the returned result of friend application.
 *
 * @param userInfo User information.
 */
export interface ZIMFriendApplicationRejectedResult {
    /** User information. */
    userInfo: ZIMUserInfo;
}
/**
 * The result of sending a friend application.
 *
 * @param applicationList Friend application information list.
 * @param nextFlag Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out.
 */
export interface ZIMFriendApplicationListQueriedResult {
    /** Friend application information list. */
    applicationList: ZIMFriendApplicationInfo[];
    /** Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out. */
    nextFlag: number;
}
/**
 * Return results of updating friend alias.
 *
 * @param friendInfo Friend information.
 */
export interface ZIMFriendAliasUpdatedResult {
    /** Friend information. */
    friendInfo: ZIMFriendInfo;
}
/**
 * Return results of updating friend attributes.
 *
 * @param friendInfo Friend information.
 */
export interface ZIMFriendAttributesUpdatedResult {
    /** Friend information. */
    friendInfo: ZIMFriendInfo;
}
/**
 * Search results returned by local friends.
 *
 * @param friendInfos Friend information list.
 * @param nextFlag Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out.
 */
export interface ZIMFriendsSearchedResult {
    /** Friend information list. */
    friendInfoList: ZIMFriendInfo[];
    /** Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out. */
    nextFlag: number;
}
/**
 * Callback for operation results of adding users to the blacklist.
 *
 * @param errorUserList User information.
 */
export interface ZIMBlacklistUsersAddedResult {
    /** User information. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * The callback result of the operation to remove the user from the blacklist.
 *
 * @param errorUserList User information.
 */
export interface ZIMBlacklistUsersRemovedResult {
    /** User information. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Query the blacklist result callback.
 *
 * @param blacklist Blacklist user information list.
 * @param nextFlag Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out.
 */
export interface ZIMBlacklistQueriedResult {
    /** Blacklist user information list. */
    blacklist: ZIMUserInfo[];
    /** Pagination flag, used to get the next page. The current value returns 0, indicating that all data has been pulled out. */
    nextFlag: number;
}
/**
 * Blacklist check result callback.
 *
 * @param isUserInBlacklist Whether in blacklist.
 */
export interface ZIMBlacklistCheckedResult {
    /** Whether in blacklist. */
    isUserInBlacklist: boolean;
}
/**
 * Callback of the result of creating a community.
 *
 * @param communityInfo Community information.
 */
export interface ZIMCommunityCreatedResult {
    /** Community information. */
    communityInfo: ZIMCommunityFullInfo;
}
/**
 * Callback of the result of dismissing a community.
 *
 * @param communityID Community ID.
 */
export interface ZIMCommunityDismissedResult {
    /** Community ID. */
    communityID: string;
}
/**
 * Callback of the result of joining a community.
 *
 * @param communityInfo Community information.
 */
export interface ZIMCommunityJoinedResult {
    /** Community information. */
    communityInfo: ZIMCommunityFullInfo;
}
/**
 * Callback of the result of leaving a community.
 *
 * @param communityID Community ID.
 */
export interface ZIMCommunityLeftResult {
    /** Community ID. */
    communityID: string;
}
/**
 * Callback of the result of querying the community list.
 *
 * @param communityList Community list.
 * @param nextFlag Next query community list flag.
 */
export interface ZIMCommunityListQueriedResult {
    /** Community list. */
    communityList: ZIMCommunity[];
    /** Next query community list flag. */
    nextFlag: number;
}
/**
 * Callback of the result of updating the community name.
 *
 * @param communityID Community ID.
 * @param communityName Community name.
 */
export interface ZIMCommunityNameUpdatedResult {
    /** Community ID. */
    communityID: string;
    /** Community name. */
    communityName: string;
}
/**
 * Callback of the result of updating the community avatar URL.
 *
 * @param communityID Community ID.
 * @param communityAvatarUrl Community avatar URL.
 */
export interface ZIMCommunityAvatarUrlUpdatedResult {
    /** Community ID. */
    communityID: string;
    /** Community avatar URL. */
    communityAvatarUrl: string;
}
/**
 * Callback of the result of updating the community notice.
 *
 * @param communityID Community ID.
 * @param communityNotice Community notice.
 */
export interface ZIMCommunityNoticeUpdatedResult {
    /** Community ID. */
    communityID: string;
    /** Community notice. */
    communityNotice: string;
}
/**
 * Callback of the result of operating community attributes.
 *
 * @param communityID Community ID.
 * @param errorKeys Error keys.
 */
export interface ZIMCommunityAttributesOperatedResult {
    /** Community ID. */
    communityID: string;
    /** Error keys. */
    errorKeys: string[];
}
/**
 * Callback of the result of setting the community notification status.
 *
 * @param communityID Community ID.
 */
export interface ZIMCommunityNotificationStatusSetResult {
    /** Community ID. */
    communityID: string;
}
/**
 * Callback of the result of querying community information.
 *
 * @param communityInfo Community information.
 */
export interface ZIMCommunityInfoQueriedResult {
    /** Community information. */
    communityInfo: ZIMCommunityFullInfo;
}
/**
 * Callback of the result of inviting users into the community.
 *
 * @param communityID Community ID.
 * @param errorUserList The error userID list
 */
export interface ZIMCommunityUsersInvitedResult {
    /** Community ID. */
    communityID: string;
    /** The error userID list */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback of the result of kicking members from the community.
 *
 * @param communityID Community ID.
 * @param errorUserList The error userID list
 */
export interface ZIMCommunityMembersKickedResult {
    /** Community ID. */
    communityID: string;
    /** The error userID list */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback of the result of updating a community member's role.
 *
 * @param communityID Community ID.
 * @param forUserID The user ID of the target user.
 * @param memberRole member role value
 */
export interface ZIMCommunityMemberRoleUpdatedResult {
    /** Community ID. */
    communityID: string;
    /** The user ID of the target user. */
    forUserID: string;
    /** member role value */
    memberRole: number;
}
/**
 * Callback of the result of transferring the community owner.
 *
 * @param communityID Community ID.
 * @param toUserID The user ID of the new community owner.
 */
export interface ZIMCommunityOwnerTransferredResult {
    /** Community ID. */
    communityID: string;
    /** The user ID of the new community owner. */
    toUserID: string;
}
/**
 * Callback of the result of querying the community member list.
 *
 * @param communityID Community ID.
 * @param memberList Community member list.
 * @param nextFlag Anchor for the next community member list query.
 */
export interface ZIMCommunityMemberListQueriedResult {
    /** Community ID. */
    communityID: string;
    /** Community member list. */
    memberList: ZIMCommunityMemberInfo[];
    /** Anchor for the next community member list query. */
    nextFlag: number;
}
/**
 * Callback of the result of querying specific community members.
 *
 * @param communityID Community ID.
 * @param memberList List of queried community members.
 * @param errorUserList List of users that failed to be queried.
 */
export interface ZIMCommunityMembersQueriedResult {
    /** Community ID. */
    communityID: string;
    /** List of queried community members. */
    memberList: ZIMCommunityMemberInfo[];
    /** List of users that failed to be queried. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback of the result of creating a community channel.
 *
 * @param channelInfo Community channel information.
 */
export interface ZIMCommunityChannelCreatedResult {
    /** Community channel information. */
    channelInfo: ZIMCommunityChannelFullInfo;
}
/**
 * Callback of the result of dismissing a community channel.
 *
 * @param communityID Community ID.
 * @param channelID Community channel ID
 */
export interface ZIMCommunityChannelDismissedResult {
    /** Community ID. */
    communityID: string;
    /** Community channel ID */
    channelID: string;
}
/**
 * Callback of the result of updating the community channel name.
 *
 * @param communityID Community ID.
 * @param channelID Community channel ID
 * @param channelName Community channel name.
 */
export interface ZIMCommunityChannelNameUpdatedResult {
    /** Community ID. */
    communityID: string;
    /** Community channel ID */
    channelID: string;
    /** Community channel name. */
    channelName: string;
}
/**
 * Callback of the result of updating the community channel avatar URL.
 *
 * @param communityID Community ID.
 * @param channelID Community channel ID
 * @param channelAvatarUrl Community avatar URL.
 */
export interface ZIMCommunityChannelAvatarUrlUpdatedResult {
    /** Community ID. */
    communityID: string;
    /** Community channel ID */
    channelID: string;
    /** Community avatar URL. */
    channelAvatarUrl: string;
}
/**
 * Callback of the result of updating the community channel notice.
 *
 * @param communityID Community ID.
 * @param channelID Community channel ID
 * @param channelNotice Community channel notice.
 */
export interface ZIMCommunityChannelNoticeUpdatedResult {
    /** Community ID. */
    communityID: string;
    /** Community channel ID */
    channelID: string;
    /** Community channel notice. */
    channelNotice: string;
}
/**
 * Callback of the result of operating community channel attributes.
 *
 * @param communityID Community ID.
 * @param channelID Community channel ID.
 * @param errorKeys Error keys.
 */
export interface ZIMCommunityChannelAttributesOperatedResult {
    /** Community ID. */
    communityID: string;
    /** Community channel ID. */
    channelID: string;
    /** Error keys. */
    errorKeys: string[];
}
/**
 * Callback of the result of querying community channel information.
 *
 * @param communityID Community ID.
 * @param channelInfos List of queried community channels.
 * @param errorChannelIDs List of channel IDs that failed to be queried.
 */
export interface ZIMCommunityChannelsInfoQueriedResult {
    /** Community ID. */
    communityID: string;
    /** List of queried community channels. */
    channelInfos: ZIMCommunityChannelFullInfo[];
    /** List of channel IDs that failed to be queried. */
    errorChannelIDs: string[];
}
/**
 * Callback of the result of querying the community channel list.
 *
 * @param communityID Community ID.
 * @param channelList Community channel list.
 * @param nextFlag Anchor for the next channel list query.
 */
export interface ZIMCommunityChannelListQueriedResult {
    /** Community ID. */
    communityID: string;
    /** Community channel list. */
    channelList: ZIMCommunityChannel[];
    /** Anchor for the next channel list query. */
    nextFlag: number;
}
/**
 * Callback of the result of muting community members.
 *
 * @param communityID Community ID.
 * @param channelID The channel ID. Empty means muted at the community level.
 * @param isMute Whether to mute the members.
 * @param errorUserList List of users that failed to be muted.
 */
export interface ZIMCommunityMembersMutedResult {
    /** Community ID. */
    communityID: string;
    /** The channel ID. Empty means muted at the community level. */
    channelID: string;
    /** Whether to mute the members. */
    isMute: boolean;
    /** List of users that failed to be muted. */
    errorUserList: ZIMErrorUserInfo[];
}
/**
 * Callback of the result of muting community channels.
 *
 * @param communityID Community ID.
 * @param isMute Whether to mute the channels.
 * @param errorChannelIDs List of channel IDs that failed to be muted.
 */
export interface ZIMCommunityChannelsMutedResult {
    /** Community ID. */
    communityID: string;
    /** Whether to mute the channels. */
    isMute: boolean;
    /** List of channel IDs that failed to be muted. */
    errorChannelIDs: string[];
}
