@gearbox-protocol/sdk 1.24.0 → 1.24.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.
@@ -0,0 +1,290 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ // Gearbox. Generalized leverage protocol that allows to take leverage and then use it across other DeFi protocols and platforms in a composable way.
3
+ // (c) Gearbox Holdings, 2022
4
+ pragma solidity ^0.8.17;
5
+
6
+ import {Tokens} from "./Tokens.sol";
7
+ import {Contracts} from "./SupportedContracts.sol";
8
+ import {AdapterType} from "./AdapterType.sol";
9
+
10
+ struct SimpleAdapter {
11
+ Contracts targetContract;
12
+ AdapterType adapterType;
13
+ }
14
+
15
+ struct CurveAdapter {
16
+ Contracts targetContract;
17
+ AdapterType adapterType;
18
+ Tokens lpToken;
19
+ Contracts basePool;
20
+ }
21
+
22
+ struct CurveStETHAdapter {
23
+ Contracts curveETHGateway;
24
+ AdapterType adapterType;
25
+ Tokens lpToken;
26
+ }
27
+
28
+ struct CurveWrapper {
29
+ Contracts targetContract;
30
+ AdapterType adapterType;
31
+ Tokens lpToken;
32
+ uint256 nCoins;
33
+ }
34
+
35
+ struct ConvexBasePoolAdapter {
36
+ Contracts targetContract;
37
+ AdapterType adapterType;
38
+ Tokens stakedToken;
39
+ }
40
+
41
+ contract AdapterData {
42
+ SimpleAdapter[] simpleAdapters;
43
+ CurveAdapter[] curveAdapters;
44
+ CurveStETHAdapter curveStEthAdapter;
45
+ CurveWrapper[] curveWrappers;
46
+ ConvexBasePoolAdapter[] convexBasePoolAdapters;
47
+
48
+ constructor() {
49
+ simpleAdapters.push(
50
+ SimpleAdapter({targetContract: Contracts.UNISWAP_V2_ROUTER, adapterType: AdapterType.UNISWAP_V2_ROUTER})
51
+ );
52
+ simpleAdapters.push(
53
+ SimpleAdapter({targetContract: Contracts.UNISWAP_V3_ROUTER, adapterType: AdapterType.UNISWAP_V3_ROUTER})
54
+ );
55
+ simpleAdapters.push(
56
+ SimpleAdapter({targetContract: Contracts.SUSHISWAP_ROUTER, adapterType: AdapterType.UNISWAP_V2_ROUTER})
57
+ );
58
+ simpleAdapters.push(
59
+ SimpleAdapter({targetContract: Contracts.YEARN_DAI_VAULT, adapterType: AdapterType.YEARN_V2})
60
+ );
61
+ simpleAdapters.push(
62
+ SimpleAdapter({targetContract: Contracts.YEARN_USDC_VAULT, adapterType: AdapterType.YEARN_V2})
63
+ );
64
+ simpleAdapters.push(
65
+ SimpleAdapter({targetContract: Contracts.YEARN_WETH_VAULT, adapterType: AdapterType.YEARN_V2})
66
+ );
67
+ simpleAdapters.push(
68
+ SimpleAdapter({targetContract: Contracts.YEARN_WBTC_VAULT, adapterType: AdapterType.YEARN_V2})
69
+ );
70
+ simpleAdapters.push(
71
+ SimpleAdapter({targetContract: Contracts.YEARN_CURVE_FRAX_VAULT, adapterType: AdapterType.YEARN_V2})
72
+ );
73
+ simpleAdapters.push(
74
+ SimpleAdapter({targetContract: Contracts.YEARN_CURVE_STETH_VAULT, adapterType: AdapterType.YEARN_V2})
75
+ );
76
+ simpleAdapters.push(
77
+ SimpleAdapter({targetContract: Contracts.CONVEX_BOOSTER, adapterType: AdapterType.CONVEX_V1_BOOSTER})
78
+ );
79
+ simpleAdapters.push(
80
+ SimpleAdapter({targetContract: Contracts.LIDO_STETH_GATEWAY, adapterType: AdapterType.LIDO_V1})
81
+ );
82
+ simpleAdapters.push(
83
+ SimpleAdapter({targetContract: Contracts.LIDO_WSTETH, adapterType: AdapterType.LIDO_WSTETH_V1})
84
+ );
85
+ simpleAdapters.push(
86
+ SimpleAdapter({targetContract: Contracts.UNIVERSAL_ADAPTER, adapterType: AdapterType.UNIVERSAL})
87
+ );
88
+ curveAdapters.push(
89
+ CurveAdapter({
90
+ targetContract: Contracts.CURVE_3CRV_POOL,
91
+ adapterType: AdapterType.CURVE_V1_3ASSETS,
92
+ lpToken: Tokens._3Crv,
93
+ basePool: Contracts.NO_CONTRACT
94
+ })
95
+ );
96
+ curveAdapters.push(
97
+ CurveAdapter({
98
+ targetContract: Contracts.CURVE_FRAX_USDC_POOL,
99
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
100
+ lpToken: Tokens.crvFRAX,
101
+ basePool: Contracts.NO_CONTRACT
102
+ })
103
+ );
104
+
105
+ curveAdapters.push(
106
+ CurveAdapter({
107
+ targetContract: Contracts.CURVE_FRAX_POOL,
108
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
109
+ lpToken: Tokens.FRAX3CRV,
110
+ basePool: Contracts.CURVE_3CRV_POOL
111
+ })
112
+ );
113
+ curveAdapters.push(
114
+ CurveAdapter({
115
+ targetContract: Contracts.CURVE_LUSD_POOL,
116
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
117
+ lpToken: Tokens.LUSD3CRV,
118
+ basePool: Contracts.CURVE_3CRV_POOL
119
+ })
120
+ );
121
+ curveAdapters.push(
122
+ CurveAdapter({
123
+ targetContract: Contracts.CURVE_SUSD_POOL,
124
+ adapterType: AdapterType.CURVE_V1_4ASSETS,
125
+ lpToken: Tokens.crvPlain3andSUSD,
126
+ basePool: Contracts.NO_CONTRACT
127
+ })
128
+ );
129
+ curveAdapters.push(
130
+ CurveAdapter({
131
+ targetContract: Contracts.CURVE_GUSD_POOL,
132
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
133
+ lpToken: Tokens.gusd3CRV,
134
+ basePool: Contracts.CURVE_3CRV_POOL
135
+ })
136
+ );
137
+ curveAdapters.push(
138
+ CurveAdapter({
139
+ targetContract: Contracts.CURVE_OHMFRAXBP_POOL,
140
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
141
+ lpToken: Tokens.OHMFRAXBP,
142
+ basePool: Contracts.NO_CONTRACT
143
+ })
144
+ );
145
+ curveAdapters.push(
146
+ CurveAdapter({
147
+ targetContract: Contracts.CURVE_MIM_POOL,
148
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
149
+ lpToken: Tokens.MIM_3LP3CRV,
150
+ basePool: Contracts.CURVE_3CRV_POOL
151
+ })
152
+ );
153
+ curveAdapters.push(
154
+ CurveAdapter({
155
+ targetContract: Contracts.CURVE_CRVETH_POOL,
156
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
157
+ lpToken: Tokens.crvCRVETH,
158
+ basePool: Contracts.NO_CONTRACT
159
+ })
160
+ );
161
+ curveAdapters.push(
162
+ CurveAdapter({
163
+ targetContract: Contracts.CURVE_CVXETH_POOL,
164
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
165
+ lpToken: Tokens.crvCVXETH,
166
+ basePool: Contracts.NO_CONTRACT
167
+ })
168
+ );
169
+ curveAdapters.push(
170
+ CurveAdapter({
171
+ targetContract: Contracts.CURVE_3CRYPTO_POOL,
172
+ adapterType: AdapterType.CURVE_V1_3ASSETS,
173
+ lpToken: Tokens.crvUSDTWBTCWETH,
174
+ basePool: Contracts.NO_CONTRACT
175
+ })
176
+ );
177
+ curveAdapters.push(
178
+ CurveAdapter({
179
+ targetContract: Contracts.CURVE_LDOETH_POOL,
180
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
181
+ lpToken: Tokens.LDOETH,
182
+ basePool: Contracts.NO_CONTRACT
183
+ })
184
+ );
185
+ curveStEthAdapter = CurveStETHAdapter({
186
+ curveETHGateway: Contracts.CURVE_STETH_GATEWAY,
187
+ adapterType: AdapterType.CURVE_V1_STECRV_POOL,
188
+ lpToken: Tokens.steCRV
189
+ });
190
+ curveWrappers.push(
191
+ CurveWrapper({
192
+ targetContract: Contracts.CURVE_SUSD_DEPOSIT,
193
+ adapterType: AdapterType.CURVE_V1_WRAPPER,
194
+ lpToken: Tokens.crvPlain3andSUSD,
195
+ nCoins: 4
196
+ })
197
+ );
198
+ convexBasePoolAdapters.push(
199
+ ConvexBasePoolAdapter({
200
+ targetContract: Contracts.CONVEX_3CRV_POOL,
201
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
202
+ stakedToken: Tokens.stkcvx3Crv
203
+ })
204
+ );
205
+ convexBasePoolAdapters.push(
206
+ ConvexBasePoolAdapter({
207
+ targetContract: Contracts.CONVEX_FRAX_USDC_POOL,
208
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
209
+ stakedToken: Tokens.stkcvxcrvFRAX
210
+ })
211
+ );
212
+ convexBasePoolAdapters.push(
213
+ ConvexBasePoolAdapter({
214
+ targetContract: Contracts.CONVEX_GUSD_POOL,
215
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
216
+ stakedToken: Tokens.stkcvxgusd3CRV
217
+ })
218
+ );
219
+ convexBasePoolAdapters.push(
220
+ ConvexBasePoolAdapter({
221
+ targetContract: Contracts.CONVEX_SUSD_POOL,
222
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
223
+ stakedToken: Tokens.stkcvxcrvPlain3andSUSD
224
+ })
225
+ );
226
+ convexBasePoolAdapters.push(
227
+ ConvexBasePoolAdapter({
228
+ targetContract: Contracts.CONVEX_STECRV_POOL,
229
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
230
+ stakedToken: Tokens.stkcvxsteCRV
231
+ })
232
+ );
233
+ convexBasePoolAdapters.push(
234
+ ConvexBasePoolAdapter({
235
+ targetContract: Contracts.CONVEX_FRAX3CRV_POOL,
236
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
237
+ stakedToken: Tokens.stkcvxFRAX3CRV
238
+ })
239
+ );
240
+ convexBasePoolAdapters.push(
241
+ ConvexBasePoolAdapter({
242
+ targetContract: Contracts.CONVEX_LUSD3CRV_POOL,
243
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
244
+ stakedToken: Tokens.stkcvxLUSD3CRV
245
+ })
246
+ );
247
+ convexBasePoolAdapters.push(
248
+ ConvexBasePoolAdapter({
249
+ targetContract: Contracts.CONVEX_OHMFRAXBP_POOL,
250
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
251
+ stakedToken: Tokens.stkcvxOHMFRAXBP
252
+ })
253
+ );
254
+ convexBasePoolAdapters.push(
255
+ ConvexBasePoolAdapter({
256
+ targetContract: Contracts.CONVEX_MIM3CRV_POOL,
257
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
258
+ stakedToken: Tokens.stkcvxMIM_3LP3CRV
259
+ })
260
+ );
261
+ convexBasePoolAdapters.push(
262
+ ConvexBasePoolAdapter({
263
+ targetContract: Contracts.CONVEX_CRVETH_POOL,
264
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
265
+ stakedToken: Tokens.stkcvxcrvCRVETH
266
+ })
267
+ );
268
+ convexBasePoolAdapters.push(
269
+ ConvexBasePoolAdapter({
270
+ targetContract: Contracts.CONVEX_CVXETH_POOL,
271
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
272
+ stakedToken: Tokens.stkcvxcrvCVXETH
273
+ })
274
+ );
275
+ convexBasePoolAdapters.push(
276
+ ConvexBasePoolAdapter({
277
+ targetContract: Contracts.CONVEX_3CRYPTO_POOL,
278
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
279
+ stakedToken: Tokens.stkcvxcrvUSDTWBTCWETH
280
+ })
281
+ );
282
+ convexBasePoolAdapters.push(
283
+ ConvexBasePoolAdapter({
284
+ targetContract: Contracts.CONVEX_LDOETH_POOL,
285
+ adapterType: AdapterType.CONVEX_V1_BASE_REWARD_POOL,
286
+ stakedToken: Tokens.stkcvxLDOETH
287
+ })
288
+ );
289
+ }
290
+ }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ // Gearbox. Generalized leverage protocol that allows to take leverage and then use it across other DeFi protocols and platforms in a composable way.
3
+ // (c) Gearbox Holdings, 2022
4
+ pragma solidity ^0.8.17;
5
+
6
+ enum AdapterType {
7
+ ABSTRACT,
8
+ UNISWAP_V2_ROUTER,
9
+ UNISWAP_V3_ROUTER,
10
+ CURVE_V1_EXCHANGE_ONLY,
11
+ YEARN_V2,
12
+ CURVE_V1_2ASSETS,
13
+ CURVE_V1_3ASSETS,
14
+ CURVE_V1_4ASSETS,
15
+ CURVE_V1_STECRV_POOL,
16
+ CURVE_V1_WRAPPER,
17
+ CONVEX_V1_BASE_REWARD_POOL,
18
+ CONVEX_V1_BOOSTER,
19
+ CONVEX_V1_CLAIM_ZAP,
20
+ LIDO_V1,
21
+ UNIVERSAL,
22
+ LIDO_WSTETH_V1,
23
+ BALANCER_VAULT,
24
+ AAVE_V2_LENDING_POOL,
25
+ AAVE_V2_WRAPPED_ATOKEN,
26
+ COMPOUND_V2_CERC20,
27
+ COMPOUND_V2_CETHER
28
+ }
@@ -0,0 +1,353 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ // Gearbox. Generalized leverage protocol that allows to take leverage and then use it across other DeFi protocols and platforms in a composable way.
3
+ // (c) Gearbox Holdings, 2022
4
+ pragma solidity ^0.8.17;
5
+
6
+ import {Tokens} from "./Tokens.sol";
7
+ import {Contracts} from "./SupportedContracts.sol";
8
+
9
+ import {TokensLib} from "./TokensLib.sol";
10
+
11
+ struct ChainlinkPriceFeedData {
12
+ Tokens token;
13
+ address priceFeed;
14
+ }
15
+
16
+ struct CurvePriceFeedData {
17
+ Tokens lpToken;
18
+ Tokens[] assets;
19
+ Contracts pool;
20
+ }
21
+
22
+ struct CurveLikePriceFeedData {
23
+ Tokens lpToken;
24
+ Tokens curveToken;
25
+ }
26
+
27
+ struct SingeTokenPriceFeedData {
28
+ Tokens token;
29
+ }
30
+
31
+ struct CompositePriceFeedData {
32
+ Tokens token;
33
+ address targetToBaseFeed;
34
+ address baseToUSDFeed;
35
+ }
36
+
37
+ struct BoundedPriceFeedData {
38
+ Tokens token;
39
+ address priceFeed;
40
+ uint256 upperBound;
41
+ }
42
+
43
+ contract PriceFeedDataLive {
44
+ uint16 networkId;
45
+
46
+ mapping(uint16 => ChainlinkPriceFeedData[]) chainlinkPriceFeedsByNetwork;
47
+ SingeTokenPriceFeedData[] zeroPriceFeeds;
48
+ CurvePriceFeedData[] curvePriceFeeds;
49
+ CurveLikePriceFeedData[] likeCurvePriceFeeds;
50
+ SingeTokenPriceFeedData[] yearnPriceFeeds;
51
+ mapping(uint16 => BoundedPriceFeedData[]) boundedPriceFeedsByNetwork;
52
+ mapping(uint16 => CompositePriceFeedData[]) compositePriceFeedsByNetwork;
53
+ SingeTokenPriceFeedData wstethPriceFeed;
54
+
55
+ constructor(uint16 _networkId) {
56
+ networkId = _networkId;
57
+ chainlinkPriceFeedsByNetwork[1].push(
58
+ ChainlinkPriceFeedData({token: Tokens._1INCH, priceFeed: 0xc929ad75B72593967DE83E7F7Cda0493458261D9})
59
+ );
60
+ chainlinkPriceFeedsByNetwork[1].push(
61
+ ChainlinkPriceFeedData({token: Tokens.AAVE, priceFeed: 0x547a514d5e3769680Ce22B2361c10Ea13619e8a9})
62
+ );
63
+ chainlinkPriceFeedsByNetwork[1].push(
64
+ ChainlinkPriceFeedData({token: Tokens.COMP, priceFeed: 0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5})
65
+ );
66
+ chainlinkPriceFeedsByNetwork[1].push(
67
+ ChainlinkPriceFeedData({token: Tokens.CRV, priceFeed: 0xCd627aA160A6fA45Eb793D19Ef54f5062F20f33f})
68
+ );
69
+ chainlinkPriceFeedsByNetwork[1].push(
70
+ ChainlinkPriceFeedData({token: Tokens.DAI, priceFeed: 0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9})
71
+ );
72
+ chainlinkPriceFeedsByNetwork[1].push(
73
+ ChainlinkPriceFeedData({token: Tokens.DPI, priceFeed: 0xD2A593BF7594aCE1faD597adb697b5645d5edDB2})
74
+ );
75
+ chainlinkPriceFeedsByNetwork[1].push(
76
+ ChainlinkPriceFeedData({token: Tokens.FEI, priceFeed: 0x31e0a88fecB6eC0a411DBe0e9E76391498296EE9})
77
+ );
78
+ chainlinkPriceFeedsByNetwork[1].push(
79
+ ChainlinkPriceFeedData({token: Tokens.GUSD, priceFeed: 0xa89f5d2365ce98B3cD68012b6f503ab1416245Fc})
80
+ );
81
+ chainlinkPriceFeedsByNetwork[1].push(
82
+ ChainlinkPriceFeedData({token: Tokens.LINK, priceFeed: 0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c})
83
+ );
84
+ chainlinkPriceFeedsByNetwork[1].push(
85
+ ChainlinkPriceFeedData({token: Tokens.SNX, priceFeed: 0xDC3EA94CD0AC27d9A86C180091e7f78C683d3699})
86
+ );
87
+ chainlinkPriceFeedsByNetwork[1].push(
88
+ ChainlinkPriceFeedData({token: Tokens.UNI, priceFeed: 0x553303d460EE0afB37EdFf9bE42922D8FF63220e})
89
+ );
90
+ chainlinkPriceFeedsByNetwork[1].push(
91
+ ChainlinkPriceFeedData({token: Tokens.USDC, priceFeed: 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6})
92
+ );
93
+ chainlinkPriceFeedsByNetwork[1].push(
94
+ ChainlinkPriceFeedData({token: Tokens.USDT, priceFeed: 0x3E7d1eAB13ad0104d2750B8863b489D65364e32D})
95
+ );
96
+ chainlinkPriceFeedsByNetwork[1].push(
97
+ ChainlinkPriceFeedData({token: Tokens.WETH, priceFeed: 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419})
98
+ );
99
+ chainlinkPriceFeedsByNetwork[1].push(
100
+ ChainlinkPriceFeedData({token: Tokens.YFI, priceFeed: 0xA027702dbb89fbd58938e4324ac03B58d812b0E1})
101
+ );
102
+ chainlinkPriceFeedsByNetwork[1].push(
103
+ ChainlinkPriceFeedData({token: Tokens.CVX, priceFeed: 0xd962fC30A72A84cE50161031391756Bf2876Af5D})
104
+ );
105
+ chainlinkPriceFeedsByNetwork[1].push(
106
+ ChainlinkPriceFeedData({token: Tokens.FRAX, priceFeed: 0xB9E1E3A9feFf48998E45Fa90847ed4D467E8BcfD})
107
+ );
108
+ chainlinkPriceFeedsByNetwork[1].push(
109
+ ChainlinkPriceFeedData({token: Tokens.sUSD, priceFeed: 0xad35Bd71b9aFE6e4bDc266B345c198eaDEf9Ad94})
110
+ );
111
+ chainlinkPriceFeedsByNetwork[1].push(
112
+ ChainlinkPriceFeedData({token: Tokens.FXS, priceFeed: 0x6Ebc52C8C1089be9eB3945C4350B68B8E4C2233f})
113
+ );
114
+ chainlinkPriceFeedsByNetwork[1].push(
115
+ ChainlinkPriceFeedData({token: Tokens.MIM, priceFeed: 0x7A364e8770418566e3eb2001A96116E6138Eb32F})
116
+ );
117
+ chainlinkPriceFeedsByNetwork[1].push(
118
+ ChainlinkPriceFeedData({token: Tokens.SPELL, priceFeed: 0x8c110B94C5f1d347fAcF5E1E938AB2db60E3c9a8})
119
+ );
120
+ chainlinkPriceFeedsByNetwork[42161].push(
121
+ ChainlinkPriceFeedData({token: Tokens._1INCH, priceFeed: 0xc929ad75B72593967DE83E7F7Cda0493458261D9})
122
+ );
123
+ chainlinkPriceFeedsByNetwork[42161].push(
124
+ ChainlinkPriceFeedData({token: Tokens.AAVE, priceFeed: 0x547a514d5e3769680Ce22B2361c10Ea13619e8a9})
125
+ );
126
+ chainlinkPriceFeedsByNetwork[42161].push(
127
+ ChainlinkPriceFeedData({token: Tokens.COMP, priceFeed: 0xdbd020CAeF83eFd542f4De03e3cF0C28A4428bd5})
128
+ );
129
+ chainlinkPriceFeedsByNetwork[42161].push(
130
+ ChainlinkPriceFeedData({token: Tokens.CRV, priceFeed: 0xCd627aA160A6fA45Eb793D19Ef54f5062F20f33f})
131
+ );
132
+ chainlinkPriceFeedsByNetwork[42161].push(
133
+ ChainlinkPriceFeedData({token: Tokens.DAI, priceFeed: 0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9})
134
+ );
135
+ chainlinkPriceFeedsByNetwork[42161].push(
136
+ ChainlinkPriceFeedData({token: Tokens.DPI, priceFeed: 0xD2A593BF7594aCE1faD597adb697b5645d5edDB2})
137
+ );
138
+ chainlinkPriceFeedsByNetwork[42161].push(
139
+ ChainlinkPriceFeedData({token: Tokens.FEI, priceFeed: 0x31e0a88fecB6eC0a411DBe0e9E76391498296EE9})
140
+ );
141
+ chainlinkPriceFeedsByNetwork[42161].push(
142
+ ChainlinkPriceFeedData({token: Tokens.GUSD, priceFeed: 0xa89f5d2365ce98B3cD68012b6f503ab1416245Fc})
143
+ );
144
+ chainlinkPriceFeedsByNetwork[42161].push(
145
+ ChainlinkPriceFeedData({token: Tokens.LINK, priceFeed: 0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c})
146
+ );
147
+ chainlinkPriceFeedsByNetwork[42161].push(
148
+ ChainlinkPriceFeedData({token: Tokens.SNX, priceFeed: 0xDC3EA94CD0AC27d9A86C180091e7f78C683d3699})
149
+ );
150
+ chainlinkPriceFeedsByNetwork[42161].push(
151
+ ChainlinkPriceFeedData({token: Tokens.UNI, priceFeed: 0x553303d460EE0afB37EdFf9bE42922D8FF63220e})
152
+ );
153
+ chainlinkPriceFeedsByNetwork[42161].push(
154
+ ChainlinkPriceFeedData({token: Tokens.USDC, priceFeed: 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6})
155
+ );
156
+ chainlinkPriceFeedsByNetwork[42161].push(
157
+ ChainlinkPriceFeedData({token: Tokens.USDT, priceFeed: 0x3E7d1eAB13ad0104d2750B8863b489D65364e32D})
158
+ );
159
+ chainlinkPriceFeedsByNetwork[42161].push(
160
+ ChainlinkPriceFeedData({token: Tokens.WETH, priceFeed: 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419})
161
+ );
162
+ chainlinkPriceFeedsByNetwork[42161].push(
163
+ ChainlinkPriceFeedData({token: Tokens.YFI, priceFeed: 0xA027702dbb89fbd58938e4324ac03B58d812b0E1})
164
+ );
165
+ chainlinkPriceFeedsByNetwork[42161].push(
166
+ ChainlinkPriceFeedData({token: Tokens.CVX, priceFeed: 0xd962fC30A72A84cE50161031391756Bf2876Af5D})
167
+ );
168
+ chainlinkPriceFeedsByNetwork[42161].push(
169
+ ChainlinkPriceFeedData({token: Tokens.FRAX, priceFeed: 0xB9E1E3A9feFf48998E45Fa90847ed4D467E8BcfD})
170
+ );
171
+ chainlinkPriceFeedsByNetwork[42161].push(
172
+ ChainlinkPriceFeedData({token: Tokens.sUSD, priceFeed: 0xad35Bd71b9aFE6e4bDc266B345c198eaDEf9Ad94})
173
+ );
174
+ chainlinkPriceFeedsByNetwork[42161].push(
175
+ ChainlinkPriceFeedData({token: Tokens.FXS, priceFeed: 0x6Ebc52C8C1089be9eB3945C4350B68B8E4C2233f})
176
+ );
177
+ chainlinkPriceFeedsByNetwork[42161].push(
178
+ ChainlinkPriceFeedData({token: Tokens.MIM, priceFeed: 0x7A364e8770418566e3eb2001A96116E6138Eb32F})
179
+ );
180
+ chainlinkPriceFeedsByNetwork[42161].push(
181
+ ChainlinkPriceFeedData({token: Tokens.SPELL, priceFeed: 0x8c110B94C5f1d347fAcF5E1E938AB2db60E3c9a8})
182
+ );
183
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvx3Crv, curveToken: Tokens._3Crv}));
184
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxcrvFRAX, curveToken: Tokens.crvFRAX}));
185
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxsteCRV, curveToken: Tokens.steCRV}));
186
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxFRAX3CRV, curveToken: Tokens.FRAX3CRV}));
187
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxLUSD3CRV, curveToken: Tokens.LUSD3CRV}));
188
+ likeCurvePriceFeeds.push(
189
+ CurveLikePriceFeedData({lpToken: Tokens.cvxcrvPlain3andSUSD, curveToken: Tokens.crvPlain3andSUSD})
190
+ );
191
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxgusd3CRV, curveToken: Tokens.gusd3CRV}));
192
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxOHMFRAXBP, curveToken: Tokens.OHMFRAXBP}));
193
+ likeCurvePriceFeeds.push(
194
+ CurveLikePriceFeedData({lpToken: Tokens.cvxMIM_3LP3CRV, curveToken: Tokens.MIM_3LP3CRV})
195
+ );
196
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxcrvCRVETH, curveToken: Tokens.crvCRVETH}));
197
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxcrvCVXETH, curveToken: Tokens.crvCVXETH}));
198
+ likeCurvePriceFeeds.push(
199
+ CurveLikePriceFeedData({lpToken: Tokens.cvxcrvUSDTWBTCWETH, curveToken: Tokens.crvUSDTWBTCWETH})
200
+ );
201
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.cvxLDOETH, curveToken: Tokens.LDOETH}));
202
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.stkcvx3Crv, curveToken: Tokens._3Crv}));
203
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.stkcvxcrvFRAX, curveToken: Tokens.crvFRAX}));
204
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.stkcvxsteCRV, curveToken: Tokens.steCRV}));
205
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.stkcvxFRAX3CRV, curveToken: Tokens.FRAX3CRV}));
206
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.stkcvxLUSD3CRV, curveToken: Tokens.LUSD3CRV}));
207
+ likeCurvePriceFeeds.push(
208
+ CurveLikePriceFeedData({lpToken: Tokens.stkcvxcrvPlain3andSUSD, curveToken: Tokens.crvPlain3andSUSD})
209
+ );
210
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.stkcvxgusd3CRV, curveToken: Tokens.gusd3CRV}));
211
+ likeCurvePriceFeeds.push(
212
+ CurveLikePriceFeedData({lpToken: Tokens.stkcvxOHMFRAXBP, curveToken: Tokens.OHMFRAXBP})
213
+ );
214
+ likeCurvePriceFeeds.push(
215
+ CurveLikePriceFeedData({lpToken: Tokens.stkcvxMIM_3LP3CRV, curveToken: Tokens.MIM_3LP3CRV})
216
+ );
217
+ likeCurvePriceFeeds.push(
218
+ CurveLikePriceFeedData({lpToken: Tokens.stkcvxcrvCRVETH, curveToken: Tokens.crvCRVETH})
219
+ );
220
+ likeCurvePriceFeeds.push(
221
+ CurveLikePriceFeedData({lpToken: Tokens.stkcvxcrvCVXETH, curveToken: Tokens.crvCVXETH})
222
+ );
223
+ likeCurvePriceFeeds.push(
224
+ CurveLikePriceFeedData({lpToken: Tokens.stkcvxcrvUSDTWBTCWETH, curveToken: Tokens.crvUSDTWBTCWETH})
225
+ );
226
+ likeCurvePriceFeeds.push(CurveLikePriceFeedData({lpToken: Tokens.stkcvxLDOETH, curveToken: Tokens.LDOETH}));
227
+ compositePriceFeedsByNetwork[1].push(
228
+ CompositePriceFeedData({
229
+ token: Tokens.WBTC,
230
+ targetToBaseFeed: 0xfdFD9C85aD200c506Cf9e21F1FD8dd01932FBB23,
231
+ baseToUSDFeed: 0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c
232
+ })
233
+ );
234
+ compositePriceFeedsByNetwork[1].push(
235
+ CompositePriceFeedData({
236
+ token: Tokens.STETH,
237
+ targetToBaseFeed: 0x86392dC19c0b719886221c78AB11eb8Cf5c52812,
238
+ baseToUSDFeed: 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
239
+ })
240
+ );
241
+ compositePriceFeedsByNetwork[1].push(
242
+ CompositePriceFeedData({
243
+ token: Tokens.LDO,
244
+ targetToBaseFeed: 0x4e844125952D32AcdF339BE976c98E22F6F318dB,
245
+ baseToUSDFeed: 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
246
+ })
247
+ );
248
+ compositePriceFeedsByNetwork[1].push(
249
+ CompositePriceFeedData({
250
+ token: Tokens.OHM,
251
+ targetToBaseFeed: 0x9a72298ae3886221820B1c878d12D872087D3a23,
252
+ baseToUSDFeed: 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
253
+ })
254
+ );
255
+ compositePriceFeedsByNetwork[42161].push(
256
+ CompositePriceFeedData({
257
+ token: Tokens.STETH,
258
+ targetToBaseFeed: 0x78622A939324C5dC1B646D113358f54f0BA4353B,
259
+ baseToUSDFeed: 0x491741d9F426130d1bC27Aee82f8b4Bd4E6E5f5D
260
+ })
261
+ );
262
+ compositePriceFeedsByNetwork[42161].push(
263
+ CompositePriceFeedData({
264
+ token: Tokens.LDO,
265
+ targetToBaseFeed: 0x6569bae7114121aE82303F42f42b64012DcCbD7d,
266
+ baseToUSDFeed: 0x491741d9F426130d1bC27Aee82f8b4Bd4E6E5f5D
267
+ })
268
+ );
269
+ boundedPriceFeedsByNetwork[1].push(
270
+ BoundedPriceFeedData({
271
+ token: Tokens.LUSD,
272
+ priceFeed: 0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0,
273
+ upperBound: 110000000
274
+ })
275
+ );
276
+ boundedPriceFeedsByNetwork[42161].push(
277
+ BoundedPriceFeedData({
278
+ token: Tokens.LUSD,
279
+ priceFeed: 0xd6852347062aB885B6Fb9F7220BedCc5A39CE862,
280
+ upperBound: 110000000
281
+ })
282
+ );
283
+
284
+ zeroPriceFeeds.push(SingeTokenPriceFeedData({token: Tokens.LQTY}));
285
+ curvePriceFeeds.push(
286
+ CurvePriceFeedData({
287
+ lpToken: Tokens._3Crv,
288
+ assets: TokensLib.arrayOf(Tokens.DAI, Tokens.USDC, Tokens.USDT),
289
+ pool: Contracts.CURVE_3CRV_POOL
290
+ })
291
+ );
292
+ curvePriceFeeds.push(
293
+ CurvePriceFeedData({
294
+ lpToken: Tokens.crvFRAX,
295
+ assets: TokensLib.arrayOf(Tokens.FRAX, Tokens.USDC),
296
+ pool: Contracts.CURVE_FRAX_USDC_POOL
297
+ })
298
+ );
299
+ curvePriceFeeds.push(
300
+ CurvePriceFeedData({
301
+ lpToken: Tokens.steCRV,
302
+ assets: TokensLib.arrayOf(Tokens.STETH, Tokens.WETH),
303
+ pool: Contracts.CURVE_STETH_GATEWAY
304
+ })
305
+ );
306
+ curvePriceFeeds.push(
307
+ CurvePriceFeedData({
308
+ lpToken: Tokens.FRAX3CRV,
309
+ assets: TokensLib.arrayOf(Tokens.FRAX, Tokens.DAI, Tokens.USDC, Tokens.USDT),
310
+ pool: Contracts.CURVE_FRAX_POOL
311
+ })
312
+ );
313
+ curvePriceFeeds.push(
314
+ CurvePriceFeedData({
315
+ lpToken: Tokens.LUSD3CRV,
316
+ assets: TokensLib.arrayOf(Tokens.LUSD, Tokens.DAI, Tokens.USDC, Tokens.USDT),
317
+ pool: Contracts.CURVE_LUSD_POOL
318
+ })
319
+ );
320
+ curvePriceFeeds.push(
321
+ CurvePriceFeedData({
322
+ lpToken: Tokens.crvPlain3andSUSD,
323
+ assets: TokensLib.arrayOf(Tokens.DAI, Tokens.USDC, Tokens.USDT, Tokens.sUSD),
324
+ pool: Contracts.CURVE_SUSD_POOL
325
+ })
326
+ );
327
+ curvePriceFeeds.push(
328
+ CurvePriceFeedData({
329
+ lpToken: Tokens.gusd3CRV,
330
+ assets: TokensLib.arrayOf(Tokens.GUSD, Tokens.DAI, Tokens.USDC, Tokens.USDT),
331
+ pool: Contracts.CURVE_GUSD_POOL
332
+ })
333
+ );
334
+ curvePriceFeeds.push(
335
+ CurvePriceFeedData({
336
+ lpToken: Tokens.MIM_3LP3CRV,
337
+ assets: TokensLib.arrayOf(Tokens.MIM, Tokens.DAI, Tokens.USDC, Tokens.USDT),
338
+ pool: Contracts.CURVE_MIM_POOL
339
+ })
340
+ );
341
+ yearnPriceFeeds.push(SingeTokenPriceFeedData({token: Tokens.yvDAI}));
342
+ yearnPriceFeeds.push(SingeTokenPriceFeedData({token: Tokens.yvUSDC}));
343
+ yearnPriceFeeds.push(SingeTokenPriceFeedData({token: Tokens.yvWETH}));
344
+ yearnPriceFeeds.push(SingeTokenPriceFeedData({token: Tokens.yvWBTC}));
345
+ yearnPriceFeeds.push(SingeTokenPriceFeedData({token: Tokens.yvCurve_stETH}));
346
+ yearnPriceFeeds.push(SingeTokenPriceFeedData({token: Tokens.yvCurve_FRAX}));
347
+ wstethPriceFeed = SingeTokenPriceFeedData({token: Tokens.wstETH});
348
+ }
349
+
350
+ function chainlinkPriceFeeds(uint256 index) external view returns (ChainlinkPriceFeedData memory) {
351
+ return chainlinkPriceFeedsByNetwork[networkId][index];
352
+ }
353
+ }