@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,309 @@
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 {Test} from "forge-std/Test.sol";
7
+
8
+ interface ISupportedContracts {
9
+ function addressOf(Contracts c) external view returns (address);
10
+
11
+ function nameOf(Contracts c) external view returns (string memory);
12
+
13
+ function contractIndex(address) external view returns (Contracts);
14
+
15
+ function contractCount() external view returns (uint256);
16
+ }
17
+
18
+ enum Contracts {
19
+ NO_CONTRACT,
20
+ UNISWAP_V2_ROUTER,
21
+ UNISWAP_V3_ROUTER,
22
+ SUSHISWAP_ROUTER,
23
+ CURVE_3CRV_POOL,
24
+ CURVE_FRAX_USDC_POOL,
25
+ CURVE_STETH_GATEWAY,
26
+ CURVE_FRAX_POOL,
27
+ CURVE_LUSD_POOL,
28
+ CURVE_SUSD_POOL,
29
+ CURVE_SUSD_DEPOSIT,
30
+ CURVE_GUSD_POOL,
31
+ CURVE_MIM_POOL,
32
+ CURVE_OHMFRAXBP_POOL,
33
+ CURVE_CRVETH_POOL,
34
+ CURVE_CVXETH_POOL,
35
+ CURVE_3CRYPTO_POOL,
36
+ CURVE_LDOETH_POOL,
37
+ CURVE_GEAR_POOL,
38
+ YEARN_DAI_VAULT,
39
+ YEARN_USDC_VAULT,
40
+ YEARN_WETH_VAULT,
41
+ YEARN_WBTC_VAULT,
42
+ YEARN_CURVE_FRAX_VAULT,
43
+ YEARN_CURVE_STETH_VAULT,
44
+ CONVEX_BOOSTER,
45
+ CONVEX_3CRV_POOL,
46
+ CONVEX_FRAX_USDC_POOL,
47
+ CONVEX_GUSD_POOL,
48
+ CONVEX_SUSD_POOL,
49
+ CONVEX_STECRV_POOL,
50
+ CONVEX_FRAX3CRV_POOL,
51
+ CONVEX_LUSD3CRV_POOL,
52
+ CONVEX_CLAIM_ZAP,
53
+ CONVEX_OHMFRAXBP_POOL,
54
+ CONVEX_MIM3CRV_POOL,
55
+ CONVEX_CRVETH_POOL,
56
+ CONVEX_CVXETH_POOL,
57
+ CONVEX_3CRYPTO_POOL,
58
+ CONVEX_LDOETH_POOL,
59
+ LIDO_STETH_GATEWAY,
60
+ LIDO_WSTETH,
61
+ BALANCER_VAULT,
62
+ UNIVERSAL_ADAPTER
63
+ }
64
+
65
+ struct ContractData {
66
+ Contracts id;
67
+ address addr;
68
+ string name;
69
+ }
70
+
71
+ contract SupportedContracts is Test, ISupportedContracts {
72
+ mapping(Contracts => address) public override addressOf;
73
+ mapping(Contracts => string) public override nameOf;
74
+ mapping(address => Contracts) public override contractIndex;
75
+
76
+ uint256 public override contractCount;
77
+
78
+ constructor(uint8 networkId) {
79
+ ContractData[] memory cd;
80
+ cd = new ContractData[](43);
81
+ cd[0] = ContractData({
82
+ id: Contracts.UNISWAP_V2_ROUTER,
83
+ addr: 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
84
+ name: "UNISWAP_V2_ROUTER"
85
+ });
86
+ cd[1] = ContractData({
87
+ id: Contracts.UNISWAP_V3_ROUTER,
88
+ addr: 0xE592427A0AEce92De3Edee1F18E0157C05861564,
89
+ name: "UNISWAP_V3_ROUTER"
90
+ });
91
+ cd[2] = ContractData({
92
+ id: Contracts.SUSHISWAP_ROUTER,
93
+ addr: 0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F,
94
+ name: "SUSHISWAP_ROUTER"
95
+ });
96
+ cd[3] = ContractData({
97
+ id: Contracts.CURVE_3CRV_POOL,
98
+ addr: 0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7,
99
+ name: "CURVE_3CRV_POOL"
100
+ });
101
+ cd[4] = ContractData({
102
+ id: Contracts.CURVE_FRAX_USDC_POOL,
103
+ addr: 0xDcEF968d416a41Cdac0ED8702fAC8128A64241A2,
104
+ name: "CURVE_FRAX_USDC_POOL"
105
+ });
106
+ cd[5] = ContractData({
107
+ id: Contracts.CURVE_STETH_GATEWAY,
108
+ addr: 0xEf0D72C594b28252BF7Ea2bfbF098792430815b1,
109
+ name: "CURVE_STETH_GATEWAY"
110
+ });
111
+ cd[6] = ContractData({
112
+ id: Contracts.CURVE_FRAX_POOL,
113
+ addr: 0xd632f22692FaC7611d2AA1C0D552930D43CAEd3B,
114
+ name: "CURVE_FRAX_POOL"
115
+ });
116
+ cd[7] = ContractData({
117
+ id: Contracts.CURVE_LUSD_POOL,
118
+ addr: 0xEd279fDD11cA84bEef15AF5D39BB4d4bEE23F0cA,
119
+ name: "CURVE_LUSD_POOL"
120
+ });
121
+ cd[8] = ContractData({
122
+ id: Contracts.CURVE_SUSD_POOL,
123
+ addr: 0xA5407eAE9Ba41422680e2e00537571bcC53efBfD,
124
+ name: "CURVE_SUSD_POOL"
125
+ });
126
+ cd[9] = ContractData({
127
+ id: Contracts.CURVE_SUSD_DEPOSIT,
128
+ addr: 0xFCBa3E75865d2d561BE8D220616520c171F12851,
129
+ name: "CURVE_SUSD_DEPOSIT"
130
+ });
131
+ cd[10] = ContractData({
132
+ id: Contracts.CURVE_GUSD_POOL,
133
+ addr: 0x4f062658EaAF2C1ccf8C8e36D6824CDf41167956,
134
+ name: "CURVE_GUSD_POOL"
135
+ });
136
+ cd[11] = ContractData({
137
+ id: Contracts.CURVE_MIM_POOL,
138
+ addr: 0x5a6A4D54456819380173272A5E8E9B9904BdF41B,
139
+ name: "CURVE_MIM_POOL"
140
+ });
141
+ cd[12] = ContractData({
142
+ id: Contracts.CURVE_OHMFRAXBP_POOL,
143
+ addr: 0xFc1e8bf3E81383Ef07Be24c3FD146745719DE48D,
144
+ name: "CURVE_OHMFRAXBP_POOL"
145
+ });
146
+ cd[13] = ContractData({
147
+ id: Contracts.CURVE_CRVETH_POOL,
148
+ addr: 0x8301AE4fc9c624d1D396cbDAa1ed877821D7C511,
149
+ name: "CURVE_CRVETH_POOL"
150
+ });
151
+ cd[14] = ContractData({
152
+ id: Contracts.CURVE_CVXETH_POOL,
153
+ addr: 0xB576491F1E6e5E62f1d8F26062Ee822B40B0E0d4,
154
+ name: "CURVE_CVXETH_POOL"
155
+ });
156
+ cd[15] = ContractData({
157
+ id: Contracts.CURVE_3CRYPTO_POOL,
158
+ addr: 0xf5f5B97624542D72A9E06f04804Bf81baA15e2B4,
159
+ name: "CURVE_3CRYPTO_POOL"
160
+ });
161
+ cd[16] = ContractData({
162
+ id: Contracts.CURVE_LDOETH_POOL,
163
+ addr: 0x9409280DC1e6D33AB7A8C6EC03e5763FB61772B5,
164
+ name: "CURVE_LDOETH_POOL"
165
+ });
166
+ cd[17] = ContractData({
167
+ id: Contracts.CURVE_GEAR_POOL,
168
+ addr: 0x0E9B5B092caD6F1c5E6bc7f89Ffe1abb5c95F1C2,
169
+ name: "CURVE_GEAR_POOL"
170
+ });
171
+ cd[18] = ContractData({
172
+ id: Contracts.YEARN_DAI_VAULT,
173
+ addr: 0xdA816459F1AB5631232FE5e97a05BBBb94970c95,
174
+ name: "YEARN_DAI_VAULT"
175
+ });
176
+ cd[19] = ContractData({
177
+ id: Contracts.YEARN_USDC_VAULT,
178
+ addr: 0xa354F35829Ae975e850e23e9615b11Da1B3dC4DE,
179
+ name: "YEARN_USDC_VAULT"
180
+ });
181
+ cd[20] = ContractData({
182
+ id: Contracts.YEARN_WETH_VAULT,
183
+ addr: 0xa258C4606Ca8206D8aA700cE2143D7db854D168c,
184
+ name: "YEARN_WETH_VAULT"
185
+ });
186
+ cd[21] = ContractData({
187
+ id: Contracts.YEARN_WBTC_VAULT,
188
+ addr: 0xA696a63cc78DfFa1a63E9E50587C197387FF6C7E,
189
+ name: "YEARN_WBTC_VAULT"
190
+ });
191
+ cd[22] = ContractData({
192
+ id: Contracts.YEARN_CURVE_FRAX_VAULT,
193
+ addr: 0xB4AdA607B9d6b2c9Ee07A275e9616B84AC560139,
194
+ name: "YEARN_CURVE_FRAX_VAULT"
195
+ });
196
+ cd[23] = ContractData({
197
+ id: Contracts.YEARN_CURVE_STETH_VAULT,
198
+ addr: 0xdCD90C7f6324cfa40d7169ef80b12031770B4325,
199
+ name: "YEARN_CURVE_STETH_VAULT"
200
+ });
201
+ cd[24] = ContractData({
202
+ id: Contracts.CONVEX_BOOSTER,
203
+ addr: 0xF403C135812408BFbE8713b5A23a04b3D48AAE31,
204
+ name: "CONVEX_BOOSTER"
205
+ });
206
+ cd[25] = ContractData({
207
+ id: Contracts.CONVEX_3CRV_POOL,
208
+ addr: 0x689440f2Ff927E1f24c72F1087E1FAF471eCe1c8,
209
+ name: "CONVEX_3CRV_POOL"
210
+ });
211
+ cd[26] = ContractData({
212
+ id: Contracts.CONVEX_FRAX_USDC_POOL,
213
+ addr: 0x7e880867363A7e321f5d260Cade2B0Bb2F717B02,
214
+ name: "CONVEX_FRAX_USDC_POOL"
215
+ });
216
+ cd[27] = ContractData({
217
+ id: Contracts.CONVEX_GUSD_POOL,
218
+ addr: 0x7A7bBf95C44b144979360C3300B54A7D34b44985,
219
+ name: "CONVEX_GUSD_POOL"
220
+ });
221
+ cd[28] = ContractData({
222
+ id: Contracts.CONVEX_SUSD_POOL,
223
+ addr: 0x22eE18aca7F3Ee920D01F25dA85840D12d98E8Ca,
224
+ name: "CONVEX_SUSD_POOL"
225
+ });
226
+ cd[29] = ContractData({
227
+ id: Contracts.CONVEX_STECRV_POOL,
228
+ addr: 0x0A760466E1B4621579a82a39CB56Dda2F4E70f03,
229
+ name: "CONVEX_STECRV_POOL"
230
+ });
231
+ cd[30] = ContractData({
232
+ id: Contracts.CONVEX_FRAX3CRV_POOL,
233
+ addr: 0xB900EF131301B307dB5eFcbed9DBb50A3e209B2e,
234
+ name: "CONVEX_FRAX3CRV_POOL"
235
+ });
236
+ cd[31] = ContractData({
237
+ id: Contracts.CONVEX_LUSD3CRV_POOL,
238
+ addr: 0x2ad92A7aE036a038ff02B96c88de868ddf3f8190,
239
+ name: "CONVEX_LUSD3CRV_POOL"
240
+ });
241
+ cd[32] = ContractData({
242
+ id: Contracts.CONVEX_CLAIM_ZAP,
243
+ addr: 0x92Cf9E5e4D1Dfbf7dA0d2BB3e884a68416a65070,
244
+ name: "CONVEX_CLAIM_ZAP"
245
+ });
246
+ cd[33] = ContractData({
247
+ id: Contracts.CONVEX_OHMFRAXBP_POOL,
248
+ addr: 0x27A8c58e3DE84280826d615D80ddb33930383fE9,
249
+ name: "CONVEX_OHMFRAXBP_POOL"
250
+ });
251
+ cd[34] = ContractData({
252
+ id: Contracts.CONVEX_MIM3CRV_POOL,
253
+ addr: 0xFd5AbF66b003881b88567EB9Ed9c651F14Dc4771,
254
+ name: "CONVEX_MIM3CRV_POOL"
255
+ });
256
+ cd[35] = ContractData({
257
+ id: Contracts.CONVEX_CRVETH_POOL,
258
+ addr: 0x085A2054c51eA5c91dbF7f90d65e728c0f2A270f,
259
+ name: "CONVEX_CRVETH_POOL"
260
+ });
261
+ cd[36] = ContractData({
262
+ id: Contracts.CONVEX_CVXETH_POOL,
263
+ addr: 0xb1Fb0BA0676A1fFA83882c7F4805408bA232C1fA,
264
+ name: "CONVEX_CVXETH_POOL"
265
+ });
266
+ cd[37] = ContractData({
267
+ id: Contracts.CONVEX_3CRYPTO_POOL,
268
+ addr: 0xb05262D4aaAA38D0Af4AaB244D446ebDb5afd4A7,
269
+ name: "CONVEX_3CRYPTO_POOL"
270
+ });
271
+ cd[38] = ContractData({
272
+ id: Contracts.CONVEX_LDOETH_POOL,
273
+ addr: 0x8CA990E954611E5E3d2cc51C013fCC372c8c1D38,
274
+ name: "CONVEX_LDOETH_POOL"
275
+ });
276
+ cd[39] = ContractData({
277
+ id: Contracts.LIDO_STETH_GATEWAY,
278
+ addr: 0x6f4b4aB5142787c05b7aB9A9692A0f46b997C29D,
279
+ name: "LIDO_STETH_GATEWAY"
280
+ });
281
+ cd[40] = ContractData({
282
+ id: Contracts.LIDO_WSTETH,
283
+ addr: 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0,
284
+ name: "LIDO_WSTETH"
285
+ });
286
+ cd[41] = ContractData({
287
+ id: Contracts.BALANCER_VAULT,
288
+ addr: 0xBA12222222228d8Ba445958a75a0704d566BF2C8,
289
+ name: "BALANCER_VAULT"
290
+ });
291
+ cd[42] = ContractData({
292
+ id: Contracts.UNIVERSAL_ADAPTER,
293
+ addr: 0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC,
294
+ name: "UNIVERSAL_ADAPTER"
295
+ });
296
+
297
+ uint256 len = cd.length;
298
+ contractCount = len;
299
+ unchecked {
300
+ for (uint256 i; i < len; ++i) {
301
+ addressOf[cd[i].id] = cd[i].addr;
302
+ nameOf[cd[i].id] = cd[i].name;
303
+ contractIndex[cd[i].addr] = cd[i].id;
304
+
305
+ vm.label(cd[i].addr, cd[i].name);
306
+ }
307
+ }
308
+ }
309
+ }
@@ -0,0 +1,97 @@
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
+ /// @dev c-Tokens and LUNA are added for unit test purposes
7
+ enum Tokens {
8
+ NO_TOKEN,
9
+ cDAI,
10
+ cUSDC,
11
+ cUSDT,
12
+ cLINK,
13
+ LUNA,
14
+ _1INCH,
15
+ AAVE,
16
+ COMP,
17
+ CRV,
18
+ DAI,
19
+ DPI,
20
+ FEI,
21
+ LINK,
22
+ SNX,
23
+ UNI,
24
+ USDC,
25
+ USDT,
26
+ WBTC,
27
+ WETH,
28
+ YFI,
29
+ STETH,
30
+ wstETH,
31
+ CVX,
32
+ FRAX,
33
+ FXS,
34
+ LDO,
35
+ LUSD,
36
+ sUSD,
37
+ GUSD,
38
+ LQTY,
39
+ OHM,
40
+ MIM,
41
+ SPELL,
42
+ _3Crv,
43
+ crvFRAX,
44
+ steCRV,
45
+ crvPlain3andSUSD,
46
+ crvCRVETH,
47
+ crvCVXETH,
48
+ crvUSDTWBTCWETH,
49
+ LDOETH,
50
+ FRAX3CRV,
51
+ LUSD3CRV,
52
+ gusd3CRV,
53
+ MIM_3LP3CRV,
54
+ OHMFRAXBP,
55
+ cvx3Crv,
56
+ cvxcrvFRAX,
57
+ cvxsteCRV,
58
+ cvxFRAX3CRV,
59
+ cvxLUSD3CRV,
60
+ cvxcrvPlain3andSUSD,
61
+ cvxgusd3CRV,
62
+ cvxOHMFRAXBP,
63
+ cvxMIM_3LP3CRV,
64
+ cvxcrvCRVETH,
65
+ cvxcrvCVXETH,
66
+ cvxcrvUSDTWBTCWETH,
67
+ cvxLDOETH,
68
+ stkcvx3Crv,
69
+ stkcvxcrvFRAX,
70
+ stkcvxsteCRV,
71
+ stkcvxFRAX3CRV,
72
+ stkcvxLUSD3CRV,
73
+ stkcvxcrvPlain3andSUSD,
74
+ stkcvxgusd3CRV,
75
+ stkcvxOHMFRAXBP,
76
+ stkcvxMIM_3LP3CRV,
77
+ stkcvxcrvCRVETH,
78
+ stkcvxcrvCVXETH,
79
+ stkcvxcrvUSDTWBTCWETH,
80
+ stkcvxLDOETH,
81
+ yvDAI,
82
+ yvUSDC,
83
+ yvWETH,
84
+ yvWBTC,
85
+ yvCurve_stETH,
86
+ yvCurve_FRAX,
87
+ _50OHM_50DAI,
88
+ _50OHM_50WETH,
89
+ OHM_wstETH,
90
+ dDAI,
91
+ dUSDC,
92
+ dWBTC,
93
+ dWETH,
94
+ dwstETH,
95
+ dFRAX,
96
+ GEAR
97
+ }