@bosonprotocol/core-sdk 1.47.0-alpha.3 → 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 +192 -1
  2. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  3. package/dist/cjs/meta-tx/handler.js +182 -29
  4. package/dist/cjs/meta-tx/handler.js.map +1 -1
  5. package/dist/cjs/meta-tx/mixin.d.ts +187 -30
  6. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
  7. package/dist/cjs/meta-tx/mixin.js +161 -163
  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 +192 -1
  18. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  19. package/dist/esm/meta-tx/handler.js +244 -46
  20. package/dist/esm/meta-tx/handler.js.map +1 -1
  21. package/dist/esm/meta-tx/mixin.d.ts +187 -30
  22. package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
  23. package/dist/esm/meta-tx/mixin.js +389 -163
  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 +839 -91
  35. package/src/meta-tx/mixin.ts +858 -62
  36. package/src/native-meta-tx/handler.ts +68 -18
  37. package/src/native-meta-tx/mixin.ts +30 -4
@@ -2,7 +2,7 @@ import { utils, envConfigs } from "@bosonprotocol/common";
2
2
  import { storeMetadataOnTheGraph } from "../offers/storage";
3
3
  import { BigNumber } from "@ethersproject/bignumber";
4
4
  import { encodeCreateSeller, encodeOptInToSellerUpdate, encodeUpdateSeller } from "../accounts/interface";
5
- import { bosonExchangeCommitHandlerIface, bosonExchangeHandlerIface, encodeCommitToBuyerOffer } from "../exchanges/interface";
5
+ import { bosonExchangeCommitHandlerIface, bosonExchangeHandlerIface, encodeCommitToBuyerOffer, encodeCreateOfferAndCommit } from "../exchanges/interface";
6
6
  import { bosonOfferHandlerIface, encodeCreateOffer, encodeCreateOfferBatch, encodeReserveRange } from "../offers/interface";
7
7
  import { prepareDataSignatureParameters, rebuildSignature } from "../utils/signature";
8
8
  import { Biconomy } from "./biconomy";
@@ -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,35 +688,69 @@ 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)
701
+ };
702
+ if (args.returnTypedDataToSign) {
703
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
704
+ }
705
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
706
+ }
707
+ // Implementation
708
+ export async function signMetaTxCreateOfferAndCommit(args) {
709
+ utils.validation.createOfferAndCommitArgsSchema.validateSync(args.createOfferAndCommitArgs, { abortEarly: false });
710
+ await storeMetadataOnTheGraph({
711
+ metadataUriOrHash: args.createOfferAndCommitArgs.metadataUri,
712
+ metadataStorage: args.metadataStorage,
713
+ theGraphStorage: args.theGraphStorage
714
+ });
715
+ await storeMetadataItems({
716
+ ...args,
717
+ createOffersArgs: [args.createOfferAndCommitArgs]
583
718
  });
719
+ const signMetaTxArgs = {
720
+ ...args,
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))",
722
+ functionSignature: encodeCreateOfferAndCommit(args.createOfferAndCommitArgs)
723
+ };
724
+ if (args.returnTypedDataToSign) {
725
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
726
+ }
727
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
584
728
  }
729
+ // Implementation
585
730
  export async function signMetaTxCancelVoucher(args) {
586
731
  return makeExchangeMetaTxSigner("cancelVoucher(uint256)")(args);
587
732
  }
733
+ // Implementation
588
734
  export async function signMetaTxRedeemVoucher(args) {
589
735
  return makeExchangeMetaTxSigner("redeemVoucher(uint256)")(args);
590
736
  }
737
+ // Implementation
591
738
  export async function signMetaTxCompleteExchange(args) {
592
739
  return makeExchangeMetaTxSigner("completeExchange(uint256)")(args);
593
740
  }
741
+ // Implementation
594
742
  export async function signMetaTxRetractDispute(args) {
595
743
  return makeExchangeMetaTxSigner("retractDispute(uint256)", bosonDisputeHandlerIface)(args);
596
744
  }
745
+ // Implementation
597
746
  export async function signMetaTxEscalateDispute(args) {
598
747
  return makeExchangeMetaTxSigner("escalateDispute(uint256)", bosonDisputeHandlerIface)(args);
599
748
  }
749
+ // Implementation
600
750
  export async function signMetaTxRaiseDispute(args) {
601
751
  return makeExchangeMetaTxSigner("raiseDispute(uint256)", bosonDisputeHandlerIface)(args);
602
752
  }
753
+ // Implementation
603
754
  export async function signMetaTxResolveDispute(args) {
604
755
  const functionName = "resolveDispute(uint256,uint256,bytes)";
605
756
  const counterpartySig = typeof args.counterpartySig === "string"
@@ -632,6 +783,20 @@ export async function signMetaTxResolveDispute(args) {
632
783
  signature: counterpartySig
633
784
  }
634
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
+ }
635
800
  const signatureParams = await prepareDataSignatureParameters({
636
801
  ...args,
637
802
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -643,18 +808,22 @@ export async function signMetaTxResolveDispute(args) {
643
808
  return {
644
809
  ...signatureParams,
645
810
  functionName,
646
- functionSignature: bosonDisputeHandlerIface.encodeFunctionData(
647
- // remove params in brackets from string
648
- functionName.replace(/\(([^)]*)\)[^(]*$/, ""), [args.exchangeId, args.buyerPercent, counterpartySig])
811
+ functionSignature
649
812
  };
650
813
  }
814
+ // Implementation
651
815
  export async function signMetaTxExtendDisputeTimeout(args) {
652
- return signMetaTx({
816
+ const signMetaTxArgs = {
653
817
  ...args,
654
818
  functionName: "extendDisputeTimeout(uint256,uint256)",
655
819
  functionSignature: bosonDisputeHandlerIface.encodeFunctionData("extendDisputeTimeout", [args.exchangeId, args.newTimeout])
656
- });
820
+ };
821
+ if (args.returnTypedDataToSign) {
822
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
823
+ }
824
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
657
825
  }
826
+ // Implementation
658
827
  export async function signMetaTxWithdrawFunds(args) {
659
828
  const functionName = "withdrawFunds(uint256,address[],uint256[])";
660
829
  const fundType = [
@@ -684,6 +853,18 @@ export async function signMetaTxWithdrawFunds(args) {
684
853
  tokenAmounts: args.tokenAmounts.map((bn) => bn.toString())
685
854
  }
686
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
+ }
687
868
  const signatureParams = await prepareDataSignatureParameters({
688
869
  ...args,
689
870
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -695,9 +876,10 @@ export async function signMetaTxWithdrawFunds(args) {
695
876
  return {
696
877
  ...signatureParams,
697
878
  functionName,
698
- functionSignature: encodeWithdrawFunds(args.entityId, args.tokenList, args.tokenAmounts)
879
+ functionSignature
699
880
  };
700
881
  }
882
+ // Implementation
701
883
  export async function signMetaTxDepositFunds(args) {
702
884
  if (!isAddress(args.fundsTokenAddress)) {
703
885
  throw new Error(`Invalid fundsTokenAddress: ${args.fundsTokenAddress}`);
@@ -705,11 +887,15 @@ export async function signMetaTxDepositFunds(args) {
705
887
  if (args.fundsTokenAddress === AddressZero) {
706
888
  throw new Error(`Meta transaction can't be used to deposit native currency`);
707
889
  }
708
- return signMetaTx({
890
+ const signMetaTxArgs = {
709
891
  ...args,
710
892
  functionName: "depositFunds(uint256,address,uint256)",
711
893
  functionSignature: encodeDepositFunds(args.entityId, args.fundsTokenAddress, args.fundsAmount)
712
- });
894
+ };
895
+ if (args.returnTypedDataToSign) {
896
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: true });
897
+ }
898
+ return signMetaTx({ ...signMetaTxArgs, returnTypedDataToSign: false });
713
899
  }
714
900
  function makeExchangeMetaTxSigner(functionName, handlerIface = bosonExchangeHandlerIface) {
715
901
  return async function signExchangeMetaTx(args) {
@@ -735,6 +921,20 @@ function makeExchangeMetaTxSigner(functionName, handlerIface = bosonExchangeHand
735
921
  exchangeId: args.exchangeId.toString()
736
922
  }
737
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
+ }
738
938
  const signatureParams = await prepareDataSignatureParameters({
739
939
  ...args,
740
940
  verifyingContractAddress: args.metaTxHandlerAddress,
@@ -746,9 +946,7 @@ function makeExchangeMetaTxSigner(functionName, handlerIface = bosonExchangeHand
746
946
  return {
747
947
  ...signatureParams,
748
948
  functionName,
749
- functionSignature: handlerIface.encodeFunctionData(
750
- // remove params in brackets from string
751
- functionName.replace(/\(([^)]*)\)[^(]*$/, ""), [args.exchangeId])
949
+ functionSignature
752
950
  };
753
951
  };
754
952
  }