@bosonprotocol/core-sdk 1.25.0-alpha.3 → 1.25.0-alpha.30

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 (226) hide show
  1. package/dist/cjs/accounts/interface.js.map +1 -1
  2. package/dist/cjs/accounts/mixin.d.ts +4 -4
  3. package/dist/cjs/accounts/mixin.d.ts.map +1 -1
  4. package/dist/cjs/accounts/mixin.js +8 -8
  5. package/dist/cjs/accounts/mixin.js.map +1 -1
  6. package/dist/cjs/accounts/subgraph.d.ts +1 -1
  7. package/dist/cjs/accounts/subgraph.d.ts.map +1 -1
  8. package/dist/cjs/accounts/subgraph.js +7 -7
  9. package/dist/cjs/accounts/subgraph.js.map +1 -1
  10. package/dist/cjs/accounts/types.d.ts +1 -1
  11. package/dist/cjs/accounts/types.d.ts.map +1 -1
  12. package/dist/cjs/core-sdk.d.ts +1 -0
  13. package/dist/cjs/core-sdk.d.ts.map +1 -1
  14. package/dist/cjs/core-sdk.js +3 -0
  15. package/dist/cjs/core-sdk.js.map +1 -1
  16. package/dist/cjs/erc1155/mixin.d.ts +1 -1
  17. package/dist/cjs/erc1155/mixin.d.ts.map +1 -1
  18. package/dist/cjs/erc1155/mixin.js +2 -2
  19. package/dist/cjs/erc1155/mixin.js.map +1 -1
  20. package/dist/cjs/erc20/mixin.d.ts +7 -7
  21. package/dist/cjs/erc20/mixin.d.ts.map +1 -1
  22. package/dist/cjs/erc20/mixin.js +14 -14
  23. package/dist/cjs/erc20/mixin.js.map +1 -1
  24. package/dist/cjs/erc721/mixin.d.ts +3 -3
  25. package/dist/cjs/erc721/mixin.d.ts.map +1 -1
  26. package/dist/cjs/erc721/mixin.js +6 -6
  27. package/dist/cjs/erc721/mixin.js.map +1 -1
  28. package/dist/cjs/exchanges/handler.js +12 -12
  29. package/dist/cjs/exchanges/handler.js.map +1 -1
  30. package/dist/cjs/exchanges/mixin.d.ts +3 -3
  31. package/dist/cjs/exchanges/mixin.js +3 -3
  32. package/dist/cjs/forwarder/handler.d.ts +1 -1
  33. package/dist/cjs/forwarder/handler.d.ts.map +1 -1
  34. package/dist/cjs/forwarder/handler.js +2 -4
  35. package/dist/cjs/forwarder/handler.js.map +1 -1
  36. package/dist/cjs/index.d.ts +2 -1
  37. package/dist/cjs/index.d.ts.map +1 -1
  38. package/dist/cjs/index.js +2 -1
  39. package/dist/cjs/index.js.map +1 -1
  40. package/dist/cjs/meta-tx/biconomy.d.ts +17 -3
  41. package/dist/cjs/meta-tx/biconomy.d.ts.map +1 -1
  42. package/dist/cjs/meta-tx/biconomy.js +19 -0
  43. package/dist/cjs/meta-tx/biconomy.js.map +1 -1
  44. package/dist/cjs/meta-tx/handler.d.ts +38 -4
  45. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  46. package/dist/cjs/meta-tx/handler.js +94 -25
  47. package/dist/cjs/meta-tx/handler.js.map +1 -1
  48. package/dist/cjs/meta-tx/mixin.d.ts +25 -3
  49. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
  50. package/dist/cjs/meta-tx/mixin.js +51 -22
  51. package/dist/cjs/meta-tx/mixin.js.map +1 -1
  52. package/dist/cjs/metadata/mixin.d.ts +3 -3
  53. package/dist/cjs/metadata/mixin.d.ts.map +1 -1
  54. package/dist/cjs/metadata/mixin.js.map +1 -1
  55. package/dist/cjs/offers/handler.d.ts +15 -0
  56. package/dist/cjs/offers/handler.d.ts.map +1 -1
  57. package/dist/cjs/offers/handler.js +28 -4
  58. package/dist/cjs/offers/handler.js.map +1 -1
  59. package/dist/cjs/offers/interface.d.ts +1 -1
  60. package/dist/cjs/offers/interface.d.ts.map +1 -1
  61. package/dist/cjs/offers/interface.js +3 -2
  62. package/dist/cjs/offers/interface.js.map +1 -1
  63. package/dist/cjs/offers/mixin.d.ts +26 -3
  64. package/dist/cjs/offers/mixin.d.ts.map +1 -1
  65. package/dist/cjs/offers/mixin.js +46 -3
  66. package/dist/cjs/offers/mixin.js.map +1 -1
  67. package/dist/cjs/offers/renderContractualAgreement.d.ts.map +1 -1
  68. package/dist/cjs/offers/renderContractualAgreement.js +5 -4
  69. package/dist/cjs/offers/renderContractualAgreement.js.map +1 -1
  70. package/dist/cjs/seaport/abi.d.ts +41 -0
  71. package/dist/cjs/seaport/abi.d.ts.map +1 -0
  72. package/dist/cjs/seaport/abi.js +153 -0
  73. package/dist/cjs/seaport/abi.js.map +1 -0
  74. package/dist/cjs/seaport/handler.d.ts +46 -0
  75. package/dist/cjs/seaport/handler.d.ts.map +1 -0
  76. package/dist/cjs/seaport/handler.js +28 -0
  77. package/dist/cjs/seaport/handler.js.map +1 -0
  78. package/dist/cjs/seaport/index.d.ts +2 -0
  79. package/dist/cjs/seaport/index.d.ts.map +1 -0
  80. package/dist/cjs/seaport/index.js +28 -0
  81. package/dist/cjs/seaport/index.js.map +1 -0
  82. package/dist/cjs/subgraph.d.ts +7036 -358
  83. package/dist/cjs/subgraph.d.ts.map +1 -1
  84. package/dist/cjs/subgraph.js +166 -11
  85. package/dist/cjs/subgraph.js.map +1 -1
  86. package/dist/cjs/voucher/handler.d.ts +31 -0
  87. package/dist/cjs/voucher/handler.d.ts.map +1 -1
  88. package/dist/cjs/voucher/handler.js +57 -1
  89. package/dist/cjs/voucher/handler.js.map +1 -1
  90. package/dist/cjs/voucher/interface.d.ts +8 -0
  91. package/dist/cjs/voucher/interface.d.ts.map +1 -1
  92. package/dist/cjs/voucher/interface.js +81 -1
  93. package/dist/cjs/voucher/interface.js.map +1 -1
  94. package/dist/cjs/voucher/mixin.d.ts +11 -0
  95. package/dist/cjs/voucher/mixin.d.ts.map +1 -1
  96. package/dist/cjs/voucher/mixin.js +47 -0
  97. package/dist/cjs/voucher/mixin.js.map +1 -1
  98. package/dist/esm/accounts/interface.js.map +1 -1
  99. package/dist/esm/accounts/mixin.d.ts +4 -4
  100. package/dist/esm/accounts/mixin.d.ts.map +1 -1
  101. package/dist/esm/accounts/mixin.js +8 -8
  102. package/dist/esm/accounts/mixin.js.map +1 -1
  103. package/dist/esm/accounts/subgraph.d.ts +1 -1
  104. package/dist/esm/accounts/subgraph.d.ts.map +1 -1
  105. package/dist/esm/accounts/subgraph.js +5 -5
  106. package/dist/esm/accounts/subgraph.js.map +1 -1
  107. package/dist/esm/accounts/types.d.ts +1 -1
  108. package/dist/esm/accounts/types.d.ts.map +1 -1
  109. package/dist/esm/core-sdk.d.ts +1 -0
  110. package/dist/esm/core-sdk.d.ts.map +1 -1
  111. package/dist/esm/core-sdk.js +3 -0
  112. package/dist/esm/core-sdk.js.map +1 -1
  113. package/dist/esm/erc1155/mixin.d.ts +1 -1
  114. package/dist/esm/erc1155/mixin.d.ts.map +1 -1
  115. package/dist/esm/erc1155/mixin.js +2 -2
  116. package/dist/esm/erc1155/mixin.js.map +1 -1
  117. package/dist/esm/erc20/mixin.d.ts +7 -7
  118. package/dist/esm/erc20/mixin.d.ts.map +1 -1
  119. package/dist/esm/erc20/mixin.js +14 -14
  120. package/dist/esm/erc20/mixin.js.map +1 -1
  121. package/dist/esm/erc721/mixin.d.ts +3 -3
  122. package/dist/esm/erc721/mixin.d.ts.map +1 -1
  123. package/dist/esm/erc721/mixin.js +6 -6
  124. package/dist/esm/erc721/mixin.js.map +1 -1
  125. package/dist/esm/exchanges/handler.js +12 -12
  126. package/dist/esm/exchanges/handler.js.map +1 -1
  127. package/dist/esm/exchanges/mixin.d.ts +3 -3
  128. package/dist/esm/exchanges/mixin.js +3 -3
  129. package/dist/esm/forwarder/handler.d.ts +1 -1
  130. package/dist/esm/forwarder/handler.d.ts.map +1 -1
  131. package/dist/esm/forwarder/handler.js +2 -4
  132. package/dist/esm/forwarder/handler.js.map +1 -1
  133. package/dist/esm/index.d.ts +2 -1
  134. package/dist/esm/index.d.ts.map +1 -1
  135. package/dist/esm/index.js +1 -0
  136. package/dist/esm/index.js.map +1 -1
  137. package/dist/esm/meta-tx/biconomy.d.ts +17 -3
  138. package/dist/esm/meta-tx/biconomy.d.ts.map +1 -1
  139. package/dist/esm/meta-tx/biconomy.js +17 -0
  140. package/dist/esm/meta-tx/biconomy.js.map +1 -1
  141. package/dist/esm/meta-tx/handler.d.ts +38 -4
  142. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  143. package/dist/esm/meta-tx/handler.js +120 -23
  144. package/dist/esm/meta-tx/handler.js.map +1 -1
  145. package/dist/esm/meta-tx/mixin.d.ts +25 -3
  146. package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
  147. package/dist/esm/meta-tx/mixin.js +67 -17
  148. package/dist/esm/meta-tx/mixin.js.map +1 -1
  149. package/dist/esm/metadata/mixin.d.ts +3 -3
  150. package/dist/esm/metadata/mixin.d.ts.map +1 -1
  151. package/dist/esm/metadata/mixin.js.map +1 -1
  152. package/dist/esm/offers/handler.d.ts +15 -0
  153. package/dist/esm/offers/handler.d.ts.map +1 -1
  154. package/dist/esm/offers/handler.js +21 -3
  155. package/dist/esm/offers/handler.js.map +1 -1
  156. package/dist/esm/offers/interface.d.ts +1 -1
  157. package/dist/esm/offers/interface.d.ts.map +1 -1
  158. package/dist/esm/offers/interface.js +3 -2
  159. package/dist/esm/offers/interface.js.map +1 -1
  160. package/dist/esm/offers/mixin.d.ts +26 -3
  161. package/dist/esm/offers/mixin.d.ts.map +1 -1
  162. package/dist/esm/offers/mixin.js +42 -3
  163. package/dist/esm/offers/mixin.js.map +1 -1
  164. package/dist/esm/offers/renderContractualAgreement.d.ts.map +1 -1
  165. package/dist/esm/offers/renderContractualAgreement.js +5 -4
  166. package/dist/esm/offers/renderContractualAgreement.js.map +1 -1
  167. package/dist/esm/seaport/abi.d.ts +41 -0
  168. package/dist/esm/seaport/abi.d.ts.map +1 -0
  169. package/dist/esm/seaport/abi.js +150 -0
  170. package/dist/esm/seaport/abi.js.map +1 -0
  171. package/dist/esm/seaport/handler.d.ts +46 -0
  172. package/dist/esm/seaport/handler.d.ts.map +1 -0
  173. package/dist/esm/seaport/handler.js +24 -0
  174. package/dist/esm/seaport/handler.js.map +1 -0
  175. package/dist/esm/seaport/index.d.ts +2 -0
  176. package/dist/esm/seaport/index.d.ts.map +1 -0
  177. package/dist/esm/seaport/index.js +2 -0
  178. package/dist/esm/seaport/index.js.map +1 -0
  179. package/dist/esm/subgraph.d.ts +7036 -358
  180. package/dist/esm/subgraph.d.ts.map +1 -1
  181. package/dist/esm/subgraph.js +163 -8
  182. package/dist/esm/subgraph.js.map +1 -1
  183. package/dist/esm/voucher/handler.d.ts +31 -0
  184. package/dist/esm/voucher/handler.d.ts.map +1 -1
  185. package/dist/esm/voucher/handler.js +39 -1
  186. package/dist/esm/voucher/handler.js.map +1 -1
  187. package/dist/esm/voucher/interface.d.ts +8 -0
  188. package/dist/esm/voucher/interface.d.ts.map +1 -1
  189. package/dist/esm/voucher/interface.js +72 -0
  190. package/dist/esm/voucher/interface.js.map +1 -1
  191. package/dist/esm/voucher/mixin.d.ts +11 -0
  192. package/dist/esm/voucher/mixin.d.ts.map +1 -1
  193. package/dist/esm/voucher/mixin.js +41 -0
  194. package/dist/esm/voucher/mixin.js.map +1 -1
  195. package/package.json +3 -3
  196. package/src/accounts/interface.ts +2 -1
  197. package/src/accounts/mixin.ts +15 -14
  198. package/src/accounts/queries.graphql +46 -4
  199. package/src/accounts/subgraph.ts +6 -6
  200. package/src/accounts/types.ts +1 -1
  201. package/src/core-sdk.ts +4 -0
  202. package/src/erc1155/mixin.ts +2 -2
  203. package/src/erc20/mixin.ts +14 -14
  204. package/src/erc721/mixin.ts +6 -6
  205. package/src/exchanges/handler.ts +13 -13
  206. package/src/exchanges/mixin.ts +3 -3
  207. package/src/forwarder/handler.ts +3 -5
  208. package/src/index.ts +2 -0
  209. package/src/meta-tx/biconomy.ts +35 -2
  210. package/src/meta-tx/handler.ts +204 -33
  211. package/src/meta-tx/mixin.ts +135 -21
  212. package/src/metadata/base.graphql +3 -0
  213. package/src/metadata/mixin.ts +5 -3
  214. package/src/metadata/product-v1.graphql +13 -0
  215. package/src/offers/handler.ts +36 -3
  216. package/src/offers/interface.ts +4 -2
  217. package/src/offers/mixin.ts +57 -2
  218. package/src/offers/queries.graphql +13 -0
  219. package/src/offers/renderContractualAgreement.ts +6 -9
  220. package/src/seaport/abi.ts +149 -0
  221. package/src/seaport/handler.ts +57 -0
  222. package/src/seaport/index.ts +1 -0
  223. package/src/subgraph.ts +7124 -320
  224. package/src/voucher/handler.ts +78 -1
  225. package/src/voucher/interface.ts +88 -0
  226. package/src/voucher/mixin.ts +76 -0
@@ -142,14 +142,20 @@ export class MetaTxMixin extends BaseCoreSDK {
142
142
  public async signMetaTxReserveRange(
143
143
  args: Omit<
144
144
  Parameters<typeof handler.signMetaTxReserveRange>[0],
145
- "web3Lib" | "metaTxHandlerAddress" | "chainId"
146
- >
145
+ "web3Lib" | "metaTxHandlerAddress" | "chainId" | "to"
146
+ > & { to: "seller" | "contract" }
147
147
  ) {
148
+ const offer = await getOfferById(this._subgraphUrl, args.offerId);
149
+
148
150
  return handler.signMetaTxReserveRange({
149
151
  web3Lib: this._web3Lib,
150
152
  metaTxHandlerAddress: this._protocolDiamond,
151
153
  chainId: this._chainId,
152
- ...args
154
+ ...args,
155
+ to:
156
+ args.to === "contract"
157
+ ? offer.seller.voucherCloneAddress
158
+ : offer.seller.assistant
153
159
  });
154
160
  }
155
161
 
@@ -159,25 +165,17 @@ export class MetaTxMixin extends BaseCoreSDK {
159
165
  | "web3Lib"
160
166
  | "bosonVoucherAddress"
161
167
  | "chainId"
162
- | "nonce"
163
168
  | "forwarderAddress"
164
169
  | "batchId"
165
170
  | "forwarderAbi"
171
+ | "relayerUrl"
166
172
  >,
167
173
  overrides: Partial<{
168
174
  batchId: BigNumberish;
169
175
  }> = {}
170
176
  ) {
171
- const signerAddress = await this._web3Lib.getSignerAddress();
172
177
  const forwarderAddress = this._contracts.forwarder;
173
178
  const batchId = overrides.batchId || 0;
174
- const nonce = await getNonce({
175
- contractAddress: forwarderAddress,
176
- user: signerAddress,
177
- web3Lib: this._web3Lib,
178
- batchId,
179
- forwarderAbi: this._metaTxConfig.forwarderAbi
180
- });
181
179
  const offerFromSubgraph = await getOfferById(
182
180
  this._subgraphUrl,
183
181
  args.offerId
@@ -186,10 +184,10 @@ export class MetaTxMixin extends BaseCoreSDK {
186
184
  web3Lib: this._web3Lib,
187
185
  bosonVoucherAddress: offerFromSubgraph.seller.voucherCloneAddress,
188
186
  chainId: this._chainId,
189
- nonce,
190
187
  forwarderAddress,
191
188
  batchId,
192
189
  forwarderAbi: this._metaTxConfig.forwarderAbi,
190
+ relayerUrl: this._metaTxConfig.relayerUrl,
193
191
  ...args
194
192
  });
195
193
  }
@@ -204,6 +202,7 @@ export class MetaTxMixin extends BaseCoreSDK {
204
202
  | "forwarderAddress"
205
203
  | "batchId"
206
204
  | "forwarderAbi"
205
+ | "relayerUrl"
207
206
  >,
208
207
  overrides: Partial<{
209
208
  batchId: BigNumberish;
@@ -216,26 +215,103 @@ export class MetaTxMixin extends BaseCoreSDK {
216
215
  );
217
216
  const forwarderAddress = this._contracts.forwarder;
218
217
  const batchId = overrides.batchId || 0;
219
- const nonce = await getNonce({
220
- contractAddress: forwarderAddress,
221
- user: sellerAddress,
222
- web3Lib: this._web3Lib,
223
- batchId,
224
- forwarderAbi: this._metaTxConfig.forwarderAbi
225
- });
226
218
 
227
219
  return handler.signMetaTxSetApprovalForAll({
228
220
  web3Lib: this._web3Lib,
229
221
  bosonVoucherAddress: seller.voucherCloneAddress,
230
222
  chainId: this._chainId,
231
- nonce,
232
223
  forwarderAddress,
233
224
  batchId,
234
225
  forwarderAbi: this._metaTxConfig.forwarderAbi,
226
+ relayerUrl: this._metaTxConfig.relayerUrl,
235
227
  ...args
236
228
  });
237
229
  }
238
230
 
231
+ public async signMetaTxSetApprovalForAllToContract(
232
+ args: Omit<
233
+ Parameters<typeof handler.signMetaTxSetApprovalForAllToContract>[0],
234
+ | "web3Lib"
235
+ | "bosonVoucherAddress"
236
+ | "chainId"
237
+ | "nonce"
238
+ | "forwarderAddress"
239
+ | "batchId"
240
+ | "forwarderAbi"
241
+ | "relayerUrl"
242
+ >,
243
+ overrides: Partial<{
244
+ batchId?: BigNumberish;
245
+ txGas?: number;
246
+ }> = {}
247
+ ) {
248
+ const sellerAddress = await this._web3Lib.getSignerAddress();
249
+ const seller = await accounts.subgraph.getSellerByAddress(
250
+ this._subgraphUrl,
251
+ sellerAddress
252
+ );
253
+ const forwarderAddress = this._contracts.forwarder;
254
+ const batchId = overrides.batchId || 0;
255
+
256
+ return handler.signMetaTxSetApprovalForAllToContract(
257
+ {
258
+ web3Lib: this._web3Lib,
259
+ bosonVoucherAddress: seller.voucherCloneAddress,
260
+ chainId: this._chainId,
261
+ forwarderAddress,
262
+ batchId,
263
+ forwarderAbi: this._metaTxConfig.forwarderAbi,
264
+ relayerUrl: this._metaTxConfig.relayerUrl,
265
+ ...args
266
+ },
267
+ {
268
+ txGas: overrides.txGas
269
+ }
270
+ );
271
+ }
272
+
273
+ public async signMetaTxCallExternalContract(
274
+ args: Omit<
275
+ Parameters<typeof handler.signMetaTxCallExternalContract>[0],
276
+ | "web3Lib"
277
+ | "bosonVoucherAddress"
278
+ | "chainId"
279
+ | "nonce"
280
+ | "forwarderAddress"
281
+ | "batchId"
282
+ | "forwarderAbi"
283
+ | "relayerUrl"
284
+ >,
285
+ overrides: Partial<{
286
+ batchId?: BigNumberish;
287
+ txGas?: number;
288
+ }> = {}
289
+ ) {
290
+ const sellerAddress = await this._web3Lib.getSignerAddress();
291
+ const seller = await accounts.subgraph.getSellerByAddress(
292
+ this._subgraphUrl,
293
+ sellerAddress
294
+ );
295
+ const forwarderAddress = this._contracts.forwarder;
296
+ const batchId = overrides.batchId || 0;
297
+
298
+ return handler.signMetaTxCallExternalContract(
299
+ {
300
+ web3Lib: this._web3Lib,
301
+ bosonVoucherAddress: seller.voucherCloneAddress,
302
+ chainId: this._chainId,
303
+ forwarderAddress,
304
+ batchId,
305
+ forwarderAbi: this._metaTxConfig.forwarderAbi,
306
+ relayerUrl: this._metaTxConfig.relayerUrl,
307
+ ...args
308
+ },
309
+ {
310
+ txGas: overrides.txGas
311
+ }
312
+ );
313
+ }
314
+
239
315
  public async relayBiconomyMetaTransaction(
240
316
  contractAddress: string,
241
317
  metaTxParams: {
@@ -340,6 +416,44 @@ export class MetaTxMixin extends BaseCoreSDK {
340
416
  });
341
417
  }
342
418
 
419
+ /**
420
+ * Encodes and signs a meta transaction for `extendOffer` that can be relayed.
421
+ * @param args - Meta transaction args.
422
+ * @returns Signature.
423
+ */
424
+ public async signMetaTxExtendOffer(
425
+ args: Omit<
426
+ Parameters<typeof handler.signMetaTxExtendOffer>[0],
427
+ "web3Lib" | "metaTxHandlerAddress" | "chainId"
428
+ >
429
+ ) {
430
+ return handler.signMetaTxExtendOffer({
431
+ web3Lib: this._web3Lib,
432
+ metaTxHandlerAddress: this._protocolDiamond,
433
+ chainId: this._chainId,
434
+ ...args
435
+ });
436
+ }
437
+
438
+ /**
439
+ * Encodes and signs a meta transaction for `extendOfferBatch` that can be relayed.
440
+ * @param args - Meta transaction args.
441
+ * @returns Signature.
442
+ */
443
+ public async signMetaTxExtendOfferBatch(
444
+ args: Omit<
445
+ Parameters<typeof handler.signMetaTxExtendOfferBatch>[0],
446
+ "web3Lib" | "metaTxHandlerAddress" | "chainId"
447
+ >
448
+ ) {
449
+ return handler.signMetaTxExtendOfferBatch({
450
+ web3Lib: this._web3Lib,
451
+ metaTxHandlerAddress: this._protocolDiamond,
452
+ chainId: this._chainId,
453
+ ...args
454
+ });
455
+ }
456
+
343
457
  /**
344
458
  * Encodes and signs a meta transaction for `completeExchangeBatch` that can be relayed.
345
459
  * @param args - Meta transaction args.
@@ -39,6 +39,9 @@ fragment BaseBaseMetadataEntityFields on BaseMetadataEntity {
39
39
  description
40
40
  externalUrl
41
41
  animationUrl
42
+ animationMetadata {
43
+ ...BaseAnimationMetadataFields
44
+ }
42
45
  licenseUrl
43
46
  condition
44
47
  schemaUrl
@@ -1,6 +1,6 @@
1
1
  import { BaseCoreSDK } from "./../mixins/base-core-sdk";
2
2
  import * as subgraph from "../subgraph";
3
- import { AnyMetadata } from "..";
3
+ import { OfferOrSellerMetadata } from "..";
4
4
  import {
5
5
  getBaseMetadataEntities,
6
6
  getProductV1MetadataEntities,
@@ -21,7 +21,7 @@ export class MetadataMixin extends BaseCoreSDK {
21
21
  * @param metadata - Offer metadata of type `BASE` or `PRODUCT_V1`.
22
22
  * @returns Metadata hash / identifier.
23
23
  */
24
- public async storeMetadata(metadata: AnyMetadata): Promise<string> {
24
+ public async storeMetadata(metadata: OfferOrSellerMetadata): Promise<string> {
25
25
  if (!this._metadataStorage) {
26
26
  throw new Error("No metadata storage set");
27
27
  }
@@ -35,7 +35,9 @@ export class MetadataMixin extends BaseCoreSDK {
35
35
  * storage instance.
36
36
  * @returns Offer metadata.
37
37
  */
38
- public async getMetadata(metadataHashOrUri: string): Promise<AnyMetadata> {
38
+ public async getMetadata(
39
+ metadataHashOrUri: string
40
+ ): Promise<OfferOrSellerMetadata> {
39
41
  if (!this._metadataStorage) {
40
42
  throw new Error("No metadata storage set");
41
43
  }
@@ -129,6 +129,9 @@ fragment BaseProductV1MetadataEntityFields on ProductV1MetadataEntity {
129
129
  description
130
130
  externalUrl
131
131
  animationUrl
132
+ animationMetadata {
133
+ ...BaseAnimationMetadataFields
134
+ }
132
135
  licenseUrl
133
136
  condition
134
137
  schemaUrl
@@ -173,6 +176,13 @@ fragment BaseProductV1MetadataEntityFields on ProductV1MetadataEntity {
173
176
  }
174
177
  }
175
178
 
179
+ fragment BaseAnimationMetadataFields on AnimationMetadata {
180
+ id
181
+ width
182
+ height
183
+ type
184
+ }
185
+
176
186
  fragment BaseProductV1ProductFields on ProductV1Product {
177
187
  id
178
188
  uuid
@@ -299,6 +309,8 @@ fragment BaseProductV1MediaFields on ProductV1Media {
299
309
  url
300
310
  tag
301
311
  type
312
+ width
313
+ height
302
314
  }
303
315
 
304
316
  fragment BaseProductV1PersonalisationFields on ProductV1Personalisation {
@@ -326,6 +338,7 @@ fragment BaseProductV1SellerFields on ProductV1Seller {
326
338
  contactLinks {
327
339
  ...BaseProductV1SellerContactLinkFields
328
340
  }
341
+ contactPreference
329
342
  seller {
330
343
  ...BaseSellerFields
331
344
  }
@@ -73,6 +73,7 @@ export async function reserveRange(args: {
73
73
  subgraphUrl: string;
74
74
  offerId: BigNumberish;
75
75
  length: BigNumberish;
76
+ to: string;
76
77
  web3Lib: Web3LibAdapter;
77
78
  }): Promise<TransactionResponse> {
78
79
  const offerFromSubgraph = await getOfferById(args.subgraphUrl, args.offerId);
@@ -87,7 +88,7 @@ export async function reserveRange(args: {
87
88
 
88
89
  return args.web3Lib.sendTransaction({
89
90
  to: args.contractAddress,
90
- data: encodeReserveRange(args.offerId, args.length)
91
+ data: encodeReserveRange(args.offerId, args.length, args.to)
91
92
  });
92
93
  }
93
94
 
@@ -145,6 +146,38 @@ export async function voidOfferBatch(args: {
145
146
  });
146
147
  }
147
148
 
149
+ export async function extendOffer(args: {
150
+ contractAddress: string;
151
+ subgraphUrl: string;
152
+ offerId: BigNumberish;
153
+ validUntil: BigNumberish;
154
+ web3Lib: Web3LibAdapter;
155
+ }): Promise<TransactionResponse> {
156
+ return args.web3Lib.sendTransaction({
157
+ to: args.contractAddress,
158
+ data: bosonOfferHandlerIface.encodeFunctionData("extendOffer", [
159
+ args.offerId,
160
+ args.validUntil
161
+ ])
162
+ });
163
+ }
164
+
165
+ export async function extendOfferBatch(args: {
166
+ contractAddress: string;
167
+ subgraphUrl: string;
168
+ offerIds: BigNumberish[];
169
+ validUntil: BigNumberish;
170
+ web3Lib: Web3LibAdapter;
171
+ }): Promise<TransactionResponse> {
172
+ return args.web3Lib.sendTransaction({
173
+ to: args.contractAddress,
174
+ data: bosonOfferHandlerIface.encodeFunctionData("extendOfferBatch", [
175
+ args.offerIds,
176
+ args.validUntil
177
+ ])
178
+ });
179
+ }
180
+
148
181
  function checkIfOfferVoidable(
149
182
  offerId: BigNumberish,
150
183
  signerAddress: string,
@@ -159,11 +192,11 @@ function checkIfOfferVoidable(
159
192
  }
160
193
 
161
194
  if (
162
- offerFromSubgraph.seller.operator.toLowerCase() !==
195
+ offerFromSubgraph.seller.assistant.toLowerCase() !==
163
196
  signerAddress.toLowerCase()
164
197
  ) {
165
198
  throw new Error(
166
- `Signer with address "${signerAddress}" is not the operator "${offerFromSubgraph.seller.operator}" of offer with id "${offerId}"`
199
+ `Signer with address "${signerAddress}" is not the assistant "${offerFromSubgraph.seller.assistant}" of offer with id "${offerId}"`
167
200
  );
168
201
  }
169
202
  }
@@ -132,10 +132,12 @@ export function argsToOfferDurationsStruct(
132
132
 
133
133
  export function encodeReserveRange(
134
134
  offerId: BigNumberish,
135
- length: BigNumberish
135
+ length: BigNumberish,
136
+ to: string
136
137
  ) {
137
138
  return bosonOfferHandlerIface.encodeFunctionData("reserveRange", [
138
139
  offerId,
139
- length
140
+ length,
141
+ to
140
142
  ]);
141
143
  }
@@ -146,7 +146,7 @@ export class OfferMixin extends BaseCoreSDK {
146
146
 
147
147
  /**
148
148
  * Voids an existing offer by calling the `OfferHandlerFacet` contract.
149
- * This transaction only succeeds if the connected signer is the `operator`.
149
+ * This transaction only succeeds if the connected signer is the `assistant`.
150
150
  * @param offerId - ID of offer to void.
151
151
  * @param overrides - Optional overrides.
152
152
  * @returns Transaction response.
@@ -167,7 +167,7 @@ export class OfferMixin extends BaseCoreSDK {
167
167
 
168
168
  /**
169
169
  * Voids a batch of existing offers by calling the `OfferHandlerFacet` contract.
170
- * This transaction only succeeds if the connected signer is the `operator` of all
170
+ * This transaction only succeeds if the connected signer is the `assistant` of all
171
171
  * provided offers.
172
172
  * @param offerIds - IDs of offers to void.
173
173
  * @param overrides - Optional overrides.
@@ -187,6 +187,55 @@ export class OfferMixin extends BaseCoreSDK {
187
187
  });
188
188
  }
189
189
 
190
+ /**
191
+ * Extends an existing offer by calling the `OfferHandlerFacet` contract.
192
+ * This transaction only succeeds if the connected signer is the `assistant`.
193
+ * @param offerId - ID of offer to void.
194
+ * @param validUntil - new validity date.
195
+ * @param overrides - Optional overrides.
196
+ * @returns Transaction response.
197
+ */
198
+ public async extendOffer(
199
+ offerId: BigNumberish,
200
+ validUntil: BigNumberish,
201
+ overrides: Partial<{
202
+ contractAddress: string;
203
+ }> = {}
204
+ ): Promise<TransactionResponse> {
205
+ return offers.handler.extendOffer({
206
+ offerId,
207
+ validUntil,
208
+ web3Lib: this._web3Lib,
209
+ subgraphUrl: this._subgraphUrl,
210
+ contractAddress: overrides.contractAddress || this._protocolDiamond
211
+ });
212
+ }
213
+
214
+ /**
215
+ * Extends a batch of existing offers by calling the `OfferHandlerFacet` contract.
216
+ * This transaction only succeeds if the connected signer is the `assistant` of all
217
+ * provided offers.
218
+ * @param offerIds - IDs of offers to void.
219
+ * @param validUntil - new validity date.
220
+ * @param overrides - Optional overrides.
221
+ * @returns Transaction response.
222
+ */
223
+ public async extendOfferBatch(
224
+ offerIds: BigNumberish[],
225
+ validUntil: BigNumberish,
226
+ overrides: Partial<{
227
+ contractAddress: string;
228
+ }> = {}
229
+ ): Promise<TransactionResponse> {
230
+ return offers.handler.extendOfferBatch({
231
+ offerIds,
232
+ validUntil,
233
+ web3Lib: this._web3Lib,
234
+ subgraphUrl: this._subgraphUrl,
235
+ contractAddress: overrides.contractAddress || this._protocolDiamond
236
+ });
237
+ }
238
+
190
239
  /**
191
240
  * Returns offer from subgraph.
192
241
  * @param offerId - ID of offer.
@@ -255,13 +304,19 @@ export class OfferMixin extends BaseCoreSDK {
255
304
  public async reserveRange(
256
305
  offerId: BigNumberish,
257
306
  length: BigNumberish,
307
+ to: "seller" | "contract",
258
308
  overrides: Partial<{
259
309
  contractAddress: string;
260
310
  }> = {}
261
311
  ): Promise<TransactionResponse> {
312
+ const offer = await this.getOfferById(offerId);
262
313
  return offers.handler.reserveRange({
263
314
  offerId,
264
315
  length,
316
+ to:
317
+ to === "contract"
318
+ ? offer.seller.voucherCloneAddress
319
+ : offer.seller.assistant,
265
320
  subgraphUrl: this._subgraphUrl,
266
321
  contractAddress: overrides.contractAddress || this._protocolDiamond,
267
322
  web3Lib: this._web3Lib
@@ -94,6 +94,9 @@ fragment BaseOfferFields on Offer {
94
94
  description
95
95
  externalUrl
96
96
  animationUrl
97
+ animationMetadata {
98
+ ...BaseAnimationMetadataFields
99
+ }
97
100
  licenseUrl
98
101
  condition
99
102
  schemaUrl
@@ -128,4 +131,14 @@ fragment BaseOfferFields on Offer {
128
131
  }
129
132
  }
130
133
  }
134
+ range {
135
+ ...BaseRangeFields
136
+ }
137
+ }
138
+
139
+ fragment BaseRangeFields on RangeEntity {
140
+ id
141
+ start
142
+ end
143
+ owner
131
144
  }
@@ -292,21 +292,18 @@ export async function renderContractualAgreementForOffer(
292
292
  `Invalid Offer Metadata: Type is not supported: '${existingOfferData.metadata.type}'`
293
293
  );
294
294
  }
295
- if (
296
- !(existingOfferData.metadata as productV1.ProductV1Metadata).exchangePolicy
297
- ) {
295
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
296
+ if (!(existingOfferData.metadata as any).exchangePolicy) {
298
297
  throw new Error(`Invalid Offer Metadata: exchangePolicy is not defined`);
299
298
  }
300
- if (
301
- !(existingOfferData.metadata as productV1.ProductV1Metadata).exchangePolicy
302
- .template
303
- ) {
299
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
300
+ if (!(existingOfferData.metadata as any).exchangePolicy.template) {
304
301
  throw new Error(
305
302
  `Invalid Offer Metadata: exchangePolicy.template is not defined`
306
303
  );
307
304
  }
308
- const template = (existingOfferData.metadata as productV1.ProductV1Metadata)
309
- .exchangePolicy.template;
305
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
306
+ const template = (existingOfferData.metadata as any).exchangePolicy.template;
310
307
  const convertedOfferArgs = convertExistingOfferData(existingOfferData);
311
308
  return renderContractualAgreement(
312
309
  template,
@@ -0,0 +1,149 @@
1
+ export const seaportAbi = [
2
+ {
3
+ inputs: [
4
+ {
5
+ components: [
6
+ {
7
+ components: [
8
+ {
9
+ internalType: "address",
10
+ name: "offerer",
11
+ type: "address"
12
+ },
13
+ {
14
+ internalType: "address",
15
+ name: "zone",
16
+ type: "address"
17
+ },
18
+ {
19
+ components: [
20
+ {
21
+ internalType: "enum ItemType",
22
+ name: "itemType",
23
+ type: "uint8"
24
+ },
25
+ {
26
+ internalType: "address",
27
+ name: "token",
28
+ type: "address"
29
+ },
30
+ {
31
+ internalType: "uint256",
32
+ name: "identifierOrCriteria",
33
+ type: "uint256"
34
+ },
35
+ {
36
+ internalType: "uint256",
37
+ name: "startAmount",
38
+ type: "uint256"
39
+ },
40
+ {
41
+ internalType: "uint256",
42
+ name: "endAmount",
43
+ type: "uint256"
44
+ }
45
+ ],
46
+ internalType: "struct OfferItem[]",
47
+ name: "offer",
48
+ type: "tuple[]"
49
+ },
50
+ {
51
+ components: [
52
+ {
53
+ internalType: "enum ItemType",
54
+ name: "itemType",
55
+ type: "uint8"
56
+ },
57
+ {
58
+ internalType: "address",
59
+ name: "token",
60
+ type: "address"
61
+ },
62
+ {
63
+ internalType: "uint256",
64
+ name: "identifierOrCriteria",
65
+ type: "uint256"
66
+ },
67
+ {
68
+ internalType: "uint256",
69
+ name: "startAmount",
70
+ type: "uint256"
71
+ },
72
+ {
73
+ internalType: "uint256",
74
+ name: "endAmount",
75
+ type: "uint256"
76
+ },
77
+ {
78
+ internalType: "address payable",
79
+ name: "recipient",
80
+ type: "address"
81
+ }
82
+ ],
83
+ internalType: "struct ConsiderationItem[]",
84
+ name: "consideration",
85
+ type: "tuple[]"
86
+ },
87
+ {
88
+ internalType: "enum OrderType",
89
+ name: "orderType",
90
+ type: "uint8"
91
+ },
92
+ {
93
+ internalType: "uint256",
94
+ name: "startTime",
95
+ type: "uint256"
96
+ },
97
+ {
98
+ internalType: "uint256",
99
+ name: "endTime",
100
+ type: "uint256"
101
+ },
102
+ {
103
+ internalType: "bytes32",
104
+ name: "zoneHash",
105
+ type: "bytes32"
106
+ },
107
+ {
108
+ internalType: "uint256",
109
+ name: "salt",
110
+ type: "uint256"
111
+ },
112
+ {
113
+ internalType: "bytes32",
114
+ name: "conduitKey",
115
+ type: "bytes32"
116
+ },
117
+ {
118
+ internalType: "uint256",
119
+ name: "totalOriginalConsiderationItems",
120
+ type: "uint256"
121
+ }
122
+ ],
123
+ internalType: "struct OrderParameters",
124
+ name: "parameters",
125
+ type: "tuple"
126
+ },
127
+ {
128
+ internalType: "bytes",
129
+ name: "signature",
130
+ type: "bytes"
131
+ }
132
+ ],
133
+ internalType: "struct Order[]",
134
+ name: "",
135
+ type: "tuple[]"
136
+ }
137
+ ],
138
+ name: "validate",
139
+ outputs: [
140
+ {
141
+ internalType: "bool",
142
+ name: "",
143
+ type: "bool"
144
+ }
145
+ ],
146
+ stateMutability: "nonpayable",
147
+ type: "function"
148
+ }
149
+ ];