@lifi/sdk 1.7.2 → 2.0.0-beta.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/Lifi.js +97 -85
- package/dist/allowance/checkAllowance.js +12 -21
- package/dist/allowance/tokenApproval.js +20 -29
- package/dist/allowance/utils.js +12 -24
- package/dist/balance/checkBalance.js +5 -14
- package/dist/balance/getTokenBalance.js +12 -21
- package/dist/balance/index.d.ts +11 -0
- package/dist/balance/index.js +8 -0
- package/dist/balance/utils.d.ts +1 -0
- package/dist/balance/utils.js +36 -38
- package/dist/cjs/Lifi.js +97 -85
- package/dist/cjs/allowance/checkAllowance.js +12 -21
- package/dist/cjs/allowance/tokenApproval.js +20 -29
- package/dist/cjs/allowance/utils.js +12 -24
- package/dist/cjs/balance/checkBalance.js +5 -14
- package/dist/cjs/balance/getTokenBalance.js +12 -21
- package/dist/cjs/balance/index.d.ts +11 -0
- package/dist/cjs/balance/index.js +8 -0
- package/dist/cjs/balance/utils.d.ts +1 -0
- package/dist/cjs/balance/utils.js +39 -39
- package/dist/cjs/connectors.js +17 -25
- package/dist/cjs/execution/ExecutionManager.js +27 -33
- package/dist/cjs/execution/StatusManager.js +13 -13
- package/dist/cjs/execution/StepExecutor.js +8 -14
- package/dist/cjs/execution/stepComparison.js +4 -14
- package/dist/cjs/execution/switchChain.js +5 -14
- package/dist/cjs/execution/utils.js +43 -50
- package/dist/cjs/helpers.d.ts +12 -1
- package/dist/cjs/helpers.js +68 -19
- package/dist/cjs/services/ApiService.d.ts +10 -9
- package/dist/cjs/services/ApiService.js +190 -152
- package/dist/cjs/services/ApiService.unit.handlers.d.ts +1 -0
- package/dist/cjs/services/ApiService.unit.handlers.js +50 -0
- package/dist/cjs/services/ChainsService.js +16 -31
- package/dist/cjs/services/ConfigService.js +6 -16
- package/dist/cjs/typeguards.js +1 -1
- package/dist/cjs/types/internal.types.d.ts +4 -1
- package/dist/cjs/utils/errors.d.ts +5 -0
- package/dist/cjs/utils/errors.js +14 -1
- package/dist/cjs/utils/multicall.js +6 -15
- package/dist/cjs/utils/parseError.d.ts +2 -2
- package/dist/cjs/utils/parseError.js +36 -38
- package/dist/cjs/utils/preRestart.js +5 -7
- package/dist/cjs/utils/utils.d.ts +0 -1
- package/dist/cjs/utils/utils.js +21 -28
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/connectors.js +15 -23
- package/dist/execution/ExecutionManager.js +27 -33
- package/dist/execution/StatusManager.js +11 -11
- package/dist/execution/StepExecutor.js +8 -14
- package/dist/execution/stepComparison.js +4 -14
- package/dist/execution/switchChain.js +5 -14
- package/dist/execution/utils.js +43 -50
- package/dist/helpers.d.ts +12 -1
- package/dist/helpers.js +65 -18
- package/dist/services/ApiService.d.ts +10 -9
- package/dist/services/ApiService.js +190 -152
- package/dist/services/ApiService.unit.handlers.d.ts +1 -0
- package/dist/services/ApiService.unit.handlers.js +44 -0
- package/dist/services/ChainsService.js +16 -31
- package/dist/services/ConfigService.js +6 -16
- package/dist/typeguards.js +1 -1
- package/dist/types/internal.types.d.ts +4 -1
- package/dist/utils/errors.d.ts +5 -0
- package/dist/utils/errors.js +12 -0
- package/dist/utils/multicall.js +6 -15
- package/dist/utils/parseError.d.ts +2 -2
- package/dist/utils/parseError.js +36 -38
- package/dist/utils/preRestart.js +5 -7
- package/dist/utils/utils.d.ts +0 -1
- package/dist/utils/utils.js +20 -26
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +22 -24
- package/CHANGELOG.md +0 -492
package/dist/allowance/utils.js
CHANGED
|
@@ -1,40 +1,31 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import BigNumber from 'bignumber.js';
|
|
11
2
|
import { Contract } from 'ethers';
|
|
12
3
|
import ChainsService from '../services/ChainsService';
|
|
13
4
|
import { ERC20_ABI } from '../types';
|
|
14
5
|
import { ServerError } from '../utils/errors';
|
|
15
6
|
import { fetchDataUsingMulticall } from '../utils/multicall';
|
|
16
|
-
export const getApproved = (signer, tokenAddress, contractAddress) =>
|
|
17
|
-
const signerAddress =
|
|
7
|
+
export const getApproved = async (signer, tokenAddress, contractAddress) => {
|
|
8
|
+
const signerAddress = await signer.getAddress();
|
|
18
9
|
const erc20 = new Contract(tokenAddress, ERC20_ABI, signer);
|
|
19
10
|
try {
|
|
20
|
-
const approved =
|
|
11
|
+
const approved = await erc20.allowance(signerAddress, contractAddress);
|
|
21
12
|
return new BigNumber(approved.toString());
|
|
22
13
|
}
|
|
23
14
|
catch (e) {
|
|
24
15
|
return new BigNumber(0);
|
|
25
16
|
}
|
|
26
|
-
}
|
|
17
|
+
};
|
|
27
18
|
export const setApproval = (signer, tokenAddress, contractAddress, amount) => {
|
|
28
19
|
const erc20 = new Contract(tokenAddress, ERC20_ABI, signer);
|
|
29
20
|
return erc20.approve(contractAddress, amount);
|
|
30
21
|
};
|
|
31
|
-
export const getAllowanceViaMulticall = (signer, chainId, tokenData) =>
|
|
22
|
+
export const getAllowanceViaMulticall = async (signer, chainId, tokenData) => {
|
|
32
23
|
const chainsService = ChainsService.getInstance();
|
|
33
|
-
const chain =
|
|
24
|
+
const chain = await chainsService.getChainById(chainId);
|
|
34
25
|
if (!chain.multicallAddress) {
|
|
35
26
|
throw new ServerError(`No multicall address configured for chainId ${chainId}.`);
|
|
36
27
|
}
|
|
37
|
-
const ownerAddress =
|
|
28
|
+
const ownerAddress = await signer.getAddress();
|
|
38
29
|
const calls = [];
|
|
39
30
|
tokenData.map(({ token, approvalAddress }) => {
|
|
40
31
|
calls.push({
|
|
@@ -43,22 +34,19 @@ export const getAllowanceViaMulticall = (signer, chainId, tokenData) => __awaite
|
|
|
43
34
|
params: [ownerAddress, approvalAddress],
|
|
44
35
|
});
|
|
45
36
|
});
|
|
46
|
-
const result =
|
|
37
|
+
const result = await fetchDataUsingMulticall(calls, ERC20_ABI, chainId, chain.multicallAddress);
|
|
47
38
|
if (!result.length) {
|
|
48
39
|
throw new ServerError(`Couldn't load allowance from chainId ${chainId} using multicall.`);
|
|
49
40
|
}
|
|
50
|
-
const parsedResult = result.map(({ data }) => {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
approvalAmount: (_a = data) !== null && _a !== void 0 ? _a : new BigNumber(0),
|
|
54
|
-
});
|
|
55
|
-
});
|
|
41
|
+
const parsedResult = result.map(({ data }) => ({
|
|
42
|
+
approvalAmount: data ?? new BigNumber(0),
|
|
43
|
+
}));
|
|
56
44
|
return tokenData.map(({ token, approvalAddress }, i) => ({
|
|
57
45
|
token,
|
|
58
46
|
approvalAddress,
|
|
59
47
|
approvedAmount: parsedResult[i].approvalAmount,
|
|
60
48
|
}));
|
|
61
|
-
}
|
|
49
|
+
};
|
|
62
50
|
export const groupByChain = (tokenDataList) => {
|
|
63
51
|
// group by chain
|
|
64
52
|
const tokenDataByChain = {};
|
|
@@ -1,26 +1,17 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import BigNumber from 'bignumber.js';
|
|
11
2
|
import { BalanceError } from '../utils/errors';
|
|
12
3
|
import { getTokenBalance } from './getTokenBalance';
|
|
13
|
-
export const checkBalance = (signer, step, depth = 0) =>
|
|
14
|
-
const tokenAmount =
|
|
4
|
+
export const checkBalance = async (signer, step, depth = 0) => {
|
|
5
|
+
const tokenAmount = await getTokenBalance(await signer.getAddress(), step.action.fromToken);
|
|
15
6
|
if (tokenAmount) {
|
|
16
7
|
const currentBalance = new BigNumber(tokenAmount.amount).shiftedBy(tokenAmount.decimals);
|
|
17
8
|
const neededBalance = new BigNumber(step.action.fromAmount);
|
|
18
9
|
if (currentBalance.lt(neededBalance)) {
|
|
19
10
|
if (depth <= 3) {
|
|
20
|
-
|
|
11
|
+
await new Promise((resolve) => {
|
|
21
12
|
setTimeout(resolve, 200);
|
|
22
13
|
});
|
|
23
|
-
|
|
14
|
+
await checkBalance(signer, step, depth + 1);
|
|
24
15
|
}
|
|
25
16
|
else if (neededBalance.multipliedBy(1 - step.action.slippage).lte(currentBalance)) {
|
|
26
17
|
// adjust amount in slippage limits
|
|
@@ -44,4 +35,4 @@ export const checkBalance = (signer, step, depth = 0) => __awaiter(void 0, void
|
|
|
44
35
|
}
|
|
45
36
|
}
|
|
46
37
|
}
|
|
47
|
-
}
|
|
38
|
+
};
|
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import utils from './utils';
|
|
11
|
-
export const getTokenBalance = (walletAddress, token) =>
|
|
12
|
-
const tokenAmounts =
|
|
2
|
+
export const getTokenBalance = async (walletAddress, token) => {
|
|
3
|
+
const tokenAmounts = await getTokenBalances(walletAddress, [token]);
|
|
13
4
|
return tokenAmounts.length ? tokenAmounts[0] : null;
|
|
14
|
-
}
|
|
15
|
-
export const getTokenBalances = (walletAddress, tokens) =>
|
|
5
|
+
};
|
|
6
|
+
export const getTokenBalances = async (walletAddress, tokens) => {
|
|
16
7
|
// split by chain
|
|
17
8
|
const tokensByChain = {};
|
|
18
9
|
tokens.forEach((token) => {
|
|
@@ -21,16 +12,16 @@ export const getTokenBalances = (walletAddress, tokens) => __awaiter(void 0, voi
|
|
|
21
12
|
}
|
|
22
13
|
tokensByChain[token.chainId].push(token);
|
|
23
14
|
});
|
|
24
|
-
const tokenAmountsByChain =
|
|
15
|
+
const tokenAmountsByChain = await getTokenBalancesForChains(walletAddress, tokensByChain);
|
|
25
16
|
return Object.values(tokenAmountsByChain).flat();
|
|
26
|
-
}
|
|
27
|
-
export const getTokenBalancesForChains = (walletAddress, tokensByChain) =>
|
|
17
|
+
};
|
|
18
|
+
export const getTokenBalancesForChains = async (walletAddress, tokensByChain) => {
|
|
28
19
|
const tokenAmountsByChain = {};
|
|
29
|
-
const promises = Object.keys(tokensByChain).map((chainIdStr) =>
|
|
20
|
+
const promises = Object.keys(tokensByChain).map(async (chainIdStr) => {
|
|
30
21
|
const chainId = parseInt(chainIdStr);
|
|
31
|
-
const tokenAmounts =
|
|
22
|
+
const tokenAmounts = await utils.getBalances(walletAddress, tokensByChain[chainId]);
|
|
32
23
|
tokenAmountsByChain[chainId] = tokenAmounts;
|
|
33
|
-
})
|
|
34
|
-
|
|
24
|
+
});
|
|
25
|
+
await Promise.allSettled(promises);
|
|
35
26
|
return tokenAmountsByChain;
|
|
36
|
-
}
|
|
27
|
+
};
|
package/dist/balance/index.d.ts
CHANGED
|
@@ -1,2 +1,13 @@
|
|
|
1
1
|
export * from './checkBalance';
|
|
2
2
|
export * from './getTokenBalance';
|
|
3
|
+
declare const _default: {
|
|
4
|
+
checkBalance: (signer: import("ethers").Signer, step: import("@lifi/types").Step, depth?: number) => Promise<void>;
|
|
5
|
+
getTokenBalance: (walletAddress: string, token: import("@lifi/types").Token) => Promise<import("@lifi/types").TokenAmount | null>;
|
|
6
|
+
getTokenBalances: (walletAddress: string, tokens: import("@lifi/types").Token[]) => Promise<import("@lifi/types").TokenAmount[]>;
|
|
7
|
+
getTokenBalancesForChains: (walletAddress: string, tokensByChain: {
|
|
8
|
+
[chainId: number]: import("@lifi/types").Token[];
|
|
9
|
+
}) => Promise<{
|
|
10
|
+
[chainId: number]: import("@lifi/types").TokenAmount[];
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
export default _default;
|
package/dist/balance/index.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
export * from './checkBalance';
|
|
2
2
|
export * from './getTokenBalance';
|
|
3
|
+
import { checkBalance } from './checkBalance';
|
|
4
|
+
import { getTokenBalance, getTokenBalances, getTokenBalancesForChains, } from './getTokenBalance';
|
|
5
|
+
export default {
|
|
6
|
+
checkBalance,
|
|
7
|
+
getTokenBalance,
|
|
8
|
+
getTokenBalances,
|
|
9
|
+
getTokenBalancesForChains,
|
|
10
|
+
};
|
package/dist/balance/utils.d.ts
CHANGED
package/dist/balance/utils.js
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import BigNumber from 'bignumber.js';
|
|
11
2
|
import { ethers } from 'ethers';
|
|
12
3
|
import { getMulticallAddress, getRpcProvider } from '../connectors';
|
|
@@ -32,7 +23,7 @@ const balanceAbi = [
|
|
|
32
23
|
type: 'function',
|
|
33
24
|
},
|
|
34
25
|
];
|
|
35
|
-
const getBalances = (walletAddress, tokens) =>
|
|
26
|
+
export const getBalances = async (walletAddress, tokens) => {
|
|
36
27
|
if (tokens.length === 0) {
|
|
37
28
|
return [];
|
|
38
29
|
}
|
|
@@ -44,23 +35,23 @@ const getBalances = (walletAddress, tokens) => __awaiter(void 0, void 0, void 0,
|
|
|
44
35
|
return [];
|
|
45
36
|
}
|
|
46
37
|
});
|
|
47
|
-
if ((
|
|
38
|
+
if ((await getMulticallAddress(chainId)) && tokens.length > 1) {
|
|
48
39
|
return getBalancesFromProviderUsingMulticall(walletAddress, tokens);
|
|
49
40
|
}
|
|
50
41
|
else {
|
|
51
42
|
return getBalancesFromProvider(walletAddress, tokens);
|
|
52
43
|
}
|
|
53
|
-
}
|
|
54
|
-
const getBalancesFromProviderUsingMulticall = (walletAddress, tokens) =>
|
|
44
|
+
};
|
|
45
|
+
const getBalancesFromProviderUsingMulticall = async (walletAddress, tokens) => {
|
|
55
46
|
// Configuration
|
|
56
47
|
const { chainId } = tokens[0];
|
|
57
|
-
const multicallAddress =
|
|
48
|
+
const multicallAddress = await getMulticallAddress(chainId);
|
|
58
49
|
if (!multicallAddress) {
|
|
59
50
|
throw new Error('No multicallAddress found for the given chain.');
|
|
60
51
|
}
|
|
61
52
|
return executeMulticall(walletAddress, tokens, multicallAddress, chainId);
|
|
62
|
-
}
|
|
63
|
-
const executeMulticall = (walletAddress, tokens, multicallAddress, chainId) =>
|
|
53
|
+
};
|
|
54
|
+
const executeMulticall = async (walletAddress, tokens, multicallAddress, chainId) => {
|
|
64
55
|
// Collect calls we want to make
|
|
65
56
|
const calls = [];
|
|
66
57
|
tokens.map((token) => {
|
|
@@ -79,7 +70,7 @@ const executeMulticall = (walletAddress, tokens, multicallAddress, chainId) => _
|
|
|
79
70
|
});
|
|
80
71
|
}
|
|
81
72
|
});
|
|
82
|
-
const res =
|
|
73
|
+
const res = await fetchViaMulticall(calls, balanceAbi, chainId, multicallAddress);
|
|
83
74
|
if (!res.length) {
|
|
84
75
|
return [];
|
|
85
76
|
}
|
|
@@ -87,24 +78,28 @@ const executeMulticall = (walletAddress, tokens, multicallAddress, chainId) => _
|
|
|
87
78
|
const amount = new BigNumber(res[i].amount.toString() || '0')
|
|
88
79
|
.shiftedBy(-token.decimals)
|
|
89
80
|
.toFixed();
|
|
90
|
-
return
|
|
81
|
+
return {
|
|
82
|
+
...token,
|
|
83
|
+
amount: amount || '0',
|
|
84
|
+
blockNumber: res[i].blockNumber,
|
|
85
|
+
};
|
|
91
86
|
});
|
|
92
|
-
}
|
|
93
|
-
const fetchViaMulticall = (calls, abi, chainId, multicallAddress) =>
|
|
94
|
-
const result =
|
|
87
|
+
};
|
|
88
|
+
const fetchViaMulticall = async (calls, abi, chainId, multicallAddress) => {
|
|
89
|
+
const result = await fetchDataUsingMulticall(calls, abi, chainId, multicallAddress);
|
|
95
90
|
return result.map(({ data, blockNumber }) => ({
|
|
96
91
|
amount: data ? data : new BigNumber(0),
|
|
97
92
|
blockNumber,
|
|
98
93
|
}));
|
|
99
|
-
}
|
|
100
|
-
const getBalancesFromProvider = (walletAddress, tokens) =>
|
|
94
|
+
};
|
|
95
|
+
const getBalancesFromProvider = async (walletAddress, tokens) => {
|
|
101
96
|
const chainId = tokens[0].chainId;
|
|
102
|
-
const rpc =
|
|
103
|
-
const tokenAmountPromises = tokens.map((token) =>
|
|
97
|
+
const rpc = await getRpcProvider(chainId);
|
|
98
|
+
const tokenAmountPromises = tokens.map(async (token) => {
|
|
104
99
|
let amount = '0';
|
|
105
100
|
let blockNumber;
|
|
106
101
|
try {
|
|
107
|
-
const balance =
|
|
102
|
+
const balance = await getBalanceFromProvider(walletAddress, token.address, chainId, rpc);
|
|
108
103
|
amount = new BigNumber(balance.amount.toString())
|
|
109
104
|
.shiftedBy(-token.decimals)
|
|
110
105
|
.toString();
|
|
@@ -114,20 +109,23 @@ const getBalancesFromProvider = (walletAddress, tokens) => __awaiter(void 0, voi
|
|
|
114
109
|
// eslint-disable-next-line no-console
|
|
115
110
|
console.warn(e);
|
|
116
111
|
}
|
|
117
|
-
return
|
|
118
|
-
|
|
119
|
-
|
|
112
|
+
return {
|
|
113
|
+
...token,
|
|
114
|
+
amount,
|
|
115
|
+
blockNumber,
|
|
116
|
+
};
|
|
117
|
+
});
|
|
120
118
|
return Promise.all(tokenAmountPromises);
|
|
121
|
-
}
|
|
122
|
-
const getBalanceFromProvider = (walletAddress, assetId, chainId, provider) =>
|
|
123
|
-
const blockNumber =
|
|
119
|
+
};
|
|
120
|
+
const getBalanceFromProvider = async (walletAddress, assetId, chainId, provider) => {
|
|
121
|
+
const blockNumber = await getCurrentBlockNumber(chainId);
|
|
124
122
|
let balance;
|
|
125
123
|
if (isZeroAddress(assetId)) {
|
|
126
|
-
balance =
|
|
124
|
+
balance = await provider.getBalance(walletAddress, blockNumber);
|
|
127
125
|
}
|
|
128
126
|
else {
|
|
129
127
|
const contract = new ethers.Contract(assetId, ['function balanceOf(address owner) view returns (uint256)'], provider);
|
|
130
|
-
balance =
|
|
128
|
+
balance = await contract.balanceOf(walletAddress, {
|
|
131
129
|
blockTag: blockNumber,
|
|
132
130
|
});
|
|
133
131
|
}
|
|
@@ -135,11 +133,11 @@ const getBalanceFromProvider = (walletAddress, assetId, chainId, provider) => __
|
|
|
135
133
|
amount: balance,
|
|
136
134
|
blockNumber,
|
|
137
135
|
};
|
|
138
|
-
}
|
|
139
|
-
const getCurrentBlockNumber = (chainId) =>
|
|
140
|
-
const rpc =
|
|
136
|
+
};
|
|
137
|
+
const getCurrentBlockNumber = async (chainId) => {
|
|
138
|
+
const rpc = await getRpcProvider(chainId);
|
|
141
139
|
return rpc.getBlockNumber();
|
|
142
|
-
}
|
|
140
|
+
};
|
|
143
141
|
export default {
|
|
144
142
|
getBalances,
|
|
145
143
|
};
|