@gearbox-protocol/sdk 2.0.4 → 2.1.1
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/contracts/TokensData.sol +37 -3
- package/package.json +1 -1
package/contracts/TokensData.sol
CHANGED
|
@@ -5,6 +5,10 @@ pragma solidity ^0.8.17;
|
|
|
5
5
|
|
|
6
6
|
import {Tokens, TokenType} from "./Tokens.sol";
|
|
7
7
|
|
|
8
|
+
interface IERC20Check {
|
|
9
|
+
function totalSupply() external view returns (uint256);
|
|
10
|
+
}
|
|
11
|
+
|
|
8
12
|
struct TokenData {
|
|
9
13
|
Tokens id;
|
|
10
14
|
address addr;
|
|
@@ -13,11 +17,18 @@ struct TokenData {
|
|
|
13
17
|
}
|
|
14
18
|
|
|
15
19
|
contract TokensDataLive {
|
|
16
|
-
uint16 immutable networkId;
|
|
20
|
+
uint16 public immutable networkId;
|
|
17
21
|
mapping(uint16 => TokenData[]) tokenDataByNetwork;
|
|
22
|
+
mapping(uint16 => address) usdcByNetwork;
|
|
23
|
+
|
|
24
|
+
uint16[] public connectedNetworks;
|
|
18
25
|
|
|
19
|
-
constructor(
|
|
20
|
-
|
|
26
|
+
constructor() {
|
|
27
|
+
// ---------------- Networks ---------------------
|
|
28
|
+
connectedNetworks.push(1);
|
|
29
|
+
connectedNetworks.push(42161);
|
|
30
|
+
|
|
31
|
+
// ---------------- TokensData ---------------------
|
|
21
32
|
tokenDataByNetwork[1].push(
|
|
22
33
|
TokenData({
|
|
23
34
|
id: Tokens._1INCH,
|
|
@@ -98,6 +109,7 @@ contract TokensDataLive {
|
|
|
98
109
|
tokenType: TokenType.NORMAL_TOKEN
|
|
99
110
|
})
|
|
100
111
|
);
|
|
112
|
+
usdcByNetwork[1] = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
|
|
101
113
|
tokenDataByNetwork[1].push(
|
|
102
114
|
TokenData({
|
|
103
115
|
id: Tokens.USDC,
|
|
@@ -798,6 +810,7 @@ contract TokensDataLive {
|
|
|
798
810
|
tokenType: TokenType.NORMAL_TOKEN
|
|
799
811
|
})
|
|
800
812
|
);
|
|
813
|
+
usdcByNetwork[42161] = 0xaf88d065e77c8cC2239327C5EDb3A432268e5831;
|
|
801
814
|
tokenDataByNetwork[42161].push(
|
|
802
815
|
TokenData({
|
|
803
816
|
id: Tokens.USDC,
|
|
@@ -1002,9 +1015,30 @@ contract TokensDataLive {
|
|
|
1002
1015
|
tokenType: TokenType.AAVE_V2_A_TOKEN
|
|
1003
1016
|
})
|
|
1004
1017
|
);
|
|
1018
|
+
|
|
1019
|
+
networkId = getNetworkId();
|
|
1005
1020
|
}
|
|
1006
1021
|
|
|
1007
1022
|
function getTokenData() external view returns (TokenData[] memory) {
|
|
1008
1023
|
return tokenDataByNetwork[networkId];
|
|
1009
1024
|
}
|
|
1025
|
+
|
|
1026
|
+
function getNetworkId() internal view returns (uint16) {
|
|
1027
|
+
uint256 len = connectedNetworks.length;
|
|
1028
|
+
for (uint256 i = 0; i < len; i++) {
|
|
1029
|
+
if (checkNetworkId(connectedNetworks[i])) {
|
|
1030
|
+
return connectedNetworks[i];
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
revert("No network found");
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
function checkNetworkId(uint16 _networkId) internal view returns (bool) {
|
|
1038
|
+
try IERC20Check(usdcByNetwork[_networkId]).totalSupply() returns (uint256) {
|
|
1039
|
+
return true;
|
|
1040
|
+
} catch {
|
|
1041
|
+
return false;
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1010
1044
|
}
|