@gearbox-protocol/sdk 2.1.13 → 2.1.15

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.
@@ -182,6 +182,38 @@ contract AdapterData {
182
182
  basePool: Contracts.NO_CONTRACT
183
183
  })
184
184
  );
185
+ curveAdapters.push(
186
+ CurveAdapter({
187
+ targetContract: Contracts.CURVE_CRVUSD_USDC_POOL,
188
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
189
+ lpToken: Tokens.crvUSDUSDC,
190
+ basePool: Contracts.NO_CONTRACT
191
+ })
192
+ );
193
+ curveAdapters.push(
194
+ CurveAdapter({
195
+ targetContract: Contracts.CURVE_CRVUSD_USDT_POOL,
196
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
197
+ lpToken: Tokens.crvUSDUSDT,
198
+ basePool: Contracts.NO_CONTRACT
199
+ })
200
+ );
201
+ curveAdapters.push(
202
+ CurveAdapter({
203
+ targetContract: Contracts.CURVE_CRVUSD_FRAX_POOL,
204
+ adapterType: AdapterType.CURVE_V1_2ASSETS,
205
+ lpToken: Tokens.crvUSDFRAX,
206
+ basePool: Contracts.NO_CONTRACT
207
+ })
208
+ );
209
+ curveAdapters.push(
210
+ CurveAdapter({
211
+ targetContract: Contracts.CURVE_TRI_CRV_POOL,
212
+ adapterType: AdapterType.CURVE_V1_3ASSETS,
213
+ lpToken: Tokens.crvUSDETHCRV,
214
+ basePool: Contracts.NO_CONTRACT
215
+ })
216
+ );
185
217
  curveStEthAdapter = CurveStETHAdapter({
186
218
  curveETHGateway: Contracts.CURVE_STETH_GATEWAY,
187
219
  adapterType: AdapterType.CURVE_V1_STECRV_POOL,
@@ -23,6 +23,10 @@ enum Contracts {
23
23
  CURVE_3CRYPTO_POOL,
24
24
  CURVE_LDOETH_POOL,
25
25
  CURVE_GEAR_POOL,
26
+ CURVE_CRVUSD_USDC_POOL,
27
+ CURVE_CRVUSD_USDT_POOL,
28
+ CURVE_CRVUSD_FRAX_POOL,
29
+ CURVE_TRI_CRV_POOL,
26
30
  YEARN_DAI_VAULT,
27
31
  YEARN_USDC_VAULT,
28
32
  YEARN_WETH_VAULT,
@@ -40,6 +40,7 @@ struct CompositePriceFeedData {
40
40
  struct BoundedPriceFeedData {
41
41
  Tokens token;
42
42
  address priceFeed;
43
+ uint32 stalenessPeriod;
43
44
  uint256 upperBound;
44
45
  }
45
46
 
@@ -69,6 +70,7 @@ contract PriceFeedDataLive {
69
70
  mapping(uint256 => GenericLPPriceFeedData[]) wrappedAaveV2PriceFeedsByNetwork;
70
71
  mapping(uint256 => GenericLPPriceFeedData[]) compoundV2PriceFeedsByNetwork;
71
72
  mapping(uint256 => GenericLPPriceFeedData[]) erc4626PriceFeedsByNetwork;
73
+ mapping(uint256 => GenericLPPriceFeedData[]) crvUSDPriceFeedsByNetwork;
72
74
  mapping(uint256 => RedStonePriceFeedData[]) redStonePriceFeedsByNetwork;
73
75
 
74
76
  constructor() {
@@ -362,6 +364,7 @@ contract PriceFeedDataLive {
362
364
  BoundedPriceFeedData({
363
365
  token: Tokens.LUSD,
364
366
  priceFeed: 0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0,
367
+ stalenessPeriod: 86400,
365
368
  upperBound: 110000000
366
369
  })
367
370
  );
@@ -369,6 +372,7 @@ contract PriceFeedDataLive {
369
372
  BoundedPriceFeedData({
370
373
  token: Tokens.LUSD,
371
374
  priceFeed: 0x0411D28c94d85A36bC72Cb0f875dfA8371D8fFfF,
375
+ stalenessPeriod: 86400,
372
376
  upperBound: 110000000
373
377
  })
374
378
  );
@@ -760,6 +764,74 @@ contract PriceFeedDataLive {
760
764
  })
761
765
  );
762
766
 
767
+ // ------------------------ crvUSD ------------------------
768
+ crvUSDPriceFeedsByNetwork[1].push(GenericLPPriceFeedData({lpToken: Tokens.crvUSD, underlying: Tokens.USDC}));
769
+ crvUSDPriceFeedsByNetwork[42161].push(GenericLPPriceFeedData({lpToken: Tokens.crvUSD, underlying: Tokens.USDC}));
770
+
771
+ // ------------------------ crvUSDUSDC ------------------------
772
+ curvePriceFeedsByNetwork[1].push(
773
+ CurvePriceFeedData({
774
+ lpToken: Tokens.crvUSDUSDC,
775
+ assets: TokensLib.arrayOf(Tokens.crvUSD, Tokens.USDC),
776
+ pool: Contracts.CURVE_CRVUSD_USDC_POOL
777
+ })
778
+ );
779
+ curvePriceFeedsByNetwork[42161].push(
780
+ CurvePriceFeedData({
781
+ lpToken: Tokens.crvUSDUSDC,
782
+ assets: TokensLib.arrayOf(Tokens.crvUSD, Tokens.USDC),
783
+ pool: Contracts.CURVE_CRVUSD_USDC_POOL
784
+ })
785
+ );
786
+
787
+ // ------------------------ crvUSDUSDT ------------------------
788
+ curvePriceFeedsByNetwork[1].push(
789
+ CurvePriceFeedData({
790
+ lpToken: Tokens.crvUSDUSDT,
791
+ assets: TokensLib.arrayOf(Tokens.crvUSD, Tokens.USDT),
792
+ pool: Contracts.CURVE_CRVUSD_USDT_POOL
793
+ })
794
+ );
795
+ curvePriceFeedsByNetwork[42161].push(
796
+ CurvePriceFeedData({
797
+ lpToken: Tokens.crvUSDUSDT,
798
+ assets: TokensLib.arrayOf(Tokens.crvUSD, Tokens.USDT),
799
+ pool: Contracts.CURVE_CRVUSD_USDT_POOL
800
+ })
801
+ );
802
+
803
+ // ------------------------ crvUSDFRAX ------------------------
804
+ curvePriceFeedsByNetwork[1].push(
805
+ CurvePriceFeedData({
806
+ lpToken: Tokens.crvUSDFRAX,
807
+ assets: TokensLib.arrayOf(Tokens.crvUSD, Tokens.FRAX),
808
+ pool: Contracts.CURVE_CRVUSD_USDC_POOL
809
+ })
810
+ );
811
+ curvePriceFeedsByNetwork[42161].push(
812
+ CurvePriceFeedData({
813
+ lpToken: Tokens.crvUSDFRAX,
814
+ assets: TokensLib.arrayOf(Tokens.crvUSD, Tokens.FRAX),
815
+ pool: Contracts.CURVE_CRVUSD_USDC_POOL
816
+ })
817
+ );
818
+
819
+ // ------------------------ crvUSDETHCRV ------------------------
820
+ curveCryptoPriceFeedsByNetwork[1].push(
821
+ CurvePriceFeedData({
822
+ lpToken: Tokens.crvUSDETHCRV,
823
+ assets: TokensLib.arrayOf(Tokens.crvUSD, Tokens.WETH, Tokens.CRV),
824
+ pool: Contracts.CURVE_TRI_CRV_POOL
825
+ })
826
+ );
827
+ curveCryptoPriceFeedsByNetwork[42161].push(
828
+ CurvePriceFeedData({
829
+ lpToken: Tokens.crvUSDETHCRV,
830
+ assets: TokensLib.arrayOf(Tokens.crvUSD, Tokens.WETH, Tokens.CRV),
831
+ pool: Contracts.CURVE_TRI_CRV_POOL
832
+ })
833
+ );
834
+
763
835
  // ------------------------ yvCurve_stETH ------------------------
764
836
  yearnPriceFeedsByNetwork[1].push(SingeTokenPriceFeedData({token: Tokens.yvCurve_stETH}));
765
837
  yearnPriceFeedsByNetwork[42161].push(SingeTokenPriceFeedData({token: Tokens.yvCurve_stETH}));
@@ -21,5 +21,6 @@ enum PriceFeedType {
21
21
  THE_SAME_AS,
22
22
  REDSTONE_ORACLE,
23
23
  ERC4626_VAULT_ORACLE,
24
- NETWORK_DEPENDENT
24
+ NETWORK_DEPENDENT,
25
+ CURVE_USD_ORACLE
25
26
  }
@@ -157,6 +157,34 @@ contract SupportedContracts is Test, ISupportedContracts {
157
157
  name: "CURVE_GEAR_POOL"
158
158
  })
159
159
  );
160
+ contractDataByNetwork[1].push(
161
+ ContractData({
162
+ id: Contracts.CURVE_CRVUSD_USDC_POOL,
163
+ addr: 0x4DEcE678ceceb27446b35C672dC7d61F30bAD69E,
164
+ name: "CURVE_CRVUSD_USDC_POOL"
165
+ })
166
+ );
167
+ contractDataByNetwork[1].push(
168
+ ContractData({
169
+ id: Contracts.CURVE_CRVUSD_USDT_POOL,
170
+ addr: 0x390f3595bCa2Df7d23783dFd126427CCeb997BF4,
171
+ name: "CURVE_CRVUSD_USDT_POOL"
172
+ })
173
+ );
174
+ contractDataByNetwork[1].push(
175
+ ContractData({
176
+ id: Contracts.CURVE_CRVUSD_FRAX_POOL,
177
+ addr: 0x0CD6f267b2086bea681E922E19D40512511BE538,
178
+ name: "CURVE_CRVUSD_FRAX_POOL"
179
+ })
180
+ );
181
+ contractDataByNetwork[1].push(
182
+ ContractData({
183
+ id: Contracts.CURVE_TRI_CRV_POOL,
184
+ addr: 0x4eBdF703948ddCEA3B11f675B4D1Fba9d2414A14,
185
+ name: "CURVE_TRI_CRV_POOL"
186
+ })
187
+ );
160
188
  contractDataByNetwork[1].push(
161
189
  ContractData({
162
190
  id: Contracts.YEARN_DAI_VAULT,
@@ -333,6 +361,35 @@ contract SupportedContracts is Test, ISupportedContracts {
333
361
  })
334
362
  );
335
363
 
364
+ contractDataByNetwork[42161].push(
365
+ ContractData({
366
+ id: Contracts.CURVE_CRVUSD_USDC_POOL,
367
+ addr: 0x4DEcE678ceceb27446b35C672dC7d61F30bAD69E,
368
+ name: "CURVE_CRVUSD_USDC_POOL"
369
+ })
370
+ );
371
+ contractDataByNetwork[42161].push(
372
+ ContractData({
373
+ id: Contracts.CURVE_CRVUSD_USDT_POOL,
374
+ addr: 0x390f3595bCa2Df7d23783dFd126427CCeb997BF4,
375
+ name: "CURVE_CRVUSD_USDT_POOL"
376
+ })
377
+ );
378
+ contractDataByNetwork[42161].push(
379
+ ContractData({
380
+ id: Contracts.CURVE_CRVUSD_FRAX_POOL,
381
+ addr: 0x0CD6f267b2086bea681E922E19D40512511BE538,
382
+ name: "CURVE_CRVUSD_FRAX_POOL"
383
+ })
384
+ );
385
+ contractDataByNetwork[42161].push(
386
+ ContractData({
387
+ id: Contracts.CURVE_TRI_CRV_POOL,
388
+ addr: 0x4eBdF703948ddCEA3B11f675B4D1Fba9d2414A14,
389
+ name: "CURVE_TRI_CRV_POOL"
390
+ })
391
+ );
392
+
336
393
  contractDataByNetwork[42161].push(
337
394
  ContractData({
338
395
  id: Contracts.LIDO_WSTETH,
@@ -40,6 +40,7 @@ enum Tokens {
40
40
  RDNT,
41
41
  BAL,
42
42
  SHIB,
43
+ crvUSD,
43
44
  _3Crv,
44
45
  crvFRAX,
45
46
  steCRV,
@@ -48,6 +49,10 @@ enum Tokens {
48
49
  crvCVXETH,
49
50
  crvUSDTWBTCWETH,
50
51
  LDOETH,
52
+ crvUSDUSDC,
53
+ crvUSDUSDT,
54
+ crvUSDFRAX,
55
+ crvUSDETHCRV,
51
56
  FRAX3CRV,
52
57
  LUSD3CRV,
53
58
  gusd3CRV,
@@ -270,6 +270,14 @@ contract TokensDataLive {
270
270
  tokenType: TokenType.NORMAL_TOKEN
271
271
  })
272
272
  );
273
+ tokenDataByNetwork[1].push(
274
+ TokenData({
275
+ id: Tokens.crvUSD,
276
+ addr: 0x95ECDC6caAf7E4805FCeF2679A92338351D24297,
277
+ symbol: "crvUSD",
278
+ tokenType: TokenType.NORMAL_TOKEN
279
+ })
280
+ );
273
281
  tokenDataByNetwork[1].push(
274
282
  TokenData({
275
283
  id: Tokens._3Crv,
@@ -334,6 +342,38 @@ contract TokensDataLive {
334
342
  tokenType: TokenType.CURVE_LP_TOKEN
335
343
  })
336
344
  );
345
+ tokenDataByNetwork[1].push(
346
+ TokenData({
347
+ id: Tokens.crvUSDUSDC,
348
+ addr: 0x4DEcE678ceceb27446b35C672dC7d61F30bAD69E,
349
+ symbol: "crvUSDUSDC",
350
+ tokenType: TokenType.CURVE_LP_TOKEN
351
+ })
352
+ );
353
+ tokenDataByNetwork[1].push(
354
+ TokenData({
355
+ id: Tokens.crvUSDUSDT,
356
+ addr: 0x390f3595bCa2Df7d23783dFd126427CCeb997BF4,
357
+ symbol: "crvUSDUSDT",
358
+ tokenType: TokenType.CURVE_LP_TOKEN
359
+ })
360
+ );
361
+ tokenDataByNetwork[1].push(
362
+ TokenData({
363
+ id: Tokens.crvUSDFRAX,
364
+ addr: 0x0CD6f267b2086bea681E922E19D40512511BE538,
365
+ symbol: "crvUSDFRAX",
366
+ tokenType: TokenType.CURVE_LP_TOKEN
367
+ })
368
+ );
369
+ tokenDataByNetwork[1].push(
370
+ TokenData({
371
+ id: Tokens.crvUSDETHCRV,
372
+ addr: 0x4eBdF703948ddCEA3B11f675B4D1Fba9d2414A14,
373
+ symbol: "crvUSDETHCRV",
374
+ tokenType: TokenType.CURVE_LP_TOKEN
375
+ })
376
+ );
337
377
  tokenDataByNetwork[1].push(
338
378
  TokenData({
339
379
  id: Tokens.FRAX3CRV,
@@ -23,6 +23,10 @@ const APY_DICTIONARY = {
23
23
  crvCVXETH: "crypto-4",
24
24
  crvUSDTWBTCWETH: "factory-tricrypto-1",
25
25
  LDOETH: "factory-crypto-204",
26
+ crvUSDUSDC: "",
27
+ crvUSDUSDT: "",
28
+ crvUSDFRAX: "",
29
+ crvUSDETHCRV: "",
26
30
  };
27
31
  const CRV_APY_RESPONSE_DECIMALS = 100;
28
32
  // const CRYPTO = "https://api.curve.fi/api/getPools/ethereum/crypto";
@@ -7,7 +7,7 @@ import type { YearnLPToken } from "../tokens/yearn";
7
7
  import { AdapterInterface } from "./adapters";
8
8
  import { Protocols } from "./protocols";
9
9
  export type UniswapV2Contract = "UNISWAP_V2_ROUTER" | "SUSHISWAP_ROUTER";
10
- export type CurvePoolContract = "CURVE_3CRV_POOL" | "CURVE_FRAX_USDC_POOL" | "CURVE_STETH_GATEWAY" | "CURVE_FRAX_POOL" | "CURVE_LUSD_POOL" | "CURVE_GUSD_POOL" | "CURVE_SUSD_POOL" | "CURVE_SUSD_DEPOSIT" | "CURVE_OHMFRAXBP_POOL" | "CURVE_CRVETH_POOL" | "CURVE_CVXETH_POOL" | "CURVE_3CRYPTO_POOL" | "CURVE_MIM_POOL" | "CURVE_LDOETH_POOL";
10
+ export type CurvePoolContract = "CURVE_3CRV_POOL" | "CURVE_FRAX_USDC_POOL" | "CURVE_STETH_GATEWAY" | "CURVE_FRAX_POOL" | "CURVE_LUSD_POOL" | "CURVE_GUSD_POOL" | "CURVE_SUSD_POOL" | "CURVE_SUSD_DEPOSIT" | "CURVE_OHMFRAXBP_POOL" | "CURVE_CRVETH_POOL" | "CURVE_CVXETH_POOL" | "CURVE_3CRYPTO_POOL" | "CURVE_MIM_POOL" | "CURVE_LDOETH_POOL" | "CURVE_CRVUSD_USDC_POOL" | "CURVE_CRVUSD_USDT_POOL" | "CURVE_CRVUSD_FRAX_POOL" | "CURVE_TRI_CRV_POOL";
11
11
  export type YearnVaultContract = "YEARN_DAI_VAULT" | "YEARN_USDC_VAULT" | "YEARN_WETH_VAULT" | "YEARN_WBTC_VAULT" | "YEARN_CURVE_FRAX_VAULT" | "YEARN_CURVE_STETH_VAULT";
12
12
  export type ConvexPoolContract = "CONVEX_3CRV_POOL" | "CONVEX_FRAX_USDC_POOL" | "CONVEX_GUSD_POOL" | "CONVEX_SUSD_POOL" | "CONVEX_STECRV_POOL" | "CONVEX_FRAX3CRV_POOL" | "CONVEX_LUSD3CRV_POOL" | "CONVEX_OHMFRAXBP_POOL" | "CONVEX_MIM3CRV_POOL" | "CONVEX_CRVETH_POOL" | "CONVEX_CVXETH_POOL" | "CONVEX_3CRYPTO_POOL" | "CONVEX_LDOETH_POOL";
13
13
  export type AaveV2PoolContract = "AAVE_V2_DAI_POOL" | "AAVE_V2_USDC_POOL" | "AAVE_V2_USDT_POOL" | "AAVE_V2_WETH_POOL";
@@ -27,6 +27,10 @@ exports.contractsByNetwork = {
27
27
  CURVE_3CRYPTO_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDTWBTCWETH,
28
28
  CURVE_LDOETH_POOL: "0x9409280DC1e6D33AB7A8C6EC03e5763FB61772B5",
29
29
  CURVE_GEAR_POOL: "0x0E9B5B092caD6F1c5E6bc7f89Ffe1abb5c95F1C2",
30
+ CURVE_CRVUSD_USDC_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDUSDC,
31
+ CURVE_CRVUSD_USDT_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDUSDT,
32
+ CURVE_CRVUSD_FRAX_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDFRAX,
33
+ CURVE_TRI_CRV_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDETHCRV,
30
34
  // YEARN
31
35
  YEARN_DAI_VAULT: token_1.tokenDataByNetwork.Mainnet.yvDAI,
32
36
  YEARN_USDC_VAULT: token_1.tokenDataByNetwork.Mainnet.yvUSDC,
@@ -101,6 +105,10 @@ exports.contractsByNetwork = {
101
105
  CURVE_3CRYPTO_POOL: constants_1.NOT_DEPLOYED,
102
106
  CURVE_LDOETH_POOL: constants_1.NOT_DEPLOYED,
103
107
  CURVE_GEAR_POOL: constants_1.NOT_DEPLOYED,
108
+ CURVE_CRVUSD_USDC_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDUSDC,
109
+ CURVE_CRVUSD_USDT_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDUSDT,
110
+ CURVE_CRVUSD_FRAX_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDFRAX,
111
+ CURVE_TRI_CRV_POOL: token_1.tokenDataByNetwork.Mainnet.crvUSDETHCRV,
104
112
  // YEARN
105
113
  YEARN_DAI_VAULT: token_1.tokenDataByNetwork.Arbitrum.yvDAI,
106
114
  YEARN_USDC_VAULT: token_1.tokenDataByNetwork.Arbitrum.yvUSDC,
@@ -299,6 +307,38 @@ exports.contractParams = {
299
307
  lpToken: "LDOETH",
300
308
  tokens: ["WETH", "LDO"],
301
309
  },
310
+ CURVE_CRVUSD_USDC_POOL: {
311
+ name: "Curve crvUSDUSDC",
312
+ protocol: protocols_1.Protocols.Curve,
313
+ version: 20,
314
+ type: adapters_1.AdapterInterface.CURVE_V1_2ASSETS,
315
+ lpToken: "crvUSDUSDC",
316
+ tokens: ["crvUSD", "USDC"],
317
+ },
318
+ CURVE_CRVUSD_USDT_POOL: {
319
+ name: "Curve crvUSDUSDC",
320
+ protocol: protocols_1.Protocols.Curve,
321
+ version: 20,
322
+ type: adapters_1.AdapterInterface.CURVE_V1_2ASSETS,
323
+ lpToken: "crvUSDUSDT",
324
+ tokens: ["crvUSD", "USDT"],
325
+ },
326
+ CURVE_CRVUSD_FRAX_POOL: {
327
+ name: "Curve crvUSDUSDC",
328
+ protocol: protocols_1.Protocols.Curve,
329
+ version: 20,
330
+ type: adapters_1.AdapterInterface.CURVE_V1_2ASSETS,
331
+ lpToken: "crvUSDFRAX",
332
+ tokens: ["crvUSD", "FRAX"],
333
+ },
334
+ CURVE_TRI_CRV_POOL: {
335
+ name: "Curve crvUSDUSDC",
336
+ protocol: protocols_1.Protocols.Curve,
337
+ version: 20,
338
+ type: adapters_1.AdapterInterface.CURVE_V1_3ASSETS,
339
+ lpToken: "crvUSDETHCRV",
340
+ tokens: ["crvUSD", "WETH", "CRV"],
341
+ },
302
342
  YEARN_DAI_VAULT: {
303
343
  name: "Yearn DAI",
304
344
  protocol: protocols_1.Protocols.Yearn,
@@ -275,12 +275,12 @@ exports.priceFeedsByToken = {
275
275
  feeds: {
276
276
  Mainnet: {
277
277
  type: pricefeedType_1.PriceFeedType.BOUNDED_ORACLE,
278
- targetPriceFeed: "0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0",
278
+ priceFeed: "0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0",
279
279
  upperBound: (BigInt(1e8) * 11n) / 10n,
280
280
  },
281
281
  Arbitrum: {
282
282
  type: pricefeedType_1.PriceFeedType.BOUNDED_ORACLE,
283
- targetPriceFeed: "0x0411D28c94d85A36bC72Cb0f875dfA8371D8fFfF",
283
+ priceFeed: "0x0411D28c94d85A36bC72Cb0f875dfA8371D8fFfF",
284
284
  upperBound: (BigInt(1e8) * 11n) / 10n,
285
285
  },
286
286
  },
@@ -494,6 +494,26 @@ exports.priceFeedsByToken = {
494
494
  type: pricefeedType_1.PriceFeedType.CURVE_CRYPTO_ORACLE,
495
495
  assets: ["LDO", "WETH"],
496
496
  },
497
+ crvUSD: {
498
+ type: pricefeedType_1.PriceFeedType.CURVE_USD_ORACLE,
499
+ underlying: "USDC",
500
+ },
501
+ crvUSDUSDC: {
502
+ type: pricefeedType_1.PriceFeedType.CURVE_2LP_ORACLE,
503
+ assets: ["crvUSD", "USDC"],
504
+ },
505
+ crvUSDUSDT: {
506
+ type: pricefeedType_1.PriceFeedType.CURVE_2LP_ORACLE,
507
+ assets: ["crvUSD", "USDT"],
508
+ },
509
+ crvUSDFRAX: {
510
+ type: pricefeedType_1.PriceFeedType.CURVE_2LP_ORACLE,
511
+ assets: ["crvUSD", "FRAX"],
512
+ },
513
+ crvUSDETHCRV: {
514
+ type: pricefeedType_1.PriceFeedType.CURVE_CRYPTO_ORACLE,
515
+ assets: ["crvUSD", "WETH", "CRV"],
516
+ },
497
517
  // YEARN- CURVE TOKENS
498
518
  yvCurve_stETH: {
499
519
  type: pricefeedType_1.PriceFeedType.YEARN_ORACLE,
@@ -54,9 +54,9 @@ class PriceFeedsSuite {
54
54
  }
55
55
  break;
56
56
  case pricefeedType_1.PriceFeedType.BOUNDED_ORACLE:
57
- if (data.targetPriceFeed.startsWith("0x")) {
57
+ if (data.priceFeed.startsWith("0x")) {
58
58
  calls.push({
59
- address: data.targetPriceFeed,
59
+ address: data.priceFeed,
60
60
  interface: iFeed,
61
61
  method: "latestRoundData()",
62
62
  key: token,
@@ -24,7 +24,8 @@ export declare enum PriceFeedType {
24
24
  THE_SAME_AS = 14,
25
25
  REDSTONE_ORACLE = 15,
26
26
  ERC4626_VAULT_ORACLE = 16,
27
- NETWORK_DEPENDENT = 17
27
+ NETWORK_DEPENDENT = 17,
28
+ CURVE_USD_ORACLE = 18
28
29
  }
29
30
  export declare const HOUR_1: number;
30
31
  export declare const HOUR_24: number;
@@ -48,7 +49,8 @@ export type PriceFeedData = {
48
49
  type: PriceFeedType.ZERO_ORACLE;
49
50
  } | {
50
51
  type: PriceFeedType.BOUNDED_ORACLE;
51
- targetPriceFeed: string;
52
+ priceFeed: string;
53
+ stalenessPeriod?: number;
52
54
  upperBound: bigint;
53
55
  } | {
54
56
  type: PriceFeedType.WSTETH_ORACLE;
@@ -85,4 +87,7 @@ export type PriceFeedData = {
85
87
  } | {
86
88
  type: PriceFeedType.NETWORK_DEPENDENT;
87
89
  feeds: Record<NetworkType, PriceFeedData>;
90
+ } | {
91
+ type: PriceFeedType.CURVE_USD_ORACLE;
92
+ underlying: NormalToken;
88
93
  };
@@ -21,6 +21,7 @@ var PriceFeedType;
21
21
  PriceFeedType[PriceFeedType["REDSTONE_ORACLE"] = 15] = "REDSTONE_ORACLE";
22
22
  PriceFeedType[PriceFeedType["ERC4626_VAULT_ORACLE"] = 16] = "ERC4626_VAULT_ORACLE";
23
23
  PriceFeedType[PriceFeedType["NETWORK_DEPENDENT"] = 17] = "NETWORK_DEPENDENT";
24
+ PriceFeedType[PriceFeedType["CURVE_USD_ORACLE"] = 18] = "CURVE_USD_ORACLE";
24
25
  })(PriceFeedType = exports.PriceFeedType || (exports.PriceFeedType = {}));
25
26
  exports.HOUR_1 = 60 * 60;
26
27
  exports.HOUR_24 = 24 * exports.HOUR_1;
@@ -5,7 +5,7 @@ import { PartialRecord } from "../utils/types";
5
5
  import type { SupportedToken, TokenBase } from "./token";
6
6
  import { TokenType } from "./tokenType";
7
7
  export type CurveMetaTokens = "FRAX3CRV" | "LUSD3CRV" | "gusd3CRV" | "MIM_3LP3CRV" | "OHMFRAXBP";
8
- export type CurveLPToken = "3Crv" | "steCRV" | "crvPlain3andSUSD" | "crvFRAX" | "crvCRVETH" | "crvCVXETH" | "crvUSDTWBTCWETH" | "LDOETH" | CurveMetaTokens;
8
+ export type CurveLPToken = "3Crv" | "steCRV" | "crvPlain3andSUSD" | "crvFRAX" | "crvCRVETH" | "crvCVXETH" | "crvUSDTWBTCWETH" | "LDOETH" | "crvUSDUSDC" | "crvUSDUSDT" | "crvUSDFRAX" | "crvUSDETHCRV" | CurveMetaTokens;
9
9
  export type CurveLPTokenData = {
10
10
  symbol: CurveLPToken;
11
11
  type: TokenType.CURVE_LP_TOKEN;
@@ -304,6 +304,58 @@ exports.curveTokens = {
304
304
  },
305
305
  ],
306
306
  },
307
+ crvUSDUSDC: {
308
+ name: "Curve crvUSDUSDC",
309
+ symbol: "crvUSDUSDC",
310
+ type: tokenType_1.TokenType.CURVE_LP_TOKEN,
311
+ pool: "CURVE_CRVUSD_USDC_POOL",
312
+ lpActions: [
313
+ {
314
+ type: tradeTypes_1.TradeType.CurveWithdrawLP,
315
+ contract: "CURVE_CRVUSD_USDC_POOL",
316
+ tokenOut: ["crvUSD", "USDC"],
317
+ },
318
+ ],
319
+ },
320
+ crvUSDUSDT: {
321
+ name: "Curve crvUSDUSDT",
322
+ symbol: "crvUSDUSDT",
323
+ type: tokenType_1.TokenType.CURVE_LP_TOKEN,
324
+ pool: "CURVE_CRVUSD_USDT_POOL",
325
+ lpActions: [
326
+ {
327
+ type: tradeTypes_1.TradeType.CurveWithdrawLP,
328
+ contract: "CURVE_CRVUSD_USDT_POOL",
329
+ tokenOut: ["crvUSD", "USDT"],
330
+ },
331
+ ],
332
+ },
333
+ crvUSDFRAX: {
334
+ name: "Curve crvUSDFRAX",
335
+ symbol: "crvUSDFRAX",
336
+ type: tokenType_1.TokenType.CURVE_LP_TOKEN,
337
+ pool: "CURVE_CRVUSD_USDC_POOL",
338
+ lpActions: [
339
+ {
340
+ type: tradeTypes_1.TradeType.CurveWithdrawLP,
341
+ contract: "CURVE_CRVUSD_FRAX_POOL",
342
+ tokenOut: ["crvUSD", "FRAX"],
343
+ },
344
+ ],
345
+ },
346
+ crvUSDETHCRV: {
347
+ name: "Curve crvUSDETHCRV",
348
+ symbol: "crvUSDETHCRV",
349
+ type: tokenType_1.TokenType.CURVE_LP_TOKEN,
350
+ pool: "CURVE_TRI_CRV_POOL",
351
+ lpActions: [
352
+ {
353
+ type: tradeTypes_1.TradeType.CurveWithdrawLP,
354
+ contract: "CURVE_TRI_CRV_POOL",
355
+ tokenOut: ["crvUSD", "WETH", "CRV"],
356
+ },
357
+ ],
358
+ },
307
359
  ...exports.curveMetaTokens,
308
360
  };
309
361
  const isCurveLPToken = (t) => typeof t === "string" && !!exports.curveTokens[t];
@@ -47,6 +47,11 @@ exports.decimals = {
47
47
  crvCVXETH: 18,
48
48
  crvUSDTWBTCWETH: 18,
49
49
  LDOETH: 18,
50
+ crvUSD: 18,
51
+ crvUSDUSDC: 18,
52
+ crvUSDUSDT: 18,
53
+ crvUSDETHCRV: 18,
54
+ crvUSDFRAX: 18,
50
55
  cvx3Crv: 18,
51
56
  cvxcrvFRAX: 18,
52
57
  cvxsteCRV: 18,
@@ -1,7 +1,7 @@
1
1
  import { TradeAction } from "../pathfinder/tradeTypes";
2
2
  import type { TokenBase } from "./token";
3
3
  import { TokenType } from "./tokenType";
4
- export type NormalToken = "1INCH" | "AAVE" | "COMP" | "CRV" | "DPI" | "FEI" | "LINK" | "SNX" | "UNI" | "USDT" | "USDC" | "DAI" | "WETH" | "WBTC" | "YFI" | "STETH" | "wstETH" | "CVX" | "FRAX" | "FXS" | "LDO" | "LUSD" | "sUSD" | "GUSD" | "LQTY" | "OHM" | "MIM" | "SPELL" | "GMX" | "ARB" | "RDNT" | "BAL" | "ARB" | "SHIB";
4
+ export type NormalToken = "1INCH" | "AAVE" | "COMP" | "CRV" | "DPI" | "FEI" | "LINK" | "SNX" | "UNI" | "USDT" | "USDC" | "DAI" | "WETH" | "WBTC" | "YFI" | "STETH" | "wstETH" | "CVX" | "FRAX" | "FXS" | "LDO" | "LUSD" | "sUSD" | "GUSD" | "LQTY" | "OHM" | "MIM" | "SPELL" | "GMX" | "ARB" | "RDNT" | "BAL" | "ARB" | "SHIB" | "crvUSD";
5
5
  export type NormalTokenData = {
6
6
  symbol: NormalToken;
7
7
  type: TokenType.NORMAL_TOKEN;
@@ -823,6 +823,33 @@ exports.normalTokens = {
823
823
  ],
824
824
  lpActions: [],
825
825
  },
826
+ crvUSD: {
827
+ name: "crvUSD",
828
+ symbol: "crvUSD",
829
+ type: tokenType_1.TokenType.NORMAL_TOKEN,
830
+ swapActions: [
831
+ {
832
+ type: tradeTypes_1.TradeType.CurveExchange,
833
+ contract: "CURVE_CRVUSD_USDC_POOL",
834
+ tokenOut: ["USDC"],
835
+ },
836
+ {
837
+ type: tradeTypes_1.TradeType.CurveExchange,
838
+ contract: "CURVE_CRVUSD_USDT_POOL",
839
+ tokenOut: ["USDT"],
840
+ },
841
+ {
842
+ type: tradeTypes_1.TradeType.CurveExchange,
843
+ contract: "CURVE_CRVUSD_FRAX_POOL",
844
+ tokenOut: ["FRAX"],
845
+ },
846
+ {
847
+ type: tradeTypes_1.TradeType.CurveExchange,
848
+ contract: "CURVE_TRI_CRV_POOL",
849
+ tokenOut: ["WETH", "CRV"],
850
+ },
851
+ ],
852
+ },
826
853
  };
827
854
  const isNormalToken = (t) => typeof t === "string" && !!exports.normalTokens[t];
828
855
  exports.isNormalToken = isNormalToken;
@@ -78,6 +78,11 @@ exports.tokenDataByNetwork = {
78
78
  crvCVXETH: "0x3A283D9c08E8b55966afb64C515f5143cf907611",
79
79
  crvUSDTWBTCWETH: "0xf5f5B97624542D72A9E06f04804Bf81baA15e2B4",
80
80
  LDOETH: "0xb79565c01b7Ae53618d9B847b9443aAf4f9011e7",
81
+ crvUSD: "0x95ECDC6caAf7E4805FCeF2679A92338351D24297",
82
+ crvUSDUSDC: "0x4DEcE678ceceb27446b35C672dC7d61F30bAD69E",
83
+ crvUSDUSDT: "0x390f3595bCa2Df7d23783dFd126427CCeb997BF4",
84
+ crvUSDFRAX: "0x0CD6f267b2086bea681E922E19D40512511BE538",
85
+ crvUSDETHCRV: "0x4eBdF703948ddCEA3B11f675B4D1Fba9d2414A14",
81
86
  // CONVEX LP TOKENS
82
87
  cvx3Crv: "0x30D9410ED1D5DA1F6C8391af5338C93ab8d4035C",
83
88
  cvxcrvFRAX: "0x117A0bab81F25e60900787d98061cCFae023560c",
@@ -202,6 +207,10 @@ exports.tokenDataByNetwork = {
202
207
  crvCVXETH: constants_1.NOT_DEPLOYED,
203
208
  crvUSDTWBTCWETH: constants_1.NOT_DEPLOYED,
204
209
  LDOETH: constants_1.NOT_DEPLOYED,
210
+ crvUSDUSDC: constants_1.NOT_DEPLOYED,
211
+ crvUSDUSDT: constants_1.NOT_DEPLOYED,
212
+ crvUSDFRAX: constants_1.NOT_DEPLOYED,
213
+ crvUSDETHCRV: constants_1.NOT_DEPLOYED,
205
214
  // CONVEX LP TOKENS
206
215
  cvx3Crv: constants_1.NOT_DEPLOYED,
207
216
  cvxcrvFRAX: constants_1.NOT_DEPLOYED,
@@ -216,6 +225,7 @@ exports.tokenDataByNetwork = {
216
225
  cvxcrvCVXETH: constants_1.NOT_DEPLOYED,
217
226
  cvxcrvUSDTWBTCWETH: constants_1.NOT_DEPLOYED,
218
227
  cvxLDOETH: constants_1.NOT_DEPLOYED,
228
+ crvUSD: constants_1.NOT_DEPLOYED,
219
229
  // CONVEX PHANTOM TOKEN ADDRESSES
220
230
  stkcvx3Crv: constants_1.NOT_DEPLOYED,
221
231
  stkcvxcrvFRAX: constants_1.NOT_DEPLOYED,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "2.1.13",
3
+ "version": "2.1.15",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -13,7 +13,8 @@
13
13
  "scripts": {
14
14
  "clean": "rm -rf lib",
15
15
  "build": "tsc --p tsconfig.build.json",
16
- "bindings": "yarn ts-node ./scripts/generate.ts",
16
+ "bindings": "yarn ts-node ./scripts/generate.ts && forge b && forge fmt",
17
+ "decimals": "yarn ts-node ./scripts/generate_decimals.ts",
17
18
  "dev": "tsc -w --p tsconfig.build.json",
18
19
  "pub": "rm -rf ./src/types/hardhat.ts && cp ./src/types/*.d.ts ./lib/types && tsc --p tsconfig.build.json && yarn publish",
19
20
  "copyTypes": "node ./scripts/copyTypes.js",