@gearbox-protocol/sdk 1.22.3 → 1.23.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 (283) hide show
  1. package/lib/apy/convexAPY.d.ts +10 -10
  2. package/lib/apy/convexAPY.js +100 -121
  3. package/lib/apy/curveAPY.d.ts +3 -4
  4. package/lib/apy/curveAPY.js +57 -111
  5. package/lib/apy/index.js +4 -6
  6. package/lib/apy/lidoAPY.d.ts +1 -2
  7. package/lib/apy/lidoAPY.js +14 -62
  8. package/lib/apy/yearnAPY.d.ts +2 -3
  9. package/lib/apy/yearnAPY.js +26 -82
  10. package/lib/contracts/contracts.js +9 -22
  11. package/lib/contracts/contractsRegister.js +39 -51
  12. package/lib/contracts/protocols.js +10 -11
  13. package/lib/core/adapter.js +9 -4
  14. package/lib/core/assets.d.ts +6 -7
  15. package/lib/core/assets.js +60 -70
  16. package/lib/core/chains.js +30 -80
  17. package/lib/core/constants.d.ts +9 -10
  18. package/lib/core/constants.js +9 -12
  19. package/lib/core/creditAccount.d.ts +20 -20
  20. package/lib/core/creditAccount.js +123 -134
  21. package/lib/core/creditAccount.spec.js +50 -52
  22. package/lib/core/creditManager.d.ts +26 -26
  23. package/lib/core/creditManager.js +172 -136
  24. package/lib/core/creditManager.spec.js +59 -61
  25. package/lib/core/creditSession.d.ts +12 -13
  26. package/lib/core/creditSession.js +120 -77
  27. package/lib/core/errors.d.ts +2 -3
  28. package/lib/core/errors.js +11 -27
  29. package/lib/core/eventOrTx.js +35 -73
  30. package/lib/core/events.d.ts +31 -24
  31. package/lib/core/events.js +702 -702
  32. package/lib/core/operations.js +11 -5
  33. package/lib/core/pool/data.d.ts +29 -29
  34. package/lib/core/pool/data.js +153 -112
  35. package/lib/core/pool/operation.d.ts +1 -2
  36. package/lib/core/pool/operation.js +23 -35
  37. package/lib/core/priceOracle.d.ts +6 -6
  38. package/lib/core/priceOracle.js +23 -29
  39. package/lib/core/rewardClaimer.d.ts +2 -2
  40. package/lib/core/rewardClaimer.js +5 -48
  41. package/lib/core/rewardConvex.js +54 -114
  42. package/lib/core/rewardConvex.spec.js +41 -43
  43. package/lib/core/strategy.d.ts +5 -6
  44. package/lib/core/strategy.js +67 -69
  45. package/lib/core/strategy.spec.js +32 -34
  46. package/lib/core/tokenDistributor.d.ts +1 -2
  47. package/lib/core/trade.d.ts +6 -6
  48. package/lib/core/trade.js +70 -115
  49. package/lib/core/transactions.d.ts +21 -22
  50. package/lib/core/transactions.js +285 -308
  51. package/lib/index.d.ts +0 -2
  52. package/lib/index.js +0 -2
  53. package/lib/oracles/oracles.d.ts +1 -2
  54. package/lib/oracles/priceFeeds.js +2 -3
  55. package/lib/parsers/ERC20Parser.js +20 -38
  56. package/lib/parsers/abstractParser.js +33 -31
  57. package/lib/parsers/addressProviderParser.js +12 -30
  58. package/lib/parsers/airdropDistributorParser.js +12 -30
  59. package/lib/parsers/convexBaseRewardPoolAdapterParser.js +24 -42
  60. package/lib/parsers/convexBaseRewardPoolAdapterParser.spec.js +11 -11
  61. package/lib/parsers/convexBoosterAdapterParser.js +26 -44
  62. package/lib/parsers/convexBoosterAdapterParser.spec.js +10 -10
  63. package/lib/parsers/convextRewardPoolParser.js +12 -30
  64. package/lib/parsers/creditFacadeParser.js +26 -45
  65. package/lib/parsers/creditFacadeParser.spec.js +13 -13
  66. package/lib/parsers/creditManagerParser.js +12 -30
  67. package/lib/parsers/curveAdapterParser.js +60 -78
  68. package/lib/parsers/curveAdapterParser.spec.js +20 -27
  69. package/lib/parsers/dataCompressorParser.js +12 -30
  70. package/lib/parsers/lidoAdapterParser.js +15 -33
  71. package/lib/parsers/lidoAdapterParser.spec.js +9 -9
  72. package/lib/parsers/lidoOracleParser.js +12 -30
  73. package/lib/parsers/lidoSTETHParser.js +19 -37
  74. package/lib/parsers/multicallParser.js +16 -34
  75. package/lib/parsers/offchainOracleParser.js +13 -31
  76. package/lib/parsers/poolParser.js +11 -29
  77. package/lib/parsers/priceOracleParser.js +13 -31
  78. package/lib/parsers/txParser.js +86 -96
  79. package/lib/parsers/uniV2AdapterParser.js +35 -55
  80. package/lib/parsers/uniV2AdapterParser.spec.js +15 -16
  81. package/lib/parsers/uniV3AdapterParser.js +56 -74
  82. package/lib/parsers/uniV3AdapterParser.spec.js +23 -24
  83. package/lib/parsers/wstETHAdapterParser.js +25 -43
  84. package/lib/parsers/wstETHAdapterParser.spec.js +11 -11
  85. package/lib/parsers/yearnAdapterParser.spec.js +17 -17
  86. package/lib/parsers/yearnV2AdapterParser.js +25 -43
  87. package/lib/pathfinder/core.d.ts +3 -4
  88. package/lib/pathfinder/pathOptions.js +52 -101
  89. package/lib/pathfinder/pathOptions.spec.js +55 -57
  90. package/lib/pathfinder/pathfinder.d.ts +3 -3
  91. package/lib/pathfinder/pathfinder.js +109 -202
  92. package/lib/pathfinder/pathfinder.spec.js +13 -13
  93. package/lib/strategies/convex.js +111 -123
  94. package/lib/strategies/creditFacade.js +34 -37
  95. package/lib/strategies/curve.js +74 -80
  96. package/lib/strategies/lido.js +26 -32
  97. package/lib/strategies/uniswapV2.js +21 -24
  98. package/lib/strategies/uniswapV3.js +33 -36
  99. package/lib/strategies/yearn.js +47 -59
  100. package/lib/tokens/balancer.js +3 -5
  101. package/lib/tokens/convex.js +14 -29
  102. package/lib/tokens/curveLP.js +22 -28
  103. package/lib/tokens/gear.js +1 -1
  104. package/lib/tokens/normal.js +3 -5
  105. package/lib/tokens/token.js +29 -35
  106. package/lib/tokens/tokenData.d.ts +0 -9
  107. package/lib/tokens/tokenData.js +17 -15
  108. package/lib/tokens/yearn.js +3 -5
  109. package/lib/types/factories/@chainlink/contracts/src/v0.8/interfaces/AggregatorInterface__factory.js +9 -12
  110. package/lib/types/factories/@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface__factory.js +9 -12
  111. package/lib/types/factories/@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface__factory.js +9 -12
  112. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IACL.sol/IACLEvents__factory.js +9 -12
  113. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IACL.sol/IACLExceptions__factory.js +9 -12
  114. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IACL.sol/IACL__factory.js +9 -12
  115. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IAccountFactory.sol/IAccountFactoryEvents__factory.js +9 -12
  116. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IAccountFactory.sol/IAccountFactoryGetters__factory.js +9 -12
  117. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IAccountFactory.sol/IAccountFactory__factory.js +9 -12
  118. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IAddressProvider.sol/IAddressProviderEvents__factory.js +9 -12
  119. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IAddressProvider.sol/IAddressProvider__factory.js +9 -12
  120. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IAirdropDistributor.sol/IAirdropDistributorEvents__factory.js +9 -12
  121. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IAirdropDistributor.sol/IAirdropDistributor__factory.js +9 -12
  122. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IContractsRegister.sol/IContractsRegisterEvents__factory.js +9 -12
  123. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IContractsRegister.sol/IContractsRegister__factory.js +9 -12
  124. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditAccount.sol/ICrediAccountExceptions__factory.js +9 -12
  125. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditAccount.sol/ICreditAccount__factory.js +9 -12
  126. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorEvents__factory.js +9 -12
  127. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditConfigurator.sol/ICreditConfiguratorExceptions__factory.js +9 -12
  128. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditConfigurator.sol/ICreditConfigurator__factory.js +9 -12
  129. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditFacade.sol/ICreditFacadeEvents__factory.js +9 -12
  130. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExceptions__factory.js +9 -12
  131. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended__factory.js +9 -12
  132. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditFacade.sol/ICreditFacade__factory.js +9 -12
  133. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Events__factory.js +9 -12
  134. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2Exceptions__factory.js +9 -12
  135. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ICreditManagerV2.sol/ICreditManagerV2__factory.js +9 -12
  136. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDataCompressor.sol/IDataCompressorExceptions__factory.js +9 -12
  137. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDataCompressor.sol/IDataCompressor__factory.js +9 -12
  138. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDegenDistributor.sol/IDegenDistributorEvents__factory.js +9 -12
  139. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDegenDistributor.sol/IDegenDistributor__factory.js +9 -12
  140. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDegenNFT.sol/IDegenNFTEvents__factory.js +9 -12
  141. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDegenNFT.sol/IDegenNFTExceptions__factory.js +9 -12
  142. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDegenNFT.sol/IDegenNFT__factory.js +9 -12
  143. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDieselToken.sol/IDieselTokenExceptions__factory.js +9 -12
  144. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IDieselToken.sol/IDieselToken__factory.js +9 -12
  145. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IInterestRateModel__factory.js +9 -12
  146. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedEvents__factory.js +9 -12
  147. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeedExceptions__factory.js +9 -12
  148. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/ILPPriceFeed.sol/ILPPriceFeed__factory.js +9 -12
  149. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IPhantomERC20__factory.js +9 -12
  150. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IPoolService.sol/IPoolServiceEvents__factory.js +9 -12
  151. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IPoolService.sol/IPoolService__factory.js +9 -12
  152. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IPriceFeedType__factory.js +9 -12
  153. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Events__factory.js +9 -12
  154. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Exceptions__factory.js +9 -12
  155. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2Ext__factory.js +9 -12
  156. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IPriceOracle.sol/IPriceOracleV2__factory.js +9 -12
  157. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IVersion__factory.js +9 -12
  158. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/IWETHGateway__factory.js +9 -12
  159. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/V1/ICreditFilter__factory.js +9 -12
  160. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/V1/ICreditManager__factory.js +9 -12
  161. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/adapters/IAdapter.sol/IAdapterExceptions__factory.js +9 -12
  162. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/adapters/IAdapter.sol/IAdapter__factory.js +9 -12
  163. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapterExceptions__factory.js +9 -12
  164. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/adapters/IUniversalAdapter.sol/IUniversalAdapter__factory.js +9 -12
  165. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/interfaces/external/IWETH__factory.js +9 -12
  166. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/pool/PoolService__factory.js +27 -50
  167. package/lib/types/factories/@gearbox-protocol/core-v2/contracts/test/interfaces/ITokenTestSuite__factory.js +9 -12
  168. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/IBaseRewardPool__factory.js +9 -12
  169. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/IBooster__factory.js +9 -12
  170. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/IClaimZap__factory.js +9 -12
  171. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/IConvexToken__factory.js +9 -12
  172. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/IRewards.sol/IBasicRewards__factory.js +9 -12
  173. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/IRewards.sol/IRewards__factory.js +9 -12
  174. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/ICrvDeposit__factory.js +9 -12
  175. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/ICurveGauge__factory.js +9 -12
  176. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/ICurveVoteEscrow__factory.js +9 -12
  177. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IDeposit__factory.js +9 -12
  178. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IFeeDistro__factory.js +9 -12
  179. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IMinter__factory.js +9 -12
  180. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IPools__factory.js +9 -12
  181. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IRegistry__factory.js +9 -12
  182. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IRewardFactory__factory.js +9 -12
  183. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IRewards__factory.js +9 -12
  184. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IStaker__factory.js +9 -12
  185. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IStashFactory__factory.js +9 -12
  186. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IStash__factory.js +9 -12
  187. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/ITokenFactory__factory.js +9 -12
  188. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/ITokenMinter__factory.js +9 -12
  189. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IVestedEscrow__factory.js +9 -12
  190. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IVoting__factory.js +9 -12
  191. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/convex/Interfaces.sol/IWalletChecker__factory.js +9 -12
  192. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/curve/ICurvePoolStETH__factory.js +9 -12
  193. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/curve/ICurvePool_2.sol/ICurvePool2Assets__factory.js +9 -12
  194. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/curve/ICurvePool_3.sol/ICurvePool3Assets__factory.js +9 -12
  195. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/curve/ICurvePool_4.sol/ICurvePool4Assets__factory.js +9 -12
  196. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/curve/ICurvePool__factory.js +9 -12
  197. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/curve/ICurveRegistry__factory.js +9 -12
  198. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/lido/ILidoOracle__factory.js +9 -12
  199. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/lido/IstETH.sol/IstETHGetters__factory.js +9 -12
  200. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/lido/IstETH.sol/IstETH__factory.js +9 -12
  201. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/lido/IwstETH.sol/IwstETHGetters__factory.js +9 -12
  202. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/lido/IwstETH.sol/IwstETH__factory.js +9 -12
  203. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/lido/IwstETHGateway.sol/IwstETHGateWay__factory.js +9 -12
  204. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/uniswap/IQuoter__factory.js +9 -12
  205. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/uniswap/IUniswapV2Router01__factory.js +9 -12
  206. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/uniswap/IUniswapV2Router02__factory.js +9 -12
  207. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/uniswap/IUniswapV3.sol/ISwapRouter__factory.js +9 -12
  208. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/integrations/yearn/IYVault__factory.js +9 -12
  209. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapterErrors__factory.js +9 -12
  210. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/convex/IConvexV1BaseRewardPoolAdapter.sol/IConvexV1BaseRewardPoolAdapter__factory.js +9 -12
  211. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/convex/IConvexV1BoosterAdapter__factory.js +9 -12
  212. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/curve/ICurveV1Adapter.sol/ICurveV1AdapterExceptions__factory.js +9 -12
  213. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/curve/ICurveV1Adapter.sol/ICurveV1Adapter__factory.js +9 -12
  214. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/curve/ICurveV1_2AssetsAdapter__factory.js +9 -12
  215. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/curve/ICurveV1_3AssetsAdapter__factory.js +9 -12
  216. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/curve/ICurveV1_4AssetsAdapter__factory.js +9 -12
  217. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/lido/ILidoV1Adapter.sol/ILidoV1AdapterEvents__factory.js +9 -12
  218. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/lido/ILidoV1Adapter.sol/ILidoV1AdapterExceptions__factory.js +9 -12
  219. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/lido/ILidoV1Adapter.sol/ILidoV1Adapter__factory.js +9 -12
  220. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/lido/IwstETHV1Adapter__factory.js +9 -12
  221. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/uniswap/IUniswapPathChecker__factory.js +9 -12
  222. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/uniswap/IUniswapV2Adapter.sol/IUniswapV2AdapterExceptions__factory.js +9 -12
  223. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/uniswap/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.js +9 -12
  224. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/uniswap/IUniswapV3Adapter.sol/IUniswapV3AdapterExceptions__factory.js +9 -12
  225. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/uniswap/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.js +9 -12
  226. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/interfaces/yearn/IYearnV2Adapter__factory.js +9 -12
  227. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/test/config/SupportedContracts.sol/ISupportedContracts__factory.js +9 -12
  228. package/lib/types/factories/@gearbox-protocol/integrations-v2/contracts/test/mocks/integrations/LidoMock.sol/ILidoMockEvents__factory.js +9 -12
  229. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IClosePathResolver__factory.js +9 -12
  230. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IDepositor.sol/IDepositorOptions__factory.js +9 -12
  231. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IDepositor.sol/IDepositor__factory.js +9 -12
  232. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IGasPricer__factory.js +9 -12
  233. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/ILPWorker.sol/ILPWorkerOptions__factory.js +9 -12
  234. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/ILPWorker.sol/ILPWorker__factory.js +9 -12
  235. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IPathResolver__factory.js +9 -12
  236. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IRouterComponent__factory.js +9 -12
  237. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IRouter__factory.js +9 -12
  238. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/ISwapAggregator__factory.js +9 -12
  239. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/ISwapper__factory.js +9 -12
  240. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IWithdrawer.sol/IWithdrawerOptions__factory.js +9 -12
  241. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IWithdrawer.sol/IWithdrawer__factory.js +9 -12
  242. package/lib/types/factories/@gearbox-protocol/router/contracts/interfaces/IWrapper__factory.js +9 -12
  243. package/lib/types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.js +9 -12
  244. package/lib/types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.js +9 -12
  245. package/lib/types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.js +9 -12
  246. package/lib/types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.js +9 -12
  247. package/lib/types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.js +9 -12
  248. package/lib/types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.js +9 -12
  249. package/lib/types/factories/contracts/IGas__factory.js +9 -12
  250. package/lib/types/factories/contracts/IGnosisSafeSignatureValidator__factory.js +9 -12
  251. package/lib/types/factories/contracts/ITokenDistributor.sol/ITokenDistributorEvents__factory.js +9 -12
  252. package/lib/types/factories/contracts/ITokenDistributor.sol/ITokenDistributorExceptions__factory.js +9 -12
  253. package/lib/types/factories/contracts/ITokenDistributor.sol/ITokenDistributor__factory.js +9 -12
  254. package/lib/types/factories/contracts/support/IOffchainOracle__factory.js +9 -12
  255. package/lib/types/factories/contracts/support/MultiCall.sol/Multicall2__factory.js +27 -50
  256. package/lib/utils/errors.js +1 -1
  257. package/lib/utils/extracter.js +4 -4
  258. package/lib/utils/formatter.d.ts +8 -8
  259. package/lib/utils/formatter.js +73 -87
  260. package/lib/utils/loading.js +3 -3
  261. package/lib/utils/mappers.js +7 -34
  262. package/lib/utils/math.d.ts +10 -7
  263. package/lib/utils/math.js +22 -25
  264. package/lib/utils/multicall.js +32 -98
  265. package/lib/utils/price.d.ts +3 -4
  266. package/lib/utils/price.js +8 -20
  267. package/lib/utils/repeater.js +12 -53
  268. package/lib/utils/validate.js +2 -2
  269. package/lib/watchers/creditAccountWatcher.js +136 -237
  270. package/lib/watchers/creditAccountWatcher.spec.js +51 -68
  271. package/lib/watchers/creditManagerWatcher.js +21 -71
  272. package/lib/watchers/creditManagerWatcher.spec.js +20 -23
  273. package/package.json +2 -2
  274. package/lib/core/history.d.ts +0 -42
  275. package/lib/core/history.js +0 -2
  276. package/lib/core/wcOperation/abstractOperations.d.ts +0 -23
  277. package/lib/core/wcOperation/abstractOperations.js +0 -39
  278. package/lib/core/wcOperation/index.d.ts +0 -11
  279. package/lib/core/wcOperation/index.js +0 -30
  280. package/lib/core/wcOperation/operations.d.ts +0 -88
  281. package/lib/core/wcOperation/operations.js +0 -146
  282. package/lib/core/wcOperation/types.d.ts +0 -15
  283. package/lib/core/wcOperation/types.js +0 -2
@@ -1,46 +1,9 @@
1
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var _a;
39
2
  Object.defineProperty(exports, "__esModule", { value: true });
40
3
  exports.detectNetwork = exports.isSupportedNetwork = exports.getNetworkType = exports.CHAINS = exports.ARBITRUM_NETWORK = exports.HARDHAT_NETWORK = exports.TENDERLY_NETWORK = exports.LOCAL_NETWORK = exports.POLYGON_NETWORK = exports.OPTIMISM_NETWORK = exports.GOERLI_NETWORK = exports.MAINNET_NETWORK = void 0;
41
- var token_1 = require("../tokens/token");
42
- var types_1 = require("../types");
43
- var constants_1 = require("./constants");
4
+ const token_1 = require("../tokens/token");
5
+ const types_1 = require("../types");
6
+ const constants_1 = require("./constants");
44
7
  exports.MAINNET_NETWORK = 1;
45
8
  exports.GOERLI_NETWORK = 5;
46
9
  exports.OPTIMISM_NETWORK = 10;
@@ -59,15 +22,16 @@ exports.CHAINS = {
59
22
  Polygon: exports.POLYGON_NETWORK,
60
23
  Arbiturum: exports.ARBITRUM_NETWORK,
61
24
  };
62
- var SUPPORTED_CHAINS = (_a = {},
63
- _a[exports.CHAINS.Mainnet] = "Mainnet",
64
- _a[exports.CHAINS.Goerli] = "Goerli",
65
- _a[exports.CHAINS.Local] = "Mainnet",
66
- _a[exports.CHAINS.Tenderly] = "Mainnet",
67
- _a);
68
- var getNetworkType = function (chainId, localAs) {
69
- if (localAs === void 0) { localAs = "Mainnet"; }
70
- var chainType = SUPPORTED_CHAINS[chainId];
25
+ const SUPPORTED_CHAINS = {
26
+ [exports.CHAINS.Mainnet]: "Mainnet",
27
+ [exports.CHAINS.Goerli]: "Goerli",
28
+ [exports.CHAINS.Local]: "Mainnet",
29
+ [exports.CHAINS.Tenderly]: "Mainnet",
30
+ // [CHAINS.Optimism]: "Optimism",
31
+ // [CHAINS.Polygon]: "Polygon",
32
+ };
33
+ const getNetworkType = (chainId, localAs = "Mainnet") => {
34
+ const chainType = SUPPORTED_CHAINS[chainId];
71
35
  if (chainId === exports.CHAINS.Local) {
72
36
  return localAs;
73
37
  }
@@ -77,37 +41,23 @@ var getNetworkType = function (chainId, localAs) {
77
41
  throw new Error("Unsupported network");
78
42
  };
79
43
  exports.getNetworkType = getNetworkType;
80
- var isSupportedNetwork = function (chainId) { return chainId !== undefined && !!SUPPORTED_CHAINS[chainId]; };
44
+ const isSupportedNetwork = (chainId) => chainId !== undefined && !!SUPPORTED_CHAINS[chainId];
81
45
  exports.isSupportedNetwork = isSupportedNetwork;
82
- function detectNetwork(provider) {
83
- return __awaiter(this, void 0, void 0, function () {
84
- var usdcMainnet, _a, usdcMainnet, _b;
85
- return __generator(this, function (_c) {
86
- switch (_c.label) {
87
- case 0:
88
- _c.trys.push([0, 2, , 7]);
89
- usdcMainnet = types_1.IERC20__factory.connect(token_1.tokenDataByNetwork.Mainnet.USDC, provider);
90
- return [4 /*yield*/, usdcMainnet.balanceOf(constants_1.ADDRESS_0X0)];
91
- case 1:
92
- _c.sent();
93
- return [2 /*return*/, "Mainnet"];
94
- case 2:
95
- _a = _c.sent();
96
- _c.label = 3;
97
- case 3:
98
- _c.trys.push([3, 5, , 6]);
99
- usdcMainnet = types_1.IERC20__factory.connect(token_1.tokenDataByNetwork.Goerli.USDC, provider);
100
- return [4 /*yield*/, usdcMainnet.balanceOf(constants_1.ADDRESS_0X0)];
101
- case 4:
102
- _c.sent();
103
- return [2 /*return*/, "Goerli"];
104
- case 5:
105
- _b = _c.sent();
106
- throw new Error("Unsupported network");
107
- case 6: return [3 /*break*/, 7];
108
- case 7: return [2 /*return*/];
109
- }
110
- });
111
- });
46
+ async function detectNetwork(provider) {
47
+ try {
48
+ const usdcMainnet = types_1.IERC20__factory.connect(token_1.tokenDataByNetwork.Mainnet.USDC, provider);
49
+ await usdcMainnet.balanceOf(constants_1.ADDRESS_0X0);
50
+ return "Mainnet";
51
+ }
52
+ catch {
53
+ try {
54
+ const usdcMainnet = types_1.IERC20__factory.connect(token_1.tokenDataByNetwork.Goerli.USDC, provider);
55
+ await usdcMainnet.balanceOf(constants_1.ADDRESS_0X0);
56
+ return "Goerli";
57
+ }
58
+ catch {
59
+ throw new Error("Unsupported network");
60
+ }
61
+ }
112
62
  }
113
63
  exports.detectNetwork = detectNetwork;
@@ -1,19 +1,18 @@
1
- import { BigNumber } from "ethers";
2
- export declare const MAX_INT: BigNumber;
1
+ export declare const MAX_INT: bigint;
3
2
  export declare const RAY_DECIMALS_POW = 27;
4
- export declare const RAY: BigNumber;
5
- export declare const halfRAY: BigNumber;
3
+ export declare const RAY: bigint;
4
+ export declare const halfRAY: bigint;
6
5
  export declare const WAD_DECIMALS_POW = 18;
7
- export declare const WAD: BigNumber;
6
+ export declare const WAD: bigint;
8
7
  export declare const PRICE_DECIMALS_POW = 8;
9
- export declare const PRICE_DECIMALS: BigNumber;
8
+ export declare const PRICE_DECIMALS: bigint;
10
9
  export declare const SECONDS_PER_YEAR: number;
11
10
  export declare const MS_PER_YEAR: number;
12
- export declare const PERCENTAGE_DECIMALS = 100;
13
- export declare const PERCENTAGE_FACTOR = 10000;
11
+ export declare const PERCENTAGE_DECIMALS = 100n;
12
+ export declare const PERCENTAGE_FACTOR = 10000n;
14
13
  export declare const timeRanges: Record<string, number>;
15
- export declare const LEVERAGE_DECIMALS = 100;
16
- export declare const SLIPPAGE_DECIMALS = 100;
14
+ export declare const LEVERAGE_DECIMALS = 100n;
15
+ export declare const SLIPPAGE_DECIMALS = 100n;
17
16
  export declare const ADDRESS_0X0 = "0x0000000000000000000000000000000000000000";
18
17
  export declare const DUMB_ADDRESS = "0xC4375B7De8af5a38a93548eb8453a498222C4fF2";
19
18
  export declare const DUMB_ADDRESS2 = "0x93548eB8453a498222C4FF2C4375b7De8af5A38a";
@@ -1,21 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DUMB_ADDRESS4 = exports.DUMB_ADDRESS3 = exports.DUMB_ADDRESS2 = exports.DUMB_ADDRESS = exports.ADDRESS_0X0 = exports.SLIPPAGE_DECIMALS = exports.LEVERAGE_DECIMALS = exports.timeRanges = exports.PERCENTAGE_FACTOR = exports.PERCENTAGE_DECIMALS = exports.MS_PER_YEAR = exports.SECONDS_PER_YEAR = exports.PRICE_DECIMALS = exports.PRICE_DECIMALS_POW = exports.WAD = exports.WAD_DECIMALS_POW = exports.halfRAY = exports.RAY = exports.RAY_DECIMALS_POW = exports.MAX_INT = void 0;
4
- var ethers_1 = require("ethers");
5
- exports.MAX_INT = ethers_1.BigNumber.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
4
+ exports.MAX_INT = BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
6
5
  exports.RAY_DECIMALS_POW = 27;
7
- exports.RAY = ethers_1.BigNumber.from(10).pow(exports.RAY_DECIMALS_POW);
8
- exports.halfRAY = exports.RAY.div(2);
6
+ exports.RAY = 10n ** BigInt(exports.RAY_DECIMALS_POW);
7
+ exports.halfRAY = exports.RAY / 2n;
9
8
  exports.WAD_DECIMALS_POW = 18;
10
- exports.WAD = ethers_1.BigNumber.from(10).pow(exports.WAD_DECIMALS_POW);
9
+ exports.WAD = 10n ** BigInt(exports.WAD_DECIMALS_POW);
11
10
  exports.PRICE_DECIMALS_POW = 8;
12
- exports.PRICE_DECIMALS = ethers_1.BigNumber.from(10).pow(exports.PRICE_DECIMALS_POW);
11
+ exports.PRICE_DECIMALS = 10n ** BigInt(exports.PRICE_DECIMALS_POW);
13
12
  exports.SECONDS_PER_YEAR = 365 * 24 * 3600;
14
13
  exports.MS_PER_YEAR = exports.SECONDS_PER_YEAR * 1000;
15
- exports.PERCENTAGE_DECIMALS = 100;
16
- exports.PERCENTAGE_FACTOR = 1e4;
17
- // export const LIQUIDATION_DISCOUNTED_SUM = 9600;
18
- // export const UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD = 9400;
14
+ exports.PERCENTAGE_DECIMALS = 100n;
15
+ exports.PERCENTAGE_FACTOR = 10000n;
19
16
  exports.timeRanges = {
20
17
  // "1H": 3600,
21
18
  "1D": 3600 * 24,
@@ -23,8 +20,8 @@ exports.timeRanges = {
23
20
  "1M": 3600 * 24 * 30,
24
21
  "1Y": 3600 * 24 * 365,
25
22
  };
26
- exports.LEVERAGE_DECIMALS = 100;
27
- exports.SLIPPAGE_DECIMALS = 100;
23
+ exports.LEVERAGE_DECIMALS = 100n;
24
+ exports.SLIPPAGE_DECIMALS = 100n;
28
25
  exports.ADDRESS_0X0 = "0x0000000000000000000000000000000000000000";
29
26
  // Used in tests
30
27
  exports.DUMB_ADDRESS = "0xC4375B7De8af5a38a93548eb8453a498222C4fF2";
@@ -1,4 +1,3 @@
1
- import { BigNumber } from "ethers";
2
1
  import { LpTokensAPY } from "../apy";
3
2
  import { CreditAccountDataPayload } from "../payload/creditAccount";
4
3
  import { TokenData } from "../tokens/tokenData";
@@ -12,41 +11,42 @@ export declare class CreditAccountData {
12
11
  readonly creditManager: string;
13
12
  readonly underlyingToken: string;
14
13
  readonly since: number;
15
- readonly cumulativeIndexAtOpen: BigNumber;
16
- readonly borrowedAmount: BigNumber;
17
- readonly borrowedAmountPlusInterestAndFees: BigNumber;
18
- borrowedAmountPlusInterest: BigNumber;
19
- totalValue: BigNumber;
14
+ readonly cumulativeIndexAtOpen: bigint;
15
+ readonly borrowedAmount: bigint;
16
+ readonly borrowedAmountPlusInterestAndFees: bigint;
17
+ borrowedAmountPlusInterest: bigint;
18
+ totalValue: bigint;
20
19
  healthFactor: number;
21
20
  borrowRate: number;
22
21
  readonly collateralTokens: Array<string>;
23
22
  readonly allTokens: Array<string>;
24
- balances: Record<string, BigNumber>;
25
- allBalances: Record<string, BigNumber>;
23
+ balances: Record<string, bigint>;
24
+ allBalances: Record<string, bigint>;
26
25
  isDeleting: boolean;
27
- enabledTokenMask: BigNumber;
26
+ enabledTokenMask: bigint;
28
27
  readonly version: number;
29
- readonly repayAmount: BigNumber;
30
- readonly liquidationAmount: BigNumber;
28
+ readonly repayAmount: bigint;
29
+ readonly liquidationAmount: bigint;
31
30
  readonly canBeClosed: boolean;
32
31
  constructor(payload: CreditAccountDataPayload);
33
- balancesSorted(prices: Record<string, BigNumber>, tokens: Record<string, TokenData>): Array<Asset>;
34
- calcBorrowAmountPlusInterestRate(currentCumulativeIndex: BigNumber): BigNumber;
35
- updateHealthFactor(creditManager: CreditManagerData, currentCumulativeIndex: BigNumber, priceOracle: PriceOracleData): void;
36
- static calcMaxIncreaseBorrow(healthFactor: number, borrowAmountPlusInterest: BigNumber, maxLeverageFactor: number, underlyingLT: number, minHf?: number): BigNumber;
32
+ balancesSorted(prices: Record<string, bigint>, tokens: Record<string, TokenData>): Array<Asset>;
33
+ calcBorrowAmountPlusInterestRate(currentCumulativeIndex: bigint): bigint;
34
+ updateHealthFactor(creditManager: CreditManagerData, currentCumulativeIndex: bigint, priceOracle: PriceOracleData): void;
35
+ static isTokenEnabled(index: number, enabledTokenMask: bigint): boolean;
36
+ static calcMaxIncreaseBorrow(healthFactor: number, borrowAmountPlusInterest: bigint, maxLeverageFactor: number, underlyingLT: number, minHf?: bigint): bigint;
37
37
  get id(): string;
38
38
  hash(): string;
39
39
  static hash(creditManager: string, borrower: string): string;
40
40
  }
41
- export declare function sortBalances(balances: Record<string, BigNumber>, prices: Record<string, BigNumber>, tokens: Record<string, TokenData>): Array<[string, BigNumber]>;
41
+ export declare function sortBalances(balances: Record<string, bigint>, prices: Record<string, bigint>, tokens: Record<string, TokenData>): Array<[string, bigint]>;
42
42
  export declare function tokensAbcComparator(t1?: TokenData, t2?: TokenData): 1 | -1;
43
- export declare function amountAbcComparator(t1: BigNumber, t2: BigNumber): 1 | -1;
43
+ export declare function amountAbcComparator(t1: bigint, t2: bigint): 1 | -1;
44
44
  export interface CalcOverallAPYProps {
45
45
  caAssets: Array<Asset>;
46
46
  lpAPY: LpTokensAPY | undefined;
47
- prices: Record<string, BigNumber>;
48
- totalValue: BigNumber | undefined;
49
- debt: BigNumber | undefined;
47
+ prices: Record<string, bigint>;
48
+ totalValue: bigint | undefined;
49
+ debt: bigint | undefined;
50
50
  borrowRate: number;
51
51
  underlyingToken: string;
52
52
  }
@@ -1,124 +1,121 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.calcOverallAPY = exports.amountAbcComparator = exports.tokensAbcComparator = exports.sortBalances = exports.CreditAccountData = void 0;
4
- var ethers_1 = require("ethers");
5
- var apy_1 = require("../apy");
6
- var decimals_1 = require("../tokens/decimals");
7
- var token_1 = require("../tokens/token");
8
- var formatter_1 = require("../utils/formatter");
9
- var price_1 = require("../utils/price");
10
- var constants_1 = require("./constants");
11
- var CreditAccountData = /** @class */ (function () {
12
- function CreditAccountData(payload) {
13
- var _this = this;
14
- this.collateralTokens = [];
15
- this.allTokens = [];
16
- this.balances = {};
17
- this.allBalances = {};
18
- this.version = 1;
4
+ const apy_1 = require("../apy");
5
+ const decimals_1 = require("../tokens/decimals");
6
+ const token_1 = require("../tokens/token");
7
+ const formatter_1 = require("../utils/formatter");
8
+ const price_1 = require("../utils/price");
9
+ const constants_1 = require("./constants");
10
+ class CreditAccountData {
11
+ addr;
12
+ borrower;
13
+ inUse;
14
+ creditManager;
15
+ underlyingToken;
16
+ since;
17
+ cumulativeIndexAtOpen;
18
+ borrowedAmount;
19
+ borrowedAmountPlusInterestAndFees;
20
+ borrowedAmountPlusInterest;
21
+ totalValue;
22
+ healthFactor;
23
+ borrowRate;
24
+ collateralTokens = [];
25
+ allTokens = [];
26
+ balances = {};
27
+ allBalances = {};
28
+ isDeleting;
29
+ enabledTokenMask;
30
+ version = 1;
31
+ /// V1 Artifacts
32
+ repayAmount;
33
+ liquidationAmount;
34
+ canBeClosed;
35
+ constructor(payload) {
19
36
  this.addr = payload.addr.toLowerCase();
20
37
  this.borrower = payload.borrower.toLowerCase();
21
38
  this.inUse = payload.inUse;
22
39
  this.creditManager = payload.creditManager.toLowerCase();
23
40
  this.underlyingToken = payload.underlying.toLowerCase();
24
- this.since = ethers_1.BigNumber.from(payload.since).toNumber();
25
- this.cumulativeIndexAtOpen = payload.cumulativeIndexAtOpen;
26
- this.borrowedAmount = payload.borrowedAmount;
27
- this.borrowedAmountPlusInterest = payload.borrowedAmountPlusInterest;
28
- this.borrowedAmountPlusInterestAndFees =
29
- payload.borrowedAmountPlusInterestAndFees;
30
- this.totalValue = payload.totalValue;
41
+ this.since = Number((0, formatter_1.toBigInt)(payload.since || 0));
42
+ this.cumulativeIndexAtOpen = (0, formatter_1.toBigInt)(payload.cumulativeIndexAtOpen || 0);
43
+ this.borrowedAmount = (0, formatter_1.toBigInt)(payload.borrowedAmount || 0);
44
+ this.borrowedAmountPlusInterest = (0, formatter_1.toBigInt)(payload.borrowedAmountPlusInterest || 0);
45
+ this.borrowedAmountPlusInterestAndFees = (0, formatter_1.toBigInt)(payload.borrowedAmountPlusInterestAndFees || 0);
46
+ this.totalValue = (0, formatter_1.toBigInt)(payload.totalValue || 0);
31
47
  this.healthFactor = payload.healthFactor.toNumber();
32
- this.borrowRate = payload.borrowRate
33
- .mul(constants_1.PERCENTAGE_FACTOR)
34
- .mul(constants_1.PERCENTAGE_DECIMALS)
35
- .div(constants_1.RAY)
36
- .toNumber();
37
- payload.balances.forEach(function (b) {
38
- var tokenLC = b.token.toLowerCase();
48
+ this.borrowRate = Number(((0, formatter_1.toBigInt)(payload.borrowRate || 0) *
49
+ constants_1.PERCENTAGE_FACTOR *
50
+ constants_1.PERCENTAGE_DECIMALS) /
51
+ constants_1.RAY);
52
+ payload.balances.forEach(b => {
53
+ const tokenLC = b.token.toLowerCase();
39
54
  if (b.isAllowed) {
40
- _this.balances[tokenLC] = b.balance;
41
- _this.collateralTokens.push(tokenLC);
55
+ this.balances[tokenLC] = (0, formatter_1.toBigInt)(b.balance || 0);
56
+ this.collateralTokens.push(tokenLC);
42
57
  }
43
- _this.allBalances[tokenLC] = b.balance;
44
- _this.allTokens.push(tokenLC);
58
+ this.allBalances[tokenLC] = (0, formatter_1.toBigInt)(b.balance || 0);
59
+ this.allTokens.push(tokenLC);
45
60
  });
46
- this.enabledTokenMask = payload.enabledTokenMask;
61
+ this.enabledTokenMask = (0, formatter_1.toBigInt)(payload.enabledTokenMask || 0);
47
62
  this.isDeleting = false;
48
63
  this.version = payload.version;
49
- this.repayAmount = payload.repayAmount;
50
- this.liquidationAmount = payload.liquidationAmount;
64
+ this.repayAmount = (0, formatter_1.toBigInt)(payload.repayAmount || 0);
65
+ this.liquidationAmount = (0, formatter_1.toBigInt)(payload.liquidationAmount || 0);
51
66
  this.canBeClosed = payload.canBeClosed;
52
67
  }
53
- CreditAccountData.prototype.balancesSorted = function (prices, tokens) {
54
- return sortBalances(this.balances, prices, tokens).map(function (_a) {
55
- var token = _a[0], balance = _a[1];
56
- return ({ token: token, balance: balance });
57
- });
58
- };
59
- CreditAccountData.prototype.calcBorrowAmountPlusInterestRate = function (currentCumulativeIndex) {
60
- return this.borrowedAmount
61
- .mul(currentCumulativeIndex)
62
- .div(this.cumulativeIndexAtOpen);
63
- };
64
- CreditAccountData.prototype.updateHealthFactor = function (creditManager, currentCumulativeIndex, priceOracle) {
65
- var _this = this;
66
- var twvUSDValue = this.collateralTokens
67
- .filter(function (_, num) {
68
- return !ethers_1.BigNumber.from(2).pow(num).and(_this.enabledTokenMask).isZero();
69
- })
70
- .map(function (token) {
71
- return priceOracle
72
- .convertToUSD(_this.balances[token], token)
73
- .mul(creditManager.liquidationThresholds[token]);
74
- })
75
- .reduce(function (a, b) { return a.add(b); });
76
- this.healthFactor = priceOracle
77
- .convertFromUSD(twvUSDValue, this.underlyingToken)
78
- .div(this.calcBorrowAmountPlusInterestRate(currentCumulativeIndex))
79
- .toNumber();
80
- };
81
- CreditAccountData.calcMaxIncreaseBorrow = function (healthFactor, borrowAmountPlusInterest, maxLeverageFactor, underlyingLT, minHf) {
82
- if (minHf === void 0) { minHf = constants_1.PERCENTAGE_FACTOR; }
83
- var minHealthFactor = maxLeverageFactor > 0
84
- ? Math.floor((underlyingLT * (maxLeverageFactor + constants_1.LEVERAGE_DECIMALS)) /
68
+ balancesSorted(prices, tokens) {
69
+ return sortBalances(this.balances, prices, tokens).map(([token, balance]) => ({ token, balance }));
70
+ }
71
+ calcBorrowAmountPlusInterestRate(currentCumulativeIndex) {
72
+ return ((this.borrowedAmount * currentCumulativeIndex) /
73
+ this.cumulativeIndexAtOpen);
74
+ }
75
+ updateHealthFactor(creditManager, currentCumulativeIndex, priceOracle) {
76
+ const twvUSDValue = this.collateralTokens
77
+ .filter((_, num) => CreditAccountData.isTokenEnabled(num, this.enabledTokenMask))
78
+ .map(token => priceOracle.convertToUSD(this.balances[token], token) *
79
+ creditManager.liquidationThresholds[token])
80
+ .reduce((a, b) => a + b);
81
+ this.healthFactor = Number(priceOracle.convertFromUSD(twvUSDValue, this.underlyingToken) /
82
+ this.calcBorrowAmountPlusInterestRate(currentCumulativeIndex));
83
+ }
84
+ static isTokenEnabled(index, enabledTokenMask) {
85
+ return ((2n ** BigInt(index)) & enabledTokenMask) !== 0n;
86
+ }
87
+ static calcMaxIncreaseBorrow(healthFactor, borrowAmountPlusInterest, maxLeverageFactor, underlyingLT, minHf = constants_1.PERCENTAGE_FACTOR) {
88
+ const minHealthFactor = maxLeverageFactor > 0
89
+ ? Math.floor((underlyingLT * (maxLeverageFactor + Number(constants_1.LEVERAGE_DECIMALS))) /
85
90
  maxLeverageFactor)
86
- : minHf;
87
- var result = borrowAmountPlusInterest
88
- .mul(healthFactor - minHealthFactor)
89
- .div(minHealthFactor - underlyingLT);
90
- return result.isNegative() ? ethers_1.BigNumber.from(0) : result;
91
- };
92
- Object.defineProperty(CreditAccountData.prototype, "id", {
93
- get: function () {
94
- return this.creditManager;
95
- },
96
- enumerable: false,
97
- configurable: true
98
- });
99
- CreditAccountData.prototype.hash = function () {
91
+ : Number(minHf);
92
+ const result = (borrowAmountPlusInterest * BigInt(healthFactor - minHealthFactor)) /
93
+ BigInt(minHealthFactor - underlyingLT);
94
+ return result < 0 ? 0n : result;
95
+ }
96
+ get id() {
97
+ return this.creditManager;
98
+ }
99
+ hash() {
100
100
  return CreditAccountData.hash(this.creditManager, this.borrower);
101
- };
102
- CreditAccountData.hash = function (creditManager, borrower) {
103
- return "".concat(creditManager.toLowerCase(), ":").concat(borrower.toLowerCase());
104
- };
105
- return CreditAccountData;
106
- }());
101
+ }
102
+ static hash(creditManager, borrower) {
103
+ return `${creditManager.toLowerCase()}:${borrower.toLowerCase()}`;
104
+ }
105
+ }
107
106
  exports.CreditAccountData = CreditAccountData;
108
107
  function sortBalances(balances, prices, tokens) {
109
- return Object.entries(balances).sort(function (_a, _b) {
110
- var addr1 = _a[0], amount1 = _a[1];
111
- var addr2 = _b[0], amount2 = _b[1];
112
- var addr1Lc = addr1.toLowerCase();
113
- var addr2Lc = addr2.toLowerCase();
114
- var token1 = tokens[addr1Lc];
115
- var token2 = tokens[addr2Lc];
116
- var price1 = prices[addr1Lc] || constants_1.PRICE_DECIMALS;
117
- var price2 = prices[addr2Lc] || constants_1.PRICE_DECIMALS;
118
- var totalPrice1 = (0, price_1.calcTotalPrice)(price1, amount1, token1 === null || token1 === void 0 ? void 0 : token1.decimals);
119
- var totalPrice2 = (0, price_1.calcTotalPrice)(price2, amount2, token2 === null || token2 === void 0 ? void 0 : token2.decimals);
120
- if (totalPrice1.eq(totalPrice2)) {
121
- return amount1.eq(amount2)
108
+ return Object.entries(balances).sort(([addr1, amount1], [addr2, amount2]) => {
109
+ const addr1Lc = addr1.toLowerCase();
110
+ const addr2Lc = addr2.toLowerCase();
111
+ const token1 = tokens[addr1Lc];
112
+ const token2 = tokens[addr2Lc];
113
+ const price1 = prices[addr1Lc] || constants_1.PRICE_DECIMALS;
114
+ const price2 = prices[addr2Lc] || constants_1.PRICE_DECIMALS;
115
+ const totalPrice1 = (0, price_1.calcTotalPrice)(price1, amount1, token1?.decimals);
116
+ const totalPrice2 = (0, price_1.calcTotalPrice)(price2, amount2, token2?.decimals);
117
+ if (totalPrice1 === totalPrice2) {
118
+ return amount1 === amount2
122
119
  ? tokensAbcComparator(token1, token2)
123
120
  : amountAbcComparator(amount1, amount2);
124
121
  }
@@ -127,51 +124,43 @@ function sortBalances(balances, prices, tokens) {
127
124
  }
128
125
  exports.sortBalances = sortBalances;
129
126
  function tokensAbcComparator(t1, t2) {
130
- var _a = (t1 || {}).symbol, symbol1 = _a === void 0 ? "" : _a;
131
- var _b = (t2 || {}).symbol, symbol2 = _b === void 0 ? "" : _b;
127
+ const { symbol: symbol1 = "" } = t1 || {};
128
+ const { symbol: symbol2 = "" } = t2 || {};
132
129
  return symbol1 > symbol2 ? 1 : -1;
133
130
  }
134
131
  exports.tokensAbcComparator = tokensAbcComparator;
135
132
  function amountAbcComparator(t1, t2) {
136
- return t1.gt(t2) ? -1 : 1;
133
+ return t1 > t2 ? -1 : 1;
137
134
  }
138
135
  exports.amountAbcComparator = amountAbcComparator;
139
- function calcOverallAPY(_a) {
140
- var caAssets = _a.caAssets, lpAPY = _a.lpAPY, prices = _a.prices, totalValue = _a.totalValue, debt = _a.debt, borrowRate = _a.borrowRate, underlyingToken = _a.underlyingToken;
141
- if (!lpAPY ||
142
- !totalValue ||
143
- totalValue.lte(0) ||
144
- !debt ||
145
- totalValue.lte(debt))
136
+ function calcOverallAPY({ caAssets, lpAPY, prices, totalValue, debt, borrowRate, underlyingToken, }) {
137
+ if (!lpAPY || !totalValue || totalValue <= 0n || !debt || totalValue <= debt)
146
138
  return undefined;
147
- var assetAPYMoney = caAssets.reduce(function (acc, _a) {
148
- var tokenAddress = _a.token, amount = _a.balance;
149
- var tokenAddressLC = tokenAddress.toLowerCase();
150
- var symbol = token_1.tokenSymbolByAddress[tokenAddressLC];
139
+ const assetAPYMoney = caAssets.reduce((acc, { token: tokenAddress, balance: amount }) => {
140
+ const tokenAddressLC = tokenAddress.toLowerCase();
141
+ const symbol = token_1.tokenSymbolByAddress[tokenAddressLC];
151
142
  if (!(0, apy_1.isTokenWithAPY)(symbol))
152
143
  return acc;
153
- var apy = lpAPY[symbol] || 0;
154
- var price = prices[tokenAddressLC] || ethers_1.BigNumber.from(0);
155
- var tokenDecimals = decimals_1.decimals[symbol];
156
- var money = (0, price_1.calcTotalPrice)(price, amount, tokenDecimals);
157
- var apyMoney = money.mul(ethers_1.BigNumber.from(apy));
158
- return acc.add(apyMoney);
159
- }, ethers_1.BigNumber.from(0));
160
- var underlyingTokenAddressLC = underlyingToken.toLowerCase();
161
- var underlyingTokenSymbol = token_1.tokenSymbolByAddress[underlyingTokenAddressLC] || "";
162
- var underlyingTokenDecimals = decimals_1.decimals[underlyingTokenSymbol] || 18;
163
- var underlyingPrice = prices[underlyingTokenAddressLC] || constants_1.PRICE_DECIMALS;
164
- var assetAPYAmountInUnderlying = (0, price_1.convertByPrice)(assetAPYMoney, {
144
+ const apy = lpAPY[symbol] || 0;
145
+ const price = prices[tokenAddressLC] || 0n;
146
+ const tokenDecimals = decimals_1.decimals[symbol];
147
+ const money = (0, price_1.calcTotalPrice)(price, amount, tokenDecimals);
148
+ const apyMoney = money * BigInt(apy);
149
+ return acc + apyMoney;
150
+ }, 0n);
151
+ const underlyingTokenAddressLC = underlyingToken.toLowerCase();
152
+ const underlyingTokenSymbol = token_1.tokenSymbolByAddress[underlyingTokenAddressLC] || "";
153
+ const underlyingTokenDecimals = decimals_1.decimals[underlyingTokenSymbol] || 18;
154
+ const underlyingPrice = prices[underlyingTokenAddressLC] || constants_1.PRICE_DECIMALS;
155
+ const assetAPYAmountInUnderlying = (0, price_1.convertByPrice)(assetAPYMoney, {
165
156
  price: underlyingPrice,
166
157
  decimals: underlyingTokenDecimals,
167
158
  });
168
- var debtAPY = debt.mul(ethers_1.BigNumber.from(borrowRate));
169
- var yourAssets = totalValue.sub(debt);
170
- var apyInPercent = assetAPYAmountInUnderlying
171
- .sub(debtAPY)
172
- .mul(constants_1.WAD)
173
- .div(yourAssets)
174
- .div(constants_1.PERCENTAGE_FACTOR);
159
+ const debtAPY = debt * BigInt(borrowRate);
160
+ const yourAssets = totalValue - debt;
161
+ const apyInPercent = ((assetAPYAmountInUnderlying - debtAPY) * constants_1.WAD) /
162
+ yourAssets /
163
+ constants_1.PERCENTAGE_FACTOR;
175
164
  return Number((0, formatter_1.toSignificant)(apyInPercent, constants_1.WAD_DECIMALS_POW));
176
165
  }
177
166
  exports.calcOverallAPY = calcOverallAPY;