@defisaver/positions-sdk 0.0.1

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 (527) hide show
  1. package/cjs/aaveV2/index.d.ts +9 -0
  2. package/cjs/aaveV2/index.js +184 -0
  3. package/cjs/aaveV3/index.d.ts +33 -0
  4. package/cjs/aaveV3/index.js +395 -0
  5. package/cjs/assets/index.d.ts +4 -0
  6. package/cjs/assets/index.js +54 -0
  7. package/cjs/chickenBonds/index.d.ts +3 -0
  8. package/cjs/chickenBonds/index.js +24 -0
  9. package/cjs/compoundV2/index.d.ts +21 -0
  10. package/cjs/compoundV2/index.js +168 -0
  11. package/cjs/compoundV3/index.d.ts +37 -0
  12. package/cjs/compoundV3/index.js +208 -0
  13. package/cjs/config/contracts.d.ts +3028 -0
  14. package/cjs/config/contracts.js +596 -0
  15. package/cjs/constants/index.d.ts +4 -0
  16. package/cjs/constants/index.js +7 -0
  17. package/cjs/contracts.d.ts +40 -0
  18. package/cjs/contracts.js +65 -0
  19. package/cjs/curveUsd/index.d.ts +7 -0
  20. package/cjs/curveUsd/index.js +199 -0
  21. package/cjs/exchange/index.d.ts +3 -0
  22. package/cjs/exchange/index.js +23 -0
  23. package/cjs/helpers/aaveHelpers/index.d.ts +37 -0
  24. package/cjs/helpers/aaveHelpers/index.js +118 -0
  25. package/cjs/helpers/compoundHelpers/index.d.ts +20 -0
  26. package/cjs/helpers/compoundHelpers/index.js +141 -0
  27. package/cjs/helpers/curveUsdHelpers/index.d.ts +8 -0
  28. package/cjs/helpers/curveUsdHelpers/index.js +42 -0
  29. package/cjs/helpers/index.d.ts +5 -0
  30. package/cjs/helpers/index.js +31 -0
  31. package/cjs/helpers/makerHelpers/index.d.ts +5 -0
  32. package/cjs/helpers/makerHelpers/index.js +100 -0
  33. package/cjs/helpers/sparkHelpers/index.d.ts +21 -0
  34. package/cjs/helpers/sparkHelpers/index.js +96 -0
  35. package/cjs/index.d.ts +19 -0
  36. package/cjs/index.js +64 -0
  37. package/cjs/liquity/index.d.ts +7 -0
  38. package/cjs/liquity/index.js +103 -0
  39. package/cjs/maker/index.d.ts +5 -0
  40. package/cjs/maker/index.js +103 -0
  41. package/cjs/markets/aave/index.d.ts +12 -0
  42. package/cjs/markets/aave/index.js +76 -0
  43. package/cjs/markets/aave/marketAssets.d.ts +9 -0
  44. package/cjs/markets/aave/marketAssets.js +31 -0
  45. package/cjs/markets/compound/index.d.ts +12 -0
  46. package/cjs/markets/compound/index.js +85 -0
  47. package/cjs/markets/compound/marketsAssets.d.ts +19 -0
  48. package/cjs/markets/compound/marketsAssets.js +35 -0
  49. package/cjs/markets/curveUsd/index.d.ts +10 -0
  50. package/cjs/markets/curveUsd/index.js +47 -0
  51. package/cjs/markets/index.d.ts +4 -0
  52. package/cjs/markets/index.js +11 -0
  53. package/cjs/markets/spark/index.d.ts +9 -0
  54. package/cjs/markets/spark/index.js +31 -0
  55. package/cjs/markets/spark/marketAssets.d.ts +6 -0
  56. package/cjs/markets/spark/marketAssets.js +12 -0
  57. package/cjs/moneymarket/index.d.ts +1 -0
  58. package/cjs/moneymarket/index.js +17 -0
  59. package/cjs/moneymarket/moneymarketCommonService.d.ts +12 -0
  60. package/cjs/moneymarket/moneymarketCommonService.js +83 -0
  61. package/cjs/morphoAaveV2/index.d.ts +7 -0
  62. package/cjs/morphoAaveV2/index.js +209 -0
  63. package/cjs/morphoAaveV3/index.d.ts +7 -0
  64. package/cjs/morphoAaveV3/index.js +442 -0
  65. package/cjs/multicall/index.d.ts +3 -0
  66. package/cjs/multicall/index.js +31 -0
  67. package/cjs/services/dsrService.d.ts +3 -0
  68. package/cjs/services/dsrService.js +28 -0
  69. package/cjs/services/utils.d.ts +16 -0
  70. package/cjs/services/utils.js +41 -0
  71. package/cjs/spark/index.d.ts +34 -0
  72. package/cjs/spark/index.js +337 -0
  73. package/cjs/staking/index.d.ts +1 -0
  74. package/cjs/staking/index.js +17 -0
  75. package/cjs/staking/staking.d.ts +15 -0
  76. package/cjs/staking/staking.js +162 -0
  77. package/cjs/types/aave.d.ts +229 -0
  78. package/cjs/types/aave.js +10 -0
  79. package/cjs/types/common.d.ts +77 -0
  80. package/cjs/types/common.js +10 -0
  81. package/cjs/types/compound.d.ts +109 -0
  82. package/cjs/types/compound.js +10 -0
  83. package/cjs/types/contracts/generated/AaveLendingPoolV2.d.ts +312 -0
  84. package/cjs/types/contracts/generated/AaveLendingPoolV2.js +5 -0
  85. package/cjs/types/contracts/generated/AaveLoanInfoV2.d.ts +137 -0
  86. package/cjs/types/contracts/generated/AaveLoanInfoV2.js +5 -0
  87. package/cjs/types/contracts/generated/AaveProtocolDataProvider.d.ts +110 -0
  88. package/cjs/types/contracts/generated/AaveProtocolDataProvider.js +5 -0
  89. package/cjs/types/contracts/generated/AaveUiIncentiveDataProviderV3.d.ts +196 -0
  90. package/cjs/types/contracts/generated/AaveUiIncentiveDataProviderV3.js +5 -0
  91. package/cjs/types/contracts/generated/AaveV3LendingPool.d.ts +429 -0
  92. package/cjs/types/contracts/generated/AaveV3LendingPool.js +5 -0
  93. package/cjs/types/contracts/generated/AaveV3PoolAddressesProvider.d.ts +169 -0
  94. package/cjs/types/contracts/generated/AaveV3PoolAddressesProvider.js +5 -0
  95. package/cjs/types/contracts/generated/AaveV3ProtocolDataProvider.d.ts +131 -0
  96. package/cjs/types/contracts/generated/AaveV3ProtocolDataProvider.js +5 -0
  97. package/cjs/types/contracts/generated/AaveV3View.d.ts +301 -0
  98. package/cjs/types/contracts/generated/AaveV3View.js +5 -0
  99. package/cjs/types/contracts/generated/BalanceScanner.d.ts +37 -0
  100. package/cjs/types/contracts/generated/BalanceScanner.js +5 -0
  101. package/cjs/types/contracts/generated/CETHv3.d.ts +441 -0
  102. package/cjs/types/contracts/generated/CETHv3.js +5 -0
  103. package/cjs/types/contracts/generated/CUSDCv3.d.ts +441 -0
  104. package/cjs/types/contracts/generated/CUSDCv3.js +5 -0
  105. package/cjs/types/contracts/generated/CUSDbCv3.d.ts +441 -0
  106. package/cjs/types/contracts/generated/CUSDbCv3.js +5 -0
  107. package/cjs/types/contracts/generated/CbEth.d.ts +20 -0
  108. package/cjs/types/contracts/generated/CbEth.js +5 -0
  109. package/cjs/types/contracts/generated/ChickenBondsView.d.ts +67 -0
  110. package/cjs/types/contracts/generated/ChickenBondsView.js +5 -0
  111. package/cjs/types/contracts/generated/CollSurplusPool.d.ts +85 -0
  112. package/cjs/types/contracts/generated/CollSurplusPool.js +5 -0
  113. package/cjs/types/contracts/generated/CompV3ETHBulker.d.ts +45 -0
  114. package/cjs/types/contracts/generated/CompV3ETHBulker.js +5 -0
  115. package/cjs/types/contracts/generated/CompV3USDCBulker.d.ts +31 -0
  116. package/cjs/types/contracts/generated/CompV3USDCBulker.js +5 -0
  117. package/cjs/types/contracts/generated/CompV3USDbCBulker.d.ts +41 -0
  118. package/cjs/types/contracts/generated/CompV3USDbCBulker.js +5 -0
  119. package/cjs/types/contracts/generated/CompV3View.d.ts +249 -0
  120. package/cjs/types/contracts/generated/CompV3View.js +5 -0
  121. package/cjs/types/contracts/generated/CompoundLoanInfo.d.ts +128 -0
  122. package/cjs/types/contracts/generated/CompoundLoanInfo.js +5 -0
  123. package/cjs/types/contracts/generated/Comptroller.d.ts +317 -0
  124. package/cjs/types/contracts/generated/Comptroller.js +5 -0
  125. package/cjs/types/contracts/generated/CrvUSDETHAmm.d.ts +139 -0
  126. package/cjs/types/contracts/generated/CrvUSDETHAmm.js +5 -0
  127. package/cjs/types/contracts/generated/CrvUSDETHController.d.ts +204 -0
  128. package/cjs/types/contracts/generated/CrvUSDETHController.js +5 -0
  129. package/cjs/types/contracts/generated/CrvUSDFactory.d.ts +117 -0
  130. package/cjs/types/contracts/generated/CrvUSDFactory.js +5 -0
  131. package/cjs/types/contracts/generated/CrvUSDView.d.ts +209 -0
  132. package/cjs/types/contracts/generated/CrvUSDView.js +5 -0
  133. package/cjs/types/contracts/generated/CrvUSDWBTCAmm.d.ts +139 -0
  134. package/cjs/types/contracts/generated/CrvUSDWBTCAmm.js +5 -0
  135. package/cjs/types/contracts/generated/CrvUSDWBTCController.d.ts +204 -0
  136. package/cjs/types/contracts/generated/CrvUSDWBTCController.js +5 -0
  137. package/cjs/types/contracts/generated/CrvUSDwstETHAmm.d.ts +139 -0
  138. package/cjs/types/contracts/generated/CrvUSDwstETHAmm.js +5 -0
  139. package/cjs/types/contracts/generated/CrvUSDwstETHController.d.ts +204 -0
  140. package/cjs/types/contracts/generated/CrvUSDwstETHController.js +5 -0
  141. package/cjs/types/contracts/generated/Erc20.d.ts +119 -0
  142. package/cjs/types/contracts/generated/Erc20.js +5 -0
  143. package/cjs/types/contracts/generated/GHO.d.ts +136 -0
  144. package/cjs/types/contracts/generated/GHO.js +5 -0
  145. package/cjs/types/contracts/generated/GhoDiscountRateStrategy.d.ts +25 -0
  146. package/cjs/types/contracts/generated/GhoDiscountRateStrategy.js +5 -0
  147. package/cjs/types/contracts/generated/IAToken.d.ts +21 -0
  148. package/cjs/types/contracts/generated/IAToken.js +5 -0
  149. package/cjs/types/contracts/generated/IVariableDebtToken.d.ts +21 -0
  150. package/cjs/types/contracts/generated/IVariableDebtToken.js +5 -0
  151. package/cjs/types/contracts/generated/LendingPoolAddressesProvider.d.ts +135 -0
  152. package/cjs/types/contracts/generated/LendingPoolAddressesProvider.js +5 -0
  153. package/cjs/types/contracts/generated/Lido.d.ts +38 -0
  154. package/cjs/types/contracts/generated/Lido.js +5 -0
  155. package/cjs/types/contracts/generated/LiquityActivePool.d.ts +21 -0
  156. package/cjs/types/contracts/generated/LiquityActivePool.js +5 -0
  157. package/cjs/types/contracts/generated/LiquityView.d.ts +51 -0
  158. package/cjs/types/contracts/generated/LiquityView.js +5 -0
  159. package/cjs/types/contracts/generated/McdDog.d.ts +134 -0
  160. package/cjs/types/contracts/generated/McdDog.js +5 -0
  161. package/cjs/types/contracts/generated/McdJug.d.ts +50 -0
  162. package/cjs/types/contracts/generated/McdJug.js +5 -0
  163. package/cjs/types/contracts/generated/McdSpotter.d.ts +27 -0
  164. package/cjs/types/contracts/generated/McdSpotter.js +5 -0
  165. package/cjs/types/contracts/generated/McdVat.d.ts +78 -0
  166. package/cjs/types/contracts/generated/McdVat.js +5 -0
  167. package/cjs/types/contracts/generated/McdView.d.ts +61 -0
  168. package/cjs/types/contracts/generated/McdView.js +5 -0
  169. package/cjs/types/contracts/generated/MorphoAaveV2Proxy.d.ts +418 -0
  170. package/cjs/types/contracts/generated/MorphoAaveV2Proxy.js +5 -0
  171. package/cjs/types/contracts/generated/MorphoAaveV2View.d.ts +274 -0
  172. package/cjs/types/contracts/generated/MorphoAaveV2View.js +5 -0
  173. package/cjs/types/contracts/generated/MorphoAaveV3ProxyEthMarket.d.ts +202 -0
  174. package/cjs/types/contracts/generated/MorphoAaveV3ProxyEthMarket.js +5 -0
  175. package/cjs/types/contracts/generated/Pot.d.ts +49 -0
  176. package/cjs/types/contracts/generated/Pot.js +5 -0
  177. package/cjs/types/contracts/generated/PriceFeed.d.ts +61 -0
  178. package/cjs/types/contracts/generated/PriceFeed.js +5 -0
  179. package/cjs/types/contracts/generated/REth.d.ts +20 -0
  180. package/cjs/types/contracts/generated/REth.js +5 -0
  181. package/cjs/types/contracts/generated/SparkIncentiveDataProvider.d.ts +200 -0
  182. package/cjs/types/contracts/generated/SparkIncentiveDataProvider.js +5 -0
  183. package/cjs/types/contracts/generated/SparkLendingPool.d.ts +420 -0
  184. package/cjs/types/contracts/generated/SparkLendingPool.js +5 -0
  185. package/cjs/types/contracts/generated/SparkPoolAddressesProvider.d.ts +169 -0
  186. package/cjs/types/contracts/generated/SparkPoolAddressesProvider.js +5 -0
  187. package/cjs/types/contracts/generated/SparkProtocolDataProvider.d.ts +132 -0
  188. package/cjs/types/contracts/generated/SparkProtocolDataProvider.js +5 -0
  189. package/cjs/types/contracts/generated/SparkView.d.ts +300 -0
  190. package/cjs/types/contracts/generated/SparkView.js +5 -0
  191. package/cjs/types/contracts/generated/TroveManager.d.ts +346 -0
  192. package/cjs/types/contracts/generated/TroveManager.js +5 -0
  193. package/cjs/types/contracts/generated/UniMulticall.d.ts +55 -0
  194. package/cjs/types/contracts/generated/UniMulticall.js +5 -0
  195. package/cjs/types/contracts/generated/WstETH.d.ts +65 -0
  196. package/cjs/types/contracts/generated/WstETH.js +5 -0
  197. package/cjs/types/contracts/generated/index.d.ts +57 -0
  198. package/cjs/types/contracts/generated/index.js +2 -0
  199. package/cjs/types/contracts/generated/types.d.ts +54 -0
  200. package/cjs/types/contracts/generated/types.js +2 -0
  201. package/cjs/types/curveUsd.d.ts +101 -0
  202. package/cjs/types/curveUsd.js +17 -0
  203. package/cjs/types/index.d.ts +6 -0
  204. package/cjs/types/index.js +22 -0
  205. package/cjs/types/liquity.d.ts +28 -0
  206. package/cjs/types/liquity.js +18 -0
  207. package/cjs/types/maker.d.ts +49 -0
  208. package/cjs/types/maker.js +2 -0
  209. package/cjs/types/spark.d.ts +100 -0
  210. package/cjs/types/spark.js +7 -0
  211. package/esm/aaveV2/index.d.ts +9 -0
  212. package/esm/aaveV2/index.js +174 -0
  213. package/esm/aaveV3/index.d.ts +33 -0
  214. package/esm/aaveV3/index.js +382 -0
  215. package/esm/assets/index.d.ts +4 -0
  216. package/esm/assets/index.js +49 -0
  217. package/esm/chickenBonds/index.d.ts +3 -0
  218. package/esm/chickenBonds/index.js +20 -0
  219. package/esm/compoundV2/index.d.ts +21 -0
  220. package/esm/compoundV2/index.js +157 -0
  221. package/esm/compoundV3/index.d.ts +37 -0
  222. package/esm/compoundV3/index.js +198 -0
  223. package/esm/config/contracts.d.ts +3028 -0
  224. package/esm/config/contracts.js +595 -0
  225. package/esm/constants/index.d.ts +4 -0
  226. package/esm/constants/index.js +4 -0
  227. package/esm/contracts.d.ts +40 -0
  228. package/esm/contracts.js +55 -0
  229. package/esm/curveUsd/index.d.ts +7 -0
  230. package/esm/curveUsd/index.js +189 -0
  231. package/esm/exchange/index.d.ts +3 -0
  232. package/esm/exchange/index.js +19 -0
  233. package/esm/helpers/aaveHelpers/index.d.ts +37 -0
  234. package/esm/helpers/aaveHelpers/index.js +101 -0
  235. package/esm/helpers/compoundHelpers/index.d.ts +20 -0
  236. package/esm/helpers/compoundHelpers/index.js +130 -0
  237. package/esm/helpers/curveUsdHelpers/index.d.ts +8 -0
  238. package/esm/helpers/curveUsdHelpers/index.js +35 -0
  239. package/esm/helpers/index.d.ts +5 -0
  240. package/esm/helpers/index.js +5 -0
  241. package/esm/helpers/makerHelpers/index.d.ts +5 -0
  242. package/esm/helpers/makerHelpers/index.js +92 -0
  243. package/esm/helpers/sparkHelpers/index.d.ts +21 -0
  244. package/esm/helpers/sparkHelpers/index.js +84 -0
  245. package/esm/index.d.ts +19 -0
  246. package/esm/index.js +19 -0
  247. package/esm/liquity/index.d.ts +7 -0
  248. package/esm/liquity/index.js +95 -0
  249. package/esm/maker/index.d.ts +5 -0
  250. package/esm/maker/index.js +95 -0
  251. package/esm/markets/aave/index.d.ts +12 -0
  252. package/esm/markets/aave/index.js +70 -0
  253. package/esm/markets/aave/marketAssets.d.ts +9 -0
  254. package/esm/markets/aave/marketAssets.js +28 -0
  255. package/esm/markets/compound/index.d.ts +12 -0
  256. package/esm/markets/compound/index.js +78 -0
  257. package/esm/markets/compound/marketsAssets.d.ts +19 -0
  258. package/esm/markets/compound/marketsAssets.js +32 -0
  259. package/esm/markets/curveUsd/index.d.ts +10 -0
  260. package/esm/markets/curveUsd/index.js +40 -0
  261. package/esm/markets/index.d.ts +4 -0
  262. package/esm/markets/index.js +4 -0
  263. package/esm/markets/spark/index.d.ts +9 -0
  264. package/esm/markets/spark/index.js +26 -0
  265. package/esm/markets/spark/marketAssets.d.ts +6 -0
  266. package/esm/markets/spark/marketAssets.js +9 -0
  267. package/esm/moneymarket/index.d.ts +1 -0
  268. package/esm/moneymarket/index.js +1 -0
  269. package/esm/moneymarket/moneymarketCommonService.d.ts +12 -0
  270. package/esm/moneymarket/moneymarketCommonService.js +70 -0
  271. package/esm/morphoAaveV2/index.d.ts +7 -0
  272. package/esm/morphoAaveV2/index.js +199 -0
  273. package/esm/morphoAaveV3/index.d.ts +7 -0
  274. package/esm/morphoAaveV3/index.js +432 -0
  275. package/esm/multicall/index.d.ts +3 -0
  276. package/esm/multicall/index.js +27 -0
  277. package/esm/services/dsrService.d.ts +3 -0
  278. package/esm/services/dsrService.js +21 -0
  279. package/esm/services/utils.d.ts +16 -0
  280. package/esm/services/utils.js +21 -0
  281. package/esm/spark/index.d.ts +34 -0
  282. package/esm/spark/index.js +326 -0
  283. package/esm/staking/index.d.ts +1 -0
  284. package/esm/staking/index.js +1 -0
  285. package/esm/staking/staking.d.ts +15 -0
  286. package/esm/staking/staking.js +147 -0
  287. package/esm/types/aave.d.ts +229 -0
  288. package/esm/types/aave.js +7 -0
  289. package/esm/types/common.d.ts +77 -0
  290. package/esm/types/common.js +7 -0
  291. package/esm/types/compound.d.ts +109 -0
  292. package/esm/types/compound.js +7 -0
  293. package/esm/types/contracts/generated/AaveLendingPoolV2.d.ts +312 -0
  294. package/esm/types/contracts/generated/AaveLendingPoolV2.js +4 -0
  295. package/esm/types/contracts/generated/AaveLoanInfoV2.d.ts +137 -0
  296. package/esm/types/contracts/generated/AaveLoanInfoV2.js +4 -0
  297. package/esm/types/contracts/generated/AaveProtocolDataProvider.d.ts +110 -0
  298. package/esm/types/contracts/generated/AaveProtocolDataProvider.js +4 -0
  299. package/esm/types/contracts/generated/AaveUiIncentiveDataProviderV3.d.ts +196 -0
  300. package/esm/types/contracts/generated/AaveUiIncentiveDataProviderV3.js +4 -0
  301. package/esm/types/contracts/generated/AaveV3LendingPool.d.ts +429 -0
  302. package/esm/types/contracts/generated/AaveV3LendingPool.js +4 -0
  303. package/esm/types/contracts/generated/AaveV3PoolAddressesProvider.d.ts +169 -0
  304. package/esm/types/contracts/generated/AaveV3PoolAddressesProvider.js +4 -0
  305. package/esm/types/contracts/generated/AaveV3ProtocolDataProvider.d.ts +131 -0
  306. package/esm/types/contracts/generated/AaveV3ProtocolDataProvider.js +4 -0
  307. package/esm/types/contracts/generated/AaveV3View.d.ts +301 -0
  308. package/esm/types/contracts/generated/AaveV3View.js +4 -0
  309. package/esm/types/contracts/generated/BalanceScanner.d.ts +37 -0
  310. package/esm/types/contracts/generated/BalanceScanner.js +4 -0
  311. package/esm/types/contracts/generated/CETHv3.d.ts +441 -0
  312. package/esm/types/contracts/generated/CETHv3.js +4 -0
  313. package/esm/types/contracts/generated/CUSDCv3.d.ts +441 -0
  314. package/esm/types/contracts/generated/CUSDCv3.js +4 -0
  315. package/esm/types/contracts/generated/CUSDbCv3.d.ts +441 -0
  316. package/esm/types/contracts/generated/CUSDbCv3.js +4 -0
  317. package/esm/types/contracts/generated/CbEth.d.ts +20 -0
  318. package/esm/types/contracts/generated/CbEth.js +4 -0
  319. package/esm/types/contracts/generated/ChickenBondsView.d.ts +67 -0
  320. package/esm/types/contracts/generated/ChickenBondsView.js +4 -0
  321. package/esm/types/contracts/generated/CollSurplusPool.d.ts +85 -0
  322. package/esm/types/contracts/generated/CollSurplusPool.js +4 -0
  323. package/esm/types/contracts/generated/CompV3ETHBulker.d.ts +45 -0
  324. package/esm/types/contracts/generated/CompV3ETHBulker.js +4 -0
  325. package/esm/types/contracts/generated/CompV3USDCBulker.d.ts +31 -0
  326. package/esm/types/contracts/generated/CompV3USDCBulker.js +4 -0
  327. package/esm/types/contracts/generated/CompV3USDbCBulker.d.ts +41 -0
  328. package/esm/types/contracts/generated/CompV3USDbCBulker.js +4 -0
  329. package/esm/types/contracts/generated/CompV3View.d.ts +249 -0
  330. package/esm/types/contracts/generated/CompV3View.js +4 -0
  331. package/esm/types/contracts/generated/CompoundLoanInfo.d.ts +128 -0
  332. package/esm/types/contracts/generated/CompoundLoanInfo.js +4 -0
  333. package/esm/types/contracts/generated/Comptroller.d.ts +317 -0
  334. package/esm/types/contracts/generated/Comptroller.js +4 -0
  335. package/esm/types/contracts/generated/CrvUSDETHAmm.d.ts +139 -0
  336. package/esm/types/contracts/generated/CrvUSDETHAmm.js +4 -0
  337. package/esm/types/contracts/generated/CrvUSDETHController.d.ts +204 -0
  338. package/esm/types/contracts/generated/CrvUSDETHController.js +4 -0
  339. package/esm/types/contracts/generated/CrvUSDFactory.d.ts +117 -0
  340. package/esm/types/contracts/generated/CrvUSDFactory.js +4 -0
  341. package/esm/types/contracts/generated/CrvUSDView.d.ts +209 -0
  342. package/esm/types/contracts/generated/CrvUSDView.js +4 -0
  343. package/esm/types/contracts/generated/CrvUSDWBTCAmm.d.ts +139 -0
  344. package/esm/types/contracts/generated/CrvUSDWBTCAmm.js +4 -0
  345. package/esm/types/contracts/generated/CrvUSDWBTCController.d.ts +204 -0
  346. package/esm/types/contracts/generated/CrvUSDWBTCController.js +4 -0
  347. package/esm/types/contracts/generated/CrvUSDwstETHAmm.d.ts +139 -0
  348. package/esm/types/contracts/generated/CrvUSDwstETHAmm.js +4 -0
  349. package/esm/types/contracts/generated/CrvUSDwstETHController.d.ts +204 -0
  350. package/esm/types/contracts/generated/CrvUSDwstETHController.js +4 -0
  351. package/esm/types/contracts/generated/Erc20.d.ts +119 -0
  352. package/esm/types/contracts/generated/Erc20.js +4 -0
  353. package/esm/types/contracts/generated/GHO.d.ts +136 -0
  354. package/esm/types/contracts/generated/GHO.js +4 -0
  355. package/esm/types/contracts/generated/GhoDiscountRateStrategy.d.ts +25 -0
  356. package/esm/types/contracts/generated/GhoDiscountRateStrategy.js +4 -0
  357. package/esm/types/contracts/generated/IAToken.d.ts +21 -0
  358. package/esm/types/contracts/generated/IAToken.js +4 -0
  359. package/esm/types/contracts/generated/IVariableDebtToken.d.ts +21 -0
  360. package/esm/types/contracts/generated/IVariableDebtToken.js +4 -0
  361. package/esm/types/contracts/generated/LendingPoolAddressesProvider.d.ts +135 -0
  362. package/esm/types/contracts/generated/LendingPoolAddressesProvider.js +4 -0
  363. package/esm/types/contracts/generated/Lido.d.ts +38 -0
  364. package/esm/types/contracts/generated/Lido.js +4 -0
  365. package/esm/types/contracts/generated/LiquityActivePool.d.ts +21 -0
  366. package/esm/types/contracts/generated/LiquityActivePool.js +4 -0
  367. package/esm/types/contracts/generated/LiquityView.d.ts +51 -0
  368. package/esm/types/contracts/generated/LiquityView.js +4 -0
  369. package/esm/types/contracts/generated/McdDog.d.ts +134 -0
  370. package/esm/types/contracts/generated/McdDog.js +4 -0
  371. package/esm/types/contracts/generated/McdJug.d.ts +50 -0
  372. package/esm/types/contracts/generated/McdJug.js +4 -0
  373. package/esm/types/contracts/generated/McdSpotter.d.ts +27 -0
  374. package/esm/types/contracts/generated/McdSpotter.js +4 -0
  375. package/esm/types/contracts/generated/McdVat.d.ts +78 -0
  376. package/esm/types/contracts/generated/McdVat.js +4 -0
  377. package/esm/types/contracts/generated/McdView.d.ts +61 -0
  378. package/esm/types/contracts/generated/McdView.js +4 -0
  379. package/esm/types/contracts/generated/MorphoAaveV2Proxy.d.ts +418 -0
  380. package/esm/types/contracts/generated/MorphoAaveV2Proxy.js +4 -0
  381. package/esm/types/contracts/generated/MorphoAaveV2View.d.ts +274 -0
  382. package/esm/types/contracts/generated/MorphoAaveV2View.js +4 -0
  383. package/esm/types/contracts/generated/MorphoAaveV3ProxyEthMarket.d.ts +202 -0
  384. package/esm/types/contracts/generated/MorphoAaveV3ProxyEthMarket.js +4 -0
  385. package/esm/types/contracts/generated/Pot.d.ts +49 -0
  386. package/esm/types/contracts/generated/Pot.js +4 -0
  387. package/esm/types/contracts/generated/PriceFeed.d.ts +61 -0
  388. package/esm/types/contracts/generated/PriceFeed.js +4 -0
  389. package/esm/types/contracts/generated/REth.d.ts +20 -0
  390. package/esm/types/contracts/generated/REth.js +4 -0
  391. package/esm/types/contracts/generated/SparkIncentiveDataProvider.d.ts +200 -0
  392. package/esm/types/contracts/generated/SparkIncentiveDataProvider.js +4 -0
  393. package/esm/types/contracts/generated/SparkLendingPool.d.ts +420 -0
  394. package/esm/types/contracts/generated/SparkLendingPool.js +4 -0
  395. package/esm/types/contracts/generated/SparkPoolAddressesProvider.d.ts +169 -0
  396. package/esm/types/contracts/generated/SparkPoolAddressesProvider.js +4 -0
  397. package/esm/types/contracts/generated/SparkProtocolDataProvider.d.ts +132 -0
  398. package/esm/types/contracts/generated/SparkProtocolDataProvider.js +4 -0
  399. package/esm/types/contracts/generated/SparkView.d.ts +300 -0
  400. package/esm/types/contracts/generated/SparkView.js +4 -0
  401. package/esm/types/contracts/generated/TroveManager.d.ts +346 -0
  402. package/esm/types/contracts/generated/TroveManager.js +4 -0
  403. package/esm/types/contracts/generated/UniMulticall.d.ts +55 -0
  404. package/esm/types/contracts/generated/UniMulticall.js +4 -0
  405. package/esm/types/contracts/generated/WstETH.d.ts +65 -0
  406. package/esm/types/contracts/generated/WstETH.js +4 -0
  407. package/esm/types/contracts/generated/index.d.ts +57 -0
  408. package/esm/types/contracts/generated/index.js +1 -0
  409. package/esm/types/contracts/generated/types.d.ts +54 -0
  410. package/esm/types/contracts/generated/types.js +1 -0
  411. package/esm/types/curveUsd.d.ts +101 -0
  412. package/esm/types/curveUsd.js +14 -0
  413. package/esm/types/index.d.ts +6 -0
  414. package/esm/types/index.js +6 -0
  415. package/esm/types/liquity.d.ts +28 -0
  416. package/esm/types/liquity.js +15 -0
  417. package/esm/types/maker.d.ts +49 -0
  418. package/esm/types/maker.js +1 -0
  419. package/esm/types/spark.d.ts +100 -0
  420. package/esm/types/spark.js +4 -0
  421. package/package.json +40 -0
  422. package/src/aaveV2/index.ts +219 -0
  423. package/src/aaveV3/index.ts +538 -0
  424. package/src/assets/index.ts +61 -0
  425. package/src/chickenBonds/index.ts +20 -0
  426. package/src/compoundV2/index.ts +207 -0
  427. package/src/compoundV3/index.ts +259 -0
  428. package/src/config/contracts.js +595 -0
  429. package/src/constants/index.ts +4 -0
  430. package/src/contracts.ts +95 -0
  431. package/src/curveUsd/index.ts +229 -0
  432. package/src/exchange/index.ts +17 -0
  433. package/src/helpers/aaveHelpers/index.ts +138 -0
  434. package/src/helpers/compoundHelpers/index.ts +178 -0
  435. package/src/helpers/curveUsdHelpers/index.ts +33 -0
  436. package/src/helpers/index.ts +5 -0
  437. package/src/helpers/makerHelpers/index.ts +95 -0
  438. package/src/helpers/sparkHelpers/index.ts +119 -0
  439. package/src/index.ts +40 -0
  440. package/src/liquity/index.ts +104 -0
  441. package/src/maker/index.ts +102 -0
  442. package/src/markets/aave/index.ts +80 -0
  443. package/src/markets/aave/marketAssets.ts +33 -0
  444. package/src/markets/compound/index.ts +86 -0
  445. package/src/markets/compound/marketsAssets.ts +36 -0
  446. package/src/markets/curveUsd/index.ts +43 -0
  447. package/src/markets/index.ts +4 -0
  448. package/src/markets/spark/index.ts +30 -0
  449. package/src/markets/spark/marketAssets.ts +10 -0
  450. package/src/moneymarket/index.ts +1 -0
  451. package/src/moneymarket/moneymarketCommonService.ts +76 -0
  452. package/src/morpho/markets.ts +39 -0
  453. package/src/morphoAaveV2/index.ts +253 -0
  454. package/src/morphoAaveV3/index.ts +615 -0
  455. package/src/multicall/index.ts +23 -0
  456. package/src/services/dsrService.ts +16 -0
  457. package/src/services/utils.ts +35 -0
  458. package/src/spark/index.ts +414 -0
  459. package/src/staking/index.ts +1 -0
  460. package/src/staking/staking.ts +157 -0
  461. package/src/types/aave.ts +256 -0
  462. package/src/types/common.ts +84 -0
  463. package/src/types/compound.ts +122 -0
  464. package/src/types/contracts/generated/AaveLendingPoolV2.ts +510 -0
  465. package/src/types/contracts/generated/AaveLoanInfoV2.ts +175 -0
  466. package/src/types/contracts/generated/AaveProtocolDataProvider.ts +152 -0
  467. package/src/types/contracts/generated/AaveUiIncentiveDataProviderV3.ts +254 -0
  468. package/src/types/contracts/generated/AaveV3LendingPool.ts +805 -0
  469. package/src/types/contracts/generated/AaveV3PoolAddressesProvider.ts +340 -0
  470. package/src/types/contracts/generated/AaveV3ProtocolDataProvider.ts +186 -0
  471. package/src/types/contracts/generated/AaveV3View.ts +402 -0
  472. package/src/types/contracts/generated/BalanceScanner.ts +71 -0
  473. package/src/types/contracts/generated/CETHv3.ts +685 -0
  474. package/src/types/contracts/generated/CUSDCv3.ts +688 -0
  475. package/src/types/contracts/generated/CUSDbCv3.ts +685 -0
  476. package/src/types/contracts/generated/CbEth.ts +37 -0
  477. package/src/types/contracts/generated/ChickenBondsView.ts +90 -0
  478. package/src/types/contracts/generated/CollSurplusPool.ts +185 -0
  479. package/src/types/contracts/generated/CompV3ETHBulker.ts +93 -0
  480. package/src/types/contracts/generated/CompV3USDCBulker.ts +63 -0
  481. package/src/types/contracts/generated/CompV3USDbCBulker.ts +85 -0
  482. package/src/types/contracts/generated/CompV3View.ts +325 -0
  483. package/src/types/contracts/generated/CompoundLoanInfo.ts +160 -0
  484. package/src/types/contracts/generated/Comptroller.ts +727 -0
  485. package/src/types/contracts/generated/CrvUSDETHAmm.ts +286 -0
  486. package/src/types/contracts/generated/CrvUSDETHController.ts +397 -0
  487. package/src/types/contracts/generated/CrvUSDFactory.ts +242 -0
  488. package/src/types/contracts/generated/CrvUSDView.ts +277 -0
  489. package/src/types/contracts/generated/CrvUSDWBTCAmm.ts +286 -0
  490. package/src/types/contracts/generated/CrvUSDWBTCController.ts +397 -0
  491. package/src/types/contracts/generated/CrvUSDwstETHAmm.ts +286 -0
  492. package/src/types/contracts/generated/CrvUSDwstETHController.ts +397 -0
  493. package/src/types/contracts/generated/Erc20.ts +216 -0
  494. package/src/types/contracts/generated/GHO.ts +274 -0
  495. package/src/types/contracts/generated/GhoDiscountRateStrategy.ts +48 -0
  496. package/src/types/contracts/generated/IAToken.ts +39 -0
  497. package/src/types/contracts/generated/IVariableDebtToken.ts +39 -0
  498. package/src/types/contracts/generated/LendingPoolAddressesProvider.ts +308 -0
  499. package/src/types/contracts/generated/Lido.ts +65 -0
  500. package/src/types/contracts/generated/LiquityActivePool.ts +39 -0
  501. package/src/types/contracts/generated/LiquityView.ts +66 -0
  502. package/src/types/contracts/generated/McdDog.ts +217 -0
  503. package/src/types/contracts/generated/McdJug.ts +86 -0
  504. package/src/types/contracts/generated/McdSpotter.ts +43 -0
  505. package/src/types/contracts/generated/McdVat.ts +170 -0
  506. package/src/types/contracts/generated/McdView.ts +100 -0
  507. package/src/types/contracts/generated/MorphoAaveV2Proxy.ts +870 -0
  508. package/src/types/contracts/generated/MorphoAaveV2View.ts +330 -0
  509. package/src/types/contracts/generated/MorphoAaveV3ProxyEthMarket.ts +338 -0
  510. package/src/types/contracts/generated/Pot.ts +88 -0
  511. package/src/types/contracts/generated/PriceFeed.ts +127 -0
  512. package/src/types/contracts/generated/REth.ts +37 -0
  513. package/src/types/contracts/generated/SparkIncentiveDataProvider.ts +264 -0
  514. package/src/types/contracts/generated/SparkLendingPool.ts +760 -0
  515. package/src/types/contracts/generated/SparkPoolAddressesProvider.ts +340 -0
  516. package/src/types/contracts/generated/SparkProtocolDataProvider.ts +188 -0
  517. package/src/types/contracts/generated/SparkView.ts +400 -0
  518. package/src/types/contracts/generated/TroveManager.ts +760 -0
  519. package/src/types/contracts/generated/UniMulticall.ts +83 -0
  520. package/src/types/contracts/generated/WstETH.ts +141 -0
  521. package/src/types/contracts/generated/index.ts +60 -0
  522. package/src/types/contracts/generated/types.ts +73 -0
  523. package/src/types/curveUsd.ts +111 -0
  524. package/src/types/index.ts +6 -0
  525. package/src/types/liquity.ts +30 -0
  526. package/src/types/maker.ts +51 -0
  527. package/src/types/spark.ts +107 -0
@@ -0,0 +1,4 @@
1
+ export declare const SECONDS_PER_YEAR: number;
2
+ export declare const AVG_BLOCK_TIME = 12;
3
+ export declare const BLOCKS_IN_A_YEAR: number;
4
+ export declare const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
@@ -0,0 +1,4 @@
1
+ export const SECONDS_PER_YEAR = 365 * 24 * 60 * 60;
2
+ export const AVG_BLOCK_TIME = 12;
3
+ export const BLOCKS_IN_A_YEAR = SECONDS_PER_YEAR / AVG_BLOCK_TIME;
4
+ export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
@@ -0,0 +1,40 @@
1
+ import Web3 from 'web3';
2
+ import configRaw from './config/contracts';
3
+ import { BaseContract } from './types/contracts/generated/types';
4
+ import * as ContractTypes from './types/contracts/generated';
5
+ import { Blockish, NetworkNumber } from './types/common';
6
+ export type ConfigKey = keyof typeof configRaw;
7
+ export declare const getConfigContractAddress: (name: ConfigKey, network: NetworkNumber, block?: Blockish) => string;
8
+ export declare const getConfigContractAbi: (name: ConfigKey) => any[];
9
+ export declare const getErc20Contract: (address: string, web3: Web3) => import("web3-eth-contract").Contract;
10
+ export declare const createContractWrapper: (web3: Web3, network: NetworkNumber, name: ConfigKey, _address?: string, block?: Blockish) => BaseContract;
11
+ export declare const UniMulticallContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.UniMulticall;
12
+ export declare const AaveV3ViewContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.AaveV3View;
13
+ export declare const AaveIncentiveDataProviderV3Contract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.AaveUiIncentiveDataProviderV3;
14
+ export declare const GhoTokenContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.GHO;
15
+ export declare const LidoContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.Lido;
16
+ export declare const CbEthContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.CbEth;
17
+ export declare const REthContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.REth;
18
+ export declare const BalanceScannerContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.BalanceScanner;
19
+ export declare const CompV3ViewContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.CompV3View;
20
+ export declare const wstETHContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.WstETH;
21
+ export declare const AaveLoanInfoV2Contract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.AaveLoanInfoV2;
22
+ export declare const CompoundLoanInfoContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.CompoundLoanInfo;
23
+ export declare const ComptrollerContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.Comptroller;
24
+ export declare const PotContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.Pot;
25
+ export declare const MorphoAaveV2ViewContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.MorphoAaveV2View;
26
+ export declare const SparkIncentiveDataProviderContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.SparkIncentiveDataProvider;
27
+ export declare const SparkViewContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.SparkView;
28
+ export declare const CrvUSDViewContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.CrvUSDView;
29
+ export declare const CrvUSDFactoryContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.CrvUSDFactory;
30
+ export declare const LiquityViewContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.LiquityView;
31
+ export declare const LiquityCollSurplusPoolContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.CollSurplusPool;
32
+ export declare const LiquityTroveManagerContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.TroveManager;
33
+ export declare const LiquityPriceFeedContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.PriceFeed;
34
+ export declare const LiquityActivePoolContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.LiquityActivePool;
35
+ export declare const McdViewContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.McdView;
36
+ export declare const McdSpotterContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.McdSpotter;
37
+ export declare const McdDogContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.McdDog;
38
+ export declare const McdJugContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.McdJug;
39
+ export declare const McdVatContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.McdVat;
40
+ export declare const ChickenBondsViewContract: (web3: Web3, network: NetworkNumber, block?: Blockish) => ContractTypes.ChickenBondsView;
@@ -0,0 +1,55 @@
1
+ import configRaw from './config/contracts';
2
+ const contractConfig = configRaw;
3
+ export const getConfigContractAddress = (name, network, block) => {
4
+ const networkData = contractConfig[name].networks[network];
5
+ const latestAddress = (networkData === null || networkData === void 0 ? void 0 : networkData.address) || '';
6
+ if (block && block !== 'latest') {
7
+ if (block >= ((networkData === null || networkData === void 0 ? void 0 : networkData.createdBlock) || 0)) {
8
+ return latestAddress;
9
+ }
10
+ const oldVersions = (networkData === null || networkData === void 0 ? void 0 : networkData.oldVersions) || {};
11
+ for (const [createdBlock, address] of Object.entries(oldVersions).reverse()) {
12
+ if (block >= Number(createdBlock)) {
13
+ return address;
14
+ }
15
+ }
16
+ }
17
+ return latestAddress;
18
+ };
19
+ export const getConfigContractAbi = (name) => contractConfig[name].abi;
20
+ const createContractFromConfigFunc = (name, _address) => (web3, network, block) => {
21
+ const address = _address || getConfigContractAddress(name, network, block);
22
+ return new web3.eth.Contract(contractConfig[name].abi, address);
23
+ };
24
+ export const getErc20Contract = (address, web3) => (new web3.eth.Contract(getConfigContractAbi('Erc20'), address));
25
+ export const createContractWrapper = (web3, network, name, _address, block) => (createContractFromConfigFunc(name, _address)(web3, network, block));
26
+ export const UniMulticallContract = createContractFromConfigFunc('UniMulticall');
27
+ export const AaveV3ViewContract = createContractFromConfigFunc('AaveV3View');
28
+ export const AaveIncentiveDataProviderV3Contract = createContractFromConfigFunc('AaveUiIncentiveDataProviderV3');
29
+ export const GhoTokenContract = createContractFromConfigFunc('GHO');
30
+ export const LidoContract = createContractFromConfigFunc('Lido');
31
+ export const CbEthContract = createContractFromConfigFunc('CbEth');
32
+ export const REthContract = createContractFromConfigFunc('REth');
33
+ export const BalanceScannerContract = createContractFromConfigFunc('BalanceScanner');
34
+ export const CompV3ViewContract = createContractFromConfigFunc('CompV3View');
35
+ export const wstETHContract = createContractFromConfigFunc('wstETH');
36
+ export const AaveLoanInfoV2Contract = createContractFromConfigFunc('AaveLoanInfoV2');
37
+ export const CompoundLoanInfoContract = createContractFromConfigFunc('CompoundLoanInfo');
38
+ export const ComptrollerContract = createContractFromConfigFunc('Comptroller');
39
+ export const PotContract = createContractFromConfigFunc('Pot');
40
+ export const MorphoAaveV2ViewContract = createContractFromConfigFunc('MorphoAaveV2View');
41
+ export const SparkIncentiveDataProviderContract = createContractFromConfigFunc('SparkIncentiveDataProvider');
42
+ export const SparkViewContract = createContractFromConfigFunc('SparkView');
43
+ export const CrvUSDViewContract = createContractFromConfigFunc('crvUSDView');
44
+ export const CrvUSDFactoryContract = createContractFromConfigFunc('crvUSDFactory');
45
+ export const LiquityViewContract = createContractFromConfigFunc('LiquityView');
46
+ export const LiquityCollSurplusPoolContract = createContractFromConfigFunc('CollSurplusPool');
47
+ export const LiquityTroveManagerContract = createContractFromConfigFunc('TroveManager');
48
+ export const LiquityPriceFeedContract = createContractFromConfigFunc('PriceFeed');
49
+ export const LiquityActivePoolContract = createContractFromConfigFunc('LiquityActivePool');
50
+ export const McdViewContract = createContractFromConfigFunc('McdView');
51
+ export const McdSpotterContract = createContractFromConfigFunc('McdSpotter');
52
+ export const McdDogContract = createContractFromConfigFunc('McdDog');
53
+ export const McdJugContract = createContractFromConfigFunc('McdJug');
54
+ export const McdVatContract = createContractFromConfigFunc('McdVat');
55
+ export const ChickenBondsViewContract = createContractFromConfigFunc('ChickenBondsView');
@@ -0,0 +1,7 @@
1
+ import Web3 from 'web3';
2
+ import { CrvUSDGlobalMarketData, CrvUSDMarketData, CrvUSDUserData, CrvUSDVersions } from '../types';
3
+ import { Blockish, EthAddress, NetworkNumber, PositionBalances } from '../types/common';
4
+ export declare const getCurveUsdGlobalData: (web3: Web3, network: NetworkNumber, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDGlobalMarketData>;
5
+ export declare const getCrvUsdAccountBalances: (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, address: EthAddress, crvUsdVersion: CrvUSDVersions) => Promise<PositionBalances>;
6
+ export declare const getCurveUsdUserData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: CrvUSDMarketData, activeBand: string) => Promise<CrvUSDUserData>;
7
+ export declare const getCurveUsdFullPositionData: (web3: Web3, network: NetworkNumber, address: string, selectedMarket: CrvUSDMarketData) => Promise<CrvUSDUserData>;
@@ -0,0 +1,189 @@
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, getAssetInfo } from '@defisaver/tokens';
12
+ import { CrvUSDStatus, } from '../types';
13
+ import { multicall } from '../multicall';
14
+ import { NetworkNumber, } from '../types/common';
15
+ import { CrvUSDFactoryContract, CrvUSDViewContract } from '../contracts';
16
+ import { getCrvUsdAggregatedData } from '../helpers/curveUsdHelpers';
17
+ import { CrvUsdMarkets } from '../markets';
18
+ import { wethToEth } from '../services/utils';
19
+ const getAndFormatBands = (web3, network, selectedMarket, _minBand, _maxBand) => __awaiter(void 0, void 0, void 0, function* () {
20
+ const contract = CrvUSDViewContract(web3, network);
21
+ const minBand = parseInt(_minBand, 10);
22
+ const maxBand = parseInt(_maxBand, 10);
23
+ const pivots = [];
24
+ // getBandsData uses a lot of gas to get all of the bands at once, so we use pagination and fetch 200 bands at a time
25
+ let i = minBand;
26
+ while (i < maxBand) {
27
+ i += 200;
28
+ if (i > maxBand) {
29
+ pivots.push(maxBand);
30
+ }
31
+ else {
32
+ pivots.push(i);
33
+ }
34
+ }
35
+ const bandsData = (yield Promise.all(pivots.map((pivot, index) => __awaiter(void 0, void 0, void 0, function* () {
36
+ let start = 0;
37
+ if (index === 0) {
38
+ start = minBand;
39
+ }
40
+ else {
41
+ start = pivots[index - 1] + 1;
42
+ }
43
+ // @ts-ignore
44
+ const pivotedBandsData = yield contract.methods.getBandsData(selectedMarket.controllerAddress, start, pivot).call();
45
+ return pivotedBandsData;
46
+ })))).flat();
47
+ return bandsData.map((band) => ({
48
+ id: band.id,
49
+ collAmount: assetAmountInEth(band.collAmount),
50
+ debtAmount: assetAmountInEth(band.debtAmount),
51
+ lowPrice: assetAmountInEth(band.lowPrice),
52
+ highPrice: assetAmountInEth(band.highPrice),
53
+ }));
54
+ });
55
+ export const getCurveUsdGlobalData = (web3, network, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
56
+ const contract = CrvUSDViewContract(web3, network);
57
+ const factoryContract = CrvUSDFactoryContract(web3, network);
58
+ const collAsset = selectedMarket.collAsset;
59
+ const debtAsset = selectedMarket.baseAsset;
60
+ const multicallData = [
61
+ {
62
+ target: factoryContract.options.address,
63
+ abiItem: factoryContract.options.jsonInterface.find(({ name }) => name === 'debt_ceiling'),
64
+ params: [selectedMarket.controllerAddress],
65
+ },
66
+ {
67
+ target: factoryContract.options.address,
68
+ abiItem: factoryContract.options.jsonInterface.find(({ name }) => name === 'total_debt'),
69
+ params: [],
70
+ },
71
+ {
72
+ target: contract.options.address,
73
+ abiItem: contract.options.jsonInterface.find(({ name }) => name === 'globalData'),
74
+ params: [selectedMarket.controllerAddress],
75
+ },
76
+ ];
77
+ const multiRes = yield multicall(multicallData, web3, network);
78
+ const data = multiRes[2][0];
79
+ const debtCeiling = assetAmountInEth(multiRes[0][0], debtAsset);
80
+ // all prices are in 18 decimals
81
+ const totalDebt = assetAmountInEth(data.totalDebt, debtAsset);
82
+ const ammPrice = assetAmountInEth(data.ammPrice, debtAsset);
83
+ const rate = assetAmountInEth(data.ammRate);
84
+ const futureRate = assetAmountInEth(data.monetaryPolicyRate);
85
+ const exponentRate = new Dec(rate).mul(365).mul(86400);
86
+ const exponentFutureRate = new Dec(futureRate).mul(365).mul(86400);
87
+ const borrowRate = new Dec(new Dec(2.718281828459).pow(exponentRate).minus(1)).mul(100)
88
+ .toString();
89
+ const futureBorrowRate = new Dec(new Dec(2.718281828459).pow(exponentFutureRate).minus(1)).mul(100)
90
+ .toString();
91
+ const bandsData = yield getAndFormatBands(web3, network, selectedMarket, data.minBand, data.maxBand);
92
+ const leftToBorrow = new Dec(debtCeiling).minus(totalDebt).toString();
93
+ return Object.assign(Object.assign({}, data), { debtCeiling,
94
+ totalDebt,
95
+ ammPrice, oraclePrice: assetAmountInEth(data.oraclePrice, debtAsset), basePrice: assetAmountInEth(data.basePrice, debtAsset), minted: assetAmountInEth(data.minted, debtAsset), redeemed: assetAmountInEth(data.redeemed, debtAsset), borrowRate,
96
+ futureBorrowRate, bands: bandsData, leftToBorrow });
97
+ });
98
+ const getStatusForUser = (bandRange, activeBand, crvUSDSupplied, collSupplied) => {
99
+ // if bands are equal, that can only be [0,0] which means user doesn't have loan (min number of bands is 4)
100
+ if (new Dec(bandRange[0]).eq(bandRange[1]))
101
+ return CrvUSDStatus.Nonexistant;
102
+ // if user doesn't have crvUSD as collateral, then his position is not in soft liquidation
103
+ if (new Dec(crvUSDSupplied).lte(0)) {
104
+ if (new Dec(bandRange[0]).minus(activeBand).lte(3))
105
+ return CrvUSDStatus.Risk; // if user band is less than 3 bands away from active band, his position is at risk
106
+ return CrvUSDStatus.Safe;
107
+ }
108
+ if (new Dec(bandRange[0]).lte(activeBand) && new Dec(bandRange[1]).gte(activeBand))
109
+ return CrvUSDStatus.SoftLiquidating; // user has crvUSD as coll so he is in soft liquidation
110
+ if (new Dec(collSupplied).lte(0) || new Dec(bandRange[1]).lte(activeBand))
111
+ return CrvUSDStatus.SoftLiquidated; // or is fully soft liquidated
112
+ return CrvUSDStatus.Nonexistant;
113
+ };
114
+ export const getCrvUsdAccountBalances = (web3, network, block, addressMapping, address, crvUsdVersion) => __awaiter(void 0, void 0, void 0, function* () {
115
+ let balances = {
116
+ collateral: {},
117
+ debt: {},
118
+ };
119
+ if (!address) {
120
+ return balances;
121
+ }
122
+ const contract = CrvUSDViewContract(web3, network, block);
123
+ const selectedMarket = CrvUsdMarkets(network)[crvUsdVersion];
124
+ const data = yield contract.methods.userData(selectedMarket.controllerAddress, address).call({}, block);
125
+ balances = {
126
+ collateral: {
127
+ [addressMapping ? getAssetInfo(wethToEth(selectedMarket.collAsset), network).address.toLowerCase() : wethToEth(selectedMarket.collAsset)]: data.marketCollateralAmount,
128
+ },
129
+ debt: {
130
+ [addressMapping ? getAssetInfo(wethToEth(selectedMarket.baseAsset), network).address.toLowerCase() : wethToEth(selectedMarket.baseAsset)]: data.debtAmount,
131
+ },
132
+ };
133
+ return balances;
134
+ });
135
+ export const getCurveUsdUserData = (web3, network, address, selectedMarket, activeBand) => __awaiter(void 0, void 0, void 0, function* () {
136
+ const contract = CrvUSDViewContract(web3, network);
137
+ const data = yield contract.methods.userData(selectedMarket.controllerAddress, address).call();
138
+ const collAsset = selectedMarket.collAsset;
139
+ const debtAsset = selectedMarket.baseAsset;
140
+ const health = assetAmountInEth(data.health);
141
+ const healthPercent = new Dec(health).mul(100).toString();
142
+ const collPrice = assetAmountInEth(data.collateralPrice, debtAsset);
143
+ const collSupplied = assetAmountInEth(data.marketCollateralAmount, collAsset);
144
+ const collSuppliedUsd = new Dec(collSupplied).mul(collPrice).toString();
145
+ const crvUSDSupplied = assetAmountInEth(data.curveUsdCollateralAmount, debtAsset);
146
+ const debtBorrowed = assetAmountInEth(data.debtAmount, debtAsset);
147
+ const usedAssets = data.loanExists ? {
148
+ [collAsset]: {
149
+ isSupplied: true,
150
+ supplied: collSupplied,
151
+ suppliedUsd: collSuppliedUsd,
152
+ borrowed: '0',
153
+ borrowedUsd: '0',
154
+ isBorrowed: false,
155
+ symbol: collAsset,
156
+ collateral: true,
157
+ price: collPrice, // price_amm
158
+ },
159
+ [debtAsset]: {
160
+ isSupplied: new Dec(crvUSDSupplied).gt('0'),
161
+ collateral: new Dec(crvUSDSupplied).gt('0'),
162
+ supplied: crvUSDSupplied,
163
+ suppliedUsd: crvUSDSupplied,
164
+ borrowed: debtBorrowed,
165
+ borrowedUsd: debtBorrowed,
166
+ isBorrowed: new Dec(debtBorrowed).gt('0'),
167
+ symbol: 'crvUSD',
168
+ price: '1',
169
+ interestRate: '0',
170
+ },
171
+ } : {};
172
+ const priceHigh = assetAmountInEth(data.priceHigh);
173
+ const priceLow = assetAmountInEth(data.priceLow);
174
+ const _userBands = data.loanExists ? (yield getAndFormatBands(web3, network, selectedMarket, data.bandRange[0], data.bandRange[1])) : [];
175
+ const status = data.loanExists ? getStatusForUser(data.bandRange, activeBand, crvUSDSupplied, collSupplied) : CrvUSDStatus.Nonexistant;
176
+ const userBands = _userBands.map((band, index) => (Object.assign(Object.assign({}, band), { userDebtAmount: assetAmountInEth(data.usersBands[0][index], debtAsset), userCollAmount: assetAmountInEth(data.usersBands[1][index], collAsset) }))).sort((a, b) => parseInt(b.id, 10) - parseInt(a.id, 10));
177
+ return Object.assign(Object.assign(Object.assign(Object.assign({}, data), { debtAmount: assetAmountInEth(data.debtAmount, debtAsset), health,
178
+ healthPercent,
179
+ priceHigh,
180
+ priceLow, liquidationDiscount: assetAmountInEth(data.liquidationDiscount), numOfBands: data.N, usedAssets,
181
+ status }), getCrvUsdAggregatedData({
182
+ loanExists: data.loanExists, usedAssets, network: NetworkNumber.Eth, selectedMarket,
183
+ })), { userBands });
184
+ });
185
+ export const getCurveUsdFullPositionData = (web3, network, address, selectedMarket) => __awaiter(void 0, void 0, void 0, function* () {
186
+ const marketData = yield getCurveUsdGlobalData(web3, network, selectedMarket);
187
+ const positionData = yield getCurveUsdUserData(web3, network, address, selectedMarket, marketData.activeBand);
188
+ return positionData;
189
+ });
@@ -0,0 +1,3 @@
1
+ import Web3 from 'web3';
2
+ import { Blockish, NetworkNumber, PositionBalances } from '../types/common';
3
+ export declare const getExchangeAccountBalances: (web3: Web3, network: NetworkNumber, block: Blockish, addressMapping: boolean, subData: any) => Promise<PositionBalances>;
@@ -0,0 +1,19 @@
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 { assetAmountInWei, getAssetInfoByAddress } from '@defisaver/tokens';
11
+ import { wethToEthByAddress } from '../services/utils';
12
+ export const getExchangeAccountBalances = (web3, network, block, addressMapping, subData) => __awaiter(void 0, void 0, void 0, function* () {
13
+ const fromToken = getAssetInfoByAddress(wethToEthByAddress(subData.fromToken, network), network);
14
+ return {
15
+ selling: {
16
+ [addressMapping ? fromToken.address.toLowerCase() : fromToken.symbol]: assetAmountInWei(subData.amount, fromToken.symbol),
17
+ },
18
+ };
19
+ });
@@ -0,0 +1,37 @@
1
+ import { AaveHelperCommon, AaveMarketInfo, AaveV3AggregatedPositionData, AaveV3AssetsData, AaveV3UsedAssets } from '../../types';
2
+ export declare const isAaveV3: ({ selectedMarket }: {
3
+ selectedMarket: Partial<AaveMarketInfo>;
4
+ }) => boolean;
5
+ export declare const isMorphoAaveV2: ({ selectedMarket }: {
6
+ selectedMarket: Partial<AaveMarketInfo>;
7
+ }) => boolean;
8
+ export declare const isMorphoAaveV3: ({ selectedMarket }: {
9
+ selectedMarket: Partial<AaveMarketInfo>;
10
+ }) => boolean;
11
+ export declare const isMorphoAave: ({ selectedMarket }: {
12
+ selectedMarket: Partial<AaveMarketInfo>;
13
+ }) => boolean;
14
+ export declare const aaveV3IsInIsolationMode: ({ usedAssets, assetsData }: {
15
+ usedAssets: AaveV3UsedAssets;
16
+ assetsData: AaveV3AssetsData;
17
+ }) => boolean;
18
+ export declare const aaveV3IsInSiloedMode: ({ usedAssets, assetsData }: {
19
+ usedAssets: AaveV3UsedAssets;
20
+ assetsData: AaveV3AssetsData;
21
+ }) => boolean;
22
+ export declare const aaveAnyGetCollSuppliedAssets: ({ usedAssets }: {
23
+ usedAssets: AaveV3UsedAssets;
24
+ }) => import("../../types").AaveV3UsedAsset[];
25
+ export declare const aaveAnyGetSuppliableAssets: ({ usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network, ...rest }: AaveHelperCommon) => {
26
+ symbol: string;
27
+ canBeCollateral: boolean;
28
+ }[];
29
+ export declare const aaveAnyGetSuppliableAsCollAssets: ({ usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network, ...rest }: AaveHelperCommon) => {
30
+ symbol: string;
31
+ canBeCollateral: boolean;
32
+ }[];
33
+ export declare const aaveAnyGetEmodeMutableProps: ({ usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network, ...rest }: AaveHelperCommon, _asset: string) => {
34
+ liquidationRatio: any;
35
+ collateralFactor: any;
36
+ };
37
+ export declare const aaveAnyGetAggregatedPositionData: ({ usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network, ...rest }: AaveHelperCommon) => AaveV3AggregatedPositionData;
@@ -0,0 +1,101 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import Dec from 'decimal.js';
13
+ import { AaveVersions, } from '../../types';
14
+ import { wethToEth } from '../../services/utils';
15
+ import { calcLeverageLiqPrice, getAssetsTotal, isLeveragedPos } from '../../moneymarket';
16
+ import { calculateNetApy } from '../../staking';
17
+ export const isAaveV3 = ({ selectedMarket }) => selectedMarket.value === AaveVersions.AaveV3;
18
+ export const isMorphoAaveV2 = ({ selectedMarket }) => selectedMarket.value === AaveVersions.MorphoAaveV2;
19
+ export const isMorphoAaveV3 = ({ selectedMarket }) => selectedMarket.value === AaveVersions.MorphoAaveV3Eth;
20
+ export const isMorphoAave = ({ selectedMarket }) => isMorphoAaveV2({ selectedMarket }) || isMorphoAaveV3({ selectedMarket });
21
+ export const aaveV3IsInIsolationMode = ({ usedAssets, assetsData }) => Object.values(usedAssets).some(({ symbol, collateral }) => collateral && assetsData[symbol].isIsolated);
22
+ export const aaveV3IsInSiloedMode = ({ usedAssets, assetsData }) => Object.values(usedAssets).some(({ symbol, debt }) => debt && assetsData[symbol].isSiloed);
23
+ export const aaveAnyGetCollSuppliedAssets = ({ usedAssets }) => Object.values(usedAssets)
24
+ .filter(({ isSupplied, collateral }) => isSupplied && collateral);
25
+ export const aaveAnyGetSuppliableAssets = (_a) => {
26
+ var { usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network } = _a, rest = __rest(_a, ["usedAssets", "eModeCategory", "eModeCategories", "assetsData", "selectedMarket", "network"]);
27
+ const data = Object.assign({ usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network }, rest);
28
+ const collAccountAssets = aaveAnyGetCollSuppliedAssets(data);
29
+ const marketAssets = Object.values(assetsData);
30
+ if (isMorphoAave({ selectedMarket })) {
31
+ return marketAssets.filter(({ canBeSupplied }) => canBeSupplied).map(a => (Object.assign(Object.assign({}, a), { canBeCollateral: new Dec(assetsData[a.symbol].collateralFactor).gt(0) })));
32
+ }
33
+ if (collAccountAssets.length === 0 || !isAaveV3(data))
34
+ return marketAssets.filter(({ canBeSupplied }) => canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: true }));
35
+ if (aaveV3IsInIsolationMode(data)) {
36
+ const collAsset = collAccountAssets[0].symbol;
37
+ return marketAssets.filter(d => d.canBeSupplied).map(({ symbol }) => ({ symbol, canBeCollateral: symbol === collAsset }));
38
+ }
39
+ return marketAssets.filter(d => d.canBeSupplied).map(({ symbol, isIsolated }) => ({ symbol, canBeCollateral: !isIsolated }));
40
+ };
41
+ export const aaveAnyGetSuppliableAsCollAssets = (_a) => {
42
+ var { usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network } = _a, rest = __rest(_a, ["usedAssets", "eModeCategory", "eModeCategories", "assetsData", "selectedMarket", "network"]);
43
+ return aaveAnyGetSuppliableAssets(Object.assign({ usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network }, rest)).filter(({ canBeCollateral }) => canBeCollateral);
44
+ };
45
+ export const aaveAnyGetEmodeMutableProps = (_a, _asset) => {
46
+ var _b;
47
+ var { usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network } = _a, rest = __rest(_a, ["usedAssets", "eModeCategory", "eModeCategories", "assetsData", "selectedMarket", "network"]);
48
+ const data = Object.assign({ usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network }, rest);
49
+ const asset = wethToEth(_asset);
50
+ const canSupplyAsColl = aaveAnyGetSuppliableAsCollAssets(data).some(({ symbol }) => symbol === asset);
51
+ // TODO remove dirty fix for Morpho V2
52
+ if (isMorphoAaveV2({ selectedMarket }) && !canSupplyAsColl) {
53
+ const { liquidationRatio, collateralFactor } = assetsData[asset];
54
+ return ({ liquidationRatio, collateralFactor });
55
+ }
56
+ if (!canSupplyAsColl) {
57
+ return ({ liquidationRatio: '0', collateralFactor: '0' });
58
+ }
59
+ const assetData = assetsData[asset];
60
+ if (eModeCategory === 0
61
+ || assetData.eModeCategory !== eModeCategory
62
+ || new Dec(((_b = assetData === null || assetData === void 0 ? void 0 : assetData.eModeCategoryData) === null || _b === void 0 ? void 0 : _b.collateralFactor) || 0).eq(0)) {
63
+ const { liquidationRatio, collateralFactor } = assetData;
64
+ return ({ liquidationRatio, collateralFactor });
65
+ }
66
+ const { liquidationRatio, collateralFactor } = assetData.eModeCategoryData;
67
+ return ({ liquidationRatio, collateralFactor });
68
+ };
69
+ export const aaveAnyGetAggregatedPositionData = (_a) => {
70
+ var { usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network } = _a, rest = __rest(_a, ["usedAssets", "eModeCategory", "eModeCategories", "assetsData", "selectedMarket", "network"]);
71
+ const data = Object.assign({ usedAssets, eModeCategory, eModeCategories, assetsData, selectedMarket, network }, rest);
72
+ const payload = {};
73
+ payload.suppliedUsd = getAssetsTotal(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedUsd }) => suppliedUsd);
74
+ payload.suppliedCollateralUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ suppliedUsd }) => suppliedUsd);
75
+ payload.borrowLimitUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd }) => new Dec(suppliedUsd).mul(aaveAnyGetEmodeMutableProps(data, symbol).collateralFactor));
76
+ payload.liquidationLimitUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd }) => new Dec(suppliedUsd).mul(aaveAnyGetEmodeMutableProps(data, symbol).liquidationRatio));
77
+ payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
78
+ const leftToBorrowUsd = new Dec(payload.borrowLimitUsd).sub(payload.borrowedUsd);
79
+ payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
80
+ payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
81
+ payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
82
+ const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy(usedAssets, assetsData, isMorphoAave({ selectedMarket }));
83
+ payload.netApy = netApy;
84
+ payload.incentiveUsd = incentiveUsd;
85
+ payload.totalInterestUsd = totalInterestUsd;
86
+ payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
87
+ payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
88
+ const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
89
+ payload.leveragedType = leveragedType;
90
+ if (leveragedType !== '') {
91
+ payload.leveragedAsset = leveragedAsset;
92
+ let assetPrice = data.assetsData[leveragedAsset].price;
93
+ if (leveragedType === 'lsd-leverage') {
94
+ // Treat ETH like a stablecoin in a long stETH position
95
+ payload.leveragedLsdAssetRatio = new Dec(assetsData[leveragedAsset].price).div(assetsData.ETH.price).toDP(18).toString();
96
+ assetPrice = new Dec(assetPrice).div(assetsData.ETH.price).toString();
97
+ }
98
+ payload.liquidationPrice = calcLeverageLiqPrice(leveragedType, assetPrice, payload.borrowedUsd, payload.liquidationLimitUsd);
99
+ }
100
+ return payload;
101
+ };
@@ -0,0 +1,20 @@
1
+ import { BaseAdditionalAssetData, CompoundAggregatedPositionData, CompoundMarketData, CompoundV2AssetsData, CompoundV2UsedAssets, CompoundV3AssetData, CompoundV3AssetsData, CompoundV3UsedAssets } from '../../types';
2
+ import { NetworkNumber } from '../../types/common';
3
+ export declare const formatMarketData: (data: any, network: NetworkNumber) => CompoundV3AssetData;
4
+ export declare const formatBaseData: (data: any, network: NetworkNumber) => CompoundV3AssetData & BaseAdditionalAssetData;
5
+ export declare const getIncentiveApys: (baseData: CompoundV3AssetData & BaseAdditionalAssetData, compPrice: string) => {
6
+ incentiveSupplyApy: string;
7
+ incentiveBorrowApy: string;
8
+ incentiveSupplyToken: string;
9
+ incentiveBorrowToken: string;
10
+ };
11
+ export declare const getCompoundV2AggregatedData: ({ usedAssets, assetsData, ...rest }: {
12
+ usedAssets: CompoundV2UsedAssets;
13
+ assetsData: CompoundV2AssetsData;
14
+ }) => CompoundAggregatedPositionData;
15
+ export declare const getCompoundV3AggregatedData: ({ usedAssets, assetsData, network, selectedMarket, ...rest }: {
16
+ usedAssets: CompoundV3UsedAssets;
17
+ assetsData: CompoundV3AssetsData;
18
+ network: NetworkNumber;
19
+ selectedMarket: CompoundMarketData;
20
+ }) => CompoundAggregatedPositionData;
@@ -0,0 +1,130 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import Dec from 'decimal.js';
13
+ import { getAssetInfoByAddress } from '@defisaver/tokens';
14
+ import { CompoundVersions, } from '../../types';
15
+ import { getEthAmountForDecimals, handleWbtcLegacy, wethToEth } from '../../services/utils';
16
+ import { SECONDS_PER_YEAR } from '../../constants';
17
+ import { aprToApy, calcLeverageLiqPrice, calculateBorrowingAssetLimit, getAssetsTotal, isLeveragedPos, } from '../../moneymarket';
18
+ import { calculateNetApy } from '../../staking';
19
+ export const formatMarketData = (data, network) => {
20
+ const assetInfo = getAssetInfoByAddress(data.tokenAddr, network);
21
+ const isWETH = assetInfo.symbol === 'WETH';
22
+ return (Object.assign(Object.assign({}, data), { price: getEthAmountForDecimals(data.price, 8), collateralFactor: getEthAmountForDecimals(data.borrowCollateralFactor, 18), liquidationRatio: getEthAmountForDecimals(data.liquidateCollateralFactor, 18), supplyCap: getEthAmountForDecimals(data.supplyCap, assetInfo.decimals), totalSupply: getEthAmountForDecimals(data.totalSupply, assetInfo.decimals), symbol: isWETH ? 'ETH' : assetInfo.symbol, supplyRate: '0', borrowRate: '0', canBeBorrowed: false, canBeSupplied: true }));
23
+ };
24
+ // TODO: maybe not hardcode decimals
25
+ export const formatBaseData = (data, network) => {
26
+ const assetInfo = getAssetInfoByAddress(data.tokenAddr, network);
27
+ const totalSupply = getEthAmountForDecimals(new Dec(data.totalSupply).mul(data.supplyIndex).toString(), 15 + assetInfo.decimals);
28
+ const totalBorrow = getEthAmountForDecimals(new Dec(data.totalBorrow).mul(data.borrowIndex).toString(), 15 + assetInfo.decimals);
29
+ return (Object.assign(Object.assign({}, data), { supplyRate: aprToApy(new Dec(data.supplyRate).div(1e18).mul(SECONDS_PER_YEAR).mul(100)
30
+ .toString()), borrowRate: aprToApy(new Dec(data.borrowRate).div(1e18).mul(SECONDS_PER_YEAR).mul(100)
31
+ .toString()), utilization: getEthAmountForDecimals(data.utilization, 16), // utilization is totalSupply/totalBorrow in 1e18, but we need % so when we mul with 100 it's 16 decimals
32
+ totalSupply,
33
+ totalBorrow, marketLiquidity: new Dec(totalSupply).minus(totalBorrow).toString(), symbol: wethToEth(assetInfo.symbol), price: getEthAmountForDecimals(data.price, 8), collateralFactor: '0', liquidationRatio: '0', canBeBorrowed: true, canBeSupplied: true, supplyCap: '0', rewardSupplySpeed: getEthAmountForDecimals(data.baseTrackingSupplyRewardsSpeed, 15), rewardBorrowSpeed: getEthAmountForDecimals(data.baseTrackingBorrowRewardsSpeed, 15), minDebt: getEthAmountForDecimals(data.baseBorrowMin, assetInfo.decimals), isBase: true }));
34
+ };
35
+ export const getIncentiveApys = (baseData, compPrice) => {
36
+ const incentiveSupplyApy = aprToApy((100 * SECONDS_PER_YEAR * +baseData.rewardSupplySpeed * +compPrice) / +baseData.price / +baseData.totalSupply).toString();
37
+ const incentiveBorrowApy = aprToApy((100 * SECONDS_PER_YEAR * +baseData.rewardBorrowSpeed * +compPrice) / +baseData.price / +baseData.totalBorrow).toString();
38
+ return {
39
+ incentiveSupplyApy,
40
+ incentiveBorrowApy,
41
+ incentiveSupplyToken: 'COMP',
42
+ incentiveBorrowToken: 'COMP',
43
+ };
44
+ };
45
+ export const getCompoundV2AggregatedData = (_a) => {
46
+ var { usedAssets, assetsData } = _a, rest = __rest(_a, ["usedAssets", "assetsData"]);
47
+ const payload = {};
48
+ payload.suppliedUsd = getAssetsTotal(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedUsd }) => suppliedUsd);
49
+ payload.suppliedCollateralUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ suppliedUsd }) => suppliedUsd);
50
+ payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
51
+ payload.borrowLimitUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd }) => new Dec(suppliedUsd).mul(assetsData[symbol].collateralFactor));
52
+ const leftToBorrowUsd = new Dec(payload.borrowLimitUsd).sub(payload.borrowedUsd).toString();
53
+ payload.leftToBorrowUsd = leftToBorrowUsd;
54
+ payload.borrowLimitUsd = new Dec(leftToBorrowUsd).add(payload.borrowedUsd).toString();
55
+ payload.liquidationLimitUsd = payload.borrowLimitUsd;
56
+ payload.ratio = payload.borrowedUsd && payload.borrowedUsd !== '0'
57
+ ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString()
58
+ : '0';
59
+ payload.minRatio = '100';
60
+ payload.collRatio = payload.borrowedUsd && payload.borrowedUsd !== '0'
61
+ ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString()
62
+ : '0';
63
+ // Calculate borrow limits per asset
64
+ Object.values(usedAssets).forEach((item) => {
65
+ if (item.isBorrowed) {
66
+ // eslint-disable-next-line no-param-reassign
67
+ item.limit = calculateBorrowingAssetLimit(item.borrowedUsd, payload.borrowLimitUsd);
68
+ }
69
+ });
70
+ const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy(usedAssets, assetsData);
71
+ payload.netApy = netApy;
72
+ payload.incentiveUsd = incentiveUsd;
73
+ payload.totalInterestUsd = totalInterestUsd;
74
+ const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets);
75
+ payload.leveragedType = leveragedType;
76
+ if (leveragedType !== '') {
77
+ payload.leveragedAsset = leveragedAsset;
78
+ const assetPrice = assetsData[handleWbtcLegacy(leveragedAsset)].price;
79
+ payload.liquidationPrice = calcLeverageLiqPrice(leveragedType, assetPrice, payload.borrowedUsd, payload.liquidationLimitUsd);
80
+ }
81
+ return payload;
82
+ };
83
+ export const getCompoundV3AggregatedData = (_a) => {
84
+ var _b;
85
+ var { usedAssets, assetsData, network, selectedMarket } = _a, rest = __rest(_a, ["usedAssets", "assetsData", "network", "selectedMarket"]);
86
+ const payload = {};
87
+ payload.suppliedUsd = getAssetsTotal(usedAssets, ({ isSupplied }) => isSupplied, ({ suppliedUsd }) => suppliedUsd);
88
+ payload.suppliedCollateralUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ suppliedUsd }) => suppliedUsd);
89
+ payload.borrowedUsd = getAssetsTotal(usedAssets, ({ isBorrowed }) => isBorrowed, ({ borrowedUsd }) => borrowedUsd);
90
+ payload.borrowLimitUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd }) => new Dec(suppliedUsd).mul(assetsData[symbol].collateralFactor));
91
+ payload.liquidationLimitUsd = getAssetsTotal(usedAssets, ({ isSupplied, collateral }) => isSupplied && collateral, ({ symbol, suppliedUsd }) => new Dec(suppliedUsd).mul(assetsData[symbol].liquidationRatio));
92
+ payload.debtTooLow = new Dec(((_b = usedAssets[selectedMarket.baseAsset]) === null || _b === void 0 ? void 0 : _b.borrowed) || 0).gt(0) && new Dec(usedAssets[selectedMarket.baseAsset].borrowed).lt(assetsData[selectedMarket.baseAsset].minDebt);
93
+ const leftToBorrowUsd = new Dec(payload.borrowLimitUsd).sub(payload.borrowedUsd);
94
+ payload.leftToBorrowUsd = leftToBorrowUsd.lte('0') ? '0' : leftToBorrowUsd.toString();
95
+ payload.ratio = +payload.suppliedUsd ? new Dec(payload.borrowLimitUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
96
+ payload.collRatio = +payload.suppliedUsd ? new Dec(payload.suppliedCollateralUsd).div(payload.borrowedUsd).mul(100).toString() : '0';
97
+ const { netApy, incentiveUsd, totalInterestUsd } = calculateNetApy(usedAssets, assetsData);
98
+ payload.netApy = netApy;
99
+ payload.incentiveUsd = incentiveUsd;
100
+ payload.totalInterestUsd = totalInterestUsd;
101
+ payload.minRatio = '100';
102
+ payload.liqRatio = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).toString();
103
+ payload.liqPercent = new Dec(payload.borrowLimitUsd).div(payload.liquidationLimitUsd).mul(100).toString();
104
+ payload.minDebt = assetsData[selectedMarket.baseAsset].minDebt;
105
+ const { leveragedType, leveragedAsset } = isLeveragedPos(usedAssets, selectedMarket.value === CompoundVersions.CompoundV3ETH ? 0.001 : 5);
106
+ payload.leveragedType = leveragedType;
107
+ if (leveragedType !== '') {
108
+ payload.leveragedAsset = leveragedAsset;
109
+ const assetPrice = assetsData[leveragedAsset].price;
110
+ if (leveragedType === 'lsd-leverage') {
111
+ payload.leveragedLsdAssetRatio = new Dec(assetsData[leveragedAsset].price).div(assetsData.ETH.price).toString();
112
+ }
113
+ payload.liquidationPrice = calcLeverageLiqPrice(leveragedType, assetPrice, payload.borrowedUsd, payload.liquidationLimitUsd);
114
+ }
115
+ // TO DO: handle strategies
116
+ /* const subscribedStrategies = rest.compoundStrategies
117
+ ? compoundV3GetSubscribedStrategies({ selectedMarket, compoundStrategies: rest.compoundStrategies })
118
+ : []; */
119
+ // TODO possibly move to global helper, since every protocol has the same graphData?
120
+ // payload.ratioTooLow = false;
121
+ // payload.ratioTooHigh = false;
122
+ // TO DO: handle strategies
123
+ /* if (subscribedStrategies.length) {
124
+ subscribedStrategies.forEach(({ graphData }) => {
125
+ payload.ratioTooLow = parseFloat(payload.ratio) < parseFloat(graphData.minRatio);
126
+ payload.ratioTooHigh = graphData.boostEnabled && parseFloat(payload.ratio) > parseFloat(graphData.maxRatio);
127
+ });
128
+ } */
129
+ return payload;
130
+ };
@@ -0,0 +1,8 @@
1
+ import { CrvUSDAggregatedPositionData, CrvUSDMarketData, CrvUSDUsedAssets } from '../../types';
2
+ import { NetworkNumber } from '../../types/common';
3
+ export declare const getCrvUsdAggregatedData: ({ loanExists, usedAssets, network, selectedMarket, ...rest }: {
4
+ loanExists: boolean;
5
+ usedAssets: CrvUSDUsedAssets;
6
+ network: NetworkNumber;
7
+ selectedMarket: CrvUSDMarketData;
8
+ }) => CrvUSDAggregatedPositionData;