@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.
- package/dist/cjs/core-sdk.d.ts +3 -3
- package/dist/cjs/core-sdk.d.ts.map +1 -1
- package/dist/cjs/core-sdk.js +3 -23
- package/dist/cjs/core-sdk.js.map +1 -1
- package/dist/cjs/disputes/handler.d.ts +11 -0
- package/dist/cjs/disputes/handler.d.ts.map +1 -1
- package/dist/cjs/disputes/handler.js +25 -1
- package/dist/cjs/disputes/handler.js.map +1 -1
- package/dist/cjs/meta-tx/handler.d.ts +0 -14
- package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/meta-tx/handler.js +14 -60
- package/dist/cjs/meta-tx/handler.js.map +1 -1
- package/dist/cjs/utils/signature.d.ts +21 -0
- package/dist/cjs/utils/signature.d.ts.map +1 -0
- package/dist/cjs/utils/signature.js +60 -0
- package/dist/cjs/utils/signature.js.map +1 -0
- package/dist/esm/core-sdk.d.ts +3 -3
- package/dist/esm/core-sdk.d.ts.map +1 -1
- package/dist/esm/core-sdk.js +5 -20
- package/dist/esm/core-sdk.js.map +1 -1
- package/dist/esm/disputes/handler.d.ts +11 -0
- package/dist/esm/disputes/handler.d.ts.map +1 -1
- package/dist/esm/disputes/handler.js +21 -0
- package/dist/esm/disputes/handler.js.map +1 -1
- package/dist/esm/meta-tx/handler.d.ts +0 -14
- package/dist/esm/meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/meta-tx/handler.js +19 -58
- package/dist/esm/meta-tx/handler.js.map +1 -1
- package/dist/esm/utils/signature.d.ts +21 -0
- package/dist/esm/utils/signature.d.ts.map +1 -0
- package/dist/esm/utils/signature.js +47 -0
- package/dist/esm/utils/signature.js.map +1 -0
- package/package.json +3 -3
- package/src/core-sdk.ts +7 -25
- package/src/disputes/handler.ts +31 -0
- package/src/meta-tx/handler.ts +20 -74
- package/src/utils/signature.ts +65 -0
package/src/disputes/handler.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/meta-tx/handler.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Web3LibAdapter } from "@bosonprotocol/common";
|
|
2
|
-
import {
|
|
3
|
-
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
|
2
|
+
import { BigNumberish } from "@ethersproject/bignumber";
|
|
4
3
|
|
|
5
4
|
import { bosonExchangeHandlerIface } from "../exchanges/interface";
|
|
6
|
-
import {
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
+
}
|