@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.
- package/dist/cjs/disputes/handler.d.ts +11 -6
- package/dist/cjs/disputes/handler.d.ts.map +1 -1
- package/dist/cjs/disputes/handler.js +8 -2
- package/dist/cjs/disputes/handler.js.map +1 -1
- package/dist/cjs/disputes/mixin.d.ts +8 -6
- package/dist/cjs/disputes/mixin.d.ts.map +1 -1
- package/dist/cjs/disputes/mixin.js +19 -8
- package/dist/cjs/disputes/mixin.js.map +1 -1
- package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/meta-tx/handler.js +8 -8
- package/dist/cjs/meta-tx/handler.js.map +1 -1
- package/dist/cjs/native-meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/native-meta-tx/handler.js +1 -1
- package/dist/cjs/native-meta-tx/handler.js.map +1 -1
- package/dist/cjs/utils/signature.d.ts +20 -7
- package/dist/cjs/utils/signature.d.ts.map +1 -1
- package/dist/cjs/utils/signature.js +6 -2
- package/dist/cjs/utils/signature.js.map +1 -1
- package/dist/esm/disputes/handler.d.ts +11 -6
- package/dist/esm/disputes/handler.d.ts.map +1 -1
- package/dist/esm/disputes/handler.js +14 -2
- package/dist/esm/disputes/handler.js.map +1 -1
- package/dist/esm/disputes/mixin.d.ts +8 -6
- package/dist/esm/disputes/mixin.d.ts.map +1 -1
- package/dist/esm/disputes/mixin.js +16 -10
- package/dist/esm/disputes/mixin.js.map +1 -1
- package/dist/esm/meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/meta-tx/handler.js +16 -8
- package/dist/esm/meta-tx/handler.js.map +1 -1
- package/dist/esm/native-meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/native-meta-tx/handler.js +2 -1
- package/dist/esm/native-meta-tx/handler.js.map +1 -1
- package/dist/esm/utils/signature.d.ts +20 -7
- package/dist/esm/utils/signature.d.ts.map +1 -1
- package/dist/esm/utils/signature.js +6 -2
- package/dist/esm/utils/signature.js.map +1 -1
- package/package.json +3 -3
- package/src/disputes/handler.ts +37 -4
- package/src/disputes/mixin.ts +28 -4
- package/src/meta-tx/handler.ts +16 -8
- package/src/native-meta-tx/handler.ts +2 -1
- package/src/utils/signature.ts +46 -5
package/src/disputes/handler.ts
CHANGED
|
@@ -18,7 +18,11 @@ import {
|
|
|
18
18
|
encodeResolveDispute,
|
|
19
19
|
encodeRetractDispute
|
|
20
20
|
} from "./interface";
|
|
21
|
-
import {
|
|
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
|
-
|
|
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
|
}
|
package/src/disputes/mixin.ts
CHANGED
|
@@ -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
|
-
|
|
465
|
-
|
|
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
|
}
|
package/src/meta-tx/handler.ts
CHANGED
|
@@ -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 {
|
package/src/utils/signature.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
}
|