@defisaver/positions-sdk 2.1.52 → 2.1.53-aave-v4

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 (201) hide show
  1. package/.mocharc.json +4 -4
  2. package/.nvmrc +1 -1
  3. package/README.md +64 -64
  4. package/cjs/aaveV4/index.d.ts +7 -0
  5. package/cjs/aaveV4/index.js +174 -0
  6. package/cjs/config/contracts.d.ts +1277 -0
  7. package/cjs/config/contracts.js +9 -0
  8. package/cjs/contracts.d.ts +23120 -0
  9. package/cjs/contracts.js +2 -1
  10. package/cjs/fluid/index.d.ts +6 -6
  11. package/cjs/helpers/aaveHelpers/index.d.ts +2 -2
  12. package/cjs/helpers/aaveHelpers/index.js +16 -5
  13. package/cjs/helpers/aaveV4Helpers/index.d.ts +13 -0
  14. package/cjs/helpers/aaveV4Helpers/index.js +117 -0
  15. package/cjs/helpers/compoundHelpers/index.js +15 -18
  16. package/cjs/helpers/eulerHelpers/index.d.ts +2 -2
  17. package/cjs/helpers/eulerHelpers/index.js +21 -13
  18. package/cjs/helpers/fluidHelpers/index.js +16 -5
  19. package/cjs/helpers/index.d.ts +1 -0
  20. package/cjs/helpers/index.js +2 -1
  21. package/cjs/helpers/morphoBlueHelpers/index.js +81 -71
  22. package/cjs/helpers/sparkHelpers/index.d.ts +2 -2
  23. package/cjs/helpers/sparkHelpers/index.js +15 -5
  24. package/cjs/index.d.ts +2 -1
  25. package/cjs/index.js +3 -1
  26. package/cjs/markets/aaveV4/index.d.ts +13 -0
  27. package/cjs/markets/aaveV4/index.js +39 -0
  28. package/cjs/markets/index.d.ts +1 -0
  29. package/cjs/markets/index.js +3 -1
  30. package/cjs/moneymarket/moneymarketCommonService.d.ts +3 -3
  31. package/cjs/moneymarket/moneymarketCommonService.js +9 -9
  32. package/cjs/portfolio/index.js +20 -0
  33. package/cjs/savings/morphoVaults/index.js +17 -17
  34. package/cjs/types/aave.d.ts +3 -3
  35. package/cjs/types/aaveV4.d.ts +137 -0
  36. package/cjs/types/aaveV4.js +11 -0
  37. package/cjs/types/common.d.ts +7 -0
  38. package/cjs/types/common.js +9 -1
  39. package/cjs/types/compound.d.ts +3 -3
  40. package/cjs/types/curveUsd.d.ts +2 -2
  41. package/cjs/types/euler.d.ts +3 -3
  42. package/cjs/types/fluid.d.ts +3 -3
  43. package/cjs/types/index.d.ts +2 -0
  44. package/cjs/types/index.js +2 -0
  45. package/cjs/types/liquityV2.d.ts +3 -3
  46. package/cjs/types/llamaLend.d.ts +2 -2
  47. package/cjs/types/morphoBlue.d.ts +5 -5
  48. package/cjs/types/portfolio.d.ts +4 -0
  49. package/cjs/types/spark.d.ts +3 -3
  50. package/esm/aaveV4/index.d.ts +7 -0
  51. package/esm/aaveV4/index.js +165 -0
  52. package/esm/config/contracts.d.ts +1277 -0
  53. package/esm/config/contracts.js +8 -0
  54. package/esm/contracts.d.ts +23120 -0
  55. package/esm/contracts.js +1 -0
  56. package/esm/fluid/index.d.ts +6 -6
  57. package/esm/helpers/aaveHelpers/index.d.ts +2 -2
  58. package/esm/helpers/aaveHelpers/index.js +16 -5
  59. package/esm/helpers/aaveV4Helpers/index.d.ts +13 -0
  60. package/esm/helpers/aaveV4Helpers/index.js +108 -0
  61. package/esm/helpers/compoundHelpers/index.js +16 -19
  62. package/esm/helpers/eulerHelpers/index.d.ts +2 -2
  63. package/esm/helpers/eulerHelpers/index.js +21 -13
  64. package/esm/helpers/fluidHelpers/index.js +16 -5
  65. package/esm/helpers/index.d.ts +1 -0
  66. package/esm/helpers/index.js +1 -0
  67. package/esm/helpers/morphoBlueHelpers/index.js +82 -72
  68. package/esm/helpers/sparkHelpers/index.d.ts +2 -2
  69. package/esm/helpers/sparkHelpers/index.js +16 -6
  70. package/esm/index.d.ts +2 -1
  71. package/esm/index.js +2 -1
  72. package/esm/markets/aaveV4/index.d.ts +13 -0
  73. package/esm/markets/aaveV4/index.js +29 -0
  74. package/esm/markets/index.d.ts +1 -0
  75. package/esm/markets/index.js +1 -0
  76. package/esm/moneymarket/moneymarketCommonService.d.ts +3 -3
  77. package/esm/moneymarket/moneymarketCommonService.js +9 -9
  78. package/esm/portfolio/index.js +21 -1
  79. package/esm/savings/morphoVaults/index.js +17 -17
  80. package/esm/types/aave.d.ts +3 -3
  81. package/esm/types/aaveV4.d.ts +137 -0
  82. package/esm/types/aaveV4.js +8 -0
  83. package/esm/types/common.d.ts +7 -0
  84. package/esm/types/common.js +8 -0
  85. package/esm/types/compound.d.ts +3 -3
  86. package/esm/types/curveUsd.d.ts +2 -2
  87. package/esm/types/euler.d.ts +3 -3
  88. package/esm/types/fluid.d.ts +3 -3
  89. package/esm/types/fluid.js +1 -1
  90. package/esm/types/index.d.ts +2 -0
  91. package/esm/types/index.js +2 -0
  92. package/esm/types/liquityV2.d.ts +3 -3
  93. package/esm/types/llamaLend.d.ts +2 -2
  94. package/esm/types/morphoBlue.d.ts +5 -5
  95. package/esm/types/portfolio.d.ts +4 -0
  96. package/esm/types/spark.d.ts +3 -3
  97. package/package.json +48 -48
  98. package/src/aaveV2/index.ts +240 -240
  99. package/src/aaveV3/index.ts +635 -635
  100. package/src/aaveV3/merit.ts +97 -97
  101. package/src/aaveV3/merkl.ts +74 -74
  102. package/src/aaveV4/index.ts +176 -0
  103. package/src/claiming/aaveV3.ts +154 -154
  104. package/src/claiming/compV3.ts +22 -22
  105. package/src/claiming/ethena.ts +61 -61
  106. package/src/claiming/index.ts +12 -12
  107. package/src/claiming/king.ts +66 -66
  108. package/src/claiming/morphoBlue.ts +118 -118
  109. package/src/claiming/spark.ts +225 -225
  110. package/src/compoundV2/index.ts +244 -244
  111. package/src/compoundV3/index.ts +274 -274
  112. package/src/config/contracts.ts +1328 -1320
  113. package/src/constants/index.ts +10 -10
  114. package/src/contracts.ts +174 -172
  115. package/src/curveUsd/index.ts +254 -254
  116. package/src/eulerV2/index.ts +324 -324
  117. package/src/exchange/index.ts +25 -25
  118. package/src/fluid/index.ts +1800 -1800
  119. package/src/helpers/aaveHelpers/index.ts +202 -191
  120. package/src/helpers/aaveV4Helpers/index.ts +128 -0
  121. package/src/helpers/compoundHelpers/index.ts +276 -283
  122. package/src/helpers/curveUsdHelpers/index.ts +40 -40
  123. package/src/helpers/eulerHelpers/index.ts +229 -222
  124. package/src/helpers/fluidHelpers/index.ts +335 -326
  125. package/src/helpers/index.ts +11 -10
  126. package/src/helpers/liquityV2Helpers/index.ts +82 -82
  127. package/src/helpers/llamaLendHelpers/index.ts +53 -53
  128. package/src/helpers/makerHelpers/index.ts +52 -52
  129. package/src/helpers/morphoBlueHelpers/index.ts +405 -396
  130. package/src/helpers/sparkHelpers/index.ts +169 -158
  131. package/src/index.ts +51 -49
  132. package/src/liquity/index.ts +159 -159
  133. package/src/liquityV2/index.ts +703 -703
  134. package/src/llamaLend/index.ts +305 -305
  135. package/src/maker/index.ts +223 -223
  136. package/src/markets/aave/index.ts +118 -118
  137. package/src/markets/aave/marketAssets.ts +54 -54
  138. package/src/markets/aaveV4/index.ts +42 -0
  139. package/src/markets/compound/index.ts +243 -243
  140. package/src/markets/compound/marketsAssets.ts +97 -97
  141. package/src/markets/curveUsd/index.ts +69 -69
  142. package/src/markets/euler/index.ts +26 -26
  143. package/src/markets/fluid/index.ts +2900 -2900
  144. package/src/markets/index.ts +26 -25
  145. package/src/markets/liquityV2/index.ts +102 -102
  146. package/src/markets/llamaLend/contractAddresses.ts +141 -141
  147. package/src/markets/llamaLend/index.ts +235 -235
  148. package/src/markets/morphoBlue/index.ts +988 -988
  149. package/src/markets/spark/index.ts +29 -29
  150. package/src/markets/spark/marketAssets.ts +12 -12
  151. package/src/moneymarket/moneymarketCommonService.ts +84 -85
  152. package/src/morphoBlue/index.ts +274 -274
  153. package/src/portfolio/index.ts +606 -586
  154. package/src/savings/index.ts +95 -95
  155. package/src/savings/makerDsr/index.ts +53 -53
  156. package/src/savings/makerDsr/options.ts +9 -9
  157. package/src/savings/morphoVaults/index.ts +80 -80
  158. package/src/savings/morphoVaults/options.ts +193 -193
  159. package/src/savings/skyOptions/index.ts +95 -95
  160. package/src/savings/skyOptions/options.ts +10 -10
  161. package/src/savings/sparkSavingsVaults/index.ts +60 -60
  162. package/src/savings/sparkSavingsVaults/options.ts +35 -35
  163. package/src/savings/yearnV3Vaults/index.ts +61 -61
  164. package/src/savings/yearnV3Vaults/options.ts +55 -55
  165. package/src/savings/yearnVaults/index.ts +73 -73
  166. package/src/savings/yearnVaults/options.ts +32 -32
  167. package/src/services/priceService.ts +278 -278
  168. package/src/services/utils.ts +115 -115
  169. package/src/services/viem.ts +57 -57
  170. package/src/setup.ts +8 -8
  171. package/src/spark/index.ts +459 -459
  172. package/src/staking/eligibility.ts +53 -53
  173. package/src/staking/index.ts +1 -1
  174. package/src/staking/staking.ts +192 -192
  175. package/src/types/aave.ts +199 -198
  176. package/src/types/aaveV4.ts +153 -0
  177. package/src/types/claiming.ts +114 -114
  178. package/src/types/common.ts +115 -107
  179. package/src/types/compound.ts +145 -144
  180. package/src/types/curveUsd.ts +123 -123
  181. package/src/types/euler.ts +176 -175
  182. package/src/types/fluid.ts +485 -483
  183. package/src/types/index.ts +17 -15
  184. package/src/types/liquity.ts +30 -30
  185. package/src/types/liquityV2.ts +128 -126
  186. package/src/types/llamaLend.ts +161 -159
  187. package/src/types/maker.ts +63 -63
  188. package/src/types/merit.ts +1 -1
  189. package/src/types/merkl.ts +70 -70
  190. package/src/types/morphoBlue.ts +202 -202
  191. package/src/types/portfolio.ts +64 -60
  192. package/src/types/savings/index.ts +23 -23
  193. package/src/types/savings/makerDsr.ts +13 -13
  194. package/src/types/savings/morphoVaults.ts +32 -32
  195. package/src/types/savings/sky.ts +14 -14
  196. package/src/types/savings/sparkSavingsVaults.ts +15 -15
  197. package/src/types/savings/yearnV3Vaults.ts +17 -17
  198. package/src/types/savings/yearnVaults.ts +14 -14
  199. package/src/types/spark.ts +135 -134
  200. package/src/umbrella/index.ts +69 -69
  201. package/src/umbrella/umbrellaUtils.ts +29 -29
@@ -1,4 +1,4 @@
1
- import { EthAddress, IncentiveData, NetworkNumber } from './common';
1
+ import { EthAddress, IncentiveData, LeverageType, NetworkNumber } from './common';
2
2
  import { BandData, UserBandData } from './curveUsd';
3
3
  export declare enum LLVersionsEth {
4
4
  LLWstethCrvusd = "llamaLendwstETHcrvUSD",
@@ -112,7 +112,7 @@ export interface LlamaLendAggregatedPositionData {
112
112
  borrowLimitUsd: string;
113
113
  minAllowedRatio: number;
114
114
  collFactor: string;
115
- leveragedType: string;
115
+ leveragedType: LeverageType;
116
116
  leveragedAsset?: string;
117
117
  liquidationPrice?: string;
118
118
  netApy: string;
@@ -1,4 +1,4 @@
1
- import { EthAddress, IncentiveData, MMUsedAssets, NetworkNumber } from './common';
1
+ import { EthAddress, IncentiveData, LeverageType, MMUsedAssets, NetworkNumber } from './common';
2
2
  export declare enum MorphoBlueVersions {
3
3
  MorphoBlueWstEthUSDC = "morphobluewstethusdc",// wstETH/USDC
4
4
  MorphoBlueSDAIUSDC = "morphobluesdaiusdc",// sDAI/USDC
@@ -121,9 +121,9 @@ export interface MorphoBlueAggregatedPositionData {
121
121
  totalInterestUsd: string;
122
122
  ltv: string;
123
123
  ratio: string;
124
- leveragedType: string;
124
+ leveragedType: LeverageType;
125
125
  leveragedAsset?: string;
126
- leveragedLsdAssetRatio?: string;
126
+ currentVolatilePairRatio?: string;
127
127
  liquidationPrice?: string;
128
128
  minCollRatio?: string;
129
129
  collLiquidationRatio?: string;
@@ -142,9 +142,9 @@ export interface MorphoBluePositionData {
142
142
  totalInterestUsd: string;
143
143
  ltv: string;
144
144
  ratio: string;
145
- leveragedType: string;
145
+ leveragedType: LeverageType;
146
146
  leveragedAsset?: string;
147
- leveragedLsdAssetRatio?: string;
147
+ currentVolatilePairRatio?: string;
148
148
  liquidationPrice?: string;
149
149
  supplyShares: string;
150
150
  borrowShares: string;
@@ -1,4 +1,5 @@
1
1
  import { AaveV2PositionData, AaveV3PositionData, AaveVersions } from './aave';
2
+ import { AaveV4AccountData, AaveV4SpokesType } from './aaveV4';
2
3
  import { EthAddress } from './common';
3
4
  import { CompoundV2PositionData, CompoundV3PositionData, CompoundVersions } from './compound';
4
5
  import { CrvUSDUserData, CrvUSDVersions } from './curveUsd';
@@ -51,6 +52,9 @@ export interface PortfolioPositionsDataForAddress {
51
52
  [key: string]: FluidVaultData;
52
53
  };
53
54
  };
55
+ aaveV4: {
56
+ [key in AaveV4SpokesType]?: PortfolioProtocolData<AaveV4AccountData>;
57
+ };
54
58
  }
55
59
  export interface PortfolioPositionsData {
56
60
  [key: EthAddress]: PortfolioPositionsDataForAddress;
@@ -1,5 +1,5 @@
1
1
  import { EModeCategoriesData } from './aave';
2
- import { EthAddress, MMAssetData, MMPositionData, MMUsedAsset, NetworkNumber } from './common';
2
+ import { EthAddress, LeverageType, MMAssetData, MMPositionData, MMUsedAsset, NetworkNumber } from './common';
3
3
  export declare enum SparkVersions {
4
4
  SparkV1 = "v1default"
5
5
  }
@@ -90,9 +90,9 @@ export interface SparkAggregatedPositionData {
90
90
  totalInterestUsd: string;
91
91
  liqRatio: string;
92
92
  liqPercent: string;
93
- leveragedType: string;
93
+ leveragedType: LeverageType;
94
94
  leveragedAsset?: string;
95
- leveragedLsdAssetRatio?: string;
95
+ currentVolatilePairRatio?: string;
96
96
  liquidationPrice?: string;
97
97
  minCollRatio: string;
98
98
  collLiquidationRatio: string;
@@ -0,0 +1,7 @@
1
+ import { Client } from 'viem';
2
+ import { AaveV4AccountData, AaveV4SpokeData, AaveV4SpokeInfo } from '../types';
3
+ import { EthAddress, EthereumProvider, NetworkNumber } from '../types/common';
4
+ export declare function _getAaveV4SpokeData(provider: Client, network: NetworkNumber, market: AaveV4SpokeInfo, blockNumber?: 'latest' | number): Promise<AaveV4SpokeData>;
5
+ export declare function getAaveV4SpokeData(provider: EthereumProvider, network: NetworkNumber, spoke: AaveV4SpokeInfo, blockNumber?: 'latest' | number): Promise<AaveV4SpokeData>;
6
+ export declare function _getAaveV4AccountData(provider: Client, network: NetworkNumber, spokeData: AaveV4SpokeData, address: EthAddress, blockNumber?: 'latest' | number): Promise<AaveV4AccountData>;
7
+ export declare function getAaveV4AccountData(provider: EthereumProvider, network: NetworkNumber, marketData: AaveV4SpokeData, address: EthAddress, blockNumber?: 'latest' | number): Promise<any>;
@@ -0,0 +1,165 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import Dec from 'decimal.js';
11
+ import { assetAmountInEth, getAssetInfoByAddress } from '@defisaver/tokens';
12
+ import { getViemProvider } from '../services/viem';
13
+ import { IncentiveKind, } from '../types/common';
14
+ import { AaveV4ViewContractViem } from '../contracts';
15
+ import { getStakingApy, STAKING_ASSETS } from '../staking';
16
+ import { wethToEth } from '../services/utils';
17
+ import { aaveV4GetAggregatedPositionData } from '../helpers/aaveV4Helpers';
18
+ import { getAaveV4HubByAddress } from '../markets/aaveV4';
19
+ const fetchHubData = (viewContract, hubAddress) => __awaiter(void 0, void 0, void 0, function* () {
20
+ const hubData = yield viewContract.read.getHubAllAssetsData([hubAddress]);
21
+ return {
22
+ assets: hubData.reduce((acc, assetOnChainData) => {
23
+ acc[assetOnChainData.assetId] = {
24
+ assetId: assetOnChainData.assetId,
25
+ drawnRate: assetOnChainData.drawnRate,
26
+ };
27
+ return acc;
28
+ }, {}),
29
+ };
30
+ });
31
+ const formatReserveAsset = (reserveAsset, hubAsset, reserveId, oracleDecimals, network) => __awaiter(void 0, void 0, void 0, function* () {
32
+ const assetInfo = getAssetInfoByAddress(reserveAsset.underlying, network);
33
+ const symbol = wethToEth(assetInfo.symbol);
34
+ const hubInfo = getAaveV4HubByAddress(network, reserveAsset.hub);
35
+ if (!hubInfo) {
36
+ throw new Error(`Hub not found with address: ${reserveAsset.hub}`);
37
+ }
38
+ const isStakingAsset = STAKING_ASSETS.includes(symbol);
39
+ const supplyIncentives = [];
40
+ const borrowIncentives = [];
41
+ if (isStakingAsset) {
42
+ const yieldApy = yield getStakingApy(symbol, network);
43
+ supplyIncentives.push({
44
+ apy: yieldApy,
45
+ token: symbol,
46
+ incentiveKind: IncentiveKind.Staking,
47
+ description: `Native ${symbol} yield.`,
48
+ });
49
+ if (reserveAsset.borrowable) {
50
+ // when borrowing assets whose value increases over time
51
+ borrowIncentives.push({
52
+ apy: new Dec(yieldApy).mul(-1).toString(),
53
+ token: symbol,
54
+ incentiveKind: IncentiveKind.Reward,
55
+ description: `Due to the native yield of ${symbol}, the value of the debt would increase over time.`,
56
+ });
57
+ }
58
+ }
59
+ return ({
60
+ symbol,
61
+ underlying: reserveAsset.underlying,
62
+ hub: hubInfo.address,
63
+ hubName: hubInfo === null || hubInfo === void 0 ? void 0 : hubInfo.label,
64
+ assetId: reserveAsset.assetId,
65
+ reserveId,
66
+ paused: reserveAsset.paused,
67
+ frozen: reserveAsset.frozen,
68
+ borrowable: reserveAsset.borrowable,
69
+ collateralRisk: new Dec(reserveAsset.collateralRisk).div(10000).toNumber(),
70
+ collateralFactor: new Dec(reserveAsset.collateralFactor).div(10000).toNumber(),
71
+ liquidationFee: new Dec(reserveAsset.liquidationFee).div(10000).toNumber(),
72
+ price: new Dec(reserveAsset.price).div(new Dec(10).pow(oracleDecimals)).toString(),
73
+ totalSupplied: assetAmountInEth(reserveAsset.totalSupplied.toString(), symbol),
74
+ totalDrawn: assetAmountInEth(reserveAsset.totalDrawn.toString(), symbol),
75
+ totalPremium: assetAmountInEth(reserveAsset.totalPremium.toString(), symbol),
76
+ totalDebt: assetAmountInEth(reserveAsset.totalDebt.toString(), symbol),
77
+ supplyCap: assetAmountInEth(reserveAsset.supplyCap.toString(), symbol),
78
+ borrowCap: assetAmountInEth(reserveAsset.borrowCap.toString(), symbol),
79
+ spokeActive: reserveAsset.spokeActive,
80
+ spokePaused: reserveAsset.spokePaused,
81
+ drawnRate: new Dec(hubAsset.drawnRate).div(new Dec(10).pow(27)).toString(),
82
+ supplyRate: '0', // To be implemented
83
+ supplyIncentives,
84
+ borrowIncentives,
85
+ canBeBorrowed: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused && !reserveAsset.frozen,
86
+ canBeSupplied: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused && !reserveAsset.frozen,
87
+ canBeWithdrawn: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused,
88
+ canBePayBacked: reserveAsset.spokeActive && !reserveAsset.spokePaused && !reserveAsset.paused,
89
+ utilization: new Dec(reserveAsset.totalDrawn.toString()).times(100).div(new Dec(reserveAsset.totalSupplied.toString())).toString(),
90
+ });
91
+ });
92
+ export function _getAaveV4SpokeData(provider_1, network_1, market_1) {
93
+ return __awaiter(this, arguments, void 0, function* (provider, network, market, blockNumber = 'latest') {
94
+ const viewContract = AaveV4ViewContractViem(provider, network, blockNumber);
95
+ const hubsData = {};
96
+ const [spokeData] = yield Promise.all([
97
+ viewContract.read.getSpokeDataFull([market.address]),
98
+ ...market.hubs.map((hubAddress) => __awaiter(this, void 0, void 0, function* () {
99
+ hubsData[hubAddress] = yield fetchHubData(viewContract, hubAddress);
100
+ })),
101
+ ]);
102
+ const reserveAssetsArray = yield Promise.all(spokeData[1].map((reserveAssetOnChain, index) => __awaiter(this, void 0, void 0, function* () { return formatReserveAsset(reserveAssetOnChain, hubsData[reserveAssetOnChain.hub].assets[reserveAssetOnChain.assetId], index, +spokeData[0].oracleDecimals.toString(), network); })));
103
+ return {
104
+ assetsData: reserveAssetsArray.reduce((acc, reserveAsset) => {
105
+ acc[`${reserveAsset.symbol}-${reserveAsset.reserveId}`] = reserveAsset;
106
+ return acc;
107
+ }, {}),
108
+ oracle: spokeData[0].oracle,
109
+ oracleDecimals: +spokeData[0].oracleDecimals.toString(),
110
+ address: market.address,
111
+ };
112
+ });
113
+ }
114
+ export function getAaveV4SpokeData(provider_1, network_1, spoke_1) {
115
+ return __awaiter(this, arguments, void 0, function* (provider, network, spoke, blockNumber = 'latest') {
116
+ return _getAaveV4SpokeData(getViemProvider(provider, network), network, spoke, blockNumber);
117
+ });
118
+ }
119
+ export function _getAaveV4AccountData(provider_1, network_1, spokeData_1, address_1) {
120
+ return __awaiter(this, arguments, void 0, function* (provider, network, spokeData, address, blockNumber = 'latest') {
121
+ const viewContract = AaveV4ViewContractViem(provider, network, blockNumber);
122
+ const loanData = yield viewContract.read.getLoanData([spokeData.address, address]);
123
+ const healthFactor = new Dec(loanData.healthFactor).div(1e18).toString();
124
+ const usedAssets = loanData.reserves.reduce((acc, usedReserveAsset) => {
125
+ const identifier = `${wethToEth(getAssetInfoByAddress(usedReserveAsset.underlying, network).symbol)}-${+usedReserveAsset.reserveId.toString()}`;
126
+ const reserveData = spokeData.assetsData[identifier];
127
+ const price = reserveData.price;
128
+ const supplied = assetAmountInEth(usedReserveAsset.supplied.toString(), reserveData.symbol);
129
+ const drawn = assetAmountInEth(usedReserveAsset.drawn.toString(), reserveData.symbol);
130
+ const premium = assetAmountInEth(usedReserveAsset.premium.toString(), reserveData.symbol);
131
+ const borrowed = assetAmountInEth(usedReserveAsset.totalDebt.toString(), reserveData.symbol);
132
+ acc[identifier] = {
133
+ symbol: reserveData.symbol,
134
+ hubName: reserveData.hubName,
135
+ assetId: reserveData.assetId,
136
+ reserveId: +usedReserveAsset.reserveId.toString(),
137
+ supplied,
138
+ suppliedUsd: new Dec(supplied).mul(price).toString(),
139
+ drawn,
140
+ drawnUsd: new Dec(drawn).mul(price).toString(),
141
+ premium,
142
+ premiumUsd: new Dec(premium).mul(price).toString(),
143
+ borrowed,
144
+ borrowedUsd: new Dec(borrowed).mul(price).toString(),
145
+ isSupplied: !new Dec(supplied).eq(0),
146
+ isBorrowed: usedReserveAsset.isBorrowing,
147
+ collateral: usedReserveAsset.isUsingAsCollateral,
148
+ collateralFactor: new Dec(usedReserveAsset.collateralFactor).div(10000).toNumber(),
149
+ };
150
+ return acc;
151
+ }, {});
152
+ return Object.assign({ usedAssets,
153
+ healthFactor }, aaveV4GetAggregatedPositionData({
154
+ usedAssets,
155
+ assetsData: spokeData.assetsData,
156
+ network,
157
+ useUserCollateralFactor: true,
158
+ }));
159
+ });
160
+ }
161
+ export function getAaveV4AccountData(provider_1, network_1, marketData_1, address_1) {
162
+ return __awaiter(this, arguments, void 0, function* (provider, network, marketData, address, blockNumber = 'latest') {
163
+ return _getAaveV4AccountData(getViemProvider(provider, network), network, marketData, address, blockNumber);
164
+ });
165
+ }