text: // source: account/v4/account_service.proto
  /**
   * @fileoverview
   * @enhanceable
   * @suppress {missingRequire} reports error on implicit type usages.
   * @suppress {messageConventions} JS Compiler reports an error if a variable or
   *     field starts with 'MSG_' and isn't a translatable message.
   * @public
   */
  // GENERATED CODE -- DO NOT EDIT!
  /* eslint-disable */
  // @ts-nocheck
  
  var jspb = require('@kintegrate/google-protobuf')
  var goog = jspb
  var global = Function('return this')()
  
  var validate_validate_pb = require('../../validate/validate_pb.js')
  goog.object.extend(proto, validate_validate_pb)
  var common_v4_model_pb = require('../../common/v4/model_pb.js')
  goog.object.extend(proto, common_v4_model_pb)
  goog.exportSymbol('proto.kin.agora.account.v4.AccountInfo', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.AccountUpdateEvent', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.CreateAccountRequest', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.CreateAccountResponse', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.CreateAccountResponse.Result', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.Event', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.Event.TypeCase', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.Events', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.Events.Result', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.GetAccountInfoRequest', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.GetAccountInfoResponse', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.GetAccountInfoResponse.Result', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.GetEventsRequest', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.ResolveTokenAccountsRequest', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.ResolveTokenAccountsResponse', null, global)
  goog.exportSymbol('proto.kin.agora.account.v4.TransactionEvent', null, global)
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.AccountInfo = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.AccountInfo, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.AccountInfo.displayName = 'proto.kin.agora.account.v4.AccountInfo'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.CreateAccountRequest = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.CreateAccountRequest, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.CreateAccountRequest.displayName = 'proto.kin.agora.account.v4.CreateAccountRequest'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.CreateAccountResponse = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.CreateAccountResponse, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.CreateAccountResponse.displayName = 'proto.kin.agora.account.v4.CreateAccountResponse'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.GetAccountInfoRequest, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.GetAccountInfoRequest.displayName = 'proto.kin.agora.account.v4.GetAccountInfoRequest'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.GetAccountInfoResponse, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.GetAccountInfoResponse.displayName = 'proto.kin.agora.account.v4.GetAccountInfoResponse'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.ResolveTokenAccountsRequest, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.ResolveTokenAccountsRequest.displayName =
      'proto.kin.agora.account.v4.ResolveTokenAccountsRequest'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse = function (opt_data) {
    jspb.Message.initialize(
      this,
      opt_data,
      0,
      -1,
      proto.kin.agora.account.v4.ResolveTokenAccountsResponse.repeatedFields_,
      null,
    )
  }
  goog.inherits(proto.kin.agora.account.v4.ResolveTokenAccountsResponse, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.ResolveTokenAccountsResponse.displayName =
      'proto.kin.agora.account.v4.ResolveTokenAccountsResponse'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.GetEventsRequest = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.GetEventsRequest, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.GetEventsRequest.displayName = 'proto.kin.agora.account.v4.GetEventsRequest'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.Events = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, proto.kin.agora.account.v4.Events.repeatedFields_, null)
  }
  goog.inherits(proto.kin.agora.account.v4.Events, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.Events.displayName = 'proto.kin.agora.account.v4.Events'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.Event = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, proto.kin.agora.account.v4.Event.oneofGroups_)
  }
  goog.inherits(proto.kin.agora.account.v4.Event, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.Event.displayName = 'proto.kin.agora.account.v4.Event'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.AccountUpdateEvent = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.AccountUpdateEvent, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.AccountUpdateEvent.displayName = 'proto.kin.agora.account.v4.AccountUpdateEvent'
  }
  /**
   * Generated by JsPbCodeGenerator.
   * @param {Array=} opt_data Optional initial data array, typically from a
   * server response, or constructed directly in Javascript. The array is used
   * in place and becomes part of the constructed object. It is not cloned.
   * If no data is provided, the constructed object will be empty, but still
   * valid.
   * @extends {jspb.Message}
   * @constructor
   */
  proto.kin.agora.account.v4.TransactionEvent = function (opt_data) {
    jspb.Message.initialize(this, opt_data, 0, -1, null, null)
  }
  goog.inherits(proto.kin.agora.account.v4.TransactionEvent, jspb.Message)
  if (goog.DEBUG && !COMPILED) {
    /**
     * @public
     * @override
     */
    proto.kin.agora.account.v4.TransactionEvent.displayName = 'proto.kin.agora.account.v4.TransactionEvent'
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.AccountInfo.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.AccountInfo.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.AccountInfo} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.AccountInfo.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          accountId: (f = msg.getAccountId()) && common_v4_model_pb.SolanaAccountId.toObject(includeInstance, f),
          balance: jspb.Message.getFieldWithDefault(msg, 2, '0'),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.AccountInfo}
   */
  proto.kin.agora.account.v4.AccountInfo.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.AccountInfo()
    return proto.kin.agora.account.v4.AccountInfo.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.AccountInfo} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.AccountInfo}
   */
  proto.kin.agora.account.v4.AccountInfo.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new common_v4_model_pb.SolanaAccountId()
          reader.readMessage(value, common_v4_model_pb.SolanaAccountId.deserializeBinaryFromReader)
          msg.setAccountId(value)
          break
        case 2:
          var value = /** @type {string} */ (reader.readInt64String())
          msg.setBalance(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.AccountInfo.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.AccountInfo.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.AccountInfo} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.AccountInfo.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getAccountId()
    if (f != null) {
      writer.writeMessage(1, f, common_v4_model_pb.SolanaAccountId.serializeBinaryToWriter)
    }
    f = message.getBalance()
    if (parseInt(f, 10) !== 0) {
      writer.writeInt64String(2, f)
    }
  }
  
  /**
   * optional kin.agora.common.v4.SolanaAccountId account_id = 1;
   * @return {?proto.kin.agora.common.v4.SolanaAccountId}
   */
  proto.kin.agora.account.v4.AccountInfo.prototype.getAccountId = function () {
    return /** @type{?proto.kin.agora.common.v4.SolanaAccountId} */ (jspb.Message.getWrapperField(
      this,
      common_v4_model_pb.SolanaAccountId,
      1,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.common.v4.SolanaAccountId|undefined} value
   * @return {!proto.kin.agora.account.v4.AccountInfo} returns this
   */
  proto.kin.agora.account.v4.AccountInfo.prototype.setAccountId = function (value) {
    return jspb.Message.setWrapperField(this, 1, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.AccountInfo} returns this
   */
  proto.kin.agora.account.v4.AccountInfo.prototype.clearAccountId = function () {
    return this.setAccountId(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.AccountInfo.prototype.hasAccountId = function () {
    return jspb.Message.getField(this, 1) != null
  }
  
  /**
   * optional int64 balance = 2;
   * @return {string}
   */
  proto.kin.agora.account.v4.AccountInfo.prototype.getBalance = function () {
    return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, '0'))
  }
  
  /**
   * @param {string} value
   * @return {!proto.kin.agora.account.v4.AccountInfo} returns this
   */
  proto.kin.agora.account.v4.AccountInfo.prototype.setBalance = function (value) {
    return jspb.Message.setProto3StringIntField(this, 2, value)
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.CreateAccountRequest.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.CreateAccountRequest.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.CreateAccountRequest} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.CreateAccountRequest.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          transaction: (f = msg.getTransaction()) && common_v4_model_pb.Transaction.toObject(includeInstance, f),
          commitment: jspb.Message.getFieldWithDefault(msg, 2, 0),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.CreateAccountRequest}
   */
  proto.kin.agora.account.v4.CreateAccountRequest.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.CreateAccountRequest()
    return proto.kin.agora.account.v4.CreateAccountRequest.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.CreateAccountRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.CreateAccountRequest}
   */
  proto.kin.agora.account.v4.CreateAccountRequest.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new common_v4_model_pb.Transaction()
          reader.readMessage(value, common_v4_model_pb.Transaction.deserializeBinaryFromReader)
          msg.setTransaction(value)
          break
        case 2:
          var value = /** @type {!proto.kin.agora.common.v4.Commitment} */ (reader.readEnum())
          msg.setCommitment(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.CreateAccountRequest.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.CreateAccountRequest.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.CreateAccountRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.CreateAccountRequest.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getTransaction()
    if (f != null) {
      writer.writeMessage(1, f, common_v4_model_pb.Transaction.serializeBinaryToWriter)
    }
    f = message.getCommitment()
    if (f !== 0.0) {
      writer.writeEnum(2, f)
    }
  }
  
  /**
   * optional kin.agora.common.v4.Transaction transaction = 1;
   * @return {?proto.kin.agora.common.v4.Transaction}
   */
  proto.kin.agora.account.v4.CreateAccountRequest.prototype.getTransaction = function () {
    return /** @type{?proto.kin.agora.common.v4.Transaction} */ (jspb.Message.getWrapperField(
      this,
      common_v4_model_pb.Transaction,
      1,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.common.v4.Transaction|undefined} value
   * @return {!proto.kin.agora.account.v4.CreateAccountRequest} returns this
   */
  proto.kin.agora.account.v4.CreateAccountRequest.prototype.setTransaction = function (value) {
    return jspb.Message.setWrapperField(this, 1, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.CreateAccountRequest} returns this
   */
  proto.kin.agora.account.v4.CreateAccountRequest.prototype.clearTransaction = function () {
    return this.setTransaction(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.CreateAccountRequest.prototype.hasTransaction = function () {
    return jspb.Message.getField(this, 1) != null
  }
  
  /**
   * optional kin.agora.common.v4.Commitment commitment = 2;
   * @return {!proto.kin.agora.common.v4.Commitment}
   */
  proto.kin.agora.account.v4.CreateAccountRequest.prototype.getCommitment = function () {
    return /** @type {!proto.kin.agora.common.v4.Commitment} */ (jspb.Message.getFieldWithDefault(this, 2, 0))
  }
  
  /**
   * @param {!proto.kin.agora.common.v4.Commitment} value
   * @return {!proto.kin.agora.account.v4.CreateAccountRequest} returns this
   */
  proto.kin.agora.account.v4.CreateAccountRequest.prototype.setCommitment = function (value) {
    return jspb.Message.setProto3EnumField(this, 2, value)
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.CreateAccountResponse.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.CreateAccountResponse.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.CreateAccountResponse} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.CreateAccountResponse.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          result: jspb.Message.getFieldWithDefault(msg, 1, 0),
          accountInfo: (f = msg.getAccountInfo()) && proto.kin.agora.account.v4.AccountInfo.toObject(includeInstance, f),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.CreateAccountResponse}
   */
  proto.kin.agora.account.v4.CreateAccountResponse.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.CreateAccountResponse()
    return proto.kin.agora.account.v4.CreateAccountResponse.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.CreateAccountResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.CreateAccountResponse}
   */
  proto.kin.agora.account.v4.CreateAccountResponse.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = /** @type {!proto.kin.agora.account.v4.CreateAccountResponse.Result} */ (reader.readEnum())
          msg.setResult(value)
          break
        case 2:
          var value = new proto.kin.agora.account.v4.AccountInfo()
          reader.readMessage(value, proto.kin.agora.account.v4.AccountInfo.deserializeBinaryFromReader)
          msg.setAccountInfo(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.CreateAccountResponse.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.CreateAccountResponse.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.CreateAccountResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.CreateAccountResponse.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getResult()
    if (f !== 0.0) {
      writer.writeEnum(1, f)
    }
    f = message.getAccountInfo()
    if (f != null) {
      writer.writeMessage(2, f, proto.kin.agora.account.v4.AccountInfo.serializeBinaryToWriter)
    }
  }
  
  /**
   * @enum {number}
   */
  proto.kin.agora.account.v4.CreateAccountResponse.Result = {
    OK: 0,
    EXISTS: 1,
    PAYER_REQUIRED: 2,
    BAD_NONCE: 3,
  }
  
  /**
   * optional Result result = 1;
   * @return {!proto.kin.agora.account.v4.CreateAccountResponse.Result}
   */
  proto.kin.agora.account.v4.CreateAccountResponse.prototype.getResult = function () {
    return /** @type {!proto.kin.agora.account.v4.CreateAccountResponse.Result} */ (jspb.Message.getFieldWithDefault(
      this,
      1,
      0,
    ))
  }
  
  /**
   * @param {!proto.kin.agora.account.v4.CreateAccountResponse.Result} value
   * @return {!proto.kin.agora.account.v4.CreateAccountResponse} returns this
   */
  proto.kin.agora.account.v4.CreateAccountResponse.prototype.setResult = function (value) {
    return jspb.Message.setProto3EnumField(this, 1, value)
  }
  
  /**
   * optional AccountInfo account_info = 2;
   * @return {?proto.kin.agora.account.v4.AccountInfo}
   */
  proto.kin.agora.account.v4.CreateAccountResponse.prototype.getAccountInfo = function () {
    return /** @type{?proto.kin.agora.account.v4.AccountInfo} */ (jspb.Message.getWrapperField(
      this,
      proto.kin.agora.account.v4.AccountInfo,
      2,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.account.v4.AccountInfo|undefined} value
   * @return {!proto.kin.agora.account.v4.CreateAccountResponse} returns this
   */
  proto.kin.agora.account.v4.CreateAccountResponse.prototype.setAccountInfo = function (value) {
    return jspb.Message.setWrapperField(this, 2, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.CreateAccountResponse} returns this
   */
  proto.kin.agora.account.v4.CreateAccountResponse.prototype.clearAccountInfo = function () {
    return this.setAccountInfo(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.CreateAccountResponse.prototype.hasAccountInfo = function () {
    return jspb.Message.getField(this, 2) != null
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.GetAccountInfoRequest.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.GetAccountInfoRequest.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.GetAccountInfoRequest} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.GetAccountInfoRequest.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          accountId: (f = msg.getAccountId()) && common_v4_model_pb.SolanaAccountId.toObject(includeInstance, f),
          commitment: jspb.Message.getFieldWithDefault(msg, 2, 0),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.GetAccountInfoRequest}
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.GetAccountInfoRequest()
    return proto.kin.agora.account.v4.GetAccountInfoRequest.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.GetAccountInfoRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.GetAccountInfoRequest}
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new common_v4_model_pb.SolanaAccountId()
          reader.readMessage(value, common_v4_model_pb.SolanaAccountId.deserializeBinaryFromReader)
          msg.setAccountId(value)
          break
        case 2:
          var value = /** @type {!proto.kin.agora.common.v4.Commitment} */ (reader.readEnum())
          msg.setCommitment(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.GetAccountInfoRequest.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.GetAccountInfoRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getAccountId()
    if (f != null) {
      writer.writeMessage(1, f, common_v4_model_pb.SolanaAccountId.serializeBinaryToWriter)
    }
    f = message.getCommitment()
    if (f !== 0.0) {
      writer.writeEnum(2, f)
    }
  }
  
  /**
   * optional kin.agora.common.v4.SolanaAccountId account_id = 1;
   * @return {?proto.kin.agora.common.v4.SolanaAccountId}
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.prototype.getAccountId = function () {
    return /** @type{?proto.kin.agora.common.v4.SolanaAccountId} */ (jspb.Message.getWrapperField(
      this,
      common_v4_model_pb.SolanaAccountId,
      1,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.common.v4.SolanaAccountId|undefined} value
   * @return {!proto.kin.agora.account.v4.GetAccountInfoRequest} returns this
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.prototype.setAccountId = function (value) {
    return jspb.Message.setWrapperField(this, 1, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.GetAccountInfoRequest} returns this
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.prototype.clearAccountId = function () {
    return this.setAccountId(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.prototype.hasAccountId = function () {
    return jspb.Message.getField(this, 1) != null
  }
  
  /**
   * optional kin.agora.common.v4.Commitment commitment = 2;
   * @return {!proto.kin.agora.common.v4.Commitment}
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.prototype.getCommitment = function () {
    return /** @type {!proto.kin.agora.common.v4.Commitment} */ (jspb.Message.getFieldWithDefault(this, 2, 0))
  }
  
  /**
   * @param {!proto.kin.agora.common.v4.Commitment} value
   * @return {!proto.kin.agora.account.v4.GetAccountInfoRequest} returns this
   */
  proto.kin.agora.account.v4.GetAccountInfoRequest.prototype.setCommitment = function (value) {
    return jspb.Message.setProto3EnumField(this, 2, value)
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.GetAccountInfoResponse.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.GetAccountInfoResponse.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.GetAccountInfoResponse} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.GetAccountInfoResponse.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          result: jspb.Message.getFieldWithDefault(msg, 1, 0),
          accountInfo: (f = msg.getAccountInfo()) && proto.kin.agora.account.v4.AccountInfo.toObject(includeInstance, f),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.GetAccountInfoResponse}
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.GetAccountInfoResponse()
    return proto.kin.agora.account.v4.GetAccountInfoResponse.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.GetAccountInfoResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.GetAccountInfoResponse}
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = /** @type {!proto.kin.agora.account.v4.GetAccountInfoResponse.Result} */ (reader.readEnum())
          msg.setResult(value)
          break
        case 2:
          var value = new proto.kin.agora.account.v4.AccountInfo()
          reader.readMessage(value, proto.kin.agora.account.v4.AccountInfo.deserializeBinaryFromReader)
          msg.setAccountInfo(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.GetAccountInfoResponse.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.GetAccountInfoResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getResult()
    if (f !== 0.0) {
      writer.writeEnum(1, f)
    }
    f = message.getAccountInfo()
    if (f != null) {
      writer.writeMessage(2, f, proto.kin.agora.account.v4.AccountInfo.serializeBinaryToWriter)
    }
  }
  
  /**
   * @enum {number}
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.Result = {
    OK: 0,
    NOT_FOUND: 1,
  }
  
  /**
   * optional Result result = 1;
   * @return {!proto.kin.agora.account.v4.GetAccountInfoResponse.Result}
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.prototype.getResult = function () {
    return /** @type {!proto.kin.agora.account.v4.GetAccountInfoResponse.Result} */ (jspb.Message.getFieldWithDefault(
      this,
      1,
      0,
    ))
  }
  
  /**
   * @param {!proto.kin.agora.account.v4.GetAccountInfoResponse.Result} value
   * @return {!proto.kin.agora.account.v4.GetAccountInfoResponse} returns this
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.prototype.setResult = function (value) {
    return jspb.Message.setProto3EnumField(this, 1, value)
  }
  
  /**
   * optional AccountInfo account_info = 2;
   * @return {?proto.kin.agora.account.v4.AccountInfo}
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.prototype.getAccountInfo = function () {
    return /** @type{?proto.kin.agora.account.v4.AccountInfo} */ (jspb.Message.getWrapperField(
      this,
      proto.kin.agora.account.v4.AccountInfo,
      2,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.account.v4.AccountInfo|undefined} value
   * @return {!proto.kin.agora.account.v4.GetAccountInfoResponse} returns this
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.prototype.setAccountInfo = function (value) {
    return jspb.Message.setWrapperField(this, 2, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.GetAccountInfoResponse} returns this
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.prototype.clearAccountInfo = function () {
    return this.setAccountInfo(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.GetAccountInfoResponse.prototype.hasAccountInfo = function () {
    return jspb.Message.getField(this, 2) != null
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.ResolveTokenAccountsRequest.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.ResolveTokenAccountsRequest.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.ResolveTokenAccountsRequest} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.ResolveTokenAccountsRequest.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          accountId: (f = msg.getAccountId()) && common_v4_model_pb.SolanaAccountId.toObject(includeInstance, f),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.ResolveTokenAccountsRequest}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.ResolveTokenAccountsRequest()
    return proto.kin.agora.account.v4.ResolveTokenAccountsRequest.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.ResolveTokenAccountsRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.ResolveTokenAccountsRequest}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new common_v4_model_pb.SolanaAccountId()
          reader.readMessage(value, common_v4_model_pb.SolanaAccountId.deserializeBinaryFromReader)
          msg.setAccountId(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.ResolveTokenAccountsRequest.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.ResolveTokenAccountsRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getAccountId()
    if (f != null) {
      writer.writeMessage(1, f, common_v4_model_pb.SolanaAccountId.serializeBinaryToWriter)
    }
  }
  
  /**
   * optional kin.agora.common.v4.SolanaAccountId account_id = 1;
   * @return {?proto.kin.agora.common.v4.SolanaAccountId}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest.prototype.getAccountId = function () {
    return /** @type{?proto.kin.agora.common.v4.SolanaAccountId} */ (jspb.Message.getWrapperField(
      this,
      common_v4_model_pb.SolanaAccountId,
      1,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.common.v4.SolanaAccountId|undefined} value
   * @return {!proto.kin.agora.account.v4.ResolveTokenAccountsRequest} returns this
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest.prototype.setAccountId = function (value) {
    return jspb.Message.setWrapperField(this, 1, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.ResolveTokenAccountsRequest} returns this
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest.prototype.clearAccountId = function () {
    return this.setAccountId(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsRequest.prototype.hasAccountId = function () {
    return jspb.Message.getField(this, 1) != null
  }
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.repeatedFields_ = [1]
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.ResolveTokenAccountsResponse.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.ResolveTokenAccountsResponse.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.ResolveTokenAccountsResponse} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.ResolveTokenAccountsResponse.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          tokenAccountsList: jspb.Message.toObjectList(
            msg.getTokenAccountsList(),
            common_v4_model_pb.SolanaAccountId.toObject,
            includeInstance,
          ),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.ResolveTokenAccountsResponse}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.ResolveTokenAccountsResponse()
    return proto.kin.agora.account.v4.ResolveTokenAccountsResponse.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.ResolveTokenAccountsResponse} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.ResolveTokenAccountsResponse}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new common_v4_model_pb.SolanaAccountId()
          reader.readMessage(value, common_v4_model_pb.SolanaAccountId.deserializeBinaryFromReader)
          msg.addTokenAccounts(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.ResolveTokenAccountsResponse.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.ResolveTokenAccountsResponse} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getTokenAccountsList()
    if (f.length > 0) {
      writer.writeRepeatedMessage(1, f, common_v4_model_pb.SolanaAccountId.serializeBinaryToWriter)
    }
  }
  
  /**
   * repeated kin.agora.common.v4.SolanaAccountId token_accounts = 1;
   * @return {!Array<!proto.kin.agora.common.v4.SolanaAccountId>}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.prototype.getTokenAccountsList = function () {
    return /** @type{!Array<!proto.kin.agora.common.v4.SolanaAccountId>} */ (jspb.Message.getRepeatedWrapperField(
      this,
      common_v4_model_pb.SolanaAccountId,
      1,
    ))
  }
  
  /**
   * @param {!Array<!proto.kin.agora.common.v4.SolanaAccountId>} value
   * @return {!proto.kin.agora.account.v4.ResolveTokenAccountsResponse} returns this
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.prototype.setTokenAccountsList = function (value) {
    return jspb.Message.setRepeatedWrapperField(this, 1, value)
  }
  
  /**
   * @param {!proto.kin.agora.common.v4.SolanaAccountId=} opt_value
   * @param {number=} opt_index
   * @return {!proto.kin.agora.common.v4.SolanaAccountId}
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.prototype.addTokenAccounts = function (opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(
      this,
      1,
      opt_value,
      proto.kin.agora.common.v4.SolanaAccountId,
      opt_index,
    )
  }
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.kin.agora.account.v4.ResolveTokenAccountsResponse} returns this
   */
  proto.kin.agora.account.v4.ResolveTokenAccountsResponse.prototype.clearTokenAccountsList = function () {
    return this.setTokenAccountsList([])
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.GetEventsRequest.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.GetEventsRequest.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.GetEventsRequest} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.GetEventsRequest.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          accountId: (f = msg.getAccountId()) && common_v4_model_pb.SolanaAccountId.toObject(includeInstance, f),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.GetEventsRequest}
   */
  proto.kin.agora.account.v4.GetEventsRequest.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.GetEventsRequest()
    return proto.kin.agora.account.v4.GetEventsRequest.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.GetEventsRequest} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.GetEventsRequest}
   */
  proto.kin.agora.account.v4.GetEventsRequest.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new common_v4_model_pb.SolanaAccountId()
          reader.readMessage(value, common_v4_model_pb.SolanaAccountId.deserializeBinaryFromReader)
          msg.setAccountId(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.GetEventsRequest.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.GetEventsRequest.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.GetEventsRequest} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.GetEventsRequest.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getAccountId()
    if (f != null) {
      writer.writeMessage(1, f, common_v4_model_pb.SolanaAccountId.serializeBinaryToWriter)
    }
  }
  
  /**
   * optional kin.agora.common.v4.SolanaAccountId account_id = 1;
   * @return {?proto.kin.agora.common.v4.SolanaAccountId}
   */
  proto.kin.agora.account.v4.GetEventsRequest.prototype.getAccountId = function () {
    return /** @type{?proto.kin.agora.common.v4.SolanaAccountId} */ (jspb.Message.getWrapperField(
      this,
      common_v4_model_pb.SolanaAccountId,
      1,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.common.v4.SolanaAccountId|undefined} value
   * @return {!proto.kin.agora.account.v4.GetEventsRequest} returns this
   */
  proto.kin.agora.account.v4.GetEventsRequest.prototype.setAccountId = function (value) {
    return jspb.Message.setWrapperField(this, 1, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.GetEventsRequest} returns this
   */
  proto.kin.agora.account.v4.GetEventsRequest.prototype.clearAccountId = function () {
    return this.setAccountId(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.GetEventsRequest.prototype.hasAccountId = function () {
    return jspb.Message.getField(this, 1) != null
  }
  
  /**
   * List of repeated fields within this message type.
   * @private {!Array<number>}
   * @const
   */
  proto.kin.agora.account.v4.Events.repeatedFields_ = [2]
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.Events.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.Events.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.Events} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.Events.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          result: jspb.Message.getFieldWithDefault(msg, 1, 0),
          eventsList: jspb.Message.toObjectList(
            msg.getEventsList(),
            proto.kin.agora.account.v4.Event.toObject,
            includeInstance,
          ),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.Events}
   */
  proto.kin.agora.account.v4.Events.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.Events()
    return proto.kin.agora.account.v4.Events.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.Events} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.Events}
   */
  proto.kin.agora.account.v4.Events.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = /** @type {!proto.kin.agora.account.v4.Events.Result} */ (reader.readEnum())
          msg.setResult(value)
          break
        case 2:
          var value = new proto.kin.agora.account.v4.Event()
          reader.readMessage(value, proto.kin.agora.account.v4.Event.deserializeBinaryFromReader)
          msg.addEvents(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.Events.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.Events.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.Events} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.Events.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getResult()
    if (f !== 0.0) {
      writer.writeEnum(1, f)
    }
    f = message.getEventsList()
    if (f.length > 0) {
      writer.writeRepeatedMessage(2, f, proto.kin.agora.account.v4.Event.serializeBinaryToWriter)
    }
  }
  
  /**
   * @enum {number}
   */
  proto.kin.agora.account.v4.Events.Result = {
    OK: 0,
    NOT_FOUND: 1,
  }
  
  /**
   * optional Result result = 1;
   * @return {!proto.kin.agora.account.v4.Events.Result}
   */
  proto.kin.agora.account.v4.Events.prototype.getResult = function () {
    return /** @type {!proto.kin.agora.account.v4.Events.Result} */ (jspb.Message.getFieldWithDefault(this, 1, 0))
  }
  
  /**
   * @param {!proto.kin.agora.account.v4.Events.Result} value
   * @return {!proto.kin.agora.account.v4.Events} returns this
   */
  proto.kin.agora.account.v4.Events.prototype.setResult = function (value) {
    return jspb.Message.setProto3EnumField(this, 1, value)
  }
  
  /**
   * repeated Event events = 2;
   * @return {!Array<!proto.kin.agora.account.v4.Event>}
   */
  proto.kin.agora.account.v4.Events.prototype.getEventsList = function () {
    return /** @type{!Array<!proto.kin.agora.account.v4.Event>} */ (jspb.Message.getRepeatedWrapperField(
      this,
      proto.kin.agora.account.v4.Event,
      2,
    ))
  }
  
  /**
   * @param {!Array<!proto.kin.agora.account.v4.Event>} value
   * @return {!proto.kin.agora.account.v4.Events} returns this
   */
  proto.kin.agora.account.v4.Events.prototype.setEventsList = function (value) {
    return jspb.Message.setRepeatedWrapperField(this, 2, value)
  }
  
  /**
   * @param {!proto.kin.agora.account.v4.Event=} opt_value
   * @param {number=} opt_index
   * @return {!proto.kin.agora.account.v4.Event}
   */
  proto.kin.agora.account.v4.Events.prototype.addEvents = function (opt_value, opt_index) {
    return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.kin.agora.account.v4.Event, opt_index)
  }
  
  /**
   * Clears the list making it empty but non-null.
   * @return {!proto.kin.agora.account.v4.Events} returns this
   */
  proto.kin.agora.account.v4.Events.prototype.clearEventsList = function () {
    return this.setEventsList([])
  }
  
  /**
   * Oneof group definitions for this message. Each group defines the field
   * numbers belonging to that group. When of these fields' value is set, all
   * other fields in the group are cleared. During deserialization, if multiple
   * fields are encountered for a group, only the last value seen will be kept.
   * @private {!Array<!Array<number>>}
   * @const
   */
  proto.kin.agora.account.v4.Event.oneofGroups_ = [[1, 2]]
  
  /**
   * @enum {number}
   */
  proto.kin.agora.account.v4.Event.TypeCase = {
    TYPE_NOT_SET: 0,
    ACCOUNT_UPDATE_EVENT: 1,
    TRANSACTION_EVENT: 2,
  }
  
  /**
   * @return {proto.kin.agora.account.v4.Event.TypeCase}
   */
  proto.kin.agora.account.v4.Event.prototype.getTypeCase = function () {
    return /** @type {proto.kin.agora.account.v4.Event.TypeCase} */ (jspb.Message.computeOneofCase(
      this,
      proto.kin.agora.account.v4.Event.oneofGroups_[0],
    ))
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.Event.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.Event.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.Event} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.Event.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          accountUpdateEvent:
            (f = msg.getAccountUpdateEvent()) &&
            proto.kin.agora.account.v4.AccountUpdateEvent.toObject(includeInstance, f),
          transactionEvent:
            (f = msg.getTransactionEvent()) && proto.kin.agora.account.v4.TransactionEvent.toObject(includeInstance, f),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.Event}
   */
  proto.kin.agora.account.v4.Event.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.Event()
    return proto.kin.agora.account.v4.Event.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.Event} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.Event}
   */
  proto.kin.agora.account.v4.Event.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new proto.kin.agora.account.v4.AccountUpdateEvent()
          reader.readMessage(value, proto.kin.agora.account.v4.AccountUpdateEvent.deserializeBinaryFromReader)
          msg.setAccountUpdateEvent(value)
          break
        case 2:
          var value = new proto.kin.agora.account.v4.TransactionEvent()
          reader.readMessage(value, proto.kin.agora.account.v4.TransactionEvent.deserializeBinaryFromReader)
          msg.setTransactionEvent(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.Event.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.Event.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.Event} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.Event.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getAccountUpdateEvent()
    if (f != null) {
      writer.writeMessage(1, f, proto.kin.agora.account.v4.AccountUpdateEvent.serializeBinaryToWriter)
    }
    f = message.getTransactionEvent()
    if (f != null) {
      writer.writeMessage(2, f, proto.kin.agora.account.v4.TransactionEvent.serializeBinaryToWriter)
    }
  }
  
  /**
   * optional AccountUpdateEvent account_update_event = 1;
   * @return {?proto.kin.agora.account.v4.AccountUpdateEvent}
   */
  proto.kin.agora.account.v4.Event.prototype.getAccountUpdateEvent = function () {
    return /** @type{?proto.kin.agora.account.v4.AccountUpdateEvent} */ (jspb.Message.getWrapperField(
      this,
      proto.kin.agora.account.v4.AccountUpdateEvent,
      1,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.account.v4.AccountUpdateEvent|undefined} value
   * @return {!proto.kin.agora.account.v4.Event} returns this
   */
  proto.kin.agora.account.v4.Event.prototype.setAccountUpdateEvent = function (value) {
    return jspb.Message.setOneofWrapperField(this, 1, proto.kin.agora.account.v4.Event.oneofGroups_[0], value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.Event} returns this
   */
  proto.kin.agora.account.v4.Event.prototype.clearAccountUpdateEvent = function () {
    return this.setAccountUpdateEvent(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.Event.prototype.hasAccountUpdateEvent = function () {
    return jspb.Message.getField(this, 1) != null
  }
  
  /**
   * optional TransactionEvent transaction_event = 2;
   * @return {?proto.kin.agora.account.v4.TransactionEvent}
   */
  proto.kin.agora.account.v4.Event.prototype.getTransactionEvent = function () {
    return /** @type{?proto.kin.agora.account.v4.TransactionEvent} */ (jspb.Message.getWrapperField(
      this,
      proto.kin.agora.account.v4.TransactionEvent,
      2,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.account.v4.TransactionEvent|undefined} value
   * @return {!proto.kin.agora.account.v4.Event} returns this
   */
  proto.kin.agora.account.v4.Event.prototype.setTransactionEvent = function (value) {
    return jspb.Message.setOneofWrapperField(this, 2, proto.kin.agora.account.v4.Event.oneofGroups_[0], value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.Event} returns this
   */
  proto.kin.agora.account.v4.Event.prototype.clearTransactionEvent = function () {
    return this.setTransactionEvent(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.Event.prototype.hasTransactionEvent = function () {
    return jspb.Message.getField(this, 2) != null
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.AccountUpdateEvent.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.AccountUpdateEvent.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.AccountUpdateEvent} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.AccountUpdateEvent.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          accountInfo: (f = msg.getAccountInfo()) && proto.kin.agora.account.v4.AccountInfo.toObject(includeInstance, f),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.AccountUpdateEvent}
   */
  proto.kin.agora.account.v4.AccountUpdateEvent.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.AccountUpdateEvent()
    return proto.kin.agora.account.v4.AccountUpdateEvent.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.AccountUpdateEvent} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.AccountUpdateEvent}
   */
  proto.kin.agora.account.v4.AccountUpdateEvent.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new proto.kin.agora.account.v4.AccountInfo()
          reader.readMessage(value, proto.kin.agora.account.v4.AccountInfo.deserializeBinaryFromReader)
          msg.setAccountInfo(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.AccountUpdateEvent.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.AccountUpdateEvent.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.AccountUpdateEvent} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.AccountUpdateEvent.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getAccountInfo()
    if (f != null) {
      writer.writeMessage(1, f, proto.kin.agora.account.v4.AccountInfo.serializeBinaryToWriter)
    }
  }
  
  /**
   * optional AccountInfo account_info = 1;
   * @return {?proto.kin.agora.account.v4.AccountInfo}
   */
  proto.kin.agora.account.v4.AccountUpdateEvent.prototype.getAccountInfo = function () {
    return /** @type{?proto.kin.agora.account.v4.AccountInfo} */ (jspb.Message.getWrapperField(
      this,
      proto.kin.agora.account.v4.AccountInfo,
      1,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.account.v4.AccountInfo|undefined} value
   * @return {!proto.kin.agora.account.v4.AccountUpdateEvent} returns this
   */
  proto.kin.agora.account.v4.AccountUpdateEvent.prototype.setAccountInfo = function (value) {
    return jspb.Message.setWrapperField(this, 1, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.AccountUpdateEvent} returns this
   */
  proto.kin.agora.account.v4.AccountUpdateEvent.prototype.clearAccountInfo = function () {
    return this.setAccountInfo(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.AccountUpdateEvent.prototype.hasAccountInfo = function () {
    return jspb.Message.getField(this, 1) != null
  }
  
  if (jspb.Message.GENERATE_TO_OBJECT) {
    /**
     * Creates an object representation of this proto.
     * Field names that are reserved in JavaScript and will be renamed to pb_name.
     * Optional fields that are not set will be set to undefined.
     * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
     * For the list of reserved names please see:
     *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
     * @param {boolean=} opt_includeInstance Deprecated. whether to include the
     *     JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @return {!Object}
     */
    proto.kin.agora.account.v4.TransactionEvent.prototype.toObject = function (opt_includeInstance) {
      return proto.kin.agora.account.v4.TransactionEvent.toObject(opt_includeInstance, this)
    }
  
    /**
     * Static version of the {@see toObject} method.
     * @param {boolean|undefined} includeInstance Deprecated. Whether to include
     *     the JSPB instance for transitional soy proto support:
     *     http://goto/soy-param-migration
     * @param {!proto.kin.agora.account.v4.TransactionEvent} msg The msg instance to transform.
     * @return {!Object}
     * @suppress {unusedLocalVariables} f is only used for nested messages
     */
    proto.kin.agora.account.v4.TransactionEvent.toObject = function (includeInstance, msg) {
      var f,
        obj = {
          transaction: (f = msg.getTransaction()) && common_v4_model_pb.Transaction.toObject(includeInstance, f),
          transactionError:
            (f = msg.getTransactionError()) && common_v4_model_pb.TransactionError.toObject(includeInstance, f),
        }
  
      if (includeInstance) {
        obj.$jspbMessageInstance = msg
      }
      return obj
    }
  }
  
  /**
   * Deserializes binary data (in protobuf wire format).
   * @param {jspb.ByteSource} bytes The bytes to deserialize.
   * @return {!proto.kin.agora.account.v4.TransactionEvent}
   */
  proto.kin.agora.account.v4.TransactionEvent.deserializeBinary = function (bytes) {
    var reader = new jspb.BinaryReader(bytes)
    var msg = new proto.kin.agora.account.v4.TransactionEvent()
    return proto.kin.agora.account.v4.TransactionEvent.deserializeBinaryFromReader(msg, reader)
  }
  
  /**
   * Deserializes binary data (in protobuf wire format) from the
   * given reader into the given message object.
   * @param {!proto.kin.agora.account.v4.TransactionEvent} msg The message object to deserialize into.
   * @param {!jspb.BinaryReader} reader The BinaryReader to use.
   * @return {!proto.kin.agora.account.v4.TransactionEvent}
   */
  proto.kin.agora.account.v4.TransactionEvent.deserializeBinaryFromReader = function (msg, reader) {
    while (reader.nextField()) {
      if (reader.isEndGroup()) {
        break
      }
      var field = reader.getFieldNumber()
      switch (field) {
        case 1:
          var value = new common_v4_model_pb.Transaction()
          reader.readMessage(value, common_v4_model_pb.Transaction.deserializeBinaryFromReader)
          msg.setTransaction(value)
          break
        case 2:
          var value = new common_v4_model_pb.TransactionError()
          reader.readMessage(value, common_v4_model_pb.TransactionError.deserializeBinaryFromReader)
          msg.setTransactionError(value)
          break
        default:
          reader.skipField()
          break
      }
    }
    return msg
  }
  
  /**
   * Serializes the message to binary data (in protobuf wire format).
   * @return {!Uint8Array}
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.serializeBinary = function () {
    var writer = new jspb.BinaryWriter()
    proto.kin.agora.account.v4.TransactionEvent.serializeBinaryToWriter(this, writer)
    return writer.getResultBuffer()
  }
  
  /**
   * Serializes the given message to binary data (in protobuf wire
   * format), writing to the given BinaryWriter.
   * @param {!proto.kin.agora.account.v4.TransactionEvent} message
   * @param {!jspb.BinaryWriter} writer
   * @suppress {unusedLocalVariables} f is only used for nested messages
   */
  proto.kin.agora.account.v4.TransactionEvent.serializeBinaryToWriter = function (message, writer) {
    var f = undefined
    f = message.getTransaction()
    if (f != null) {
      writer.writeMessage(1, f, common_v4_model_pb.Transaction.serializeBinaryToWriter)
    }
    f = message.getTransactionError()
    if (f != null) {
      writer.writeMessage(2, f, common_v4_model_pb.TransactionError.serializeBinaryToWriter)
    }
  }
  
  /**
   * optional kin.agora.common.v4.Transaction transaction = 1;
   * @return {?proto.kin.agora.common.v4.Transaction}
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.getTransaction = function () {
    return /** @type{?proto.kin.agora.common.v4.Transaction} */ (jspb.Message.getWrapperField(
      this,
      common_v4_model_pb.Transaction,
      1,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.common.v4.Transaction|undefined} value
   * @return {!proto.kin.agora.account.v4.TransactionEvent} returns this
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.setTransaction = function (value) {
    return jspb.Message.setWrapperField(this, 1, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.TransactionEvent} returns this
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.clearTransaction = function () {
    return this.setTransaction(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.hasTransaction = function () {
    return jspb.Message.getField(this, 1) != null
  }
  
  /**
   * optional kin.agora.common.v4.TransactionError transaction_error = 2;
   * @return {?proto.kin.agora.common.v4.TransactionError}
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.getTransactionError = function () {
    return /** @type{?proto.kin.agora.common.v4.TransactionError} */ (jspb.Message.getWrapperField(
      this,
      common_v4_model_pb.TransactionError,
      2,
    ))
  }
  
  /**
   * @param {?proto.kin.agora.common.v4.TransactionError|undefined} value
   * @return {!proto.kin.agora.account.v4.TransactionEvent} returns this
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.setTransactionError = function (value) {
    return jspb.Message.setWrapperField(this, 2, value)
  }
  
  /**
   * Clears the message field making it undefined.
   * @return {!proto.kin.agora.account.v4.TransactionEvent} returns this
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.clearTransactionError = function () {
    return this.setTransactionError(undefined)
  }
  
  /**
   * Returns whether this field is set.
   * @return {boolean}
   */
  proto.kin.agora.account.v4.TransactionEvent.prototype.hasTransactionError = function () {
    return jspb.Message.getField(this, 2) != null
  }
  
  goog.object.extend(exports, proto.kin.agora.account.v4)
  