text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: IM.Message.proto
  
  // This CPP symbol can be defined to use imports that match up to the framework
  // imports needed when using CocoaPods.
  #if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
   #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
  #endif
  
  #if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
   #import <Protobuf/GPBProtocolBuffers.h>
  #else
   #import "GPBProtocolBuffers.h"
  #endif
  
  #if GOOGLE_PROTOBUF_OBJC_VERSION < 30002
  #error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
  #endif
  #if 30002 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
  #error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
  #endif
  
  // @@protoc_insertion_point(imports)
  
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wdeprecated-declarations"
  
  CF_EXTERN_C_BEGIN
  
  @class MsgInfo;
  @class UnreadInfo;
  GPB_ENUM_FWD_DECLARE(MsgType);
  GPB_ENUM_FWD_DECLARE(SessionType);
  
  NS_ASSUME_NONNULL_BEGIN
  
  #pragma mark - ImMessageRoot
  
  /**
   * Exposes the extension registry for this file.
   *
   * The base class provides:
   * @code
   *   + (GPBExtensionRegistry *)extensionRegistry;
   * @endcode
   * which is a @c GPBExtensionRegistry that includes all the extensions defined by
   * this file and all files that it depends on.
   **/
  @interface ImMessageRoot : GPBRootObject
  @end
  
  #pragma mark - IMMsgData
  
  typedef GPB_ENUM(IMMsgData_FieldNumber) {
    IMMsgData_FieldNumber_FromUserId = 1,
    IMMsgData_FieldNumber_ToSessionId = 2,
    IMMsgData_FieldNumber_MsgId = 3,
    IMMsgData_FieldNumber_CreateTime = 4,
    IMMsgData_FieldNumber_MsgType = 5,
    IMMsgData_FieldNumber_MsgData = 6,
    IMMsgData_FieldNumber_AttachData = 20,
  };
  
  /**
   * service id  0x0003
   **/
  @interface IMMsgData : GPBMessage
  
  /** cmd id:		0x0301 */
  @property(nonatomic, readwrite) uint32_t fromUserId;
  
  @property(nonatomic, readwrite) BOOL hasFromUserId;
  /** 消息接受方 */
  @property(nonatomic, readwrite) uint32_t toSessionId;
  
  @property(nonatomic, readwrite) BOOL hasToSessionId;
  @property(nonatomic, readwrite) uint32_t msgId;
  
  @property(nonatomic, readwrite) BOOL hasMsgId;
  @property(nonatomic, readwrite) uint32_t createTime;
  
  @property(nonatomic, readwrite) BOOL hasCreateTime;
  @property(nonatomic, readwrite) enum MsgType msgType;
  
  @property(nonatomic, readwrite) BOOL hasMsgType;
  @property(nonatomic, readwrite, copy, null_resettable) NSData *msgData;
  /** Test to see if @c msgData has been set. */
  @property(nonatomic, readwrite) BOOL hasMsgData;
  
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  #pragma mark - IMMsgDataAck
  
  typedef GPB_ENUM(IMMsgDataAck_FieldNumber) {
    IMMsgDataAck_FieldNumber_UserId = 1,
    IMMsgDataAck_FieldNumber_SessionId = 2,
    IMMsgDataAck_FieldNumber_MsgId = 3,
    IMMsgDataAck_FieldNumber_SessionType = 4,
  };
  
  @interface IMMsgDataAck : GPBMessage
  
  /** cmd id:		0x0302 */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite) uint32_t msgId;
  
  @property(nonatomic, readwrite) BOOL hasMsgId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @end
  
  #pragma mark - IMMsgDataReadAck
  
  typedef GPB_ENUM(IMMsgDataReadAck_FieldNumber) {
    IMMsgDataReadAck_FieldNumber_UserId = 1,
    IMMsgDataReadAck_FieldNumber_SessionId = 2,
    IMMsgDataReadAck_FieldNumber_MsgId = 3,
    IMMsgDataReadAck_FieldNumber_SessionType = 4,
  };
  
  @interface IMMsgDataReadAck : GPBMessage
  
  /** cmd id:		0x0303 */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite) uint32_t msgId;
  
  @property(nonatomic, readwrite) BOOL hasMsgId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @end
  
  #pragma mark - IMMsgDataReadNotify
  
  typedef GPB_ENUM(IMMsgDataReadNotify_FieldNumber) {
    IMMsgDataReadNotify_FieldNumber_UserId = 1,
    IMMsgDataReadNotify_FieldNumber_SessionId = 2,
    IMMsgDataReadNotify_FieldNumber_MsgId = 3,
    IMMsgDataReadNotify_FieldNumber_SessionType = 4,
  };
  
  @interface IMMsgDataReadNotify : GPBMessage
  
  /** cmd id:		0x0304 */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite) uint32_t msgId;
  
  @property(nonatomic, readwrite) BOOL hasMsgId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @end
  
  #pragma mark - IMClientTimeReq
  
  /**
   * cmd id:		0x0305
   **/
  @interface IMClientTimeReq : GPBMessage
  
  @end
  
  #pragma mark - IMClientTimeRsp
  
  typedef GPB_ENUM(IMClientTimeRsp_FieldNumber) {
    IMClientTimeRsp_FieldNumber_ServerTime = 1,
  };
  
  @interface IMClientTimeRsp : GPBMessage
  
  /** cmd id:		0x0306 */
  @property(nonatomic, readwrite) uint32_t serverTime;
  
  @property(nonatomic, readwrite) BOOL hasServerTime;
  @end
  
  #pragma mark - IMUnreadMsgCntReq
  
  typedef GPB_ENUM(IMUnreadMsgCntReq_FieldNumber) {
    IMUnreadMsgCntReq_FieldNumber_UserId = 1,
    IMUnreadMsgCntReq_FieldNumber_AttachData = 20,
  };
  
  @interface IMUnreadMsgCntReq : GPBMessage
  
  /** cmd id:		0x0307 */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  #pragma mark - IMUnreadMsgCntRsp
  
  typedef GPB_ENUM(IMUnreadMsgCntRsp_FieldNumber) {
    IMUnreadMsgCntRsp_FieldNumber_UserId = 1,
    IMUnreadMsgCntRsp_FieldNumber_TotalCnt = 2,
    IMUnreadMsgCntRsp_FieldNumber_UnreadinfoListArray = 3,
    IMUnreadMsgCntRsp_FieldNumber_AttachData = 20,
  };
  
  @interface IMUnreadMsgCntRsp : GPBMessage
  
  /** cmd id:		0x0308 */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) uint32_t totalCnt;
  
  @property(nonatomic, readwrite) BOOL hasTotalCnt;
  @property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<UnreadInfo*> *unreadinfoListArray;
  /** The number of items in @c unreadinfoListArray without causing the array to be created. */
  @property(nonatomic, readonly) NSUInteger unreadinfoListArray_Count;
  
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  #pragma mark - IMGetMsgListReq
  
  typedef GPB_ENUM(IMGetMsgListReq_FieldNumber) {
    IMGetMsgListReq_FieldNumber_UserId = 1,
    IMGetMsgListReq_FieldNumber_SessionType = 2,
    IMGetMsgListReq_FieldNumber_SessionId = 3,
    IMGetMsgListReq_FieldNumber_MsgIdBegin = 4,
    IMGetMsgListReq_FieldNumber_MsgCnt = 5,
    IMGetMsgListReq_FieldNumber_AttachData = 20,
  };
  
  @interface IMGetMsgListReq : GPBMessage
  
  /** cmd id:		0x0309 */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite) uint32_t msgIdBegin;
  
  @property(nonatomic, readwrite) BOOL hasMsgIdBegin;
  @property(nonatomic, readwrite) uint32_t msgCnt;
  
  @property(nonatomic, readwrite) BOOL hasMsgCnt;
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  #pragma mark - IMGetMsgListRsp
  
  typedef GPB_ENUM(IMGetMsgListRsp_FieldNumber) {
    IMGetMsgListRsp_FieldNumber_UserId = 1,
    IMGetMsgListRsp_FieldNumber_SessionType = 2,
    IMGetMsgListRsp_FieldNumber_SessionId = 3,
    IMGetMsgListRsp_FieldNumber_MsgIdBegin = 4,
    IMGetMsgListRsp_FieldNumber_MsgListArray = 5,
    IMGetMsgListRsp_FieldNumber_AttachData = 20,
  };
  
  /**
   * 对于群而言，如果消息数目返回的数值小于请求的cnt,则表示群的消息能拉取的到头了，更早的消息没有权限拉取。
   * 如果msg_cnt 和 msg_id_begin计算得到的最早消息id与实际返回的最早消息id不一致，说明服务器消息有缺失，需要
   * 客户端做一个缺失标记，避免下次再次拉取。
   **/
  @interface IMGetMsgListRsp : GPBMessage
  
  /** cmd id:		0x030a */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite) uint32_t msgIdBegin;
  
  @property(nonatomic, readwrite) BOOL hasMsgIdBegin;
  @property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<MsgInfo*> *msgListArray;
  /** The number of items in @c msgListArray without causing the array to be created. */
  @property(nonatomic, readonly) NSUInteger msgListArray_Count;
  
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  #pragma mark - IMGetLatestMsgIdReq
  
  typedef GPB_ENUM(IMGetLatestMsgIdReq_FieldNumber) {
    IMGetLatestMsgIdReq_FieldNumber_UserId = 1,
    IMGetLatestMsgIdReq_FieldNumber_SessionType = 2,
    IMGetLatestMsgIdReq_FieldNumber_SessionId = 3,
    IMGetLatestMsgIdReq_FieldNumber_AttachData = 20,
  };
  
  @interface IMGetLatestMsgIdReq : GPBMessage
  
  /** cmd id: 		0x030b */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  #pragma mark - IMGetLatestMsgIdRsp
  
  typedef GPB_ENUM(IMGetLatestMsgIdRsp_FieldNumber) {
    IMGetLatestMsgIdRsp_FieldNumber_UserId = 1,
    IMGetLatestMsgIdRsp_FieldNumber_SessionType = 2,
    IMGetLatestMsgIdRsp_FieldNumber_SessionId = 3,
    IMGetLatestMsgIdRsp_FieldNumber_LatestMsgId = 4,
    IMGetLatestMsgIdRsp_FieldNumber_AttachData = 20,
  };
  
  @interface IMGetLatestMsgIdRsp : GPBMessage
  
  /** cmd id:		0x030c */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite) uint32_t latestMsgId;
  
  @property(nonatomic, readwrite) BOOL hasLatestMsgId;
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  #pragma mark - IMGetMsgByIdReq
  
  typedef GPB_ENUM(IMGetMsgByIdReq_FieldNumber) {
    IMGetMsgByIdReq_FieldNumber_UserId = 1,
    IMGetMsgByIdReq_FieldNumber_SessionType = 2,
    IMGetMsgByIdReq_FieldNumber_SessionId = 3,
    IMGetMsgByIdReq_FieldNumber_MsgIdListArray = 4,
    IMGetMsgByIdReq_FieldNumber_AttachData = 20,
  };
  
  @interface IMGetMsgByIdReq : GPBMessage
  
  /** cmd id: 		0x030d */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite, strong, null_resettable) GPBUInt32Array *msgIdListArray;
  /** The number of items in @c msgIdListArray without causing the array to be created. */
  @property(nonatomic, readonly) NSUInteger msgIdListArray_Count;
  
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  #pragma mark - IMGetMsgByIdRsp
  
  typedef GPB_ENUM(IMGetMsgByIdRsp_FieldNumber) {
    IMGetMsgByIdRsp_FieldNumber_UserId = 1,
    IMGetMsgByIdRsp_FieldNumber_SessionType = 2,
    IMGetMsgByIdRsp_FieldNumber_SessionId = 3,
    IMGetMsgByIdRsp_FieldNumber_MsgListArray = 4,
    IMGetMsgByIdRsp_FieldNumber_AttachData = 20,
  };
  
  @interface IMGetMsgByIdRsp : GPBMessage
  
  /** cmd id:		0x030e */
  @property(nonatomic, readwrite) uint32_t userId;
  
  @property(nonatomic, readwrite) BOOL hasUserId;
  @property(nonatomic, readwrite) enum SessionType sessionType;
  
  @property(nonatomic, readwrite) BOOL hasSessionType;
  @property(nonatomic, readwrite) uint32_t sessionId;
  
  @property(nonatomic, readwrite) BOOL hasSessionId;
  @property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<MsgInfo*> *msgListArray;
  /** The number of items in @c msgListArray without causing the array to be created. */
  @property(nonatomic, readonly) NSUInteger msgListArray_Count;
  
  @property(nonatomic, readwrite, copy, null_resettable) NSData *attachData;
  /** Test to see if @c attachData has been set. */
  @property(nonatomic, readwrite) BOOL hasAttachData;
  
  @end
  
  NS_ASSUME_NONNULL_END
  
  CF_EXTERN_C_END
  
  #pragma clang diagnostic pop
  
  // @@protoc_insertion_point(global_scope)
  