@bosonprotocol/core-sdk 1.12.0-alpha.15 → 1.12.0-alpha.17

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/core-sdk.d.ts +3 -3
  2. package/dist/cjs/core-sdk.d.ts.map +1 -1
  3. package/dist/cjs/core-sdk.js +3 -23
  4. package/dist/cjs/core-sdk.js.map +1 -1
  5. package/dist/cjs/disputes/handler.d.ts +11 -0
  6. package/dist/cjs/disputes/handler.d.ts.map +1 -1
  7. package/dist/cjs/disputes/handler.js +25 -1
  8. package/dist/cjs/disputes/handler.js.map +1 -1
  9. package/dist/cjs/meta-tx/handler.d.ts +0 -14
  10. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  11. package/dist/cjs/meta-tx/handler.js +14 -60
  12. package/dist/cjs/meta-tx/handler.js.map +1 -1
  13. package/dist/cjs/utils/signature.d.ts +21 -0
  14. package/dist/cjs/utils/signature.d.ts.map +1 -0
  15. package/dist/cjs/utils/signature.js +60 -0
  16. package/dist/cjs/utils/signature.js.map +1 -0
  17. package/dist/esm/core-sdk.d.ts +3 -3
  18. package/dist/esm/core-sdk.d.ts.map +1 -1
  19. package/dist/esm/core-sdk.js +5 -20
  20. package/dist/esm/core-sdk.js.map +1 -1
  21. package/dist/esm/disputes/handler.d.ts +11 -0
  22. package/dist/esm/disputes/handler.d.ts.map +1 -1
  23. package/dist/esm/disputes/handler.js +21 -0
  24. package/dist/esm/disputes/handler.js.map +1 -1
  25. package/dist/esm/meta-tx/handler.d.ts +0 -14
  26. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  27. package/dist/esm/meta-tx/handler.js +19 -58
  28. package/dist/esm/meta-tx/handler.js.map +1 -1
  29. package/dist/esm/utils/signature.d.ts +21 -0
  30. package/dist/esm/utils/signature.d.ts.map +1 -0
  31. package/dist/esm/utils/signature.js +47 -0
  32. package/dist/esm/utils/signature.js.map +1 -0
  33. package/package.json +3 -3
  34. package/src/core-sdk.ts +7 -25
  35. package/src/disputes/handler.ts +31 -0
  36. package/src/meta-tx/handler.ts +20 -74
  37. package/src/utils/signature.ts +65 -0
@@ -1,6 +1,7 @@
1
1
  import { Web3LibAdapter, TransactionResponse } from "@bosonprotocol/common";
2
2
  import { BigNumberish } from "@ethersproject/bignumber";
3
3
  import { BytesLike } from "@ethersproject/bytes";
4
+
4
5
  import {
5
6
  encodeRaiseDispute,
6
7
  encodeDecideDispute,
@@ -13,6 +14,7 @@ import {
13
14
  encodeResolveDispute,
14
15
  encodeRetractDispute
15
16
  } from "./interface";
17
+ import { prepareDataSignatureParameters } from "../utils/signature";
16
18
 
17
19
  export async function raiseDispute(args: {
18
20
  exchangeId: BigNumberish;
@@ -130,3 +132,32 @@ export async function expireEscalatedDispute(args: {
130
132
  data: encodeExpireEscalatedDispute(args.exchangeId)
131
133
  });
132
134
  }
135
+
136
+ export async function signResolutionProposal(args: {
137
+ exchangeId: BigNumberish;
138
+ buyerPercent: BigNumberish;
139
+ contractAddress: string;
140
+ web3Lib: Web3LibAdapter;
141
+ chainId: number;
142
+ }) {
143
+ const customSignatureType = {
144
+ Resolution: [
145
+ { name: "exchangeId", type: "uint256" },
146
+ { name: "buyerPercent", type: "uint256" }
147
+ ]
148
+ };
149
+
150
+ const message = {
151
+ exchangeId: args.exchangeId,
152
+ buyerPercent: args.buyerPercent
153
+ };
154
+
155
+ return prepareDataSignatureParameters({
156
+ message,
157
+ customSignatureType,
158
+ web3Lib: args.web3Lib,
159
+ verifyingContractAddress: args.contractAddress,
160
+ chainId: args.chainId,
161
+ primaryType: "Resolution"
162
+ });
163
+ }
@@ -1,9 +1,8 @@
1
1
  import { Web3LibAdapter } from "@bosonprotocol/common";
2
- import { isHexString, hexZeroPad } from "@ethersproject/bytes";
3
- import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
2
+ import { BigNumberish } from "@ethersproject/bignumber";
4
3
 
5
4
  import { bosonExchangeHandlerIface } from "../exchanges/interface";
6
- import { bosonFundsHandlerIface } from "../funds/interface";
5
+ import { prepareDataSignatureParameters } from "../utils/signature";
7
6
 
8
7
  type BaseMetaTxArgs = {
9
8
  web3Lib: Web3LibAdapter;
@@ -26,7 +25,7 @@ export async function signExecuteMetaTx(
26
25
  { name: "functionSignature", type: "bytes" }
27
26
  ];
28
27
 
29
- const customTransactionType = {
28
+ const customSignatureType = {
30
29
  MetaTransaction: metaTransactionType
31
30
  };
32
31
 
@@ -42,7 +41,8 @@ export async function signExecuteMetaTx(
42
41
 
43
42
  return prepareDataSignatureParameters({
44
43
  ...args,
45
- customTransactionType,
44
+ verifyingContractAddress: args.metaTxHandlerAddress,
45
+ customSignatureType,
46
46
  primaryType: "MetaTransaction",
47
47
  message
48
48
  });
@@ -68,7 +68,7 @@ export async function signExecuteMetaTxCommitToOffer(
68
68
  { name: "offerDetails", type: "MetaTxOfferDetails" }
69
69
  ];
70
70
 
71
- const customTransactionType = {
71
+ const customSignatureType = {
72
72
  MetaTxCommitToOffer: metaTransactionType,
73
73
  MetaTxOfferDetails: offerType
74
74
  };
@@ -88,7 +88,8 @@ export async function signExecuteMetaTxCommitToOffer(
88
88
 
89
89
  const signatureParams = await prepareDataSignatureParameters({
90
90
  ...args,
91
- customTransactionType,
91
+ verifyingContractAddress: args.metaTxHandlerAddress,
92
+ customSignatureType,
92
93
  primaryType: "MetaTxCommitToOffer",
93
94
  message
94
95
  });
@@ -162,7 +163,7 @@ export async function signExecuteMetaTxRaiseDispute(
162
163
  { name: "disputeDetails", type: "MetaTxDisputeDetails" }
163
164
  ];
164
165
 
165
- const customTransactionType = {
166
+ const customSignatureType = {
166
167
  MetaTxDispute: metaTransactionType,
167
168
  MetaTxDisputeDetails: disputeType
168
169
  };
@@ -181,7 +182,8 @@ export async function signExecuteMetaTxRaiseDispute(
181
182
  // TODO: encode function data when adding dispute resolver module
182
183
  return prepareDataSignatureParameters({
183
184
  ...args,
184
- customTransactionType,
185
+ verifyingContractAddress: args.metaTxHandlerAddress,
186
+ customSignatureType,
185
187
  primaryType: "MetaTxDispute",
186
188
  message
187
189
  });
@@ -214,7 +216,7 @@ export async function signExecuteMetaTxResolveDispute(
214
216
  { name: "disputeResolutionDetails", type: "MetaTxDisputeResolutionDetails" }
215
217
  ];
216
218
 
217
- const customTransactionType = {
219
+ const customSignatureType = {
218
220
  MetaTxDisputeResolution: metaTransactionType,
219
221
  MetaTxDisputeResolutionDetails: disputeResolutionType
220
222
  };
@@ -236,7 +238,8 @@ export async function signExecuteMetaTxResolveDispute(
236
238
  // TODO: encode function data when adding dispute resolver module
237
239
  return prepareDataSignatureParameters({
238
240
  ...args,
239
- customTransactionType,
241
+ verifyingContractAddress: args.metaTxHandlerAddress,
242
+ customSignatureType,
240
243
  primaryType: "MetaTxDisputeResolution",
241
244
  message
242
245
  });
@@ -265,7 +268,7 @@ export async function signExecuteMetaTxWithdrawFunds(
265
268
  { name: "fundDetails", type: "MetaTxFundDetails" }
266
269
  ];
267
270
 
268
- const customTransactionType = {
271
+ const customSignatureType = {
269
272
  MetaTxFund: metaTransactionType,
270
273
  MetaTxFundDetails: fundType
271
274
  };
@@ -284,7 +287,8 @@ export async function signExecuteMetaTxWithdrawFunds(
284
287
 
285
288
  const signatureParams = await prepareDataSignatureParameters({
286
289
  ...args,
287
- customTransactionType,
290
+ verifyingContractAddress: args.metaTxHandlerAddress,
291
+ customSignatureType,
288
292
  primaryType: "MetaTxFund",
289
293
  message
290
294
  });
@@ -322,7 +326,7 @@ function makeExchangeMetaTxSigner(
322
326
  { name: "exchangeDetails", type: "MetaTxExchangeDetails" }
323
327
  ];
324
328
 
325
- const customTransactionType = {
329
+ const customSignatureType = {
326
330
  MetaTxExchange: metaTransactionType,
327
331
  MetaTxExchangeDetails: exchangeType
328
332
  };
@@ -341,7 +345,8 @@ function makeExchangeMetaTxSigner(
341
345
 
342
346
  const signatureParams = await prepareDataSignatureParameters({
343
347
  ...args,
344
- customTransactionType,
348
+ verifyingContractAddress: args.metaTxHandlerAddress,
349
+ customSignatureType,
345
350
  primaryType: "MetaTxExchange",
346
351
  message
347
352
  });
@@ -357,62 +362,3 @@ function makeExchangeMetaTxSigner(
357
362
  };
358
363
  };
359
364
  }
360
-
361
- export async function prepareDataSignatureParameters(
362
- args: BaseMetaTxArgs & {
363
- customTransactionType?: Record<string, unknown>;
364
- primaryType: string;
365
- message: Record<string, unknown>;
366
- }
367
- ) {
368
- const domainType = [
369
- { name: "name", type: "string" },
370
- { name: "version", type: "string" },
371
- { name: "verifyingContract", type: "address" },
372
- { name: "salt", type: "bytes32" }
373
- ];
374
-
375
- const domainData = {
376
- name: "BosonProtocolDiamond",
377
- version: "V1",
378
- verifyingContract: args.metaTxHandlerAddress,
379
- salt: hexZeroPad(BigNumber.from(args.chainId).toHexString(), 32)
380
- };
381
-
382
- const metaTxTypes = {
383
- EIP712Domain: domainType,
384
- ...args.customTransactionType
385
- };
386
-
387
- const dataToSign = JSON.stringify({
388
- types: metaTxTypes,
389
- domain: domainData,
390
- primaryType: args.primaryType,
391
- message: args.message
392
- });
393
-
394
- const signer = await args.web3Lib.getSignerAddress();
395
- const signature = await args.web3Lib.send("eth_signTypedData_v4", [
396
- signer,
397
- dataToSign
398
- ]);
399
-
400
- return getSignatureParameters(signature);
401
- }
402
-
403
- export function getSignatureParameters(signature: string) {
404
- if (!isHexString(signature)) {
405
- throw new Error(`Value "${signature}" is not a valid hex string`);
406
- }
407
-
408
- signature = signature.substring(2);
409
- const r = "0x" + signature.substring(0, 64);
410
- const s = "0x" + signature.substring(64, 128);
411
- const v = parseInt(signature.substring(128, 130), 16);
412
-
413
- return {
414
- r,
415
- s,
416
- v
417
- };
418
- }
@@ -0,0 +1,65 @@
1
+ import { Web3LibAdapter } from "@bosonprotocol/common";
2
+ import { isHexString, hexZeroPad } from "@ethersproject/bytes";
3
+ import { BigNumber } from "@ethersproject/bignumber";
4
+
5
+ type SignatureArgs = {
6
+ web3Lib: Web3LibAdapter;
7
+ verifyingContractAddress: string;
8
+ chainId: number;
9
+ customSignatureType?: Record<string, unknown>;
10
+ primaryType: string;
11
+ message: Record<string, unknown>;
12
+ };
13
+
14
+ export async function prepareDataSignatureParameters(args: SignatureArgs) {
15
+ const domainType = [
16
+ { name: "name", type: "string" },
17
+ { name: "version", type: "string" },
18
+ { name: "verifyingContract", type: "address" },
19
+ { name: "salt", type: "bytes32" }
20
+ ];
21
+
22
+ const domainData = {
23
+ name: "BosonProtocolDiamond",
24
+ version: "V1",
25
+ verifyingContract: args.verifyingContractAddress,
26
+ salt: hexZeroPad(BigNumber.from(args.chainId).toHexString(), 32)
27
+ };
28
+
29
+ const signatureTypes = {
30
+ EIP712Domain: domainType,
31
+ ...args.customSignatureType
32
+ };
33
+
34
+ const dataToSign = JSON.stringify({
35
+ types: signatureTypes,
36
+ domain: domainData,
37
+ primaryType: args.primaryType,
38
+ message: args.message
39
+ });
40
+
41
+ const signer = await args.web3Lib.getSignerAddress();
42
+ const signature = await args.web3Lib.send("eth_signTypedData_v4", [
43
+ signer,
44
+ dataToSign
45
+ ]);
46
+
47
+ return getSignatureParameters(signature);
48
+ }
49
+
50
+ export function getSignatureParameters(signature: string) {
51
+ if (!isHexString(signature)) {
52
+ throw new Error(`Value "${signature}" is not a valid hex string`);
53
+ }
54
+
55
+ signature = signature.substring(2);
56
+ const r = "0x" + signature.substring(0, 64);
57
+ const s = "0x" + signature.substring(64, 128);
58
+ const v = parseInt(signature.substring(128, 130), 16);
59
+
60
+ return {
61
+ r,
62
+ s,
63
+ v
64
+ };
65
+ }