


/**
 * 群被邀请模式
 * - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/Team.html#.beInviteMode)
 */
export const enum NIMTeamBeInviteMode {
  /** 需要邀请方同意 */
  needVerify = 'needVerify',
  /** 不需要邀请方同意 */
  noVerify = 'noVerify',
}


/**
 * 群邀请模式
 * - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/Team.html#.inviteMode)
 */
export const enum NIMTeamInviteMode {
  /** 只有管理员/群主可以邀请他人入群 */
  manager = 'manager',
  /** 所有人可以邀请他人入群 */
  all = 'all',
}


/**
 * 群加入方式
 * - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/Team.html#.joinMode)
 */
export const enum NIMTeamJoinMode {
  /** 不需要验证 */
  noVerify = 'noVerify',
  /** 需要验证 */
  needVerify = 'needVerify',
  /** 禁止任何人加入 */
  rejectAll = 'rejectAll',
}


/**
 * 群类型
 * - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/Team.html#.type)
 */
export const enum NIMTeamType {
  /** 普通群 */
  normal = 'normal',
  /** 高级群 */
  advanced = 'advanced',
}


/**
 * 群信息修改权限
 * - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/Team.html#.updateTeamMode)
 */
export const enum NIMTeamUpdateTeamMode {
  /** 只有管理员/群主可以修改 */
  manager = 'manager',
  /** 所有人可以修改 */
  all = 'all',
}

/**
 * 群信息自定义字段修改权限
 * - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/Team.html#.updateCustomMode)
 */
export const enum NIMTeamUpdateCustomMode {
  /** 只有管理员/群主可以修改 */
  manager = 'manager',
  /** 所有人可以修改 */
  all = 'all',
}

/** 群禁言类型 */
export const enum NIMTeamMuteType {
  /** 都不禁言 */
  none = 'none',
  /** 普通成员禁言，即普通成员不能发消息 */
  normal = 'normal',
  /** 全体禁言，即所有成员均不能发消息禁言模式 */
  all = 'all',
}


/**
 * 群
 * - [相关文档](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/Team.html)
 */
export interface NIMTeam {
  /** 群Id */
  teamId: string;
  /** 群类型 */
  type: NIMTeamType;
  /** 群名字 */
  name: string;
  /** 群头像 */
  avatar: string;
  /** 群简介 */
  intro: string;
  /** 群公告 */
  announcement: string;
  /** 群加入方式, 仅限高级群 */
  joinMode: NIMTeamJoinMode;
  /** 群被邀请模式, 仅限高级群 */
  beInviteMode: NIMTeamBeInviteMode;
  /** 群邀请模式, 仅限高级群 */
  inviteMode: NIMTeamInviteMode;
  /** 群信息修改权限, 仅限高级群 */
  updateTeamMode: NIMTeamUpdateTeamMode;
  /** 群信息自定义字段修改权限, 仅限高级群 */
  updateCustomMode: NIMTeamUpdateCustomMode;
  /** 群主 */
  owner: string;
  /** 群人数上限 */
  level: number;
  /** 群成员数量 */
  memberNum: number;
  /** 群成员最后更新时间戳(ms) */
  memberUpdateTime: number;
  /** 群创建时间戳(ms) */
  createTime: number;
  /** 群最后更新时间戳(ms) */
  updateTime: number;
  /** 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串 */
  custom: string;
  /** 第三方服务器扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串 */
  serverCustom: string;
  /** 是否有效, 解散后该群无效 */
  valid: boolean;
  /** 该群是否对当前用户有效, 如果无效, 那么说明被踢了 */
  validToCurrentUser: boolean;
  /** 是否禁言, 禁言状态下普通成员不能发送消息, 创建者和管理员可以发送消息 */
  mute: boolean;
  /** none: 都不禁言; normal: 普通成员禁言，即普通成员不能发消息; all: 全体禁言，即所有成员均不能发消息禁言模式 */
  muteType: NIMTeamMuteType;
}
