@1delta/margin-fetcher 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 (418) hide show
  1. package/dist/abis/aave/AToken.d.ts +526 -0
  2. package/dist/abis/aave/AToken.d.ts.map +1 -0
  3. package/dist/abis/aave/AToken.js +686 -0
  4. package/dist/abis/aave/AaveOracle.d.ts +40 -0
  5. package/dist/abis/aave/AaveOracle.d.ts.map +1 -0
  6. package/dist/abis/aave/AaveOracle.js +53 -0
  7. package/dist/abis/aave/AavePoolAndDataProvider.d.ts +1618 -0
  8. package/dist/abis/aave/AavePoolAndDataProvider.d.ts.map +1 -0
  9. package/dist/abis/aave/AavePoolAndDataProvider.js +2080 -0
  10. package/dist/abis/aave/AavePoolV3.d.ts +819 -0
  11. package/dist/abis/aave/AavePoolV3.d.ts.map +1 -0
  12. package/dist/abis/aave/AavePoolV3.js +1060 -0
  13. package/dist/abis/aave/AavePoolV3Upgraded.d.ts +1134 -0
  14. package/dist/abis/aave/AavePoolV3Upgraded.d.ts.map +1 -0
  15. package/dist/abis/aave/AavePoolV3Upgraded.js +1474 -0
  16. package/dist/abis/aave/AaveV3ProtocolDataProvider.d.ts +420 -0
  17. package/dist/abis/aave/AaveV3ProtocolDataProvider.d.ts.map +1 -0
  18. package/dist/abis/aave/AaveV3ProtocolDataProvider.js +553 -0
  19. package/dist/abis/aave/VariableDebtToken.d.ts +635 -0
  20. package/dist/abis/aave/VariableDebtToken.d.ts.map +1 -0
  21. package/dist/abis/aave/VariableDebtToken.js +820 -0
  22. package/dist/abis/aave-v2/ProtocolDataProvider.d.ts +238 -0
  23. package/dist/abis/aave-v2/ProtocolDataProvider.d.ts.map +1 -0
  24. package/dist/abis/aave-v2/ProtocolDataProvider.js +312 -0
  25. package/dist/abis/aave-v2/YLDR.d.ts +209 -0
  26. package/dist/abis/aave-v2/YLDR.d.ts.map +1 -0
  27. package/dist/abis/aave-v2/YLDR.js +199 -0
  28. package/dist/abis/aave-v3/AavePoolDataProviderLegacy.d.ts +406 -0
  29. package/dist/abis/aave-v3/AavePoolDataProviderLegacy.d.ts.map +1 -0
  30. package/dist/abis/aave-v3/AavePoolDataProviderLegacy.js +460 -0
  31. package/dist/abis/aave-v3/AavePoolLegacy.d.ts +819 -0
  32. package/dist/abis/aave-v3/AavePoolLegacy.d.ts.map +1 -0
  33. package/dist/abis/aave-v3/AavePoolLegacy.js +1060 -0
  34. package/dist/abis/aurelius/Rewarder.d.ts +90 -0
  35. package/dist/abis/aurelius/Rewarder.d.ts.map +1 -0
  36. package/dist/abis/aurelius/Rewarder.js +118 -0
  37. package/dist/abis/compound-v2/CompoundLens.d.ts +656 -0
  38. package/dist/abis/compound-v2/CompoundLens.d.ts.map +1 -0
  39. package/dist/abis/compound-v2/CompoundLens.js +851 -0
  40. package/dist/abis/compound-v2/Comptroller.d.ts +1615 -0
  41. package/dist/abis/compound-v2/Comptroller.d.ts.map +1 -0
  42. package/dist/abis/compound-v2/Comptroller.js +2104 -0
  43. package/dist/abis/compound-v3/Comet.d.ts +1402 -0
  44. package/dist/abis/compound-v3/Comet.d.ts.map +1 -0
  45. package/dist/abis/compound-v3/Comet.js +1829 -0
  46. package/dist/abis/compound-v3/CometExt.d.ts +411 -0
  47. package/dist/abis/compound-v3/CometExt.d.ts.map +1 -0
  48. package/dist/abis/compound-v3/CometExt.js +536 -0
  49. package/dist/abis/compound-v3/CometLens.d.ts +152 -0
  50. package/dist/abis/compound-v3/CometLens.d.ts.map +1 -0
  51. package/dist/abis/compound-v3/CometLens.js +194 -0
  52. package/dist/abis/compound-v3/CometRewards.d.ts +253 -0
  53. package/dist/abis/compound-v3/CometRewards.d.ts.map +1 -0
  54. package/dist/abis/compound-v3/CometRewards.js +330 -0
  55. package/dist/abis/compound-v3/IrGetter.d.ts +24 -0
  56. package/dist/abis/compound-v3/IrGetter.d.ts.map +1 -0
  57. package/dist/abis/compound-v3/IrGetter.js +31 -0
  58. package/dist/abis/flashloan-united/flashAbi.d.ts +54 -0
  59. package/dist/abis/flashloan-united/flashAbi.d.ts.map +1 -0
  60. package/dist/abis/flashloan-united/flashAbi.js +72 -0
  61. package/dist/abis/init/Core.d.ts +523 -0
  62. package/dist/abis/init/Core.d.ts.map +1 -0
  63. package/dist/abis/init/Core.js +681 -0
  64. package/dist/abis/init/InitFlashAggregator.d.ts +624 -0
  65. package/dist/abis/init/InitFlashAggregator.d.ts.map +1 -0
  66. package/dist/abis/init/InitFlashAggregator.js +795 -0
  67. package/dist/abis/init/InitLens.d.ts +158 -0
  68. package/dist/abis/init/InitLens.d.ts.map +1 -0
  69. package/dist/abis/init/InitLens.js +203 -0
  70. package/dist/abis/init/PosManager.d.ts +802 -0
  71. package/dist/abis/init/PosManager.d.ts.map +1 -0
  72. package/dist/abis/init/PosManager.js +1055 -0
  73. package/dist/abis/lendle/IncentivesController.d.ts +404 -0
  74. package/dist/abis/lendle/IncentivesController.d.ts.map +1 -0
  75. package/dist/abis/lendle/IncentivesController.js +525 -0
  76. package/dist/abis/lendle/MultiFeeDistribution.d.ts +624 -0
  77. package/dist/abis/lendle/MultiFeeDistribution.d.ts.map +1 -0
  78. package/dist/abis/lendle/MultiFeeDistribution.js +820 -0
  79. package/dist/abis/meridian/PullRewardsIncentivesController.d.ts +74 -0
  80. package/dist/abis/meridian/PullRewardsIncentivesController.d.ts.map +1 -0
  81. package/dist/abis/meridian/PullRewardsIncentivesController.js +98 -0
  82. package/dist/abis/multicall/Multicall.d.ts +80 -0
  83. package/dist/abis/multicall/Multicall.d.ts.map +1 -0
  84. package/dist/abis/multicall/Multicall.js +101 -0
  85. package/dist/abis/oracle/AaveOracle.d.ts +40 -0
  86. package/dist/abis/oracle/AaveOracle.d.ts.map +1 -0
  87. package/dist/abis/oracle/AaveOracle.js +53 -0
  88. package/dist/abis/oracle/Api3Oracle.d.ts +48 -0
  89. package/dist/abis/oracle/Api3Oracle.d.ts.map +1 -0
  90. package/dist/abis/oracle/Api3Oracle.js +62 -0
  91. package/dist/abis/oracle/ChainLinkAggregator.d.ts +372 -0
  92. package/dist/abis/oracle/ChainLinkAggregator.d.ts.map +1 -0
  93. package/dist/abis/oracle/ChainLinkAggregator.js +480 -0
  94. package/dist/abis/oracle/RWADynamicOracle.d.ts +12 -0
  95. package/dist/abis/oracle/RWADynamicOracle.d.ts.map +1 -0
  96. package/dist/abis/oracle/RWADynamicOracle.js +15 -0
  97. package/dist/abis/oracle/UniswapV2Pair.d.ts +513 -0
  98. package/dist/abis/oracle/UniswapV2Pair.d.ts.map +1 -0
  99. package/dist/abis/oracle/UniswapV2Pair.js +659 -0
  100. package/dist/abis/uniswap/FeeOnTransferDetector.d.ts +102 -0
  101. package/dist/abis/uniswap/FeeOnTransferDetector.d.ts.map +1 -0
  102. package/dist/abis/uniswap/FeeOnTransferDetector.js +133 -0
  103. package/dist/abis/uniswap/UniswapV2Pair.d.ts +513 -0
  104. package/dist/abis/uniswap/UniswapV2Pair.d.ts.map +1 -0
  105. package/dist/abis/uniswap/UniswapV2Pair.js +659 -0
  106. package/dist/assets/index.d.ts +20 -0
  107. package/dist/assets/index.d.ts.map +1 -0
  108. package/dist/assets/index.js +54 -0
  109. package/dist/flash-liquidity/assets.d.ts +21 -0
  110. package/dist/flash-liquidity/assets.d.ts.map +1 -0
  111. package/dist/flash-liquidity/assets.js +45 -0
  112. package/dist/flash-liquidity/fetchLiquidity.d.ts +4 -0
  113. package/dist/flash-liquidity/fetchLiquidity.d.ts.map +1 -0
  114. package/dist/flash-liquidity/fetchLiquidity.js +235 -0
  115. package/dist/flash-liquidity/index.d.ts +2 -0
  116. package/dist/flash-liquidity/index.d.ts.map +1 -0
  117. package/dist/flash-liquidity/index.js +1 -0
  118. package/dist/flash-liquidity/types.d.ts +23 -0
  119. package/dist/flash-liquidity/types.d.ts.map +1 -0
  120. package/dist/flash-liquidity/types.js +8 -0
  121. package/dist/index.d.ts +8 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +6 -0
  124. package/dist/lending/aave-v2-type/misc.d.ts +14 -0
  125. package/dist/lending/aave-v2-type/misc.d.ts.map +1 -0
  126. package/dist/lending/aave-v2-type/misc.js +8 -0
  127. package/dist/lending/aave-v2-type/publicCallBuild.d.ts +7 -0
  128. package/dist/lending/aave-v2-type/publicCallBuild.d.ts.map +1 -0
  129. package/dist/lending/aave-v2-type/publicCallBuild.js +102 -0
  130. package/dist/lending/aave-v2-type/publicCallParse.d.ts +7 -0
  131. package/dist/lending/aave-v2-type/publicCallParse.d.ts.map +1 -0
  132. package/dist/lending/aave-v2-type/publicCallParse.js +254 -0
  133. package/dist/lending/aave-v2-type/types.d.ts +78 -0
  134. package/dist/lending/aave-v2-type/types.d.ts.map +1 -0
  135. package/dist/lending/aave-v2-type/types.js +46 -0
  136. package/dist/lending/aave-v3-type/publicCallBuild.d.ts +4 -0
  137. package/dist/lending/aave-v3-type/publicCallBuild.d.ts.map +1 -0
  138. package/dist/lending/aave-v3-type/publicCallBuild.js +123 -0
  139. package/dist/lending/aave-v3-type/publicCallParse.d.ts +8 -0
  140. package/dist/lending/aave-v3-type/publicCallParse.d.ts.map +1 -0
  141. package/dist/lending/aave-v3-type/publicCallParse.js +304 -0
  142. package/dist/lending/aave-v3-type/types.d.ts +149 -0
  143. package/dist/lending/aave-v3-type/types.d.ts.map +1 -0
  144. package/dist/lending/aave-v3-type/types.js +90 -0
  145. package/dist/lending/addresses/aave.d.ts +10 -0
  146. package/dist/lending/addresses/aave.d.ts.map +1 -0
  147. package/dist/lending/addresses/aave.js +10 -0
  148. package/dist/lending/addresses/aaveV2.d.ts +6 -0
  149. package/dist/lending/addresses/aaveV2.d.ts.map +1 -0
  150. package/dist/lending/addresses/aaveV2.js +6 -0
  151. package/dist/lending/addresses/aurelius.d.ts +12 -0
  152. package/dist/lending/addresses/aurelius.d.ts.map +1 -0
  153. package/dist/lending/addresses/aurelius.js +12 -0
  154. package/dist/lending/addresses/compoundV3.d.ts +10 -0
  155. package/dist/lending/addresses/compoundV3.d.ts.map +1 -0
  156. package/dist/lending/addresses/compoundV3.js +35 -0
  157. package/dist/lending/addresses/contracts.d.ts +5 -0
  158. package/dist/lending/addresses/contracts.d.ts.map +1 -0
  159. package/dist/lending/addresses/contracts.js +49 -0
  160. package/dist/lending/addresses/hana.d.ts +6 -0
  161. package/dist/lending/addresses/hana.d.ts.map +1 -0
  162. package/dist/lending/addresses/hana.js +6 -0
  163. package/dist/lending/addresses/index.d.ts +2 -0
  164. package/dist/lending/addresses/index.d.ts.map +1 -0
  165. package/dist/lending/addresses/index.js +1 -0
  166. package/dist/lending/addresses/init.d.ts +4 -0
  167. package/dist/lending/addresses/init.d.ts.map +1 -0
  168. package/dist/lending/addresses/init.js +33 -0
  169. package/dist/lending/addresses/lendle.d.ts +12 -0
  170. package/dist/lending/addresses/lendle.d.ts.map +1 -0
  171. package/dist/lending/addresses/lendle.js +12 -0
  172. package/dist/lending/addresses/meridian.d.ts +12 -0
  173. package/dist/lending/addresses/meridian.d.ts.map +1 -0
  174. package/dist/lending/addresses/meridian.js +12 -0
  175. package/dist/lending/addresses/takotako.d.ts +12 -0
  176. package/dist/lending/addresses/takotako.d.ts.map +1 -0
  177. package/dist/lending/addresses/takotako.js +12 -0
  178. package/dist/lending/compound-v3/publicCallBuild.d.ts +3 -0
  179. package/dist/lending/compound-v3/publicCallBuild.d.ts.map +1 -0
  180. package/dist/lending/compound-v3/publicCallBuild.js +63 -0
  181. package/dist/lending/compound-v3/publicCallParse.d.ts +7 -0
  182. package/dist/lending/compound-v3/publicCallParse.d.ts.map +1 -0
  183. package/dist/lending/compound-v3/publicCallParse.js +119 -0
  184. package/dist/lending/compound-v3/types.d.ts +30 -0
  185. package/dist/lending/compound-v3/types.d.ts.map +1 -0
  186. package/dist/lending/compound-v3/types.js +6 -0
  187. package/dist/lending/fetchLender.d.ts +8 -0
  188. package/dist/lending/fetchLender.d.ts.map +1 -0
  189. package/dist/lending/fetchLender.js +104 -0
  190. package/dist/lending/index.d.ts +3 -0
  191. package/dist/lending/index.d.ts.map +1 -0
  192. package/dist/lending/index.js +2 -0
  193. package/dist/lending/init/publicCallBuild.d.ts +7 -0
  194. package/dist/lending/init/publicCallBuild.d.ts.map +1 -0
  195. package/dist/lending/init/publicCallBuild.js +21 -0
  196. package/dist/lending/init/publicCallParse.d.ts +10 -0
  197. package/dist/lending/init/publicCallParse.d.ts.map +1 -0
  198. package/dist/lending/init/publicCallParse.js +75 -0
  199. package/dist/lending/init/types.d.ts +38 -0
  200. package/dist/lending/init/types.d.ts.map +1 -0
  201. package/dist/lending/init/types.js +6 -0
  202. package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts +4 -0
  203. package/dist/lending/user-data/aave-v2-type/userCallBuild.d.ts.map +1 -0
  204. package/dist/lending/user-data/aave-v2-type/userCallBuild.js +106 -0
  205. package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts +8 -0
  206. package/dist/lending/user-data/aave-v2-type/userCallParse.d.ts.map +1 -0
  207. package/dist/lending/user-data/aave-v2-type/userCallParse.js +225 -0
  208. package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts +4 -0
  209. package/dist/lending/user-data/aave-v3-type/userCallBuild.d.ts.map +1 -0
  210. package/dist/lending/user-data/aave-v3-type/userCallBuild.js +41 -0
  211. package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts +8 -0
  212. package/dist/lending/user-data/aave-v3-type/userCallParse.d.ts.map +1 -0
  213. package/dist/lending/user-data/aave-v3-type/userCallParse.js +76 -0
  214. package/dist/lending/user-data/abis.d.ts +8422 -0
  215. package/dist/lending/user-data/abis.d.ts.map +1 -0
  216. package/dist/lending/user-data/abis.js +46 -0
  217. package/dist/lending/user-data/compound-v3/addresses.d.ts +10 -0
  218. package/dist/lending/user-data/compound-v3/addresses.d.ts.map +1 -0
  219. package/dist/lending/user-data/compound-v3/addresses.js +32 -0
  220. package/dist/lending/user-data/compound-v3/index.d.ts +4 -0
  221. package/dist/lending/user-data/compound-v3/index.d.ts.map +1 -0
  222. package/dist/lending/user-data/compound-v3/index.js +3 -0
  223. package/dist/lending/user-data/compound-v3/userCallBuild.d.ts +4 -0
  224. package/dist/lending/user-data/compound-v3/userCallBuild.d.ts.map +1 -0
  225. package/dist/lending/user-data/compound-v3/userCallBuild.js +44 -0
  226. package/dist/lending/user-data/compound-v3/userCallParse.d.ts +8 -0
  227. package/dist/lending/user-data/compound-v3/userCallParse.d.ts.map +1 -0
  228. package/dist/lending/user-data/compound-v3/userCallParse.js +98 -0
  229. package/dist/lending/user-data/fetchUserData.d.ts +24 -0
  230. package/dist/lending/user-data/fetchUserData.d.ts.map +1 -0
  231. package/dist/lending/user-data/fetchUserData.js +76 -0
  232. package/dist/lending/user-data/index.d.ts +3 -0
  233. package/dist/lending/user-data/index.d.ts.map +1 -0
  234. package/dist/lending/user-data/index.js +2 -0
  235. package/dist/lending/user-data/init/userCallBuild.d.ts +8 -0
  236. package/dist/lending/user-data/init/userCallBuild.d.ts.map +1 -0
  237. package/dist/lending/user-data/init/userCallBuild.js +20 -0
  238. package/dist/lending/user-data/init/userCallParse.d.ts +8 -0
  239. package/dist/lending/user-data/init/userCallParse.d.ts.map +1 -0
  240. package/dist/lending/user-data/init/userCallParse.js +87 -0
  241. package/dist/lending/user-data/types.d.ts +218 -0
  242. package/dist/lending/user-data/types.d.ts.map +1 -0
  243. package/dist/lending/user-data/types.js +26 -0
  244. package/dist/lending/user-data/utils/createGeneralUserState.d.ts +45 -0
  245. package/dist/lending/user-data/utils/createGeneralUserState.d.ts.map +1 -0
  246. package/dist/lending/user-data/utils/createGeneralUserState.js +98 -0
  247. package/dist/lending/user-data/utils/createMultiAccountStyleUserState.d.ts +16 -0
  248. package/dist/lending/user-data/utils/createMultiAccountStyleUserState.d.ts.map +1 -0
  249. package/dist/lending/user-data/utils/createMultiAccountStyleUserState.js +96 -0
  250. package/dist/lending/user-data/utils/formatting/generalFormatters.d.ts +55 -0
  251. package/dist/lending/user-data/utils/formatting/generalFormatters.d.ts.map +1 -0
  252. package/dist/lending/user-data/utils/formatting/generalFormatters.js +109 -0
  253. package/dist/lending/user-data/utils/formatting/index.d.ts +2 -0
  254. package/dist/lending/user-data/utils/formatting/index.d.ts.map +1 -0
  255. package/dist/lending/user-data/utils/formatting/index.js +1 -0
  256. package/dist/lending/user-data/utils/index.d.ts +8 -0
  257. package/dist/lending/user-data/utils/index.d.ts.map +1 -0
  258. package/dist/lending/user-data/utils/index.js +17 -0
  259. package/dist/lending-pairs/computeLendingPairs.d.ts +30 -0
  260. package/dist/lending-pairs/computeLendingPairs.d.ts.map +1 -0
  261. package/dist/lending-pairs/computeLendingPairs.js +153 -0
  262. package/dist/lending-pairs/index.d.ts +2 -0
  263. package/dist/lending-pairs/index.d.ts.map +1 -0
  264. package/dist/lending-pairs/index.js +1 -0
  265. package/dist/prices/defillama/index.d.ts +3 -0
  266. package/dist/prices/defillama/index.d.ts.map +1 -0
  267. package/dist/prices/defillama/index.js +269 -0
  268. package/dist/prices/index.d.ts +3 -0
  269. package/dist/prices/index.d.ts.map +1 -0
  270. package/dist/prices/index.js +2 -0
  271. package/dist/prices/main-prices/addresses/aaveOracles.d.ts +279 -0
  272. package/dist/prices/main-prices/addresses/aaveOracles.d.ts.map +1 -0
  273. package/dist/prices/main-prices/addresses/aaveOracles.js +278 -0
  274. package/dist/prices/main-prices/addresses/api3.d.ts +6 -0
  275. package/dist/prices/main-prices/addresses/api3.d.ts.map +1 -0
  276. package/dist/prices/main-prices/addresses/api3.js +9 -0
  277. package/dist/prices/main-prices/addresses/chainlink.d.ts +740 -0
  278. package/dist/prices/main-prices/addresses/chainlink.d.ts.map +1 -0
  279. package/dist/prices/main-prices/addresses/chainlink.js +744 -0
  280. package/dist/prices/main-prices/fetchOracleData.d.ts +12 -0
  281. package/dist/prices/main-prices/fetchOracleData.d.ts.map +1 -0
  282. package/dist/prices/main-prices/fetchOracleData.js +308 -0
  283. package/dist/prices/main-prices/index.d.ts +2 -0
  284. package/dist/prices/main-prices/index.d.ts.map +1 -0
  285. package/dist/prices/main-prices/index.js +1 -0
  286. package/dist/types/apiReturnType.d.ts +74 -0
  287. package/dist/types/apiReturnType.d.ts.map +1 -0
  288. package/dist/types/apiReturnType.js +1 -0
  289. package/dist/types/index.d.ts +42 -0
  290. package/dist/types/index.d.ts.map +1 -0
  291. package/dist/types/index.js +10 -0
  292. package/dist/types/providers.d.ts +12 -0
  293. package/dist/types/providers.d.ts.map +1 -0
  294. package/dist/types/providers.js +1 -0
  295. package/dist/utils/constants.d.ts +30 -0
  296. package/dist/utils/constants.d.ts.map +1 -0
  297. package/dist/utils/constants.js +97 -0
  298. package/dist/utils/index.d.ts +19 -0
  299. package/dist/utils/index.d.ts.map +1 -0
  300. package/dist/utils/index.js +71 -0
  301. package/dist/utils/multicall.d.ts +5 -0
  302. package/dist/utils/multicall.d.ts.map +1 -0
  303. package/dist/utils/multicall.js +30 -0
  304. package/dist/utils/parsing.d.ts +14 -0
  305. package/dist/utils/parsing.d.ts.map +1 -0
  306. package/dist/utils/parsing.js +61 -0
  307. package/dist/yields/index.d.ts +21 -0
  308. package/dist/yields/index.d.ts.map +1 -0
  309. package/dist/yields/index.js +157 -0
  310. package/package.json +26 -0
  311. package/src/abis/aave/AToken.ts +686 -0
  312. package/src/abis/aave/AaveOracle.ts +53 -0
  313. package/src/abis/aave/AavePoolAndDataProvider.ts +2080 -0
  314. package/src/abis/aave/AavePoolV3.ts +1060 -0
  315. package/src/abis/aave/AavePoolV3Upgraded.ts +1474 -0
  316. package/src/abis/aave/AaveV3ProtocolDataProvider.ts +553 -0
  317. package/src/abis/aave/VariableDebtToken.ts +820 -0
  318. package/src/abis/aave-v2/ProtocolDataProvider.ts +312 -0
  319. package/src/abis/aave-v2/YLDR.ts +199 -0
  320. package/src/abis/aave-v3/AavePoolDataProviderLegacy.ts +459 -0
  321. package/src/abis/aave-v3/AavePoolLegacy.ts +1060 -0
  322. package/src/abis/aurelius/Rewarder.ts +118 -0
  323. package/src/abis/compound-v2/CompoundLens.ts +851 -0
  324. package/src/abis/compound-v2/Comptroller.ts +2104 -0
  325. package/src/abis/compound-v3/Comet.ts +1829 -0
  326. package/src/abis/compound-v3/CometExt.ts +536 -0
  327. package/src/abis/compound-v3/CometLens.ts +194 -0
  328. package/src/abis/compound-v3/CometRewards.ts +330 -0
  329. package/src/abis/compound-v3/IrGetter.ts +31 -0
  330. package/src/abis/flashloan-united/flashAbi.ts +72 -0
  331. package/src/abis/init/Core.ts +681 -0
  332. package/src/abis/init/InitFlashAggregator.ts +795 -0
  333. package/src/abis/init/InitLens.ts +203 -0
  334. package/src/abis/init/PosManager.ts +1055 -0
  335. package/src/abis/lendle/IncentivesController.ts +525 -0
  336. package/src/abis/lendle/MultiFeeDistribution.ts +820 -0
  337. package/src/abis/meridian/PullRewardsIncentivesController.ts +98 -0
  338. package/src/abis/multicall/Multicall.ts +101 -0
  339. package/src/abis/oracle/AaveOracle.ts +53 -0
  340. package/src/abis/oracle/Api3Oracle.ts +62 -0
  341. package/src/abis/oracle/ChainLinkAggregator.ts +480 -0
  342. package/src/abis/oracle/RWADynamicOracle.ts +15 -0
  343. package/src/abis/oracle/UniswapV2Pair.ts +659 -0
  344. package/src/abis/uniswap/FeeOnTransferDetector.ts +133 -0
  345. package/src/abis/uniswap/UniswapV2Pair.ts +659 -0
  346. package/src/assets/index.ts +82 -0
  347. package/src/flash-liquidity/assets.ts +61 -0
  348. package/src/flash-liquidity/fetchLiquidity.ts +300 -0
  349. package/src/flash-liquidity/index.ts +1 -0
  350. package/src/flash-liquidity/types.ts +20 -0
  351. package/src/index.ts +7 -0
  352. package/src/lending/aave-v2-type/misc.ts +9 -0
  353. package/src/lending/aave-v2-type/publicCallBuild.ts +105 -0
  354. package/src/lending/aave-v2-type/publicCallParse.ts +300 -0
  355. package/src/lending/aave-v2-type/types.ts +98 -0
  356. package/src/lending/aave-v3-type/publicCallBuild.ts +148 -0
  357. package/src/lending/aave-v3-type/publicCallParse.ts +373 -0
  358. package/src/lending/aave-v3-type/types.ts +181 -0
  359. package/src/lending/addresses/aave.ts +12 -0
  360. package/src/lending/addresses/aaveV2.ts +8 -0
  361. package/src/lending/addresses/aurelius.ts +13 -0
  362. package/src/lending/addresses/compoundV3.ts +42 -0
  363. package/src/lending/addresses/contracts.ts +54 -0
  364. package/src/lending/addresses/hana.ts +7 -0
  365. package/src/lending/addresses/index.ts +1 -0
  366. package/src/lending/addresses/init.ts +37 -0
  367. package/src/lending/addresses/lendle.ts +13 -0
  368. package/src/lending/addresses/meridian.ts +13 -0
  369. package/src/lending/addresses/takotako.ts +14 -0
  370. package/src/lending/compound-v3/publicCallBuild.ts +74 -0
  371. package/src/lending/compound-v3/publicCallParse.ts +143 -0
  372. package/src/lending/compound-v3/types.ts +43 -0
  373. package/src/lending/fetchLender.ts +138 -0
  374. package/src/lending/index.ts +2 -0
  375. package/src/lending/init/publicCallBuild.ts +29 -0
  376. package/src/lending/init/publicCallParse.ts +90 -0
  377. package/src/lending/init/types.ts +50 -0
  378. package/src/lending/user-data/aave-v2-type/userCallBuild.ts +142 -0
  379. package/src/lending/user-data/aave-v2-type/userCallParse.ts +328 -0
  380. package/src/lending/user-data/aave-v3-type/userCallBuild.ts +58 -0
  381. package/src/lending/user-data/aave-v3-type/userCallParse.ts +115 -0
  382. package/src/lending/user-data/abis.ts +45 -0
  383. package/src/lending/user-data/compound-v3/addresses.ts +40 -0
  384. package/src/lending/user-data/compound-v3/index.ts +3 -0
  385. package/src/lending/user-data/compound-v3/userCallBuild.ts +53 -0
  386. package/src/lending/user-data/compound-v3/userCallParse.ts +123 -0
  387. package/src/lending/user-data/fetchUserData.ts +121 -0
  388. package/src/lending/user-data/index.ts +2 -0
  389. package/src/lending/user-data/init/userCallBuild.ts +26 -0
  390. package/src/lending/user-data/init/userCallParse.ts +115 -0
  391. package/src/lending/user-data/types.ts +280 -0
  392. package/src/lending/user-data/utils/createGeneralUserState.ts +118 -0
  393. package/src/lending/user-data/utils/createMultiAccountStyleUserState.ts +113 -0
  394. package/src/lending/user-data/utils/formatting/generalFormatters.ts +121 -0
  395. package/src/lending/user-data/utils/formatting/index.ts +1 -0
  396. package/src/lending/user-data/utils/index.ts +19 -0
  397. package/src/lending-pairs/computeLendingPairs.ts +213 -0
  398. package/src/lending-pairs/index.ts +1 -0
  399. package/src/prices/defillama/index.ts +306 -0
  400. package/src/prices/index.ts +2 -0
  401. package/src/prices/main-prices/addresses/aaveOracles.ts +279 -0
  402. package/src/prices/main-prices/addresses/api3.ts +10 -0
  403. package/src/prices/main-prices/addresses/chainlink.ts +750 -0
  404. package/src/prices/main-prices/fetchOracleData.ts +406 -0
  405. package/src/prices/main-prices/index.ts +1 -0
  406. package/src/types/apiReturnType.ts +80 -0
  407. package/src/types/index.ts +38 -0
  408. package/src/types/providers.ts +26 -0
  409. package/src/utils/constants.ts +100 -0
  410. package/src/utils/index.ts +87 -0
  411. package/src/utils/multicall.ts +53 -0
  412. package/src/utils/parsing.ts +75 -0
  413. package/src/yields/index.ts +198 -0
  414. package/test/index.test.ts +104 -0
  415. package/test/lenderData.test.ts +13718 -0
  416. package/test/mainPrices.test.ts +35 -0
  417. package/test/userdata.test.ts +200 -0
  418. package/tsconfig.json +28 -0
@@ -0,0 +1,280 @@
1
+ import { Lender } from "@1delta/asset-registry"
2
+ import { BaseYields, RewardsMap } from "../aave-v3-type/types"
3
+
4
+ export type SerializedBigNumber = string
5
+ export type SerializedNumber = string
6
+
7
+ export interface LenderUserQuery {
8
+ lender: Lender
9
+ account: string
10
+ }
11
+
12
+ export interface AllowanceData {
13
+ allowanceWithdrawal: string
14
+ allowanceBorrowingVariable: string
15
+ allowanceBorrowingStable: string
16
+ }
17
+
18
+ export interface UserLendingPosition extends AllowanceData {
19
+ // token amounts
20
+ deposits: number
21
+ debt: number
22
+ debtStable: number
23
+ // usd amounts
24
+ depositsUSD: number
25
+ debtUSD: number
26
+ debtStableUSD: number
27
+
28
+ collateralActive: boolean
29
+ claimableRewards: number
30
+ }
31
+
32
+ export type UserRewardEntry = { [asset: string]: { totalRewards: number, claimableRewards: number } }
33
+
34
+ export interface LenderUserResponse {
35
+ chainId: string
36
+ account: string
37
+ lendingPositions: {
38
+ [lender: string]: {
39
+ [tokenSymbol: string]: UserLendingPosition
40
+ }
41
+ }
42
+ rewards: UserRewardEntry
43
+ }
44
+
45
+ // Aave V2 specific enums
46
+ export enum AaveV2TypeGetUserReserveData {
47
+ currentATokenBalance = 0,
48
+ currentStableDebt,
49
+ currentVariableDebt,
50
+ principalStableDebt,
51
+ scaledVariableDebt,
52
+ stableBorrowRate,
53
+ liquidityRate,
54
+ stableRateLastUpdated,
55
+ usageAsCollateralEnabled,
56
+ }
57
+
58
+ // Aave V3 specific enums
59
+ export enum AaveV3TypeGetUserReserveData {
60
+ currentATokenBalance = 0,
61
+ currentStableDebt,
62
+ currentVariableDebt,
63
+ principalStableDebt,
64
+ scaledVariableDebt,
65
+ stableBorrowRate,
66
+ liquidityRate,
67
+ stableRateLastUpdated,
68
+ usageAsCollateralEnabled,
69
+ }
70
+
71
+ ///////
72
+ export interface AaveV2UserReserveResponse {
73
+ chainId: string
74
+ account: string
75
+ lendingPositions: {
76
+ [id: string]: {
77
+ [tokenSymbol: string]: AavelendingPositions
78
+ }
79
+ },
80
+ rewards: UserRewardEntry
81
+ }
82
+
83
+ interface AavelendingPositions extends AllowanceData {
84
+ // token amounts
85
+ deposits: number
86
+ debt: number
87
+ debtStable: number
88
+ // usd amounts
89
+ depositsUSD: number
90
+ debtUSD: number
91
+ debtStableUSD: number
92
+
93
+ collateralActive: boolean
94
+ claimableRewards: number
95
+ }
96
+
97
+ export interface AaveV3UserReserveResponse {
98
+ chainId: string
99
+ lendingPositions: {
100
+ [id: string]: {
101
+ [tokenSymbol: string]: AavelendingPositions
102
+ }
103
+ }
104
+ userEMode: number
105
+ rewards?: any
106
+ account: string
107
+ }
108
+
109
+ export interface CompoundV3UserReserveResponse {
110
+ lendingPositions: {
111
+ [id: string]: {
112
+ [tokenSymbol: string]: {
113
+ // tokens
114
+ deposits: number
115
+ debt: number
116
+ debtStable: number
117
+ // dollars
118
+ depositsUSD: number
119
+ debtUSD: number
120
+ debtStableUSD: number
121
+
122
+ collateralActive: boolean
123
+ // user collateral raw (to withdraw max)
124
+ depositsRaw: SerializedBigNumber;
125
+ isAllowed: boolean
126
+ }
127
+ }
128
+ },
129
+ chainId: string
130
+ baseAsset: string
131
+ rewards: UserRewardEntry
132
+ account: string
133
+ }
134
+
135
+ export interface AaveV3Public extends LenderPublicBase {
136
+
137
+ lastUpdateTimestamp?: number
138
+
139
+ // flags of reserve state
140
+ usageAsCollateralEnabled?: boolean
141
+ hasStable?: boolean
142
+ isActive?: boolean
143
+ isFrozen?: boolean
144
+
145
+ // emode info
146
+ // each eMode category has a custom ltv and liquidation threshold
147
+ eMode?: EModeData
148
+
149
+ // limits
150
+ debtCeiling: number
151
+ supplyCap: number
152
+ borrowCap: number
153
+
154
+ config: { [modeId: number]: LenderConfigData }
155
+ }
156
+
157
+ /**
158
+ * Interface shared by all lenders
159
+ */
160
+ export interface LenderPublicBase extends LenderYields, LenderTotalAmounts {
161
+
162
+ // borrow enabled flag
163
+ borrowingEnabled: boolean
164
+
165
+ config: LenderConfigMap
166
+ }
167
+
168
+ export interface LenderYields extends BaseYields {
169
+ // staking
170
+ stakingYield: number
171
+
172
+ // rewards
173
+ rewards?: RewardsMap
174
+ }
175
+
176
+ export interface LenderTotalAmounts {
177
+ // debt totals
178
+ totalDebt: number
179
+ totalDebtStable: number
180
+ // deposit total
181
+ totalDeposits: number
182
+ // liquidity
183
+ totalLiquidity: number
184
+
185
+ /** USD values */
186
+
187
+ // debt totals
188
+ totalDebtUSD: number
189
+ totalDebtStableUSD: number
190
+ // deposit total
191
+ totalDepositsUSD: number
192
+ // liquidity
193
+ totalLiquidityUSD: number
194
+ }
195
+
196
+ export interface LenderConfigMap {
197
+ [modeId: number]: LenderConfigData
198
+ }
199
+
200
+ /**
201
+ * The Mode-specific configuration for a lender asset
202
+ */
203
+ export interface LenderConfigData {
204
+ category: number;
205
+ borrowCollateralFactor: number;
206
+ collateralFactor: number;
207
+ borrowFactor: number
208
+ }
209
+
210
+ export interface ModeBase {
211
+ category: number
212
+ label: string
213
+ }
214
+
215
+ export interface EModeData extends ModeBase {
216
+ borrowCollateralFactor: number;
217
+ collateralFactor: number;
218
+ priceSource: string;
219
+ }
220
+
221
+ export interface AaveV2Public extends LenderPublicBase {
222
+ // reserve market data
223
+ lastUpdateTimestamp?: number
224
+
225
+ // reserve config
226
+ decimals?: number
227
+ reserveFactor?: SerializedBigNumber
228
+ usageAsCollateralEnabled?: boolean
229
+ hasStable?: boolean
230
+
231
+ // frozen
232
+ isActive?: boolean
233
+ isFrozen?: boolean
234
+ }
235
+
236
+ export interface CompoundV3Public extends LenderPublicBase {
237
+ supplyCap: number;
238
+ utilization: number;
239
+ }
240
+
241
+ export interface UserApr {
242
+ apr: number
243
+ borrowApr: number
244
+ depositApr: number
245
+ }
246
+
247
+ export interface InitUserReserveResponse {
248
+ chainId: string
249
+ lendingPositions: {
250
+ // positionId is the NFT id
251
+ [posId: string]: {
252
+ mode: number;
253
+ positions: {
254
+ [tokenSymbol: string]: {
255
+ deposits: number
256
+ debt: number,
257
+ depositsUSD: number
258
+ debtUSD: number,
259
+ debtStable: 0,
260
+ debtStableUSD: 0,
261
+ collateralActive: boolean
262
+ isAllowed: boolean
263
+ }
264
+ }
265
+ }
266
+ }
267
+ assets: string[]
268
+ account: string
269
+ }
270
+
271
+ export interface InitPublic extends LenderPublicBase {
272
+ // flags of reserve state
273
+ usageAsCollateralEnabled?: boolean;
274
+
275
+ // limits
276
+ debtCeiling: number;
277
+ supplyCap: number;
278
+ borrowCap: number;
279
+
280
+ }
@@ -0,0 +1,118 @@
1
+ import { divideAccrualsToAprs } from "."
2
+ import { AaveV2Public, AaveV2UserReserveResponse, AaveV3Public, AaveV3UserReserveResponse, CompoundV3Public, CompoundV3UserReserveResponse } from "../types"
3
+ import { safeDivide } from "./formatting"
4
+
5
+ type LenderUserData = AaveV3UserReserveResponse | AaveV2UserReserveResponse | CompoundV3UserReserveResponse
6
+ type LenderState = AaveV3Public | AaveV2Public | CompoundV3Public
7
+
8
+ export function createBaseTypeUserState(
9
+ payload: LenderUserData,
10
+ lenderData: { [a: string]: LenderState },
11
+ totalDeposits24h: number = 0,
12
+ totalDebt24h: number = 0
13
+ ) {
14
+ let assetKeys = Object.keys(payload.lendingPositions["0"] ?? {})
15
+ const { chainId, account } = payload
16
+
17
+ const mode = Number((payload as any).userEMode ?? 0)
18
+
19
+ // organic yields
20
+ let depositInterest = 0
21
+ let borrowInterest = 0
22
+ // rewards
23
+ let rewardDepositAccrual = 0
24
+ let rewardBorrowAccrual = 0
25
+ // staking
26
+ let stakingDepositAccrual = 0
27
+ let stakingBorrowAccrual = 0
28
+ // amountrs
29
+ let deposits = 0
30
+ let debt = 0
31
+ let collateral = 0
32
+ let borrowDiscountedCollateral = 0
33
+
34
+ let rewardsPerAsset: any = {}
35
+ // main user data
36
+ for (let i = 0; i < assetKeys.length; i++) {
37
+ const asset = assetKeys[i]
38
+ if (!lenderData?.[asset]) continue;
39
+ const { depositsUSD, debtStableUSD, debtUSD, collateralActive } = payload.lendingPositions["0"][asset]
40
+ const {
41
+ depositRate, stakingYield, variableBorrowRate, stableBorrowRate,
42
+ rewards
43
+ } = lenderData[asset]
44
+
45
+ // amounts
46
+ deposits += depositsUSD
47
+ debt += debtStableUSD
48
+ debt += debtUSD
49
+
50
+ // rewards
51
+ Object.entries(rewards ?? {}).forEach(([key, rewardData]: [string, any]) => {
52
+ rewardDepositAccrual += rewardData.depositRate * depositsUSD
53
+ rewardBorrowAccrual += rewardData.variableBorrowRate * debtUSD + (rewardData.stableBorrowRate ?? 0) * debtStableUSD
54
+
55
+ // totals
56
+ const rewDepo = rewardData.depositRate * depositsUSD
57
+ const rewDebt = rewardData.variableBorrowRate * debtUSD + (rewardData.stableBorrowRate ?? 0) * (debtStableUSD ?? 0)
58
+
59
+ if (!rewardsPerAsset[key]) rewardsPerAsset[key] = { depositApr: 0, borrowApr: 0 }
60
+ if (rewDepo > 0) rewardsPerAsset[key].depositApr += rewDepo
61
+ if (rewDebt > 0) rewardsPerAsset[key].borrowApr += rewDebt
62
+ })
63
+
64
+ // staking
65
+ stakingDepositAccrual += (stakingYield ?? 0) * depositsUSD
66
+ stakingBorrowAccrual += (stakingYield ?? 0) * (debtStableUSD + debtUSD)
67
+ if (collateralActive) {
68
+ // risk adjusted
69
+ collateral += (lenderData[asset].config[mode]?.collateralFactor ?? 1) * depositsUSD
70
+ borrowDiscountedCollateral += (lenderData[asset].config[mode]?.borrowCollateralFactor ?? 1) * depositsUSD
71
+ }
72
+ // IRs
73
+ depositInterest += depositRate * depositsUSD
74
+ borrowInterest += debtStableUSD * stableBorrowRate + debtUSD * variableBorrowRate
75
+
76
+ }
77
+ const nav = deposits - debt
78
+ // aggregated balance data
79
+ const balanceData = {
80
+ "0": {
81
+ borrowDiscountedCollateral,
82
+ collateral,
83
+ deposits,
84
+ debt,
85
+ adjustedDebt: debt,
86
+ nav,
87
+ deposits24h: totalDeposits24h,
88
+ debt24h: totalDebt24h,
89
+ nav24h: totalDeposits24h - totalDebt24h,
90
+ ...(payload.rewards ? { rewards: payload.rewards } : {})
91
+ }
92
+ }
93
+
94
+ // aggregated apr data
95
+ const aprData = {
96
+ "0": {
97
+ apr: safeDivide(depositInterest - borrowInterest, nav),
98
+ borrowApr: safeDivide(borrowInterest, debt),
99
+ depositApr: safeDivide(depositInterest, deposits),
100
+ rewards: divideAccrualsToAprs(rewardsPerAsset, nav, deposits, debt),
101
+ rewardApr: safeDivide(rewardDepositAccrual + rewardBorrowAccrual, nav),
102
+ rewardDepositApr: safeDivide(rewardDepositAccrual, deposits),
103
+ rewardBorrowApr: safeDivide(rewardBorrowAccrual, debt),
104
+ stakingApr: safeDivide(stakingDepositAccrual - stakingBorrowAccrual, nav),
105
+ stakingDepositApr: safeDivide(stakingDepositAccrual, deposits),
106
+ stakingBorrowApr: safeDivide(stakingBorrowAccrual, debt),
107
+ }
108
+ }
109
+ const userConfigs = { "0": { selectedMode: mode, id: account } }
110
+
111
+ return {
112
+ account,
113
+ chainId,
114
+ balanceData,
115
+ aprData,
116
+ userConfigs,
117
+ }
118
+ }
@@ -0,0 +1,113 @@
1
+ import { LENDER_MODE_NO_MODE } from "../../../assets"
2
+ import { InitPublic, InitUserReserveResponse } from "../types"
3
+ import { safeDivide } from "./formatting"
4
+
5
+ export function createMultiAccountTypeUserState(
6
+ payload: InitUserReserveResponse,
7
+ lenderData: { [a: string]: InitPublic },
8
+ histData: {
9
+ [a: string]: {
10
+ totalDebt24h: number,
11
+ totalDeposits24h: number
12
+ }
13
+ }
14
+ ) {
15
+ const positionKeys = Object.keys(payload.lendingPositions ?? {})
16
+ let assetKeys = payload.assets
17
+ const { chainId, account } = payload
18
+
19
+ let userConfigs: any = {}
20
+ let balanceData: any = {}
21
+ let aprData: any = {}
22
+ // main user data
23
+ for (let j = 0; j < positionKeys.length; j++) {
24
+ const posId = positionKeys[j]
25
+ const position = payload.lendingPositions[posId]
26
+ const { mode: posMode } = position
27
+ // position mode can be undefined
28
+ // in this case we default to no mode
29
+ const mode = posMode ?? LENDER_MODE_NO_MODE
30
+ userConfigs[posId] = {
31
+ id: posId,
32
+ selectedMode: mode,
33
+ }
34
+ // organic yields
35
+ let depositInterest = 0
36
+ let borrowInterest = 0
37
+ // rewards
38
+ let rewardDepositAccrual = 0
39
+ let rewardBorrowAccrual = 0
40
+ // staking
41
+ let stakingDepositAccrual = 0
42
+ let stakingBorrowAccrual = 0
43
+ // amountrs
44
+ let deposits = 0
45
+ let debt = 0
46
+ let collateral = 0
47
+ let borrowDiscountedCollateral = 0
48
+ let adjustedDebt = 0
49
+ for (let i = 0; i < assetKeys.length; i++) {
50
+ const asset = assetKeys[i]
51
+ const { depositsUSD, debtUSD } = payload.lendingPositions[posId].positions[asset]
52
+ if (!lenderData?.[asset]) continue;
53
+ const { depositRate, stakingYield, variableBorrowRate, rewards } = lenderData[asset]
54
+ // amounts
55
+ deposits += depositsUSD
56
+ debt += debtUSD
57
+ // rewards
58
+ Object.entries(rewards ?? {}).map(([key, rewardData]) => {
59
+ rewardDepositAccrual += rewardData.depositRate * depositsUSD
60
+ rewardBorrowAccrual += rewardData.variableBorrowRate * debtUSD + rewardData.stableBorrowRate * debtUSD
61
+ })
62
+ // staking
63
+ stakingDepositAccrual += (stakingYield ?? 0) * depositsUSD
64
+ stakingBorrowAccrual += (stakingYield ?? 0) * debtUSD
65
+
66
+ const config = lenderData[asset].config[mode]
67
+
68
+ // risk adjusted
69
+ collateral += (config?.collateralFactor ?? 1) * depositsUSD
70
+ borrowDiscountedCollateral += (config?.borrowCollateralFactor ?? 1) * depositsUSD
71
+ adjustedDebt += (config?.borrowFactor ?? 1) * debtUSD
72
+
73
+ // IRs
74
+ depositInterest += depositRate * depositsUSD
75
+ borrowInterest += debtUSD * variableBorrowRate
76
+
77
+ }
78
+ const nav = deposits - debt
79
+
80
+ // aggregated balance data
81
+ balanceData[posId] = {
82
+ borrowDiscountedCollateral,
83
+ collateral,
84
+ deposits,
85
+ debt,
86
+ adjustedDebt,
87
+ nav,
88
+ deposits24h: histData[posId]?.totalDeposits24h,
89
+ debt24h: histData[posId]?.totalDebt24h,
90
+ nav24h: histData[posId]?.totalDeposits24h - histData[posId]?.totalDebt24h,
91
+ }
92
+
93
+ // aggregated apr data
94
+ aprData[posId] = {
95
+ apr: safeDivide(depositInterest - borrowInterest, nav),
96
+ borrowApr: safeDivide(borrowInterest, debt),
97
+ depositApr: safeDivide(depositInterest, deposits),
98
+ rewardApr: safeDivide(rewardDepositAccrual + rewardBorrowAccrual, nav),
99
+ rewardDepositApr: safeDivide(rewardDepositAccrual, deposits),
100
+ rewardBorrowApr: safeDivide(rewardBorrowAccrual, debt),
101
+ stakingApr: safeDivide(stakingDepositAccrual - stakingBorrowAccrual, nav),
102
+ stakingDepositApr: safeDivide(stakingDepositAccrual, deposits),
103
+ stakingBorrowApr: safeDivide(stakingBorrowAccrual, debt),
104
+ }
105
+ }
106
+ return {
107
+ account,
108
+ chainId,
109
+ balanceData,
110
+ aprData,
111
+ userConfigs
112
+ }
113
+ }
@@ -0,0 +1,121 @@
1
+ import _ from 'lodash'
2
+ import { LenderConfigMap } from '../../types'
3
+
4
+ export const safeDivide = (a: number, b: number) => {
5
+ return a === 0 || isNaN(a) ? 0 : b !== 0 ? a / b : Infinity
6
+ }
7
+
8
+ export function capitalizeFirstLetter(data: string) {
9
+ if (!data) return ''
10
+ return data.charAt(0).toUpperCase() + data.slice(1)
11
+ }
12
+
13
+ /**
14
+ * Formats e.g. 0.04 to 4%
15
+ * @param n ratio
16
+ * @param decs decimals to show
17
+ * @returns percent as string
18
+ */
19
+ export const formatRatioToPercent = (n: number, decs: number) => {
20
+ return `${n >= 0 ? '+' : ''}${roundNumber(n * 100, decs)}%`
21
+ }
22
+
23
+ /**
24
+ * Formats e.g. 0.04 to 4%, adds a + if positive
25
+ * @param n ratio
26
+ * @param decs decimals to show
27
+ * @returns percent as string
28
+ */
29
+ export const formatSignedRatioToPercent = (n: number, decs: number) => {
30
+ if (n > 1e7) return '>100K%' // we ceil percentages at 100k and abbreviate
31
+ return `${n > 0 ? '+' : ''}${roundNumber(n * 100, decs)}%` // we assume no lower values that -100%
32
+ }
33
+
34
+ export const formatSignedRatioToPercentSign = (n: number, decs: number, skipSign = false) => {
35
+ if (n > 1e7) return '>100K%' // we ceil percentages at 100k and abbreviate
36
+ // Skip the sign when icons are used
37
+ return `${skipSign ? '' : n > 0 ? '+' : ''}${roundNumber(Math.abs(n * 100), decs)}%`
38
+ }
39
+
40
+ /**
41
+ * Formats e.g. 4 to 4%
42
+ * @param n percent number
43
+ * @param decs decimals to show
44
+ * @returns percent as string
45
+ */
46
+ export const formatNumberToPercent = (n: number | undefined, decs = 2) => {
47
+ if (!n) return '0%'
48
+ if (isNaN(n)) return ''
49
+ return `${roundNumber(Number(n ?? 0), decs)}%`
50
+ }
51
+
52
+ export const formatPercentagePoints = (n: number, decs: number) => {
53
+ return `${roundNumber(n * 100, decs)}pp`
54
+ }
55
+
56
+ export const formatNumber = (n: number, decs: number) => {
57
+ if (!n) return '0'
58
+ if (isNaN(n)) return ''
59
+ return roundNumber(n, decs).toLocaleString()
60
+ }
61
+
62
+ /**
63
+ * Round using lodash
64
+ * @param n number to round
65
+ * @param decs decimals
66
+ * @returns number
67
+ */
68
+ export const roundNumber = (n: number, decs: number) => {
69
+ return _.round(n, decs)
70
+ }
71
+
72
+ /**
73
+ * Converts a colateral factor e.g. 0.8 to 1/(1-0.8) = 5
74
+ * @param n amount
75
+ * @param decs decimals to show
76
+ * @returns leverage as string
77
+ */
78
+ export const convertCollateralFactorToLeverage = (n: number, decs: number): number => {
79
+ return roundNumber(1 / (1 - n), decs)
80
+ }
81
+
82
+ export const parseToTimes = (n: number) => `${n}×`
83
+
84
+ export const parseToTimesPrefix = (n: number) => `×${n}`
85
+
86
+ export const parseLeverage = (cf: number, decs = 2) => parseToTimes(convertCollateralFactorToLeverage(cf, decs))
87
+
88
+ export const parseLeverageRange = (config: LenderConfigMap) => {
89
+ const levs = _.uniq(
90
+ Object.values(config ?? {}).map((cfg) => convertCollateralFactorToLeverage(cfg.borrowCollateralFactor, 2)),
91
+ )
92
+ if (!levs) return ''
93
+ if (levs.length === 1) return parseToTimes(levs[0])
94
+ return `${_.min(levs)}-${parseToTimes(Number(_.max(levs)))}`
95
+ }
96
+
97
+ /**
98
+ * Get apr from intinsic interest and reward
99
+ * @param apr apr number
100
+ * @param reward reward [per year] number
101
+ * @returns number, validated for NaN
102
+ */
103
+ export const getApr = (apr: number, reward: number, staking: number) => {
104
+ const aprClean = !isNaN(apr) ? apr : 0
105
+ const rewardClean = !isNaN(reward) ? reward : 0
106
+ const stakingClean = !isNaN(staking) ? staking : 0
107
+ if (aprClean + rewardClean + stakingClean < 0.01 && aprClean + rewardClean + stakingClean > -0.01) return '-'
108
+ return `${(aprClean + rewardClean + stakingClean).toFixed(2)}%`
109
+ }
110
+
111
+ // Converters from apy to apr and reversed
112
+
113
+ const SECONDS_PER_YEAR = 31536000
114
+
115
+ export const aprToApy = (apr: number) => {
116
+ return (1 + apr / SECONDS_PER_YEAR) ** SECONDS_PER_YEAR - 1
117
+ }
118
+
119
+ export const apyToApr = (apy: number) => {
120
+ return ((apy + 1) ** (1 / SECONDS_PER_YEAR) - 1) * SECONDS_PER_YEAR
121
+ }
@@ -0,0 +1 @@
1
+ export * from "./generalFormatters"
@@ -0,0 +1,19 @@
1
+ import { UserApr } from "../types"
2
+ import { safeDivide } from "./formatting"
3
+
4
+ export * from "./createGeneralUserState"
5
+ export * from "./formatting"
6
+ export * from "./createMultiAccountStyleUserState"
7
+
8
+ export function divideAccrualsToAprs(aprs: { [assets: string]: UserApr }, nav: number, deposits: number, debt: number) {
9
+ if (nav === 0) return {}
10
+ let d: any = {}
11
+ Object.entries(aprs).map(([k, data]) => {
12
+ d[k] = {
13
+ apr: safeDivide(data.borrowApr + data.depositApr, nav),
14
+ borrowApr: safeDivide(data.borrowApr, debt),
15
+ depositApr: safeDivide(data.depositApr, deposits),
16
+ }
17
+ })
18
+ return d
19
+ }