@defisaver/positions-sdk 2.1.160-shifter-v2-dev → 2.1.161-aave-3.7-dev

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.
Files changed (141) hide show
  1. package/cjs/aaveV2/index.js +0 -2
  2. package/cjs/aaveV3/index.js +7 -1
  3. package/cjs/curveUsd/index.d.ts +2 -5
  4. package/cjs/curveUsd/index.js +15 -30
  5. package/cjs/fluid/index.d.ts +0 -5
  6. package/cjs/fluid/index.js +1 -36
  7. package/cjs/helpers/aaveHelpers/index.d.ts +9 -1
  8. package/cjs/helpers/aaveHelpers/index.js +23 -9
  9. package/cjs/helpers/aaveV4Helpers/index.js +0 -1
  10. package/cjs/helpers/compoundHelpers/index.js +0 -2
  11. package/cjs/helpers/curveUsdHelpers/index.d.ts +1 -3
  12. package/cjs/helpers/curveUsdHelpers/index.js +2 -16
  13. package/cjs/helpers/fluidHelpers/index.js +0 -1
  14. package/cjs/helpers/liquityV2Helpers/index.js +0 -1
  15. package/cjs/helpers/llamaLendHelpers/index.js +0 -2
  16. package/cjs/helpers/makerHelpers/index.d.ts +1 -1
  17. package/cjs/helpers/makerHelpers/index.js +2 -2
  18. package/cjs/helpers/morphoBlueHelpers/index.js +0 -2
  19. package/cjs/helpers/morphoMidnightHelpers/index.js +0 -2
  20. package/cjs/helpers/sparkHelpers/index.js +0 -1
  21. package/cjs/liquity/index.js +2 -16
  22. package/cjs/maker/index.d.ts +2 -7
  23. package/cjs/maker/index.js +12 -45
  24. package/cjs/markets/index.d.ts +0 -1
  25. package/cjs/markets/index.js +1 -3
  26. package/cjs/portfolio/index.d.ts +1 -5
  27. package/cjs/portfolio/index.js +2 -274
  28. package/cjs/savings/index.js +5 -2
  29. package/cjs/savings/morphoVaults/index.d.ts +1 -1
  30. package/cjs/savings/morphoVaults/index.js +56 -18
  31. package/cjs/savings/morphoVaults/options.d.ts +2 -0
  32. package/cjs/savings/morphoVaults/options.js +61 -1
  33. package/cjs/spark/index.js +1 -0
  34. package/cjs/staking/staking.d.ts +0 -20
  35. package/cjs/staking/staking.js +1 -19
  36. package/cjs/types/aave.d.ts +1 -2
  37. package/cjs/types/aaveV4.d.ts +0 -1
  38. package/cjs/types/compound.d.ts +0 -2
  39. package/cjs/types/curveUsd.d.ts +0 -6
  40. package/cjs/types/fluid.d.ts +0 -1
  41. package/cjs/types/liquity.d.ts +0 -4
  42. package/cjs/types/liquityV2.d.ts +0 -2
  43. package/cjs/types/maker.d.ts +0 -4
  44. package/cjs/types/morphoBlue.d.ts +0 -2
  45. package/cjs/types/morphoMidnight.d.ts +0 -1
  46. package/cjs/types/portfolio.d.ts +10 -26
  47. package/cjs/types/savings/morphoVaults.d.ts +10 -2
  48. package/cjs/types/savings/morphoVaults.js +9 -1
  49. package/cjs/types/spark.d.ts +0 -2
  50. package/esm/aaveV2/index.js +0 -2
  51. package/esm/aaveV3/index.js +7 -1
  52. package/esm/curveUsd/index.d.ts +2 -5
  53. package/esm/curveUsd/index.js +15 -30
  54. package/esm/fluid/index.d.ts +0 -5
  55. package/esm/fluid/index.js +0 -33
  56. package/esm/helpers/aaveHelpers/index.d.ts +9 -1
  57. package/esm/helpers/aaveHelpers/index.js +20 -8
  58. package/esm/helpers/aaveV4Helpers/index.js +0 -1
  59. package/esm/helpers/compoundHelpers/index.js +0 -2
  60. package/esm/helpers/curveUsdHelpers/index.d.ts +1 -3
  61. package/esm/helpers/curveUsdHelpers/index.js +2 -16
  62. package/esm/helpers/fluidHelpers/index.js +0 -1
  63. package/esm/helpers/liquityV2Helpers/index.js +0 -1
  64. package/esm/helpers/llamaLendHelpers/index.js +0 -2
  65. package/esm/helpers/makerHelpers/index.d.ts +1 -1
  66. package/esm/helpers/makerHelpers/index.js +2 -2
  67. package/esm/helpers/morphoBlueHelpers/index.js +0 -2
  68. package/esm/helpers/morphoMidnightHelpers/index.js +0 -2
  69. package/esm/helpers/sparkHelpers/index.js +0 -1
  70. package/esm/liquity/index.js +2 -16
  71. package/esm/maker/index.d.ts +2 -7
  72. package/esm/maker/index.js +13 -44
  73. package/esm/markets/index.d.ts +0 -1
  74. package/esm/markets/index.js +0 -1
  75. package/esm/portfolio/index.d.ts +1 -5
  76. package/esm/portfolio/index.js +5 -276
  77. package/esm/savings/index.js +5 -2
  78. package/esm/savings/morphoVaults/index.d.ts +1 -1
  79. package/esm/savings/morphoVaults/index.js +57 -19
  80. package/esm/savings/morphoVaults/options.d.ts +2 -0
  81. package/esm/savings/morphoVaults/options.js +61 -1
  82. package/esm/spark/index.js +1 -0
  83. package/esm/staking/staking.d.ts +0 -20
  84. package/esm/staking/staking.js +0 -17
  85. package/esm/types/aave.d.ts +1 -2
  86. package/esm/types/aaveV4.d.ts +0 -1
  87. package/esm/types/compound.d.ts +0 -2
  88. package/esm/types/curveUsd.d.ts +0 -6
  89. package/esm/types/fluid.d.ts +0 -1
  90. package/esm/types/liquity.d.ts +0 -4
  91. package/esm/types/liquityV2.d.ts +0 -2
  92. package/esm/types/maker.d.ts +0 -4
  93. package/esm/types/morphoBlue.d.ts +0 -2
  94. package/esm/types/morphoMidnight.d.ts +0 -1
  95. package/esm/types/portfolio.d.ts +10 -26
  96. package/esm/types/savings/morphoVaults.d.ts +10 -2
  97. package/esm/types/savings/morphoVaults.js +8 -0
  98. package/esm/types/spark.d.ts +0 -2
  99. package/package.json +1 -1
  100. package/src/aaveV2/index.ts +0 -2
  101. package/src/aaveV3/index.ts +6 -1
  102. package/src/curveUsd/index.ts +16 -33
  103. package/src/fluid/index.ts +0 -40
  104. package/src/helpers/aaveHelpers/index.ts +24 -10
  105. package/src/helpers/aaveV4Helpers/index.ts +0 -1
  106. package/src/helpers/compoundHelpers/index.ts +0 -2
  107. package/src/helpers/curveUsdHelpers/index.ts +2 -23
  108. package/src/helpers/fluidHelpers/index.ts +0 -1
  109. package/src/helpers/liquityV2Helpers/index.ts +0 -1
  110. package/src/helpers/llamaLendHelpers/index.ts +0 -2
  111. package/src/helpers/makerHelpers/index.ts +1 -2
  112. package/src/helpers/morphoBlueHelpers/index.ts +0 -2
  113. package/src/helpers/morphoMidnightHelpers/index.ts +0 -2
  114. package/src/helpers/sparkHelpers/index.ts +0 -1
  115. package/src/liquity/index.ts +2 -17
  116. package/src/maker/index.ts +29 -77
  117. package/src/markets/index.ts +1 -2
  118. package/src/portfolio/index.ts +4 -259
  119. package/src/savings/index.ts +5 -2
  120. package/src/savings/morphoVaults/index.ts +73 -21
  121. package/src/savings/morphoVaults/options.ts +67 -1
  122. package/src/spark/index.ts +1 -0
  123. package/src/staking/staking.ts +0 -28
  124. package/src/types/aave.ts +1 -3
  125. package/src/types/aaveV4.ts +0 -1
  126. package/src/types/compound.ts +0 -2
  127. package/src/types/curveUsd.ts +0 -7
  128. package/src/types/fluid.ts +0 -1
  129. package/src/types/liquity.ts +0 -6
  130. package/src/types/liquityV2.ts +0 -2
  131. package/src/types/maker.ts +0 -6
  132. package/src/types/morphoBlue.ts +0 -2
  133. package/src/types/morphoMidnight.ts +0 -1
  134. package/src/types/portfolio.ts +12 -31
  135. package/src/types/savings/morphoVaults.ts +11 -1
  136. package/src/types/spark.ts +0 -2
  137. package/cjs/markets/maker/index.d.ts +0 -1
  138. package/cjs/markets/maker/index.js +0 -13
  139. package/esm/markets/maker/index.d.ts +0 -1
  140. package/esm/markets/maker/index.js +0 -10
  141. package/src/markets/maker/index.ts +0 -10
@@ -16,12 +16,6 @@ import { getCrvUsdAggregatedData } from '../helpers/curveUsdHelpers';
16
16
  import { CrvUsdMarkets } from '../markets';
17
17
  import { wethToEth } from '../services/utils';
18
18
  import { getViemProvider, setViemBlockNumber } from '../services/viem';
19
- import { getStakingApy, STAKING_ASSETS } from '../staking';
20
- /** Converts a per-second AMM rate (wei, 18 decimals) into a yearly compounded borrow APY in %. */
21
- const ammRateToBorrowApy = (rateWei) => {
22
- const exponent = new Dec(assetAmountInEth(rateWei)).mul(365).mul(86400);
23
- return new Dec(new Dec(2.718281828459).pow(exponent).minus(1)).mul(100).toString();
24
- };
25
19
  const getAndFormatBands = (provider, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
26
20
  const contract = CrvUSDViewContractViem(provider, network);
27
21
  const minBand = parseInt(_minBand, 10);
@@ -71,8 +65,14 @@ export const _getCurveUsdGlobalData = (provider, network, selectedMarket) => __a
71
65
  // all prices are in 18 decimals
72
66
  const totalDebt = assetAmountInEth(data.totalDebt.toString(), debtAsset);
73
67
  const ammPrice = assetAmountInEth(data.ammPrice.toString(), debtAsset);
74
- const borrowRate = ammRateToBorrowApy(data.ammRate.toString());
75
- const futureBorrowRate = ammRateToBorrowApy(data.monetaryPolicyRate.toString());
68
+ const rate = assetAmountInEth(data.ammRate.toString());
69
+ const futureRate = assetAmountInEth(data.monetaryPolicyRate.toString());
70
+ const exponentRate = new Dec(rate).mul(365).mul(86400);
71
+ const exponentFutureRate = new Dec(futureRate).mul(365).mul(86400);
72
+ const borrowRate = new Dec(new Dec(2.718281828459).pow(exponentRate).minus(1)).mul(100)
73
+ .toString();
74
+ const futureBorrowRate = new Dec(new Dec(2.718281828459).pow(exponentFutureRate).minus(1)).mul(100)
75
+ .toString();
76
76
  const bandsData = yield getAndFormatBands(provider, network, selectedMarket, data.minBand.toString(), data.maxBand.toString());
77
77
  const leftToBorrow = new Dec(debtCeiling.toString()).minus(totalDebt).toString();
78
78
  const loanDiscount = assetAmountInEth(loanDiscountWei.toString(), debtAsset);
@@ -121,20 +121,11 @@ export const _getCrvUsdAccountBalances = (provider, network, block, addressMappi
121
121
  return balances;
122
122
  });
123
123
  export const getCrvUsdAccountBalances = (provider, network, block, addressMapping, address, controllerAddress) => __awaiter(void 0, void 0, void 0, function* () { return _getCrvUsdAccountBalances(getViemProvider(provider, network), network, block, addressMapping, address, controllerAddress); });
124
- /**
125
- * @param borrowRate market borrow APY in % (`CrvUSDGlobalMarketData.borrowRate`); when omitted it is read from the view contract
126
- */
127
- export const _getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand, borrowRate) => __awaiter(void 0, void 0, void 0, function* () {
124
+ export const _getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand) => __awaiter(void 0, void 0, void 0, function* () {
128
125
  const contract = CrvUSDViewContractViem(provider, network);
126
+ const data = yield contract.read.userData([selectedMarket.controllerAddress, address]);
129
127
  const collAsset = selectedMarket.collAsset;
130
128
  const debtAsset = selectedMarket.baseAsset;
131
- const [data, collStakingApy, marketBorrowRate] = yield Promise.all([
132
- contract.read.userData([selectedMarket.controllerAddress, address]),
133
- STAKING_ASSETS.includes(collAsset) ? getStakingApy(collAsset) : Promise.resolve('0'),
134
- borrowRate !== undefined
135
- ? Promise.resolve(borrowRate)
136
- : contract.read.globalData([selectedMarket.controllerAddress]).then((globalData) => ammRateToBorrowApy(globalData.ammRate.toString())),
137
- ]);
138
129
  const health = assetAmountInEth(data.health.toString());
139
130
  const healthPercent = new Dec(health).mul(100).toString();
140
131
  const collPrice = assetAmountInEth(data.collateralPrice.toString(), debtAsset);
@@ -165,7 +156,7 @@ export const _getCurveUsdUserData = (provider, network, address, selectedMarket,
165
156
  isBorrowed: new Dec(debtBorrowed).gt('0'),
166
157
  symbol: 'crvUSD',
167
158
  price: '1',
168
- interestRate: marketBorrowRate,
159
+ interestRate: '0',
169
160
  },
170
161
  } : {};
171
162
  const priceHigh = assetAmountInEth(data.priceHigh.toString());
@@ -177,19 +168,13 @@ export const _getCurveUsdUserData = (provider, network, address, selectedMarket,
177
168
  healthPercent,
178
169
  priceHigh,
179
170
  priceLow, liquidationDiscount: assetAmountInEth(data.liquidationDiscount.toString()), numOfBands: data.N.toString(), usedAssets,
180
- status, borrowRate: marketBorrowRate }), getCrvUsdAggregatedData({
181
- loanExists: data.loanExists,
182
- usedAssets,
183
- network: NetworkNumber.Eth,
184
- selectedMarket,
185
- numOfBands: data.N.toString(),
186
- borrowRate: marketBorrowRate,
187
- collStakingApy,
171
+ status }), getCrvUsdAggregatedData({
172
+ loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket, numOfBands: data.N.toString(),
188
173
  })), { userBands });
189
174
  });
190
- export const getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand, borrowRate) => __awaiter(void 0, void 0, void 0, function* () { return _getCurveUsdUserData(getViemProvider(provider, network), network, address, selectedMarket, activeBand, borrowRate); });
175
+ export const getCurveUsdUserData = (provider, network, address, selectedMarket, activeBand) => __awaiter(void 0, void 0, void 0, function* () { return _getCurveUsdUserData(getViemProvider(provider, network), network, address, selectedMarket, activeBand); });
191
176
  export const getCurveUsdFullPositionData = (provider, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
192
177
  const marketData = yield getCurveUsdGlobalData(provider, network, selectedMarket);
193
- const positionData = yield getCurveUsdUserData(provider, network, address, selectedMarket, marketData.activeBand, marketData.borrowRate);
178
+ const positionData = yield getCurveUsdUserData(provider, network, address, selectedMarket, marketData.activeBand);
194
179
  return positionData;
195
180
  });
@@ -133,7 +133,6 @@ export declare const _getUserPositions: (provider: PublicClient, network: Networ
133
133
  merklBorrowIncentives: import("../types").IncentiveData[];
134
134
  ratio: string;
135
135
  collRatio: string;
136
- safetyRatio: string;
137
136
  minRatio: string;
138
137
  totalInterestUsd: string;
139
138
  leveragedType?: import("../types").LeverageType;
@@ -168,7 +167,6 @@ export declare const getUserPositions: (provider: EthereumProvider, network: Net
168
167
  merklBorrowIncentives: import("../types").IncentiveData[];
169
168
  ratio: string;
170
169
  collRatio: string;
171
- safetyRatio: string;
172
170
  minRatio: string;
173
171
  totalInterestUsd: string;
174
172
  leveragedType?: import("../types").LeverageType;
@@ -203,7 +201,6 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
203
201
  merklBorrowIncentives: import("../types").IncentiveData[];
204
202
  ratio: string;
205
203
  collRatio: string;
206
- safetyRatio: string;
207
204
  minRatio: string;
208
205
  totalInterestUsd: string;
209
206
  leveragedType?: import("../types").LeverageType;
@@ -224,5 +221,3 @@ export declare const _getUserPositionsPortfolio: (provider: PublicClient, networ
224
221
  nftId: string;
225
222
  } | undefined;
226
223
  }[]>;
227
- export declare const _getAllFluidMarketDataPortfolio: (provider: PublicClient, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
228
- export declare const getAllFluidMarketDataPortfolio: (provider: EthereumProvider, network: NetworkNumber) => Promise<Record<string, FluidMarketData>>;
@@ -1381,36 +1381,3 @@ export const _getUserPositionsPortfolio = (provider, network, user) => __awaiter
1381
1381
  userData: userData[i],
1382
1382
  })).filter(md => md.marketData !== undefined);
1383
1383
  });
1384
- export const _getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0, void 0, void 0, function* () {
1385
- const versions = getFluidVersionsDataForNetwork(network);
1386
- if (versions.length === 0)
1387
- return {};
1388
- const view = FluidViewContractViem(provider, network);
1389
- const vaultsData = yield Promise.all(versions.map((version) => view.read.getVaultData([version.marketAddress])));
1390
- const tokens = Array.from(new Set(vaultsData.map((vaultData) => {
1391
- const vaultTokens = [getAssetInfoByAddress(vaultData.supplyToken0, network).symbol, getAssetInfoByAddress(vaultData.borrowToken0, network).symbol];
1392
- if (vaultData.supplyToken1 && !compareAddresses(ZERO_ADDRESS, vaultData.supplyToken1))
1393
- vaultTokens.push(getAssetInfoByAddress(vaultData.supplyToken1, network).symbol);
1394
- if (vaultData.borrowToken1 && !compareAddresses(ZERO_ADDRESS, vaultData.borrowToken1))
1395
- vaultTokens.push(getAssetInfoByAddress(vaultData.borrowToken1, network).symbol);
1396
- return vaultTokens;
1397
- }).flat()));
1398
- // ETH and WBTC needed for other tokens prices
1399
- if (!tokens.includes('ETH'))
1400
- tokens.push('ETH');
1401
- if (!tokens.includes('WBTC'))
1402
- tokens.push('WBTC');
1403
- const [tokenPrices, merklCampaigns] = yield Promise.all([
1404
- getTokensPricesForPortfolio(tokens, provider, network),
1405
- getFluidMerklCampaigns(network),
1406
- ]);
1407
- const parsedMarketsData = yield Promise.all(vaultsData.map((vaultData) => __awaiter(void 0, void 0, void 0, function* () { return parseMarketData(provider, vaultData, network, tokenPrices); })));
1408
- const marketsData = {};
1409
- parsedMarketsData.forEach((marketData, i) => {
1410
- if (!marketData)
1411
- return;
1412
- marketsData[versions[i].value] = attachFluidMerklIncentives(marketData, merklCampaigns);
1413
- });
1414
- return marketsData;
1415
- });
1416
- export const getAllFluidMarketDataPortfolio = (provider, network) => __awaiter(void 0, void 0, void 0, function* () { return _getAllFluidMarketDataPortfolio(getViemProvider(provider, network, { batch: { multicall: true } }), network); });
@@ -1,4 +1,4 @@
1
- import { AaveHelperCommon, AaveMarketInfo, AaveV3AggregatedPositionData, AaveV3AssetsData, AaveV3UsedAsset, AaveV3UsedAssets, AaveVersions } from '../../types';
1
+ import { AaveHelperCommon, AaveMarketInfo, AaveV3AggregatedPositionData, AaveV3AssetsData, AaveV3UsedAsset, AaveV3UsedAssets, AaveVersions, EModeCategoriesData } from '../../types';
2
2
  import { EthereumProvider, NetworkNumber } from '../../types/common';
3
3
  export declare const AAVE_V3_MARKETS: AaveVersions[];
4
4
  export declare const isAaveV2: ({ selectedMarket }: {
@@ -15,6 +15,14 @@ export declare const aaveV3IsInSiloedMode: ({ usedAssets, assetsData }: {
15
15
  usedAssets: AaveV3UsedAssets;
16
16
  assetsData: AaveV3AssetsData;
17
17
  }) => boolean;
18
+ export declare const aaveV3IsEmodeIsolated: ({ eModeCategory, eModeCategoriesData }: {
19
+ eModeCategory: number;
20
+ eModeCategoriesData?: EModeCategoriesData;
21
+ }) => boolean;
22
+ export declare const aaveV3CanBeCollateralInEmode: ({ eModeCategory, eModeCategoriesData }: {
23
+ eModeCategory: number;
24
+ eModeCategoriesData?: EModeCategoriesData;
25
+ }, _asset: string) => boolean;
18
26
  export declare const aaveAnyGetCollSuppliedAssets: ({ usedAssets }: {
19
27
  usedAssets: AaveV3UsedAssets;
20
28
  }) => AaveV3UsedAsset[];
@@ -33,6 +33,12 @@ export const isAaveV2 = ({ selectedMarket }) => selectedMarket.value === AaveVer
33
33
  export const isAaveV3 = ({ selectedMarket }) => AAVE_V3_MARKETS.includes(selectedMarket.value);
34
34
  export const aaveV3IsInIsolationMode = ({ usedAssets, assetsData }) => Object.values(usedAssets).some(({ symbol, collateral }) => collateral && assetsData[symbol].isIsolated);
35
35
  export const aaveV3IsInSiloedMode = ({ usedAssets, assetsData }) => Object.values(usedAssets).some(({ symbol, debt }) => debt && assetsData[symbol].isSiloed);
36
+ export const aaveV3IsEmodeIsolated = ({ eModeCategory, eModeCategoriesData }) => { var _a; return eModeCategory !== 0 && !!((_a = eModeCategoriesData === null || eModeCategoriesData === void 0 ? void 0 : eModeCategoriesData[eModeCategory]) === null || _a === void 0 ? void 0 : _a.isolated); };
37
+ export const aaveV3CanBeCollateralInEmode = ({ eModeCategory, eModeCategoriesData }, _asset) => {
38
+ if (!aaveV3IsEmodeIsolated({ eModeCategory, eModeCategoriesData }))
39
+ return true;
40
+ return eModeCategoriesData[eModeCategory].collateralAssets.includes(getNativeAssetFromWrapped(_asset));
41
+ };
36
42
  export const aaveAnyGetCollSuppliedAssets = ({ usedAssets }) => Object.values(usedAssets)
37
43
  .filter(({ isSupplied, collateral }) => isSupplied && collateral);
38
44
  export const aaveAnyGetSuppliableAssets = (_a) => {
@@ -40,13 +46,16 @@ export const aaveAnyGetSuppliableAssets = (_a) => {
40
46
  const data = Object.assign({ usedAssets, eModeCategory, assetsData, selectedMarket, network }, rest);
41
47
  const collAccountAssets = aaveAnyGetCollSuppliedAssets(data);
42
48
  const marketAssets = Object.values(assetsData);
43
- if (collAccountAssets.length === 0 || !isAaveV3(data))
49
+ if (!isAaveV3(data))
44
50
  return marketAssets.filter(({ canBeSupplied }) => canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: true }));
51
+ const canBeCollateralInEmode = (symbol) => aaveV3CanBeCollateralInEmode(data, symbol);
52
+ if (collAccountAssets.length === 0)
53
+ return marketAssets.filter(({ canBeSupplied }) => canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: canBeCollateralInEmode(symbol) }));
45
54
  if (aaveV3IsInIsolationMode(data)) {
46
55
  const collAsset = collAccountAssets[0].symbol;
47
- return marketAssets.filter(d => d.canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: symbol === collAsset }));
56
+ return marketAssets.filter(d => d.canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: symbol === collAsset && canBeCollateralInEmode(symbol) }));
48
57
  }
49
- return marketAssets.filter(d => d.canBeSupplied).map(({ symbol, isIsolated }) => ({ symbol, canBeCollateral: !isIsolated }));
58
+ return marketAssets.filter(d => d.canBeSupplied).map(({ symbol, isIsolated }) => ({ symbol, canBeCollateral: !isIsolated && canBeCollateralInEmode(symbol) }));
50
59
  };
51
60
  export const aaveAnyGetSuppliableAsCollAssets = (_a) => {
52
61
  var { usedAssets, eModeCategory, assetsData, selectedMarket, network } = _a, rest = __rest(_a, ["usedAssets", "eModeCategory", "assetsData", "selectedMarket", "network"]);
@@ -56,12 +65,15 @@ export const aaveAnyGetEmodeMutableProps = ({ eModeCategory, eModeCategoriesData
56
65
  const asset = getNativeAssetFromWrapped(_asset);
57
66
  const assetData = assetsData[asset];
58
67
  const eModeCategoryData = (eModeCategoriesData === null || eModeCategoriesData === void 0 ? void 0 : eModeCategoriesData[eModeCategory]) || {
59
- collateralAssets: [], ltvZeroAssets: [], collateralFactor: '0', liquidationRatio: '0',
68
+ collateralAssets: [], ltvZeroAssets: [], collateralFactor: '0', liquidationRatio: '0', isolated: false,
60
69
  };
61
70
  if (eModeCategory === 0
62
71
  || !eModeCategoryData.collateralAssets.includes(asset)
63
72
  || new Dec(eModeCategoryData.collateralFactor || 0).eq(0)) {
64
73
  const { liquidationRatio, collateralFactor } = assetData;
74
+ if (eModeCategory !== 0 && eModeCategoryData.isolated && !eModeCategoryData.collateralAssets.includes(asset)) {
75
+ return ({ liquidationRatio, collateralFactor: '0' });
76
+ }
65
77
  return ({ liquidationRatio, collateralFactor });
66
78
  }
67
79
  if (eModeCategoryData.ltvZeroAssets.includes(asset))
@@ -96,7 +108,10 @@ export const aaveAnyGetUserReserveLtvAndLltv = ({ eModeCategory, eModeCategories
96
108
  || !eModeCategoryData
97
109
  || !eModeCategoryData.collateralAssets.includes(asset)
98
110
  || new Dec(eModeCategoryData.collateralFactor || 0).eq(0)) {
99
- return { ltv: assetData.collateralFactor, lltv: assetData.liquidationRatio };
111
+ const ltv = eModeCategory !== 0 && (eModeCategoryData === null || eModeCategoryData === void 0 ? void 0 : eModeCategoryData.isolated) && !eModeCategoryData.collateralAssets.includes(asset)
112
+ ? '0'
113
+ : assetData.collateralFactor;
114
+ return { ltv, lltv: assetData.liquidationRatio };
100
115
  }
101
116
  const ltv = eModeCategoryData.ltvZeroAssets.includes(asset) ? '0' : eModeCategoryData.collateralFactor;
102
117
  return { ltv, lltv: eModeCategoryData.liquidationRatio };
@@ -125,9 +140,6 @@ export const aaveAnyGetAggregatedPositionData = (_a) => {
125
140
  return new Dec(suppliedUsd).mul(effectiveLtv);
126
141
  });
127
142
  payload.safetyRatioWithLtvZeroFallback = +payload.suppliedUsd ? new Dec(payload.borrowLimitWithLtvZeroFallbackUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
128
- // Normalised safety ratio (100 = liquidation on every protocol): the automation ratio above, falling back
129
- // to the regular ratio when the fallback carries its '0' placeholder.
130
- payload.safetyRatio = +payload.safetyRatioWithLtvZeroFallback ? payload.safetyRatioWithLtvZeroFallback : payload.ratio;
131
143
  payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
132
144
  payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
133
145
  const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
@@ -208,7 +208,6 @@ export const aaveV4GetAggregatedPositionData = ({ usedAssets, assetsData, networ
208
208
  payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
209
209
  payload.minRatio = '100';
210
210
  payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
211
- payload.safetyRatio = payload.ratio;
212
211
  payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
213
212
  payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
214
213
  const { leveragedType, leveragedAsset } = isLeveragedPosAaveV4(usedAssets);
@@ -93,7 +93,6 @@ export const getCompoundV2AggregatedData = (_a) => {
93
93
  payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
94
94
  ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
95
95
  : '0';
96
- payload.safetyRatio = payload.ratio;
97
96
  // Calculate borrow limits per asset
98
97
  Object.values(usedAssets).forEach((item) => {
99
98
  if (item.isBorrowed) {
@@ -135,7 +134,6 @@ export const getCompoundV3AggregatedData = (_a) => {
135
134
  payload.incentiveUsd = incentiveUsd;
136
135
  payload.totalInterestUsd = totalInterestUsd;
137
136
  payload.minRatio = '100';
138
- payload.safetyRatio = payload.ratio;
139
137
  payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
140
138
  payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
141
139
  payload.minDebt = assetsData[selectedMarket.baseAsset].minDebt;
@@ -1,11 +1,9 @@
1
1
  import { CrvUSDAggregatedPositionData, CrvUSDMarketData, CrvUSDUsedAssets } from '../../types';
2
2
  import { NetworkNumber } from '../../types/common';
3
- export declare const getCrvUsdAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, borrowRate, collStakingApy, ...rest }: {
3
+ export declare const getCrvUsdAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, numOfBands, ...rest }: {
4
4
  loanExists: boolean;
5
5
  usedAssets: CrvUSDUsedAssets;
6
6
  network: NetworkNumber;
7
7
  selectedMarket: CrvUSDMarketData;
8
8
  numOfBands: number | string;
9
- borrowRate?: string;
10
- collStakingApy?: string;
11
9
  }) => CrvUSDAggregatedPositionData;
@@ -12,10 +12,9 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  import Dec from 'decimal.js';
13
13
  import { calcLeverageLiqPrice, getAssetsTotal, getExposure, isLeveragedPos, } from '../../moneymarket';
14
14
  import { mapRange } from '../../services/utils';
15
- import { calculateNetApyFromRates } from '../../staking';
16
15
  export const getCrvUsdAggregatedData = (_a) => {
17
- var _b, _c;
18
- var { loanExists, usedAssets, network, selectedMarket, numOfBands, borrowRate = '0', collStakingApy = '0' } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands", "borrowRate", "collStakingApy"]);
16
+ var _b;
17
+ var { loanExists, usedAssets, network, selectedMarket, numOfBands } = _a, rest = __rest(_a, ["loanExists", "usedAssets", "network", "selectedMarket", "numOfBands"]);
19
18
  const payload = {};
20
19
  payload.supplied = getAssetsTotal(usedAssets, ({ isSupplied }) => isSupplied, ({ supplied }) => supplied); // this is wrong if we are in soft-liquidations
21
20
  payload.borrowed = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowed }) => borrowed);
@@ -29,8 +28,6 @@ export const getCrvUsdAggregatedData = (_a) => {
29
28
  : '0';
30
29
  // this is all approximation
31
30
  payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
32
- // Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
33
- payload.safetyRatio = loanExists && payload.minAllowedRatio ? new Dec(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
34
31
  payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
35
32
  // only take in consideration collAsset
36
33
  payload.borrowLimitUsd = ((_b = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[selectedMarket.collAsset]) === null || _b === void 0 ? void 0 : _b.isSupplied)
@@ -44,16 +41,5 @@ export const getCrvUsdAggregatedData = (_a) => {
44
41
  payload.liquidationPrice = calcLeverageLiqPrice(leveragedType, usedAssets[selectedMarket.collAsset].price, payload.borrowedUsd, payload.borrowLimitUsd);
45
42
  }
46
43
  payload.exposure = getExposure(payload.borrowedUsd, payload.suppliedUsd);
47
- // crvUSD debt accrues the market borrow rate. Collateral (including crvUSD held during soft liquidation) earns
48
- // nothing from the protocol itself; only the native yield of staked collateral is counted, as an incentive.
49
- const { netApy, totalInterestUsd, incentiveUsd } = calculateNetApyFromRates({
50
- suppliedUsd: payload.suppliedUsd,
51
- borrowedUsd: payload.borrowedUsd,
52
- borrowRate,
53
- incentives: [{ apy: collStakingApy, amountUsd: ((_c = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[selectedMarket.collAsset]) === null || _c === void 0 ? void 0 : _c.suppliedUsd) || '0' }],
54
- });
55
- payload.netApy = netApy;
56
- payload.totalInterestUsd = totalInterestUsd;
57
- payload.incentiveUsd = incentiveUsd;
58
44
  return payload;
59
45
  };
@@ -78,7 +78,6 @@ export const getFluidAggregatedData = ({ usedAssets, assetsData, marketData, },
78
78
  payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
79
79
  payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
80
80
  payload.minRatio = marketData.minRatio;
81
- payload.safetyRatio = payload.ratio;
82
81
  const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
83
82
  payload.leveragedType = leveragedType;
84
83
  payload.liquidationPrice = '';
@@ -41,7 +41,6 @@ export const getLiquityV2AggregatedPositionData = ({ usedAssets, assetsData, min
41
41
  payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
42
42
  payload.ratio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
43
43
  payload.collRatio = (+payload.suppliedUsd && +payload.borrowedUsd) ? new Dec(payload.suppliedUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
44
- payload.safetyRatio = payload.ratio;
45
44
  const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApyLiquityV2(usedAssets, assetsData, interestRate);
46
45
  payload.netApy = netApy;
47
46
  payload.incentiveUsd = incentiveUsd;
@@ -36,8 +36,6 @@ export const getLlamaLendAggregatedData = (_a) => {
36
36
  : '0';
37
37
  // this is all approximation
38
38
  payload.minAllowedRatio = mapRange(numOfBands, 4, 50, 115, 140); // collateral ratio
39
- // Collateral ratio rebased so 100 sits on the band-derived minimum (normalised safety ratio, same scale as the other protocols).
40
- payload.safetyRatio = loanExists && payload.minAllowedRatio ? new Dec(payload.ratio).div(payload.minAllowedRatio).mul(100).toString() : '0';
41
39
  payload.collFactor = new Dec(1).div(payload.minAllowedRatio).mul(100).toString(); // collateral factor = 1 / collateral ratio
42
40
  // only take in consideration collAsset
43
41
  payload.borrowLimitUsd = ((_b = usedAssets === null || usedAssets === void 0 ? void 0 : usedAssets[collAsset]) === null || _b === void 0 ? void 0 : _b.isSupplied)
@@ -1,4 +1,4 @@
1
- export declare const parseCollateralInfo: (ilk: string, _par: string, _mat: string, _art: string, _rate: string, _spot: string, _line: string, _dust: string, _duty: string, _futureRate: string, _chop: string) => {
1
+ export declare const parseCollateralInfo: (ilk: string, _par: string, _mat: string, _art: string, _rate: string, _spot: string, _line: string, _duty: string, _futureRate: string, _chop: string) => {
2
2
  ilkLabel: string;
3
3
  currentRate: string;
4
4
  futureRate: string;
@@ -1,14 +1,14 @@
1
1
  import Dec from 'decimal.js';
2
2
  import { SECONDS_PER_YEAR } from '../../constants';
3
3
  import { bytesToString } from '../../services/utils';
4
- export const parseCollateralInfo = (ilk, _par, _mat, _art, _rate, _spot, _line, _dust, _duty, _futureRate, _chop) => {
4
+ export const parseCollateralInfo = (ilk, _par, _mat, _art, _rate, _spot, _line, _duty, _futureRate, _chop) => {
5
5
  const par = new Dec(_par).div(1e27).toString();
6
6
  const mat = new Dec(_mat).div(1e27).toString();
7
7
  const art = new Dec(_art).toString();
8
8
  const rate = new Dec(_rate).toString();
9
9
  const spot = new Dec(_spot).div(1e27).toString();
10
10
  const line = new Dec(_line).div(1e45).toString();
11
- const dust = new Dec(_dust).div(1e45).toString(); // Vat.ilks.dust, rad (1e45) -> DAI
11
+ const dust = new Dec(_rate).div(1e45).toString();
12
12
  const duty = new Dec(_duty).toString();
13
13
  const futureRate = new Dec(_futureRate).toString();
14
14
  const chop = new Dec(_chop).div(1e18).toString();
@@ -40,8 +40,6 @@ export const getMorphoBlueAggregatedPositionData = ({ usedAssets, assetsData, ma
40
40
  payload.ltv = new Dec(((_c = usedAssets[loanToken]) === null || _c === void 0 ? void 0 : _c.borrowed) || 0).div(oracle).div(((_d = usedAssets[collateralToken]) === null || _d === void 0 ? void 0 : _d.supplied) || 1).toString(); // default to 1 because can't div 0
41
41
  payload.ratio = new Dec(((_e = usedAssets[collateralToken]) === null || _e === void 0 ? void 0 : _e.supplied) || 0).mul(oracle).div(((_f = usedAssets[loanToken]) === null || _f === void 0 ? void 0 : _f.borrowed) || 1).mul(100)
42
42
  .toString();
43
- // Borrow limit over debt, so 100 sits on the market's LLTV however low it is (`ratio` is the raw collateral ratio).
44
- payload.safetyRatio = +payload.borrowedUsd > 0 ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
45
43
  const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
46
44
  payload.leveragedType = leveragedType;
47
45
  payload.liquidationPrice = '';
@@ -58,8 +58,6 @@ export const getMorphoMidnightAggregatedPositionData = ({ usedAssets, assetsData
58
58
  payload.ltv = new Dec(payload.suppliedCollateralUsd).eq(0) ? '0' : new Dec(payload.borrowedUsd).div(payload.suppliedCollateralUsd).toString();
59
59
  payload.ratio = new Dec(payload.borrowedUsd).eq(0) ? '0' : new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString();
60
60
  payload.healthRatio = new Dec(payload.borrowedUsd).eq(0) ? 'Infinity' : new Dec(payload.liquidationLimitUsd).div(payload.borrowedUsd).toDP(4).toString();
61
- // Borrow limit over debt, so 100 sits on the market's LLTV however low it is (`ratio` is the raw collateral ratio).
62
- payload.safetyRatio = +payload.borrowedUsd > 0 ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
63
61
  const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
64
62
  payload.leveragedType = leveragedType;
65
63
  payload.liquidationPrice = '';
@@ -70,7 +70,6 @@ export const sparkGetAggregatedPositionData = (_a) => {
70
70
  payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
71
71
  payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
72
72
  payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
73
- payload.safetyRatio = payload.ratio;
74
73
  const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy({ usedAssets, assetsData });
75
74
  payload.netApy = netApy;
76
75
  payload.incentiveUsd = incentiveUsd;
@@ -16,7 +16,6 @@ import { ZERO_ADDRESS } from '../constants';
16
16
  import { getViemProvider, setViemBlockNumber } from '../services/viem';
17
17
  import { getEthAmountForDecimals } from '../services/utils';
18
18
  import { getExposure } from '../moneymarket';
19
- import { calculateNetApyFromRates } from '../staking';
20
19
  export const LIQUITY_NORMAL_MODE_RATIO = 110; // MCR
21
20
  export const LIQUITY_RECOVERY_MODE_RATIO = 150; // CCR
22
21
  export const _getLiquityAccountBalances = (provider, network, block, addressMapping, address) => __awaiter(void 0, void 0, void 0, function* () {
@@ -69,14 +68,6 @@ export const _getLiquityTroveInfo = (provider, network, address) => __awaiter(vo
69
68
  _getDebtInFront(viewContract, address),
70
69
  ]);
71
70
  const recoveryMode = troveInfo[6];
72
- const minCollateralRatio = recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO;
73
- const collateral = assetAmountInEth(troveInfo[1].toString());
74
- const debtInAsset = assetAmountInEth(troveInfo[2].toString());
75
- const collateralUsd = new Dec(collateral).mul(assetAmountInEth(assetPrice.toString())).toString();
76
- const collRatio = +debtInAsset ? new Dec(collateralUsd).div(debtInAsset).mul(100).toString() : '0';
77
- // LUSD debt is interest free (only a one-off borrowing fee on issuance) and ETH collateral earns no yield,
78
- // so a trove's net APY is always 0. It is exposed for parity with the other protocols.
79
- const { netApy, totalInterestUsd, incentiveUsd } = calculateNetApyFromRates({ suppliedUsd: collateralUsd, borrowedUsd: debtInAsset });
80
71
  const payload = {
81
72
  troveStatus: LIQUITY_TROVE_STATUS_ENUM[+(troveInfo[0].toString())],
82
73
  collateral: assetAmountInEth(troveInfo[1].toString()),
@@ -89,15 +80,10 @@ export const _getLiquityTroveInfo = (provider, network, address) => __awaiter(vo
89
80
  totalETH: totalETH.toString(),
90
81
  totalLUSD: totalLUSD.toString(),
91
82
  debtInFront: debtInFront.toString(),
92
- minCollateralRatio,
93
- // Collateral ratio rebased so 100 sits on the trove's minimum collateral ratio (normalised safety ratio).
94
- safetyRatio: +minCollateralRatio > 0 ? new Dec(collRatio).div(minCollateralRatio).mul(100).toString() : '0',
83
+ minCollateralRatio: recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO,
95
84
  priceForRecovery: new Dec(recoveryMode ? LIQUITY_RECOVERY_MODE_RATIO : LIQUITY_NORMAL_MODE_RATIO).mul(totalLUSD).div(totalETH).div(100)
96
85
  .toString(),
97
- exposure: getExposure(debtInAsset, collateralUsd),
98
- netApy,
99
- totalInterestUsd,
100
- incentiveUsd,
86
+ exposure: getExposure(assetAmountInEth(troveInfo[2].toString()), new Dec(assetAmountInEth(troveInfo[1].toString())).mul(assetPrice).toString()),
101
87
  };
102
88
  return payload;
103
89
  });
@@ -1,14 +1,9 @@
1
1
  import { Client, PublicClient } from 'viem';
2
2
  import { Blockish, EthAddress, EthereumProvider, NetworkNumber, PositionBalances } from '../types/common';
3
- import { CdpData, CdpInfo, IlkInfo } from '../types';
3
+ import { CdpData, CdpInfo } from '../types';
4
4
  export declare const _getMakerAccountBalances: (provider: PublicClient, network: NetworkNumber, block: Blockish, addressMapping: boolean, cdpId: string, _managerAddress?: EthAddress) => Promise<PositionBalances>;
5
5
  export declare const getMakerAccountBalances: (provider: EthereumProvider, network: NetworkNumber, block: Blockish, addressMapping: boolean, cdpId: string, _managerAddress?: EthAddress) => Promise<PositionBalances>;
6
6
  export declare const _getUserCdps: (provider: Client, network: NetworkNumber, userAddress: EthAddress) => Promise<CdpInfo[]>;
7
7
  export declare const getUserCdps: (provider: EthereumProvider, network: NetworkNumber, userAddress: EthAddress) => Promise<CdpInfo[]>;
8
- export declare const _getMakerIlksData: (provider: Client, network: NetworkNumber, ilkLabels: string[]) => Promise<Record<string, IlkInfo>>;
9
- export declare const getMakerIlksData: (provider: EthereumProvider, network: NetworkNumber, ilkLabels: string[]) => Promise<Record<string, IlkInfo>>;
10
- /**
11
- * @param ilkInfo optional precomputed ilk data (from `_getMakerIlksData`); when provided the per-ilk reads are skipped
12
- */
13
- export declare const _getMakerCdpData: (provider: Client, network: NetworkNumber, cdp: CdpInfo, ilkInfo?: IlkInfo) => Promise<CdpData>;
8
+ export declare const _getMakerCdpData: (provider: Client, network: NetworkNumber, cdp: CdpInfo) => Promise<CdpData>;
14
9
  export declare const getMakerCdpData: (provider: EthereumProvider, network: NetworkNumber, cdp: CdpInfo) => Promise<CdpData>;
@@ -8,14 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import Dec from 'decimal.js';
11
- import { assetAmountInEth, bytesToString, getAssetInfo, ilkToAsset, stringToBytes, } from '@defisaver/tokens';
11
+ import { assetAmountInEth, bytesToString, getAssetInfo, ilkToAsset, } from '@defisaver/tokens';
12
12
  import { getConfigContractAddress, McdDogContractViem, McdGetCdpsContractViem, McdJugContractViem, McdSpotterContractViem, McdVatContractViem, McdViewContractViem, } from '../contracts';
13
- import { CdpType, } from '../types';
13
+ import { CdpType } from '../types';
14
14
  import { wethToEth } from '../services/utils';
15
15
  import { parseCollateralInfo } from '../helpers/makerHelpers';
16
16
  import { getViemProvider, setViemBlockNumber } from '../services/viem';
17
17
  import { getExposure } from '../moneymarket';
18
- import { calculateNetApyFromRates, getStakingApy, STAKING_ASSETS } from '../staking';
19
18
  export const _getMakerAccountBalances = (provider, network, block, addressMapping, cdpId, _managerAddress) => __awaiter(void 0, void 0, void 0, function* () {
20
19
  let balances = {
21
20
  collateral: {},
@@ -39,7 +38,7 @@ export const _getMakerAccountBalances = (provider, network, block, addressMappin
39
38
  // [urn, owner, userAddr, ilk, collateral, debt]
40
39
  const cdpInfo = yield viewContract.read.getCdpInfo((needsIlk ? [managerAddress, cdpId, ilk] : [cdpId]), setViemBlockNumber(block));
41
40
  cdpInfo.ilk = cdpInfo[3];
42
- const [par, [_, mat], [artGlobal, rate, spot, line, dust], [duty], futureRate, chop,] = yield Promise.all([
41
+ const [par, [_, mat], [artGlobal, rate, spot, line], [duty], futureRate, chop,] = yield Promise.all([
43
42
  spotterContract.read.par(setViemBlockNumber(block)),
44
43
  spotterContract.read.ilks(needsIlk ? [ilk] : [cdpInfo.ilk], setViemBlockNumber(block)),
45
44
  vatContract.read.ilks(needsIlk ? [ilk] : [cdpInfo.ilk], setViemBlockNumber(block)),
@@ -47,7 +46,7 @@ export const _getMakerAccountBalances = (provider, network, block, addressMappin
47
46
  jugContract.read.drip(needsIlk ? [ilk] : [cdpInfo.ilk], setViemBlockNumber(block)),
48
47
  dogContract.read.chop(needsIlk ? [ilk] : [cdpInfo.ilk], setViemBlockNumber(block)),
49
48
  ]);
50
- const ilkInfo = parseCollateralInfo(needsIlk ? ilk : cdpInfo.ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(), dust.toString(), duty.toString(), futureRate.toString(), chop.toString());
49
+ const ilkInfo = parseCollateralInfo(needsIlk ? ilk : cdpInfo.ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(), duty.toString(), futureRate.toString(), chop.toString());
51
50
  const collateral = cdpInfo[4];
52
51
  const debt = cdpInfo[5];
53
52
  const asset = wethToEth(ilkToAsset(needsIlk ? ilk : cdpInfo.ilk));
@@ -81,38 +80,22 @@ export const _getUserCdps = (provider, network, userAddress) => __awaiter(void 0
81
80
  return parsedStandardCdps;
82
81
  });
83
82
  export const getUserCdps = (provider, network, userAddress) => __awaiter(void 0, void 0, void 0, function* () { return _getUserCdps(getViemProvider(provider, network), network, userAddress); });
84
- export const _getMakerIlksData = (provider, network, ilkLabels) => __awaiter(void 0, void 0, void 0, function* () {
83
+ export const _getMakerCdpData = (provider, network, cdp) => __awaiter(void 0, void 0, void 0, function* () {
85
84
  const vatContract = McdVatContractViem(provider, network);
86
85
  const spotterContract = McdSpotterContractViem(provider, network);
87
86
  const dogContract = McdDogContractViem(provider, network);
88
87
  const jugContract = McdJugContractViem(provider, network);
89
- const par = yield spotterContract.read.par();
90
- const ilksInfo = yield Promise.all(ilkLabels.map((ilkLabel) => __awaiter(void 0, void 0, void 0, function* () {
91
- const ilk = stringToBytes(ilkLabel);
92
- const [[_, mat], [artGlobal, rate, spot, line, dust], [duty], futureRate, chop,] = yield Promise.all([
93
- spotterContract.read.ilks([ilk]),
94
- vatContract.read.ilks([ilk]),
95
- jugContract.read.ilks([ilk]),
96
- jugContract.read.drip([ilk]),
97
- dogContract.read.chop([ilk]),
98
- ]);
99
- return parseCollateralInfo(ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(), dust.toString(), duty.toString(), futureRate.toString(), chop.toString());
100
- })));
101
- return Object.fromEntries(ilksInfo.map((ilkInfo) => [ilkInfo.ilkLabel, ilkInfo]));
102
- });
103
- export const getMakerIlksData = (provider, network, ilkLabels) => __awaiter(void 0, void 0, void 0, function* () { return _getMakerIlksData(getViemProvider(provider, network, { batch: { multicall: true } }), network, ilkLabels); });
104
- /**
105
- * @param ilkInfo optional precomputed ilk data (from `_getMakerIlksData`); when provided the per-ilk reads are skipped
106
- */
107
- export const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(void 0, void 0, void 0, function* () {
108
- const vatContract = McdVatContractViem(provider, network);
109
- const [[ink, art], coll, fetchedIlkInfo, collStakingApy,] = yield Promise.all([
88
+ const [[ink, art], coll, par, [_, mat], [artGlobal, rate, spot, line], [duty], futureRate, chop,] = yield Promise.all([
110
89
  vatContract.read.urns([cdp.ilk, cdp.urn]),
111
90
  vatContract.read.gem([cdp.ilk, cdp.urn]),
112
- ilkInfo || _getMakerIlksData(provider, network, [cdp.ilkLabel]).then((ilks) => ilks[cdp.ilkLabel]),
113
- STAKING_ASSETS.includes(cdp.asset) ? getStakingApy(cdp.asset) : Promise.resolve('0'),
91
+ spotterContract.read.par(),
92
+ spotterContract.read.ilks([cdp.ilk]),
93
+ vatContract.read.ilks([cdp.ilk]),
94
+ jugContract.read.ilks([cdp.ilk]),
95
+ jugContract.read.drip([cdp.ilk]),
96
+ dogContract.read.chop([cdp.ilk]),
114
97
  ]);
115
- const collInfo = fetchedIlkInfo;
98
+ const collInfo = parseCollateralInfo(cdp.ilk, par.toString(), mat.toString(), artGlobal.toString(), rate.toString(), spot.toString(), line.toString(), duty.toString(), futureRate.toString(), chop.toString());
116
99
  const collateral = assetAmountInEth(ink.toString(), `MCD-${cdp.asset}`);
117
100
  const collateralUsd = new Dec(collateral).mul(collInfo.assetPrice).toString();
118
101
  const debt = new Dec(art).times(collInfo.currentRate).div(1e27).floor()
@@ -124,17 +107,7 @@ export const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(v
124
107
  .toString();
125
108
  if (new Dec(debt).eq(0))
126
109
  ratio = '0';
127
- // Collateral ratio rebased so 100 sits on the ilk's liquidation ratio (normalised safety ratio).
128
- const safetyRatio = +collInfo.liqPercent > 0 ? new Dec(ratio).div(collInfo.liqPercent).mul(100).toString() : '0';
129
110
  const debtTooLow = new Dec(debt).gt(0) && new Dec(assetAmountInEth(debt, 'DAI')).lt(collInfo.minDebt);
130
- // DAI debt accrues the ilk's stability fee. Collateral earns nothing inside the vault, except for the
131
- // native yield of staked collateral (e.g. wstETH), which is tracked as an incentive.
132
- const { netApy, totalInterestUsd, incentiveUsd } = calculateNetApyFromRates({
133
- suppliedUsd: collateralUsd,
134
- borrowedUsd: assetAmountInEth(debt, 'DAI'),
135
- borrowRate: collInfo.stabilityFee.toString(),
136
- incentives: [{ apy: collStakingApy, amountUsd: collateralUsd }],
137
- });
138
111
  return {
139
112
  owner: cdp.owner,
140
113
  id: cdp.id.toString(),
@@ -153,7 +126,6 @@ export const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(v
153
126
  debtAssetMarketPrice: '1',
154
127
  liquidationPrice,
155
128
  ratio,
156
- safetyRatio,
157
129
  liqRatio: collInfo.liqRatio.toString(),
158
130
  liqPercent: parseFloat(collInfo.liqPercent.toString()),
159
131
  assetPrice: collInfo.assetPrice,
@@ -169,9 +141,6 @@ export const _getMakerCdpData = (provider, network, cdp, ilkInfo) => __awaiter(v
169
141
  liquidationFee: collInfo.liquidationFee,
170
142
  lastUpdated: Date.now(),
171
143
  exposure: getExposure(assetAmountInEth(debt, 'DAI'), collateralUsd),
172
- netApy,
173
- totalInterestUsd,
174
- incentiveUsd,
175
144
  };
176
145
  });
177
146
  export const getMakerCdpData = (provider, network, cdp) => __awaiter(void 0, void 0, void 0, function* () { return _getMakerCdpData(getViemProvider(provider, network), network, cdp); });
@@ -8,4 +8,3 @@ export { LlamaLendMarkets } from './llamaLend';
8
8
  export { LiquityV2Markets, findLiquityV2MarketByAddress } from './liquityV2';
9
9
  export { FluidMarkets, getFluidVersionsDataForNetwork, getFluidMarketInfoById, getFTokenAddress, getFluidMarketInfoByAddress, } from './fluid';
10
10
  export { AaveV4Spokes, findAaveV4SpokeByAddress } from './aaveV4';
11
- export { MakerActiveIlks } from './maker';
@@ -8,4 +8,3 @@ export { LlamaLendMarkets } from './llamaLend';
8
8
  export { LiquityV2Markets, findLiquityV2MarketByAddress } from './liquityV2';
9
9
  export { FluidMarkets, getFluidVersionsDataForNetwork, getFluidMarketInfoById, getFTokenAddress, getFluidMarketInfoByAddress, } from './fluid';
10
10
  export { AaveV4Spokes, findAaveV4SpokeByAddress } from './aaveV4';
11
- export { MakerActiveIlks } from './maker';
@@ -1,13 +1,9 @@
1
1
  import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
2
- import { PortfolioMarketsData, PortfolioPositionsData } from '../types';
2
+ import { PortfolioPositionsData } from '../types';
3
3
  export declare function getPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], isSim?: boolean): Promise<{
4
4
  positions: PortfolioPositionsData;
5
5
  stakingPositions: any;
6
6
  rewardsData: any;
7
7
  markets: any;
8
8
  }>;
9
- export declare function getShifterPortfolioData(provider: EthereumProvider, network: NetworkNumber, defaultProvider: EthereumProvider, addresses: EthAddress[], isSim?: boolean): Promise<{
10
- positions: PortfolioPositionsData;
11
- markets: PortfolioMarketsData;
12
- }>;
13
9
  export * from './discovery';