@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.
Files changed (44) hide show
  1. package/dist/cjs/core-sdk.d.ts +18 -0
  2. package/dist/cjs/core-sdk.d.ts.map +1 -1
  3. package/dist/cjs/core-sdk.js +30 -0
  4. package/dist/cjs/core-sdk.js.map +1 -1
  5. package/dist/cjs/meta-tx/handler.d.ts +7 -0
  6. package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
  7. package/dist/cjs/meta-tx/handler.js +13 -1
  8. package/dist/cjs/meta-tx/handler.js.map +1 -1
  9. package/dist/cjs/native-meta-tx/handler.d.ts.map +1 -1
  10. package/dist/cjs/native-meta-tx/handler.js +28 -9
  11. package/dist/cjs/native-meta-tx/handler.js.map +1 -1
  12. package/dist/cjs/native-meta-tx/interface.d.ts +1 -0
  13. package/dist/cjs/native-meta-tx/interface.d.ts.map +1 -1
  14. package/dist/cjs/native-meta-tx/interface.js +24 -1
  15. package/dist/cjs/native-meta-tx/interface.js.map +1 -1
  16. package/dist/cjs/native-meta-tx/tokenSpecifics.d.ts +7 -0
  17. package/dist/cjs/native-meta-tx/tokenSpecifics.d.ts.map +1 -0
  18. package/dist/cjs/native-meta-tx/tokenSpecifics.js +14 -0
  19. package/dist/cjs/native-meta-tx/tokenSpecifics.js.map +1 -0
  20. package/dist/esm/core-sdk.d.ts +18 -0
  21. package/dist/esm/core-sdk.d.ts.map +1 -1
  22. package/dist/esm/core-sdk.js +39 -0
  23. package/dist/esm/core-sdk.js.map +1 -1
  24. package/dist/esm/meta-tx/handler.d.ts +7 -0
  25. package/dist/esm/meta-tx/handler.d.ts.map +1 -1
  26. package/dist/esm/meta-tx/handler.js +14 -0
  27. package/dist/esm/meta-tx/handler.js.map +1 -1
  28. package/dist/esm/native-meta-tx/handler.d.ts.map +1 -1
  29. package/dist/esm/native-meta-tx/handler.js +27 -10
  30. package/dist/esm/native-meta-tx/handler.js.map +1 -1
  31. package/dist/esm/native-meta-tx/interface.d.ts +1 -0
  32. package/dist/esm/native-meta-tx/interface.d.ts.map +1 -1
  33. package/dist/esm/native-meta-tx/interface.js +23 -0
  34. package/dist/esm/native-meta-tx/interface.js.map +1 -1
  35. package/dist/esm/native-meta-tx/tokenSpecifics.d.ts +7 -0
  36. package/dist/esm/native-meta-tx/tokenSpecifics.d.ts.map +1 -0
  37. package/dist/esm/native-meta-tx/tokenSpecifics.js +11 -0
  38. package/dist/esm/native-meta-tx/tokenSpecifics.js.map +1 -0
  39. package/package.json +2 -2
  40. package/src/core-sdk.ts +57 -0
  41. package/src/meta-tx/handler.ts +31 -0
  42. package/src/native-meta-tx/handler.ts +40 -14
  43. package/src/native-meta-tx/interface.ts +25 -0
  44. 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.
@@ -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 { nativeMetaTransactionsIface } from "./interface";
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
- const result = await args.web3Lib.call({
23
- to: args.contractAddress,
24
- data: nativeMetaTransactionsIface.encodeFunctionData("getNonce", [
25
- args.user
26
- ])
27
- });
28
-
29
- const [nonce] = nativeMetaTransactionsIface.decodeFunctionResult(
30
- "getNonce",
31
- result
32
- );
33
- return String(nonce);
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: ERC712_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
+ };