@bosonprotocol/core-sdk 1.47.0-alpha.4 → 1.47.0-alpha.5

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.
Files changed (37) hide show
  1. package/dist/cjs/meta-tx/handler.d.ts +186 -0
  2. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  3. package/dist/cjs/meta-tx/handler.js +170 -30
  4. package/dist/cjs/meta-tx/handler.js.map +1 -1
  5. package/dist/cjs/meta-tx/mixin.d.ts +182 -31
  6. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
  7. package/dist/cjs/meta-tx/mixin.js +157 -169
  8. package/dist/cjs/meta-tx/mixin.js.map +1 -1
  9. package/dist/cjs/native-meta-tx/handler.d.ts +16 -3
  10. package/dist/cjs/native-meta-tx/handler.d.ts.map +1 -1
  11. package/dist/cjs/native-meta-tx/handler.js +16 -5
  12. package/dist/cjs/native-meta-tx/handler.js.map +1 -1
  13. package/dist/cjs/native-meta-tx/mixin.d.ts +11 -3
  14. package/dist/cjs/native-meta-tx/mixin.d.ts.map +1 -1
  15. package/dist/cjs/native-meta-tx/mixin.js +7 -9
  16. package/dist/cjs/native-meta-tx/mixin.js.map +1 -1
  17. package/dist/esm/meta-tx/handler.d.ts +186 -0
  18. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  19. package/dist/esm/meta-tx/handler.js +229 -48
  20. package/dist/esm/meta-tx/handler.js.map +1 -1
  21. package/dist/esm/meta-tx/mixin.d.ts +182 -31
  22. package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
  23. package/dist/esm/meta-tx/mixin.js +380 -169
  24. package/dist/esm/meta-tx/mixin.js.map +1 -1
  25. package/dist/esm/native-meta-tx/handler.d.ts +16 -3
  26. package/dist/esm/native-meta-tx/handler.d.ts.map +1 -1
  27. package/dist/esm/native-meta-tx/handler.js +26 -6
  28. package/dist/esm/native-meta-tx/handler.js.map +1 -1
  29. package/dist/esm/native-meta-tx/mixin.d.ts +11 -3
  30. package/dist/esm/native-meta-tx/mixin.d.ts.map +1 -1
  31. package/dist/esm/native-meta-tx/mixin.js +12 -8
  32. package/dist/esm/native-meta-tx/mixin.js.map +1 -1
  33. package/package.json +2 -2
  34. package/src/meta-tx/handler.ts +808 -93
  35. package/src/meta-tx/mixin.ts +839 -64
  36. package/src/native-meta-tx/handler.ts +68 -18
  37. package/src/native-meta-tx/mixin.ts +30 -4
@@ -20,6 +20,7 @@ import { getNonce, verifyEIP712 } from "../forwarder/handler";
20
20
  import { isTrustedForwarder } from "../voucher/handler";
21
21
  import { findCollectionSalt } from "../accounts/handler";
22
22
  import { storeMetadataItems } from "../metadata/storeMetadataItems";
23
+ // Implementation
23
24
  export async function signMetaTx(args) {
24
25
  const metaTransactionType = [
25
26
  { name: "nonce", type: "uint256" },
@@ -33,12 +34,27 @@ export async function signMetaTx(args) {
33
34
  };
34
35
  const signerAddress = await args.web3Lib.getSignerAddress();
35
36
  const message = {
36
- nonce: args.nonce,
37
+ nonce: args.nonce.toString(),
37
38
  from: signerAddress,
38
39
  contractAddress: args.metaTxHandlerAddress,
39
40
  functionName: args.functionName,
40
41
  functionSignature: args.functionSignature
41
42
  };
43
+ if (args.returnTypedDataToSign) {
44
+ const structuredData = await prepareDataSignatureParameters({
45
+ ...args,
46
+ verifyingContractAddress: args.metaTxHandlerAddress,
47
+ customSignatureType,
48
+ primaryType: "MetaTransaction",
49
+ message,
50
+ returnTypedDataToSign: true
51
+ });
52
+ return {
53
+ ...structuredData,
54
+ functionName: args.functionName,
55
+ functionSignature: args.functionSignature
56
+ };
57
+ }
42
58
  const signature = await prepareDataSignatureParameters({
43
59
  ...args,
44
60
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -251,6 +267,7 @@ export async function relayBiconomyMetaTransaction(args) {
251
267
  hash: relayTxResponse.txHash
252
268
  };
253
269
  }
270
+ // Implementation
254
271
  export async function signMetaTxCreateSeller(args) {
255
272
  await Promise.all([args.createSellerArgs.contractUri, args.createSellerArgs.metadataUri].map((metadataUri) => storeMetadataOnTheGraph({
256
273
  metadataUriOrHash: metadataUri,
@@ -262,31 +279,46 @@ export async function signMetaTxCreateSeller(args) {
262
279
  contractAddress: args.metaTxHandlerAddress,
263
280
  ...args
264
281
  });
265
- return signMetaTx({
282
+ const signMetaTxArgs = {
266
283
  ...args,
267
284
  functionName: "createSeller((uint256,address,address,address,address,bool,string),(uint256,uint8),(string,uint256,bytes32))",
268
285
  functionSignature: encodeCreateSeller(args.createSellerArgs, collectionSalt)
269
- });
286
+ };
287
+ if (args.returnTypedDataToSign) {
288
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
289
+ }
290
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
270
291
  }
292
+ // Implementation
271
293
  export async function signMetaTxUpdateSeller(args) {
272
294
  await storeMetadataOnTheGraph({
273
295
  metadataUriOrHash: args.updateSellerArgs.metadataUri,
274
296
  metadataStorage: args.metadataStorage,
275
297
  theGraphStorage: args.theGraphStorage
276
298
  });
277
- return signMetaTx({
299
+ const signMetaTxArgs = {
278
300
  ...args,
279
301
  functionName: "updateSeller((uint256,address,address,address,address,bool,string),(uint256,uint8))",
280
302
  functionSignature: encodeUpdateSeller(args.updateSellerArgs)
281
- });
303
+ };
304
+ if (args.returnTypedDataToSign) {
305
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
306
+ }
307
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
282
308
  }
309
+ // Implementation
283
310
  export async function signMetaTxOptInToSellerUpdate(args) {
284
- return signMetaTx({
311
+ const signMetaTxArgs = {
285
312
  ...args,
286
313
  functionName: "optInToSellerUpdate(uint256,uint8[])",
287
314
  functionSignature: encodeOptInToSellerUpdate(args.optInToSellerUpdateArgs)
288
- });
315
+ };
316
+ if (args.returnTypedDataToSign) {
317
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
318
+ }
319
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
289
320
  }
321
+ // Implementation
290
322
  export async function signMetaTxCreateOffer(args) {
291
323
  utils.validation.createOfferArgsSchema.validateSync(args.createOfferArgs, {
292
324
  abortEarly: false
@@ -300,12 +332,17 @@ export async function signMetaTxCreateOffer(args) {
300
332
  ...args,
301
333
  createOffersArgs: [args.createOfferArgs]
302
334
  });
303
- return signMetaTx({
335
+ const signMetaTxArgs = {
304
336
  ...args,
305
337
  functionName: "createOffer((uint256,uint256,uint256,uint256,uint256,uint256,address,uint8,uint8,string,string,bool,uint256,(address[],uint256[])[],uint256),(uint256,uint256,uint256,uint256),(uint256,uint256,uint256),(uint256,address),uint256,uint256)",
306
338
  functionSignature: encodeCreateOffer(args.createOfferArgs)
307
- });
339
+ };
340
+ if (args.returnTypedDataToSign) {
341
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
342
+ }
343
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
308
344
  }
345
+ // Implementation
309
346
  export async function signMetaTxCreateOfferBatch(args) {
310
347
  for (const offerToCreate of args.createOffersArgs) {
311
348
  utils.validation.createOfferArgsSchema.validateSync(offerToCreate, {
@@ -318,76 +355,125 @@ export async function signMetaTxCreateOfferBatch(args) {
318
355
  theGraphStorage: args.theGraphStorage
319
356
  })));
320
357
  await storeMetadataItems(args);
321
- return signMetaTx({
358
+ const signMetaTxArgs = {
322
359
  ...args,
323
360
  functionName: "createOfferBatch((uint256,uint256,uint256,uint256,uint256,uint256,address,uint8,uint8,string,string,bool,uint256,(address[],uint256[])[],uint256)[],(uint256,uint256,uint256,uint256)[],(uint256,uint256,uint256)[],(uint256,address)[],uint256[],uint256[])",
324
361
  functionSignature: encodeCreateOfferBatch(args.createOffersArgs)
325
- });
362
+ };
363
+ if (args.returnTypedDataToSign) {
364
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
365
+ }
366
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
326
367
  }
368
+ // Implementation
327
369
  export async function signMetaTxVoidOffer(args) {
328
- return signMetaTx({
370
+ const signMetaTxArgs = {
329
371
  ...args,
330
372
  functionName: "voidOffer(uint256)",
331
373
  functionSignature: bosonOfferHandlerIface.encodeFunctionData("voidOffer", [
332
374
  args.offerId
333
375
  ])
334
- });
376
+ };
377
+ if (args.returnTypedDataToSign) {
378
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
379
+ }
380
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
335
381
  }
382
+ // Implementation
336
383
  export async function signMetaTxVoidOfferBatch(args) {
337
- return signMetaTx({
384
+ const signMetaTxArgs = {
338
385
  ...args,
339
386
  functionName: "voidOfferBatch(uint256[])",
340
387
  functionSignature: bosonOfferHandlerIface.encodeFunctionData("voidOfferBatch", [args.offerIds])
341
- });
388
+ };
389
+ if (args.returnTypedDataToSign) {
390
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
391
+ }
392
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
342
393
  }
394
+ // Implementation
343
395
  export async function signMetaTxExtendOffer(args) {
344
- return signMetaTx({
396
+ const signMetaTxArgs = {
345
397
  ...args,
346
398
  functionName: "extendOffer(uint256,uint256)",
347
399
  functionSignature: bosonOfferHandlerIface.encodeFunctionData("extendOffer", [args.offerId, args.validUntil])
348
- });
400
+ };
401
+ if (args.returnTypedDataToSign) {
402
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
403
+ }
404
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
349
405
  }
406
+ // Implementation
350
407
  export async function signMetaTxExtendOfferBatch(args) {
351
- return signMetaTx({
408
+ const signMetaTxArgs = {
352
409
  ...args,
353
410
  functionName: "extendOfferBatch(uint256[],uint256)",
354
411
  functionSignature: bosonOfferHandlerIface.encodeFunctionData("extendOfferBatch", [args.offerIds, args.validUntil])
355
- });
412
+ };
413
+ if (args.returnTypedDataToSign) {
414
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
415
+ }
416
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
356
417
  }
418
+ // Implementation
357
419
  export async function signMetaTxCompleteExchangeBatch(args) {
358
- return signMetaTx({
420
+ const signMetaTxArgs = {
359
421
  ...args,
360
422
  functionName: "completeExchangeBatch(uint256[])",
361
423
  functionSignature: bosonExchangeHandlerIface.encodeFunctionData("completeExchangeBatch", [args.exchangeIds])
362
- });
424
+ };
425
+ if (args.returnTypedDataToSign) {
426
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
427
+ }
428
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
363
429
  }
430
+ // Implementation
364
431
  export async function signMetaTxExpireVoucher(args) {
365
- return signMetaTx({
432
+ const signMetaTxArgs = {
366
433
  ...args,
367
434
  functionName: "expireVoucher(uint256)",
368
435
  functionSignature: bosonExchangeHandlerIface.encodeFunctionData("expireVoucher", [args.exchangeId])
369
- });
436
+ };
437
+ if (args.returnTypedDataToSign) {
438
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
439
+ }
440
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
370
441
  }
442
+ // Implementation
371
443
  export async function signMetaTxRevokeVoucher(args) {
372
- return signMetaTx({
444
+ const signMetaTxArgs = {
373
445
  ...args,
374
446
  functionName: "revokeVoucher(uint256)",
375
447
  functionSignature: bosonExchangeHandlerIface.encodeFunctionData("revokeVoucher", [args.exchangeId])
376
- });
448
+ };
449
+ if (args.returnTypedDataToSign) {
450
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
451
+ }
452
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
377
453
  }
454
+ // Implementation
378
455
  export async function signMetaTxCreateGroup(args) {
379
- return signMetaTx({
456
+ const signMetaTxArgs = {
380
457
  ...args,
381
458
  functionName: "createGroup((uint256,uint256,uint256[]),(uint8,uint8,address,uint8,uint256,uint256,uint256,uint256))",
382
459
  functionSignature: encodeCreateGroup(args.createGroupArgs)
383
- });
460
+ };
461
+ if (args.returnTypedDataToSign) {
462
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
463
+ }
464
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
384
465
  }
466
+ // Implementation
385
467
  export async function signMetaTxReserveRange(args) {
386
- return signMetaTx({
468
+ const signMetaTxArgs = {
387
469
  ...args,
388
470
  functionName: "reserveRange(uint256,uint256,address)",
389
471
  functionSignature: encodeReserveRange(args.offerId, args.length, args.to)
390
- });
472
+ };
473
+ if (args.returnTypedDataToSign) {
474
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
475
+ }
476
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
391
477
  }
392
478
  function isLocal(chainId) {
393
479
  const localConfigs = envConfigs["local"];
@@ -469,6 +555,7 @@ export async function signMetaTxCallExternalContract(args, overrides = {}) {
469
555
  txGas
470
556
  });
471
557
  }
558
+ // Implementation
472
559
  export async function signMetaTxCreateOfferWithCondition(args) {
473
560
  utils.validation.createOfferArgsSchema.validateSync(args.offerToCreate, {
474
561
  abortEarly: false
@@ -482,12 +569,17 @@ export async function signMetaTxCreateOfferWithCondition(args) {
482
569
  ...args,
483
570
  createOffersArgs: [args.offerToCreate]
484
571
  });
485
- return signMetaTx({
572
+ const signMetaTxArgs = {
486
573
  ...args,
487
574
  functionName: "createOfferWithCondition((uint256,uint256,uint256,uint256,uint256,uint256,address,uint8,uint8,string,string,bool,uint256,(address[],uint256[])[],uint256),(uint256,uint256,uint256,uint256),(uint256,uint256,uint256),(uint256,address),(uint8,uint8,address,uint8,uint256,uint256,uint256,uint256),uint256,uint256)",
488
575
  functionSignature: encodeCreateOfferWithCondition(args.offerToCreate, args.condition)
489
- });
576
+ };
577
+ if (args.returnTypedDataToSign) {
578
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
579
+ }
580
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
490
581
  }
582
+ // Implementation
491
583
  export async function signMetaTxCommitToOffer(args) {
492
584
  const functionName = "commitToOffer(address,uint256)";
493
585
  const offerType = [
@@ -516,6 +608,18 @@ export async function signMetaTxCommitToOffer(args) {
516
608
  offerId: args.offerId.toString()
517
609
  }
518
610
  };
611
+ const functionSignature = bosonExchangeCommitHandlerIface.encodeFunctionData("commitToOffer", [buyerAddress, args.offerId]);
612
+ if (args.returnTypedDataToSign) {
613
+ const structuredData = await prepareDataSignatureParameters({
614
+ ...args,
615
+ verifyingContractAddress: args.metaTxHandlerAddress,
616
+ customSignatureType,
617
+ primaryType: "MetaTxCommitToOffer",
618
+ message,
619
+ returnTypedDataToSign: true
620
+ });
621
+ return { ...structuredData, functionName, functionSignature };
622
+ }
519
623
  const signatureParams = await prepareDataSignatureParameters({
520
624
  ...args,
521
625
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -527,9 +631,10 @@ export async function signMetaTxCommitToOffer(args) {
527
631
  return {
528
632
  ...signatureParams,
529
633
  functionName,
530
- functionSignature: bosonExchangeCommitHandlerIface.encodeFunctionData("commitToOffer", [buyerAddress, args.offerId])
634
+ functionSignature
531
635
  };
532
636
  }
637
+ // Implementation
533
638
  export async function signMetaTxCommitToConditionalOffer(args) {
534
639
  const functionName = "commitToConditionalOffer(address,uint256,uint256)";
535
640
  const offerType = [
@@ -560,6 +665,18 @@ export async function signMetaTxCommitToConditionalOffer(args) {
560
665
  tokenId: args.tokenId.toString()
561
666
  }
562
667
  };
668
+ const functionSignature = bosonExchangeCommitHandlerIface.encodeFunctionData("commitToConditionalOffer", [buyerAddress, args.offerId, args.tokenId]);
669
+ if (args.returnTypedDataToSign) {
670
+ const structuredData = await prepareDataSignatureParameters({
671
+ ...args,
672
+ verifyingContractAddress: args.metaTxHandlerAddress,
673
+ customSignatureType,
674
+ primaryType: "MetaTxCommitToConditionalOffer",
675
+ message,
676
+ returnTypedDataToSign: true
677
+ });
678
+ return { ...structuredData, functionName, functionSignature };
679
+ }
563
680
  const signatureParams = await prepareDataSignatureParameters({
564
681
  ...args,
565
682
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -571,17 +688,23 @@ export async function signMetaTxCommitToConditionalOffer(args) {
571
688
  return {
572
689
  ...signatureParams,
573
690
  functionName,
574
- functionSignature: bosonExchangeCommitHandlerIface.encodeFunctionData("commitToConditionalOffer", [buyerAddress, args.offerId, args.tokenId])
691
+ functionSignature
575
692
  };
576
693
  }
694
+ // Implementation
577
695
  export async function signMetaTxCommitToBuyerOffer(args) {
578
696
  const functionName = "commitToBuyerOffer(uint256,(uint256,(address[],uint256[]),address))";
579
- return signMetaTx({
697
+ const signMetaTxArgs = {
580
698
  ...args,
581
699
  functionName,
582
700
  functionSignature: encodeCommitToBuyerOffer(args.offerId, args.sellerParams)
583
- });
701
+ };
702
+ if (args.returnTypedDataToSign) {
703
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
704
+ }
705
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
584
706
  }
707
+ // Implementation
585
708
  export async function signMetaTxCreateOfferAndCommit(args) {
586
709
  utils.validation.createOfferAndCommitArgsSchema.validateSync(args.createOfferAndCommitArgs, { abortEarly: false });
587
710
  await storeMetadataOnTheGraph({
@@ -593,30 +716,41 @@ export async function signMetaTxCreateOfferAndCommit(args) {
593
716
  ...args,
594
717
  createOffersArgs: [args.createOfferAndCommitArgs]
595
718
  });
596
- return signMetaTx({
719
+ const signMetaTxArgs = {
597
720
  ...args,
598
721
  functionName: "createOfferAndCommit(((uint256,uint256,uint256,uint256,uint256,uint256,address,uint8,uint8,string,string,bool,uint256,(address[],uint256[])[],uint256),(uint256,uint256,uint256,uint256),(uint256,uint256,uint256),(uint256,address),(uint8,uint8,address,uint8,uint256,uint256,uint256,uint256),uint256,uint256,bool),address,address,bytes,uint256,(uint256,(address[],uint256[]),address))",
599
722
  functionSignature: encodeCreateOfferAndCommit(args.createOfferAndCommitArgs)
600
- });
723
+ };
724
+ if (args.returnTypedDataToSign) {
725
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
726
+ }
727
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
601
728
  }
729
+ // Implementation
602
730
  export async function signMetaTxCancelVoucher(args) {
603
731
  return makeExchangeMetaTxSigner("cancelVoucher(uint256)")(args);
604
732
  }
733
+ // Implementation
605
734
  export async function signMetaTxRedeemVoucher(args) {
606
735
  return makeExchangeMetaTxSigner("redeemVoucher(uint256)")(args);
607
736
  }
737
+ // Implementation
608
738
  export async function signMetaTxCompleteExchange(args) {
609
739
  return makeExchangeMetaTxSigner("completeExchange(uint256)")(args);
610
740
  }
741
+ // Implementation
611
742
  export async function signMetaTxRetractDispute(args) {
612
743
  return makeExchangeMetaTxSigner("retractDispute(uint256)", bosonDisputeHandlerIface)(args);
613
744
  }
745
+ // Implementation
614
746
  export async function signMetaTxEscalateDispute(args) {
615
747
  return makeExchangeMetaTxSigner("escalateDispute(uint256)", bosonDisputeHandlerIface)(args);
616
748
  }
749
+ // Implementation
617
750
  export async function signMetaTxRaiseDispute(args) {
618
751
  return makeExchangeMetaTxSigner("raiseDispute(uint256)", bosonDisputeHandlerIface)(args);
619
752
  }
753
+ // Implementation
620
754
  export async function signMetaTxResolveDispute(args) {
621
755
  const functionName = "resolveDispute(uint256,uint256,bytes)";
622
756
  const counterpartySig = typeof args.counterpartySig === "string"
@@ -649,6 +783,20 @@ export async function signMetaTxResolveDispute(args) {
649
783
  signature: counterpartySig
650
784
  }
651
785
  };
786
+ const functionSignature = bosonDisputeHandlerIface.encodeFunctionData(
787
+ // remove params in brackets from string
788
+ functionName.replace(/\(([^)]*)\)[^(]*$/, ""), [args.exchangeId, args.buyerPercent, counterpartySig]);
789
+ if (args.returnTypedDataToSign) {
790
+ const structuredData = await prepareDataSignatureParameters({
791
+ ...args,
792
+ verifyingContractAddress: args.metaTxHandlerAddress,
793
+ customSignatureType,
794
+ primaryType: "MetaTxDisputeResolution",
795
+ message,
796
+ returnTypedDataToSign: true
797
+ });
798
+ return { ...structuredData, functionName, functionSignature };
799
+ }
652
800
  const signatureParams = await prepareDataSignatureParameters({
653
801
  ...args,
654
802
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -660,18 +808,22 @@ export async function signMetaTxResolveDispute(args) {
660
808
  return {
661
809
  ...signatureParams,
662
810
  functionName,
663
- functionSignature: bosonDisputeHandlerIface.encodeFunctionData(
664
- // remove params in brackets from string
665
- functionName.replace(/\(([^)]*)\)[^(]*$/, ""), [args.exchangeId, args.buyerPercent, counterpartySig])
811
+ functionSignature
666
812
  };
667
813
  }
814
+ // Implementation
668
815
  export async function signMetaTxExtendDisputeTimeout(args) {
669
- return signMetaTx({
816
+ const signMetaTxArgs = {
670
817
  ...args,
671
818
  functionName: "extendDisputeTimeout(uint256,uint256)",
672
819
  functionSignature: bosonDisputeHandlerIface.encodeFunctionData("extendDisputeTimeout", [args.exchangeId, args.newTimeout])
673
- });
820
+ };
821
+ if (args.returnTypedDataToSign) {
822
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
823
+ }
824
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
674
825
  }
826
+ // Implementation
675
827
  export async function signMetaTxWithdrawFunds(args) {
676
828
  const functionName = "withdrawFunds(uint256,address[],uint256[])";
677
829
  const fundType = [
@@ -701,6 +853,18 @@ export async function signMetaTxWithdrawFunds(args) {
701
853
  tokenAmounts: args.tokenAmounts.map((bn) => bn.toString())
702
854
  }
703
855
  };
856
+ const functionSignature = encodeWithdrawFunds(args.entityId, args.tokenList, args.tokenAmounts);
857
+ if (args.returnTypedDataToSign) {
858
+ const structuredData = await prepareDataSignatureParameters({
859
+ ...args,
860
+ verifyingContractAddress: args.metaTxHandlerAddress,
861
+ customSignatureType,
862
+ primaryType: "MetaTxFund",
863
+ message,
864
+ returnTypedDataToSign: true
865
+ });
866
+ return { ...structuredData, functionName, functionSignature };
867
+ }
704
868
  const signatureParams = await prepareDataSignatureParameters({
705
869
  ...args,
706
870
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -712,9 +876,10 @@ export async function signMetaTxWithdrawFunds(args) {
712
876
  return {
713
877
  ...signatureParams,
714
878
  functionName,
715
- functionSignature: encodeWithdrawFunds(args.entityId, args.tokenList, args.tokenAmounts)
879
+ functionSignature
716
880
  };
717
881
  }
882
+ // Implementation
718
883
  export async function signMetaTxDepositFunds(args) {
719
884
  if (!isAddress(args.fundsTokenAddress)) {
720
885
  throw new Error(`Invalid fundsTokenAddress: ${args.fundsTokenAddress}`);
@@ -722,11 +887,15 @@ export async function signMetaTxDepositFunds(args) {
722
887
  if (args.fundsTokenAddress === AddressZero) {
723
888
  throw new Error(`Meta transaction can't be used to deposit native currency`);
724
889
  }
725
- return signMetaTx({
890
+ const signMetaTxArgs = {
726
891
  ...args,
727
892
  functionName: "depositFunds(uint256,address,uint256)",
728
893
  functionSignature: encodeDepositFunds(args.entityId, args.fundsTokenAddress, args.fundsAmount)
729
- });
894
+ };
895
+ if (args.returnTypedDataToSign) {
896
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
897
+ }
898
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
730
899
  }
731
900
  function makeExchangeMetaTxSigner(functionName, handlerIface = bosonExchangeHandlerIface) {
732
901
  return async function signExchangeMetaTx(args) {
@@ -752,6 +921,20 @@ function makeExchangeMetaTxSigner(functionName, handlerIface = bosonExchangeHand
752
921
  exchangeId: args.exchangeId.toString()
753
922
  }
754
923
  };
924
+ const functionSignature = handlerIface.encodeFunctionData(
925
+ // remove params in brackets from string
926
+ functionName.replace(/\(([^)]*)\)[^(]*$/, ""), [args.exchangeId]);
927
+ if (args.returnTypedDataToSign) {
928
+ const structuredData = await prepareDataSignatureParameters({
929
+ ...args,
930
+ verifyingContractAddress: args.metaTxHandlerAddress,
931
+ customSignatureType,
932
+ primaryType: "MetaTxExchange",
933
+ message,
934
+ returnTypedDataToSign: true
935
+ });
936
+ return { ...structuredData, functionName, functionSignature };
937
+ }
755
938
  const signatureParams = await prepareDataSignatureParameters({
756
939
  ...args,
757
940
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -763,9 +946,7 @@ function makeExchangeMetaTxSigner(functionName, handlerIface = bosonExchangeHand
763
946
  return {
764
947
  ...signatureParams,
765
948
  functionName,
766
- functionSignature: handlerIface.encodeFunctionData(
767
- // remove params in brackets from string
768
- functionName.replace(/\(([^)]*)\)[^(]*$/, ""), [args.exchangeId])
949
+ functionSignature
769
950
  };
770
951
  };
771
952
  }