@bosonprotocol/core-sdk 1.24.1-alpha.0 → 1.24.1-alpha.2

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 (76) hide show
  1. package/dist/cjs/core-sdk.d.ts.map +1 -1
  2. package/dist/cjs/core-sdk.js +2 -1
  3. package/dist/cjs/core-sdk.js.map +1 -1
  4. package/dist/cjs/forwarder/handler.d.ts +7 -0
  5. package/dist/cjs/forwarder/handler.d.ts.map +1 -0
  6. package/dist/cjs/forwarder/handler.js +25 -0
  7. package/dist/cjs/forwarder/handler.js.map +1 -0
  8. package/dist/cjs/forwarder/index.d.ts +2 -0
  9. package/dist/cjs/forwarder/index.d.ts.map +1 -0
  10. package/dist/cjs/forwarder/index.js +28 -0
  11. package/dist/cjs/forwarder/index.js.map +1 -0
  12. package/dist/cjs/forwarder/interface.d.ts +6 -0
  13. package/dist/cjs/forwarder/interface.d.ts.map +1 -0
  14. package/dist/cjs/forwarder/interface.js +15 -0
  15. package/dist/cjs/forwarder/interface.js.map +1 -0
  16. package/dist/cjs/meta-tx/handler.d.ts +24 -2
  17. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  18. package/dist/cjs/meta-tx/handler.js +37 -2
  19. package/dist/cjs/meta-tx/handler.js.map +1 -1
  20. package/dist/cjs/meta-tx/mixin.d.ts +7 -1
  21. package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
  22. package/dist/cjs/meta-tx/mixin.js +10 -1
  23. package/dist/cjs/meta-tx/mixin.js.map +1 -1
  24. package/dist/cjs/mixins/base-core-sdk.d.ts +3 -1
  25. package/dist/cjs/mixins/base-core-sdk.d.ts.map +1 -1
  26. package/dist/cjs/mixins/base-core-sdk.js +1 -0
  27. package/dist/cjs/mixins/base-core-sdk.js.map +1 -1
  28. package/dist/cjs/utils/signature.d.ts.map +1 -1
  29. package/dist/cjs/utils/signature.js +5 -0
  30. package/dist/cjs/utils/signature.js.map +1 -1
  31. package/dist/cjs/voucher/handler.d.ts.map +1 -1
  32. package/dist/cjs/voucher/handler.js +0 -1
  33. package/dist/cjs/voucher/handler.js.map +1 -1
  34. package/dist/esm/core-sdk.d.ts.map +1 -1
  35. package/dist/esm/core-sdk.js +2 -1
  36. package/dist/esm/core-sdk.js.map +1 -1
  37. package/dist/esm/forwarder/handler.d.ts +7 -0
  38. package/dist/esm/forwarder/handler.d.ts.map +1 -0
  39. package/dist/esm/forwarder/handler.js +10 -0
  40. package/dist/esm/forwarder/handler.js.map +1 -0
  41. package/dist/esm/forwarder/index.d.ts +2 -0
  42. package/dist/esm/forwarder/index.d.ts.map +1 -0
  43. package/dist/esm/forwarder/index.js +2 -0
  44. package/dist/esm/forwarder/index.js.map +1 -0
  45. package/dist/esm/forwarder/interface.d.ts +6 -0
  46. package/dist/esm/forwarder/interface.d.ts.map +1 -0
  47. package/dist/esm/forwarder/interface.js +10 -0
  48. package/dist/esm/forwarder/interface.js.map +1 -0
  49. package/dist/esm/meta-tx/handler.d.ts +24 -2
  50. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  51. package/dist/esm/meta-tx/handler.js +44 -2
  52. package/dist/esm/meta-tx/handler.js.map +1 -1
  53. package/dist/esm/meta-tx/mixin.d.ts +7 -1
  54. package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
  55. package/dist/esm/meta-tx/mixin.js +11 -1
  56. package/dist/esm/meta-tx/mixin.js.map +1 -1
  57. package/dist/esm/mixins/base-core-sdk.d.ts +3 -1
  58. package/dist/esm/mixins/base-core-sdk.d.ts.map +1 -1
  59. package/dist/esm/mixins/base-core-sdk.js +2 -0
  60. package/dist/esm/mixins/base-core-sdk.js.map +1 -1
  61. package/dist/esm/utils/signature.d.ts.map +1 -1
  62. package/dist/esm/utils/signature.js +5 -0
  63. package/dist/esm/utils/signature.js.map +1 -1
  64. package/dist/esm/voucher/handler.d.ts.map +1 -1
  65. package/dist/esm/voucher/handler.js +0 -1
  66. package/dist/esm/voucher/handler.js.map +1 -1
  67. package/package.json +3 -3
  68. package/src/core-sdk.ts +2 -1
  69. package/src/forwarder/handler.ts +15 -0
  70. package/src/forwarder/index.ts +1 -0
  71. package/src/forwarder/interface.ts +13 -0
  72. package/src/meta-tx/handler.ts +69 -3
  73. package/src/meta-tx/mixin.ts +18 -3
  74. package/src/mixins/base-core-sdk.ts +5 -1
  75. package/src/utils/signature.ts +5 -0
  76. package/src/voucher/handler.ts +0 -1
@@ -44,6 +44,14 @@ export type BaseMetaTxArgs = {
44
44
  chainId: number;
45
45
  };
46
46
 
47
+ export type BaseVoucherMetaTxArgs = {
48
+ web3Lib: Web3LibAdapter;
49
+ nonce: BigNumberish;
50
+ bosonVoucherAddress: string;
51
+ forwarderAddress: string;
52
+ chainId: number;
53
+ };
54
+
47
55
  export type SignedMetaTx = {
48
56
  functionName: string;
49
57
  functionSignature: string;
@@ -95,6 +103,65 @@ export async function signMetaTx(
95
103
  };
96
104
  }
97
105
 
106
+ export async function signVoucherMetaTx(
107
+ args: BaseVoucherMetaTxArgs & {
108
+ functionSignature: string;
109
+ }
110
+ ): Promise<{
111
+ to: string;
112
+ functionSignature: string;
113
+ r: string;
114
+ s: string;
115
+ v: number;
116
+ }> {
117
+ const forwardType = [
118
+ { name: "from", type: "address" },
119
+ { name: "to", type: "address" },
120
+ { name: "nonce", type: "uint256" },
121
+ { name: "data", type: "bytes" }
122
+ ];
123
+
124
+ const customSignatureType = {
125
+ EIP712Domain: [
126
+ { name: "name", type: "string" },
127
+ { name: "version", type: "string" },
128
+ { name: "chainId", type: "uint256" },
129
+ { name: "verifyingContract", type: "address" }
130
+ ],
131
+ ForwardRequest: forwardType
132
+ };
133
+
134
+ const signerAddress = await args.web3Lib.getSignerAddress();
135
+ const chainId = await args.web3Lib.getChainId();
136
+
137
+ const message = {
138
+ from: signerAddress,
139
+ to: args.bosonVoucherAddress,
140
+ nonce: args.nonce,
141
+ data: args.functionSignature
142
+ };
143
+
144
+ const signature = await prepareDataSignatureParameters({
145
+ ...args,
146
+ verifyingContractAddress: args.forwarderAddress,
147
+ customSignatureType,
148
+ primaryType: "ForwardRequest",
149
+ message,
150
+ customDomainData: {
151
+ name: "MockForwarder",
152
+ version: "0.0.1",
153
+ chainId,
154
+ salt: undefined
155
+ }
156
+ });
157
+
158
+ return {
159
+ to: message.to,
160
+ functionSignature: args.functionSignature,
161
+ ...signature
162
+ };
163
+ }
164
+
98
165
  export async function signMetaTxCreateSeller(
99
166
  args: BaseMetaTxArgs & {
100
167
  createSellerArgs: CreateSellerArgs;
@@ -290,14 +357,13 @@ export async function signMetaTxReserveRange(
290
357
  }
291
358
 
292
359
  export async function signMetaTxPreMint(
293
- args: BaseMetaTxArgs & {
360
+ args: BaseVoucherMetaTxArgs & {
294
361
  offerId: BigNumberish;
295
362
  amount: BigNumberish;
296
363
  }
297
364
  ) {
298
- return signMetaTx({
365
+ return signVoucherMetaTx({
299
366
  ...args,
300
- functionName: "preMint(uint256,uint256)",
301
367
  functionSignature: encodePreMint(args.offerId, args.amount)
302
368
  });
303
369
  }
@@ -1,10 +1,12 @@
1
- import { MetaTxConfig, TransactionResponse } from "@bosonprotocol/common";
1
+ import { abis, MetaTxConfig, TransactionResponse } from "@bosonprotocol/common";
2
2
  import { BigNumberish } from "@ethersproject/bignumber";
3
3
  import { BytesLike } from "@ethersproject/bytes";
4
4
  import { handler } from ".";
5
5
  import { getOfferById } from "../offers/subgraph";
6
6
  import { BaseCoreSDK } from "./../mixins/base-core-sdk";
7
7
  import { GetRetriedHashesData } from "./biconomy";
8
+ import { Contract } from "ethers";
9
+ import { getNonce } from "../forwarder/handler";
8
10
  export class MetaTxMixin extends BaseCoreSDK {
9
11
  /* -------------------------------------------------------------------------- */
10
12
  /* Meta Tx related methods */
@@ -154,17 +156,30 @@ export class MetaTxMixin extends BaseCoreSDK {
154
156
  public async signMetaTxPreMint(
155
157
  args: Omit<
156
158
  Parameters<typeof handler.signMetaTxPreMint>[0],
157
- "web3Lib" | "metaTxHandlerAddress" | "chainId"
159
+ | "web3Lib"
160
+ | "bosonVoucherAddress"
161
+ | "chainId"
162
+ | "nonce"
163
+ | "forwarderAddress"
158
164
  >
159
165
  ) {
166
+ const signerAddress = await this._web3Lib.getSignerAddress();
167
+ const forwarderAddress = this._contracts.forwarder;
168
+ const nonce = await getNonce({
169
+ contractAddress: forwarderAddress,
170
+ user: signerAddress,
171
+ web3Lib: this._web3Lib
172
+ });
160
173
  const offerFromSubgraph = await getOfferById(
161
174
  this._subgraphUrl,
162
175
  args.offerId
163
176
  );
164
177
  return handler.signMetaTxPreMint({
165
178
  web3Lib: this._web3Lib,
166
- metaTxHandlerAddress: offerFromSubgraph.seller.voucherCloneAddress,
179
+ bosonVoucherAddress: offerFromSubgraph.seller.voucherCloneAddress,
167
180
  chainId: this._chainId,
181
+ nonce,
182
+ forwarderAddress,
168
183
  ...args
169
184
  });
170
185
  }
@@ -2,7 +2,8 @@ import {
2
2
  Web3LibAdapter,
3
3
  MetadataStorage,
4
4
  MetaTxConfig,
5
- LensContracts
5
+ LensContracts,
6
+ ContractAddresses
6
7
  } from "@bosonprotocol/common";
7
8
  import { TokenInfoManager } from "../utils/tokenInfoManager";
8
9
 
@@ -18,6 +19,7 @@ export class BaseCoreSDK {
18
19
 
19
20
  protected _metaTxConfig?: Partial<MetaTxConfig>;
20
21
  protected _lensContracts?: LensContracts;
22
+ protected _contracts?: ContractAddresses;
21
23
 
22
24
  /**
23
25
  * Creates an instance of `BaseCoreSDK`
@@ -32,6 +34,7 @@ export class BaseCoreSDK {
32
34
  chainId: number;
33
35
  metaTx?: Partial<MetaTxConfig>;
34
36
  lensContracts?: LensContracts;
37
+ contracts?: ContractAddresses;
35
38
  }) {
36
39
  this._web3Lib = opts.web3Lib;
37
40
  this._subgraphUrl = opts.subgraphUrl;
@@ -41,6 +44,7 @@ export class BaseCoreSDK {
41
44
  this._chainId = opts.chainId;
42
45
  this._metaTxConfig = opts.metaTx;
43
46
  this._lensContracts = opts.lensContracts;
47
+ this._contracts = opts.contracts;
44
48
  }
45
49
 
46
50
  protected assertAndGetMetaTxConfig(
@@ -27,6 +27,11 @@ export async function prepareDataSignatureParameters(args: SignatureArgs) {
27
27
  salt: hexZeroPad(BigNumber.from(args.chainId).toHexString(), 32),
28
28
  ...args.customDomainData
29
29
  };
30
+ Object.keys(domainData).forEach((key) => {
31
+ if (domainData[key] === undefined) {
32
+ delete domainData[key];
33
+ }
34
+ });
30
35
 
31
36
  const signatureTypes = {
32
37
  EIP712Domain: domainType,
@@ -46,7 +46,6 @@ export async function getRangeByOfferId(args: {
46
46
  });
47
47
  const [range] = decodeGetRangeByOfferId(result);
48
48
  return {
49
- offerId: range.offerId,
50
49
  start: range.start,
51
50
  length: range._length,
52
51
  minted: range.minted,