protobuf-platform 1.2.718 → 1.2.720

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bonus/bonus.proto CHANGED
@@ -44,6 +44,8 @@ service Bonus {
44
44
  rpc getCommonUserBonusItems(GetCommonUserBonusItemsRequest) returns (GetCommonUserBonusItemsResponse);
45
45
  // Validates one selected wagering user bonus for a game wager list and balance type; returns authoritative state for game-service Redis snapshot.
46
46
  rpc validateSelectedWageringUserBonus(ValidateSelectedWageringUserBonusRequest) returns (ValidateSelectedWageringUserBonusResponse);
47
+ // Resolve a durable provider reward identity before any winnings wallet mutation.
48
+ rpc resolveProviderRewardWinnings(ResolveProviderRewardWinningsRequest) returns (ResolveProviderRewardWinningsResponse);
47
49
  //Common lists
48
50
  rpc readListBonusTypes(PaginationRequest) returns (BonusTypesResponse);
49
51
  rpc readListBonusStatuses(PaginationRequest) returns (BonusStatusesResponse);
@@ -642,6 +644,8 @@ message ActiveWageringUserBonusItem {
642
644
  optional string priority_bankroll = 12;
643
645
  // Business-allowed: "real" | "bonus"
644
646
  optional string payout_destination = 13;
647
+ // Denomination of this UserBonus monetary amounts and wagering; absence is unknown.
648
+ optional string currency = 14;
645
649
  }
646
650
  message GetCommonUserBonusItemsRequest {
647
651
  int32 user_id = 1;
@@ -665,6 +669,8 @@ message ValidateSelectedWageringUserBonusRequest {
665
669
  uint64 selected_user_bonus_id = 2;
666
670
  uint64 wager_games_list_id = 3;
667
671
  string selected_balance_type = 4; // Business-allowed: "real" | "bonus"
672
+ // Actual selected Payment wallet currency; absence is not a currency match.
673
+ optional string wallet_currency = 5;
668
674
  }
669
675
  message ValidateSelectedWageringUserBonusResponse {
670
676
  uint64 selected_user_bonus_id = 1;
@@ -686,6 +692,8 @@ message ValidateSelectedWageringUserBonusResponse {
686
692
  optional string priority_bankroll = 14;
687
693
  // Business-allowed: "real" | "bonus"
688
694
  optional string payout_destination = 15;
695
+ // Denomination of this UserBonus monetary amounts and wagering; absence is unknown.
696
+ optional string currency = 16;
689
697
  }
690
698
  //Common Lists
691
699
  message BonusType {
@@ -754,3 +762,26 @@ message BonusClaimedEvent {
754
762
  optional string request_id = 12;
755
763
  optional bool admin_initiated = 13;
756
764
  }
765
+
766
+ // Authoritative provider units, never account/session-converted values.
767
+ message ResolveProviderRewardWinningsRequest {
768
+ int64 user_id = 1;
769
+ string provider_reward_id = 2;
770
+ string provider_transaction_id = 3;
771
+ string provider_currency = 4;
772
+ uint32 provider_currency_scale = 5;
773
+ string provider_amount_minor = 6;
774
+ }
775
+
776
+ message ResolveProviderRewardWinningsResponse {
777
+ // Explicit "legacy" or "normalized". Empty/unknown is not legacy.
778
+ string mode = 1;
779
+ optional int64 user_bonus_id = 2;
780
+ optional string currency = 3;
781
+ optional uint32 currency_scale = 4;
782
+ optional string amount_minor = 5;
783
+ // Versioned audit: explicit frozen pair/rate/scales, original and normalized
784
+ // minor amounts, UserBonus/snapshot and provider reward/transaction identity.
785
+ // Required for normalized; missing data must fail closed without session FX.
786
+ optional string provider_winnings_fx_json = 6;
787
+ }
@@ -478,6 +478,28 @@ function deserialize_bonus_PongResponse(buffer_arg) {
478
478
  return bonus_bonus_pb.PongResponse.deserializeBinary(new Uint8Array(buffer_arg));
479
479
  }
480
480
 
481
+ function serialize_bonus_ResolveProviderRewardWinningsRequest(arg) {
482
+ if (!(arg instanceof bonus_bonus_pb.ResolveProviderRewardWinningsRequest)) {
483
+ throw new Error('Expected argument of type bonus.ResolveProviderRewardWinningsRequest');
484
+ }
485
+ return Buffer.from(arg.serializeBinary());
486
+ }
487
+
488
+ function deserialize_bonus_ResolveProviderRewardWinningsRequest(buffer_arg) {
489
+ return bonus_bonus_pb.ResolveProviderRewardWinningsRequest.deserializeBinary(new Uint8Array(buffer_arg));
490
+ }
491
+
492
+ function serialize_bonus_ResolveProviderRewardWinningsResponse(arg) {
493
+ if (!(arg instanceof bonus_bonus_pb.ResolveProviderRewardWinningsResponse)) {
494
+ throw new Error('Expected argument of type bonus.ResolveProviderRewardWinningsResponse');
495
+ }
496
+ return Buffer.from(arg.serializeBinary());
497
+ }
498
+
499
+ function deserialize_bonus_ResolveProviderRewardWinningsResponse(buffer_arg) {
500
+ return bonus_bonus_pb.ResolveProviderRewardWinningsResponse.deserializeBinary(new Uint8Array(buffer_arg));
501
+ }
502
+
481
503
  function serialize_bonus_SingleBonusResponse(arg) {
482
504
  if (!(arg instanceof bonus_bonus_pb.SingleBonusResponse)) {
483
505
  throw new Error('Expected argument of type bonus.SingleBonusResponse');
@@ -936,6 +958,18 @@ validateSelectedWageringUserBonus: {
936
958
  responseSerialize: serialize_bonus_ValidateSelectedWageringUserBonusResponse,
937
959
  responseDeserialize: deserialize_bonus_ValidateSelectedWageringUserBonusResponse,
938
960
  },
961
+ // Resolve a durable provider reward identity before any winnings wallet mutation.
962
+ resolveProviderRewardWinnings: {
963
+ path: '/bonus.Bonus/resolveProviderRewardWinnings',
964
+ requestStream: false,
965
+ responseStream: false,
966
+ requestType: bonus_bonus_pb.ResolveProviderRewardWinningsRequest,
967
+ responseType: bonus_bonus_pb.ResolveProviderRewardWinningsResponse,
968
+ requestSerialize: serialize_bonus_ResolveProviderRewardWinningsRequest,
969
+ requestDeserialize: deserialize_bonus_ResolveProviderRewardWinningsRequest,
970
+ responseSerialize: serialize_bonus_ResolveProviderRewardWinningsResponse,
971
+ responseDeserialize: deserialize_bonus_ResolveProviderRewardWinningsResponse,
972
+ },
939
973
  // Common lists
940
974
  readListBonusTypes: {
941
975
  path: '/bonus.Bonus/readListBonusTypes',
package/bonus/bonus_pb.js CHANGED
@@ -87,6 +87,8 @@ goog.exportSymbol('proto.bonus.ListSignUpBonusesResponse', null, global);
87
87
  goog.exportSymbol('proto.bonus.PaginationRequest', null, global);
88
88
  goog.exportSymbol('proto.bonus.PingRequest', null, global);
89
89
  goog.exportSymbol('proto.bonus.PongResponse', null, global);
90
+ goog.exportSymbol('proto.bonus.ResolveProviderRewardWinningsRequest', null, global);
91
+ goog.exportSymbol('proto.bonus.ResolveProviderRewardWinningsResponse', null, global);
90
92
  goog.exportSymbol('proto.bonus.SearchBonusRequest', null, global);
91
93
  goog.exportSymbol('proto.bonus.SignUpBonusListItem', null, global);
92
94
  goog.exportSymbol('proto.bonus.SingleBonusItem', null, global);
@@ -1587,6 +1589,48 @@ if (goog.DEBUG && !COMPILED) {
1587
1589
  */
1588
1590
  proto.bonus.BonusClaimedEvent.displayName = 'proto.bonus.BonusClaimedEvent';
1589
1591
  }
1592
+ /**
1593
+ * Generated by JsPbCodeGenerator.
1594
+ * @param {Array=} opt_data Optional initial data array, typically from a
1595
+ * server response, or constructed directly in Javascript. The array is used
1596
+ * in place and becomes part of the constructed object. It is not cloned.
1597
+ * If no data is provided, the constructed object will be empty, but still
1598
+ * valid.
1599
+ * @extends {jspb.Message}
1600
+ * @constructor
1601
+ */
1602
+ proto.bonus.ResolveProviderRewardWinningsRequest = function(opt_data) {
1603
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
1604
+ };
1605
+ goog.inherits(proto.bonus.ResolveProviderRewardWinningsRequest, jspb.Message);
1606
+ if (goog.DEBUG && !COMPILED) {
1607
+ /**
1608
+ * @public
1609
+ * @override
1610
+ */
1611
+ proto.bonus.ResolveProviderRewardWinningsRequest.displayName = 'proto.bonus.ResolveProviderRewardWinningsRequest';
1612
+ }
1613
+ /**
1614
+ * Generated by JsPbCodeGenerator.
1615
+ * @param {Array=} opt_data Optional initial data array, typically from a
1616
+ * server response, or constructed directly in Javascript. The array is used
1617
+ * in place and becomes part of the constructed object. It is not cloned.
1618
+ * If no data is provided, the constructed object will be empty, but still
1619
+ * valid.
1620
+ * @extends {jspb.Message}
1621
+ * @constructor
1622
+ */
1623
+ proto.bonus.ResolveProviderRewardWinningsResponse = function(opt_data) {
1624
+ jspb.Message.initialize(this, opt_data, 0, -1, null, null);
1625
+ };
1626
+ goog.inherits(proto.bonus.ResolveProviderRewardWinningsResponse, jspb.Message);
1627
+ if (goog.DEBUG && !COMPILED) {
1628
+ /**
1629
+ * @public
1630
+ * @override
1631
+ */
1632
+ proto.bonus.ResolveProviderRewardWinningsResponse.displayName = 'proto.bonus.ResolveProviderRewardWinningsResponse';
1633
+ }
1590
1634
 
1591
1635
 
1592
1636
 
@@ -25936,7 +25980,8 @@ proto.bonus.ActiveWageringUserBonusItem.toObject = function(includeInstance, msg
25936
25980
  wagerBalancePriority: jspb.Message.getFieldWithDefault(msg, 10, ""),
25937
25981
  bankrollMode: jspb.Message.getFieldWithDefault(msg, 11, ""),
25938
25982
  priorityBankroll: jspb.Message.getFieldWithDefault(msg, 12, ""),
25939
- payoutDestination: jspb.Message.getFieldWithDefault(msg, 13, "")
25983
+ payoutDestination: jspb.Message.getFieldWithDefault(msg, 13, ""),
25984
+ currency: jspb.Message.getFieldWithDefault(msg, 14, "")
25940
25985
  };
25941
25986
 
25942
25987
  if (includeInstance) {
@@ -26025,6 +26070,10 @@ proto.bonus.ActiveWageringUserBonusItem.deserializeBinaryFromReader = function(m
26025
26070
  var value = /** @type {string} */ (reader.readString());
26026
26071
  msg.setPayoutDestination(value);
26027
26072
  break;
26073
+ case 14:
26074
+ var value = /** @type {string} */ (reader.readString());
26075
+ msg.setCurrency(value);
26076
+ break;
26028
26077
  default:
26029
26078
  reader.skipField();
26030
26079
  break;
@@ -26145,6 +26194,13 @@ proto.bonus.ActiveWageringUserBonusItem.serializeBinaryToWriter = function(messa
26145
26194
  f
26146
26195
  );
26147
26196
  }
26197
+ f = /** @type {string} */ (jspb.Message.getField(message, 14));
26198
+ if (f != null) {
26199
+ writer.writeString(
26200
+ 14,
26201
+ f
26202
+ );
26203
+ }
26148
26204
  };
26149
26205
 
26150
26206
 
@@ -26599,6 +26655,42 @@ proto.bonus.ActiveWageringUserBonusItem.prototype.hasPayoutDestination = functio
26599
26655
  };
26600
26656
 
26601
26657
 
26658
+ /**
26659
+ * optional string currency = 14;
26660
+ * @return {string}
26661
+ */
26662
+ proto.bonus.ActiveWageringUserBonusItem.prototype.getCurrency = function() {
26663
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 14, ""));
26664
+ };
26665
+
26666
+
26667
+ /**
26668
+ * @param {string} value
26669
+ * @return {!proto.bonus.ActiveWageringUserBonusItem} returns this
26670
+ */
26671
+ proto.bonus.ActiveWageringUserBonusItem.prototype.setCurrency = function(value) {
26672
+ return jspb.Message.setField(this, 14, value);
26673
+ };
26674
+
26675
+
26676
+ /**
26677
+ * Clears the field making it undefined.
26678
+ * @return {!proto.bonus.ActiveWageringUserBonusItem} returns this
26679
+ */
26680
+ proto.bonus.ActiveWageringUserBonusItem.prototype.clearCurrency = function() {
26681
+ return jspb.Message.setField(this, 14, undefined);
26682
+ };
26683
+
26684
+
26685
+ /**
26686
+ * Returns whether this field is set.
26687
+ * @return {boolean}
26688
+ */
26689
+ proto.bonus.ActiveWageringUserBonusItem.prototype.hasCurrency = function() {
26690
+ return jspb.Message.getField(this, 14) != null;
26691
+ };
26692
+
26693
+
26602
26694
 
26603
26695
 
26604
26696
 
@@ -27368,7 +27460,8 @@ proto.bonus.ValidateSelectedWageringUserBonusRequest.toObject = function(include
27368
27460
  userId: jspb.Message.getFieldWithDefault(msg, 1, 0),
27369
27461
  selectedUserBonusId: jspb.Message.getFieldWithDefault(msg, 2, 0),
27370
27462
  wagerGamesListId: jspb.Message.getFieldWithDefault(msg, 3, 0),
27371
- selectedBalanceType: jspb.Message.getFieldWithDefault(msg, 4, "")
27463
+ selectedBalanceType: jspb.Message.getFieldWithDefault(msg, 4, ""),
27464
+ walletCurrency: jspb.Message.getFieldWithDefault(msg, 5, "")
27372
27465
  };
27373
27466
 
27374
27467
  if (includeInstance) {
@@ -27421,6 +27514,10 @@ proto.bonus.ValidateSelectedWageringUserBonusRequest.deserializeBinaryFromReader
27421
27514
  var value = /** @type {string} */ (reader.readString());
27422
27515
  msg.setSelectedBalanceType(value);
27423
27516
  break;
27517
+ case 5:
27518
+ var value = /** @type {string} */ (reader.readString());
27519
+ msg.setWalletCurrency(value);
27520
+ break;
27424
27521
  default:
27425
27522
  reader.skipField();
27426
27523
  break;
@@ -27478,6 +27575,13 @@ proto.bonus.ValidateSelectedWageringUserBonusRequest.serializeBinaryToWriter = f
27478
27575
  f
27479
27576
  );
27480
27577
  }
27578
+ f = /** @type {string} */ (jspb.Message.getField(message, 5));
27579
+ if (f != null) {
27580
+ writer.writeString(
27581
+ 5,
27582
+ f
27583
+ );
27584
+ }
27481
27585
  };
27482
27586
 
27483
27587
 
@@ -27553,6 +27657,42 @@ proto.bonus.ValidateSelectedWageringUserBonusRequest.prototype.setSelectedBalanc
27553
27657
  };
27554
27658
 
27555
27659
 
27660
+ /**
27661
+ * optional string wallet_currency = 5;
27662
+ * @return {string}
27663
+ */
27664
+ proto.bonus.ValidateSelectedWageringUserBonusRequest.prototype.getWalletCurrency = function() {
27665
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
27666
+ };
27667
+
27668
+
27669
+ /**
27670
+ * @param {string} value
27671
+ * @return {!proto.bonus.ValidateSelectedWageringUserBonusRequest} returns this
27672
+ */
27673
+ proto.bonus.ValidateSelectedWageringUserBonusRequest.prototype.setWalletCurrency = function(value) {
27674
+ return jspb.Message.setField(this, 5, value);
27675
+ };
27676
+
27677
+
27678
+ /**
27679
+ * Clears the field making it undefined.
27680
+ * @return {!proto.bonus.ValidateSelectedWageringUserBonusRequest} returns this
27681
+ */
27682
+ proto.bonus.ValidateSelectedWageringUserBonusRequest.prototype.clearWalletCurrency = function() {
27683
+ return jspb.Message.setField(this, 5, undefined);
27684
+ };
27685
+
27686
+
27687
+ /**
27688
+ * Returns whether this field is set.
27689
+ * @return {boolean}
27690
+ */
27691
+ proto.bonus.ValidateSelectedWageringUserBonusRequest.prototype.hasWalletCurrency = function() {
27692
+ return jspb.Message.getField(this, 5) != null;
27693
+ };
27694
+
27695
+
27556
27696
 
27557
27697
  /**
27558
27698
  * List of repeated fields within this message type.
@@ -27606,7 +27746,8 @@ proto.bonus.ValidateSelectedWageringUserBonusResponse.toObject = function(includ
27606
27746
  wagerBalancePriority: jspb.Message.getFieldWithDefault(msg, 12, ""),
27607
27747
  bankrollMode: jspb.Message.getFieldWithDefault(msg, 13, ""),
27608
27748
  priorityBankroll: jspb.Message.getFieldWithDefault(msg, 14, ""),
27609
- payoutDestination: jspb.Message.getFieldWithDefault(msg, 15, "")
27749
+ payoutDestination: jspb.Message.getFieldWithDefault(msg, 15, ""),
27750
+ currency: jspb.Message.getFieldWithDefault(msg, 16, "")
27610
27751
  };
27611
27752
 
27612
27753
  if (includeInstance) {
@@ -27703,6 +27844,10 @@ proto.bonus.ValidateSelectedWageringUserBonusResponse.deserializeBinaryFromReade
27703
27844
  var value = /** @type {string} */ (reader.readString());
27704
27845
  msg.setPayoutDestination(value);
27705
27846
  break;
27847
+ case 16:
27848
+ var value = /** @type {string} */ (reader.readString());
27849
+ msg.setCurrency(value);
27850
+ break;
27706
27851
  default:
27707
27852
  reader.skipField();
27708
27853
  break;
@@ -27837,6 +27982,13 @@ proto.bonus.ValidateSelectedWageringUserBonusResponse.serializeBinaryToWriter =
27837
27982
  f
27838
27983
  );
27839
27984
  }
27985
+ f = /** @type {string} */ (jspb.Message.getField(message, 16));
27986
+ if (f != null) {
27987
+ writer.writeString(
27988
+ 16,
27989
+ f
27990
+ );
27991
+ }
27840
27992
  };
27841
27993
 
27842
27994
 
@@ -28201,6 +28353,42 @@ proto.bonus.ValidateSelectedWageringUserBonusResponse.prototype.hasPayoutDestina
28201
28353
  };
28202
28354
 
28203
28355
 
28356
+ /**
28357
+ * optional string currency = 16;
28358
+ * @return {string}
28359
+ */
28360
+ proto.bonus.ValidateSelectedWageringUserBonusResponse.prototype.getCurrency = function() {
28361
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 16, ""));
28362
+ };
28363
+
28364
+
28365
+ /**
28366
+ * @param {string} value
28367
+ * @return {!proto.bonus.ValidateSelectedWageringUserBonusResponse} returns this
28368
+ */
28369
+ proto.bonus.ValidateSelectedWageringUserBonusResponse.prototype.setCurrency = function(value) {
28370
+ return jspb.Message.setField(this, 16, value);
28371
+ };
28372
+
28373
+
28374
+ /**
28375
+ * Clears the field making it undefined.
28376
+ * @return {!proto.bonus.ValidateSelectedWageringUserBonusResponse} returns this
28377
+ */
28378
+ proto.bonus.ValidateSelectedWageringUserBonusResponse.prototype.clearCurrency = function() {
28379
+ return jspb.Message.setField(this, 16, undefined);
28380
+ };
28381
+
28382
+
28383
+ /**
28384
+ * Returns whether this field is set.
28385
+ * @return {boolean}
28386
+ */
28387
+ proto.bonus.ValidateSelectedWageringUserBonusResponse.prototype.hasCurrency = function() {
28388
+ return jspb.Message.getField(this, 16) != null;
28389
+ };
28390
+
28391
+
28204
28392
 
28205
28393
 
28206
28394
 
@@ -31071,4 +31259,654 @@ proto.bonus.BonusClaimedEvent.prototype.hasAdminInitiated = function() {
31071
31259
  };
31072
31260
 
31073
31261
 
31262
+
31263
+
31264
+
31265
+ if (jspb.Message.GENERATE_TO_OBJECT) {
31266
+ /**
31267
+ * Creates an object representation of this proto.
31268
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
31269
+ * Optional fields that are not set will be set to undefined.
31270
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
31271
+ * For the list of reserved names please see:
31272
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
31273
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
31274
+ * JSPB instance for transitional soy proto support:
31275
+ * http://goto/soy-param-migration
31276
+ * @return {!Object}
31277
+ */
31278
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.toObject = function(opt_includeInstance) {
31279
+ return proto.bonus.ResolveProviderRewardWinningsRequest.toObject(opt_includeInstance, this);
31280
+ };
31281
+
31282
+
31283
+ /**
31284
+ * Static version of the {@see toObject} method.
31285
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
31286
+ * the JSPB instance for transitional soy proto support:
31287
+ * http://goto/soy-param-migration
31288
+ * @param {!proto.bonus.ResolveProviderRewardWinningsRequest} msg The msg instance to transform.
31289
+ * @return {!Object}
31290
+ * @suppress {unusedLocalVariables} f is only used for nested messages
31291
+ */
31292
+ proto.bonus.ResolveProviderRewardWinningsRequest.toObject = function(includeInstance, msg) {
31293
+ var f, obj = {
31294
+ userId: jspb.Message.getFieldWithDefault(msg, 1, 0),
31295
+ providerRewardId: jspb.Message.getFieldWithDefault(msg, 2, ""),
31296
+ providerTransactionId: jspb.Message.getFieldWithDefault(msg, 3, ""),
31297
+ providerCurrency: jspb.Message.getFieldWithDefault(msg, 4, ""),
31298
+ providerCurrencyScale: jspb.Message.getFieldWithDefault(msg, 5, 0),
31299
+ providerAmountMinor: jspb.Message.getFieldWithDefault(msg, 6, "")
31300
+ };
31301
+
31302
+ if (includeInstance) {
31303
+ obj.$jspbMessageInstance = msg;
31304
+ }
31305
+ return obj;
31306
+ };
31307
+ }
31308
+
31309
+
31310
+ /**
31311
+ * Deserializes binary data (in protobuf wire format).
31312
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
31313
+ * @return {!proto.bonus.ResolveProviderRewardWinningsRequest}
31314
+ */
31315
+ proto.bonus.ResolveProviderRewardWinningsRequest.deserializeBinary = function(bytes) {
31316
+ var reader = new jspb.BinaryReader(bytes);
31317
+ var msg = new proto.bonus.ResolveProviderRewardWinningsRequest;
31318
+ return proto.bonus.ResolveProviderRewardWinningsRequest.deserializeBinaryFromReader(msg, reader);
31319
+ };
31320
+
31321
+
31322
+ /**
31323
+ * Deserializes binary data (in protobuf wire format) from the
31324
+ * given reader into the given message object.
31325
+ * @param {!proto.bonus.ResolveProviderRewardWinningsRequest} msg The message object to deserialize into.
31326
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
31327
+ * @return {!proto.bonus.ResolveProviderRewardWinningsRequest}
31328
+ */
31329
+ proto.bonus.ResolveProviderRewardWinningsRequest.deserializeBinaryFromReader = function(msg, reader) {
31330
+ while (reader.nextField()) {
31331
+ if (reader.isEndGroup()) {
31332
+ break;
31333
+ }
31334
+ var field = reader.getFieldNumber();
31335
+ switch (field) {
31336
+ case 1:
31337
+ var value = /** @type {number} */ (reader.readInt64());
31338
+ msg.setUserId(value);
31339
+ break;
31340
+ case 2:
31341
+ var value = /** @type {string} */ (reader.readString());
31342
+ msg.setProviderRewardId(value);
31343
+ break;
31344
+ case 3:
31345
+ var value = /** @type {string} */ (reader.readString());
31346
+ msg.setProviderTransactionId(value);
31347
+ break;
31348
+ case 4:
31349
+ var value = /** @type {string} */ (reader.readString());
31350
+ msg.setProviderCurrency(value);
31351
+ break;
31352
+ case 5:
31353
+ var value = /** @type {number} */ (reader.readUint32());
31354
+ msg.setProviderCurrencyScale(value);
31355
+ break;
31356
+ case 6:
31357
+ var value = /** @type {string} */ (reader.readString());
31358
+ msg.setProviderAmountMinor(value);
31359
+ break;
31360
+ default:
31361
+ reader.skipField();
31362
+ break;
31363
+ }
31364
+ }
31365
+ return msg;
31366
+ };
31367
+
31368
+
31369
+ /**
31370
+ * Serializes the message to binary data (in protobuf wire format).
31371
+ * @return {!Uint8Array}
31372
+ */
31373
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.serializeBinary = function() {
31374
+ var writer = new jspb.BinaryWriter();
31375
+ proto.bonus.ResolveProviderRewardWinningsRequest.serializeBinaryToWriter(this, writer);
31376
+ return writer.getResultBuffer();
31377
+ };
31378
+
31379
+
31380
+ /**
31381
+ * Serializes the given message to binary data (in protobuf wire
31382
+ * format), writing to the given BinaryWriter.
31383
+ * @param {!proto.bonus.ResolveProviderRewardWinningsRequest} message
31384
+ * @param {!jspb.BinaryWriter} writer
31385
+ * @suppress {unusedLocalVariables} f is only used for nested messages
31386
+ */
31387
+ proto.bonus.ResolveProviderRewardWinningsRequest.serializeBinaryToWriter = function(message, writer) {
31388
+ var f = undefined;
31389
+ f = message.getUserId();
31390
+ if (f !== 0) {
31391
+ writer.writeInt64(
31392
+ 1,
31393
+ f
31394
+ );
31395
+ }
31396
+ f = message.getProviderRewardId();
31397
+ if (f.length > 0) {
31398
+ writer.writeString(
31399
+ 2,
31400
+ f
31401
+ );
31402
+ }
31403
+ f = message.getProviderTransactionId();
31404
+ if (f.length > 0) {
31405
+ writer.writeString(
31406
+ 3,
31407
+ f
31408
+ );
31409
+ }
31410
+ f = message.getProviderCurrency();
31411
+ if (f.length > 0) {
31412
+ writer.writeString(
31413
+ 4,
31414
+ f
31415
+ );
31416
+ }
31417
+ f = message.getProviderCurrencyScale();
31418
+ if (f !== 0) {
31419
+ writer.writeUint32(
31420
+ 5,
31421
+ f
31422
+ );
31423
+ }
31424
+ f = message.getProviderAmountMinor();
31425
+ if (f.length > 0) {
31426
+ writer.writeString(
31427
+ 6,
31428
+ f
31429
+ );
31430
+ }
31431
+ };
31432
+
31433
+
31434
+ /**
31435
+ * optional int64 user_id = 1;
31436
+ * @return {number}
31437
+ */
31438
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.getUserId = function() {
31439
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
31440
+ };
31441
+
31442
+
31443
+ /**
31444
+ * @param {number} value
31445
+ * @return {!proto.bonus.ResolveProviderRewardWinningsRequest} returns this
31446
+ */
31447
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.setUserId = function(value) {
31448
+ return jspb.Message.setProto3IntField(this, 1, value);
31449
+ };
31450
+
31451
+
31452
+ /**
31453
+ * optional string provider_reward_id = 2;
31454
+ * @return {string}
31455
+ */
31456
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.getProviderRewardId = function() {
31457
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
31458
+ };
31459
+
31460
+
31461
+ /**
31462
+ * @param {string} value
31463
+ * @return {!proto.bonus.ResolveProviderRewardWinningsRequest} returns this
31464
+ */
31465
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.setProviderRewardId = function(value) {
31466
+ return jspb.Message.setProto3StringField(this, 2, value);
31467
+ };
31468
+
31469
+
31470
+ /**
31471
+ * optional string provider_transaction_id = 3;
31472
+ * @return {string}
31473
+ */
31474
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.getProviderTransactionId = function() {
31475
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
31476
+ };
31477
+
31478
+
31479
+ /**
31480
+ * @param {string} value
31481
+ * @return {!proto.bonus.ResolveProviderRewardWinningsRequest} returns this
31482
+ */
31483
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.setProviderTransactionId = function(value) {
31484
+ return jspb.Message.setProto3StringField(this, 3, value);
31485
+ };
31486
+
31487
+
31488
+ /**
31489
+ * optional string provider_currency = 4;
31490
+ * @return {string}
31491
+ */
31492
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.getProviderCurrency = function() {
31493
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
31494
+ };
31495
+
31496
+
31497
+ /**
31498
+ * @param {string} value
31499
+ * @return {!proto.bonus.ResolveProviderRewardWinningsRequest} returns this
31500
+ */
31501
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.setProviderCurrency = function(value) {
31502
+ return jspb.Message.setProto3StringField(this, 4, value);
31503
+ };
31504
+
31505
+
31506
+ /**
31507
+ * optional uint32 provider_currency_scale = 5;
31508
+ * @return {number}
31509
+ */
31510
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.getProviderCurrencyScale = function() {
31511
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
31512
+ };
31513
+
31514
+
31515
+ /**
31516
+ * @param {number} value
31517
+ * @return {!proto.bonus.ResolveProviderRewardWinningsRequest} returns this
31518
+ */
31519
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.setProviderCurrencyScale = function(value) {
31520
+ return jspb.Message.setProto3IntField(this, 5, value);
31521
+ };
31522
+
31523
+
31524
+ /**
31525
+ * optional string provider_amount_minor = 6;
31526
+ * @return {string}
31527
+ */
31528
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.getProviderAmountMinor = function() {
31529
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
31530
+ };
31531
+
31532
+
31533
+ /**
31534
+ * @param {string} value
31535
+ * @return {!proto.bonus.ResolveProviderRewardWinningsRequest} returns this
31536
+ */
31537
+ proto.bonus.ResolveProviderRewardWinningsRequest.prototype.setProviderAmountMinor = function(value) {
31538
+ return jspb.Message.setProto3StringField(this, 6, value);
31539
+ };
31540
+
31541
+
31542
+
31543
+
31544
+
31545
+ if (jspb.Message.GENERATE_TO_OBJECT) {
31546
+ /**
31547
+ * Creates an object representation of this proto.
31548
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
31549
+ * Optional fields that are not set will be set to undefined.
31550
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
31551
+ * For the list of reserved names please see:
31552
+ * net/proto2/compiler/js/internal/generator.cc#kKeyword.
31553
+ * @param {boolean=} opt_includeInstance Deprecated. whether to include the
31554
+ * JSPB instance for transitional soy proto support:
31555
+ * http://goto/soy-param-migration
31556
+ * @return {!Object}
31557
+ */
31558
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.toObject = function(opt_includeInstance) {
31559
+ return proto.bonus.ResolveProviderRewardWinningsResponse.toObject(opt_includeInstance, this);
31560
+ };
31561
+
31562
+
31563
+ /**
31564
+ * Static version of the {@see toObject} method.
31565
+ * @param {boolean|undefined} includeInstance Deprecated. Whether to include
31566
+ * the JSPB instance for transitional soy proto support:
31567
+ * http://goto/soy-param-migration
31568
+ * @param {!proto.bonus.ResolveProviderRewardWinningsResponse} msg The msg instance to transform.
31569
+ * @return {!Object}
31570
+ * @suppress {unusedLocalVariables} f is only used for nested messages
31571
+ */
31572
+ proto.bonus.ResolveProviderRewardWinningsResponse.toObject = function(includeInstance, msg) {
31573
+ var f, obj = {
31574
+ mode: jspb.Message.getFieldWithDefault(msg, 1, ""),
31575
+ userBonusId: jspb.Message.getFieldWithDefault(msg, 2, 0),
31576
+ currency: jspb.Message.getFieldWithDefault(msg, 3, ""),
31577
+ currencyScale: jspb.Message.getFieldWithDefault(msg, 4, 0),
31578
+ amountMinor: jspb.Message.getFieldWithDefault(msg, 5, ""),
31579
+ providerWinningsFxJson: jspb.Message.getFieldWithDefault(msg, 6, "")
31580
+ };
31581
+
31582
+ if (includeInstance) {
31583
+ obj.$jspbMessageInstance = msg;
31584
+ }
31585
+ return obj;
31586
+ };
31587
+ }
31588
+
31589
+
31590
+ /**
31591
+ * Deserializes binary data (in protobuf wire format).
31592
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
31593
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse}
31594
+ */
31595
+ proto.bonus.ResolveProviderRewardWinningsResponse.deserializeBinary = function(bytes) {
31596
+ var reader = new jspb.BinaryReader(bytes);
31597
+ var msg = new proto.bonus.ResolveProviderRewardWinningsResponse;
31598
+ return proto.bonus.ResolveProviderRewardWinningsResponse.deserializeBinaryFromReader(msg, reader);
31599
+ };
31600
+
31601
+
31602
+ /**
31603
+ * Deserializes binary data (in protobuf wire format) from the
31604
+ * given reader into the given message object.
31605
+ * @param {!proto.bonus.ResolveProviderRewardWinningsResponse} msg The message object to deserialize into.
31606
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
31607
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse}
31608
+ */
31609
+ proto.bonus.ResolveProviderRewardWinningsResponse.deserializeBinaryFromReader = function(msg, reader) {
31610
+ while (reader.nextField()) {
31611
+ if (reader.isEndGroup()) {
31612
+ break;
31613
+ }
31614
+ var field = reader.getFieldNumber();
31615
+ switch (field) {
31616
+ case 1:
31617
+ var value = /** @type {string} */ (reader.readString());
31618
+ msg.setMode(value);
31619
+ break;
31620
+ case 2:
31621
+ var value = /** @type {number} */ (reader.readInt64());
31622
+ msg.setUserBonusId(value);
31623
+ break;
31624
+ case 3:
31625
+ var value = /** @type {string} */ (reader.readString());
31626
+ msg.setCurrency(value);
31627
+ break;
31628
+ case 4:
31629
+ var value = /** @type {number} */ (reader.readUint32());
31630
+ msg.setCurrencyScale(value);
31631
+ break;
31632
+ case 5:
31633
+ var value = /** @type {string} */ (reader.readString());
31634
+ msg.setAmountMinor(value);
31635
+ break;
31636
+ case 6:
31637
+ var value = /** @type {string} */ (reader.readString());
31638
+ msg.setProviderWinningsFxJson(value);
31639
+ break;
31640
+ default:
31641
+ reader.skipField();
31642
+ break;
31643
+ }
31644
+ }
31645
+ return msg;
31646
+ };
31647
+
31648
+
31649
+ /**
31650
+ * Serializes the message to binary data (in protobuf wire format).
31651
+ * @return {!Uint8Array}
31652
+ */
31653
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.serializeBinary = function() {
31654
+ var writer = new jspb.BinaryWriter();
31655
+ proto.bonus.ResolveProviderRewardWinningsResponse.serializeBinaryToWriter(this, writer);
31656
+ return writer.getResultBuffer();
31657
+ };
31658
+
31659
+
31660
+ /**
31661
+ * Serializes the given message to binary data (in protobuf wire
31662
+ * format), writing to the given BinaryWriter.
31663
+ * @param {!proto.bonus.ResolveProviderRewardWinningsResponse} message
31664
+ * @param {!jspb.BinaryWriter} writer
31665
+ * @suppress {unusedLocalVariables} f is only used for nested messages
31666
+ */
31667
+ proto.bonus.ResolveProviderRewardWinningsResponse.serializeBinaryToWriter = function(message, writer) {
31668
+ var f = undefined;
31669
+ f = message.getMode();
31670
+ if (f.length > 0) {
31671
+ writer.writeString(
31672
+ 1,
31673
+ f
31674
+ );
31675
+ }
31676
+ f = /** @type {number} */ (jspb.Message.getField(message, 2));
31677
+ if (f != null) {
31678
+ writer.writeInt64(
31679
+ 2,
31680
+ f
31681
+ );
31682
+ }
31683
+ f = /** @type {string} */ (jspb.Message.getField(message, 3));
31684
+ if (f != null) {
31685
+ writer.writeString(
31686
+ 3,
31687
+ f
31688
+ );
31689
+ }
31690
+ f = /** @type {number} */ (jspb.Message.getField(message, 4));
31691
+ if (f != null) {
31692
+ writer.writeUint32(
31693
+ 4,
31694
+ f
31695
+ );
31696
+ }
31697
+ f = /** @type {string} */ (jspb.Message.getField(message, 5));
31698
+ if (f != null) {
31699
+ writer.writeString(
31700
+ 5,
31701
+ f
31702
+ );
31703
+ }
31704
+ f = /** @type {string} */ (jspb.Message.getField(message, 6));
31705
+ if (f != null) {
31706
+ writer.writeString(
31707
+ 6,
31708
+ f
31709
+ );
31710
+ }
31711
+ };
31712
+
31713
+
31714
+ /**
31715
+ * optional string mode = 1;
31716
+ * @return {string}
31717
+ */
31718
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.getMode = function() {
31719
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
31720
+ };
31721
+
31722
+
31723
+ /**
31724
+ * @param {string} value
31725
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31726
+ */
31727
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.setMode = function(value) {
31728
+ return jspb.Message.setProto3StringField(this, 1, value);
31729
+ };
31730
+
31731
+
31732
+ /**
31733
+ * optional int64 user_bonus_id = 2;
31734
+ * @return {number}
31735
+ */
31736
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.getUserBonusId = function() {
31737
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
31738
+ };
31739
+
31740
+
31741
+ /**
31742
+ * @param {number} value
31743
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31744
+ */
31745
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.setUserBonusId = function(value) {
31746
+ return jspb.Message.setField(this, 2, value);
31747
+ };
31748
+
31749
+
31750
+ /**
31751
+ * Clears the field making it undefined.
31752
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31753
+ */
31754
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.clearUserBonusId = function() {
31755
+ return jspb.Message.setField(this, 2, undefined);
31756
+ };
31757
+
31758
+
31759
+ /**
31760
+ * Returns whether this field is set.
31761
+ * @return {boolean}
31762
+ */
31763
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.hasUserBonusId = function() {
31764
+ return jspb.Message.getField(this, 2) != null;
31765
+ };
31766
+
31767
+
31768
+ /**
31769
+ * optional string currency = 3;
31770
+ * @return {string}
31771
+ */
31772
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.getCurrency = function() {
31773
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
31774
+ };
31775
+
31776
+
31777
+ /**
31778
+ * @param {string} value
31779
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31780
+ */
31781
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.setCurrency = function(value) {
31782
+ return jspb.Message.setField(this, 3, value);
31783
+ };
31784
+
31785
+
31786
+ /**
31787
+ * Clears the field making it undefined.
31788
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31789
+ */
31790
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.clearCurrency = function() {
31791
+ return jspb.Message.setField(this, 3, undefined);
31792
+ };
31793
+
31794
+
31795
+ /**
31796
+ * Returns whether this field is set.
31797
+ * @return {boolean}
31798
+ */
31799
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.hasCurrency = function() {
31800
+ return jspb.Message.getField(this, 3) != null;
31801
+ };
31802
+
31803
+
31804
+ /**
31805
+ * optional uint32 currency_scale = 4;
31806
+ * @return {number}
31807
+ */
31808
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.getCurrencyScale = function() {
31809
+ return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
31810
+ };
31811
+
31812
+
31813
+ /**
31814
+ * @param {number} value
31815
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31816
+ */
31817
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.setCurrencyScale = function(value) {
31818
+ return jspb.Message.setField(this, 4, value);
31819
+ };
31820
+
31821
+
31822
+ /**
31823
+ * Clears the field making it undefined.
31824
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31825
+ */
31826
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.clearCurrencyScale = function() {
31827
+ return jspb.Message.setField(this, 4, undefined);
31828
+ };
31829
+
31830
+
31831
+ /**
31832
+ * Returns whether this field is set.
31833
+ * @return {boolean}
31834
+ */
31835
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.hasCurrencyScale = function() {
31836
+ return jspb.Message.getField(this, 4) != null;
31837
+ };
31838
+
31839
+
31840
+ /**
31841
+ * optional string amount_minor = 5;
31842
+ * @return {string}
31843
+ */
31844
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.getAmountMinor = function() {
31845
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
31846
+ };
31847
+
31848
+
31849
+ /**
31850
+ * @param {string} value
31851
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31852
+ */
31853
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.setAmountMinor = function(value) {
31854
+ return jspb.Message.setField(this, 5, value);
31855
+ };
31856
+
31857
+
31858
+ /**
31859
+ * Clears the field making it undefined.
31860
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31861
+ */
31862
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.clearAmountMinor = function() {
31863
+ return jspb.Message.setField(this, 5, undefined);
31864
+ };
31865
+
31866
+
31867
+ /**
31868
+ * Returns whether this field is set.
31869
+ * @return {boolean}
31870
+ */
31871
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.hasAmountMinor = function() {
31872
+ return jspb.Message.getField(this, 5) != null;
31873
+ };
31874
+
31875
+
31876
+ /**
31877
+ * optional string provider_winnings_fx_json = 6;
31878
+ * @return {string}
31879
+ */
31880
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.getProviderWinningsFxJson = function() {
31881
+ return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, ""));
31882
+ };
31883
+
31884
+
31885
+ /**
31886
+ * @param {string} value
31887
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31888
+ */
31889
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.setProviderWinningsFxJson = function(value) {
31890
+ return jspb.Message.setField(this, 6, value);
31891
+ };
31892
+
31893
+
31894
+ /**
31895
+ * Clears the field making it undefined.
31896
+ * @return {!proto.bonus.ResolveProviderRewardWinningsResponse} returns this
31897
+ */
31898
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.clearProviderWinningsFxJson = function() {
31899
+ return jspb.Message.setField(this, 6, undefined);
31900
+ };
31901
+
31902
+
31903
+ /**
31904
+ * Returns whether this field is set.
31905
+ * @return {boolean}
31906
+ */
31907
+ proto.bonus.ResolveProviderRewardWinningsResponse.prototype.hasProviderWinningsFxJson = function() {
31908
+ return jspb.Message.getField(this, 6) != null;
31909
+ };
31910
+
31911
+
31074
31912
  goog.object.extend(exports, proto.bonus);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "protobuf-platform",
3
- "version": "1.2.718",
3
+ "version": "1.2.720",
4
4
  "description": "Protobuf structures",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+ const assert = require('node:assert/strict');
3
+ const { execFileSync } = require('node:child_process');
4
+ const vm = require('node:vm');
5
+ const current = require('../bonus/bonus_pb');
6
+ // Actual last bindings before the additive contract, isolated from global proto symbols.
7
+ const legacySource = execFileSync('git', ['show', '6e9c17f:bonus/bonus_pb.js'], { encoding: 'utf8', maxBuffer: 8 * 1024 * 1024 });
8
+ const sandbox = { exports: {}, proto: {}, require, console };
9
+ sandbox.global = sandbox;
10
+ vm.runInNewContext(legacySource, sandbox);
11
+ const legacy = sandbox.exports;
12
+ for (const [name, getter, setter, has, clear, identitySetter, identityGetter] of [
13
+ ['ValidateSelectedWageringUserBonusRequest', 'getWalletCurrency', 'setWalletCurrency', 'hasWalletCurrency', 'clearWalletCurrency', 'setUserId', 'getUserId'],
14
+ ['ValidateSelectedWageringUserBonusResponse', 'getCurrency', 'setCurrency', 'hasCurrency', 'clearCurrency', 'setSelectedUserBonusId', 'getSelectedUserBonusId'],
15
+ ['ActiveWageringUserBonusItem', 'getCurrency', 'setCurrency', 'hasCurrency', 'clearCurrency', 'setUserBonusId', 'getUserBonusId'],
16
+ ]) {
17
+ const old = new legacy[name](); old[identitySetter](462);
18
+ const received = current[name].deserializeBinary(old.serializeBinary());
19
+ assert.equal(received[has](), false);
20
+ assert.equal(received[getter](), '');
21
+ assert.equal(received[identityGetter](), 462);
22
+ for (const currency of ['USDT', 'BTC', '']) {
23
+ received[setter](currency);
24
+ const roundTrip = current[name].deserializeBinary(received.serializeBinary());
25
+ assert.equal(roundTrip[has](), true);
26
+ assert.equal(roundTrip[getter](), currency);
27
+ const oldReader = legacy[name].deserializeBinary(received.serializeBinary());
28
+ assert.equal(oldReader[identityGetter](), 462);
29
+ // Older reserialization drops unknown fields; new readers must still treat that as unknown.
30
+ assert.equal(current[name].deserializeBinary(oldReader.serializeBinary())[has](), false);
31
+ }
32
+ received[clear](); assert.equal(received[has](), false);
33
+ }
34
+ console.log('PASS bonus currency mixed-version wire contract');
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+ const assert = require('node:assert/strict');
3
+ const { execFileSync } = require('node:child_process');
4
+ const { createRequire } = require('node:module');
5
+ const vm = require('node:vm');
6
+ const path = require('node:path');
7
+ const fs = require('node:fs');
8
+ const pkg = require('..');
9
+ const grpc = pkg.gRPC;
10
+ const messages = pkg.bonus.messages;
11
+ const service = pkg.bonus.service;
12
+ function previous(file) {
13
+ const source = execFileSync('git', ['show', `4e2cfdb:${file}`], { encoding: 'utf8', maxBuffer: 8 * 1024 * 1024 });
14
+ const sandbox = { exports: {}, proto: {}, require: createRequire(path.resolve(__dirname, '..', file)) };
15
+ sandbox.global = sandbox;
16
+ vm.runInNewContext(source, sandbox);
17
+ return sandbox.exports;
18
+ }
19
+ async function main() {
20
+ const oldService = previous('bonus/bonus_grpc_pb.js');
21
+ const oldMessages = previous('bonus/bonus_pb.js');
22
+ assert.deepEqual(Object.keys(service.BonusService).filter(k => k !== 'resolveProviderRewardWinnings'), Object.keys(oldService.BonusService));
23
+ for (const [name, method] of Object.entries(oldService.BonusService)) {
24
+ const now = service.BonusService[name];
25
+ for (const key of ['path', 'requestStream', 'responseStream']) assert.equal(now[key], method[key]);
26
+ }
27
+ const priorProto = execFileSync('git', ['show', '4e2cfdb:bonus/bonus.proto'], { encoding: 'utf8' });
28
+ const retained = fs.readFileSync(path.join(__dirname, '../bonus/bonus.proto'), 'utf8')
29
+ .split('\n// Authoritative provider units, never account/session-converted values.')[0]
30
+ .replace(' // Resolve a durable provider reward identity before any winnings wallet mutation.\n rpc resolveProviderRewardWinnings(ResolveProviderRewardWinningsRequest) returns (ResolveProviderRewardWinningsResponse);\n', '');
31
+ assert.equal(retained.trimEnd(), priorProto.trimEnd());
32
+ const request = new messages.ResolveProviderRewardWinningsRequest();
33
+ request.setUserId(462); request.setProviderRewardId('provider-reward-1');
34
+ request.setProviderTransactionId('provider-tx-1'); request.setProviderCurrency('EUR');
35
+ request.setProviderCurrencyScale(2); request.setProviderAmountMinor('123456789012345678901234567890123456');
36
+ const r = messages.ResolveProviderRewardWinningsRequest.deserializeBinary(request.serializeBinary());
37
+ assert.equal(r.getProviderAmountMinor(), request.getProviderAmountMinor());
38
+ assert.equal(r.getProviderTransactionId(), 'provider-tx-1');
39
+ assert.equal(r.getProviderCurrencyScale(), 2);
40
+ const response = new messages.ResolveProviderRewardWinningsResponse();
41
+ assert.equal(response.getMode(), '');
42
+ for (const field of ['UserBonusId', 'Currency', 'CurrencyScale', 'AmountMinor', 'ProviderWinningsFxJson']) assert.equal(response[`has${field}`](), false);
43
+ response.setMode('normalized'); response.setUserBonusId(2898); response.setCurrency('BTC');
44
+ response.setCurrencyScale(0); response.setAmountMinor('0'); response.setProviderWinningsFxJson('{"version":1}');
45
+ const received = messages.ResolveProviderRewardWinningsResponse.deserializeBinary(response.serializeBinary());
46
+ assert.equal(received.hasCurrencyScale(), true); assert.equal(received.getCurrencyScale(), 0);
47
+ assert.equal(received.getAmountMinor(), '0'); assert.equal(received.getMode(), 'normalized');
48
+ const legacy = new messages.ResolveProviderRewardWinningsResponse(); legacy.setMode('legacy');
49
+ assert.equal(messages.ResolveProviderRewardWinningsResponse.deserializeBinary(legacy.serializeBinary()).hasCurrency(), false);
50
+ const oldRequest = new oldMessages.ValidateSelectedWageringUserBonusRequest();
51
+ oldRequest.setUserId(462); oldRequest.setWalletCurrency('USDT');
52
+ assert.equal(messages.ValidateSelectedWageringUserBonusRequest.deserializeBinary(oldRequest.serializeBinary()).getWalletCurrency(), 'USDT');
53
+ // Actual old server: a new caller receives UNIMPLEMENTED, not an empty legacy response.
54
+ const server = new grpc.Server();
55
+ server.addService(oldService.BonusService, {});
56
+ const port = await new Promise((resolve, reject) => server.bindAsync('127.0.0.1:0', grpc.ServerCredentials.createInsecure(), (error, value) => error ? reject(error) : resolve(value)));
57
+ const client = new service.BonusClient(`127.0.0.1:${port}`, grpc.credentials.createInsecure());
58
+ try {
59
+ await assert.rejects(new Promise((resolve, reject) => client.resolveProviderRewardWinnings(request,
60
+ { deadline: Date.now() + 3000 }, (error, value) => error ? reject(error) : resolve(value))),
61
+ error => error.code === grpc.status.UNIMPLEMENTED);
62
+ } finally { client.close(); server.forceShutdown(); }
63
+ console.log('PASS provider winnings contract: unchanged old schema/methods, exact minors, optional presence, explicit modes, old-server UNIMPLEMENTED');
64
+ }
65
+ main().catch(error => { console.error(error); process.exitCode = 1; });