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
@@ -0,0 +1,28 @@
1
+ import { BigNumber } from "ethers";
2
+ import Account from "../index";
3
+ import * as lendingPool from './lendingPool';
4
+ import LendingPool from "./lendingPool";
5
+ import PoolToken from "./poolToken";
6
+ import { AirdropData, Contract } from "../../types";
7
+ import { Address, AddressIndex, Factory, FactoryIndex, LendingPoolIndex } from '../../../config/types';
8
+ import LendingVault from './lendingVault';
9
+ export { lendingPool, LendingPool, PoolToken, LendingVault, };
10
+ export default class Interactions {
11
+ account: Account;
12
+ interactionsLLPs: LendingPoolIndex<Promise<LendingPool>>;
13
+ interactionsLVs: AddressIndex<Promise<LendingVault>>;
14
+ cache: {
15
+ defaultRouterContract?: Contract;
16
+ };
17
+ constructor(account: Account);
18
+ cleanCache(): Promise<void>;
19
+ private initializeInteractionsLendingPool;
20
+ getInteractionsLendingPool(factory: Factory, pair: Address): Promise<LendingPool>;
21
+ private initializeInteractionsLendingVault;
22
+ getInteractionsLendingVault(vaultAddress: Address): Promise<LendingVault>;
23
+ send(method: any, onTransactionHash: Function, value?: BigNumber): Promise<any>;
24
+ getDefaultRouterContract(): any;
25
+ claimAirdrop(airdropData: AirdropData, merkleDistributor: Contract, onTransactionHash: Function): Promise<any>;
26
+ claims(pairAddresses: FactoryIndex<Address[]>, onTransactionHash: Function): Promise<any>;
27
+ claimDistributor(claimableAddress: Address, onTransactionHash: Function): Promise<any>;
28
+ }
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.LendingVault = exports.PoolToken = exports.LendingPool = exports.lendingPool = void 0;
39
+ const ethers_1 = require("ethers");
40
+ const lendingPool = __importStar(require("./lendingPool"));
41
+ exports.lendingPool = lendingPool;
42
+ const lendingPool_1 = __importDefault(require("./lendingPool"));
43
+ exports.LendingPool = lendingPool_1.default;
44
+ const poolToken_1 = __importDefault(require("./poolToken"));
45
+ exports.PoolToken = poolToken_1.default;
46
+ const types_1 = require("../../../config/types");
47
+ const lendingVault_1 = __importDefault(require("./lendingVault"));
48
+ exports.LendingVault = lendingVault_1.default;
49
+ const routers_1 = require("../../../config/contracts/routers");
50
+ const ZERO = ethers_1.BigNumber.from(0);
51
+ class Interactions {
52
+ constructor(account) {
53
+ this.cache = {};
54
+ this.account = account;
55
+ this.interactionsLLPs = {};
56
+ this.interactionsLVs = {};
57
+ }
58
+ cleanCache() {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ this.cache = {};
61
+ });
62
+ }
63
+ initializeInteractionsLendingPool(factory, pair) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ const lendingPool = yield this.account.getLendingPool(factory, pair);
66
+ return new lendingPool_1.default(this, lendingPool);
67
+ });
68
+ }
69
+ getInteractionsLendingPool(factory, pair) {
70
+ return __awaiter(this, void 0, void 0, function* () {
71
+ if (!this.interactionsLLPs[factory])
72
+ this.interactionsLLPs[factory] = {};
73
+ const interactionsLendingPools = this.interactionsLLPs[factory];
74
+ if (!interactionsLendingPools[pair])
75
+ interactionsLendingPools[pair] = this.initializeInteractionsLendingPool(factory, pair);
76
+ return interactionsLendingPools[pair];
77
+ });
78
+ }
79
+ initializeInteractionsLendingVault(vaultAddress) {
80
+ return __awaiter(this, void 0, void 0, function* () {
81
+ const lendingVault = yield this.account.getLendingVault(vaultAddress);
82
+ return new lendingVault_1.default(this, lendingVault);
83
+ });
84
+ }
85
+ getInteractionsLendingVault(vaultAddress) {
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ if (!this.interactionsLVs[vaultAddress])
88
+ this.interactionsLVs[vaultAddress] = this.initializeInteractionsLendingVault(vaultAddress);
89
+ return this.interactionsLVs[vaultAddress];
90
+ });
91
+ }
92
+ send(method, onTransactionHash, value = ZERO) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ try {
95
+ yield method.call({ from: this.account.account, value });
96
+ return method.send({ from: this.account.account, value }).on('transactionHash', onTransactionHash);
97
+ }
98
+ catch (e) {
99
+ console.error(e);
100
+ }
101
+ });
102
+ }
103
+ getDefaultRouterContract() {
104
+ if (!this.cache.defaultRouterContract) {
105
+ const address = routers_1.DEFAULT_ROUTER[this.account.onchain.network];
106
+ if (!address) {
107
+ console.error("SimpleUniswapOracle address not found");
108
+ return null;
109
+ }
110
+ this.cache.defaultRouterContract = this.account.onchain.contractsHelper.newRouterV2(address);
111
+ }
112
+ return this.cache.defaultRouterContract;
113
+ }
114
+ claimAirdrop(airdropData, merkleDistributor, onTransactionHash) {
115
+ return __awaiter(this, void 0, void 0, function* () {
116
+ return this.send(merkleDistributor.methods.claim(airdropData.index, this.account.account, airdropData.amount, airdropData.proof), onTransactionHash);
117
+ });
118
+ }
119
+ claims(pairAddresses, onTransactionHash) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ const requests = [];
122
+ for (const factory in pairAddresses) {
123
+ for (const pairAddress of pairAddresses[factory]) {
124
+ for (const poolToken of [types_1.PoolTokenType.BorrowableA, types_1.PoolTokenType.BorrowableB]) {
125
+ requests.push((() => __awaiter(this, void 0, void 0, function* () {
126
+ const accountBorrowable = (yield this.account.getLendingPool(factory, pairAddress)).accountPoolTokens[poolToken];
127
+ const borrowable = accountBorrowable.offchainPoolToken;
128
+ const pendingReward = (yield accountBorrowable.getAvailableFarmingReward()) + (yield accountBorrowable.getAvailableRewarderReward());
129
+ return {
130
+ hasPendingReward: pendingReward > 0,
131
+ hasImpermaxChef: yield borrowable.hasImpermaxChef(),
132
+ borrowableAddress: yield borrowable.getPoolTokenAddress(),
133
+ };
134
+ }))());
135
+ }
136
+ }
137
+ }
138
+ const data = yield Promise.all(requests);
139
+ const toClaim = [];
140
+ for (const borrowable of data) {
141
+ if (!borrowable.hasPendingReward)
142
+ continue;
143
+ toClaim.push(borrowable.borrowableAddress);
144
+ }
145
+ if (toClaim.length > 0) {
146
+ const impermaxChef = this.account.onchain.contractsHelper.impermaxChef;
147
+ return this.send(impermaxChef.methods.massHarvest(toClaim, this.account.account), onTransactionHash);
148
+ }
149
+ });
150
+ }
151
+ claimDistributor(claimableAddress, onTransactionHash) {
152
+ return __awaiter(this, void 0, void 0, function* () {
153
+ const claimable = this.account.onchain.contractsHelper.newClaimable(claimableAddress);
154
+ return this.send(claimable.methods.claim(), onTransactionHash);
155
+ });
156
+ }
157
+ }
158
+ exports.default = Interactions;
@@ -0,0 +1,16 @@
1
+ import { PoolTokenType } from '../../../../config/types';
2
+ import LendingPool from './index';
3
+ import { PermitData } from '../../../types';
4
+ import { BigNumber } from 'ethers';
5
+ import * as account from '../../index';
6
+ import PoolToken from '../poolToken';
7
+ export default class Borrowable extends PoolToken {
8
+ interactionsLendingPool: LendingPool;
9
+ accountPoolToken: account.lendingPool.Borrowable;
10
+ constructor(interactionsLendingPool: LendingPool, poolTokenType: PoolTokenType);
11
+ getInteractions: () => account.interactions.default;
12
+ getAccountAddress: () => string;
13
+ getRouterContract: () => any;
14
+ borrow(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
15
+ repay(amount: BigNumber, onTransactionHash: Function): Promise<any>;
16
+ }
@@ -0,0 +1,49 @@
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 general_1 = require("../../../../config/general");
16
+ const poolToken_1 = __importDefault(require("../poolToken"));
17
+ class Borrowable extends poolToken_1.default {
18
+ constructor(interactionsLendingPool, poolTokenType) {
19
+ super();
20
+ this.getInteractions = () => this.interactionsLendingPool.interactions;
21
+ this.getAccountAddress = () => this.interactionsLendingPool.getAccountAddress();
22
+ this.getRouterContract = () => this.interactionsLendingPool.getRouterContract();
23
+ this.interactionsLendingPool = interactionsLendingPool;
24
+ this.accountPoolToken = interactionsLendingPool.lendingPool.accountPoolTokens[poolTokenType];
25
+ }
26
+ borrow(amount, permitData, onTransactionHash) {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const { router, ptAddress, account, data, deadline } = yield this.getSendData(permitData);
29
+ if (yield this.isWETH()) {
30
+ return this.send(router.methods.borrowETH(ptAddress, amount, account, deadline, data), onTransactionHash);
31
+ }
32
+ else {
33
+ return this.send(router.methods.borrow(ptAddress, amount, account, deadline, data), onTransactionHash);
34
+ }
35
+ });
36
+ }
37
+ repay(amount, onTransactionHash) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const { router, ptAddress, account } = yield this.getSendData(null);
40
+ if (yield this.isWETH()) {
41
+ return this.send(router.methods.repayETH(ptAddress, account, general_1.DEADLINE), onTransactionHash, amount);
42
+ }
43
+ else {
44
+ return this.send(router.methods.repay(ptAddress, amount, account, general_1.DEADLINE), onTransactionHash);
45
+ }
46
+ });
47
+ }
48
+ }
49
+ exports.default = Borrowable;
@@ -0,0 +1,15 @@
1
+ import { PoolTokenType } from '../../../../config/types';
2
+ import LendingPool from './index';
3
+ import { PermitData } from '../../../types';
4
+ import { BigNumber } from 'ethers';
5
+ import * as account from '../../index';
6
+ import PoolToken from '../poolToken';
7
+ export default class Collateral extends PoolToken {
8
+ interactionsLendingPool: LendingPool;
9
+ accountPoolToken: account.lendingPool.Collateral;
10
+ constructor(interactionsLendingPool: LendingPool, poolTokenType: PoolTokenType);
11
+ getInteractions: () => account.interactions.default;
12
+ getAccountAddress: () => string;
13
+ getRouterContract: () => any;
14
+ protected mint(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
15
+ }
@@ -0,0 +1,33 @@
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 poolToken_1 = __importDefault(require("../poolToken"));
16
+ class Collateral extends poolToken_1.default {
17
+ constructor(interactionsLendingPool, poolTokenType) {
18
+ super();
19
+ this.getInteractions = () => this.interactionsLendingPool.interactions;
20
+ this.getAccountAddress = () => this.interactionsLendingPool.getAccountAddress();
21
+ this.getRouterContract = () => this.interactionsLendingPool.getRouterContract();
22
+ this.interactionsLendingPool = interactionsLendingPool;
23
+ this.accountPoolToken = interactionsLendingPool.lendingPool.accountPoolTokens[poolTokenType];
24
+ }
25
+ mint(amount, permitData, onTransactionHash) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ const { router, ptAddress, account, data, deadline } = yield this.getSendData(permitData);
28
+ return this.send(router.methods.mintCollateral(ptAddress, amount, account, deadline, data), onTransactionHash);
29
+ });
30
+ }
31
+ ;
32
+ }
33
+ exports.default = Collateral;
@@ -0,0 +1,41 @@
1
+ import Interactions from "../index";
2
+ import { BigNumber } from "ethers";
3
+ import { PoolTokenType } from '../../../../config/types';
4
+ import { PermitData } from '../../../types';
5
+ import Collateral from './collateral';
6
+ import Borrowable from './borrowable';
7
+ import * as account from '../../index';
8
+ export { Borrowable, Collateral, };
9
+ export default class LendingPool {
10
+ interactions: Interactions;
11
+ accountLendingPool: account.LendingPool;
12
+ interactionsPoolToken: {
13
+ [PoolTokenType.Collateral]: Collateral;
14
+ [PoolTokenType.BorrowableA]: Borrowable;
15
+ [PoolTokenType.BorrowableB]: Borrowable;
16
+ };
17
+ constructor(interactions: Interactions, accountLendingPool: account.LendingPool);
18
+ getRouterLendingPool: () => import("../../../impermaxFactory").LendingPool;
19
+ getRouterContract: () => any;
20
+ getAccountAddress: () => string;
21
+ send: (method: any, onTransactionHash: Function) => Promise<any>;
22
+ getLeverageAmounts(leverage: number, slippage: number): Promise<{
23
+ bAmountA: number;
24
+ bAmountB: number;
25
+ cAmount: number;
26
+ bAmountAMin: number;
27
+ bAmountBMin: number;
28
+ cAmountMin: number;
29
+ }>;
30
+ leverage(amountA: BigNumber, amountB: BigNumber, amountAMin: BigNumber, amountBMin: BigNumber, permitDataA: PermitData, permitDataB: PermitData, onTransactionHash: Function): Promise<any>;
31
+ getDeleverageAmounts(changeCollateralAmount: number, slippage: number): Promise<{
32
+ bAmountA: number;
33
+ bAmountB: number;
34
+ cAmount: number;
35
+ bAmountAMin: number;
36
+ bAmountBMin: number;
37
+ }>;
38
+ deleverage(tokens: BigNumber, amountAMin: BigNumber, amountBMin: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
39
+ trackBorrows(onTransactionHash: Function): Promise<any>;
40
+ reinvest(onTransactionHash: Function): Promise<any>;
41
+ }
@@ -0,0 +1,120 @@
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
+ exports.Collateral = exports.Borrowable = void 0;
16
+ const utils_1 = require("../../../../utils");
17
+ const types_1 = require("../../../../config/types");
18
+ const general_1 = require("../../../../config/general");
19
+ const collateral_1 = __importDefault(require("./collateral"));
20
+ exports.Collateral = collateral_1.default;
21
+ const borrowable_1 = __importDefault(require("./borrowable"));
22
+ exports.Borrowable = borrowable_1.default;
23
+ class LendingPool {
24
+ constructor(interactions, accountLendingPool) {
25
+ this.getRouterLendingPool = () => this.accountLendingPool.lendingPool;
26
+ this.getRouterContract = () => this.accountLendingPool.lendingPool.factory.getRouter();
27
+ this.getAccountAddress = () => this.accountLendingPool.account.account;
28
+ this.send = (method, onTransactionHash) => this.interactions.send(method, onTransactionHash);
29
+ this.interactions = interactions;
30
+ this.accountLendingPool = accountLendingPool;
31
+ this.interactionsPoolToken = {
32
+ [types_1.PoolTokenType.Collateral]: new collateral_1.default(this, types_1.PoolTokenType.Collateral),
33
+ [types_1.PoolTokenType.BorrowableA]: new borrowable_1.default(this, types_1.PoolTokenType.BorrowableA),
34
+ [types_1.PoolTokenType.BorrowableB]: new borrowable_1.default(this, types_1.PoolTokenType.BorrowableB),
35
+ };
36
+ }
37
+ getLeverageAmounts(leverage, slippage) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const [priceA, priceB] = yield this.lendingPool.lendingPool.getMarketPriceDenomLP();
40
+ // This function must use the market price, but the account leverage is calculated with the TWAP, so we need an adjustFactor
41
+ const [priceATWAP, priceBTWAP] = yield this.lendingPool.lendingPool.getPriceDenomLP();
42
+ const diff = priceA > priceATWAP ? priceA / priceATWAP : priceATWAP / priceA;
43
+ const adjustFactor = Math.pow((0, utils_1.impermanentLoss)(Math.pow(diff, 2)), leverage);
44
+ const currentLeverage = yield this.lendingPool.getLeverage();
45
+ const collateralValue = yield this.lendingPool.getCollateral().getDeposited();
46
+ const changeCollateralValue = (collateralValue * leverage / currentLeverage - collateralValue) * adjustFactor;
47
+ const valueForEach = changeCollateralValue / 2;
48
+ const bAmountA = priceA > 0 ? valueForEach / priceA : 0;
49
+ const bAmountB = priceB > 0 ? valueForEach / priceB : 0;
50
+ const cAmount = changeCollateralValue ? changeCollateralValue : 0;
51
+ return {
52
+ bAmountA: bAmountA,
53
+ bAmountB: bAmountB,
54
+ cAmount: cAmount,
55
+ bAmountAMin: bAmountA / slippage,
56
+ bAmountBMin: bAmountB / slippage,
57
+ cAmountMin: cAmount / Math.sqrt(slippage),
58
+ };
59
+ });
60
+ }
61
+ leverage(amountA, amountB, amountAMin, amountBMin, permitDataA, permitDataB, onTransactionHash) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ const router = this.getRouterContract();
64
+ const dataA = permitDataA ? permitDataA.permitData : '0x';
65
+ const dataB = permitDataB ? permitDataB.permitData : '0x';
66
+ if (permitDataA && permitDataB && !permitDataA.deadline.eq(permitDataB.deadline))
67
+ return console.error("Permits deadline are not equal");
68
+ const deadline = permitDataA ? permitDataA.deadline : permitDataB ? permitDataB.deadline : general_1.DEADLINE;
69
+ const pairAddress = this.getRouterLendingPool().pairAddress;
70
+ const account = this.lendingPool.account.account;
71
+ return this.send(router.methods.leverage(pairAddress, amountA, amountB, amountAMin, amountBMin, account, deadline, dataA, dataB), onTransactionHash);
72
+ });
73
+ }
74
+ getDeleverageAmounts(changeCollateralAmount, slippage) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ changeCollateralAmount = changeCollateralAmount !== null && changeCollateralAmount !== void 0 ? changeCollateralAmount : 0;
77
+ const [priceA, priceB] = yield this.lendingPool.lendingPool.getMarketPriceDenomLP();
78
+ const valueForEach = changeCollateralAmount / 2;
79
+ const bAmountA = priceA > 0 ? valueForEach / priceA : 0;
80
+ const bAmountB = priceB > 0 ? valueForEach / priceB : 0;
81
+ return {
82
+ bAmountA: bAmountA,
83
+ bAmountB: bAmountB,
84
+ cAmount: changeCollateralAmount,
85
+ bAmountAMin: bAmountA / Math.sqrt(slippage),
86
+ bAmountBMin: bAmountB / Math.sqrt(slippage),
87
+ };
88
+ });
89
+ }
90
+ deleverage(tokens, amountAMin, amountBMin, permitData, onTransactionHash) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const router = this.getRouterContract();
93
+ const data = permitData ? permitData.permitData : '0x';
94
+ const deadline = permitData ? permitData.deadline : general_1.DEADLINE;
95
+ const pairAddress = this.getRouterLendingPool().pairAddress;
96
+ return this.send(router.methods.deleverage(pairAddress, tokens, amountAMin, amountBMin, deadline, data), onTransactionHash);
97
+ });
98
+ }
99
+ trackBorrows(onTransactionHash) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ const account = this.lendingPool.account.account;
102
+ const claimAggregator = this.interactions.account.onchain.contractsHelper.claimAggregator;
103
+ const toTrack = [];
104
+ for (const borrowable of [types_1.PoolTokenType.BorrowableA, types_1.PoolTokenType.BorrowableB]) {
105
+ const b = this.lendingPool.accountPoolTokens[borrowable];
106
+ if ((yield b.getBorrowed()) === 0 || (yield b.getFarmingShares()) > 0)
107
+ continue;
108
+ toTrack.push(yield this.getRouterLendingPool().poolTokens[borrowable].getPoolTokenAddress());
109
+ }
110
+ return this.send(claimAggregator.methods.trackBorrows(account, toTrack), onTransactionHash);
111
+ });
112
+ }
113
+ reinvest(onTransactionHash) {
114
+ return __awaiter(this, void 0, void 0, function* () {
115
+ const stakedLPToken = yield this.getRouterLendingPool().getStakedLPToken();
116
+ return this.send(stakedLPToken.methods.reinvest(), onTransactionHash);
117
+ });
118
+ }
119
+ }
120
+ exports.default = LendingPool;
@@ -0,0 +1,10 @@
1
+ import Interactions from "./index";
2
+ import * as account from '../index';
3
+ export default class LendingVault {
4
+ interactions: Interactions;
5
+ accountLendingVault: account.LendingVault;
6
+ constructor(interactions: Interactions, accountLendingVault: account.LendingVault);
7
+ getInteractions: () => Interactions;
8
+ getAccountAddress: () => string;
9
+ getRouterContract: () => any;
10
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class LendingVault {
4
+ constructor(interactions, accountLendingVault) {
5
+ this.getInteractions = () => this.interactions;
6
+ this.getAccountAddress = () => this.accountLendingVault.account.account;
7
+ this.getRouterContract = () => this.getInteractions().getDefaultRouterContract();
8
+ this.interactions = interactions;
9
+ this.accountLendingVault = accountLendingVault;
10
+ }
11
+ }
12
+ exports.default = LendingVault;
@@ -0,0 +1,33 @@
1
+ import { ethers, BigNumber } from "ethers";
2
+ import { ApprovalType, Contract, PermitData } from "../../types";
3
+ import { Address } from '../../../config/types';
4
+ import Interactions from './index';
5
+ import * as onchain from '../../index';
6
+ export default abstract class PoolToken {
7
+ accountPoolToken: onchain.account.PoolToken;
8
+ abstract getInteractions(): Interactions;
9
+ abstract getAccountAddress(): Address;
10
+ abstract getRouterContract(): Contract;
11
+ getImpermaxRouter: () => onchain.default;
12
+ getPoolToken: () => onchain.PoolToken;
13
+ send(method: any, onTransactionHash: Function, value?: BigNumber): Promise<any>;
14
+ getOwnerSpender(): {
15
+ owner: string;
16
+ spender: any;
17
+ };
18
+ isWETH(): Promise<boolean>;
19
+ getAllowance(approvalType: ApprovalType): Promise<ethers.BigNumber>;
20
+ approve(approvalType: ApprovalType, amount: BigNumber, onTransactionHash: Function): Promise<any>;
21
+ getPermitData(approvalType: ApprovalType, amount: BigNumber, deadlineArg: BigNumber | null, callBack: (permitData: PermitData | null) => void): Promise<void>;
22
+ protected getSendData(permitData: PermitData | null): Promise<{
23
+ router: any;
24
+ ptAddress: any;
25
+ account: string;
26
+ data: string;
27
+ deadline: ethers.BigNumber;
28
+ }>;
29
+ protected mintETH(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
30
+ protected mint(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
31
+ deposit(amount: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
32
+ withdraw(tokens: BigNumber, permitData: PermitData, onTransactionHash: Function): Promise<any>;
33
+ }