@bosonprotocol/core-sdk 1.24.1-alpha.4 → 1.25.0-alpha.1

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 (136) hide show
  1. package/dist/cjs/disputes/handler.d.ts +1 -0
  2. package/dist/cjs/disputes/handler.d.ts.map +1 -1
  3. package/dist/cjs/disputes/mixin.d.ts +5 -0
  4. package/dist/cjs/disputes/mixin.d.ts.map +1 -1
  5. package/dist/cjs/forwarder/biconomy-interface.d.ts +72 -0
  6. package/dist/cjs/forwarder/biconomy-interface.d.ts.map +1 -0
  7. package/dist/cjs/forwarder/biconomy-interface.js +31 -0
  8. package/dist/cjs/forwarder/biconomy-interface.js.map +1 -0
  9. package/dist/cjs/forwarder/handler.d.ts +13 -1
  10. package/dist/cjs/forwarder/handler.d.ts.map +1 -1
  11. package/dist/cjs/forwarder/handler.js +58 -4
  12. package/dist/cjs/forwarder/handler.js.map +1 -1
  13. package/dist/cjs/forwarder/index.d.ts +2 -0
  14. package/dist/cjs/forwarder/index.d.ts.map +1 -1
  15. package/dist/cjs/forwarder/index.js +3 -1
  16. package/dist/cjs/forwarder/index.js.map +1 -1
  17. package/dist/cjs/forwarder/mock-interface.d.ts +41 -0
  18. package/dist/cjs/forwarder/mock-interface.d.ts.map +1 -0
  19. package/dist/cjs/forwarder/mock-interface.js +16 -0
  20. package/dist/cjs/forwarder/mock-interface.js.map +1 -0
  21. package/dist/cjs/index.d.ts +2 -0
  22. package/dist/cjs/index.d.ts.map +1 -1
  23. package/dist/cjs/index.js +3 -1
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/meta-tx/biconomy.d.ts +1 -0
  26. package/dist/cjs/meta-tx/biconomy.d.ts.map +1 -1
  27. package/dist/cjs/meta-tx/biconomy.js +1 -1
  28. package/dist/cjs/meta-tx/biconomy.js.map +1 -1
  29. package/dist/cjs/meta-tx/handler.d.ts +41 -15
  30. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  31. package/dist/cjs/meta-tx/handler.js +137 -3
  32. package/dist/cjs/meta-tx/handler.js.map +1 -1
  33. package/dist/cjs/meta-tx/mixin.d.ts +17 -7
  34. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
  35. package/dist/cjs/meta-tx/mixin.js +49 -3
  36. package/dist/cjs/meta-tx/mixin.js.map +1 -1
  37. package/dist/cjs/native-meta-tx/handler.d.ts +1 -1
  38. package/dist/cjs/native-meta-tx/handler.d.ts.map +1 -1
  39. package/dist/cjs/native-meta-tx/mixin.d.ts +1 -1
  40. package/dist/cjs/native-meta-tx/mixin.d.ts.map +1 -1
  41. package/dist/cjs/native-meta-tx/mixin.js.map +1 -1
  42. package/dist/cjs/utils/signature.d.ts +2 -0
  43. package/dist/cjs/utils/signature.d.ts.map +1 -1
  44. package/dist/cjs/utils/signature.js +8 -7
  45. package/dist/cjs/utils/signature.js.map +1 -1
  46. package/dist/cjs/voucher/handler.d.ts +6 -0
  47. package/dist/cjs/voucher/handler.d.ts.map +1 -1
  48. package/dist/cjs/voucher/handler.js +12 -1
  49. package/dist/cjs/voucher/handler.js.map +1 -1
  50. package/dist/cjs/voucher/interface.d.ts +3 -0
  51. package/dist/cjs/voucher/interface.d.ts.map +1 -1
  52. package/dist/cjs/voucher/interface.js +19 -1
  53. package/dist/cjs/voucher/interface.js.map +1 -1
  54. package/dist/cjs/voucher/mixin.d.ts +4 -0
  55. package/dist/cjs/voucher/mixin.d.ts.map +1 -1
  56. package/dist/cjs/voucher/mixin.js +13 -0
  57. package/dist/cjs/voucher/mixin.js.map +1 -1
  58. package/dist/esm/disputes/handler.d.ts +1 -0
  59. package/dist/esm/disputes/handler.d.ts.map +1 -1
  60. package/dist/esm/disputes/mixin.d.ts +5 -0
  61. package/dist/esm/disputes/mixin.d.ts.map +1 -1
  62. package/dist/esm/forwarder/biconomy-interface.d.ts +72 -0
  63. package/dist/esm/forwarder/biconomy-interface.d.ts.map +1 -0
  64. package/dist/esm/forwarder/biconomy-interface.js +24 -0
  65. package/dist/esm/forwarder/biconomy-interface.js.map +1 -0
  66. package/dist/esm/forwarder/handler.d.ts +13 -1
  67. package/dist/esm/forwarder/handler.d.ts.map +1 -1
  68. package/dist/esm/forwarder/handler.js +31 -3
  69. package/dist/esm/forwarder/handler.js.map +1 -1
  70. package/dist/esm/forwarder/index.d.ts +2 -0
  71. package/dist/esm/forwarder/index.d.ts.map +1 -1
  72. package/dist/esm/forwarder/index.js +2 -0
  73. package/dist/esm/forwarder/index.js.map +1 -1
  74. package/dist/esm/forwarder/mock-interface.d.ts +41 -0
  75. package/dist/esm/forwarder/mock-interface.d.ts.map +1 -0
  76. package/dist/esm/forwarder/{interface.js → mock-interface.js} +3 -2
  77. package/dist/esm/forwarder/mock-interface.js.map +1 -0
  78. package/dist/esm/index.d.ts +2 -0
  79. package/dist/esm/index.d.ts.map +1 -1
  80. package/dist/esm/index.js +2 -0
  81. package/dist/esm/index.js.map +1 -1
  82. package/dist/esm/meta-tx/biconomy.d.ts +1 -0
  83. package/dist/esm/meta-tx/biconomy.d.ts.map +1 -1
  84. package/dist/esm/meta-tx/biconomy.js +1 -1
  85. package/dist/esm/meta-tx/biconomy.js.map +1 -1
  86. package/dist/esm/meta-tx/handler.d.ts +41 -15
  87. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  88. package/dist/esm/meta-tx/handler.js +155 -4
  89. package/dist/esm/meta-tx/handler.js.map +1 -1
  90. package/dist/esm/meta-tx/mixin.d.ts +17 -7
  91. package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
  92. package/dist/esm/meta-tx/mixin.js +52 -2
  93. package/dist/esm/meta-tx/mixin.js.map +1 -1
  94. package/dist/esm/native-meta-tx/handler.d.ts +1 -1
  95. package/dist/esm/native-meta-tx/handler.d.ts.map +1 -1
  96. package/dist/esm/native-meta-tx/mixin.d.ts +1 -1
  97. package/dist/esm/native-meta-tx/mixin.d.ts.map +1 -1
  98. package/dist/esm/native-meta-tx/mixin.js.map +1 -1
  99. package/dist/esm/utils/signature.d.ts +2 -0
  100. package/dist/esm/utils/signature.d.ts.map +1 -1
  101. package/dist/esm/utils/signature.js +8 -7
  102. package/dist/esm/utils/signature.js.map +1 -1
  103. package/dist/esm/voucher/handler.d.ts +6 -0
  104. package/dist/esm/voucher/handler.d.ts.map +1 -1
  105. package/dist/esm/voucher/handler.js +9 -1
  106. package/dist/esm/voucher/handler.js.map +1 -1
  107. package/dist/esm/voucher/interface.d.ts +3 -0
  108. package/dist/esm/voucher/interface.d.ts.map +1 -1
  109. package/dist/esm/voucher/interface.js +15 -0
  110. package/dist/esm/voucher/interface.js.map +1 -1
  111. package/dist/esm/voucher/mixin.d.ts +4 -0
  112. package/dist/esm/voucher/mixin.d.ts.map +1 -1
  113. package/dist/esm/voucher/mixin.js +11 -0
  114. package/dist/esm/voucher/mixin.js.map +1 -1
  115. package/package.json +3 -3
  116. package/src/forwarder/biconomy-interface.ts +48 -0
  117. package/src/forwarder/handler.ts +47 -4
  118. package/src/forwarder/index.ts +2 -0
  119. package/src/forwarder/{interface.ts → mock-interface.ts} +9 -1
  120. package/src/index.ts +2 -0
  121. package/src/meta-tx/biconomy.ts +5 -1
  122. package/src/meta-tx/handler.ts +237 -13
  123. package/src/meta-tx/mixin.ts +101 -4
  124. package/src/native-meta-tx/handler.ts +1 -1
  125. package/src/native-meta-tx/mixin.ts +3 -1
  126. package/src/utils/signature.ts +8 -7
  127. package/src/voucher/handler.ts +16 -0
  128. package/src/voucher/interface.ts +18 -0
  129. package/src/voucher/mixin.ts +21 -0
  130. package/dist/cjs/forwarder/interface.d.ts +0 -6
  131. package/dist/cjs/forwarder/interface.d.ts.map +0 -1
  132. package/dist/cjs/forwarder/interface.js +0 -15
  133. package/dist/cjs/forwarder/interface.js.map +0 -1
  134. package/dist/esm/forwarder/interface.d.ts +0 -6
  135. package/dist/esm/forwarder/interface.d.ts.map +0 -1
  136. package/dist/esm/forwarder/interface.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { decodeGetAvailablePreMints, decodeGetRangeByOfferId, encodeBurnPremintedVouchers, encodeGetAvailablePreMints, encodeGetRangeByOfferId, encodePreMint, encodeTransferFrom } from "./interface";
1
+ import { decodeGetAvailablePreMints, decodeGetRangeByOfferId, decodeIsApprovedForAll, encodeBurnPremintedVouchers, encodeGetAvailablePreMints, encodeGetRangeByOfferId, encodeIsApprovedForAll, encodePreMint, encodeTransferFrom } from "./interface";
2
2
  export async function burnPremintedVouchers(args) {
3
3
  return args.web3Lib.sendTransaction({
4
4
  to: args.contractAddress,
@@ -38,4 +38,12 @@ export async function transferFrom(args) {
38
38
  data: encodeTransferFrom(args.from, args.to, args.tokenId)
39
39
  });
40
40
  }
41
+ export async function isApprovedForAll(args) {
42
+ const result = await args.web3Lib.call({
43
+ to: args.contractAddress,
44
+ data: encodeIsApprovedForAll(args.owner, args.operator)
45
+ });
46
+ const [isApproved] = decodeIsApprovedForAll(result);
47
+ return isApproved;
48
+ }
41
49
  //# sourceMappingURL=handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/voucher/handler.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAI3C;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;KAChD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAI1C;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;KAC/C,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAIvC;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAK7B;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAMlC;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/voucher/handler.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAI3C;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;KAChD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAI1C;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;KAC/C,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAIvC;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAK7B;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAMlC;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAKtC;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;KACxD,CAAC,CAAC;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -4,8 +4,11 @@ export declare const bosonVoucherIface: Interface;
4
4
  export declare function encodeBurnPremintedVouchers(offerId: BigNumberish): string;
5
5
  export declare function encodeGetAvailablePreMints(offerId: BigNumberish): string;
6
6
  export declare function decodeGetAvailablePreMints(result: string): import("@ethersproject/abi").Result;
7
+ export declare function encodeIsApprovedForAll(owner: string, operator: string): string;
8
+ export declare function decodeIsApprovedForAll(result: string): import("@ethersproject/abi").Result;
7
9
  export declare function encodeGetRangeByOfferId(offerId: BigNumberish): string;
8
10
  export declare function decodeGetRangeByOfferId(result: string): import("@ethersproject/abi").Result;
9
11
  export declare function encodePreMint(offerId: BigNumberish, amount: BigNumberish): string;
12
+ export declare function encodeSetApprovalForAll(operator: string, approved: boolean): string;
10
13
  export declare function encodeTransferFrom(from: BigNumberish, to: BigNumberish, tokenId: BigNumberish): string;
11
14
  //# sourceMappingURL=interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/voucher/interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,iBAAiB,WAAuC,CAAC;AAEtE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,YAAY,UAIhE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,YAAY,UAI/D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,uCAExD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,UAE5D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,uCAErD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,UAExE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,YAAY,UAOtB"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/voucher/interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,iBAAiB,WAAuC,CAAC;AAEtE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,YAAY,UAIhE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,YAAY,UAI/D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,uCAExD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAKrE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,uCAEpD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,UAE5D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,uCAErD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,UAExE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,UAK1E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,YAAY,UAOtB"}
@@ -14,6 +14,15 @@ export function encodeGetAvailablePreMints(offerId) {
14
14
  export function decodeGetAvailablePreMints(result) {
15
15
  return bosonVoucherIface.decodeFunctionResult("getAvailablePreMints", result);
16
16
  }
17
+ export function encodeIsApprovedForAll(owner, operator) {
18
+ return bosonVoucherIface.encodeFunctionData("isApprovedForAll", [
19
+ owner,
20
+ operator
21
+ ]);
22
+ }
23
+ export function decodeIsApprovedForAll(result) {
24
+ return bosonVoucherIface.decodeFunctionResult("isApprovedForAll", result);
25
+ }
17
26
  export function encodeGetRangeByOfferId(offerId) {
18
27
  return bosonVoucherIface.encodeFunctionData("getRangeByOfferId", [offerId]);
19
28
  }
@@ -23,6 +32,12 @@ export function decodeGetRangeByOfferId(result) {
23
32
  export function encodePreMint(offerId, amount) {
24
33
  return bosonVoucherIface.encodeFunctionData("preMint", [offerId, amount]);
25
34
  }
35
+ export function encodeSetApprovalForAll(operator, approved) {
36
+ return bosonVoucherIface.encodeFunctionData("setApprovalForAll", [
37
+ operator,
38
+ approved
39
+ ]);
40
+ }
26
41
  export function encodeTransferFrom(from, to, tokenId) {
27
42
  return bosonVoucherIface.encodeFunctionData("transferFrom", [
28
43
  from,
@@ -1 +1 @@
1
- {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/voucher/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEtE,MAAM,UAAU,2BAA2B,CAAC,OAAqB;IAC/D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,uBAAuB,EAAE;QACnE,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAqB;IAC9D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE;QAClE,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAqB;IAC3D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAqB,EAAE,MAAoB;IACvE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAkB,EAClB,EAAgB,EAChB,OAAqB;IAErB,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,EAAE;QAC1D,IAAI;QACJ,EAAE;QACF,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/voucher/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEtE,MAAM,UAAU,2BAA2B,CAAC,OAAqB;IAC/D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,uBAAuB,EAAE;QACnE,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAqB;IAC9D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE;QAClE,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,QAAgB;IACpE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;QAC9D,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAqB;IAC3D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAqB,EAAE,MAAoB;IACvE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,QAAiB;IACzE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE;QAC/D,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAkB,EAClB,EAAgB,EAChB,OAAqB;IAErB,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,EAAE;QAC1D,IAAI;QACJ,EAAE;QACF,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -49,5 +49,9 @@ export declare class VoucherMixin extends BaseCoreSDK {
49
49
  owner: BigNumberish;
50
50
  contractAddress: string;
51
51
  }>): Promise<TransactionResponse>;
52
+ isApprovedForAll(operator: string, overrides?: Partial<{
53
+ owner: string;
54
+ contractAddress: string;
55
+ }>): Promise<boolean>;
52
56
  }
53
57
  //# sourceMappingURL=mixin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../../../src/voucher/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,qBAAa,YAAa,SAAQ,WAAW;IAC3C;;;;;OAKG;IACU,qBAAqB,CAChC,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;IAW/B;;;;;OAKG;IACU,oBAAoB,CAC/B,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,MAAM,CAAC;IAWlB;;;;;OAKG;IACU,iBAAiB,CAC5B,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,KAAK,CAAC;IAWjB;;;;;OAKG;IACU,OAAO,CAClB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;IAY/B;;;;;OAKG;IACU,YAAY,CACvB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,KAAK,EAAE,YAAY,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;CAahC"}
1
+ {"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../../../src/voucher/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,qBAAa,YAAa,SAAQ,WAAW;IAC3C;;;;;OAKG;IACU,qBAAqB,CAChC,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;IAW/B;;;;;OAKG;IACU,oBAAoB,CAC/B,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,MAAM,CAAC;IAWlB;;;;;OAKG;IACU,iBAAiB,CAC5B,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,KAAK,CAAC;IAWjB;;;;;OAKG;IACU,OAAO,CAClB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;IAY/B;;;;;OAKG;IACU,YAAY,CACvB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,KAAK,EAAE,YAAY,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;IAclB,gBAAgB,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM;CAcV"}
@@ -1,4 +1,5 @@
1
1
  import { handler } from ".";
2
+ import { accounts } from "..";
2
3
  import { getOfferById } from "../offers/subgraph";
3
4
  import { BaseCoreSDK } from "./../mixins/base-core-sdk";
4
5
  export class VoucherMixin extends BaseCoreSDK {
@@ -80,5 +81,15 @@ export class VoucherMixin extends BaseCoreSDK {
80
81
  web3Lib: this._web3Lib
81
82
  });
82
83
  }
84
+ async isApprovedForAll(operator, overrides = {}) {
85
+ const sellerAddress = await this._web3Lib.getSignerAddress();
86
+ const seller = await accounts.subgraph.getSellerByAddress(this._subgraphUrl, sellerAddress);
87
+ return handler.isApprovedForAll({
88
+ owner: overrides.owner || sellerAddress,
89
+ operator,
90
+ contractAddress: overrides.contractAddress || seller.voucherCloneAddress,
91
+ web3Lib: this._web3Lib
92
+ });
93
+ }
83
94
  }
84
95
  //# sourceMappingURL=mixin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../../src/voucher/mixin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C;;;;;OAKG;IACI,KAAK,CAAC,qBAAqB,CAChC,OAAqB,EACrB,YAEK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,qBAAqB,CAAC;YACnC,OAAO;YACP,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,oBAAoB,CAC/B,OAAqB,EACrB,YAEK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,oBAAoB,CAAC;YAClC,OAAO;YACP,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,iBAAiB,CAC5B,OAAqB,EACrB,YAEK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,iBAAiB,CAAC;YAC/B,OAAO;YACP,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAClB,OAAqB,EACrB,MAAoB,EACpB,YAEK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,OAAO;YACP,MAAM;YACN,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CACvB,OAAqB,EACrB,EAAgB,EAChB,OAAqB,EACrB,YAGK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEzE,OAAO,OAAO,CAAC,YAAY,CAAC;YAC1B,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YACjE,EAAE;YACF,OAAO;YACP,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../../src/voucher/mixin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bosonprotocol/core-sdk",
3
- "version": "1.24.1-alpha.4",
3
+ "version": "1.25.0-alpha.1",
4
4
  "description": "Facilitates interaction with the contracts and subgraphs of the Boson Protocol",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@bosonprotocol/common": "^1.20.3-alpha.4",
36
+ "@bosonprotocol/common": "^1.21.0-alpha.1",
37
37
  "@ethersproject/abi": "^5.5.0",
38
38
  "@ethersproject/address": "^5.5.0",
39
39
  "@ethersproject/bignumber": "^5.5.0",
@@ -54,5 +54,5 @@
54
54
  "ts-jest": "^27.1.3",
55
55
  "typescript": "^4.5.5"
56
56
  },
57
- "gitHead": "55fb941120763bd9957be697720f75afabd573f4"
57
+ "gitHead": "828eb7c080300ca3f2072789fc719b4600351067"
58
58
  }
@@ -0,0 +1,48 @@
1
+ import { abis } from "@bosonprotocol/common";
2
+ import { Interface } from "@ethersproject/abi";
3
+ import { BigNumberish } from "@ethersproject/bignumber";
4
+
5
+ export const abi = abis.BiconomyForwarderABI;
6
+ const forwarderInterface = new Interface(abi);
7
+
8
+ export type ERC20ForwardRequest = {
9
+ from: BigNumberish;
10
+ to: BigNumberish;
11
+ token: BigNumberish;
12
+ txGas: BigNumberish;
13
+ tokenGasPrice: string;
14
+ batchId: BigNumberish;
15
+ batchNonce: BigNumberish;
16
+ deadline: number;
17
+ data: string;
18
+ };
19
+
20
+ export function encodeGetNonce(
21
+ signerAddress: BigNumberish,
22
+ batchId: BigNumberish
23
+ ) {
24
+ return forwarderInterface.encodeFunctionData("getNonce", [
25
+ signerAddress,
26
+ batchId
27
+ ]);
28
+ }
29
+
30
+ export function decodeGetNonce(result: string) {
31
+ return forwarderInterface.decodeFunctionResult("getNonce", result);
32
+ }
33
+
34
+ export function encodeVerifyEIP712(
35
+ request: ERC20ForwardRequest,
36
+ domainSeparator: string,
37
+ signature: string
38
+ ) {
39
+ return forwarderInterface.encodeFunctionData("verifyEIP712", [
40
+ request,
41
+ domainSeparator,
42
+ signature
43
+ ]);
44
+ }
45
+
46
+ export function decodeVerifyEIP712(result: string) {
47
+ return forwarderInterface.decodeFunctionResult("verifyEIP712", result);
48
+ }
@@ -1,15 +1,58 @@
1
- import { Web3LibAdapter } from "@bosonprotocol/common";
2
- import { decodeGetNonce, encodeGetNonce } from "./interface";
1
+ import { Web3LibAdapter, abis } from "@bosonprotocol/common";
2
+ import { BigNumberish } from "@ethersproject/bignumber";
3
+ import * as mockInterface from "./mock-interface";
4
+ import * as biconomyInterface from "./biconomy-interface";
3
5
 
4
6
  export async function getNonce(args: {
5
7
  contractAddress: string;
6
8
  user: string;
7
9
  web3Lib: Web3LibAdapter;
10
+ batchId: BigNumberish;
11
+ forwarderAbi: typeof abis.MockForwarderABI | typeof abis.BiconomyForwarderABI;
8
12
  }): Promise<string> {
13
+ const isMock = args.forwarderAbi === mockInterface.abi;
14
+ const data = isMock
15
+ ? mockInterface.encodeGetNonce(args.user)
16
+ : biconomyInterface.encodeGetNonce(args.user, args.batchId);
17
+
9
18
  const result = await args.web3Lib.call({
10
19
  to: args.contractAddress,
11
- data: encodeGetNonce(args.user)
20
+ data
12
21
  });
13
- const [nonce] = decodeGetNonce(result);
22
+ const nonceResult = isMock
23
+ ? mockInterface.decodeGetNonce(result)
24
+ : biconomyInterface.decodeGetNonce(result);
25
+ const [nonce] = nonceResult;
14
26
  return String(nonce);
15
27
  }
28
+
29
+ export async function verifyEIP712(args: {
30
+ contractAddress: string;
31
+ request: biconomyInterface.ERC20ForwardRequest;
32
+ domainSeparator: string;
33
+ web3Lib: Web3LibAdapter;
34
+ signature: string;
35
+ forwarderAbi: typeof abis.MockForwarderABI | typeof abis.BiconomyForwarderABI;
36
+ }): Promise<boolean> {
37
+ const isMock = args.forwarderAbi === mockInterface.abi;
38
+ if (isMock) {
39
+ // TODO: call mockForwarder.verify(request, signature)
40
+ return true;
41
+ }
42
+ const data = biconomyInterface.encodeVerifyEIP712(
43
+ args.request,
44
+ args.domainSeparator,
45
+ args.signature
46
+ );
47
+ try {
48
+ const result = await args.web3Lib.call({
49
+ to: args.contractAddress,
50
+ data
51
+ });
52
+ const ret = biconomyInterface.decodeVerifyEIP712(result);
53
+ console.log({ ret });
54
+ return true;
55
+ } catch (e) {
56
+ return false;
57
+ }
58
+ }
@@ -1 +1,3 @@
1
1
  export * as handler from "./handler";
2
+ export * as biconomy from "./biconomy-interface";
3
+ export * as mock from "./mock-interface";
@@ -2,7 +2,15 @@ import { abis } from "@bosonprotocol/common";
2
2
  import { Interface } from "@ethersproject/abi";
3
3
  import { BigNumberish } from "@ethersproject/bignumber";
4
4
 
5
- export const forwarderInterface = new Interface(abis.ForwarderABI);
5
+ export const abi = abis.MockForwarderABI;
6
+ const forwarderInterface = new Interface(abi);
7
+
8
+ export type MockForwardRequest = {
9
+ from: string;
10
+ to: string;
11
+ nonce: BigNumberish;
12
+ data: string;
13
+ };
6
14
 
7
15
  export function encodeGetNonce(signerAddress: BigNumberish) {
8
16
  return forwarderInterface.encodeFunctionData("getNonce", [signerAddress]);
package/src/index.ts CHANGED
@@ -11,6 +11,8 @@ export * as metaTx from "./meta-tx";
11
11
  export * as nativeMetaTx from "./native-meta-tx";
12
12
  export * as subgraph from "./subgraph";
13
13
  export * as groups from "./groups";
14
+ export * as forwarder from "./forwarder";
15
+ export * as voucher from "./voucher";
14
16
 
15
17
  export {
16
18
  defaultConfigs,
@@ -13,6 +13,7 @@ export type RelayTransactionArgs = {
13
13
  to: string;
14
14
  params: unknown[];
15
15
  from: string;
16
+ signatureType?: string;
16
17
  };
17
18
 
18
19
  export type RelayOverrides = {
@@ -83,7 +84,10 @@ export class Biconomy {
83
84
 
84
85
  const txResponse = (await response.json()) as RelayTransactionResponse;
85
86
  if (!txResponse.txHash) {
86
- throw new ApiError(txResponse.flag, txResponse.log);
87
+ throw new ApiError(
88
+ txResponse.flag || (txResponse as any).code,
89
+ txResponse.log || (txResponse as any).message
90
+ );
87
91
  }
88
92
  return txResponse;
89
93
  }
@@ -9,7 +9,9 @@ import {
9
9
  CreateGroupArgs,
10
10
  ConditionStruct,
11
11
  UpdateSellerArgs,
12
- OptInToSellerUpdateArgs
12
+ OptInToSellerUpdateArgs,
13
+ defaultConfigs,
14
+ abis
13
15
  } from "@bosonprotocol/common";
14
16
  import { storeMetadataOnTheGraph } from "../offers/storage";
15
17
  import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
@@ -35,7 +37,11 @@ import { encodeDepositFunds, encodeWithdrawFunds } from "../funds/interface";
35
37
  import { bosonDisputeHandlerIface } from "../disputes/interface";
36
38
  import { encodeCreateGroup } from "../groups/interface";
37
39
  import { encodeCreateOfferWithCondition } from "../orchestration/interface";
38
- import { encodePreMint } from "../voucher/interface";
40
+ import { encodePreMint, encodeSetApprovalForAll } from "../voucher/interface";
41
+ import { ethers } from "ethers";
42
+ import { ERC20ForwardRequest } from "../forwarder/biconomy-interface";
43
+ import { verifyEIP712 } from "../forwarder/handler";
44
+ import { MockForwardRequest } from "../forwarder/mock-interface";
39
45
 
40
46
  export type BaseMetaTxArgs = {
41
47
  web3Lib: Web3LibAdapter;
@@ -60,6 +66,13 @@ export type SignedMetaTx = {
60
66
  v: number;
61
67
  };
62
68
 
69
+ export type SignedVoucherMetaTx = Omit<SignedMetaTx, "functionName"> & {
70
+ to: string;
71
+ signature: string;
72
+ request: ERC20ForwardRequest | MockForwardRequest;
73
+ domainSeparator?: string;
74
+ };
75
+
63
76
  export async function signMetaTx(
64
77
  args: BaseMetaTxArgs & {
65
78
  functionName: string;
@@ -107,13 +120,7 @@ export async function signVoucherMetaTx(
107
120
  args: BaseVoucherMetaTxArgs & {
108
121
  functionSignature: string;
109
122
  }
110
- ): Promise<{
111
- to: string;
112
- functionSignature: string;
113
- r: string;
114
- s: string;
115
- v: number;
116
- }> {
123
+ ): Promise<SignedVoucherMetaTx> {
117
124
  const forwardType = [
118
125
  { name: "from", type: "address" },
119
126
  { name: "to", type: "address" },
@@ -158,10 +165,178 @@ export async function signVoucherMetaTx(
158
165
  return {
159
166
  to: message.to,
160
167
  functionSignature: args.functionSignature,
168
+ request: message,
161
169
  ...signature
162
170
  };
163
171
  }
164
172
 
173
+ export async function signBiconomyVoucherMetaTx(
174
+ args: BaseVoucherMetaTxArgs & {
175
+ functionSignature: string;
176
+ batchId: BigNumberish;
177
+ forwarderAbi:
178
+ | typeof abis.MockForwarderABI
179
+ | typeof abis.BiconomyForwarderABI;
180
+ txGas: BigNumberish;
181
+ }
182
+ ): Promise<SignedVoucherMetaTx> {
183
+ const customSignatureType = {
184
+ EIP712Domain: [
185
+ { name: "name", type: "string" },
186
+ { name: "version", type: "string" },
187
+ // { name: "chainId", type: "uint256" },
188
+ // { name: "verifyingContract", type: "address" }
189
+ { name: "verifyingContract", type: "address" },
190
+ { name: "salt", type: "bytes32" }
191
+ ],
192
+ ERC20ForwardRequest: [
193
+ { name: "from", type: "address" },
194
+ { name: "to", type: "address" },
195
+ { name: "token", type: "address" },
196
+ { name: "txGas", type: "uint256" },
197
+ { name: "tokenGasPrice", type: "uint256" },
198
+ { name: "batchId", type: "uint256" },
199
+ { name: "batchNonce", type: "uint256" },
200
+ { name: "deadline", type: "uint256" },
201
+ { name: "data", type: "bytes" }
202
+ ]
203
+ };
204
+
205
+ const signerAddress = await args.web3Lib.getSignerAddress();
206
+ const chainId = await args.web3Lib.getChainId();
207
+
208
+ const message = {
209
+ from: signerAddress,
210
+ to: args.bosonVoucherAddress,
211
+ token: "0x0000000000000000000000000000000000000000",
212
+ txGas: args.txGas,
213
+ tokenGasPrice: "0",
214
+ batchId: args.batchId,
215
+ batchNonce: args.nonce,
216
+ deadline: Math.floor(Date.now() / 1000 + 3600),
217
+ data: args.functionSignature
218
+ };
219
+
220
+ const biconomyForwarderDomainData = {
221
+ name: "Biconomy Forwarder",
222
+ version: "1",
223
+ verifyingContract: args.forwarderAddress,
224
+ salt: ethers.utils.hexZeroPad(
225
+ ethers.BigNumber.from(chainId).toHexString(),
226
+ 32
227
+ )
228
+ };
229
+
230
+ const signatureParams = await prepareDataSignatureParameters({
231
+ ...args,
232
+ chainId,
233
+ verifyingContractAddress: args.forwarderAddress,
234
+ customSignatureType,
235
+ primaryType: "ERC20ForwardRequest",
236
+ message,
237
+ customDomainData: {
238
+ ...biconomyForwarderDomainData
239
+ // chainId
240
+ // salt: undefined
241
+ }
242
+ });
243
+ const signature = signatureParams.signature;
244
+ const getDomainSeparator = async () => {
245
+ const domainData = biconomyForwarderDomainData;
246
+ const domainSeparator = ethers.utils.keccak256(
247
+ ethers.utils.defaultAbiCoder.encode(
248
+ ["bytes32", "bytes32", "bytes32", "address", "bytes32"],
249
+ [
250
+ ethers.utils.id(
251
+ "EIP712Domain(string name,string version,address verifyingContract,bytes32 salt)"
252
+ ),
253
+ ethers.utils.id(domainData.name),
254
+ ethers.utils.id(domainData.version),
255
+ domainData.verifyingContract,
256
+ domainData.salt
257
+ ]
258
+ )
259
+ );
260
+ return domainSeparator;
261
+ };
262
+ const domainSeparator = await getDomainSeparator();
263
+ // verify signature
264
+ const signatureVerified = await verifyEIP712({
265
+ request: message,
266
+ contractAddress: args.forwarderAddress,
267
+ web3Lib: args.web3Lib,
268
+ domainSeparator,
269
+ forwarderAbi: args.forwarderAbi,
270
+ signature
271
+ });
272
+ if (!signatureVerified) {
273
+ throw `Signature is not verified`;
274
+ }
275
+
276
+ return {
277
+ to: message.to,
278
+ domainSeparator,
279
+ request: message,
280
+ ...signatureParams,
281
+ signature,
282
+ functionSignature: args.functionSignature
283
+ };
284
+ }
285
+
286
+ export async function relayBiconomyMetaTransaction(args: {
287
+ web3LibAdapter: Web3LibAdapter;
288
+ chainId: number;
289
+ contractAddress: string;
290
+ metaTx: {
291
+ config: Omit<MetaTxConfig, "apiIds" | "forwarderAbi"> & { apiId: string };
292
+ params: {
293
+ userAddress: string;
294
+ request: ERC20ForwardRequest;
295
+ domainSeparator: string;
296
+ signature: string;
297
+ };
298
+ };
299
+ }): Promise<TransactionResponse> {
300
+ const { chainId, contractAddress, metaTx } = args;
301
+
302
+ const biconomy = new Biconomy(
303
+ metaTx.config.relayerUrl,
304
+ metaTx.config.apiKey,
305
+ metaTx.config.apiId
306
+ );
307
+
308
+ const relayTxResponse = await biconomy.relayTransaction({
309
+ to: contractAddress,
310
+ params: [
311
+ metaTx.params.request,
312
+ metaTx.params.domainSeparator,
313
+ metaTx.params.signature
314
+ ],
315
+ from: metaTx.params.userAddress,
316
+ signatureType: "EIP712_SIGN"
317
+ });
318
+
319
+ return {
320
+ wait: async () => {
321
+ const waitResponse = await biconomy.wait({
322
+ networkId: chainId,
323
+ transactionHash: relayTxResponse.txHash
324
+ });
325
+
326
+ const txHash = waitResponse.data.newHash;
327
+ const txReceipt = await args.web3LibAdapter.getTransactionReceipt(txHash);
328
+ return {
329
+ to: txReceipt?.to || contractAddress,
330
+ from: txReceipt?.from || metaTx.params.userAddress,
331
+ transactionHash: txHash,
332
+ logs: txReceipt?.logs || [],
333
+ effectiveGasPrice: BigNumber.from(waitResponse.data.newGasPrice)
334
+ };
335
+ },
336
+ hash: relayTxResponse.txHash
337
+ };
338
+ }
339
+
165
340
  export async function signMetaTxCreateSeller(
166
341
  args: BaseMetaTxArgs & {
167
342
  createSellerArgs: CreateSellerArgs;
@@ -360,11 +535,60 @@ export async function signMetaTxPreMint(
360
535
  args: BaseVoucherMetaTxArgs & {
361
536
  offerId: BigNumberish;
362
537
  amount: BigNumberish;
538
+ batchId: BigNumberish;
539
+ forwarderAbi:
540
+ | typeof abis.MockForwarderABI
541
+ | typeof abis.BiconomyForwarderABI;
363
542
  }
364
- ) {
365
- return signVoucherMetaTx({
543
+ ): Promise<SignedVoucherMetaTx> {
544
+ const localConfig = defaultConfigs.find(
545
+ (config) => config.envName === "local"
546
+ );
547
+ const isLocal = localConfig.chainId === args.chainId;
548
+ const functionSignature = encodePreMint(args.offerId, args.amount);
549
+ if (isLocal) {
550
+ return signVoucherMetaTx({
551
+ ...args,
552
+ functionSignature
553
+ });
554
+ }
555
+ const txGas = 200000 + BigNumber.from(args.amount).mul(2500).toNumber(); // ~(180000 + 2250*N) estimation on 2023/02/03
556
+ return signBiconomyVoucherMetaTx({
557
+ ...args,
558
+ functionSignature,
559
+ txGas
560
+ });
561
+ }
562
+
563
+ export async function signMetaTxSetApprovalForAll(
564
+ args: BaseVoucherMetaTxArgs & {
565
+ operator: string;
566
+ approved: boolean;
567
+ batchId: BigNumberish;
568
+ forwarderAbi:
569
+ | typeof abis.MockForwarderABI
570
+ | typeof abis.BiconomyForwarderABI;
571
+ }
572
+ ): Promise<SignedVoucherMetaTx> {
573
+ const localConfig = defaultConfigs.find(
574
+ (config) => config.envName === "local"
575
+ );
576
+ const isLocal = localConfig.chainId === args.chainId;
577
+ const functionSignature = encodeSetApprovalForAll(
578
+ args.operator,
579
+ args.approved
580
+ );
581
+ if (isLocal) {
582
+ return signVoucherMetaTx({
583
+ ...args,
584
+ functionSignature
585
+ });
586
+ }
587
+ const txGas = 100000; // ~70000 estimation on 2023/02/03
588
+ return signBiconomyVoucherMetaTx({
366
589
  ...args,
367
- functionSignature: encodePreMint(args.offerId, args.amount)
590
+ functionSignature,
591
+ txGas
368
592
  });
369
593
  }
370
594
 
@@ -753,7 +977,7 @@ export async function relayMetaTransaction(args: {
753
977
  chainId: number;
754
978
  contractAddress: string;
755
979
  metaTx: {
756
- config: Omit<MetaTxConfig, "apiIds"> & { apiId: string };
980
+ config: Omit<MetaTxConfig, "apiIds" | "forwarderAbi"> & { apiId: string };
757
981
  params: {
758
982
  userAddress: string;
759
983
  functionName: string;