@gearbox-protocol/sdk 2.1.18 → 2.1.19

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.
@@ -23,10 +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
+ crvUSDUSDC: "factory-crvusd-0",
27
+ crvUSDUSDT: "factory-crvusd-1",
28
+ crvUSDFRAX: "factory-crvusd-4",
29
+ crvUSDETHCRV: "factory-tricrypto-4", // 0x4eBdF703948ddCEA3B11f675B4D1Fba9d2414A14
30
30
  };
31
31
  const CRV_APY_RESPONSE_DECIMALS = 100;
32
32
  // const CRYPTO = "https://api.curve.fi/api/getPools/ethereum/crypto";
@@ -36,26 +36,24 @@ const CURVE_MAIN_URL = "https://api.curve.fi/api/getPools/ethereum/main";
36
36
  const CURVE_FACTORY_CRYPTO_URL = "https://api.curve.fi/api/getPools/ethereum/factory-crypto";
37
37
  const CURVE_CRYPTO_URL = "https://api.curve.fi/api/getPools/ethereum/crypto";
38
38
  const CURVE_FACTORY_TRICRYPTO_URL = "https://api.curve.fi/api/getPools/ethereum/factory-tricrypto";
39
+ const CURVE_FACTORY_CRVUSD_URL = "https://api.curve.fi/api/getPools/ethereum/factory-crvusd";
39
40
  async function getCurveAPY() {
40
41
  try {
41
- const [{ data: apyData }, { data: main }, { data: factoryCrypto }, { data: crypto }, { data: factoryTricrypto },] = await Promise.all([
42
+ const [{ data: apyData }, ...restData] = await Promise.all([
42
43
  axios_1.default.get(CURVE_APY_URL),
43
44
  axios_1.default.get(CURVE_MAIN_URL),
44
45
  axios_1.default.get(CURVE_FACTORY_CRYPTO_URL),
45
46
  axios_1.default.get(CURVE_CRYPTO_URL),
46
47
  axios_1.default.get(CURVE_FACTORY_TRICRYPTO_URL),
48
+ axios_1.default.get(CURVE_FACTORY_CRVUSD_URL),
47
49
  ]);
48
50
  const { apys } = apyData || {};
49
- const { poolData: mainPoolData = [] } = main?.data || {};
50
- const { poolData: factoryCryptoPoolData = [] } = factoryCrypto?.data || {};
51
- const { poolData: cryptoPoolData = [] } = crypto?.data || {};
52
- const { poolData: factoryTricryptoPoolData = [] } = factoryTricrypto?.data || {};
53
- const poolDataByID = Object.fromEntries([
54
- ...mainPoolData.map(p => [p.id, p]),
55
- ...factoryCryptoPoolData.map(p => [p.id, p]),
56
- ...cryptoPoolData.map(p => [p.id, p]),
57
- ...factoryTricryptoPoolData.map(p => [p.id, p]),
58
- ]);
51
+ const poolDataByID = Object.fromEntries(restData
52
+ .map(resp => {
53
+ const { poolData = [] } = resp?.data?.data || {};
54
+ return poolData.map(p => [p.id, p]);
55
+ })
56
+ .flat(1));
59
57
  const curveAPY = mappers_1.TypedObjectUtils.entries(APY_DICTIONARY).reduce((acc, [curveSymbol, poolId]) => {
60
58
  const { baseApy, crvApy } = apys[poolId] || {};
61
59
  if (baseApy === undefined)
@@ -11,14 +11,19 @@ const GAS_PER_BLOCK = 400e6;
11
11
  class PathFinder {
12
12
  pathFinder;
13
13
  network;
14
- static connectors = ["USDC", "WETH", "DAI"];
14
+ static connectors = [
15
+ "USDC",
16
+ "WETH",
17
+ "DAI",
18
+ "FRAX",
19
+ ];
15
20
  _connectors;
16
21
  constructor(address, provider, network = "Mainnet", connectors = PathFinder.connectors) {
17
22
  this.pathFinder = types_1.IRouter__factory.connect(address, provider);
18
23
  this.network = network;
19
24
  this._connectors = connectors
20
25
  .map(c => token_1.tokenDataByNetwork[this.network][c]?.toLowerCase())
21
- .filter(t => !t);
26
+ .filter(t => !!t);
22
27
  }
23
28
  async findAllSwaps(creditAccount, swapOperation, tokenIn, tokenOut, amount, slippage) {
24
29
  const connectors = this.getAvailableConnectors(creditAccount.balances);
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const chai_1 = require("chai");
4
+ const ethers_1 = require("ethers");
4
5
  const constants_1 = require("../core/constants");
6
+ const token_1 = require("../tokens/token");
5
7
  const pathfinder_1 = require("./pathfinder");
6
8
  describe("PathFinder test", () => {
7
9
  it("compare works correctly", () => {
@@ -20,4 +22,19 @@ describe("PathFinder test", () => {
20
22
  result = pathfinder_1.PathFinder.compare(r1, r2, constants_1.RAY * 2n);
21
23
  (0, chai_1.expect)(result).to.be.eql(r1);
22
24
  });
25
+ it("has all expected connectors", () => {
26
+ const pf = new pathfinder_1.PathFinder("", new ethers_1.providers.JsonRpcProvider(), "Mainnet");
27
+ const allowedTokens = {
28
+ [token_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase()]: true,
29
+ [token_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase()]: true,
30
+ [token_1.tokenDataByNetwork.Mainnet.DAI.toLowerCase()]: true,
31
+ [token_1.tokenDataByNetwork.Mainnet.FRAX.toLowerCase()]: true,
32
+ };
33
+ (0, chai_1.expect)(pf.getAvailableConnectors(allowedTokens)).to.be.deep.equal([
34
+ token_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase(),
35
+ token_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase(),
36
+ token_1.tokenDataByNetwork.Mainnet.DAI.toLowerCase(),
37
+ token_1.tokenDataByNetwork.Mainnet.FRAX.toLowerCase(),
38
+ ]);
39
+ });
23
40
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "2.1.18",
3
+ "version": "2.1.19",
4
4
  "description": "Gearbox SDK",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",