@bosonprotocol/core-sdk 1.22.0 → 1.23.0-alpha.0
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 +18 -0
- package/dist/cjs/core-sdk.d.ts.map +1 -1
- package/dist/cjs/core-sdk.js +30 -0
- package/dist/cjs/core-sdk.js.map +1 -1
- package/dist/cjs/meta-tx/handler.d.ts +7 -0
- package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/meta-tx/handler.js +13 -1
- 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 +28 -9
- package/dist/cjs/native-meta-tx/handler.js.map +1 -1
- package/dist/cjs/native-meta-tx/interface.d.ts +1 -0
- package/dist/cjs/native-meta-tx/interface.d.ts.map +1 -1
- package/dist/cjs/native-meta-tx/interface.js +24 -1
- package/dist/cjs/native-meta-tx/interface.js.map +1 -1
- package/dist/cjs/native-meta-tx/tokenSpecifics.d.ts +7 -0
- package/dist/cjs/native-meta-tx/tokenSpecifics.d.ts.map +1 -0
- package/dist/cjs/native-meta-tx/tokenSpecifics.js +14 -0
- package/dist/cjs/native-meta-tx/tokenSpecifics.js.map +1 -0
- package/dist/esm/core-sdk.d.ts +18 -0
- package/dist/esm/core-sdk.d.ts.map +1 -1
- package/dist/esm/core-sdk.js +39 -0
- package/dist/esm/core-sdk.js.map +1 -1
- package/dist/esm/meta-tx/handler.d.ts +7 -0
- package/dist/esm/meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/meta-tx/handler.js +14 -0
- 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 +27 -10
- package/dist/esm/native-meta-tx/handler.js.map +1 -1
- package/dist/esm/native-meta-tx/interface.d.ts +1 -0
- package/dist/esm/native-meta-tx/interface.d.ts.map +1 -1
- package/dist/esm/native-meta-tx/interface.js +23 -0
- package/dist/esm/native-meta-tx/interface.js.map +1 -1
- package/dist/esm/native-meta-tx/tokenSpecifics.d.ts +7 -0
- package/dist/esm/native-meta-tx/tokenSpecifics.d.ts.map +1 -0
- package/dist/esm/native-meta-tx/tokenSpecifics.js +11 -0
- package/dist/esm/native-meta-tx/tokenSpecifics.js.map +1 -0
- package/package.json +2 -2
- package/src/core-sdk.ts +57 -0
- package/src/meta-tx/handler.ts +31 -0
- package/src/native-meta-tx/handler.ts +40 -14
- package/src/native-meta-tx/interface.ts +25 -0
- package/src/native-meta-tx/tokenSpecifics.ts +14 -0
package/src/core-sdk.ts
CHANGED
|
@@ -1636,6 +1636,25 @@ export class CoreSDK {
|
|
|
1636
1636
|
});
|
|
1637
1637
|
}
|
|
1638
1638
|
|
|
1639
|
+
/**
|
|
1640
|
+
* Encodes and signs a meta transaction for `completeExchangeBatch` that can be relayed.
|
|
1641
|
+
* @param args - Meta transaction args.
|
|
1642
|
+
* @returns Signature.
|
|
1643
|
+
*/
|
|
1644
|
+
public async signMetaTxCompleteExchange(
|
|
1645
|
+
args: Omit<
|
|
1646
|
+
Parameters<typeof metaTx.handler.signMetaTxCompleteExchange>[0],
|
|
1647
|
+
"web3Lib" | "metaTxHandlerAddress" | "chainId"
|
|
1648
|
+
>
|
|
1649
|
+
) {
|
|
1650
|
+
return metaTx.handler.signMetaTxCompleteExchange({
|
|
1651
|
+
web3Lib: this._web3Lib,
|
|
1652
|
+
metaTxHandlerAddress: this._protocolDiamond,
|
|
1653
|
+
chainId: this._chainId,
|
|
1654
|
+
...args
|
|
1655
|
+
});
|
|
1656
|
+
}
|
|
1657
|
+
|
|
1639
1658
|
/**
|
|
1640
1659
|
* Encodes and signs a meta transaction for `completeExchangeBatch` that can be relayed.
|
|
1641
1660
|
* @param args - Meta transaction args.
|
|
@@ -1731,6 +1750,25 @@ export class CoreSDK {
|
|
|
1731
1750
|
});
|
|
1732
1751
|
}
|
|
1733
1752
|
|
|
1753
|
+
/**
|
|
1754
|
+
* Encodes and signs a meta transaction for `revokeVoucher` that can be relayed.
|
|
1755
|
+
* @param args - Meta transaction args.
|
|
1756
|
+
* @returns Signature.
|
|
1757
|
+
*/
|
|
1758
|
+
public async signMetaTxRevokeVoucher(
|
|
1759
|
+
args: Omit<
|
|
1760
|
+
Parameters<typeof metaTx.handler.signMetaTxRevokeVoucher>[0],
|
|
1761
|
+
"web3Lib" | "metaTxHandlerAddress" | "chainId"
|
|
1762
|
+
>
|
|
1763
|
+
) {
|
|
1764
|
+
return metaTx.handler.signMetaTxRevokeVoucher({
|
|
1765
|
+
web3Lib: this._web3Lib,
|
|
1766
|
+
metaTxHandlerAddress: this._protocolDiamond,
|
|
1767
|
+
chainId: this._chainId,
|
|
1768
|
+
...args
|
|
1769
|
+
});
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1734
1772
|
/**
|
|
1735
1773
|
* Encodes and signs a meta transaction for `retractDispute` that can be relayed.
|
|
1736
1774
|
* @param args - Meta transaction args.
|
|
@@ -1807,6 +1845,25 @@ export class CoreSDK {
|
|
|
1807
1845
|
});
|
|
1808
1846
|
}
|
|
1809
1847
|
|
|
1848
|
+
/**
|
|
1849
|
+
* Encodes and signs a meta transaction for `extendDisputeTimeout` that can be relayed.
|
|
1850
|
+
* @param args - Meta transaction args.
|
|
1851
|
+
* @returns Signature.
|
|
1852
|
+
*/
|
|
1853
|
+
public async signMetaTxExtendDisputeTimeout(
|
|
1854
|
+
args: Omit<
|
|
1855
|
+
Parameters<typeof metaTx.handler.signMetaTxExtendDisputeTimeout>[0],
|
|
1856
|
+
"web3Lib" | "metaTxHandlerAddress" | "chainId"
|
|
1857
|
+
>
|
|
1858
|
+
) {
|
|
1859
|
+
return metaTx.handler.signMetaTxExtendDisputeTimeout({
|
|
1860
|
+
web3Lib: this._web3Lib,
|
|
1861
|
+
metaTxHandlerAddress: this._protocolDiamond,
|
|
1862
|
+
chainId: this._chainId,
|
|
1863
|
+
...args
|
|
1864
|
+
});
|
|
1865
|
+
}
|
|
1866
|
+
|
|
1810
1867
|
/**
|
|
1811
1868
|
* Encodes and signs a meta transaction for `withdrawFunds` that can be relayed.
|
|
1812
1869
|
* @param args - Meta transaction args.
|
package/src/meta-tx/handler.ts
CHANGED
|
@@ -215,6 +215,21 @@ export async function signMetaTxExpireVoucher(
|
|
|
215
215
|
});
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
+
export async function signMetaTxRevokeVoucher(
|
|
219
|
+
args: BaseMetaTxArgs & {
|
|
220
|
+
exchangeId: BigNumberish;
|
|
221
|
+
}
|
|
222
|
+
) {
|
|
223
|
+
return signMetaTx({
|
|
224
|
+
...args,
|
|
225
|
+
functionName: "revokeVoucher(uint256)",
|
|
226
|
+
functionSignature: bosonExchangeHandlerIface.encodeFunctionData(
|
|
227
|
+
"revokeVoucher",
|
|
228
|
+
[args.exchangeId]
|
|
229
|
+
)
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
|
|
218
233
|
export async function signMetaTxCreateGroup(
|
|
219
234
|
args: BaseMetaTxArgs & {
|
|
220
235
|
createGroupArgs: CreateGroupArgs;
|
|
@@ -431,6 +446,22 @@ export async function signMetaTxResolveDispute(
|
|
|
431
446
|
};
|
|
432
447
|
}
|
|
433
448
|
|
|
449
|
+
export async function signMetaTxExtendDisputeTimeout(
|
|
450
|
+
args: BaseMetaTxArgs & {
|
|
451
|
+
exchangeId: BigNumberish;
|
|
452
|
+
newTimeout: BigNumberish;
|
|
453
|
+
}
|
|
454
|
+
) {
|
|
455
|
+
return signMetaTx({
|
|
456
|
+
...args,
|
|
457
|
+
functionName: "extendDisputeTimeout(uint256,uint256)",
|
|
458
|
+
functionSignature: bosonDisputeHandlerIface.encodeFunctionData(
|
|
459
|
+
"extendDisputeTimeout",
|
|
460
|
+
[args.exchangeId, args.newTimeout]
|
|
461
|
+
)
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
|
|
434
465
|
export async function signMetaTxWithdrawFunds(
|
|
435
466
|
args: BaseMetaTxArgs & {
|
|
436
467
|
entityId: BigNumberish;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { tokenSpecifics } from "./tokenSpecifics";
|
|
1
2
|
import {
|
|
2
3
|
MetaTxConfig,
|
|
3
4
|
Web3LibAdapter,
|
|
@@ -8,7 +9,10 @@ import { BytesLike } from "@ethersproject/bytes";
|
|
|
8
9
|
import { Biconomy } from "../meta-tx/biconomy";
|
|
9
10
|
import { BaseMetaTxArgs, SignedMetaTx } from "../meta-tx/handler";
|
|
10
11
|
import { prepareDataSignatureParameters } from "../utils/signature";
|
|
11
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
nativeMetaTransactionsIface,
|
|
14
|
+
alternativeNonceIface
|
|
15
|
+
} from "./interface";
|
|
12
16
|
import { getName as getERC20Name } from "../erc20/handler";
|
|
13
17
|
import { erc20Iface } from "../erc20/interface";
|
|
14
18
|
|
|
@@ -19,18 +23,38 @@ export async function getNonce(args: {
|
|
|
19
23
|
user: string;
|
|
20
24
|
web3Lib: Web3LibAdapter;
|
|
21
25
|
}): Promise<string> {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
try {
|
|
27
|
+
const result = await args.web3Lib.call({
|
|
28
|
+
to: args.contractAddress,
|
|
29
|
+
data: nativeMetaTransactionsIface.encodeFunctionData("getNonce", [
|
|
30
|
+
args.user
|
|
31
|
+
])
|
|
32
|
+
});
|
|
33
|
+
const [nonce] = nativeMetaTransactionsIface.decodeFunctionResult(
|
|
34
|
+
"getNonce",
|
|
35
|
+
result
|
|
36
|
+
);
|
|
37
|
+
return String(nonce);
|
|
38
|
+
} catch (e) {
|
|
39
|
+
// Check if the error means the 'getNonce()' function does not exists in the contract
|
|
40
|
+
if (
|
|
41
|
+
(e.message as string)?.match(
|
|
42
|
+
/Transaction reverted without a reason string/
|
|
43
|
+
)
|
|
44
|
+
) {
|
|
45
|
+
// If so, call 'nonces()' instead (USDC case, for instance)
|
|
46
|
+
const result = await args.web3Lib.call({
|
|
47
|
+
to: args.contractAddress,
|
|
48
|
+
data: alternativeNonceIface.encodeFunctionData("nonces", [args.user])
|
|
49
|
+
});
|
|
50
|
+
const [nonce] = alternativeNonceIface.decodeFunctionResult(
|
|
51
|
+
"nonces",
|
|
52
|
+
result
|
|
53
|
+
);
|
|
54
|
+
return String(nonce);
|
|
55
|
+
}
|
|
56
|
+
throw e;
|
|
57
|
+
}
|
|
34
58
|
}
|
|
35
59
|
|
|
36
60
|
export async function signNativeMetaTx(
|
|
@@ -90,7 +114,9 @@ export async function signNativeMetaTxApproveExchangeToken(args: {
|
|
|
90
114
|
contractAddress: args.exchangeToken,
|
|
91
115
|
web3Lib: args.web3Lib
|
|
92
116
|
}),
|
|
93
|
-
version:
|
|
117
|
+
version:
|
|
118
|
+
tokenSpecifics[args.chainId]?.[args.exchangeToken]?.ERC712_VERSION ||
|
|
119
|
+
ERC712_VERSION
|
|
94
120
|
};
|
|
95
121
|
const nonce = await getNonce({
|
|
96
122
|
contractAddress: args.exchangeToken,
|
|
@@ -4,3 +4,28 @@ import { Interface } from "@ethersproject/abi";
|
|
|
4
4
|
export const nativeMetaTransactionsIface = new Interface(
|
|
5
5
|
abis.NativeMetaTransactionABI
|
|
6
6
|
);
|
|
7
|
+
|
|
8
|
+
const noncesAbi = [
|
|
9
|
+
{
|
|
10
|
+
inputs: [
|
|
11
|
+
{
|
|
12
|
+
internalType: "address",
|
|
13
|
+
name: "owner",
|
|
14
|
+
type: "address"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
name: "nonces",
|
|
18
|
+
outputs: [
|
|
19
|
+
{
|
|
20
|
+
internalType: "uint256",
|
|
21
|
+
name: "",
|
|
22
|
+
type: "uint256"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
stateMutability: "view",
|
|
26
|
+
type: "function"
|
|
27
|
+
}
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
// Some tokens (USDC) does not implement getNonces(), but nonces() instead
|
|
31
|
+
export const alternativeNonceIface = new Interface(noncesAbi);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type TokenSpecifics = {
|
|
2
|
+
ERC712_VERSION?: string;
|
|
3
|
+
};
|
|
4
|
+
|
|
5
|
+
/** Configuration items that are specific to some tokens on some chain */
|
|
6
|
+
export const tokenSpecifics: Record<number, Record<string, TokenSpecifics>> = {
|
|
7
|
+
80001: {
|
|
8
|
+
// MUMBAI
|
|
9
|
+
"0xe6b8a5CF854791412c1f6EFC7CAf629f5Df1c747": {
|
|
10
|
+
// USDC Token
|
|
11
|
+
ERC712_VERSION: "2" // On MUMBAI, ERC712_VERSION is different than on Polygon
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
};
|