impermax-sdk 1.2.112 → 2.0.0

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 (357) hide show
  1. package/lib/abis/ImpermaxABI.d.ts +2 -2
  2. package/lib/abis/ImpermaxABI.js +3 -3
  3. package/lib/abis/contracts/ClaimAggregator.json +2015 -2015
  4. package/lib/abis/contracts/IAllowanceTransfer.json +3772 -0
  5. package/lib/abis/contracts/IBorrowable.json +13207 -13207
  6. package/lib/abis/contracts/IClaimable.json +406 -406
  7. package/lib/abis/contracts/ICollateral.json +9052 -9052
  8. package/lib/abis/contracts/IERC20.json +2376 -2376
  9. package/lib/abis/contracts/IERC721.json +3515 -0
  10. package/lib/abis/contracts/IFactory.json +3660 -3660
  11. package/lib/abis/contracts/IFarmingPool.json +3584 -3584
  12. package/lib/abis/contracts/ILendingVaultV1.json +8358 -8358
  13. package/lib/abis/contracts/IMerkleDistributor.json +1134 -1134
  14. package/lib/abis/contracts/IRouter02.json +7283 -7283
  15. package/lib/abis/contracts/ISimpleUniswapOracle.json +1469 -1469
  16. package/lib/abis/contracts/IStakedLPToken.json +7309 -7309
  17. package/lib/abis/contracts/IStakingRewards.json +1036 -1036
  18. package/lib/abis/contracts/ITokenizedUniswapV2Position.json +4167 -0
  19. package/lib/abis/contracts/ITokenizedUniswapV3Position.json +5539 -0
  20. package/lib/abis/contracts/IUniswapV2Factory.json +1690 -1690
  21. package/lib/abis/contracts/IUniswapV2Pair.json +6761 -6761
  22. package/lib/abis/contracts/IUniswapV3Pool.json +6606 -0
  23. package/lib/abis/contracts/ImpermaxChef.json +20945 -20945
  24. package/lib/abis/contracts/ImpermaxConfigManager.json +31595 -31595
  25. package/lib/abis/contracts/ImpermaxV3Borrowable.json +22131 -0
  26. package/lib/abis/contracts/ImpermaxV3Collateral.json +22988 -0
  27. package/lib/abis/contracts/ImpermaxV3Factory.json +17645 -0
  28. package/lib/abis/contracts/ImpermaxV3UniV2Router01.json +32488 -0
  29. package/lib/abis/contracts/ImpermaxV3UniV3Router01.json +37742 -0
  30. package/lib/abis/contracts/LendingVaultWatcher01.json +4076 -4076
  31. package/lib/abis/contracts/PoolTokenRouter01.json +9058 -0
  32. package/lib/config/amms.d.ts +102 -104
  33. package/lib/config/amms.js +433 -436
  34. package/lib/config/chainId.d.ts +2 -0
  35. package/lib/config/chainId.js +26 -0
  36. package/lib/config/contracts/claim-aggregators.d.ts +2 -2
  37. package/lib/config/contracts/claim-aggregators.js +26 -26
  38. package/lib/config/contracts/impermax-chef.d.ts +2 -2
  39. package/lib/config/contracts/impermax-chef.js +27 -27
  40. package/lib/config/contracts/impermax-config-manager.d.ts +2 -2
  41. package/lib/config/contracts/impermax-config-manager.js +26 -26
  42. package/lib/config/contracts/impermax-factories.d.ts +4 -4
  43. package/lib/config/contracts/impermax-factories.js +87 -87
  44. package/lib/config/contracts/imxes.d.ts +2 -2
  45. package/lib/config/contracts/imxes.js +26 -26
  46. package/lib/config/contracts/lending-vault-watcher.d.ts +2 -2
  47. package/lib/config/contracts/lending-vault-watcher.js +26 -26
  48. package/lib/config/contracts/merkle-distributors.d.ts +4 -4
  49. package/lib/config/contracts/merkle-distributors.js +70 -70
  50. package/lib/config/contracts/routers.d.ts +4 -3
  51. package/lib/config/contracts/routers.js +118 -94
  52. package/lib/config/contracts/simple-uniswap-oracles.d.ts +2 -2
  53. package/lib/config/contracts/simple-uniswap-oracles.js +49 -49
  54. package/lib/config/contracts/weths.d.ts +2 -2
  55. package/lib/config/contracts/weths.js +27 -27
  56. package/lib/config/debank-ids.d.ts +2 -2
  57. package/lib/config/debank-ids.js +26 -26
  58. package/lib/config/endpoints/merkle-distributors.d.ts +4 -4
  59. package/lib/config/endpoints/merkle-distributors.js +70 -70
  60. package/lib/config/eth.d.ts +3 -3
  61. package/lib/config/eth.js +48 -48
  62. package/lib/config/factories.d.ts +7 -7
  63. package/lib/config/factories.js +31 -30
  64. package/lib/config/farms.d.ts +109 -111
  65. package/lib/config/farms.js +207 -210
  66. package/lib/config/general.d.ts +5 -5
  67. package/lib/config/general.js +8 -8
  68. package/lib/config/subgraphs.d.ts +45 -45
  69. package/lib/config/subgraphs.js +187 -187
  70. package/lib/config/types.d.ts +85 -72
  71. package/lib/config/types.js +72 -58
  72. package/lib/index.d.ts +36 -35
  73. package/lib/index.js +159 -152
  74. package/lib/offchain/account/index.d.ts +9 -7
  75. package/lib/offchain/account/index.js +43 -39
  76. package/lib/offchain/account/lendingPool/borrowable.d.ts +14 -0
  77. package/lib/offchain/account/lendingPool/borrowable.js +73 -0
  78. package/lib/offchain/account/lendingPool/collateral.d.ts +12 -0
  79. package/lib/offchain/account/lendingPool/collateral.js +42 -0
  80. package/lib/offchain/account/lendingPool/index.d.ts +6 -5
  81. package/lib/offchain/account/lendingPool/index.js +14 -12
  82. package/lib/offchain/account/lendingPool/offchainAccountBorrowable.d.ts +14 -17
  83. package/lib/offchain/account/lendingPool/offchainAccountBorrowable.js +45 -71
  84. package/lib/offchain/account/lendingPool/offchainAccountCollateral.d.ts +11 -13
  85. package/lib/offchain/account/lendingPool/offchainAccountCollateral.js +31 -43
  86. package/lib/offchain/account/lendingPool/offchainAccountLendingPool.d.ts +28 -21
  87. package/lib/offchain/account/lendingPool/offchainAccountLendingPool.js +69 -68
  88. package/lib/offchain/account/lendingPool/offchainLeveragedPosition.d.ts +25 -0
  89. package/lib/offchain/account/lendingPool/offchainLeveragedPosition.js +116 -0
  90. package/lib/offchain/account/lendingVault.d.ts +11 -0
  91. package/lib/offchain/account/lendingVault.js +38 -0
  92. package/lib/offchain/account/offchainAccount.d.ts +25 -25
  93. package/lib/offchain/account/offchainAccount.js +129 -129
  94. package/lib/offchain/account/offchainAccountLendingVault.d.ts +16 -16
  95. package/lib/offchain/account/offchainAccountLendingVault.js +64 -64
  96. package/lib/offchain/account/offchainAccountPoolToken.d.ts +7 -7
  97. package/lib/offchain/account/offchainAccountPoolToken.js +24 -24
  98. package/lib/offchain/account/offchainMultichainAccount.d.ts +34 -0
  99. package/lib/offchain/account/offchainMultichainAccount.js +66 -0
  100. package/lib/offchain/account/poolToken.d.ts +6 -0
  101. package/lib/offchain/account/poolToken.js +21 -0
  102. package/lib/offchain/account/vault/index.d.ts +3 -0
  103. package/lib/offchain/account/vault/index.js +7 -0
  104. package/lib/offchain/account/vault/offchainAccountVault.d.ts +16 -0
  105. package/lib/offchain/account/vault/offchainAccountVault.js +64 -0
  106. package/lib/offchain/configManager/index.d.ts +5 -5
  107. package/lib/offchain/configManager/index.js +12 -12
  108. package/lib/offchain/configManager/offchainConfigManager.d.ts +25 -25
  109. package/lib/offchain/configManager/offchainConfigManager.js +76 -76
  110. package/lib/offchain/configManager/offchainConfigManagerInitializer.d.ts +6 -6
  111. package/lib/offchain/configManager/offchainConfigManagerInitializer.js +53 -53
  112. package/lib/offchain/configManager/offchainPairConfig.d.ts +40 -40
  113. package/lib/offchain/configManager/offchainPairConfig.js +86 -86
  114. package/lib/offchain/configManager/offchainProposal.d.ts +17 -17
  115. package/lib/offchain/configManager/offchainProposal.js +53 -53
  116. package/lib/offchain/index.d.ts +15 -14
  117. package/lib/offchain/index.js +55 -53
  118. package/lib/offchain/initializer.d.ts +32 -0
  119. package/lib/offchain/initializer.js +627 -0
  120. package/lib/offchain/lendingPool/borrowable.d.ts +55 -0
  121. package/lib/offchain/lendingPool/borrowable.js +351 -0
  122. package/lib/offchain/lendingPool/collateral.d.ts +17 -0
  123. package/lib/offchain/lendingPool/collateral.js +72 -0
  124. package/lib/offchain/lendingPool/index.d.ts +5 -5
  125. package/lib/offchain/lendingPool/index.js +12 -12
  126. package/lib/offchain/lendingPool/offchainBorrowable.d.ts +59 -59
  127. package/lib/offchain/lendingPool/offchainBorrowable.js +366 -366
  128. package/lib/offchain/lendingPool/offchainCollateral.d.ts +20 -19
  129. package/lib/offchain/lendingPool/offchainCollateral.js +81 -75
  130. package/lib/offchain/lendingPool/offchainLendingPool.d.ts +60 -47
  131. package/lib/offchain/lendingPool/offchainLendingPool.js +277 -230
  132. package/lib/offchain/lendingVault.d.ts +22 -0
  133. package/lib/offchain/lendingVault.js +115 -0
  134. package/lib/offchain/offchain.d.ts +106 -113
  135. package/lib/offchain/offchain.js +248 -251
  136. package/lib/offchain/offchainAPRHelper.d.ts +45 -45
  137. package/lib/offchain/offchainAPRHelper.js +239 -239
  138. package/lib/offchain/offchainEndpointManager.d.ts +25 -25
  139. package/lib/offchain/offchainEndpointManager.js +126 -126
  140. package/lib/offchain/offchainInitializer.d.ts +52 -52
  141. package/lib/offchain/offchainInitializer.js +792 -792
  142. package/lib/offchain/offchainLendingVault.d.ts +25 -25
  143. package/lib/offchain/offchainLendingVault.js +114 -114
  144. package/lib/offchain/offchainMultichain.d.ts +50 -0
  145. package/lib/offchain/offchainMultichain.js +75 -0
  146. package/lib/offchain/offchainPoolToken.d.ts +21 -21
  147. package/lib/offchain/offchainPoolToken.js +128 -128
  148. package/lib/offchain/offchainPriceHelper.d.ts +22 -22
  149. package/lib/offchain/offchainPriceHelper.js +364 -364
  150. package/lib/offchain/offchainSolidexHelper.d.ts +16 -16
  151. package/lib/offchain/offchainSolidexHelper.js +58 -58
  152. package/lib/offchain/offchainTypes.d.ts +212 -212
  153. package/lib/offchain/offchainTypes.js +3 -3
  154. package/lib/offchain/poolToken.d.ts +20 -0
  155. package/lib/offchain/poolToken.js +120 -0
  156. package/lib/offchain/priceHelper.d.ts +21 -0
  157. package/lib/offchain/priceHelper.js +195 -0
  158. package/lib/offchain/queries/apis/ponder/index.d.ts +14 -14
  159. package/lib/offchain/queries/apis/ponder/index.js +281 -281
  160. package/lib/offchain/queries/apis/thegraph/index.d.ts +19 -19
  161. package/lib/offchain/queries/apis/thegraph/index.js +355 -355
  162. package/lib/offchain/queries/index.d.ts +20 -20
  163. package/lib/offchain/queries/index.js +51 -51
  164. package/lib/offchain/queries/interfaces/query-builder.d.ts +19 -19
  165. package/lib/offchain/queries/interfaces/query-builder.js +2 -2
  166. package/lib/offchain/queries/interfaces/transformers.js +9 -9
  167. package/lib/offchain/query.d.ts +15 -0
  168. package/lib/offchain/query.js +323 -0
  169. package/lib/offchain/solidexHelper.d.ts +16 -0
  170. package/lib/offchain/solidexHelper.js +58 -0
  171. package/lib/offchain/types.d.ts +150 -0
  172. package/lib/offchain/types.js +3 -0
  173. package/lib/offchain/vault/index.d.ts +6 -0
  174. package/lib/offchain/vault/index.js +14 -0
  175. package/lib/offchain/vault/offchainHedgedVault.d.ts +9 -0
  176. package/lib/offchain/vault/offchainHedgedVault.js +57 -0
  177. package/lib/offchain/vault/offchainLendingVault.d.ts +16 -0
  178. package/lib/offchain/vault/offchainLendingVault.js +73 -0
  179. package/lib/offchain/vault/offchainLeveragedVault.d.ts +9 -0
  180. package/lib/offchain/vault/offchainLeveragedVault.js +57 -0
  181. package/lib/offchain/vault/offchainVault.d.ts +34 -0
  182. package/lib/offchain/vault/offchainVault.js +130 -0
  183. package/lib/onchain/account/index.d.ts +6 -6
  184. package/lib/onchain/account/index.js +38 -38
  185. package/lib/onchain/account/interactions/index.d.ts +28 -0
  186. package/lib/onchain/account/interactions/index.js +158 -0
  187. package/lib/onchain/account/interactions/lendingPool/borrowable.d.ts +16 -0
  188. package/lib/onchain/account/interactions/lendingPool/borrowable.js +49 -0
  189. package/lib/onchain/account/interactions/lendingPool/collateral.d.ts +15 -0
  190. package/lib/onchain/account/interactions/lendingPool/collateral.js +33 -0
  191. package/lib/onchain/account/interactions/lendingPool/index.d.ts +41 -0
  192. package/lib/onchain/account/interactions/lendingPool/index.js +120 -0
  193. package/lib/onchain/account/interactions/lendingVault.d.ts +10 -0
  194. package/lib/onchain/account/interactions/lendingVault.js +12 -0
  195. package/lib/onchain/account/interactions/poolToken.d.ts +33 -0
  196. package/lib/onchain/account/interactions/poolToken.js +180 -0
  197. package/lib/onchain/account/lendingPool/borrowable.d.ts +29 -0
  198. package/lib/onchain/account/lendingPool/borrowable.js +135 -0
  199. package/lib/onchain/account/lendingPool/collateral.d.ts +15 -0
  200. package/lib/onchain/account/lendingPool/collateral.js +66 -0
  201. package/lib/onchain/account/lendingPool/index.d.ts +12 -5
  202. package/lib/onchain/account/lendingPool/index.js +49 -12
  203. package/lib/onchain/account/lendingPool/nftlp/index.d.ts +4 -0
  204. package/lib/onchain/account/lendingPool/nftlp/index.js +11 -0
  205. package/lib/onchain/account/lendingPool/nftlp/onchainAccountNftlp.d.ts +7 -0
  206. package/lib/onchain/account/lendingPool/nftlp/onchainAccountNftlp.js +12 -0
  207. package/lib/onchain/account/lendingPool/nftlp/onchainAccountNftlpUniswapV3.d.ts +4 -0
  208. package/lib/onchain/account/lendingPool/nftlp/onchainAccountNftlpUniswapV3.js +13 -0
  209. package/lib/onchain/account/lendingPool/onchainAccountBorrowable.d.ts +39 -34
  210. package/lib/onchain/account/lendingPool/onchainAccountBorrowable.js +131 -176
  211. package/lib/onchain/account/lendingPool/onchainAccountBorrowableV2.d.ts +10 -0
  212. package/lib/onchain/account/lendingPool/onchainAccountBorrowableV2.js +55 -0
  213. package/lib/onchain/account/lendingPool/onchainAccountBorrowableV3.d.ts +10 -0
  214. package/lib/onchain/account/lendingPool/onchainAccountBorrowableV3.js +28 -0
  215. package/lib/onchain/account/lendingPool/onchainAccountCollateral.d.ts +10 -23
  216. package/lib/onchain/account/lendingPool/onchainAccountCollateral.js +26 -109
  217. package/lib/onchain/account/lendingPool/onchainAccountCollateralV2.d.ts +25 -0
  218. package/lib/onchain/account/lendingPool/onchainAccountCollateralV2.js +99 -0
  219. package/lib/onchain/account/lendingPool/onchainAccountCollateralV3.d.ts +18 -0
  220. package/lib/onchain/account/lendingPool/onchainAccountCollateralV3.js +44 -0
  221. package/lib/onchain/account/lendingPool/onchainAccountLendingPool.d.ts +42 -57
  222. package/lib/onchain/account/lendingPool/onchainAccountLendingPool.js +142 -352
  223. package/lib/onchain/account/lendingPool/onchainAccountLendingPoolV2.d.ts +44 -0
  224. package/lib/onchain/account/lendingPool/onchainAccountLendingPoolV2.js +285 -0
  225. package/lib/onchain/account/lendingPool/onchainAccountLendingPoolV3.d.ts +27 -0
  226. package/lib/onchain/account/lendingPool/onchainAccountLendingPoolV3.js +32 -0
  227. package/lib/onchain/account/lendingVault.d.ts +10 -0
  228. package/lib/onchain/account/lendingVault.js +35 -0
  229. package/lib/onchain/account/onchainAccount.d.ts +32 -32
  230. package/lib/onchain/account/onchainAccount.js +166 -167
  231. package/lib/onchain/account/onchainAccountLendingVault.d.ts +19 -19
  232. package/lib/onchain/account/onchainAccountLendingVault.js +48 -48
  233. package/lib/onchain/account/onchainAccountPoolToken.d.ts +30 -30
  234. package/lib/onchain/account/onchainAccountPoolToken.js +86 -86
  235. package/lib/onchain/account/poolToken.d.ts +24 -0
  236. package/lib/onchain/account/poolToken.js +84 -0
  237. package/lib/onchain/configManager/index.d.ts +5 -5
  238. package/lib/onchain/configManager/index.js +12 -12
  239. package/lib/onchain/configManager/onchainConfigManager.d.ts +12 -12
  240. package/lib/onchain/configManager/onchainConfigManager.js +38 -38
  241. package/lib/onchain/configManager/onchainPairConfig.d.ts +38 -38
  242. package/lib/onchain/configManager/onchainPairConfig.js +85 -85
  243. package/lib/onchain/configManager/onchainProposal.d.ts +17 -17
  244. package/lib/onchain/configManager/onchainProposal.js +55 -55
  245. package/lib/onchain/contractsHelper.d.ts +29 -0
  246. package/lib/onchain/contractsHelper.js +52 -0
  247. package/lib/onchain/impermaxFactory/index.d.ts +7 -5
  248. package/lib/onchain/impermaxFactory/index.js +39 -35
  249. package/lib/onchain/impermaxFactory/lendingPool/borrowable.d.ts +36 -0
  250. package/lib/onchain/impermaxFactory/lendingPool/borrowable.js +153 -0
  251. package/lib/onchain/impermaxFactory/lendingPool/collateral.d.ts +17 -0
  252. package/lib/onchain/impermaxFactory/lendingPool/collateral.js +59 -0
  253. package/lib/onchain/impermaxFactory/lendingPool/index.d.ts +12 -5
  254. package/lib/onchain/impermaxFactory/lendingPool/index.js +50 -12
  255. package/lib/onchain/impermaxFactory/lendingPool/nftlp/index.d.ts +4 -0
  256. package/lib/onchain/impermaxFactory/lendingPool/nftlp/index.js +11 -0
  257. package/lib/onchain/impermaxFactory/lendingPool/nftlp/onchainNftlp.d.ts +22 -0
  258. package/lib/onchain/impermaxFactory/lendingPool/nftlp/onchainNftlp.js +19 -0
  259. package/lib/onchain/impermaxFactory/lendingPool/nftlp/onchainNftlpUniswapV3.d.ts +24 -0
  260. package/lib/onchain/impermaxFactory/lendingPool/nftlp/onchainNftlpUniswapV3.js +90 -0
  261. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowable.d.ts +38 -34
  262. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowable.js +137 -156
  263. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowableV2.d.ts +9 -0
  264. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowableV2.js +36 -0
  265. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowableV3.d.ts +7 -0
  266. package/lib/onchain/impermaxFactory/lendingPool/onchainBorrowableV3.js +23 -0
  267. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateral.d.ts +8 -19
  268. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateral.js +24 -61
  269. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateralV2.d.ts +20 -0
  270. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateralV2.js +58 -0
  271. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateralV3.d.ts +13 -0
  272. package/lib/onchain/impermaxFactory/lendingPool/onchainCollateralV3.js +36 -0
  273. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPool.d.ts +43 -58
  274. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPool.js +81 -367
  275. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPoolV2.d.ts +76 -0
  276. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPoolV2.js +338 -0
  277. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPoolV3.d.ts +42 -0
  278. package/lib/onchain/impermaxFactory/lendingPool/onchainLendingPoolV3.js +39 -0
  279. package/lib/onchain/impermaxFactory/onchainImpermaxFactory.d.ts +26 -16
  280. package/lib/onchain/impermaxFactory/onchainImpermaxFactory.js +42 -52
  281. package/lib/onchain/impermaxFactory/onchainImpermaxFactoryV2.d.ts +16 -0
  282. package/lib/onchain/impermaxFactory/onchainImpermaxFactoryV2.js +81 -0
  283. package/lib/onchain/impermaxFactory/onchainImpermaxFactoryV3.d.ts +16 -0
  284. package/lib/onchain/impermaxFactory/onchainImpermaxFactoryV3.js +88 -0
  285. package/lib/onchain/index.d.ts +10 -10
  286. package/lib/onchain/index.js +49 -49
  287. package/lib/onchain/interactions/index.d.ts +8 -8
  288. package/lib/onchain/interactions/index.js +41 -41
  289. package/lib/onchain/interactions/lendingPool/borrowable.d.ts +14 -0
  290. package/lib/onchain/interactions/lendingPool/borrowable.js +47 -0
  291. package/lib/onchain/interactions/lendingPool/collateral.d.ts +13 -0
  292. package/lib/onchain/interactions/lendingPool/collateral.js +31 -0
  293. package/lib/onchain/interactions/lendingPool/index.d.ts +12 -5
  294. package/lib/onchain/interactions/lendingPool/index.js +49 -12
  295. package/lib/onchain/interactions/lendingPool/nftlp/index.d.ts +4 -0
  296. package/lib/onchain/interactions/lendingPool/nftlp/index.js +11 -0
  297. package/lib/onchain/interactions/lendingPool/nftlp/onchainInteractionsNftlp.d.ts +7 -0
  298. package/lib/onchain/interactions/lendingPool/nftlp/onchainInteractionsNftlp.js +12 -0
  299. package/lib/onchain/interactions/lendingPool/nftlp/onchainInteractionsNftlpUniswapV3.d.ts +4 -0
  300. package/lib/onchain/interactions/lendingPool/nftlp/onchainInteractionsNftlpUniswapV3.js +13 -0
  301. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowable.d.ts +17 -21
  302. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowable.js +24 -56
  303. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowableV2.d.ts +15 -0
  304. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowableV2.js +63 -0
  305. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowableV3.d.ts +9 -0
  306. package/lib/onchain/interactions/lendingPool/onchainInteractionsBorrowableV3.js +14 -0
  307. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateral.d.ts +7 -19
  308. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateral.js +11 -43
  309. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateralV2.d.ts +20 -0
  310. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateralV2.js +48 -0
  311. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateralV3.d.ts +13 -0
  312. package/lib/onchain/interactions/lendingPool/onchainInteractionsCollateralV3.js +20 -0
  313. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPool.d.ts +31 -46
  314. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPool.js +53 -135
  315. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPoolV2.d.ts +42 -0
  316. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPoolV2.js +114 -0
  317. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPoolV3.d.ts +27 -0
  318. package/lib/onchain/interactions/lendingPool/onchainInteractionsLendingPoolV3.js +32 -0
  319. package/lib/onchain/interactions/lendingVault.d.ts +8 -0
  320. package/lib/onchain/interactions/lendingVault.js +15 -0
  321. package/lib/onchain/interactions/onchainInteractions.d.ts +31 -31
  322. package/lib/onchain/interactions/onchainInteractions.js +136 -137
  323. package/lib/onchain/interactions/onchainInteractionsConfigManager.d.ts +17 -17
  324. package/lib/onchain/interactions/onchainInteractionsConfigManager.js +44 -44
  325. package/lib/onchain/interactions/onchainInteractionsLendingVault.d.ts +14 -14
  326. package/lib/onchain/interactions/onchainInteractionsLendingVault.js +21 -21
  327. package/lib/onchain/interactions/onchainInteractionsPoolToken.d.ts +35 -35
  328. package/lib/onchain/interactions/onchainInteractionsPoolToken.js +134 -186
  329. package/lib/onchain/interactions/poolToken.d.ts +31 -0
  330. package/lib/onchain/interactions/poolToken.js +181 -0
  331. package/lib/onchain/lendingVault.d.ts +17 -0
  332. package/lib/onchain/lendingVault.js +56 -0
  333. package/lib/onchain/onchain.d.ts +38 -35
  334. package/lib/onchain/onchain.js +78 -70
  335. package/lib/onchain/onchainContractsHelper.d.ts +42 -31
  336. package/lib/onchain/onchainContractsHelper.js +90 -56
  337. package/lib/onchain/onchainLendingVault.d.ts +22 -22
  338. package/lib/onchain/onchainLendingVault.js +69 -69
  339. package/lib/onchain/onchainPermitHelper.d.ts +21 -0
  340. package/lib/onchain/onchainPermitHelper.js +198 -0
  341. package/lib/onchain/onchainPoolToken.d.ts +35 -35
  342. package/lib/onchain/onchainPoolToken.js +129 -129
  343. package/lib/onchain/onchainTypes.d.ts +70 -64
  344. package/lib/onchain/onchainTypes.js +14 -14
  345. package/lib/onchain/poolToken.d.ts +32 -0
  346. package/lib/onchain/poolToken.js +121 -0
  347. package/lib/onchain/types.d.ts +45 -0
  348. package/lib/onchain/types.js +14 -0
  349. package/lib/utils/ether-utils.d.ts +5 -5
  350. package/lib/utils/ether-utils.js +26 -26
  351. package/lib/utils/index.d.ts +3 -3
  352. package/lib/utils/index.js +16 -16
  353. package/lib/utils/lliquidity-math.d.ts +30 -30
  354. package/lib/utils/lliquidity-math.js +139 -139
  355. package/lib/utils/price-from-reserves.d.ts +2 -0
  356. package/lib/utils/price-from-reserves.js +19 -0
  357. package/package.json +36 -36
@@ -1,366 +1,366 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const utils_1 = require("../../utils");
16
- const imxes_1 = require("../../config/contracts/imxes");
17
- const offchainPoolToken_1 = __importDefault(require("../offchainPoolToken"));
18
- class OffchainBorrowable extends offchainPoolToken_1.default {
19
- constructor(lendingPool, poolTokenType) {
20
- super();
21
- this.getOffchain = () => this.lendingPool.getOffchain();
22
- this.getLendingPool = () => this.lendingPool;
23
- this.getPoolTokenType = () => this.poolTokenType;
24
- this.lendingPool = lendingPool;
25
- this.poolTokenType = poolTokenType;
26
- }
27
- getPoolTokenData() {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- const lendingPoolData = yield this.lendingPool.getLendingPoolData();
30
- return lendingPoolData[this.poolTokenType];
31
- });
32
- }
33
- // Reserve Factor
34
- getReserveFactor() {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- return this.getPoolTokenParamFloat("reserveFactor");
37
- });
38
- }
39
- // Kink Borrow Rate
40
- getKinkBorrowRate() {
41
- return __awaiter(this, void 0, void 0, function* () {
42
- return this.getPoolTokenParamFloat("kinkBorrowRate");
43
- });
44
- }
45
- // Kink Utilization Rate
46
- getKinkUtilizationRate() {
47
- return __awaiter(this, void 0, void 0, function* () {
48
- return this.getPoolTokenParamFloat("kinkUtilizationRate");
49
- });
50
- }
51
- // Adjust speed
52
- getAdjustSpeed() {
53
- return __awaiter(this, void 0, void 0, function* () {
54
- return this.getPoolTokenParamFloat("adjustSpeed");
55
- });
56
- }
57
- // Borrow tracker
58
- getBorrowTracker() {
59
- return __awaiter(this, void 0, void 0, function* () {
60
- const borrowTracker = yield this.getPoolTokenParam("borrowTracker");
61
- return borrowTracker !== null && borrowTracker !== void 0 ? borrowTracker : "0x0000000000000000000000000000000000000000";
62
- });
63
- }
64
- // Borrow Index
65
- getBorrowIndex() {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- return this.getPoolTokenParamFloat("borrowIndex");
68
- });
69
- }
70
- // Accrue Timestamp
71
- getAccrualTimestamp() {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- return this.getPoolTokenParamFloat("accrualTimestamp");
74
- });
75
- }
76
- // Total borrows
77
- getTotalBorrows() {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- return this.getPoolTokenParamFloat("totalBorrows");
80
- });
81
- }
82
- getCurrentTotalBorrows() {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- const storedAmount = yield this.getTotalBorrows();
85
- const accrualTimestamp = yield this.getAccrualTimestamp();
86
- const borrowRate = yield this.getBorrowRate();
87
- return storedAmount * (1 + (Date.now() / 1000 - accrualTimestamp) * borrowRate);
88
- });
89
- }
90
- getTotalBorrowsUSD() {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- const totalBorrows = yield this.getCurrentTotalBorrows();
93
- const tokenPrice = yield this.getTokenPriceFast();
94
- return totalBorrows * tokenPrice;
95
- });
96
- }
97
- // Borrow rate
98
- getBorrowRate() {
99
- return __awaiter(this, void 0, void 0, function* () {
100
- return this.getPoolTokenParamFloat("borrowRate");
101
- });
102
- }
103
- getBorrowAPR() {
104
- return __awaiter(this, void 0, void 0, function* () {
105
- const borrowRate = yield this.getBorrowRate();
106
- return (0, utils_1.toAPR)(borrowRate);
107
- });
108
- }
109
- getNextBorrowRate(borrowAmount) {
110
- return __awaiter(this, void 0, void 0, function* () {
111
- const totalBorrows = yield this.getTotalBorrows();
112
- const supply = yield this.getSupply();
113
- const UR = (borrowAmount + totalBorrows) / supply;
114
- const kinkBR = yield this.getKinkBorrowRate();
115
- const kinkUR = yield this.getKinkUtilizationRate();
116
- if (UR < kinkUR)
117
- return UR / kinkUR * kinkBR;
118
- const kinkMultiplier = this.lendingPool.getKinkMultiplier();
119
- return ((UR - kinkUR) / (1 - kinkUR) * (kinkMultiplier - 1) + 1) * kinkBR;
120
- });
121
- }
122
- getNextBorrowAPR(borrowAmount) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- const borrowRate = yield this.getNextBorrowRate(borrowAmount);
125
- return (0, utils_1.toAPR)(borrowRate);
126
- });
127
- }
128
- // Supply
129
- getSupply() {
130
- return __awaiter(this, void 0, void 0, function* () {
131
- const totalBalance = yield this.getTotalBalance();
132
- const totalBorrows = yield this.getTotalBorrows();
133
- return totalBalance + totalBorrows;
134
- });
135
- }
136
- getCurrentSupply() {
137
- return __awaiter(this, void 0, void 0, function* () {
138
- const storedAmount = yield this.getSupply();
139
- const accrualTimestamp = yield this.getAccrualTimestamp();
140
- const supplyRate = yield this.getSupplyRate();
141
- return storedAmount * (1 + (Date.now() / 1000 - accrualTimestamp) * supplyRate);
142
- });
143
- }
144
- getSupplyUSD() {
145
- return __awaiter(this, void 0, void 0, function* () {
146
- const supply = yield this.getCurrentSupply();
147
- const tokenPrice = yield this.getTokenPriceFast();
148
- return supply * tokenPrice;
149
- });
150
- }
151
- // Utilization Rate
152
- getUtilizationRate() {
153
- return __awaiter(this, void 0, void 0, function* () {
154
- const supply = yield this.getSupply();
155
- if (supply == 0)
156
- return 0;
157
- const totalBalance = yield this.getTotalBorrows();
158
- return totalBalance / supply;
159
- });
160
- }
161
- // Supply Rate
162
- getSupplyRate() {
163
- return __awaiter(this, void 0, void 0, function* () {
164
- const borrowRate = yield this.getBorrowRate();
165
- const utilizationRate = yield this.getUtilizationRate();
166
- const reserveFactor = yield this.getReserveFactor();
167
- return borrowRate * utilizationRate * (1 - reserveFactor);
168
- });
169
- }
170
- getSupplyAPR() {
171
- return __awaiter(this, void 0, void 0, function* () {
172
- const supplyRate = yield this.getSupplyRate();
173
- return (0, utils_1.toAPR)(supplyRate);
174
- });
175
- }
176
- getNextSupplyRate(supplyAmount) {
177
- return __awaiter(this, void 0, void 0, function* () {
178
- const totalBorrows = yield this.getTotalBorrows();
179
- const supply = yield this.getSupply();
180
- const UR = totalBorrows / (supply + supplyAmount);
181
- const kinkBR = yield this.getKinkBorrowRate();
182
- const kinkUR = yield this.getKinkUtilizationRate();
183
- const reserveFactor = yield this.getReserveFactor();
184
- if (UR < kinkUR)
185
- return UR / kinkUR * kinkBR * UR * (1 - reserveFactor);
186
- const kinkMultiplier = this.lendingPool.getKinkMultiplier();
187
- return ((UR - kinkUR) / (1 - kinkUR) * (kinkMultiplier - 1) + 1) * kinkBR * UR * (1 - reserveFactor);
188
- });
189
- }
190
- getNextSupplyAPR(supplyAmount) {
191
- return __awaiter(this, void 0, void 0, function* () {
192
- const supplyRate = yield this.getNextSupplyRate(supplyAmount);
193
- return (0, utils_1.toAPR)(supplyRate);
194
- });
195
- }
196
- // Reward Speed
197
- getFarmingRewardsRate() {
198
- return __awaiter(this, void 0, void 0, function* () {
199
- const poolTokenData = yield this.getPoolTokenData();
200
- const rewards = poolTokenData.rewards;
201
- if (rewards && rewards.length > 0)
202
- return rewards;
203
- const FINISH_DELAY = 3600 * 24;
204
- const farmingPoolData = poolTokenData.farmingPool;
205
- if (farmingPoolData === null)
206
- return [];
207
- const segmentLength = parseInt(farmingPoolData.segmentLength);
208
- const epochAmount = parseFloat(farmingPoolData.epochAmount);
209
- const epochBegin = parseInt(farmingPoolData.epochBegin);
210
- const epochEnd = epochBegin + segmentLength;
211
- const timestamp = (new Date()).getTime() / 1000;
212
- if (timestamp - FINISH_DELAY > epochEnd) {
213
- // How to manage better this case? Maybe check shares on distributor
214
- return [];
215
- }
216
- return [{
217
- rewardToken: imxes_1.IMX[this.getOffchain().network],
218
- rewardRate: epochAmount / segmentLength
219
- }];
220
- });
221
- }
222
- // Farming
223
- getFarmingRewards() {
224
- return __awaiter(this, void 0, void 0, function* () {
225
- return this.getNextFarmingRewards(0);
226
- });
227
- }
228
- getNextFarmingRewards(borrowAmount) {
229
- return __awaiter(this, void 0, void 0, function* () {
230
- const farmingRewards = yield this.getFarmingRewardsRate();
231
- const currentBorrowedUSD = yield this.getTotalBorrowsUSD();
232
- const tokenPrice = yield this.getTokenPriceFast();
233
- const additionalBorrowsUSD = borrowAmount * tokenPrice;
234
- const totalBorrowedUSD = currentBorrowedUSD + additionalBorrowsUSD;
235
- if (totalBorrowedUSD === 0)
236
- return [];
237
- const rewards = [];
238
- for (const reward of farmingRewards) {
239
- const rewardPrice = yield this.getOffchain().getPriceHelper().getDebankTokenPrice(reward.rewardToken);
240
- rewards.push({
241
- APR: (0, utils_1.toAPR)((rewardPrice * reward.rewardRate) / totalBorrowedUSD),
242
- symbol: reward.rewardToken == "0x98878b06940ae243284ca214f92bb71a2b032b8a" ? "WMOVR" :
243
- reward.rewardToken == "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" ? "WMATIC" :
244
- reward.rewardToken == "0x6659a9c5cd313974343e30b4fdffd95bd4b4dcd2" ? "IMX" :
245
- reward.rewardToken == "0x7b35ce522cb72e4077baeb96cb923a5529764a00" ? "IMX" :
246
- reward.rewardToken == "0x60bb3d364b765c497c8ce50ae0ae3f0882c5bd05" ? "IMX" :
247
- reward.rewardToken == "0x9c67ee39e3c4954396b9142010653f17257dd39c" ? "IMX" :
248
- reward.rewardToken == "0xea6887e4a9cda1b77e70129e5fba830cdb5cddef" ? "IMX" :
249
- reward.rewardToken == "0x900f1Ec5819FA087d368877cD03B265Bf1802667" ? "IMX" :
250
- reward.rewardToken == "0xea38f1ccf77bf43f352636241b05dd8f6f5f52b2" ? "IMX" :
251
- "IBEX",
252
- });
253
- }
254
- return rewards;
255
- });
256
- }
257
- getFarmingAPR() {
258
- return __awaiter(this, void 0, void 0, function* () {
259
- return this.getNextFarmingAPR(0);
260
- });
261
- }
262
- getNextFarmingAPR(borrowAmount) {
263
- return __awaiter(this, void 0, void 0, function* () {
264
- const rewards = yield this.getNextFarmingRewards(borrowAmount);
265
- let APR = 0;
266
- for (const reward of rewards) {
267
- APR += reward.APR;
268
- }
269
- return APR;
270
- });
271
- }
272
- // Past Data
273
- getPoolTokenDataPast24h() {
274
- return __awaiter(this, void 0, void 0, function* () {
275
- const lendingPoolDataPast = yield this.lendingPool.getLendingPoolDataPast24h();
276
- if (!lendingPoolDataPast)
277
- return undefined;
278
- return lendingPoolDataPast[this.poolTokenType];
279
- });
280
- }
281
- getPoolTokenDataPast7d() {
282
- return __awaiter(this, void 0, void 0, function* () {
283
- const lendingPoolDataPast = yield this.lendingPool.getLendingPoolDataPast7d();
284
- if (!lendingPoolDataPast)
285
- return undefined;
286
- return lendingPoolDataPast[this.poolTokenType];
287
- });
288
- }
289
- // Average Borrow APR
290
- getAverageBorrowAPR(poolTokenDataPast, fallback) {
291
- return __awaiter(this, void 0, void 0, function* () {
292
- if (poolTokenDataPast) {
293
- const accrualTimestampPast = parseFloat(poolTokenDataPast.accrualTimestamp);
294
- const borrowIndexPast = parseFloat(poolTokenDataPast.borrowIndex);
295
- const accrualTimestampNow = yield this.getAccrualTimestamp();
296
- const borrowIndexNow = yield this.getBorrowIndex();
297
- if (accrualTimestampNow > accrualTimestampPast) {
298
- const borrowRate = (borrowIndexNow / borrowIndexPast - 1) / (accrualTimestampNow - accrualTimestampPast);
299
- return borrowRate * 3600 * 24 * 365;
300
- }
301
- }
302
- return fallback;
303
- });
304
- }
305
- getAverage24hBorrowAPR() {
306
- return __awaiter(this, void 0, void 0, function* () {
307
- const poolTokenDataPast = yield this.getPoolTokenDataPast24h();
308
- return this.getAverageBorrowAPR(poolTokenDataPast, this.getBorrowAPR());
309
- });
310
- }
311
- getAverage7dBorrowAPR() {
312
- return __awaiter(this, void 0, void 0, function* () {
313
- const poolTokenDataPast = yield this.getPoolTokenDataPast7d();
314
- return this.getAverageBorrowAPR(poolTokenDataPast, this.getAverage24hBorrowAPR());
315
- });
316
- }
317
- // Average Supply APR
318
- getAverageSupplyAPR(poolTokenDataPast, fallback) {
319
- return __awaiter(this, void 0, void 0, function* () {
320
- if (poolTokenDataPast) {
321
- const accrualTimestampPast = parseFloat(poolTokenDataPast.accrualTimestamp);
322
- const exchangeRatePast = parseFloat(poolTokenDataPast.exchangeRate);
323
- const accrualTimestampNow = yield this.getAccrualTimestamp();
324
- const exchangeRateNow = yield this.getExchangeRate();
325
- if (accrualTimestampNow > accrualTimestampPast) {
326
- const supplyRate = (exchangeRateNow / exchangeRatePast - 1) / (accrualTimestampNow - accrualTimestampPast);
327
- return supplyRate * 3600 * 24 * 365;
328
- }
329
- }
330
- return fallback;
331
- });
332
- }
333
- getAverage24hSupplyAPR() {
334
- return __awaiter(this, void 0, void 0, function* () {
335
- const poolTokenDataPast = yield this.getPoolTokenDataPast24h();
336
- return this.getAverageSupplyAPR(poolTokenDataPast, this.getSupplyAPR());
337
- });
338
- }
339
- getAverage7dSupplyAPR() {
340
- return __awaiter(this, void 0, void 0, function* () {
341
- const poolTokenDataPast = yield this.getPoolTokenDataPast7d();
342
- return this.getAverageSupplyAPR(poolTokenDataPast, this.getAverage24hSupplyAPR());
343
- });
344
- }
345
- // Token price getters
346
- getTokenPriceFast(fallback = true) {
347
- const _super = Object.create(null, {
348
- getTokenPriceFast: { get: () => super.getTokenPriceFast }
349
- });
350
- return __awaiter(this, void 0, void 0, function* () {
351
- let tokenAddress = yield this.getUnderlyingAddress();
352
- let tokenPrices = yield this.getOffchain().getPriceHelper().getSubgraphTokensPrice();
353
- let tokenPrice = tokenPrices[tokenAddress];
354
- if (tokenPrice !== undefined && tokenPrice > 0)
355
- return tokenPrice;
356
- return _super.getTokenPriceFast.call(this, fallback);
357
- });
358
- }
359
- getTokenPriceAccurate() {
360
- return __awaiter(this, void 0, void 0, function* () {
361
- let tokenAddress = yield this.getUnderlyingAddress();
362
- return this.getOffchain().getPriceHelper().getDebankTokenPrice(tokenAddress);
363
- });
364
- }
365
- }
366
- exports.default = OffchainBorrowable;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const utils_1 = require("../../utils");
16
+ const imxes_1 = require("../../config/contracts/imxes");
17
+ const offchainPoolToken_1 = __importDefault(require("../offchainPoolToken"));
18
+ class OffchainBorrowable extends offchainPoolToken_1.default {
19
+ constructor(lendingPool, poolTokenType) {
20
+ super();
21
+ this.getOffchain = () => this.lendingPool.getOffchain();
22
+ this.getLendingPool = () => this.lendingPool;
23
+ this.getPoolTokenType = () => this.poolTokenType;
24
+ this.lendingPool = lendingPool;
25
+ this.poolTokenType = poolTokenType;
26
+ }
27
+ getPoolTokenData() {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ const lendingPoolData = yield this.lendingPool.getLendingPoolData();
30
+ return lendingPoolData[this.poolTokenType];
31
+ });
32
+ }
33
+ // Reserve Factor
34
+ getReserveFactor() {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ return this.getPoolTokenParamFloat("reserveFactor");
37
+ });
38
+ }
39
+ // Kink Borrow Rate
40
+ getKinkBorrowRate() {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ return this.getPoolTokenParamFloat("kinkBorrowRate");
43
+ });
44
+ }
45
+ // Kink Utilization Rate
46
+ getKinkUtilizationRate() {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ return this.getPoolTokenParamFloat("kinkUtilizationRate");
49
+ });
50
+ }
51
+ // Adjust speed
52
+ getAdjustSpeed() {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ return this.getPoolTokenParamFloat("adjustSpeed");
55
+ });
56
+ }
57
+ // Borrow tracker
58
+ getBorrowTracker() {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ const borrowTracker = yield this.getPoolTokenParam("borrowTracker");
61
+ return borrowTracker !== null && borrowTracker !== void 0 ? borrowTracker : "0x0000000000000000000000000000000000000000";
62
+ });
63
+ }
64
+ // Borrow Index
65
+ getBorrowIndex() {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ return this.getPoolTokenParamFloat("borrowIndex");
68
+ });
69
+ }
70
+ // Accrue Timestamp
71
+ getAccrualTimestamp() {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ return this.getPoolTokenParamFloat("accrualTimestamp");
74
+ });
75
+ }
76
+ // Total borrows
77
+ getTotalBorrows() {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ return this.getPoolTokenParamFloat("totalBorrows");
80
+ });
81
+ }
82
+ getCurrentTotalBorrows() {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ const storedAmount = yield this.getTotalBorrows();
85
+ const accrualTimestamp = yield this.getAccrualTimestamp();
86
+ const borrowRate = yield this.getBorrowRate();
87
+ return storedAmount * (1 + (Date.now() / 1000 - accrualTimestamp) * borrowRate);
88
+ });
89
+ }
90
+ getTotalBorrowsUSD() {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const totalBorrows = yield this.getCurrentTotalBorrows();
93
+ const tokenPrice = yield this.getTokenPriceFast();
94
+ return totalBorrows * tokenPrice;
95
+ });
96
+ }
97
+ // Borrow rate
98
+ getBorrowRate() {
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ return this.getPoolTokenParamFloat("borrowRate");
101
+ });
102
+ }
103
+ getBorrowAPR() {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ const borrowRate = yield this.getBorrowRate();
106
+ return (0, utils_1.toAPR)(borrowRate);
107
+ });
108
+ }
109
+ getNextBorrowRate(borrowAmount) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ const totalBorrows = yield this.getTotalBorrows();
112
+ const supply = yield this.getSupply();
113
+ const UR = (borrowAmount + totalBorrows) / supply;
114
+ const kinkBR = yield this.getKinkBorrowRate();
115
+ const kinkUR = yield this.getKinkUtilizationRate();
116
+ if (UR < kinkUR)
117
+ return UR / kinkUR * kinkBR;
118
+ const kinkMultiplier = this.lendingPool.getKinkMultiplier();
119
+ return ((UR - kinkUR) / (1 - kinkUR) * (kinkMultiplier - 1) + 1) * kinkBR;
120
+ });
121
+ }
122
+ getNextBorrowAPR(borrowAmount) {
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ const borrowRate = yield this.getNextBorrowRate(borrowAmount);
125
+ return (0, utils_1.toAPR)(borrowRate);
126
+ });
127
+ }
128
+ // Supply
129
+ getSupply() {
130
+ return __awaiter(this, void 0, void 0, function* () {
131
+ const totalBalance = yield this.getTotalBalance();
132
+ const totalBorrows = yield this.getTotalBorrows();
133
+ return totalBalance + totalBorrows;
134
+ });
135
+ }
136
+ getCurrentSupply() {
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ const storedAmount = yield this.getSupply();
139
+ const accrualTimestamp = yield this.getAccrualTimestamp();
140
+ const supplyRate = yield this.getSupplyRate();
141
+ return storedAmount * (1 + (Date.now() / 1000 - accrualTimestamp) * supplyRate);
142
+ });
143
+ }
144
+ getSupplyUSD() {
145
+ return __awaiter(this, void 0, void 0, function* () {
146
+ const supply = yield this.getCurrentSupply();
147
+ const tokenPrice = yield this.getTokenPriceFast();
148
+ return supply * tokenPrice;
149
+ });
150
+ }
151
+ // Utilization Rate
152
+ getUtilizationRate() {
153
+ return __awaiter(this, void 0, void 0, function* () {
154
+ const supply = yield this.getSupply();
155
+ if (supply == 0)
156
+ return 0;
157
+ const totalBalance = yield this.getTotalBorrows();
158
+ return totalBalance / supply;
159
+ });
160
+ }
161
+ // Supply Rate
162
+ getSupplyRate() {
163
+ return __awaiter(this, void 0, void 0, function* () {
164
+ const borrowRate = yield this.getBorrowRate();
165
+ const utilizationRate = yield this.getUtilizationRate();
166
+ const reserveFactor = yield this.getReserveFactor();
167
+ return borrowRate * utilizationRate * (1 - reserveFactor);
168
+ });
169
+ }
170
+ getSupplyAPR() {
171
+ return __awaiter(this, void 0, void 0, function* () {
172
+ const supplyRate = yield this.getSupplyRate();
173
+ return (0, utils_1.toAPR)(supplyRate);
174
+ });
175
+ }
176
+ getNextSupplyRate(supplyAmount) {
177
+ return __awaiter(this, void 0, void 0, function* () {
178
+ const totalBorrows = yield this.getTotalBorrows();
179
+ const supply = yield this.getSupply();
180
+ const UR = totalBorrows / (supply + supplyAmount);
181
+ const kinkBR = yield this.getKinkBorrowRate();
182
+ const kinkUR = yield this.getKinkUtilizationRate();
183
+ const reserveFactor = yield this.getReserveFactor();
184
+ if (UR < kinkUR)
185
+ return UR / kinkUR * kinkBR * UR * (1 - reserveFactor);
186
+ const kinkMultiplier = this.lendingPool.getKinkMultiplier();
187
+ return ((UR - kinkUR) / (1 - kinkUR) * (kinkMultiplier - 1) + 1) * kinkBR * UR * (1 - reserveFactor);
188
+ });
189
+ }
190
+ getNextSupplyAPR(supplyAmount) {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ const supplyRate = yield this.getNextSupplyRate(supplyAmount);
193
+ return (0, utils_1.toAPR)(supplyRate);
194
+ });
195
+ }
196
+ // Reward Speed
197
+ getFarmingRewardsRate() {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ const poolTokenData = yield this.getPoolTokenData();
200
+ const rewards = poolTokenData.rewards;
201
+ if (rewards && rewards.length > 0)
202
+ return rewards;
203
+ const FINISH_DELAY = 3600 * 24;
204
+ const farmingPoolData = poolTokenData.farmingPool;
205
+ if (farmingPoolData === null)
206
+ return [];
207
+ const segmentLength = parseInt(farmingPoolData.segmentLength);
208
+ const epochAmount = parseFloat(farmingPoolData.epochAmount);
209
+ const epochBegin = parseInt(farmingPoolData.epochBegin);
210
+ const epochEnd = epochBegin + segmentLength;
211
+ const timestamp = (new Date()).getTime() / 1000;
212
+ if (timestamp - FINISH_DELAY > epochEnd) {
213
+ // How to manage better this case? Maybe check shares on distributor
214
+ return [];
215
+ }
216
+ return [{
217
+ rewardToken: imxes_1.IMX[this.getOffchain().network],
218
+ rewardRate: epochAmount / segmentLength
219
+ }];
220
+ });
221
+ }
222
+ // Farming
223
+ getFarmingRewards() {
224
+ return __awaiter(this, void 0, void 0, function* () {
225
+ return this.getNextFarmingRewards(0);
226
+ });
227
+ }
228
+ getNextFarmingRewards(borrowAmount) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ const farmingRewards = yield this.getFarmingRewardsRate();
231
+ const currentBorrowedUSD = yield this.getTotalBorrowsUSD();
232
+ const tokenPrice = yield this.getTokenPriceFast();
233
+ const additionalBorrowsUSD = borrowAmount * tokenPrice;
234
+ const totalBorrowedUSD = currentBorrowedUSD + additionalBorrowsUSD;
235
+ if (totalBorrowedUSD === 0)
236
+ return [];
237
+ const rewards = [];
238
+ for (const reward of farmingRewards) {
239
+ const rewardPrice = yield this.getOffchain().getPriceHelper().getDebankTokenPrice(reward.rewardToken);
240
+ rewards.push({
241
+ APR: (0, utils_1.toAPR)((rewardPrice * reward.rewardRate) / totalBorrowedUSD),
242
+ symbol: reward.rewardToken == "0x98878b06940ae243284ca214f92bb71a2b032b8a" ? "WMOVR" :
243
+ reward.rewardToken == "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" ? "WMATIC" :
244
+ reward.rewardToken == "0x6659a9c5cd313974343e30b4fdffd95bd4b4dcd2" ? "IMX" :
245
+ reward.rewardToken == "0x7b35ce522cb72e4077baeb96cb923a5529764a00" ? "IMX" :
246
+ reward.rewardToken == "0x60bb3d364b765c497c8ce50ae0ae3f0882c5bd05" ? "IMX" :
247
+ reward.rewardToken == "0x9c67ee39e3c4954396b9142010653f17257dd39c" ? "IMX" :
248
+ reward.rewardToken == "0xea6887e4a9cda1b77e70129e5fba830cdb5cddef" ? "IMX" :
249
+ reward.rewardToken == "0x900f1Ec5819FA087d368877cD03B265Bf1802667" ? "IMX" :
250
+ reward.rewardToken == "0xea38f1ccf77bf43f352636241b05dd8f6f5f52b2" ? "IMX" :
251
+ "IBEX",
252
+ });
253
+ }
254
+ return rewards;
255
+ });
256
+ }
257
+ getFarmingAPR() {
258
+ return __awaiter(this, void 0, void 0, function* () {
259
+ return this.getNextFarmingAPR(0);
260
+ });
261
+ }
262
+ getNextFarmingAPR(borrowAmount) {
263
+ return __awaiter(this, void 0, void 0, function* () {
264
+ const rewards = yield this.getNextFarmingRewards(borrowAmount);
265
+ let APR = 0;
266
+ for (const reward of rewards) {
267
+ APR += reward.APR;
268
+ }
269
+ return APR;
270
+ });
271
+ }
272
+ // Past Data
273
+ getPoolTokenDataPast24h() {
274
+ return __awaiter(this, void 0, void 0, function* () {
275
+ const lendingPoolDataPast = yield this.lendingPool.getLendingPoolDataPast24h();
276
+ if (!lendingPoolDataPast)
277
+ return undefined;
278
+ return lendingPoolDataPast[this.poolTokenType];
279
+ });
280
+ }
281
+ getPoolTokenDataPast7d() {
282
+ return __awaiter(this, void 0, void 0, function* () {
283
+ const lendingPoolDataPast = yield this.lendingPool.getLendingPoolDataPast7d();
284
+ if (!lendingPoolDataPast)
285
+ return undefined;
286
+ return lendingPoolDataPast[this.poolTokenType];
287
+ });
288
+ }
289
+ // Average Borrow APR
290
+ getAverageBorrowAPR(poolTokenDataPast, fallback) {
291
+ return __awaiter(this, void 0, void 0, function* () {
292
+ if (poolTokenDataPast) {
293
+ const accrualTimestampPast = parseFloat(poolTokenDataPast.accrualTimestamp);
294
+ const borrowIndexPast = parseFloat(poolTokenDataPast.borrowIndex);
295
+ const accrualTimestampNow = yield this.getAccrualTimestamp();
296
+ const borrowIndexNow = yield this.getBorrowIndex();
297
+ if (accrualTimestampNow > accrualTimestampPast) {
298
+ const borrowRate = (borrowIndexNow / borrowIndexPast - 1) / (accrualTimestampNow - accrualTimestampPast);
299
+ return borrowRate * 3600 * 24 * 365;
300
+ }
301
+ }
302
+ return fallback;
303
+ });
304
+ }
305
+ getAverage24hBorrowAPR() {
306
+ return __awaiter(this, void 0, void 0, function* () {
307
+ const poolTokenDataPast = yield this.getPoolTokenDataPast24h();
308
+ return this.getAverageBorrowAPR(poolTokenDataPast, this.getBorrowAPR());
309
+ });
310
+ }
311
+ getAverage7dBorrowAPR() {
312
+ return __awaiter(this, void 0, void 0, function* () {
313
+ const poolTokenDataPast = yield this.getPoolTokenDataPast7d();
314
+ return this.getAverageBorrowAPR(poolTokenDataPast, this.getAverage24hBorrowAPR());
315
+ });
316
+ }
317
+ // Average Supply APR
318
+ getAverageSupplyAPR(poolTokenDataPast, fallback) {
319
+ return __awaiter(this, void 0, void 0, function* () {
320
+ if (poolTokenDataPast) {
321
+ const accrualTimestampPast = parseFloat(poolTokenDataPast.accrualTimestamp);
322
+ const exchangeRatePast = parseFloat(poolTokenDataPast.exchangeRate);
323
+ const accrualTimestampNow = yield this.getAccrualTimestamp();
324
+ const exchangeRateNow = yield this.getExchangeRate();
325
+ if (accrualTimestampNow > accrualTimestampPast) {
326
+ const supplyRate = (exchangeRateNow / exchangeRatePast - 1) / (accrualTimestampNow - accrualTimestampPast);
327
+ return supplyRate * 3600 * 24 * 365;
328
+ }
329
+ }
330
+ return fallback;
331
+ });
332
+ }
333
+ getAverage24hSupplyAPR() {
334
+ return __awaiter(this, void 0, void 0, function* () {
335
+ const poolTokenDataPast = yield this.getPoolTokenDataPast24h();
336
+ return this.getAverageSupplyAPR(poolTokenDataPast, this.getSupplyAPR());
337
+ });
338
+ }
339
+ getAverage7dSupplyAPR() {
340
+ return __awaiter(this, void 0, void 0, function* () {
341
+ const poolTokenDataPast = yield this.getPoolTokenDataPast7d();
342
+ return this.getAverageSupplyAPR(poolTokenDataPast, this.getAverage24hSupplyAPR());
343
+ });
344
+ }
345
+ // Token price getters
346
+ getTokenPriceFast(fallback = true) {
347
+ const _super = Object.create(null, {
348
+ getTokenPriceFast: { get: () => super.getTokenPriceFast }
349
+ });
350
+ return __awaiter(this, void 0, void 0, function* () {
351
+ let tokenAddress = yield this.getUnderlyingAddress();
352
+ let tokenPrices = yield this.getOffchain().getPriceHelper().getSubgraphTokensPrice();
353
+ let tokenPrice = tokenPrices[tokenAddress];
354
+ if (tokenPrice !== undefined && tokenPrice > 0)
355
+ return tokenPrice;
356
+ return _super.getTokenPriceFast.call(this, fallback);
357
+ });
358
+ }
359
+ getTokenPriceAccurate() {
360
+ return __awaiter(this, void 0, void 0, function* () {
361
+ let tokenAddress = yield this.getUnderlyingAddress();
362
+ return this.getOffchain().getPriceHelper().getDebankTokenPrice(tokenAddress);
363
+ });
364
+ }
365
+ }
366
+ exports.default = OffchainBorrowable;