@bosonprotocol/core-sdk 1.44.0-alpha.6 → 1.44.0-alpha.8

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 (42) hide show
  1. package/dist/cjs/disputes/handler.d.ts +11 -6
  2. package/dist/cjs/disputes/handler.d.ts.map +1 -1
  3. package/dist/cjs/disputes/handler.js +8 -2
  4. package/dist/cjs/disputes/handler.js.map +1 -1
  5. package/dist/cjs/disputes/mixin.d.ts +8 -6
  6. package/dist/cjs/disputes/mixin.d.ts.map +1 -1
  7. package/dist/cjs/disputes/mixin.js +19 -8
  8. package/dist/cjs/disputes/mixin.js.map +1 -1
  9. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  10. package/dist/cjs/meta-tx/handler.js +8 -8
  11. package/dist/cjs/meta-tx/handler.js.map +1 -1
  12. package/dist/cjs/native-meta-tx/handler.d.ts.map +1 -1
  13. package/dist/cjs/native-meta-tx/handler.js +1 -1
  14. package/dist/cjs/native-meta-tx/handler.js.map +1 -1
  15. package/dist/cjs/utils/signature.d.ts +20 -7
  16. package/dist/cjs/utils/signature.d.ts.map +1 -1
  17. package/dist/cjs/utils/signature.js +6 -2
  18. package/dist/cjs/utils/signature.js.map +1 -1
  19. package/dist/esm/disputes/handler.d.ts +11 -6
  20. package/dist/esm/disputes/handler.d.ts.map +1 -1
  21. package/dist/esm/disputes/handler.js +14 -2
  22. package/dist/esm/disputes/handler.js.map +1 -1
  23. package/dist/esm/disputes/mixin.d.ts +8 -6
  24. package/dist/esm/disputes/mixin.d.ts.map +1 -1
  25. package/dist/esm/disputes/mixin.js +16 -10
  26. package/dist/esm/disputes/mixin.js.map +1 -1
  27. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  28. package/dist/esm/meta-tx/handler.js +16 -8
  29. package/dist/esm/meta-tx/handler.js.map +1 -1
  30. package/dist/esm/native-meta-tx/handler.d.ts.map +1 -1
  31. package/dist/esm/native-meta-tx/handler.js +2 -1
  32. package/dist/esm/native-meta-tx/handler.js.map +1 -1
  33. package/dist/esm/utils/signature.d.ts +20 -7
  34. package/dist/esm/utils/signature.d.ts.map +1 -1
  35. package/dist/esm/utils/signature.js +6 -2
  36. package/dist/esm/utils/signature.js.map +1 -1
  37. package/package.json +3 -3
  38. package/src/disputes/handler.ts +37 -4
  39. package/src/disputes/mixin.ts +28 -4
  40. package/src/meta-tx/handler.ts +16 -8
  41. package/src/native-meta-tx/handler.ts +2 -1
  42. package/src/utils/signature.ts +46 -5
@@ -18,7 +18,11 @@ import {
18
18
  encodeResolveDispute,
19
19
  encodeRetractDispute
20
20
  } from "./interface";
21
- import { prepareDataSignatureParameters } from "../utils/signature";
21
+ import {
22
+ getSignatureParameters,
23
+ prepareDataSignatureParameters,
24
+ StructuredData
25
+ } from "../utils/signature";
22
26
 
23
27
  // Overload: returnTxInfo is true → returns TransactionRequest
24
28
  export async function raiseDispute(args: {
@@ -364,7 +368,24 @@ export async function signResolutionProposal(args: {
364
368
  contractAddress: string;
365
369
  web3Lib: Web3LibAdapter;
366
370
  chainId: number;
367
- }) {
371
+ returnTypedDataToSign: true;
372
+ }): Promise<StructuredData>;
373
+ export async function signResolutionProposal(args: {
374
+ exchangeId: BigNumberish;
375
+ buyerPercentBasisPoints: BigNumberish;
376
+ contractAddress: string;
377
+ web3Lib: Web3LibAdapter;
378
+ chainId: number;
379
+ returnTypedDataToSign?: false;
380
+ }): Promise<ReturnType<typeof getSignatureParameters>>;
381
+ export async function signResolutionProposal(args: {
382
+ exchangeId: BigNumberish;
383
+ buyerPercentBasisPoints: BigNumberish;
384
+ contractAddress: string;
385
+ web3Lib: Web3LibAdapter;
386
+ chainId: number;
387
+ returnTypedDataToSign?: boolean;
388
+ }): Promise<StructuredData | ReturnType<typeof getSignatureParameters>> {
368
389
  const customSignatureType = {
369
390
  Resolution: [
370
391
  { name: "exchangeId", type: "uint256" },
@@ -377,12 +398,24 @@ export async function signResolutionProposal(args: {
377
398
  buyerPercentBasisPoints: args.buyerPercentBasisPoints.toString()
378
399
  };
379
400
 
380
- return prepareDataSignatureParameters({
401
+ const signatureArgs = {
381
402
  message,
382
403
  customSignatureType,
383
404
  web3Lib: args.web3Lib,
384
405
  verifyingContractAddress: args.contractAddress,
385
406
  chainId: args.chainId,
386
407
  primaryType: "Resolution"
387
- });
408
+ } as const;
409
+
410
+ if (args.returnTypedDataToSign) {
411
+ return prepareDataSignatureParameters({
412
+ ...signatureArgs,
413
+ returnTypedDataToSign: true
414
+ });
415
+ } else {
416
+ return prepareDataSignatureParameters({
417
+ ...signatureArgs,
418
+ returnTypedDataToSign: false
419
+ });
420
+ }
388
421
  }
@@ -25,6 +25,7 @@ import {
25
25
  getDisputeById,
26
26
  getDisputes
27
27
  } from "./subgraph";
28
+ import { getSignatureParameters, StructuredData } from "../utils/signature";
28
29
 
29
30
  export class DisputesMixin<T extends Web3LibAdapter> extends BaseCoreSDK<T> {
30
31
  /* -------------------------------------------------------------------------- */
@@ -460,12 +461,35 @@ export class DisputesMixin<T extends Web3LibAdapter> extends BaseCoreSDK<T> {
460
461
  public async signDisputeResolutionProposal(args: {
461
462
  exchangeId: BigNumberish;
462
463
  buyerPercentBasisPoints: BigNumberish;
463
- }) {
464
- return signResolutionProposal({
465
- ...args,
464
+ returnTypedDataToSign: true;
465
+ }): Promise<StructuredData>;
466
+ public async signDisputeResolutionProposal(args: {
467
+ exchangeId: BigNumberish;
468
+ buyerPercentBasisPoints: BigNumberish;
469
+ returnTypedDataToSign?: false;
470
+ }): Promise<ReturnType<typeof getSignatureParameters>>;
471
+ public async signDisputeResolutionProposal(args: {
472
+ exchangeId: BigNumberish;
473
+ buyerPercentBasisPoints: BigNumberish;
474
+ returnTypedDataToSign?: boolean;
475
+ }): Promise<StructuredData | ReturnType<typeof getSignatureParameters>> {
476
+ const { returnTypedDataToSign, ...argsWithoutReturnTypedDataToSign } = args;
477
+ const params = {
478
+ ...argsWithoutReturnTypedDataToSign,
466
479
  web3Lib: this._web3Lib,
467
480
  contractAddress: this._protocolDiamond,
468
481
  chainId: this._chainId
469
- });
482
+ };
483
+ if (returnTypedDataToSign === true) {
484
+ return signResolutionProposal({
485
+ ...params,
486
+ returnTypedDataToSign: true
487
+ });
488
+ } else {
489
+ return signResolutionProposal({
490
+ ...params,
491
+ returnTypedDataToSign: false
492
+ });
493
+ }
470
494
  }
471
495
  }
@@ -118,7 +118,8 @@ export async function signMetaTx(
118
118
  verifyingContractAddress: args.metaTxHandlerAddress,
119
119
  customSignatureType,
120
120
  primaryType: "MetaTransaction",
121
- message
121
+ message,
122
+ returnTypedDataToSign: false
122
123
  });
123
124
 
124
125
  return {
@@ -179,7 +180,8 @@ export async function signVoucherMetaTx(
179
180
  version: "0.0.1",
180
181
  chainId,
181
182
  salt: undefined
182
- }
183
+ },
184
+ returnTypedDataToSign: false
183
185
  });
184
186
 
185
187
  return {
@@ -286,7 +288,8 @@ export async function signBiconomyVoucherMetaTx(
286
288
  ...biconomyForwarderDomainData
287
289
  // chainId
288
290
  // salt: undefined
289
- }
291
+ },
292
+ returnTypedDataToSign: false
290
293
  });
291
294
  const signature = signatureParams.signature;
292
295
  const getDomainSeparator = async () => {
@@ -861,7 +864,8 @@ export async function signMetaTxCommitToOffer(
861
864
  verifyingContractAddress: args.metaTxHandlerAddress,
862
865
  customSignatureType,
863
866
  primaryType: "MetaTxCommitToOffer",
864
- message
867
+ message,
868
+ returnTypedDataToSign: false
865
869
  });
866
870
 
867
871
  return {
@@ -920,7 +924,8 @@ export async function signMetaTxCommitToConditionalOffer(
920
924
  verifyingContractAddress: args.metaTxHandlerAddress,
921
925
  customSignatureType,
922
926
  primaryType: "MetaTxCommitToConditionalOffer",
923
- message
927
+ message,
928
+ returnTypedDataToSign: false
924
929
  });
925
930
 
926
931
  return {
@@ -1043,7 +1048,8 @@ export async function signMetaTxResolveDispute(
1043
1048
  verifyingContractAddress: args.metaTxHandlerAddress,
1044
1049
  customSignatureType,
1045
1050
  primaryType: "MetaTxDisputeResolution",
1046
- message
1051
+ message,
1052
+ returnTypedDataToSign: false
1047
1053
  });
1048
1054
 
1049
1055
  return {
@@ -1124,7 +1130,8 @@ export async function signMetaTxWithdrawFunds(
1124
1130
  verifyingContractAddress: args.metaTxHandlerAddress,
1125
1131
  customSignatureType,
1126
1132
  primaryType: "MetaTxFund",
1127
- message
1133
+ message,
1134
+ returnTypedDataToSign: false
1128
1135
  });
1129
1136
 
1130
1137
  return {
@@ -1213,7 +1220,8 @@ function makeExchangeMetaTxSigner(
1213
1220
  verifyingContractAddress: args.metaTxHandlerAddress,
1214
1221
  customSignatureType,
1215
1222
  primaryType: "MetaTxExchange",
1216
- message
1223
+ message,
1224
+ returnTypedDataToSign: false
1217
1225
  });
1218
1226
 
1219
1227
  return {
@@ -86,7 +86,8 @@ export async function signNativeMetaTx(
86
86
  customSignatureType,
87
87
  customDomainData: args.domain,
88
88
  primaryType: "MetaTransaction",
89
- message
89
+ message,
90
+ returnTypedDataToSign: false
90
91
  });
91
92
 
92
93
  return {
@@ -2,7 +2,7 @@ import { Web3LibAdapter } from "@bosonprotocol/common";
2
2
  import { isHexString, hexZeroPad } from "@ethersproject/bytes";
3
3
  import { BigNumber } from "@ethersproject/bignumber";
4
4
 
5
- type SignatureArgs = {
5
+ type SignatureArgs<T extends boolean> = {
6
6
  web3Lib: Web3LibAdapter;
7
7
  verifyingContractAddress: string;
8
8
  chainId: number;
@@ -10,9 +10,35 @@ type SignatureArgs = {
10
10
  customDomainData?: Record<string, unknown>;
11
11
  primaryType: string;
12
12
  message: Record<string, unknown>;
13
+ returnTypedDataToSign: T;
13
14
  };
14
15
 
15
- export async function prepareDataSignatureParameters(args: SignatureArgs) {
16
+ export type StructuredData = {
17
+ types: {
18
+ EIP712Domain: {
19
+ name: string;
20
+ type: string;
21
+ }[];
22
+ };
23
+ domain: {
24
+ name: string;
25
+ version: string;
26
+ verifyingContract: string;
27
+ salt: string;
28
+ };
29
+ primaryType: string;
30
+ message: Record<string, unknown>;
31
+ };
32
+
33
+ export async function prepareDataSignatureParameters(
34
+ args: SignatureArgs<true>
35
+ ): Promise<StructuredData>;
36
+ export async function prepareDataSignatureParameters(
37
+ args: SignatureArgs<false>
38
+ ): Promise<ReturnType<typeof getSignatureParameters>>;
39
+ export async function prepareDataSignatureParameters(
40
+ args: SignatureArgs<boolean>
41
+ ): Promise<StructuredData | ReturnType<typeof getSignatureParameters>> {
16
42
  const domainType = [
17
43
  { name: "name", type: "string" },
18
44
  { name: "version", type: "string" },
@@ -36,15 +62,25 @@ export async function prepareDataSignatureParameters(args: SignatureArgs) {
36
62
  const signatureTypes = {
37
63
  EIP712Domain: domainType,
38
64
  ...args.customSignatureType
65
+ } satisfies {
66
+ EIP712Domain: {
67
+ name: string;
68
+ type: string;
69
+ }[];
39
70
  };
40
71
 
41
- const dataToSign = JSON.stringify({
72
+ const structuredDataToSign = {
42
73
  types: signatureTypes,
43
74
  domain: domainData,
44
75
  primaryType: args.primaryType,
45
76
  message: args.message
46
- });
77
+ } satisfies StructuredData;
78
+
79
+ if (args.returnTypedDataToSign) {
80
+ return structuredDataToSign; // Return the raw EIP-712 data
81
+ }
47
82
 
83
+ const dataToSign = JSON.stringify(structuredDataToSign);
48
84
  const signerAddress = await args.web3Lib.getSignerAddress();
49
85
  const signature = await args.web3Lib.send("eth_signTypedData_v4", [
50
86
  signerAddress,
@@ -54,7 +90,12 @@ export async function prepareDataSignatureParameters(args: SignatureArgs) {
54
90
  return getSignatureParameters(signature);
55
91
  }
56
92
 
57
- export function getSignatureParameters(signature: string) {
93
+ export function getSignatureParameters(signature: string): {
94
+ r: string;
95
+ s: string;
96
+ v: number;
97
+ signature: string;
98
+ } {
58
99
  if (!isHexString(signature)) {
59
100
  throw new Error(`Value "${signature}" is not a valid hex string`);
60
101
  }