@gearbox-protocol/sdk 1.22.4 → 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 +19 -20
  31. package/lib/core/events.js +698 -711
  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,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var chai_1 = require("chai");
4
- var token_1 = require("../tokens/token");
5
- var pathOptions_1 = require("./pathOptions");
6
- describe("PathOptionFactory test", function () {
7
- it("next works correctly", function () {
8
- var serie = [
3
+ const chai_1 = require("chai");
4
+ const token_1 = require("../tokens/token");
5
+ const pathOptions_1 = require("./pathOptions");
6
+ describe("PathOptionFactory test", () => {
7
+ it("next works correctly", () => {
8
+ const serie = [
9
9
  {
10
10
  target: token_1.tokenDataByNetwork.Mainnet["3Crv"],
11
11
  option: 0,
@@ -22,9 +22,9 @@ describe("PathOptionFactory test", function () {
22
22
  totalOptions: 2,
23
23
  },
24
24
  ];
25
- var expectedNext = JSON.parse(JSON.stringify(serie));
25
+ const expectedNext = JSON.parse(JSON.stringify(serie));
26
26
  expectedNext[2].option = 1;
27
- var next = pathOptions_1.PathOptionFactory.next(serie);
27
+ let next = pathOptions_1.PathOptionFactory.next(serie);
28
28
  (0, chai_1.expect)(next).to.be.eql(expectedNext);
29
29
  expectedNext[1].option = 1;
30
30
  expectedNext[2].option = 0;
@@ -55,17 +55,16 @@ describe("PathOptionFactory test", function () {
55
55
  next = pathOptions_1.PathOptionFactory.next(next);
56
56
  (0, chai_1.expect)(next).to.be.eql(expectedNext);
57
57
  });
58
- it("generatePathOptions works correctly", function () {
59
- var _a;
60
- var balances = (_a = {},
61
- _a[token_1.tokenDataByNetwork.Mainnet["1INCH"]] = 100,
62
- _a[token_1.tokenDataByNetwork.Mainnet["3Crv"]] = 200,
63
- _a[token_1.tokenDataByNetwork.Mainnet.USDC] = 200,
64
- _a[token_1.tokenDataByNetwork.Mainnet.FRAX3CRV] = 200,
65
- _a[token_1.tokenDataByNetwork.Mainnet.LUSD3CRV] = 200,
66
- _a);
67
- var result = pathOptions_1.PathOptionFactory.generatePathOptions(balances, 4);
68
- var expected = [
58
+ it("generatePathOptions works correctly", () => {
59
+ const balances = {
60
+ [token_1.tokenDataByNetwork.Mainnet["1INCH"]]: 100,
61
+ [token_1.tokenDataByNetwork.Mainnet["3Crv"]]: 200,
62
+ [token_1.tokenDataByNetwork.Mainnet.USDC]: 200,
63
+ [token_1.tokenDataByNetwork.Mainnet.FRAX3CRV]: 200,
64
+ [token_1.tokenDataByNetwork.Mainnet.LUSD3CRV]: 200,
65
+ };
66
+ const result = pathOptions_1.PathOptionFactory.generatePathOptions(balances, 4);
67
+ const expected = [
69
68
  {
70
69
  target: token_1.tokenDataByNetwork.Mainnet["3Crv"],
71
70
  option: 0,
@@ -82,62 +81,61 @@ describe("PathOptionFactory test", function () {
82
81
  totalOptions: 2,
83
82
  },
84
83
  ];
85
- for (var i = 0; i < 3; i++) {
84
+ for (let i = 0; i < 3; i++) {
86
85
  expected[0].option = i;
87
86
  (0, chai_1.expect)(expected).to.be.eql(result[i]);
88
87
  }
89
88
  });
90
- it(" getCurvePools works correctly", function () {
91
- var _a, _b, _c, _d, _e;
92
- var balances = (_a = {},
93
- _a[token_1.tokenDataByNetwork.Mainnet["1INCH"]] = 100,
94
- _a[token_1.tokenDataByNetwork.Mainnet["3Crv"]] = 200,
95
- _a[token_1.tokenDataByNetwork.Mainnet.USDC] = 200,
96
- _a[token_1.tokenDataByNetwork.Mainnet.FRAX3CRV] = 200,
97
- _a[token_1.tokenDataByNetwork.Mainnet.LUSD3CRV] = 200,
98
- _a);
99
- var expectedCurvePools = [
89
+ it(" getCurvePools works correctly", () => {
90
+ let balances = {
91
+ [token_1.tokenDataByNetwork.Mainnet["1INCH"]]: 100,
92
+ [token_1.tokenDataByNetwork.Mainnet["3Crv"]]: 200,
93
+ [token_1.tokenDataByNetwork.Mainnet.USDC]: 200,
94
+ [token_1.tokenDataByNetwork.Mainnet.FRAX3CRV]: 200,
95
+ [token_1.tokenDataByNetwork.Mainnet.LUSD3CRV]: 200,
96
+ };
97
+ let expectedCurvePools = [
100
98
  "3Crv",
101
99
  "FRAX3CRV",
102
100
  "LUSD3CRV",
103
101
  ];
104
102
  (0, chai_1.expect)(pathOptions_1.PathOptionFactory.getCurvePools(balances)).to.be.eql(expectedCurvePools);
105
- balances = (_b = {},
106
- _b[token_1.tokenDataByNetwork.Mainnet["1INCH"]] = 100,
107
- _b[token_1.tokenDataByNetwork.Mainnet["3Crv"]] = 200,
108
- _b[token_1.tokenDataByNetwork.Mainnet.USDC] = 200,
109
- _b[token_1.tokenDataByNetwork.Mainnet.yvCurve_FRAX] = 200,
110
- _b[token_1.tokenDataByNetwork.Mainnet.yvCurve_stETH] = 200,
111
- _b);
103
+ balances = {
104
+ [token_1.tokenDataByNetwork.Mainnet["1INCH"]]: 100,
105
+ [token_1.tokenDataByNetwork.Mainnet["3Crv"]]: 200,
106
+ [token_1.tokenDataByNetwork.Mainnet.USDC]: 200,
107
+ [token_1.tokenDataByNetwork.Mainnet.yvCurve_FRAX]: 200,
108
+ [token_1.tokenDataByNetwork.Mainnet.yvCurve_stETH]: 200,
109
+ };
112
110
  expectedCurvePools = ["3Crv", "FRAX3CRV", "steCRV"];
113
111
  (0, chai_1.expect)(pathOptions_1.PathOptionFactory.getCurvePools(balances)).to.be.eql(expectedCurvePools);
114
- balances = (_c = {},
115
- _c[token_1.tokenDataByNetwork.Mainnet["1INCH"]] = 100,
116
- _c[token_1.tokenDataByNetwork.Mainnet.USDC] = 200,
117
- _c[token_1.tokenDataByNetwork.Mainnet.cvx3Crv] = 200,
118
- _c[token_1.tokenDataByNetwork.Mainnet.cvxFRAX3CRV] = 200,
119
- _c);
112
+ balances = {
113
+ [token_1.tokenDataByNetwork.Mainnet["1INCH"]]: 100,
114
+ [token_1.tokenDataByNetwork.Mainnet.USDC]: 200,
115
+ [token_1.tokenDataByNetwork.Mainnet.cvx3Crv]: 200,
116
+ [token_1.tokenDataByNetwork.Mainnet.cvxFRAX3CRV]: 200,
117
+ };
120
118
  expectedCurvePools = ["3Crv", "FRAX3CRV"];
121
119
  (0, chai_1.expect)(pathOptions_1.PathOptionFactory.getCurvePools(balances)).to.be.eql(expectedCurvePools);
122
- balances = (_d = {},
123
- _d[token_1.tokenDataByNetwork.Mainnet.wstETH] = 100,
124
- _d[token_1.tokenDataByNetwork.Mainnet.USDC] = 200,
125
- _d[token_1.tokenDataByNetwork.Mainnet.stkcvx3Crv] = 200,
126
- _d[token_1.tokenDataByNetwork.Mainnet.stkcvxFRAX3CRV] = 200,
127
- _d);
120
+ balances = {
121
+ [token_1.tokenDataByNetwork.Mainnet.wstETH]: 100,
122
+ [token_1.tokenDataByNetwork.Mainnet.USDC]: 200,
123
+ [token_1.tokenDataByNetwork.Mainnet.stkcvx3Crv]: 200,
124
+ [token_1.tokenDataByNetwork.Mainnet.stkcvxFRAX3CRV]: 200,
125
+ };
128
126
  expectedCurvePools = ["3Crv", "FRAX3CRV"];
129
127
  (0, chai_1.expect)(pathOptions_1.PathOptionFactory.getCurvePools(balances)).to.be.eql(expectedCurvePools);
130
- balances = (_e = {},
131
- _e[token_1.tokenDataByNetwork.Mainnet["3Crv"]] = 100,
132
- _e[token_1.tokenDataByNetwork.Mainnet.USDC] = 200,
133
- _e[token_1.tokenDataByNetwork.Mainnet.stkcvx3Crv] = 200,
134
- _e[token_1.tokenDataByNetwork.Mainnet.cvx3Crv] = 200,
135
- _e[token_1.tokenDataByNetwork.Mainnet.yvCurve_stETH] = 200,
136
- _e);
128
+ balances = {
129
+ [token_1.tokenDataByNetwork.Mainnet["3Crv"]]: 100,
130
+ [token_1.tokenDataByNetwork.Mainnet.USDC]: 200,
131
+ [token_1.tokenDataByNetwork.Mainnet.stkcvx3Crv]: 200,
132
+ [token_1.tokenDataByNetwork.Mainnet.cvx3Crv]: 200,
133
+ [token_1.tokenDataByNetwork.Mainnet.yvCurve_stETH]: 200,
134
+ };
137
135
  expectedCurvePools = ["3Crv", "steCRV"];
138
136
  (0, chai_1.expect)(pathOptions_1.PathOptionFactory.getCurvePools(balances)).to.be.eql(expectedCurvePools);
139
137
  });
140
- it("detectNetwork works correctly", function () {
138
+ it("detectNetwork works correctly", () => {
141
139
  (0, chai_1.expect)(pathOptions_1.PathOptionFactory.detectNetwork(token_1.tokenDataByNetwork.Mainnet["1INCH"])).to.be.eq("Mainnet");
142
140
  });
143
141
  });
@@ -6,9 +6,9 @@ import { SupportedToken } from "../tokens/token";
6
6
  import { IRouter } from "../types/@gearbox-protocol/router/contracts/interfaces/IRouter";
7
7
  import { MultiCall, PathFinderCloseResult, PathFinderOpenStrategyResult, PathFinderResult, SwapOperation } from "./core";
8
8
  export interface CloseResult {
9
- amount: BigNumberish;
9
+ amount: bigint;
10
10
  calls: Array<MultiCall>;
11
- gasUsage: BigNumberish;
11
+ gasUsage: bigint;
12
12
  }
13
13
  export declare class PathFinder {
14
14
  pathFinder: IRouter;
@@ -40,5 +40,5 @@ export declare class PathFinder {
40
40
  * - calls - list of calls which should be done to swap & unwrap everything to underlying token
41
41
  */
42
42
  findBestClosePath(creditAccount: CreditAccountData, slippage: number, noConcurency?: boolean): Promise<PathFinderCloseResult>;
43
- static compare(r1: CloseResult, r2: CloseResult, gasPriceRAY: BigNumberish): CloseResult;
43
+ static compare(r1: CloseResult, r2: CloseResult, gasPriceRAY: bigint): CloseResult;
44
44
  }
@@ -1,114 +1,63 @@
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
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
3
  exports.PathFinder = void 0;
40
- var ethers_1 = require("ethers");
41
- var constants_1 = require("../core/constants");
42
- var token_1 = require("../tokens/token");
43
- var types_1 = require("../types");
44
- var pathOptions_1 = require("./pathOptions");
45
- var MAX_GAS_PER_ROUTE = 200e6;
46
- var GAS_PER_BLOCK = 400e6;
47
- var PathFinder = /** @class */ (function () {
48
- function PathFinder(address, provider, network, connectors) {
49
- if (network === void 0) { network = "Mainnet"; }
50
- var _this = this;
4
+ const constants_1 = require("../core/constants");
5
+ const token_1 = require("../tokens/token");
6
+ const types_1 = require("../types");
7
+ const formatter_1 = require("../utils/formatter");
8
+ const pathOptions_1 = require("./pathOptions");
9
+ const MAX_GAS_PER_ROUTE = 200e6;
10
+ const GAS_PER_BLOCK = 400e6;
11
+ class PathFinder {
12
+ pathFinder;
13
+ network;
14
+ static connectors = ["USDC", "WETH", "DAI"];
15
+ _connectors;
16
+ constructor(address, provider, network = "Mainnet", connectors) {
51
17
  this.pathFinder = types_1.IRouter__factory.connect(address, provider);
52
18
  this.network = network;
53
- this._connectors = (connectors || PathFinder.connectors).map(function (c) { return token_1.tokenDataByNetwork[_this.network][c]; });
19
+ this._connectors = (connectors || PathFinder.connectors).map(c => token_1.tokenDataByNetwork[this.network][c]);
54
20
  }
55
- PathFinder.prototype.findAllSwaps = function (creditAccount, swapOperation, tokenIn, tokenOut, amount, slippage) {
56
- return __awaiter(this, void 0, void 0, function () {
57
- var swapTask, results, unique;
58
- return __generator(this, function (_a) {
59
- switch (_a.label) {
60
- case 0:
61
- swapTask = {
62
- swapOperation: swapOperation,
63
- creditAccount: creditAccount.addr,
64
- tokenIn: token_1.tokenDataByNetwork[this.network][tokenIn] || tokenIn,
65
- tokenOut: token_1.tokenDataByNetwork[this.network][tokenOut] ||
66
- tokenOut,
67
- connectors: this._connectors,
68
- amount: amount,
69
- slippage: slippage,
70
- externalSlippage: false,
71
- };
72
- return [4 /*yield*/, this.pathFinder.callStatic.findAllSwaps(swapTask, {
73
- gasLimit: GAS_PER_BLOCK,
74
- })];
75
- case 1:
76
- results = _a.sent();
77
- unique = {};
78
- results.forEach(function (r) {
79
- var key = "".concat(r.amount.toHexString()).concat(r.calls
80
- .map(function (c) { return "".concat(c.target.toLowerCase()).concat(c.callData); })
81
- .join("-"));
82
- unique[key] = {
83
- amount: ethers_1.BigNumber.from(r.amount),
84
- calls: r.calls,
85
- };
86
- });
87
- return [2 /*return*/, Object.values(unique)];
88
- }
89
- });
21
+ async findAllSwaps(creditAccount, swapOperation, tokenIn, tokenOut, amount, slippage) {
22
+ const swapTask = {
23
+ swapOperation: swapOperation,
24
+ creditAccount: creditAccount.addr,
25
+ tokenIn: token_1.tokenDataByNetwork[this.network][tokenIn] || tokenIn,
26
+ tokenOut: token_1.tokenDataByNetwork[this.network][tokenOut] ||
27
+ tokenOut,
28
+ connectors: this._connectors,
29
+ amount: amount,
30
+ slippage,
31
+ externalSlippage: false,
32
+ };
33
+ const results = await this.pathFinder.callStatic.findAllSwaps(swapTask, {
34
+ gasLimit: GAS_PER_BLOCK,
90
35
  });
91
- };
92
- PathFinder.prototype.findOneTokenPath = function (creditAccount, tokenIn, tokenOut, amount, slippage) {
93
- return __awaiter(this, void 0, void 0, function () {
94
- var tokenInAddr, result;
95
- return __generator(this, function (_a) {
96
- switch (_a.label) {
97
- case 0:
98
- tokenInAddr = token_1.tokenDataByNetwork[this.network][tokenIn] || tokenIn;
99
- return [4 /*yield*/, this.pathFinder.callStatic.findOneTokenPath(tokenInAddr, amount, token_1.tokenDataByNetwork[this.network][tokenOut] || tokenOut, creditAccount.addr, this._connectors, slippage, {
100
- gasLimit: GAS_PER_BLOCK,
101
- })];
102
- case 1:
103
- result = _a.sent();
104
- return [2 /*return*/, {
105
- amount: ethers_1.BigNumber.from(result.amount),
106
- calls: result.calls,
107
- }];
108
- }
109
- });
36
+ const unique = {};
37
+ results.forEach(r => {
38
+ const key = `${r.amount.toHexString()}${r.calls
39
+ .map(c => `${c.target.toLowerCase()}${c.callData}`)
40
+ .join("-")}`;
41
+ unique[key] = {
42
+ amount: (0, formatter_1.toBigInt)(r.amount),
43
+ calls: r.calls,
44
+ };
110
45
  });
111
- };
46
+ return Object.values(unique);
47
+ }
48
+ async findOneTokenPath(creditAccount, tokenIn, tokenOut, amount, slippage) {
49
+ const tokenInAddr = token_1.tokenDataByNetwork[this.network][tokenIn] || tokenIn;
50
+ // if (creditAccount.balances[tokenInAddr.toLowerCase()].lt(amount)) {
51
+ // throw new Error(`Not enough balance for token ${tokenIn}`);
52
+ // }
53
+ const result = await this.pathFinder.callStatic.findOneTokenPath(tokenInAddr, amount, token_1.tokenDataByNetwork[this.network][tokenOut] || tokenOut, creditAccount.addr, this._connectors, slippage, {
54
+ gasLimit: GAS_PER_BLOCK,
55
+ });
56
+ return {
57
+ amount: (0, formatter_1.toBigInt)(result.amount),
58
+ calls: result.calls,
59
+ };
60
+ }
112
61
  /**
113
62
  * @dev Finds the best path for opening credit account and converting all NORMAL tokens and LP token in the way to TARGET
114
63
  * @param cm CreditManagerData which represents credit manager you want to use to open credit account
@@ -120,41 +69,29 @@ var PathFinder = /** @class */ (function () {
120
69
  * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
121
70
  * @returns PathFinderOpenStrategyResult which
122
71
  */
123
- PathFinder.prototype.findOpenStrategyPath = function (cm, expectedBalances, target, slippage) {
124
- return __awaiter(this, void 0, void 0, function () {
125
- var targetAddr, expectedBalancesAddr, balances, result, balancesAfter;
126
- var _this = this;
127
- return __generator(this, function (_a) {
128
- switch (_a.label) {
129
- case 0:
130
- targetAddr = token_1.tokenDataByNetwork[this.network][target] || target;
131
- expectedBalancesAddr = Object.entries(expectedBalances).reduce(function (acc, _a) {
132
- var token = _a[0], balance = _a[1];
133
- var tokenAddr = token_1.tokenDataByNetwork[_this.network][token] || token;
134
- acc[tokenAddr.toLowerCase()] = balance;
135
- return acc;
136
- }, {});
137
- balances = cm.collateralTokens.map(function (token) { return ({
138
- token: token,
139
- balance: expectedBalancesAddr[token] || 0,
140
- }); });
141
- return [4 /*yield*/, this.pathFinder.callStatic.findOpenStrategyPath(cm.address, balances, targetAddr, this._connectors, slippage, {
142
- gasLimit: GAS_PER_BLOCK,
143
- })];
144
- case 1:
145
- result = _a.sent();
146
- balancesAfter = result[0].reduce(function (acc, b) {
147
- acc[b.token.toLowerCase()] = ethers_1.BigNumber.from(b.balance);
148
- return acc;
149
- }, {});
150
- return [2 /*return*/, {
151
- balances: balancesAfter,
152
- calls: result[1].calls,
153
- }];
154
- }
155
- });
72
+ async findOpenStrategyPath(cm, expectedBalances, target, slippage) {
73
+ const targetAddr = token_1.tokenDataByNetwork[this.network][target] || target;
74
+ const expectedBalancesAddr = Object.entries(expectedBalances).reduce((acc, [token, balance]) => {
75
+ const tokenAddr = token_1.tokenDataByNetwork[this.network][token] || token;
76
+ acc[tokenAddr.toLowerCase()] = balance;
77
+ return acc;
78
+ }, {});
79
+ const balances = cm.collateralTokens.map(token => ({
80
+ token,
81
+ balance: expectedBalancesAddr[token] || 0,
82
+ }));
83
+ const result = await this.pathFinder.callStatic.findOpenStrategyPath(cm.address, balances, targetAddr, this._connectors, slippage, {
84
+ gasLimit: GAS_PER_BLOCK,
156
85
  });
157
- };
86
+ const balancesAfter = result[0].reduce((acc, b) => {
87
+ acc[b.token.toLowerCase()] = (0, formatter_1.toBigInt)(b.balance);
88
+ return acc;
89
+ }, {});
90
+ return {
91
+ balances: balancesAfter,
92
+ calls: result[1].calls,
93
+ };
94
+ }
158
95
  /**
159
96
  * @dev Finds the path to swap / withdraw all assets from CreditAccount into underlying asset
160
97
  * Can bu used for closing credit account and for liquidations as well.
@@ -164,71 +101,41 @@ var PathFinder = /** @class */ (function () {
164
101
  * - underlyingBalance - total balance of underlying token
165
102
  * - calls - list of calls which should be done to swap & unwrap everything to underlying token
166
103
  */
167
- PathFinder.prototype.findBestClosePath = function (creditAccount, slippage, noConcurency) {
168
- if (noConcurency === void 0) { noConcurency = false; }
169
- return __awaiter(this, void 0, void 0, function () {
170
- var loopsPerTx, pathOptions, results, _i, pathOptions_2, po, _a, _b, requests, bestResult;
171
- var _this = this;
172
- return __generator(this, function (_c) {
173
- switch (_c.label) {
174
- case 0:
175
- loopsPerTx = Math.floor(GAS_PER_BLOCK / MAX_GAS_PER_ROUTE);
176
- pathOptions = pathOptions_1.PathOptionFactory.generatePathOptions(creditAccount.allBalances, loopsPerTx);
177
- results = [];
178
- if (!noConcurency) return [3 /*break*/, 5];
179
- _i = 0, pathOptions_2 = pathOptions;
180
- _c.label = 1;
181
- case 1:
182
- if (!(_i < pathOptions_2.length)) return [3 /*break*/, 4];
183
- po = pathOptions_2[_i];
184
- _b = (_a = results).push;
185
- return [4 /*yield*/, this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, this._connectors, slippage, po, loopsPerTx, false, {
186
- gasLimit: GAS_PER_BLOCK,
187
- })];
188
- case 2:
189
- _b.apply(_a, [_c.sent()]);
190
- _c.label = 3;
191
- case 3:
192
- _i++;
193
- return [3 /*break*/, 1];
194
- case 4: return [3 /*break*/, 7];
195
- case 5:
196
- requests = pathOptions.map(function (po) {
197
- return _this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, _this._connectors, slippage, po, loopsPerTx, false, {
198
- gasLimit: GAS_PER_BLOCK,
199
- });
200
- });
201
- return [4 /*yield*/, Promise.all(requests)];
202
- case 6:
203
- results = _c.sent();
204
- _c.label = 7;
205
- case 7:
206
- bestResult = results.reduce(function (best, _a) {
207
- var pathFinderResult = _a[0], gasPriceRAY = _a[1];
208
- return PathFinder.compare(best, pathFinderResult, gasPriceRAY);
209
- }, {
210
- amount: ethers_1.BigNumber.from(0),
211
- gasUsage: 0,
212
- calls: [],
213
- });
214
- return [2 /*return*/, {
215
- underlyingBalance: ethers_1.BigNumber.from(bestResult.amount).add(creditAccount.allBalances[creditAccount.underlyingToken.toLowerCase()]),
216
- calls: bestResult.calls,
217
- }];
218
- }
219
- });
104
+ async findBestClosePath(creditAccount, slippage, noConcurency = false) {
105
+ const loopsPerTx = Math.floor(GAS_PER_BLOCK / MAX_GAS_PER_ROUTE);
106
+ const pathOptions = pathOptions_1.PathOptionFactory.generatePathOptions(creditAccount.allBalances, loopsPerTx);
107
+ let results = [];
108
+ if (noConcurency) {
109
+ for (const po of pathOptions) {
110
+ results.push(await this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, this._connectors, slippage, po, loopsPerTx, false, {
111
+ gasLimit: GAS_PER_BLOCK,
112
+ }));
113
+ }
114
+ }
115
+ else {
116
+ const requests = pathOptions.map(po => this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, this._connectors, slippage, po, loopsPerTx, false, {
117
+ gasLimit: GAS_PER_BLOCK,
118
+ }));
119
+ results = await Promise.all(requests);
120
+ }
121
+ const bestResult = results.reduce((best, [pathFinderResult, gasPriceRAY]) => PathFinder.compare(best, {
122
+ calls: pathFinderResult.calls,
123
+ amount: (0, formatter_1.toBigInt)(pathFinderResult.amount),
124
+ gasUsage: (0, formatter_1.toBigInt)(pathFinderResult.gasUsage),
125
+ }, (0, formatter_1.toBigInt)(gasPriceRAY)), {
126
+ amount: 0n,
127
+ gasUsage: 0n,
128
+ calls: [],
220
129
  });
221
- };
222
- PathFinder.compare = function (r1, r2, gasPriceRAY) {
223
- var comparator = function (_a, gasPrice) {
224
- var amount = _a.amount, gasUsage = _a.gasUsage;
225
- return ethers_1.BigNumber.from(amount).sub(ethers_1.BigNumber.from(gasUsage).mul(gasPrice).div(constants_1.RAY));
130
+ return {
131
+ underlyingBalance: bestResult.amount +
132
+ creditAccount.allBalances[creditAccount.underlyingToken.toLowerCase()],
133
+ calls: bestResult.calls,
226
134
  };
227
- return comparator(r1, gasPriceRAY).gt(comparator(r2, gasPriceRAY))
228
- ? r1
229
- : r2;
230
- };
231
- PathFinder.connectors = ["USDC", "WETH", "DAI"];
232
- return PathFinder;
233
- }());
135
+ }
136
+ static compare(r1, r2, gasPriceRAY) {
137
+ const comparator = ({ amount, gasUsage }, gasPrice) => amount - (gasUsage * gasPrice) / constants_1.RAY;
138
+ return comparator(r1, gasPriceRAY) > comparator(r2, gasPriceRAY) ? r1 : r2;
139
+ }
140
+ }
234
141
  exports.PathFinder = PathFinder;
@@ -1,23 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- var chai_1 = require("chai");
4
- var constants_1 = require("../core/constants");
5
- var pathfinder_1 = require("./pathfinder");
6
- describe("PathFinder test", function () {
7
- it("compare works correctly", function () {
8
- var r1 = {
9
- amount: 2000,
10
- gasUsage: 1000,
3
+ const chai_1 = require("chai");
4
+ const constants_1 = require("../core/constants");
5
+ const pathfinder_1 = require("./pathfinder");
6
+ describe("PathFinder test", () => {
7
+ it("compare works correctly", () => {
8
+ const r1 = {
9
+ amount: 2000n,
10
+ gasUsage: 1000n,
11
11
  calls: [],
12
12
  };
13
- var r2 = {
14
- amount: 3000,
15
- gasUsage: 2000,
13
+ const r2 = {
14
+ amount: 3000n,
15
+ gasUsage: 2000n,
16
16
  calls: [],
17
17
  };
18
- var result = pathfinder_1.PathFinder.compare(r1, r2, constants_1.RAY);
18
+ let result = pathfinder_1.PathFinder.compare(r1, r2, constants_1.RAY);
19
19
  (0, chai_1.expect)(result).to.be.eql(r2);
20
- result = pathfinder_1.PathFinder.compare(r1, r2, constants_1.RAY.mul(2));
20
+ result = pathfinder_1.PathFinder.compare(r1, r2, constants_1.RAY * 2n);
21
21
  (0, chai_1.expect)(result).to.be.eql(r1);
22
22
  });
23
23
  });