@defisaver/positions-sdk 0.0.102 → 0.0.104

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.
@@ -1,9 +1,10 @@
1
- import { LlamaLendAggregatedPositionData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
1
+ import { LlamaLendAggregatedPositionData, LlamaLendAssetsData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
2
2
  import { NetworkNumber } from '../../types/common';
3
- export declare const getLlamaLendAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest }: {
3
+ export declare const getLlamaLendAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData, ...rest }: {
4
4
  loanExists: boolean;
5
5
  usedAssets: LlamaLendUsedAssets;
6
6
  network: NetworkNumber;
7
7
  selectedMarket: LlamaLendMarketData;
8
8
  numOfBands: number | string;
9
+ assetsData: LlamaLendAssetsData;
9
10
  }) => LlamaLendAggregatedPositionData;
@@ -18,9 +18,10 @@ exports.getLlamaLendAggregatedData = void 0;
18
18
  const decimal_js_1 = __importDefault(require("decimal.js"));
19
19
  const moneymarket_1 = require("../../moneymarket");
20
20
  const utils_1 = require("../../services/utils");
21
+ const staking_1 = require("../../staking");
21
22
  const getLlamaLendAggregatedData = (_a) => {
22
23
  var _b;
23
- var { loanExists, usedAssets, network, selectedMarket, numOfBands } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands"]);
24
+ var { loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands", "assetsData"]);
24
25
  const collAsset = selectedMarket.collAsset;
25
26
  const debtAsset = selectedMarket.baseAsset;
26
27
  const payload = {};
@@ -29,6 +30,10 @@ const getLlamaLendAggregatedData = (_a) => {
29
30
  payload.suppliedUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ collateral }) => collateral, ({ suppliedUsd }) => suppliedUsd);
30
31
  payload.borrowedUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
31
32
  payload.suppliedForYieldUsd = (0, moneymarket_1.getAssetsTotal)(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedForYield }) => suppliedForYield || '0');
33
+ const { netApy, incentiveUsd, totalInterestUsd } = (0, staking_1.calculateNetApy)(usedAssets, assetsData);
34
+ payload.netApy = netApy;
35
+ payload.incentiveUsd = incentiveUsd;
36
+ payload.totalInterestUsd = totalInterestUsd;
32
37
  payload.ratio = loanExists
33
38
  ? new decimal_js_1.default(payload.suppliedUsd)
34
39
  .dividedBy(payload.borrowedUsd)
@@ -1,7 +1,7 @@
1
1
  import Web3 from 'web3';
2
2
  import { LlamaLendGlobalMarketData, LlamaLendMarketData, LlamaLendUserData } from '../types';
3
3
  import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
4
- export declare const getLlamaLendGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendGlobalMarketData>;
4
+ export declare const getLlamaLendGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3) => Promise<LlamaLendGlobalMarketData>;
5
5
  export declare const getLlamaLendAccountBalances: (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
6
6
  export declare const getLlamaLendUserData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData) => Promise<LlamaLendUserData>;
7
- export declare const getLlamaLendFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendUserData>;
7
+ export declare const getLlamaLendFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3) => Promise<LlamaLendUserData>;
@@ -21,6 +21,7 @@ const contracts_1 = require("../contracts");
21
21
  const llamaLendHelpers_1 = require("../helpers/llamaLendHelpers");
22
22
  const utils_1 = require("../services/utils");
23
23
  const llamaLend_1 = require("../markets/llamaLend");
24
+ const staking_1 = require("../staking");
24
25
  const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
25
26
  const contract = (0, contracts_1.LlamaLendViewContract)(web3, network);
26
27
  const minBand = parseInt(_minBand, 10);
@@ -57,7 +58,7 @@ const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) =>
57
58
  highPrice: (0, tokens_1.assetAmountInEth)(band.highPrice),
58
59
  }));
59
60
  });
60
- const getLlamaLendGlobalData = (web3, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
61
+ const getLlamaLendGlobalData = (web3, network, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
61
62
  const contract = (0, contracts_1.LlamaLendViewContract)(web3, network);
62
63
  const collAsset = selectedMarket.collAsset;
63
64
  const debtAsset = selectedMarket.baseAsset;
@@ -104,6 +105,10 @@ const getLlamaLendGlobalData = (web3, network, selectedMarket) => __awaiter(void
104
105
  canBeSupplied: true,
105
106
  canBeBorrowed: false,
106
107
  };
108
+ if (staking_1.STAKING_ASSETS.includes(collAsset)) {
109
+ assetsData[collAsset].incentiveSupplyApy = yield (0, staking_1.getStakingApy)(collAsset, defaultWeb3);
110
+ assetsData[collAsset].incentiveSupplyToken = collAsset;
111
+ }
107
112
  return {
108
113
  A: data.A,
109
114
  loanDiscount: data.loanDiscount,
@@ -224,12 +229,12 @@ const getLlamaLendUserData = (web3, network, address, selectedMarket, marketData
224
229
  priceHigh,
225
230
  priceLow, liquidationDiscount: (0, tokens_1.assetAmountInEth)(data.liquidationDiscount), numOfBands: data.N, usedAssets,
226
231
  status }), (0, llamaLendHelpers_1.getLlamaLendAggregatedData)({
227
- loanExists: data.loanExists, usedAssets, network: common_1.NetworkNumber.Eth, selectedMarket, numOfBands: data.N,
232
+ loanExists: data.loanExists, usedAssets, network: common_1.NetworkNumber.Eth, selectedMarket, numOfBands: data.N, assetsData,
228
233
  })), { userBands });
229
234
  });
230
235
  exports.getLlamaLendUserData = getLlamaLendUserData;
231
- const getLlamaLendFullPositionData = (web3, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
232
- const marketData = yield (0, exports.getLlamaLendGlobalData)(web3, network, selectedMarket);
236
+ const getLlamaLendFullPositionData = (web3, network, address, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
237
+ const marketData = yield (0, exports.getLlamaLendGlobalData)(web3, network, selectedMarket, defaultWeb3);
233
238
  const positionData = yield (0, exports.getLlamaLendUserData)(web3, network, address, selectedMarket, marketData);
234
239
  return positionData;
235
240
  });
@@ -10,9 +10,9 @@ const ethAddresses = {
10
10
  vaultAddress: '0x8cf1DE26729cfB7137AF1A6B2a665e099EC319b5',
11
11
  },
12
12
  [types_1.LlamaLendVersions.LLWstethCrvusd2]: {
13
- controllerId: 11,
14
- controllerAddress: '0xB536FEa3a01c95Dd09932440eC802A75410139D6',
15
- vaultAddress: '0x4a7999c55d3a93dAf72EA112985e57c2E3b9e95D',
13
+ controllerId: 13,
14
+ controllerAddress: '0x5756A035F276a8095A922931F224F4ed06149608',
15
+ vaultAddress: '0x21CF1c5Dc48C603b89907FE6a7AE83EA5e3709aF',
16
16
  },
17
17
  [types_1.LlamaLendVersions.LLSusdeCrvusd]: {
18
18
  controllerId: 7,
@@ -64,11 +64,12 @@ const ethAddresses = {
64
64
  controllerAddress: '0xcaD85b7fe52B1939DCEebEe9bCf0b2a5Aa0cE617',
65
65
  vaultAddress: '0xccd37EB6374Ae5b1f0b85ac97eFf14770e0D0063',
66
66
  },
67
- [types_1.LlamaLendVersions.LLPufethCrvusd]: {
68
- controllerId: 10,
69
- controllerAddress: '0x4f87158350c296955966059C50263F711cE0817C',
70
- vaultAddress: '0xff467c6E827ebbEa64DA1ab0425021E6c89Fbe0d',
71
- },
67
+ // temp disabled
68
+ // [LlamaLendVersions.LLPufethCrvusd]: {
69
+ // controllerId: 10,
70
+ // controllerAddress: '0x4f87158350c296955966059C50263F711cE0817C',
71
+ // vaultAddress: '0xff467c6E827ebbEa64DA1ab0425021E6c89Fbe0d',
72
+ // },
72
73
  [types_1.LlamaLendVersions.LLUsdeCrvusd]: {
73
74
  controllerId: 14,
74
75
  controllerAddress: '0x74f88Baa966407b50c10B393bBD789639EFfE78B',
@@ -17,7 +17,6 @@ export declare const LLAMALEND_FXN_CRVUSD_MARKET: (networkId: NetworkNumber) =>
17
17
  export declare const LLAMALEND_WBTC_CRVUSD_MARKET: (networkId: NetworkNumber) => LlamaLendMarketData;
18
18
  export declare const LLAMALEND_WBTC_CRVUSD_MARKET_2: (networkId: NetworkNumber) => LlamaLendMarketData;
19
19
  export declare const LLAMALEND_USDE_CRVUSD_MARKET: (networkId: NetworkNumber) => LlamaLendMarketData;
20
- export declare const LLAMALEND_PUFETH_CRVUSD_MARKET: (networkId: NetworkNumber) => LlamaLendMarketData;
21
20
  export declare const LlamaLendMarkets: (networkId: NetworkNumber) => Record<LlamaLendVersionsType, LlamaLendMarketData>;
22
21
  export declare const getLlamaLendMarketData: (market: LlamaLendVersionsType, network?: NetworkNumber) => LlamaLendMarketData;
23
22
  export declare const getLlamaLendMarketFromControllerAddress: (controllerAddress: string, network: NetworkNumber) => LlamaLendMarketData;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLlamaLendMarketFromControllerAddress = exports.getLlamaLendMarketData = exports.LlamaLendMarkets = exports.LLAMALEND_PUFETH_CRVUSD_MARKET = exports.LLAMALEND_USDE_CRVUSD_MARKET = exports.LLAMALEND_WBTC_CRVUSD_MARKET_2 = exports.LLAMALEND_WBTC_CRVUSD_MARKET = exports.LLAMALEND_FXN_CRVUSD_MARKET = exports.LLAMALEND_ARB_CRVUSD_MARKET_2 = exports.LLAMALEND_ARB_CRVUSD_MARKET = exports.LLAMALEND_WETH_CRVUSD_MARKET_2 = exports.LLAMALEND_CRVUSD_WETH_MARKET = exports.LLAMALEND_WETH_CRVUSD_MARKET = exports.LLAMALEND_CRVUSD_TBTC_MARKET = exports.LLAMALEND_TBTC_CRVUSD_MARKET = exports.LLAMALEND_CRVUSD_CRV_MARKET = exports.LLAMALEND_CRV_CRVUSD_MARKET = exports.LLAMALEND_SUSDE_CRVUSD_MARKET_2 = exports.LLAMALEND_SUSDE_CRVUSD_MARKET = exports.LLAMALEND_WSTETH_CRVUSD_MARKET_2 = exports.LLAMALEND_WSTETH_CRVUSD_MARKET = void 0;
3
+ exports.getLlamaLendMarketFromControllerAddress = exports.getLlamaLendMarketData = exports.LlamaLendMarkets = exports.LLAMALEND_USDE_CRVUSD_MARKET = exports.LLAMALEND_WBTC_CRVUSD_MARKET_2 = exports.LLAMALEND_WBTC_CRVUSD_MARKET = exports.LLAMALEND_FXN_CRVUSD_MARKET = exports.LLAMALEND_ARB_CRVUSD_MARKET_2 = exports.LLAMALEND_ARB_CRVUSD_MARKET = exports.LLAMALEND_WETH_CRVUSD_MARKET_2 = exports.LLAMALEND_CRVUSD_WETH_MARKET = exports.LLAMALEND_WETH_CRVUSD_MARKET = exports.LLAMALEND_CRVUSD_TBTC_MARKET = exports.LLAMALEND_TBTC_CRVUSD_MARKET = exports.LLAMALEND_CRVUSD_CRV_MARKET = exports.LLAMALEND_CRV_CRVUSD_MARKET = exports.LLAMALEND_SUSDE_CRVUSD_MARKET_2 = exports.LLAMALEND_SUSDE_CRVUSD_MARKET = exports.LLAMALEND_WSTETH_CRVUSD_MARKET_2 = exports.LLAMALEND_WSTETH_CRVUSD_MARKET = void 0;
4
4
  const types_1 = require("../../types");
5
5
  const common_1 = require("../../types/common");
6
6
  const contractAddresses_1 = require("./contractAddresses");
@@ -38,8 +38,17 @@ const LLAMALEND_WBTC_CRVUSD_MARKET_2 = (networkId) => (Object.assign({ chainIds:
38
38
  exports.LLAMALEND_WBTC_CRVUSD_MARKET_2 = LLAMALEND_WBTC_CRVUSD_MARKET_2;
39
39
  const LLAMALEND_USDE_CRVUSD_MARKET = (networkId) => (Object.assign({ chainIds: [common_1.NetworkNumber.Eth], label: 'LlamaLend - USDe/crvUSD', shortLabel: 'USDe/crvUSD', value: types_1.LlamaLendVersions.LLUsdeCrvusd, collAsset: 'USDe', baseAsset: 'crvUSD', url: 'usdecrvusd' }, (0, contractAddresses_1.getLLamaLendAddresses)(networkId, types_1.LlamaLendVersions.LLUsdeCrvusd)));
40
40
  exports.LLAMALEND_USDE_CRVUSD_MARKET = LLAMALEND_USDE_CRVUSD_MARKET;
41
- const LLAMALEND_PUFETH_CRVUSD_MARKET = (networkId) => (Object.assign({ chainIds: [common_1.NetworkNumber.Eth], label: 'LlamaLend - pufETH/crvUSD', shortLabel: 'pufETH/crvUSD', value: types_1.LlamaLendVersions.LLPufethCrvusd, collAsset: 'pufETH', baseAsset: 'crvUSD', url: 'pufethcrvusd' }, (0, contractAddresses_1.getLLamaLendAddresses)(networkId, types_1.LlamaLendVersions.LLPufethCrvusd)));
42
- exports.LLAMALEND_PUFETH_CRVUSD_MARKET = LLAMALEND_PUFETH_CRVUSD_MARKET;
41
+ // temp disabled
42
+ // export const LLAMALEND_PUFETH_CRVUSD_MARKET = (networkId: NetworkNumber): LlamaLendMarketData => ({
43
+ // chainIds: [NetworkNumber.Eth],
44
+ // label: 'LlamaLend - pufETH/crvUSD',
45
+ // shortLabel: 'pufETH/crvUSD',
46
+ // value: LlamaLendVersions.LLPufethCrvusd,
47
+ // collAsset: 'pufETH',
48
+ // baseAsset: 'crvUSD',
49
+ // url: 'pufethcrvusd',
50
+ // ...getLLamaLendAddresses(networkId, LlamaLendVersions.LLPufethCrvusd),
51
+ // });
43
52
  const LlamaLendMarkets = (networkId) => ({
44
53
  [types_1.LlamaLendVersions.LLWstethCrvusd]: (0, exports.LLAMALEND_WSTETH_CRVUSD_MARKET)(networkId),
45
54
  [types_1.LlamaLendVersions.LLWstethCrvusd2]: (0, exports.LLAMALEND_WSTETH_CRVUSD_MARKET_2)(networkId),
@@ -58,7 +67,7 @@ const LlamaLendMarkets = (networkId) => ({
58
67
  [types_1.LlamaLendVersions.LLSusdeCrvusd]: (0, exports.LLAMALEND_SUSDE_CRVUSD_MARKET)(networkId),
59
68
  [types_1.LlamaLendVersions.LLSusdeCrvusd2]: (0, exports.LLAMALEND_SUSDE_CRVUSD_MARKET_2)(networkId),
60
69
  [types_1.LlamaLendVersions.LLUsdeCrvusd]: (0, exports.LLAMALEND_USDE_CRVUSD_MARKET)(networkId),
61
- [types_1.LlamaLendVersions.LLPufethCrvusd]: (0, exports.LLAMALEND_PUFETH_CRVUSD_MARKET)(networkId),
70
+ // [LlamaLendVersions.LLPufethCrvusd]: LLAMALEND_PUFETH_CRVUSD_MARKET(networkId), // temp disabled
62
71
  });
63
72
  exports.LlamaLendMarkets = LlamaLendMarkets;
64
73
  const getLlamaLendMarketData = (market, network = 1) => (0, exports.LlamaLendMarkets)(network)[market];
@@ -91,7 +91,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
91
91
  const data = yield res.json();
92
92
  return data.apy;
93
93
  });
94
- exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx'];
94
+ exports.STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH'];
95
95
  const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefined) => {
96
96
  try {
97
97
  if (asset === 'stETH' || asset === 'wstETH')
@@ -112,6 +112,10 @@ const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefine
112
112
  return getApyFromDfsApi('osETH');
113
113
  if (asset === 'ETHx')
114
114
  return getApyFromDfsApi('ETHx');
115
+ if (asset === 'rsETH')
116
+ return getApyFromDfsApi('rsETH');
117
+ if (asset === 'pufETH')
118
+ return getApyFromDfsApi('pufETH');
115
119
  }
116
120
  catch (e) {
117
121
  console.error(`Failed to fetch APY for ${asset}`);
@@ -6,7 +6,6 @@ export declare enum LLVersionsEth {
6
6
  LLSusdeCrvusd = "llamaLendsUSDecrvUSD",
7
7
  LLSusdeCrvusd2 = "llamaLendsUSDecrvUSD2",
8
8
  LLWbtcCrvusd = "llamaLendWBTCcrvUSD",
9
- LLPufethCrvusd = "llamaLendPufETHcrvUSD",
10
9
  LLUsdeCrvusd = "llamaLendUSDecrvUSD",
11
10
  LLWethCrvusd2 = "llamaLendWETHcrvUSD2",
12
11
  LLCrvCrvusd = "llamaLendCRVcrvUSD",
@@ -24,7 +23,7 @@ export declare enum LLVersionsArb {
24
23
  LLWbtcCrvusd2 = "llamaLendWBTCcrvUSD2",
25
24
  LLCrvCrvusd = "llamaLendCRVcrvUSD",
26
25
  LLWethCrvusd = "llamaLendWETHcrvUSD",
27
- LLWeth2Crvusd = "llamaLendWETHcrvUSD2"
26
+ LLWethCrvusd2 = "llamaLendWETHcrvUSD2"
28
27
  }
29
28
  export declare const LlamaLendVersions: {
30
29
  readonly LLArbCrvusd: LLVersionsArb.LLArbCrvusd;
@@ -34,14 +33,12 @@ export declare const LlamaLendVersions: {
34
33
  readonly LLWbtcCrvusd2: LLVersionsArb.LLWbtcCrvusd2;
35
34
  readonly LLCrvCrvusd: LLVersionsArb.LLCrvCrvusd;
36
35
  readonly LLWethCrvusd: LLVersionsArb.LLWethCrvusd;
37
- readonly LLWeth2Crvusd: LLVersionsArb.LLWeth2Crvusd;
36
+ readonly LLWethCrvusd2: LLVersionsArb.LLWethCrvusd2;
38
37
  readonly LLWstethCrvusd: LLVersionsEth.LLWstethCrvusd;
39
38
  readonly LLWstethCrvusd2: LLVersionsEth.LLWstethCrvusd2;
40
39
  readonly LLSusdeCrvusd: LLVersionsEth.LLSusdeCrvusd;
41
40
  readonly LLSusdeCrvusd2: LLVersionsEth.LLSusdeCrvusd2;
42
- readonly LLPufethCrvusd: LLVersionsEth.LLPufethCrvusd;
43
41
  readonly LLUsdeCrvusd: LLVersionsEth.LLUsdeCrvusd;
44
- readonly LLWethCrvusd2: LLVersionsEth.LLWethCrvusd2;
45
42
  readonly LLCrvusdCrv: LLVersionsEth.LLCrvusdCrv;
46
43
  readonly LLTbtcCrvusd: LLVersionsEth.LLTbtcCrvusd;
47
44
  readonly LLCrvusdTbtc: LLVersionsEth.LLCrvusdTbtc;
@@ -116,6 +113,9 @@ export interface LlamaLendAggregatedPositionData {
116
113
  leveragedType: string;
117
114
  leveragedAsset?: string;
118
115
  liquidationPrice?: string;
116
+ netApy: string;
117
+ incentiveUsd: string;
118
+ totalInterestUsd: string;
119
119
  }
120
120
  export interface LlamaLendUsedAsset {
121
121
  isSupplied: boolean;
@@ -9,7 +9,7 @@ var LLVersionsEth;
9
9
  LLVersionsEth["LLSusdeCrvusd"] = "llamaLendsUSDecrvUSD";
10
10
  LLVersionsEth["LLSusdeCrvusd2"] = "llamaLendsUSDecrvUSD2";
11
11
  LLVersionsEth["LLWbtcCrvusd"] = "llamaLendWBTCcrvUSD";
12
- LLVersionsEth["LLPufethCrvusd"] = "llamaLendPufETHcrvUSD";
12
+ // LLPufethCrvusd = 'llamaLendPufETHcrvUSD', // temp disabled
13
13
  LLVersionsEth["LLUsdeCrvusd"] = "llamaLendUSDecrvUSD";
14
14
  LLVersionsEth["LLWethCrvusd2"] = "llamaLendWETHcrvUSD2";
15
15
  // long and short crv
@@ -32,7 +32,7 @@ var LLVersionsArb;
32
32
  LLVersionsArb["LLWbtcCrvusd2"] = "llamaLendWBTCcrvUSD2";
33
33
  LLVersionsArb["LLCrvCrvusd"] = "llamaLendCRVcrvUSD";
34
34
  LLVersionsArb["LLWethCrvusd"] = "llamaLendWETHcrvUSD";
35
- LLVersionsArb["LLWeth2Crvusd"] = "llamaLendWETHcrvUSD2";
35
+ LLVersionsArb["LLWethCrvusd2"] = "llamaLendWETHcrvUSD2";
36
36
  })(LLVersionsArb || (exports.LLVersionsArb = LLVersionsArb = {}));
37
37
  exports.LlamaLendVersions = Object.assign(Object.assign({}, LLVersionsEth), LLVersionsArb);
38
38
  var LlamaLendStatus;
@@ -1,9 +1,10 @@
1
- import { LlamaLendAggregatedPositionData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
1
+ import { LlamaLendAggregatedPositionData, LlamaLendAssetsData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
2
2
  import { NetworkNumber } from '../../types/common';
3
- export declare const getLlamaLendAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest }: {
3
+ export declare const getLlamaLendAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData, ...rest }: {
4
4
  loanExists: boolean;
5
5
  usedAssets: LlamaLendUsedAssets;
6
6
  network: NetworkNumber;
7
7
  selectedMarket: LlamaLendMarketData;
8
8
  numOfBands: number | string;
9
+ assetsData: LlamaLendAssetsData;
9
10
  }) => LlamaLendAggregatedPositionData;
@@ -12,9 +12,10 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  import Dec from 'decimal.js';
13
13
  import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
14
14
  import { mapRange } from '../../services/utils';
15
+ import { calculateNetApy } from '../../staking';
15
16
  export const getLlamaLendAggregatedData = (_a) => {
16
17
  var _b;
17
- var { loanExists, usedAssets, network, selectedMarket, numOfBands } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands"]);
18
+ var { loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands", "assetsData"]);
18
19
  const collAsset = selectedMarket.collAsset;
19
20
  const debtAsset = selectedMarket.baseAsset;
20
21
  const payload = {};
@@ -23,6 +24,10 @@ export const getLlamaLendAggregatedData = (_a) => {
23
24
  payload.suppliedUsd = getAssetsTotal(usedAssets, ({ collateral }) => collateral, ({ suppliedUsd }) => suppliedUsd);
24
25
  payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
25
26
  payload.suppliedForYieldUsd = getAssetsTotal(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedForYield }) => suppliedForYield || '0');
27
+ const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy(usedAssets, assetsData);
28
+ payload.netApy = netApy;
29
+ payload.incentiveUsd = incentiveUsd;
30
+ payload.totalInterestUsd = totalInterestUsd;
26
31
  payload.ratio = loanExists
27
32
  ? new Dec(payload.suppliedUsd)
28
33
  .dividedBy(payload.borrowedUsd)
@@ -1,7 +1,7 @@
1
1
  import Web3 from 'web3';
2
2
  import { LlamaLendGlobalMarketData, LlamaLendMarketData, LlamaLendUserData } from '../types';
3
3
  import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
4
- export declare const getLlamaLendGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendGlobalMarketData>;
4
+ export declare const getLlamaLendGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3) => Promise<LlamaLendGlobalMarketData>;
5
5
  export declare const getLlamaLendAccountBalances: (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, controllerAddress: EthAddress) => Promise<PositionBalances>;
6
6
  export declare const getLlamaLendUserData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, marketData: LlamaLendGlobalMarketData) => Promise<LlamaLendUserData>;
7
- export declare const getLlamaLendFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData) => Promise<LlamaLendUserData>;
7
+ export declare const getLlamaLendFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3) => Promise<LlamaLendUserData>;
@@ -15,6 +15,7 @@ import { LlamaLendViewContract } from '../contracts';
15
15
  import { getLlamaLendAggregatedData } from '../helpers/llamaLendHelpers';
16
16
  import { getEthAmountForDecimals, wethToEth } from '../services/utils';
17
17
  import { getLlamaLendMarketFromControllerAddress } from '../markets/llamaLend';
18
+ import { getStakingApy, STAKING_ASSETS } from '../staking';
18
19
  const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
19
20
  const contract = LlamaLendViewContract(web3, network);
20
21
  const minBand = parseInt(_minBand, 10);
@@ -51,7 +52,7 @@ const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) =>
51
52
  highPrice: assetAmountInEth(band.highPrice),
52
53
  }));
53
54
  });
54
- export const getLlamaLendGlobalData = (web3, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
55
+ export const getLlamaLendGlobalData = (web3, network, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
55
56
  const contract = LlamaLendViewContract(web3, network);
56
57
  const collAsset = selectedMarket.collAsset;
57
58
  const debtAsset = selectedMarket.baseAsset;
@@ -98,6 +99,10 @@ export const getLlamaLendGlobalData = (web3, network, selectedMarket) => __await
98
99
  canBeSupplied: true,
99
100
  canBeBorrowed: false,
100
101
  };
102
+ if (STAKING_ASSETS.includes(collAsset)) {
103
+ assetsData[collAsset].incentiveSupplyApy = yield getStakingApy(collAsset, defaultWeb3);
104
+ assetsData[collAsset].incentiveSupplyToken = collAsset;
105
+ }
101
106
  return {
102
107
  A: data.A,
103
108
  loanDiscount: data.loanDiscount,
@@ -216,11 +221,11 @@ export const getLlamaLendUserData = (web3, network, address, selectedMarket, mar
216
221
  priceHigh,
217
222
  priceLow, liquidationDiscount: assetAmountInEth(data.liquidationDiscount), numOfBands: data.N, usedAssets,
218
223
  status }), getLlamaLendAggregatedData({
219
- loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N,
224
+ loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N, assetsData,
220
225
  })), { userBands });
221
226
  });
222
- export const getLlamaLendFullPositionData = (web3, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
223
- const marketData = yield getLlamaLendGlobalData(web3, network, selectedMarket);
227
+ export const getLlamaLendFullPositionData = (web3, network, address, selectedMarket, defaultWeb3) => __awaiter(void 0, void 0, void 0, function* () {
228
+ const marketData = yield getLlamaLendGlobalData(web3, network, selectedMarket, defaultWeb3);
224
229
  const positionData = yield getLlamaLendUserData(web3, network, address, selectedMarket, marketData);
225
230
  return positionData;
226
231
  });
@@ -7,9 +7,9 @@ const ethAddresses = {
7
7
  vaultAddress: '0x8cf1DE26729cfB7137AF1A6B2a665e099EC319b5',
8
8
  },
9
9
  [LlamaLendVersions.LLWstethCrvusd2]: {
10
- controllerId: 11,
11
- controllerAddress: '0xB536FEa3a01c95Dd09932440eC802A75410139D6',
12
- vaultAddress: '0x4a7999c55d3a93dAf72EA112985e57c2E3b9e95D',
10
+ controllerId: 13,
11
+ controllerAddress: '0x5756A035F276a8095A922931F224F4ed06149608',
12
+ vaultAddress: '0x21CF1c5Dc48C603b89907FE6a7AE83EA5e3709aF',
13
13
  },
14
14
  [LlamaLendVersions.LLSusdeCrvusd]: {
15
15
  controllerId: 7,
@@ -61,11 +61,12 @@ const ethAddresses = {
61
61
  controllerAddress: '0xcaD85b7fe52B1939DCEebEe9bCf0b2a5Aa0cE617',
62
62
  vaultAddress: '0xccd37EB6374Ae5b1f0b85ac97eFf14770e0D0063',
63
63
  },
64
- [LlamaLendVersions.LLPufethCrvusd]: {
65
- controllerId: 10,
66
- controllerAddress: '0x4f87158350c296955966059C50263F711cE0817C',
67
- vaultAddress: '0xff467c6E827ebbEa64DA1ab0425021E6c89Fbe0d',
68
- },
64
+ // temp disabled
65
+ // [LlamaLendVersions.LLPufethCrvusd]: {
66
+ // controllerId: 10,
67
+ // controllerAddress: '0x4f87158350c296955966059C50263F711cE0817C',
68
+ // vaultAddress: '0xff467c6E827ebbEa64DA1ab0425021E6c89Fbe0d',
69
+ // },
69
70
  [LlamaLendVersions.LLUsdeCrvusd]: {
70
71
  controllerId: 14,
71
72
  controllerAddress: '0x74f88Baa966407b50c10B393bBD789639EFfE78B',
@@ -17,7 +17,6 @@ export declare const LLAMALEND_FXN_CRVUSD_MARKET: (networkId: NetworkNumber) =>
17
17
  export declare const LLAMALEND_WBTC_CRVUSD_MARKET: (networkId: NetworkNumber) => LlamaLendMarketData;
18
18
  export declare const LLAMALEND_WBTC_CRVUSD_MARKET_2: (networkId: NetworkNumber) => LlamaLendMarketData;
19
19
  export declare const LLAMALEND_USDE_CRVUSD_MARKET: (networkId: NetworkNumber) => LlamaLendMarketData;
20
- export declare const LLAMALEND_PUFETH_CRVUSD_MARKET: (networkId: NetworkNumber) => LlamaLendMarketData;
21
20
  export declare const LlamaLendMarkets: (networkId: NetworkNumber) => Record<LlamaLendVersionsType, LlamaLendMarketData>;
22
21
  export declare const getLlamaLendMarketData: (market: LlamaLendVersionsType, network?: NetworkNumber) => LlamaLendMarketData;
23
22
  export declare const getLlamaLendMarketFromControllerAddress: (controllerAddress: string, network: NetworkNumber) => LlamaLendMarketData;
@@ -18,7 +18,17 @@ export const LLAMALEND_FXN_CRVUSD_MARKET = (networkId) => (Object.assign({ chain
18
18
  export const LLAMALEND_WBTC_CRVUSD_MARKET = (networkId) => (Object.assign({ chainIds: [NetworkNumber.Eth, NetworkNumber.Arb], label: 'LlamaLend - WBTC/crvUSD', shortLabel: 'WBTC/crvUSD', value: LlamaLendVersions.LLWbtcCrvusd, collAsset: 'WBTC', baseAsset: 'crvUSD', url: 'wbtcusd' }, getLLamaLendAddresses(networkId, LlamaLendVersions.LLWbtcCrvusd)));
19
19
  export const LLAMALEND_WBTC_CRVUSD_MARKET_2 = (networkId) => (Object.assign({ chainIds: [NetworkNumber.Arb], label: 'LlamaLend - WBTC/crvUSD #2', shortLabel: 'WBTC/crvUSD #2', value: LlamaLendVersions.LLWbtcCrvusd2, collAsset: 'WBTC', baseAsset: 'crvUSD', url: 'wbtcusd2' }, getLLamaLendAddresses(networkId, LlamaLendVersions.LLWbtcCrvusd2)));
20
20
  export const LLAMALEND_USDE_CRVUSD_MARKET = (networkId) => (Object.assign({ chainIds: [NetworkNumber.Eth], label: 'LlamaLend - USDe/crvUSD', shortLabel: 'USDe/crvUSD', value: LlamaLendVersions.LLUsdeCrvusd, collAsset: 'USDe', baseAsset: 'crvUSD', url: 'usdecrvusd' }, getLLamaLendAddresses(networkId, LlamaLendVersions.LLUsdeCrvusd)));
21
- export const LLAMALEND_PUFETH_CRVUSD_MARKET = (networkId) => (Object.assign({ chainIds: [NetworkNumber.Eth], label: 'LlamaLend - pufETH/crvUSD', shortLabel: 'pufETH/crvUSD', value: LlamaLendVersions.LLPufethCrvusd, collAsset: 'pufETH', baseAsset: 'crvUSD', url: 'pufethcrvusd' }, getLLamaLendAddresses(networkId, LlamaLendVersions.LLPufethCrvusd)));
21
+ // temp disabled
22
+ // export const LLAMALEND_PUFETH_CRVUSD_MARKET = (networkId: NetworkNumber): LlamaLendMarketData => ({
23
+ // chainIds: [NetworkNumber.Eth],
24
+ // label: 'LlamaLend - pufETH/crvUSD',
25
+ // shortLabel: 'pufETH/crvUSD',
26
+ // value: LlamaLendVersions.LLPufethCrvusd,
27
+ // collAsset: 'pufETH',
28
+ // baseAsset: 'crvUSD',
29
+ // url: 'pufethcrvusd',
30
+ // ...getLLamaLendAddresses(networkId, LlamaLendVersions.LLPufethCrvusd),
31
+ // });
22
32
  export const LlamaLendMarkets = (networkId) => ({
23
33
  [LlamaLendVersions.LLWstethCrvusd]: LLAMALEND_WSTETH_CRVUSD_MARKET(networkId),
24
34
  [LlamaLendVersions.LLWstethCrvusd2]: LLAMALEND_WSTETH_CRVUSD_MARKET_2(networkId),
@@ -37,7 +47,7 @@ export const LlamaLendMarkets = (networkId) => ({
37
47
  [LlamaLendVersions.LLSusdeCrvusd]: LLAMALEND_SUSDE_CRVUSD_MARKET(networkId),
38
48
  [LlamaLendVersions.LLSusdeCrvusd2]: LLAMALEND_SUSDE_CRVUSD_MARKET_2(networkId),
39
49
  [LlamaLendVersions.LLUsdeCrvusd]: LLAMALEND_USDE_CRVUSD_MARKET(networkId),
40
- [LlamaLendVersions.LLPufethCrvusd]: LLAMALEND_PUFETH_CRVUSD_MARKET(networkId),
50
+ // [LlamaLendVersions.LLPufethCrvusd]: LLAMALEND_PUFETH_CRVUSD_MARKET(networkId), // temp disabled
41
51
  });
42
52
  export const getLlamaLendMarketData = (market, network = 1) => LlamaLendMarkets(network)[market];
43
53
  export const getLlamaLendMarketFromControllerAddress = (controllerAddress, network) => {
@@ -81,7 +81,7 @@ const getApyFromDfsApi = (asset) => __awaiter(void 0, void 0, void 0, function*
81
81
  const data = yield res.json();
82
82
  return data.apy;
83
83
  });
84
- export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx'];
84
+ export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH'];
85
85
  export const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = undefined) => {
86
86
  try {
87
87
  if (asset === 'stETH' || asset === 'wstETH')
@@ -102,6 +102,10 @@ export const getStakingApy = (asset, web3, blockNumber = 'latest', fromBlock = u
102
102
  return getApyFromDfsApi('osETH');
103
103
  if (asset === 'ETHx')
104
104
  return getApyFromDfsApi('ETHx');
105
+ if (asset === 'rsETH')
106
+ return getApyFromDfsApi('rsETH');
107
+ if (asset === 'pufETH')
108
+ return getApyFromDfsApi('pufETH');
105
109
  }
106
110
  catch (e) {
107
111
  console.error(`Failed to fetch APY for ${asset}`);
@@ -6,7 +6,6 @@ export declare enum LLVersionsEth {
6
6
  LLSusdeCrvusd = "llamaLendsUSDecrvUSD",
7
7
  LLSusdeCrvusd2 = "llamaLendsUSDecrvUSD2",
8
8
  LLWbtcCrvusd = "llamaLendWBTCcrvUSD",
9
- LLPufethCrvusd = "llamaLendPufETHcrvUSD",
10
9
  LLUsdeCrvusd = "llamaLendUSDecrvUSD",
11
10
  LLWethCrvusd2 = "llamaLendWETHcrvUSD2",
12
11
  LLCrvCrvusd = "llamaLendCRVcrvUSD",
@@ -24,7 +23,7 @@ export declare enum LLVersionsArb {
24
23
  LLWbtcCrvusd2 = "llamaLendWBTCcrvUSD2",
25
24
  LLCrvCrvusd = "llamaLendCRVcrvUSD",
26
25
  LLWethCrvusd = "llamaLendWETHcrvUSD",
27
- LLWeth2Crvusd = "llamaLendWETHcrvUSD2"
26
+ LLWethCrvusd2 = "llamaLendWETHcrvUSD2"
28
27
  }
29
28
  export declare const LlamaLendVersions: {
30
29
  readonly LLArbCrvusd: LLVersionsArb.LLArbCrvusd;
@@ -34,14 +33,12 @@ export declare const LlamaLendVersions: {
34
33
  readonly LLWbtcCrvusd2: LLVersionsArb.LLWbtcCrvusd2;
35
34
  readonly LLCrvCrvusd: LLVersionsArb.LLCrvCrvusd;
36
35
  readonly LLWethCrvusd: LLVersionsArb.LLWethCrvusd;
37
- readonly LLWeth2Crvusd: LLVersionsArb.LLWeth2Crvusd;
36
+ readonly LLWethCrvusd2: LLVersionsArb.LLWethCrvusd2;
38
37
  readonly LLWstethCrvusd: LLVersionsEth.LLWstethCrvusd;
39
38
  readonly LLWstethCrvusd2: LLVersionsEth.LLWstethCrvusd2;
40
39
  readonly LLSusdeCrvusd: LLVersionsEth.LLSusdeCrvusd;
41
40
  readonly LLSusdeCrvusd2: LLVersionsEth.LLSusdeCrvusd2;
42
- readonly LLPufethCrvusd: LLVersionsEth.LLPufethCrvusd;
43
41
  readonly LLUsdeCrvusd: LLVersionsEth.LLUsdeCrvusd;
44
- readonly LLWethCrvusd2: LLVersionsEth.LLWethCrvusd2;
45
42
  readonly LLCrvusdCrv: LLVersionsEth.LLCrvusdCrv;
46
43
  readonly LLTbtcCrvusd: LLVersionsEth.LLTbtcCrvusd;
47
44
  readonly LLCrvusdTbtc: LLVersionsEth.LLCrvusdTbtc;
@@ -116,6 +113,9 @@ export interface LlamaLendAggregatedPositionData {
116
113
  leveragedType: string;
117
114
  leveragedAsset?: string;
118
115
  liquidationPrice?: string;
116
+ netApy: string;
117
+ incentiveUsd: string;
118
+ totalInterestUsd: string;
119
119
  }
120
120
  export interface LlamaLendUsedAsset {
121
121
  isSupplied: boolean;
@@ -6,7 +6,7 @@ export var LLVersionsEth;
6
6
  LLVersionsEth["LLSusdeCrvusd"] = "llamaLendsUSDecrvUSD";
7
7
  LLVersionsEth["LLSusdeCrvusd2"] = "llamaLendsUSDecrvUSD2";
8
8
  LLVersionsEth["LLWbtcCrvusd"] = "llamaLendWBTCcrvUSD";
9
- LLVersionsEth["LLPufethCrvusd"] = "llamaLendPufETHcrvUSD";
9
+ // LLPufethCrvusd = 'llamaLendPufETHcrvUSD', // temp disabled
10
10
  LLVersionsEth["LLUsdeCrvusd"] = "llamaLendUSDecrvUSD";
11
11
  LLVersionsEth["LLWethCrvusd2"] = "llamaLendWETHcrvUSD2";
12
12
  // long and short crv
@@ -29,7 +29,7 @@ export var LLVersionsArb;
29
29
  LLVersionsArb["LLWbtcCrvusd2"] = "llamaLendWBTCcrvUSD2";
30
30
  LLVersionsArb["LLCrvCrvusd"] = "llamaLendCRVcrvUSD";
31
31
  LLVersionsArb["LLWethCrvusd"] = "llamaLendWETHcrvUSD";
32
- LLVersionsArb["LLWeth2Crvusd"] = "llamaLendWETHcrvUSD2";
32
+ LLVersionsArb["LLWethCrvusd2"] = "llamaLendWETHcrvUSD2";
33
33
  })(LLVersionsArb || (LLVersionsArb = {}));
34
34
  export const LlamaLendVersions = Object.assign(Object.assign({}, LLVersionsEth), LLVersionsArb);
35
35
  export var LlamaLendStatus;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/positions-sdk",
3
- "version": "0.0.102",
3
+ "version": "0.0.104",
4
4
  "description": "",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
@@ -1,13 +1,16 @@
1
1
  import Dec from 'decimal.js';
2
- import { LlamaLendAggregatedPositionData, LlamaLendMarketData, LlamaLendUsedAssets } from '../../types';
2
+ import {
3
+ LlamaLendAggregatedPositionData, LlamaLendAssetsData, LlamaLendMarketData, LlamaLendUsedAssets,
4
+ } from '../../types';
3
5
  import { MMUsedAssets, NetworkNumber } from '../../types/common';
4
6
  import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
5
7
  import { mapRange } from '../../services/utils';
8
+ import { calculateNetApy } from '../../staking';
6
9
 
7
10
  export const getLlamaLendAggregatedData = ({
8
- loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest
11
+ loanExists, usedAssets, network, selectedMarket, numOfBands, assetsData, ...rest
9
12
  }:{
10
- loanExists: boolean, usedAssets: LlamaLendUsedAssets, network: NetworkNumber, selectedMarket: LlamaLendMarketData, numOfBands: number | string
13
+ loanExists: boolean, usedAssets: LlamaLendUsedAssets, network: NetworkNumber, selectedMarket: LlamaLendMarketData, numOfBands: number | string, assetsData: LlamaLendAssetsData,
11
14
  }): LlamaLendAggregatedPositionData => {
12
15
  const collAsset = selectedMarket.collAsset;
13
16
  const debtAsset = selectedMarket.baseAsset;
@@ -19,6 +22,11 @@ export const getLlamaLendAggregatedData = ({
19
22
  payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }: { isBorrowed: boolean }) => isBorrowed, ({ borrowedUsd }: { borrowedUsd: string }) => borrowedUsd);
20
23
  payload.suppliedForYieldUsd = getAssetsTotal(usedAssets, ({ isSupplied }: { isSupplied: boolean }) => isSupplied, ({ suppliedForYield }: { suppliedForYield?: string }) => suppliedForYield || '0');
21
24
 
25
+ const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy(usedAssets, assetsData as any);
26
+ payload.netApy = netApy;
27
+ payload.incentiveUsd = incentiveUsd;
28
+ payload.totalInterestUsd = totalInterestUsd;
29
+
22
30
  payload.ratio = loanExists
23
31
  ? new Dec(payload.suppliedUsd)
24
32
  .dividedBy(payload.borrowedUsd)
@@ -13,6 +13,7 @@ import { getLlamaLendAggregatedData } from '../helpers/llamaLendHelpers';
13
13
  import { getAbiItem, getEthAmountForDecimals, wethToEth } from '../services/utils';
14
14
  import { USD_QUOTE } from '../constants';
15
15
  import { getLlamaLendMarketFromControllerAddress } from '../markets/llamaLend';
16
+ import { getStakingApy, STAKING_ASSETS } from '../staking';
16
17
 
17
18
  const getAndFormatBands = async (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData, _minBand: string, _maxBand: string) => {
18
19
  const contract = LlamaLendViewContract(web3, network);
@@ -52,7 +53,7 @@ const getAndFormatBands = async (web3: Web3, network: NetworkNumber, selectedMar
52
53
  }));
53
54
  };
54
55
 
55
- export const getLlamaLendGlobalData = async (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData): Promise<LlamaLendGlobalMarketData> => {
56
+ export const getLlamaLendGlobalData = async (web3: Web3, network: NetworkNumber, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3): Promise<LlamaLendGlobalMarketData> => {
56
57
  const contract = LlamaLendViewContract(web3, network);
57
58
 
58
59
  const collAsset = selectedMarket.collAsset;
@@ -109,6 +110,12 @@ export const getLlamaLendGlobalData = async (web3: Web3, network: NetworkNumber,
109
110
  canBeSupplied: true,
110
111
  canBeBorrowed: false,
111
112
  };
113
+
114
+ if (STAKING_ASSETS.includes(collAsset)) {
115
+ assetsData[collAsset].incentiveSupplyApy = await getStakingApy(collAsset, defaultWeb3);
116
+ assetsData[collAsset].incentiveSupplyToken = collAsset;
117
+ }
118
+
112
119
  return {
113
120
  A: data.A,
114
121
  loanDiscount: data.loanDiscount,
@@ -255,14 +262,14 @@ export const getLlamaLendUserData = async (web3: Web3, network: NetworkNumber, a
255
262
  usedAssets,
256
263
  status,
257
264
  ...getLlamaLendAggregatedData({
258
- loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N,
265
+ loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N, assetsData,
259
266
  }),
260
267
  userBands,
261
268
  };
262
269
  };
263
270
 
264
- export const getLlamaLendFullPositionData = async (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData): Promise<LlamaLendUserData> => {
265
- const marketData = await getLlamaLendGlobalData(web3, network, selectedMarket);
271
+ export const getLlamaLendFullPositionData = async (web3: Web3, network: NetworkNumber, address: string, selectedMarket: LlamaLendMarketData, defaultWeb3: Web3): Promise<LlamaLendUserData> => {
272
+ const marketData = await getLlamaLendGlobalData(web3, network, selectedMarket, defaultWeb3);
266
273
  const positionData = await getLlamaLendUserData(web3, network, address, selectedMarket, marketData);
267
274
  return positionData;
268
275
  };
@@ -16,9 +16,9 @@ const ethAddresses: Record<LLVersionsEth, LLAddresses> = {
16
16
  vaultAddress: '0x8cf1DE26729cfB7137AF1A6B2a665e099EC319b5',
17
17
  },
18
18
  [LlamaLendVersions.LLWstethCrvusd2]: {
19
- controllerId: 11,
20
- controllerAddress: '0xB536FEa3a01c95Dd09932440eC802A75410139D6',
21
- vaultAddress: '0x4a7999c55d3a93dAf72EA112985e57c2E3b9e95D',
19
+ controllerId: 13,
20
+ controllerAddress: '0x5756A035F276a8095A922931F224F4ed06149608',
21
+ vaultAddress: '0x21CF1c5Dc48C603b89907FE6a7AE83EA5e3709aF',
22
22
  },
23
23
  [LlamaLendVersions.LLSusdeCrvusd]: {
24
24
  controllerId: 7,
@@ -70,11 +70,12 @@ const ethAddresses: Record<LLVersionsEth, LLAddresses> = {
70
70
  controllerAddress: '0xcaD85b7fe52B1939DCEebEe9bCf0b2a5Aa0cE617',
71
71
  vaultAddress: '0xccd37EB6374Ae5b1f0b85ac97eFf14770e0D0063',
72
72
  },
73
- [LlamaLendVersions.LLPufethCrvusd]: {
74
- controllerId: 10,
75
- controllerAddress: '0x4f87158350c296955966059C50263F711cE0817C',
76
- vaultAddress: '0xff467c6E827ebbEa64DA1ab0425021E6c89Fbe0d',
77
- },
73
+ // temp disabled
74
+ // [LlamaLendVersions.LLPufethCrvusd]: {
75
+ // controllerId: 10,
76
+ // controllerAddress: '0x4f87158350c296955966059C50263F711cE0817C',
77
+ // vaultAddress: '0xff467c6E827ebbEa64DA1ab0425021E6c89Fbe0d',
78
+ // },
78
79
  [LlamaLendVersions.LLUsdeCrvusd]: {
79
80
  controllerId: 14,
80
81
  controllerAddress: '0x74f88Baa966407b50c10B393bBD789639EFfE78B',
@@ -190,16 +190,17 @@ export const LLAMALEND_USDE_CRVUSD_MARKET = (networkId: NetworkNumber): LlamaLen
190
190
  ...getLLamaLendAddresses(networkId, LlamaLendVersions.LLUsdeCrvusd),
191
191
  });
192
192
 
193
- export const LLAMALEND_PUFETH_CRVUSD_MARKET = (networkId: NetworkNumber): LlamaLendMarketData => ({
194
- chainIds: [NetworkNumber.Eth],
195
- label: 'LlamaLend - pufETH/crvUSD',
196
- shortLabel: 'pufETH/crvUSD',
197
- value: LlamaLendVersions.LLPufethCrvusd,
198
- collAsset: 'pufETH',
199
- baseAsset: 'crvUSD',
200
- url: 'pufethcrvusd',
201
- ...getLLamaLendAddresses(networkId, LlamaLendVersions.LLPufethCrvusd),
202
- });
193
+ // temp disabled
194
+ // export const LLAMALEND_PUFETH_CRVUSD_MARKET = (networkId: NetworkNumber): LlamaLendMarketData => ({
195
+ // chainIds: [NetworkNumber.Eth],
196
+ // label: 'LlamaLend - pufETH/crvUSD',
197
+ // shortLabel: 'pufETH/crvUSD',
198
+ // value: LlamaLendVersions.LLPufethCrvusd,
199
+ // collAsset: 'pufETH',
200
+ // baseAsset: 'crvUSD',
201
+ // url: 'pufethcrvusd',
202
+ // ...getLLamaLendAddresses(networkId, LlamaLendVersions.LLPufethCrvusd),
203
+ // });
203
204
 
204
205
  export const LlamaLendMarkets = (networkId: NetworkNumber):Record<LlamaLendVersionsType, LlamaLendMarketData> => ({
205
206
  [LlamaLendVersions.LLWstethCrvusd]: LLAMALEND_WSTETH_CRVUSD_MARKET(networkId),
@@ -219,7 +220,7 @@ export const LlamaLendMarkets = (networkId: NetworkNumber):Record<LlamaLendVersi
219
220
  [LlamaLendVersions.LLSusdeCrvusd]: LLAMALEND_SUSDE_CRVUSD_MARKET(networkId),
220
221
  [LlamaLendVersions.LLSusdeCrvusd2]: LLAMALEND_SUSDE_CRVUSD_MARKET_2(networkId),
221
222
  [LlamaLendVersions.LLUsdeCrvusd]: LLAMALEND_USDE_CRVUSD_MARKET(networkId),
222
- [LlamaLendVersions.LLPufethCrvusd]: LLAMALEND_PUFETH_CRVUSD_MARKET(networkId),
223
+ // [LlamaLendVersions.LLPufethCrvusd]: LLAMALEND_PUFETH_CRVUSD_MARKET(networkId), // temp disabled
223
224
  }) as const;
224
225
 
225
226
 
@@ -83,7 +83,7 @@ const getApyFromDfsApi = async (asset: string) => {
83
83
  return data.apy;
84
84
  };
85
85
 
86
- export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx'];
86
+ export const STAKING_ASSETS = ['cbETH', 'wstETH', 'cbETH', 'rETH', 'sDAI', 'weETH', 'sUSDe', 'osETH', 'ezETH', 'ETHx', 'rsETH', 'pufETH'];
87
87
 
88
88
  export const getStakingApy = (asset: string, web3: Web3, blockNumber: 'latest' | number = 'latest', fromBlock: number | undefined = undefined) => {
89
89
  try {
@@ -96,6 +96,8 @@ export const getStakingApy = (asset: string, web3: Web3, blockNumber: 'latest' |
96
96
  if (asset === 'ezETH') return getApyFromDfsApi('ezETH');
97
97
  if (asset === 'osETH') return getApyFromDfsApi('osETH');
98
98
  if (asset === 'ETHx') return getApyFromDfsApi('ETHx');
99
+ if (asset === 'rsETH') return getApyFromDfsApi('rsETH');
100
+ if (asset === 'pufETH') return getApyFromDfsApi('pufETH');
99
101
  } catch (e) {
100
102
  console.error(`Failed to fetch APY for ${asset}`);
101
103
  return '0';
@@ -8,7 +8,7 @@ export enum LLVersionsEth {
8
8
  LLSusdeCrvusd = 'llamaLendsUSDecrvUSD',
9
9
  LLSusdeCrvusd2 = 'llamaLendsUSDecrvUSD2',
10
10
  LLWbtcCrvusd = 'llamaLendWBTCcrvUSD',
11
- LLPufethCrvusd = 'llamaLendPufETHcrvUSD',
11
+ // LLPufethCrvusd = 'llamaLendPufETHcrvUSD', // temp disabled
12
12
  LLUsdeCrvusd = 'llamaLendUSDecrvUSD',
13
13
  LLWethCrvusd2 = 'llamaLendWETHcrvUSD2',
14
14
  // long and short crv
@@ -31,7 +31,7 @@ export enum LLVersionsArb {
31
31
  LLWbtcCrvusd2 = 'llamaLendWBTCcrvUSD2',
32
32
  LLCrvCrvusd = 'llamaLendCRVcrvUSD',
33
33
  LLWethCrvusd = 'llamaLendWETHcrvUSD',
34
- LLWeth2Crvusd = 'llamaLendWETHcrvUSD2',
34
+ LLWethCrvusd2 = 'llamaLendWETHcrvUSD2',
35
35
  }
36
36
 
37
37
  export const LlamaLendVersions = {
@@ -111,6 +111,9 @@ export interface LlamaLendAggregatedPositionData {
111
111
  leveragedType: string,
112
112
  leveragedAsset?: string,
113
113
  liquidationPrice?: string,
114
+ netApy: string,
115
+ incentiveUsd: string,
116
+ totalInterestUsd: string,
114
117
  }
115
118
 
116
119
  export interface LlamaLendUsedAsset {