@gearbox-protocol/sdk 2.0.4 → 2.1.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.
@@ -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(uint16 _networkId) {
20
- networkId = _networkId;
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
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "2.0.4",
3
+ "version": "2.1.0",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",