@gearbox-protocol/sdk 3.0.0-next.10 → 3.0.0-next.101

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 (502) hide show
  1. package/contracts/index.sol +32 -3
  2. package/lib/apy/curveAPY.js +2 -1
  3. package/lib/apy/index.d.ts +2 -2
  4. package/lib/apy/yearnAPY.js +1 -1
  5. package/lib/contracts/contractsRegister.d.ts +5 -2
  6. package/lib/contracts/contractsRegister.js +12 -0
  7. package/lib/core/assets.d.ts +2 -2
  8. package/lib/core/assets.js +4 -4
  9. package/lib/core/creditAccount.d.ts +72 -15
  10. package/lib/core/creditAccount.js +153 -62
  11. package/lib/core/creditAccount.spec.js +907 -16
  12. package/lib/core/creditManager.d.ts +19 -6
  13. package/lib/core/creditManager.js +66 -14
  14. package/lib/core/creditSession.d.ts +11 -1
  15. package/lib/core/creditSession.js +20 -2
  16. package/lib/core/endpoint.d.ts +10 -0
  17. package/lib/core/endpoint.js +26 -0
  18. package/lib/core/events.js +16 -16
  19. package/lib/core/gauge.d.ts +26 -0
  20. package/lib/core/gauge.js +63 -0
  21. package/lib/core/gaugeMath.d.ts +40 -0
  22. package/lib/core/gaugeMath.js +108 -0
  23. package/lib/core/gaugeMath.spec.js +388 -0
  24. package/lib/core/{pool/data.d.ts → pool.d.ts} +16 -8
  25. package/lib/core/{pool/data.js → pool.js} +43 -20
  26. package/lib/core/strategy.d.ts +15 -15
  27. package/lib/core/strategy.js +10 -26
  28. package/lib/core/trade.d.ts +11 -9
  29. package/lib/core/trade.js +36 -27
  30. package/lib/core/transactions.d.ts +110 -14
  31. package/lib/core/transactions.js +191 -108
  32. package/lib/index.d.ts +5 -0
  33. package/lib/index.js +5 -0
  34. package/lib/parsers/abstractParser.js +1 -2
  35. package/lib/parsers/convexBaseRewardPoolAdapterParser.js +10 -8
  36. package/lib/parsers/convexBaseRewardPoolAdapterParser.spec.js +9 -6
  37. package/lib/parsers/convexBoosterAdapterParser.js +6 -6
  38. package/lib/parsers/convexBoosterAdapterParser.spec.js +4 -4
  39. package/lib/parsers/creditFacadeParser.d.ts +2 -1
  40. package/lib/parsers/creditFacadeParser.js +44 -5
  41. package/lib/parsers/creditFacadeParser.spec.js +3 -4
  42. package/lib/parsers/curveAdapterParser.js +10 -11
  43. package/lib/parsers/curveAdapterParser.spec.js +6 -2
  44. package/lib/parsers/lidoAdapterParser.js +3 -2
  45. package/lib/parsers/lidoAdapterParser.spec.js +2 -2
  46. package/lib/parsers/txParser.d.ts +1 -1
  47. package/lib/parsers/txParser.js +9 -3
  48. package/lib/parsers/uniV2AdapterParser.js +5 -4
  49. package/lib/parsers/uniV2AdapterParser.spec.js +3 -2
  50. package/lib/parsers/uniV3AdapterParser.js +9 -7
  51. package/lib/parsers/uniV3AdapterParser.spec.js +3 -2
  52. package/lib/parsers/wstETHAdapterParser.js +6 -4
  53. package/lib/parsers/wstETHAdapterParser.spec.js +4 -4
  54. package/lib/parsers/yearnAdapterParser.spec.js +4 -4
  55. package/lib/parsers/yearnV2AdapterParser.js +13 -3
  56. package/lib/pathfinder/core.d.ts +8 -9
  57. package/lib/pathfinder/pathOptions.d.ts +2 -1
  58. package/lib/pathfinder/pathOptions.js +20 -1
  59. package/lib/pathfinder/pathOptions.spec.js +2 -2
  60. package/lib/pathfinder/pathfinder.d.ts +44 -16
  61. package/lib/pathfinder/pathfinder.js +58 -39
  62. package/lib/pathfinder/pathfinder.spec.js +7 -3
  63. package/lib/pathfinder/v1/core.d.ts +16 -0
  64. package/lib/pathfinder/v1/pathfinderv1.d.ts +46 -0
  65. package/lib/pathfinder/v1/pathfinderv1.js +155 -0
  66. package/lib/pathfinder/v1/pathfinderv1.spec.d.ts +1 -0
  67. package/lib/pathfinder/v1/pathfinderv1.spec.js +39 -0
  68. package/lib/payload/creditAccount.d.ts +3 -4
  69. package/lib/payload/creditManager.d.ts +3 -0
  70. package/lib/payload/creditSession.d.ts +11 -0
  71. package/lib/payload/gauge.d.ts +12 -0
  72. package/lib/payload/pool.d.ts +4 -0
  73. package/lib/types/CalldataExtractor.d.ts +44 -0
  74. package/lib/types/ERC20.d.ts +198 -0
  75. package/lib/types/FarmAccounting.d.ts +27 -0
  76. package/lib/types/IAaveV2_LendingPoolAdapter.d.ts +171 -0
  77. package/lib/types/IAaveV2_WrappedATokenAdapter.d.ts +290 -0
  78. package/lib/types/IBalancerV2Vault.sol/IBalancerV2Vault.d.ts +308 -0
  79. package/lib/types/IBalancerV2Vault.sol/IBalancerV2VaultGetters.d.ts +112 -0
  80. package/lib/types/IBalancerV2Vault.sol/index.d.ts +2 -0
  81. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter.d.ts +466 -0
  82. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter.js +2 -0
  83. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents.d.ts +43 -0
  84. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents.js +2 -0
  85. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions.d.ts +27 -0
  86. package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions.js +2 -0
  87. package/lib/types/IBalancerV2VaultAdapter.sol/index.d.ts +3 -0
  88. package/lib/types/IBalancerV2VaultAdapter.sol/index.js +2 -0
  89. package/lib/types/IBotListV3.sol/IBotListV3.d.ts +286 -0
  90. package/lib/types/IBotListV3.sol/IBotListV3.js +2 -0
  91. package/lib/types/IBotListV3.sol/IBotListV3Events.d.ts +103 -0
  92. package/lib/types/IBotListV3.sol/IBotListV3Events.js +2 -0
  93. package/lib/types/IBotListV3.sol/index.d.ts +2 -0
  94. package/lib/types/IBotListV3.sol/index.js +2 -0
  95. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter.d.ts +216 -0
  96. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter.js +2 -0
  97. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions.d.ts +27 -0
  98. package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions.js +2 -0
  99. package/lib/types/ICompoundV2_CTokenAdapter.sol/index.d.ts +2 -0
  100. package/lib/types/ICompoundV2_CTokenAdapter.sol/index.js +2 -0
  101. package/lib/types/IContractsRegister.sol/IContractsRegister.d.ts +128 -0
  102. package/lib/types/IContractsRegister.sol/IContractsRegister.js +2 -0
  103. package/lib/types/IContractsRegister.sol/IContractsRegisterEvents.d.ts +50 -0
  104. package/lib/types/IContractsRegister.sol/IContractsRegisterEvents.js +2 -0
  105. package/lib/types/IContractsRegister.sol/index.d.ts +2 -0
  106. package/lib/types/IContractsRegister.sol/index.js +2 -0
  107. package/lib/types/IControllerTimelockV3.sol/IControllerTimelockV3.d.ts +504 -0
  108. package/lib/types/IControllerTimelockV3.sol/IControllerTimelockV3.js +2 -0
  109. package/lib/types/IControllerTimelockV3.sol/IControllerTimelockV3Events.d.ts +82 -0
  110. package/lib/types/IControllerTimelockV3.sol/IControllerTimelockV3Events.js +2 -0
  111. package/lib/types/IControllerTimelockV3.sol/index.d.ts +2 -0
  112. package/lib/types/IControllerTimelockV3.sol/index.js +2 -0
  113. package/lib/types/IConvexToken.d.ts +9 -1
  114. package/lib/types/IConvexV1BaseRewardPoolAdapter.d.ts +46 -30
  115. package/lib/types/{IConvexV1BoosterAdapter.d.ts → IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter.d.ts} +40 -21
  116. package/lib/types/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter.js +2 -0
  117. package/lib/types/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapterEvents.d.ts +43 -0
  118. package/lib/types/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapterEvents.js +2 -0
  119. package/lib/types/IConvexV1BoosterAdapter.sol/index.d.ts +2 -0
  120. package/lib/types/IConvexV1BoosterAdapter.sol/index.js +2 -0
  121. package/lib/types/ICreditFacadeV2.sol/ICreditFacadeV2Extended.d.ts +7 -11
  122. package/lib/types/ICreditFacadeV3.sol/ICreditFacadeV3.d.ts +58 -109
  123. package/lib/types/ICreditFacadeV3.sol/ICreditFacadeV3Events.d.ts +31 -35
  124. package/lib/types/ICreditFacadeV3Multicall.d.ts +91 -60
  125. package/lib/types/ICreditManagerV3.sol/ICreditManagerV3.d.ts +117 -97
  126. package/lib/types/ICurveV1Adapter.d.ts +41 -105
  127. package/lib/types/ICurveV1_2AssetsAdapter.d.ts +41 -105
  128. package/lib/types/ICurveV1_3AssetsAdapter.d.ts +41 -105
  129. package/lib/types/ICurveV1_4AssetsAdapter.d.ts +41 -105
  130. package/lib/types/IDaiLikePermit.d.ts +59 -0
  131. package/lib/types/IDaiLikePermit.js +2 -0
  132. package/lib/types/IDataCompressorV2_10.d.ts +26 -41
  133. package/lib/types/IDataCompressorV3_00.d.ts +123 -42
  134. package/lib/types/IDegenNFTV2.sol/IDegenNFTV2.d.ts +339 -0
  135. package/lib/types/IDegenNFTV2.sol/IDegenNFTV2.js +2 -0
  136. package/lib/types/IDegenNFTV2.sol/IDegenNFTV2Events.d.ts +61 -0
  137. package/lib/types/IDegenNFTV2.sol/IDegenNFTV2Events.js +2 -0
  138. package/lib/types/IDegenNFTV2.sol/IDegenNFTV2Exceptions.d.ts +27 -0
  139. package/lib/types/IDegenNFTV2.sol/IDegenNFTV2Exceptions.js +2 -0
  140. package/lib/types/IDegenNFTV2.sol/index.d.ts +3 -0
  141. package/lib/types/IDegenNFTV2.sol/index.js +2 -0
  142. package/lib/types/IERC165.d.ts +42 -0
  143. package/lib/types/IERC165.js +2 -0
  144. package/lib/types/IERC20Permit.d.ts +74 -0
  145. package/lib/types/IERC20Permit.js +2 -0
  146. package/lib/types/IERC20ZapperDeposits.d.ts +117 -0
  147. package/lib/types/IERC20ZapperDeposits.js +2 -0
  148. package/lib/types/IERC4626Adapter.d.ts +238 -0
  149. package/lib/types/IERC4626Adapter.js +2 -0
  150. package/lib/types/IERC721.d.ts +220 -0
  151. package/lib/types/IERC721.js +2 -0
  152. package/lib/types/IERC721Metadata.d.ts +244 -0
  153. package/lib/types/IERC721Metadata.js +2 -0
  154. package/lib/types/IETHZapperDeposits.d.ts +66 -0
  155. package/lib/types/IETHZapperDeposits.js +2 -0
  156. package/lib/types/IFarmingPool.d.ts +318 -0
  157. package/lib/types/IFarmingPool.js +2 -0
  158. package/lib/types/IGasPricer.d.ts +44 -0
  159. package/lib/types/IGasPricer.js +2 -0
  160. package/lib/types/IGaugeV3.sol/IGaugeV3.d.ts +366 -0
  161. package/lib/types/IGaugeV3.sol/IGaugeV3.js +2 -0
  162. package/lib/types/IGaugeV3.sol/IGaugeV3Events.d.ts +114 -0
  163. package/lib/types/IGaugeV3.sol/IGaugeV3Events.js +2 -0
  164. package/lib/types/IGaugeV3.sol/index.d.ts +2 -0
  165. package/lib/types/IGaugeV3.sol/index.js +2 -0
  166. package/lib/types/IGearStakingV3.sol/IGearStakingV3.d.ts +408 -0
  167. package/lib/types/IGearStakingV3.sol/IGearStakingV3.js +2 -0
  168. package/lib/types/IGearStakingV3.sol/IGearStakingV3Events.d.ts +117 -0
  169. package/lib/types/IGearStakingV3.sol/IGearStakingV3Events.js +2 -0
  170. package/lib/types/IGearStakingV3.sol/index.d.ts +2 -0
  171. package/lib/types/IGearStakingV3.sol/index.js +2 -0
  172. package/lib/types/ILPPriceFeed.sol/ILPPriceFeed.d.ts +285 -0
  173. package/lib/types/ILPPriceFeed.sol/ILPPriceFeed.js +2 -0
  174. package/lib/types/ILPPriceFeed.sol/ILPPriceFeedEvents.d.ts +54 -0
  175. package/lib/types/ILPPriceFeed.sol/ILPPriceFeedEvents.js +2 -0
  176. package/lib/types/ILPPriceFeed.sol/ILPPriceFeedExceptions.d.ts +27 -0
  177. package/lib/types/ILPPriceFeed.sol/ILPPriceFeedExceptions.js +2 -0
  178. package/lib/types/ILPPriceFeed.sol/index.d.ts +3 -0
  179. package/lib/types/ILPPriceFeed.sol/index.js +2 -0
  180. package/lib/types/{ILidoV1Adapter.sol/ILidoV1Adapter.d.ts → ILidoV1Adapter.d.ts} +13 -48
  181. package/lib/types/ILidoV1Adapter.js +2 -0
  182. package/lib/types/ILinearInterestRateModelV3.d.ts +120 -0
  183. package/lib/types/ILinearInterestRateModelV3.js +2 -0
  184. package/lib/types/IPermit2.d.ts +130 -0
  185. package/lib/types/IPermit2.js +2 -0
  186. package/lib/types/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3.d.ts +473 -0
  187. package/lib/types/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3.js +2 -0
  188. package/lib/types/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3Events.d.ts +113 -0
  189. package/lib/types/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3Events.js +2 -0
  190. package/lib/types/IPoolQuotaKeeperV3.sol/index.d.ts +2 -0
  191. package/lib/types/IPoolQuotaKeeperV3.sol/index.js +2 -0
  192. package/lib/types/IPoolV3.sol/IPoolV3.d.ts +43 -3
  193. package/lib/types/IPriceFeed.sol/IPriceFeed.d.ts +109 -0
  194. package/lib/types/IPriceFeed.sol/IPriceFeed.js +2 -0
  195. package/lib/types/IPriceFeed.sol/IUpdatablePriceFeed.d.ts +133 -0
  196. package/lib/types/IPriceFeed.sol/IUpdatablePriceFeed.js +2 -0
  197. package/lib/types/IPriceFeed.sol/index.d.ts +2 -0
  198. package/lib/types/IPriceFeed.sol/index.js +2 -0
  199. package/lib/types/IPriceOracle.sol/IPriceOracleV2.d.ts +166 -0
  200. package/lib/types/IPriceOracle.sol/IPriceOracleV2.js +2 -0
  201. package/lib/types/IPriceOracle.sol/IPriceOracleV2Events.d.ts +43 -0
  202. package/lib/types/IPriceOracle.sol/IPriceOracleV2Events.js +2 -0
  203. package/lib/types/{ILidoV1Adapter.sol/ILidoV1AdapterExceptions.d.ts → IPriceOracle.sol/IPriceOracleV2Exceptions.d.ts} +3 -3
  204. package/lib/types/IPriceOracle.sol/IPriceOracleV2Exceptions.js +2 -0
  205. package/lib/types/IPriceOracle.sol/IPriceOracleV2Ext.d.ts +182 -0
  206. package/lib/types/IPriceOracle.sol/IPriceOracleV2Ext.js +2 -0
  207. package/lib/types/IPriceOracle.sol/index.d.ts +4 -0
  208. package/lib/types/IPriceOracle.sol/index.js +2 -0
  209. package/lib/types/IPriceOracleV3.sol/IPriceOracleV3.d.ts +272 -0
  210. package/lib/types/IPriceOracleV3.sol/IPriceOracleV3.js +2 -0
  211. package/lib/types/IPriceOracleV3.sol/IPriceOracleV3Events.d.ts +79 -0
  212. package/lib/types/IPriceOracleV3.sol/IPriceOracleV3Events.js +2 -0
  213. package/lib/types/IPriceOracleV3.sol/index.d.ts +2 -0
  214. package/lib/types/IPriceOracleV3.sol/index.js +2 -0
  215. package/lib/types/IRouter.d.ts +11 -1
  216. package/lib/types/IRouterV3.d.ts +281 -0
  217. package/lib/types/IRouterV3.js +2 -0
  218. package/lib/types/IUniswapV2Adapter.sol/IUniswapV2Adapter.d.ts +10 -9
  219. package/lib/types/IUniswapV3Adapter.sol/IUniswapV3Adapter.d.ts +27 -21
  220. package/lib/types/IVotingContractV3.d.ts +74 -0
  221. package/lib/types/IVotingContractV3.js +2 -0
  222. package/lib/types/IWETH.d.ts +197 -0
  223. package/lib/types/IWETH.js +2 -0
  224. package/lib/types/IYearnV2Adapter.d.ts +22 -22
  225. package/lib/types/IZapper.d.ts +56 -37
  226. package/lib/types/IZapperRegister.d.ts +62 -0
  227. package/lib/types/IZapperRegister.js +2 -0
  228. package/lib/types/IwstETHV1Adapter.d.ts +17 -17
  229. package/lib/types/NumericArrayLib.d.ts +27 -0
  230. package/lib/types/NumericArrayLib.js +2 -0
  231. package/lib/types/RedstoneConstants.d.ts +27 -0
  232. package/lib/types/RedstoneConstants.js +2 -0
  233. package/lib/types/RedstoneConsumerBase.d.ts +84 -0
  234. package/lib/types/RedstoneConsumerBase.js +2 -0
  235. package/lib/types/RedstoneConsumerNumericBase.d.ts +84 -0
  236. package/lib/types/RedstoneConsumerNumericBase.js +2 -0
  237. package/lib/types/RedstoneDefaultsLib.d.ts +27 -0
  238. package/lib/types/RedstoneDefaultsLib.js +2 -0
  239. package/lib/types/{ILidoV1Adapter.sol/ILidoV1AdapterEvents.d.ts → RedstonePriceFeed.sol/IRedstonePriceFeedEvents.d.ts} +11 -11
  240. package/lib/types/RedstonePriceFeed.sol/IRedstonePriceFeedEvents.js +2 -0
  241. package/lib/types/RedstonePriceFeed.sol/IRedstonePriceFeedExceptions.d.ts +27 -0
  242. package/lib/types/RedstonePriceFeed.sol/IRedstonePriceFeedExceptions.js +2 -0
  243. package/lib/types/RedstonePriceFeed.sol/RedstonePriceFeed.d.ts +279 -0
  244. package/lib/types/RedstonePriceFeed.sol/RedstonePriceFeed.js +2 -0
  245. package/lib/types/RedstonePriceFeed.sol/index.d.ts +3 -0
  246. package/lib/types/RedstonePriceFeed.sol/index.js +2 -0
  247. package/lib/types/SafeERC20.d.ts +27 -0
  248. package/lib/types/SafeERC20.js +2 -0
  249. package/lib/types/factories/AddressProvider__factory.d.ts +1 -1
  250. package/lib/types/factories/AddressProvider__factory.js +1 -1
  251. package/lib/types/factories/Balances.sol/BalanceOps__factory.d.ts +1 -1
  252. package/lib/types/factories/Balances.sol/BalanceOps__factory.js +1 -1
  253. package/lib/types/factories/CalldataExtractor__factory.d.ts +87 -0
  254. package/lib/types/factories/CalldataExtractor__factory.js +127 -0
  255. package/lib/types/factories/Claimable__factory.d.ts +1 -1
  256. package/lib/types/factories/Claimable__factory.js +1 -1
  257. package/lib/types/factories/ERC20__factory.d.ts +239 -0
  258. package/lib/types/factories/ERC20__factory.js +328 -0
  259. package/lib/types/factories/Errors__factory.d.ts +1 -1
  260. package/lib/types/factories/Errors__factory.js +1 -1
  261. package/lib/types/factories/FarmAccounting__factory.d.ts +33 -0
  262. package/lib/types/factories/FarmAccounting__factory.js +57 -0
  263. package/lib/types/factories/{IWERC20Zapper__factory.d.ts → IAaveV2_LendingPoolAdapter__factory.d.ts} +89 -69
  264. package/lib/types/factories/{IWERC20Zapper__factory.js → IAaveV2_LendingPoolAdapter__factory.js} +99 -75
  265. package/lib/types/factories/IAaveV2_WrappedATokenAdapter__factory.d.ts +252 -0
  266. package/lib/types/factories/IAaveV2_WrappedATokenAdapter__factory.js +341 -0
  267. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2VaultGetters__factory.d.ts +78 -0
  268. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2VaultGetters__factory.js +111 -0
  269. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2Vault__factory.d.ts +360 -0
  270. package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2Vault__factory.js +475 -0
  271. package/lib/types/factories/IBalancerV2Vault.sol/index.d.ts +2 -0
  272. package/lib/types/factories/IBalancerV2Vault.sol/index.js +10 -0
  273. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents__factory.d.ts +23 -0
  274. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents__factory.js +38 -0
  275. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions__factory.d.ts +12 -0
  276. package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1AdapterExceptions__factory.js → IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions__factory.js} +4 -4
  277. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter__factory.d.ts +514 -0
  278. package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter__factory.js +675 -0
  279. package/lib/types/factories/IBalancerV2VaultAdapter.sol/index.d.ts +3 -0
  280. package/lib/types/factories/IBalancerV2VaultAdapter.sol/index.js +12 -0
  281. package/lib/types/factories/IBotListV3.sol/IBotListV3Events__factory.d.ts +103 -0
  282. package/lib/types/factories/IBotListV3.sol/IBotListV3Events__factory.js +138 -0
  283. package/lib/types/factories/IBotListV3.sol/IBotListV3__factory.d.ts +315 -0
  284. package/lib/types/factories/IBotListV3.sol/IBotListV3__factory.js +416 -0
  285. package/lib/types/factories/IBotListV3.sol/index.d.ts +2 -0
  286. package/lib/types/factories/IBotListV3.sol/index.js +10 -0
  287. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter__factory.d.ts +196 -0
  288. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter__factory.js +267 -0
  289. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions__factory.d.ts +16 -0
  290. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions__factory.js +30 -0
  291. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/index.d.ts +2 -0
  292. package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/index.js +10 -0
  293. package/lib/types/factories/IContractsRegister.sol/IContractsRegisterEvents__factory.d.ts +28 -0
  294. package/lib/types/factories/IContractsRegister.sol/IContractsRegisterEvents__factory.js +45 -0
  295. package/lib/types/factories/{IWETHZapper__factory.d.ts → IContractsRegister.sol/IContractsRegister__factory.d.ts} +64 -60
  296. package/lib/types/factories/{IWETHZapper__factory.js → IContractsRegister.sol/IContractsRegister__factory.js} +70 -65
  297. package/lib/types/factories/IContractsRegister.sol/index.d.ts +2 -0
  298. package/lib/types/factories/IContractsRegister.sol/index.js +10 -0
  299. package/lib/types/factories/IControllerTimelockV3.sol/IControllerTimelockV3Events__factory.d.ts +73 -0
  300. package/lib/types/factories/IControllerTimelockV3.sol/IControllerTimelockV3Events__factory.js +101 -0
  301. package/lib/types/factories/IControllerTimelockV3.sol/IControllerTimelockV3__factory.d.ts +427 -0
  302. package/lib/types/factories/IControllerTimelockV3.sol/IControllerTimelockV3__factory.js +556 -0
  303. package/lib/types/factories/IControllerTimelockV3.sol/index.d.ts +2 -0
  304. package/lib/types/factories/IControllerTimelockV3.sol/index.js +10 -0
  305. package/lib/types/factories/IConvexToken__factory.d.ts +10 -0
  306. package/lib/types/factories/IConvexToken__factory.js +13 -0
  307. package/lib/types/factories/IConvexV1BaseRewardPoolAdapter__factory.d.ts +38 -6
  308. package/lib/types/factories/IConvexV1BaseRewardPoolAdapter__factory.js +48 -6
  309. package/lib/types/factories/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapterEvents__factory.d.ts +23 -0
  310. package/lib/types/factories/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapterEvents__factory.js +38 -0
  311. package/lib/types/factories/{IConvexV1BoosterAdapter__factory.d.ts → IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter__factory.d.ts} +26 -3
  312. package/lib/types/factories/{IConvexV1BoosterAdapter__factory.js → IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter__factory.js} +31 -2
  313. package/lib/types/factories/IConvexV1BoosterAdapter.sol/index.d.ts +2 -0
  314. package/lib/types/factories/IConvexV1BoosterAdapter.sol/index.js +10 -0
  315. package/lib/types/factories/ICreditFacadeV2.sol/ICreditFacadeV2Extended__factory.d.ts +0 -4
  316. package/lib/types/factories/ICreditFacadeV2.sol/ICreditFacadeV2Extended__factory.js +0 -5
  317. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3Events__factory.d.ts +19 -29
  318. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3Events__factory.js +21 -33
  319. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3__factory.d.ts +21 -97
  320. package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3__factory.js +23 -119
  321. package/lib/types/factories/ICreditFacadeV3Multicall__factory.d.ts +77 -43
  322. package/lib/types/factories/ICreditFacadeV3Multicall__factory.js +96 -54
  323. package/lib/types/factories/ICreditManagerV3.sol/ICreditManagerV3__factory.d.ts +162 -158
  324. package/lib/types/factories/ICreditManagerV3.sol/ICreditManagerV3__factory.js +200 -195
  325. package/lib/types/factories/ICurveV1Adapter__factory.d.ts +13 -71
  326. package/lib/types/factories/ICurveV1Adapter__factory.js +14 -91
  327. package/lib/types/factories/ICurveV1_2AssetsAdapter__factory.d.ts +13 -71
  328. package/lib/types/factories/ICurveV1_2AssetsAdapter__factory.js +14 -91
  329. package/lib/types/factories/ICurveV1_3AssetsAdapter__factory.d.ts +13 -71
  330. package/lib/types/factories/ICurveV1_3AssetsAdapter__factory.js +14 -91
  331. package/lib/types/factories/ICurveV1_4AssetsAdapter__factory.d.ts +13 -71
  332. package/lib/types/factories/ICurveV1_4AssetsAdapter__factory.js +14 -91
  333. package/lib/types/factories/IDaiLikePermit__factory.d.ts +46 -0
  334. package/lib/types/factories/IDaiLikePermit__factory.js +67 -0
  335. package/lib/types/factories/IDataCompressorV2_10__factory.d.ts +56 -66
  336. package/lib/types/factories/IDataCompressorV2_10__factory.js +68 -82
  337. package/lib/types/factories/IDataCompressorV3_00__factory.d.ts +321 -95
  338. package/lib/types/factories/IDataCompressorV3_00__factory.js +406 -119
  339. package/lib/types/factories/IDegenNFTV2.sol/IDegenNFTV2Events__factory.d.ts +38 -0
  340. package/lib/types/factories/IDegenNFTV2.sol/IDegenNFTV2Events__factory.js +58 -0
  341. package/lib/types/factories/IDegenNFTV2.sol/IDegenNFTV2Exceptions__factory.d.ts +24 -0
  342. package/lib/types/factories/IDegenNFTV2.sol/IDegenNFTV2Exceptions__factory.js +39 -0
  343. package/lib/types/factories/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3__factory.d.ts → IDegenNFTV2.sol/IDegenNFTV2__factory.d.ts} +190 -180
  344. package/lib/types/factories/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3__factory.js → IDegenNFTV2.sol/IDegenNFTV2__factory.js} +212 -195
  345. package/lib/types/factories/IDegenNFTV2.sol/index.d.ts +3 -0
  346. package/lib/types/factories/IDegenNFTV2.sol/index.js +12 -0
  347. package/lib/types/factories/IERC165__factory.d.ts +22 -0
  348. package/lib/types/factories/IERC165__factory.js +38 -0
  349. package/lib/types/factories/IERC20Permit__factory.d.ts +66 -0
  350. package/lib/types/factories/IERC20Permit__factory.js +94 -0
  351. package/lib/types/factories/IERC20ZapperDeposits__factory.d.ts +120 -0
  352. package/lib/types/factories/IERC20ZapperDeposits__factory.js +165 -0
  353. package/lib/types/factories/IERC4626Adapter__factory.d.ts +220 -0
  354. package/lib/types/factories/IERC4626Adapter__factory.js +297 -0
  355. package/lib/types/factories/IERC721Metadata__factory.d.ts +262 -0
  356. package/lib/types/factories/IERC721Metadata__factory.js +349 -0
  357. package/lib/types/factories/IERC721__factory.d.ts +228 -0
  358. package/lib/types/factories/IERC721__factory.js +304 -0
  359. package/lib/types/factories/IETHZapperDeposits__factory.d.ts +40 -0
  360. package/lib/types/factories/IETHZapperDeposits__factory.js +62 -0
  361. package/lib/types/factories/IFarmingPool__factory.d.ts +299 -0
  362. package/lib/types/factories/IFarmingPool__factory.js +396 -0
  363. package/lib/types/factories/IGasPricer__factory.d.ts +22 -0
  364. package/lib/types/factories/IGasPricer__factory.js +38 -0
  365. package/lib/types/factories/IGaugeV3.sol/IGaugeV3Events__factory.d.ts +118 -0
  366. package/lib/types/factories/IGaugeV3.sol/IGaugeV3Events__factory.js +157 -0
  367. package/lib/types/factories/IGaugeV3.sol/IGaugeV3__factory.d.ts +342 -0
  368. package/lib/types/factories/IGaugeV3.sol/IGaugeV3__factory.js +448 -0
  369. package/lib/types/factories/IGaugeV3.sol/index.d.ts +2 -0
  370. package/lib/types/factories/IGaugeV3.sol/index.js +10 -0
  371. package/lib/types/factories/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events__factory.d.ts → IGearStakingV3.sol/IGearStakingV3Events__factory.d.ts} +33 -63
  372. package/lib/types/factories/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events__factory.js → IGearStakingV3.sol/IGearStakingV3Events__factory.js} +34 -70
  373. package/lib/types/factories/IGearStakingV3.sol/IGearStakingV3__factory.d.ts +504 -0
  374. package/lib/types/factories/IGearStakingV3.sol/IGearStakingV3__factory.js +660 -0
  375. package/lib/types/factories/IGearStakingV3.sol/index.d.ts +2 -0
  376. package/lib/types/factories/IGearStakingV3.sol/index.js +10 -0
  377. package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeedEvents__factory.d.ts +33 -0
  378. package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeedEvents__factory.js +51 -0
  379. package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeedExceptions__factory.d.ts +28 -0
  380. package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeedExceptions__factory.js +44 -0
  381. package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeed__factory.d.ts +261 -0
  382. package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeed__factory.js +344 -0
  383. package/lib/types/factories/ILPPriceFeed.sol/index.d.ts +3 -0
  384. package/lib/types/factories/ILPPriceFeed.sol/index.js +12 -0
  385. package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1Adapter__factory.d.ts → ILidoV1Adapter__factory.d.ts} +7 -37
  386. package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1Adapter__factory.js → ILidoV1Adapter__factory.js} +8 -46
  387. package/lib/types/factories/ILinearInterestRateModelV3__factory.d.ts +98 -0
  388. package/lib/types/factories/ILinearInterestRateModelV3__factory.js +136 -0
  389. package/lib/types/factories/IPermit2__factory.d.ts +113 -0
  390. package/lib/types/factories/IPermit2__factory.js +155 -0
  391. package/lib/types/factories/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3Events__factory.d.ts +103 -0
  392. package/lib/types/factories/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3Events__factory.js +140 -0
  393. package/lib/types/factories/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3__factory.d.ts +441 -0
  394. package/lib/types/factories/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3__factory.js +580 -0
  395. package/lib/types/factories/IPoolQuotaKeeperV3.sol/index.d.ts +2 -0
  396. package/lib/types/factories/IPoolQuotaKeeperV3.sol/index.js +10 -0
  397. package/lib/types/factories/IPoolV3.sol/IPoolV3__factory.d.ts +62 -4
  398. package/lib/types/factories/IPoolV3.sol/IPoolV3__factory.js +79 -4
  399. package/lib/types/factories/IPriceFeed.sol/IPriceFeed__factory.d.ts +84 -0
  400. package/lib/types/factories/IPriceFeed.sol/IPriceFeed__factory.js +117 -0
  401. package/lib/types/factories/IPriceFeed.sol/IUpdatablePriceFeed__factory.d.ts +104 -0
  402. package/lib/types/factories/IPriceFeed.sol/IUpdatablePriceFeed__factory.js +143 -0
  403. package/lib/types/factories/IPriceFeed.sol/index.d.ts +2 -0
  404. package/lib/types/factories/IPriceFeed.sol/index.js +10 -0
  405. package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Events__factory.d.ts +23 -0
  406. package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Events__factory.js +38 -0
  407. package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Exceptions__factory.d.ts +20 -0
  408. package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Exceptions__factory.js +34 -0
  409. package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Ext__factory.d.ts +197 -0
  410. package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Ext__factory.js +267 -0
  411. package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2__factory.d.ts +183 -0
  412. package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2__factory.js +249 -0
  413. package/lib/types/factories/IPriceOracle.sol/index.d.ts +4 -0
  414. package/lib/types/factories/IPriceOracle.sol/index.js +14 -0
  415. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3Events__factory.d.ts +78 -0
  416. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3Events__factory.js +106 -0
  417. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3__factory.d.ts +326 -0
  418. package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3__factory.js +433 -0
  419. package/lib/types/factories/IPriceOracleV3.sol/index.d.ts +2 -0
  420. package/lib/types/factories/IPriceOracleV3.sol/index.js +10 -0
  421. package/lib/types/factories/IRouterV3__factory.d.ts +451 -0
  422. package/lib/types/factories/IRouterV3__factory.js +597 -0
  423. package/lib/types/factories/IRouter__factory.d.ts +14 -0
  424. package/lib/types/factories/IRouter__factory.js +19 -0
  425. package/lib/types/factories/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.d.ts +5 -1
  426. package/lib/types/factories/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.js +6 -1
  427. package/lib/types/factories/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.d.ts +12 -4
  428. package/lib/types/factories/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.js +14 -4
  429. package/lib/types/factories/IVotingContractV3__factory.d.ts +44 -0
  430. package/lib/types/factories/IVotingContractV3__factory.js +65 -0
  431. package/lib/types/factories/IWETH__factory.d.ts +194 -0
  432. package/lib/types/factories/IWETH__factory.js +260 -0
  433. package/lib/types/factories/IYearnV2Adapter__factory.d.ts +21 -13
  434. package/lib/types/factories/IYearnV2Adapter__factory.js +27 -15
  435. package/lib/types/factories/IZapperRegister__factory.d.ts +42 -0
  436. package/lib/types/factories/IZapperRegister__factory.js +64 -0
  437. package/lib/types/factories/IZapper__factory.d.ts +41 -11
  438. package/lib/types/factories/IZapper__factory.js +50 -11
  439. package/lib/types/factories/IwstETHV1Adapter__factory.d.ts +12 -4
  440. package/lib/types/factories/IwstETHV1Adapter__factory.js +16 -4
  441. package/lib/types/factories/NumericArrayLib__factory.d.ts +25 -0
  442. package/lib/types/factories/NumericArrayLib__factory.js +47 -0
  443. package/lib/types/factories/RedstoneConstants__factory.d.ts +65 -0
  444. package/lib/types/factories/RedstoneConstants__factory.js +99 -0
  445. package/lib/types/factories/RedstoneConsumerBase__factory.d.ts +164 -0
  446. package/lib/types/factories/RedstoneConsumerBase__factory.js +223 -0
  447. package/lib/types/factories/RedstoneConsumerNumericBase__factory.d.ts +164 -0
  448. package/lib/types/factories/RedstoneConsumerNumericBase__factory.js +223 -0
  449. package/lib/types/factories/RedstoneDefaultsLib__factory.d.ts +45 -0
  450. package/lib/types/factories/RedstoneDefaultsLib__factory.js +74 -0
  451. package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1AdapterEvents__factory.d.ts → RedstonePriceFeed.sol/IRedstonePriceFeedEvents__factory.d.ts} +6 -6
  452. package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1AdapterEvents__factory.js → RedstonePriceFeed.sol/IRedstonePriceFeedEvents__factory.js} +5 -5
  453. package/lib/types/factories/RedstonePriceFeed.sol/IRedstonePriceFeedExceptions__factory.d.ts +28 -0
  454. package/lib/types/factories/RedstonePriceFeed.sol/IRedstonePriceFeedExceptions__factory.js +44 -0
  455. package/lib/types/factories/RedstonePriceFeed.sol/RedstonePriceFeed__factory.d.ts +443 -0
  456. package/lib/types/factories/RedstonePriceFeed.sol/RedstonePriceFeed__factory.js +589 -0
  457. package/lib/types/factories/RedstonePriceFeed.sol/index.d.ts +3 -0
  458. package/lib/types/factories/RedstonePriceFeed.sol/index.js +12 -0
  459. package/lib/types/factories/SafeERC20__factory.d.ts +49 -0
  460. package/lib/types/factories/SafeERC20__factory.js +77 -0
  461. package/lib/types/factories/index.d.ts +44 -5
  462. package/lib/types/factories/index.js +74 -10
  463. package/lib/types/index.d.ts +173 -29
  464. package/lib/types/index.js +147 -30
  465. package/lib/utils/formatter.d.ts +0 -3
  466. package/lib/utils/formatter.js +1 -67
  467. package/lib/utils/math.d.ts +2 -0
  468. package/lib/utils/math.js +2 -0
  469. package/lib/utils/types.d.ts +1 -0
  470. package/lib/watchers/creditAccountWatcher.d.ts +3 -2
  471. package/lib/watchers/creditAccountWatcher.js +19 -13
  472. package/lib/watchers/creditAccountWatcher.spec.js +18 -18
  473. package/lib/watchers/creditManagerWatcher.d.ts +5 -3
  474. package/lib/watchers/creditManagerWatcher.js +32 -10
  475. package/lib/watchers/creditManagerWatcher.spec.js +12 -4
  476. package/package.json +13 -9
  477. package/contracts/IRouter.sol +0 -100
  478. package/lib/core/pool/index.d.ts +0 -1
  479. package/lib/core/pool/index.js +0 -17
  480. package/lib/core/strategy.spec.js +0 -62
  481. package/lib/types/ILidoV1Adapter.sol/index.d.ts +0 -3
  482. package/lib/types/IWERC20Zapper.d.ts +0 -142
  483. package/lib/types/IWETHZapper.d.ts +0 -138
  484. package/lib/types/IWithdrawalManagerV3.sol/IWithdrawalManagerV3.d.ts +0 -370
  485. package/lib/types/IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events.d.ts +0 -133
  486. package/lib/types/IWithdrawalManagerV3.sol/index.d.ts +0 -2
  487. package/lib/types/factories/ILidoV1Adapter.sol/ILidoV1AdapterExceptions__factory.d.ts +0 -12
  488. package/lib/types/factories/ILidoV1Adapter.sol/index.d.ts +0 -3
  489. package/lib/types/factories/ILidoV1Adapter.sol/index.js +0 -12
  490. package/lib/types/factories/IWithdrawalManagerV3.sol/index.d.ts +0 -2
  491. package/lib/types/factories/IWithdrawalManagerV3.sol/index.js +0 -10
  492. /package/lib/core/{strategy.spec.d.ts → gaugeMath.spec.d.ts} +0 -0
  493. /package/lib/{types/IConvexV1BoosterAdapter.js → pathfinder/v1/core.js} +0 -0
  494. /package/lib/{types/ILidoV1Adapter.sol/ILidoV1Adapter.js → payload/gauge.js} +0 -0
  495. /package/lib/types/{ILidoV1Adapter.sol/ILidoV1AdapterEvents.js → CalldataExtractor.js} +0 -0
  496. /package/lib/types/{ILidoV1Adapter.sol/ILidoV1AdapterExceptions.js → ERC20.js} +0 -0
  497. /package/lib/types/{ILidoV1Adapter.sol/index.js → FarmAccounting.js} +0 -0
  498. /package/lib/types/{IWERC20Zapper.js → IAaveV2_LendingPoolAdapter.js} +0 -0
  499. /package/lib/types/{IWETHZapper.js → IAaveV2_WrappedATokenAdapter.js} +0 -0
  500. /package/lib/types/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3.js → IBalancerV2Vault.sol/IBalancerV2Vault.js} +0 -0
  501. /package/lib/types/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events.js → IBalancerV2Vault.sol/IBalancerV2VaultGetters.js} +0 -0
  502. /package/lib/types/{IWithdrawalManagerV3.sol → IBalancerV2Vault.sol}/index.js +0 -0
@@ -1,45 +1,73 @@
1
1
  import { NetworkType, SupportedToken } from "@gearbox-protocol/sdk-gov";
2
- import { BigNumberish, providers, Signer } from "ethers";
2
+ import { providers, Signer } from "ethers";
3
+ import { Asset } from "../core/assets";
3
4
  import { CreditAccountData } from "../core/creditAccount";
4
5
  import { CreditManagerData } from "../core/creditManager";
5
- import { IRouter } from "../types";
6
- import { MultiCall, PathFinderCloseResult, PathFinderOpenStrategyResult, PathFinderResult, SwapOperation } from "./core";
7
- export interface CloseResult {
6
+ import { IRouterV3 } from "../types";
7
+ import { PathFinderCloseResult, PathFinderOpenStrategyResult, PathFinderResult, SwapOperation } from "./core";
8
+ interface FindAllSwapsProps {
9
+ creditAccount: CreditAccountData;
10
+ swapOperation: SwapOperation;
11
+ tokenIn: string;
12
+ tokenOut: string;
8
13
  amount: bigint;
9
- calls: Array<MultiCall>;
10
- gasUsage: bigint;
14
+ leftoverAmount: bigint;
15
+ slippage: number;
16
+ }
17
+ interface FindOneTokenPathProps {
18
+ creditAccount: CreditAccountData;
19
+ tokenIn: string;
20
+ tokenOut: string;
21
+ amount: bigint;
22
+ slippage: number;
23
+ }
24
+ interface FindBestClosePathProps {
25
+ creditAccount: CreditAccountData;
26
+ creditManager: CreditManagerData;
27
+ expectedBalances: Record<string, Asset>;
28
+ leftoverBalances: Record<string, Asset>;
29
+ slippage: number;
30
+ noConcurrency?: boolean;
31
+ }
32
+ interface FindOpenStrategyPathProps {
33
+ creditManager: CreditManagerData;
34
+ expectedBalances: Record<string, Asset>;
35
+ leftoverBalances: Record<string, Asset>;
36
+ target: string;
37
+ slippage: number;
11
38
  }
12
39
  export declare class PathFinder {
13
- pathFinder: IRouter;
40
+ pathFinder: IRouterV3;
14
41
  network: NetworkType;
15
42
  static connectors: Array<SupportedToken>;
16
43
  protected readonly _connectors: Array<string>;
17
44
  constructor(address: string, provider: Signer | providers.Provider, network?: NetworkType, connectors?: SupportedToken[]);
18
- findAllSwaps(creditAccount: CreditAccountData, swapOperation: SwapOperation, tokenIn: SupportedToken | string, tokenOut: SupportedToken | string, amount: BigNumberish, slippage: number): Promise<Array<PathFinderResult>>;
19
- findOneTokenPath(creditAccount: CreditAccountData, tokenIn: SupportedToken | string, tokenOut: SupportedToken | string, amount: BigNumberish, slippage: number): Promise<PathFinderResult>;
45
+ findAllSwaps({ creditAccount, swapOperation, tokenIn, tokenOut, amount, leftoverAmount, slippage, }: FindAllSwapsProps): Promise<Array<PathFinderResult>>;
46
+ findOneTokenPath({ creditAccount, tokenIn, tokenOut, amount, slippage, }: FindOneTokenPathProps): Promise<PathFinderResult>;
20
47
  /**
21
- * @dev Finds the best path for opening credit account and converting all NORMAL tokens and LP token in the way to TARGET
22
- * @param cm CreditManagerData which represents credit manager you want to use to open credit account
48
+ * @dev Finds the best path for opening Credit Account and converting all NORMAL tokens and LP token in the way to TARGET
49
+ * @param cm CreditManagerData which represents credit manager you want to use to open Credit Account
23
50
  * @param expectedBalances Expected balances which would be on account accounting also debt. For example,
24
- * if you open an USDC credit account, borrow 50_000 USDC and provide 10 WETH and 10_USDC as collateral
51
+ * if you open an USDC Credit Account, borrow 50_000 USDC and provide 10 WETH and 10_USDC as collateral
25
52
  * from your own funds, expectedBalances should be: { "USDC": 60_000 * (10**6), "<address of WETH>": WAD.mul(10) }
26
53
  *
27
54
  * @param target Address of symbol of desired token
28
55
  * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
29
56
  * @returns PathFinderOpenStrategyResult which
30
57
  */
31
- findOpenStrategyPath(cm: CreditManagerData, expectedBalances: Record<SupportedToken | string, BigNumberish>, target: SupportedToken | string, slippage: number): Promise<PathFinderOpenStrategyResult>;
58
+ findOpenStrategyPath({ creditManager: cm, expectedBalances, leftoverBalances, target, slippage, }: FindOpenStrategyPathProps): Promise<PathFinderOpenStrategyResult>;
32
59
  /**
33
60
  * @dev Finds the path to swap / withdraw all assets from CreditAccount into underlying asset
34
- * Can bu used for closing credit account and for liquidations as well.
61
+ * Can bu used for closing Credit Account and for liquidations as well.
35
62
  * @param creditAccount CreditAccountData object used for close path computation
36
63
  * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
37
64
  * @return The best option in PathFinderCloseResult format, which
38
65
  * - underlyingBalance - total balance of underlying token
39
66
  * - calls - list of calls which should be done to swap & unwrap everything to underlying token
40
67
  */
41
- findBestClosePath(creditAccount: CreditAccountData, slippage: number, noConcurency?: boolean): Promise<PathFinderCloseResult>;
42
- static compare(r1: CloseResult, r2: CloseResult, gasPriceRAY: bigint): CloseResult;
68
+ findBestClosePath({ creditAccount, creditManager: cm, expectedBalances, leftoverBalances, slippage, noConcurrency, }: FindBestClosePathProps): Promise<PathFinderCloseResult>;
69
+ static compare(r1: PathFinderResult, r2: PathFinderResult, gasPriceRAY: bigint): PathFinderResult;
43
70
  getAvailableConnectors(availableList: Record<string, bigint> | Record<string, true>): string[];
44
71
  static getAvailableConnectors(availableList: Record<string, bigint> | Record<string, true>, connectors: string[]): string[];
45
72
  }
73
+ export {};
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PathFinder = void 0;
4
4
  const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
5
- const ethers_1 = require("ethers");
6
5
  const types_1 = require("../types");
7
6
  const pathOptions_1 = require("./pathOptions");
8
7
  const MAX_GAS_PER_ROUTE = 200e6;
@@ -13,114 +12,132 @@ class PathFinder {
13
12
  static connectors = [
14
13
  "USDC",
15
14
  "WETH",
16
- "DAI",
15
+ "USDT",
17
16
  "FRAX",
18
17
  ];
19
18
  _connectors;
20
19
  constructor(address, provider, network = "Mainnet", connectors = PathFinder.connectors) {
21
- this.pathFinder = types_1.IRouter__factory.connect(address, provider);
20
+ this.pathFinder = types_1.IRouterV3__factory.connect(address, provider);
22
21
  this.network = network;
23
22
  this._connectors = connectors
24
23
  .map(c => sdk_gov_1.tokenDataByNetwork[this.network][c]?.toLowerCase())
25
24
  .filter(t => !!t);
26
25
  }
27
- async findAllSwaps(creditAccount, swapOperation, tokenIn, tokenOut, amount, slippage) {
26
+ async findAllSwaps({ creditAccount, swapOperation, tokenIn, tokenOut, amount, leftoverAmount, slippage, }) {
28
27
  const connectors = this.getAvailableConnectors(creditAccount.balances);
29
28
  const swapTask = {
30
29
  swapOperation: swapOperation,
31
30
  creditAccount: creditAccount.addr,
32
- tokenIn: sdk_gov_1.tokenDataByNetwork[this.network][tokenIn] || tokenIn,
33
- tokenOut: sdk_gov_1.tokenDataByNetwork[this.network][tokenOut] ||
34
- tokenOut,
31
+ tokenIn,
32
+ tokenOut,
35
33
  connectors,
36
- amount: ethers_1.BigNumber.from(amount),
37
- slippage: ethers_1.BigNumber.from(slippage),
38
- externalSlippage: false,
34
+ amount,
35
+ leftoverAmount,
39
36
  };
40
- const results = await this.pathFinder.callStatic.findAllSwaps(swapTask, {
37
+ const results = await this.pathFinder.callStatic.findAllSwaps(swapTask, slippage, {
41
38
  gasLimit: GAS_PER_BLOCK,
42
39
  });
43
40
  const unique = {};
44
41
  results.forEach(r => {
45
- const key = `${r.amount.toHexString()}${r.calls
42
+ const key = `${r.minAmount.toHexString()}${r.calls
46
43
  .map(c => `${c.target.toLowerCase()}${c.callData}`)
47
44
  .join("-")}`;
48
45
  unique[key] = {
49
46
  amount: (0, sdk_gov_1.toBigInt)(r.amount),
47
+ minAmount: (0, sdk_gov_1.toBigInt)(r.minAmount),
48
+ gasUsage: (0, sdk_gov_1.toBigInt)(r.gasUsage),
50
49
  calls: r.calls,
51
50
  };
52
51
  });
53
52
  return Object.values(unique);
54
53
  }
55
- async findOneTokenPath(creditAccount, tokenIn, tokenOut, amount, slippage) {
56
- const tokenInAddr = sdk_gov_1.tokenDataByNetwork[this.network][tokenIn] || tokenIn;
54
+ async findOneTokenPath({ creditAccount, tokenIn, tokenOut, amount, slippage, }) {
57
55
  const connectors = this.getAvailableConnectors(creditAccount.balances);
58
- const result = await this.pathFinder.callStatic.findOneTokenPath(tokenInAddr, amount, sdk_gov_1.tokenDataByNetwork[this.network][tokenOut] || tokenOut, creditAccount.addr, connectors, slippage, {
56
+ const result = await this.pathFinder.callStatic.findOneTokenPath(tokenIn, amount, tokenOut, creditAccount.addr, connectors, slippage, {
59
57
  gasLimit: GAS_PER_BLOCK,
60
58
  });
61
59
  return {
62
60
  amount: (0, sdk_gov_1.toBigInt)(result.amount),
61
+ minAmount: (0, sdk_gov_1.toBigInt)(result.minAmount),
62
+ gasUsage: (0, sdk_gov_1.toBigInt)(result.gasUsage),
63
63
  calls: result.calls,
64
64
  };
65
65
  }
66
66
  /**
67
- * @dev Finds the best path for opening credit account and converting all NORMAL tokens and LP token in the way to TARGET
68
- * @param cm CreditManagerData which represents credit manager you want to use to open credit account
67
+ * @dev Finds the best path for opening Credit Account and converting all NORMAL tokens and LP token in the way to TARGET
68
+ * @param cm CreditManagerData which represents credit manager you want to use to open Credit Account
69
69
  * @param expectedBalances Expected balances which would be on account accounting also debt. For example,
70
- * if you open an USDC credit account, borrow 50_000 USDC and provide 10 WETH and 10_USDC as collateral
70
+ * if you open an USDC Credit Account, borrow 50_000 USDC and provide 10 WETH and 10_USDC as collateral
71
71
  * from your own funds, expectedBalances should be: { "USDC": 60_000 * (10**6), "<address of WETH>": WAD.mul(10) }
72
72
  *
73
73
  * @param target Address of symbol of desired token
74
74
  * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
75
75
  * @returns PathFinderOpenStrategyResult which
76
76
  */
77
- async findOpenStrategyPath(cm, expectedBalances, target, slippage) {
78
- const targetAddr = sdk_gov_1.tokenDataByNetwork[this.network][target] || target;
79
- const expectedBalancesAddr = Object.entries(expectedBalances).reduce((acc, [token, balance]) => {
80
- const tokenAddr = sdk_gov_1.tokenDataByNetwork[this.network][token] || token;
81
- acc[tokenAddr.toLowerCase()] = balance;
82
- return acc;
83
- }, {});
84
- const balances = cm.collateralTokens.map(token => ({
77
+ async findOpenStrategyPath({ creditManager: cm, expectedBalances, leftoverBalances, target, slippage, }) {
78
+ const input = cm.collateralTokens.map(token => ({
85
79
  token,
86
- balance: expectedBalancesAddr[token] || 0,
80
+ balance: expectedBalances[token]?.balance || 0n,
81
+ }));
82
+ const leftover = cm.collateralTokens.map(token => ({
83
+ token,
84
+ balance: leftoverBalances[token]?.balance || 1n,
87
85
  }));
88
86
  const connectors = this.getAvailableConnectors(cm.supportedTokens);
89
- const result = await this.pathFinder.callStatic.findOpenStrategyPath(cm.address, balances, targetAddr, connectors, slippage, {
87
+ const [outBalances, result] = await this.pathFinder.callStatic.findOpenStrategyPath(cm.address, input, leftover, target, connectors, slippage, {
90
88
  gasLimit: GAS_PER_BLOCK,
91
89
  });
92
- const balancesAfter = result[0].reduce((acc, b) => {
90
+ const balancesAfter = outBalances.reduce((acc, b) => {
93
91
  acc[b.token.toLowerCase()] = (0, sdk_gov_1.toBigInt)(b.balance);
94
92
  return acc;
95
93
  }, {});
96
94
  return {
97
- balances: balancesAfter,
98
- calls: result[1].calls,
95
+ balances: {
96
+ ...balancesAfter,
97
+ [target]: (expectedBalances[target]?.balance || 0n) + (0, sdk_gov_1.toBigInt)(result.amount),
98
+ },
99
+ minBalances: {
100
+ ...balancesAfter,
101
+ [target]: (expectedBalances[target]?.balance || 0n) +
102
+ (0, sdk_gov_1.toBigInt)(result.minAmount),
103
+ },
104
+ calls: result.calls,
105
+ minAmount: (0, sdk_gov_1.toBigInt)(result.minAmount),
106
+ amount: (0, sdk_gov_1.toBigInt)(result.amount),
107
+ gasUsage: (0, sdk_gov_1.toBigInt)(result.gasUsage),
99
108
  };
100
109
  }
101
110
  /**
102
111
  * @dev Finds the path to swap / withdraw all assets from CreditAccount into underlying asset
103
- * Can bu used for closing credit account and for liquidations as well.
112
+ * Can bu used for closing Credit Account and for liquidations as well.
104
113
  * @param creditAccount CreditAccountData object used for close path computation
105
114
  * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
106
115
  * @return The best option in PathFinderCloseResult format, which
107
116
  * - underlyingBalance - total balance of underlying token
108
117
  * - calls - list of calls which should be done to swap & unwrap everything to underlying token
109
118
  */
110
- async findBestClosePath(creditAccount, slippage, noConcurency = false) {
119
+ async findBestClosePath({ creditAccount, creditManager: cm, expectedBalances, leftoverBalances, slippage, noConcurrency = false, }) {
111
120
  const loopsPerTx = Math.floor(GAS_PER_BLOCK / MAX_GAS_PER_ROUTE);
112
121
  const pathOptions = pathOptions_1.PathOptionFactory.generatePathOptions(creditAccount.allBalances, loopsPerTx);
122
+ const expected = cm.collateralTokens.map(token => ({
123
+ token,
124
+ balance: expectedBalances[token]?.balance || 0n,
125
+ }));
126
+ const leftover = cm.collateralTokens.map(token => ({
127
+ token,
128
+ balance: leftoverBalances[token]?.balance || 1n,
129
+ }));
113
130
  const connectors = this.getAvailableConnectors(creditAccount.balances);
114
131
  let results = [];
115
- if (noConcurency) {
132
+ if (noConcurrency) {
116
133
  for (const po of pathOptions) {
117
- results.push(await this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, connectors, slippage, po, loopsPerTx, false, {
134
+ results.push(await this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, expected, leftover, connectors, slippage, po, loopsPerTx, false, {
118
135
  gasLimit: GAS_PER_BLOCK,
119
136
  }));
120
137
  }
121
138
  }
122
139
  else {
123
- const requests = pathOptions.map(po => this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, connectors, slippage, po, loopsPerTx, false, {
140
+ const requests = pathOptions.map(po => this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, expected, leftover, connectors, slippage, po, loopsPerTx, false, {
124
141
  gasLimit: GAS_PER_BLOCK,
125
142
  }));
126
143
  results = await Promise.all(requests);
@@ -128,21 +145,23 @@ class PathFinder {
128
145
  const bestResult = results.reduce((best, [pathFinderResult, gasPriceRAY]) => PathFinder.compare(best, {
129
146
  calls: pathFinderResult.calls,
130
147
  amount: (0, sdk_gov_1.toBigInt)(pathFinderResult.amount),
148
+ minAmount: (0, sdk_gov_1.toBigInt)(pathFinderResult.minAmount),
131
149
  gasUsage: (0, sdk_gov_1.toBigInt)(pathFinderResult.gasUsage),
132
150
  }, (0, sdk_gov_1.toBigInt)(gasPriceRAY)), {
133
151
  amount: 0n,
152
+ minAmount: 0n,
134
153
  gasUsage: 0n,
135
154
  calls: [],
136
155
  });
137
156
  return {
138
- underlyingBalance: bestResult.amount +
157
+ ...bestResult,
158
+ underlyingBalance: bestResult.minAmount +
139
159
  creditAccount.allBalances[creditAccount.underlyingToken.toLowerCase()]
140
160
  .balance,
141
- calls: bestResult.calls,
142
161
  };
143
162
  }
144
163
  static compare(r1, r2, gasPriceRAY) {
145
- const comparator = ({ amount, gasUsage }, gasPrice) => amount - (gasUsage * gasPrice) / sdk_gov_1.RAY;
164
+ const comparator = ({ minAmount, gasUsage }, gasPrice) => minAmount - (gasUsage * gasPrice) / sdk_gov_1.RAY;
146
165
  return comparator(r1, gasPriceRAY) > comparator(r2, gasPriceRAY) ? r1 : r2;
147
166
  }
148
167
  getAvailableConnectors(availableList) {
@@ -7,12 +7,14 @@ const pathfinder_1 = require("./pathfinder");
7
7
  describe("PathFinder test", () => {
8
8
  it("compare works correctly", () => {
9
9
  const r1 = {
10
- amount: 2000n,
10
+ minAmount: 2000n,
11
+ amount: 20000n,
11
12
  gasUsage: 1000n,
12
13
  calls: [],
13
14
  };
14
15
  const r2 = {
15
- amount: 3000n,
16
+ minAmount: 3000n,
17
+ amount: 30000n,
16
18
  gasUsage: 2000n,
17
19
  calls: [],
18
20
  };
@@ -28,11 +30,13 @@ describe("PathFinder test", () => {
28
30
  [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase()]: true,
29
31
  [sdk_gov_1.tokenDataByNetwork.Mainnet.DAI.toLowerCase()]: true,
30
32
  [sdk_gov_1.tokenDataByNetwork.Mainnet.FRAX.toLowerCase()]: true,
33
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.USDT.toLowerCase()]: true,
31
34
  };
32
35
  (0, chai_1.expect)(pf.getAvailableConnectors(allowedTokens)).to.be.deep.equal([
33
36
  sdk_gov_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase(),
34
37
  sdk_gov_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase(),
35
- sdk_gov_1.tokenDataByNetwork.Mainnet.DAI.toLowerCase(),
38
+ // tokenDataByNetwork.Mainnet.DAI.toLowerCase(),
39
+ sdk_gov_1.tokenDataByNetwork.Mainnet.USDT.toLowerCase(),
36
40
  sdk_gov_1.tokenDataByNetwork.Mainnet.FRAX.toLowerCase(),
37
41
  ]);
38
42
  });
@@ -0,0 +1,16 @@
1
+ import { ExcludeArrayProps } from "@gearbox-protocol/sdk-gov";
2
+ import { SwapTaskStructOutput } from "../../types/IRouter";
3
+ import { MultiCall } from "../core";
4
+ export type SwapTaskV1 = ExcludeArrayProps<SwapTaskStructOutput>;
5
+ export interface PathFinderV1Result {
6
+ amount: bigint;
7
+ calls: Array<MultiCall>;
8
+ }
9
+ export interface PathFinderV1OpenStrategyResult {
10
+ balances: Record<string, bigint>;
11
+ calls: Array<MultiCall>;
12
+ }
13
+ export interface PathFinderV1CloseResult {
14
+ underlyingBalance: bigint;
15
+ calls: Array<MultiCall>;
16
+ }
@@ -0,0 +1,46 @@
1
+ import { NetworkType, SupportedToken } from "@gearbox-protocol/sdk-gov";
2
+ import { BigNumberish, providers, Signer } from "ethers";
3
+ import { CreditAccountData } from "../../core/creditAccount";
4
+ import { CreditManagerData } from "../../core/creditManager";
5
+ import { IRouter } from "../../types";
6
+ import { MultiCall, SwapOperation } from "../core";
7
+ import { PathFinderV1CloseResult, PathFinderV1OpenStrategyResult, PathFinderV1Result } from "./core";
8
+ export interface CloseResult {
9
+ amount: bigint;
10
+ calls: Array<MultiCall>;
11
+ gasUsage: bigint;
12
+ }
13
+ export declare class PathFinderV1 {
14
+ pathFinder: IRouter;
15
+ network: NetworkType;
16
+ static connectors: Array<SupportedToken>;
17
+ protected readonly _connectors: Array<string>;
18
+ constructor(address: string, provider: Signer | providers.Provider, network?: NetworkType, connectors?: SupportedToken[]);
19
+ findAllSwaps(creditAccount: CreditAccountData, swapOperation: SwapOperation, tokenIn: SupportedToken | string, tokenOut: SupportedToken | string, amount: BigNumberish, slippage: number): Promise<Array<PathFinderV1Result>>;
20
+ findOneTokenPath(creditAccount: CreditAccountData, tokenIn: SupportedToken | string, tokenOut: SupportedToken | string, amount: BigNumberish, slippage: number): Promise<PathFinderV1Result>;
21
+ /**
22
+ * @dev Finds the best path for opening credit account and converting all NORMAL tokens and LP token in the way to TARGET
23
+ * @param cm CreditManagerData which represents credit manager you want to use to open credit account
24
+ * @param expectedBalances Expected balances which would be on account accounting also debt. For example,
25
+ * if you open an USDC credit account, borrow 50_000 USDC and provide 10 WETH and 10_USDC as collateral
26
+ * from your own funds, expectedBalances should be: { "USDC": 60_000 * (10**6), "<address of WETH>": WAD.mul(10) }
27
+ *
28
+ * @param target Address of symbol of desired token
29
+ * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
30
+ * @returns PathFinderOpenStrategyResult which
31
+ */
32
+ findOpenStrategyPath(cm: CreditManagerData, expectedBalances: Record<SupportedToken | string, BigNumberish>, target: SupportedToken | string, slippage: number): Promise<PathFinderV1OpenStrategyResult>;
33
+ /**
34
+ * @dev Finds the path to swap / withdraw all assets from CreditAccount into underlying asset
35
+ * Can bu used for closing credit account and for liquidations as well.
36
+ * @param creditAccount CreditAccountData object used for close path computation
37
+ * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
38
+ * @return The best option in PathFinderCloseResult format, which
39
+ * - underlyingBalance - total balance of underlying token
40
+ * - calls - list of calls which should be done to swap & unwrap everything to underlying token
41
+ */
42
+ findBestClosePath(creditAccount: CreditAccountData, slippage: number, noConcurency?: boolean): Promise<PathFinderV1CloseResult>;
43
+ static compare(r1: CloseResult, r2: CloseResult, gasPriceRAY: bigint): CloseResult;
44
+ getAvailableConnectors(availableList: Record<string, bigint> | Record<string, true>): string[];
45
+ static getAvailableConnectors(availableList: Record<string, bigint> | Record<string, true>, connectors: string[]): string[];
46
+ }
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PathFinderV1 = void 0;
4
+ const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
5
+ const ethers_1 = require("ethers");
6
+ const types_1 = require("../../types");
7
+ const pathOptions_1 = require("../pathOptions");
8
+ const MAX_GAS_PER_ROUTE = 200e6;
9
+ const GAS_PER_BLOCK = 400e6;
10
+ class PathFinderV1 {
11
+ pathFinder;
12
+ network;
13
+ static connectors = [
14
+ "USDC",
15
+ "WETH",
16
+ "USDT",
17
+ "FRAX",
18
+ ];
19
+ _connectors;
20
+ constructor(address, provider, network = "Mainnet", connectors = PathFinderV1.connectors) {
21
+ this.pathFinder = types_1.IRouter__factory.connect(address, provider);
22
+ this.network = network;
23
+ this._connectors = connectors
24
+ .map(c => sdk_gov_1.tokenDataByNetwork[this.network][c]?.toLowerCase())
25
+ .filter(t => !!t);
26
+ }
27
+ async findAllSwaps(creditAccount, swapOperation, tokenIn, tokenOut, amount, slippage) {
28
+ const connectors = this.getAvailableConnectors(creditAccount.balances);
29
+ const swapTask = {
30
+ swapOperation: swapOperation,
31
+ creditAccount: creditAccount.addr,
32
+ tokenIn: sdk_gov_1.tokenDataByNetwork[this.network][tokenIn] || tokenIn,
33
+ tokenOut: sdk_gov_1.tokenDataByNetwork[this.network][tokenOut] ||
34
+ tokenOut,
35
+ connectors,
36
+ amount: ethers_1.BigNumber.from(amount),
37
+ slippage: ethers_1.BigNumber.from(slippage),
38
+ externalSlippage: false,
39
+ };
40
+ const results = await this.pathFinder.callStatic.findAllSwaps(swapTask, {
41
+ gasLimit: GAS_PER_BLOCK,
42
+ });
43
+ const unique = {};
44
+ results.forEach(r => {
45
+ const key = `${r.amount.toHexString()}${r.calls
46
+ .map(c => `${c.target.toLowerCase()}${c.callData}`)
47
+ .join("-")}`;
48
+ unique[key] = {
49
+ amount: (0, sdk_gov_1.toBigInt)(r.amount),
50
+ calls: r.calls,
51
+ };
52
+ });
53
+ return Object.values(unique);
54
+ }
55
+ async findOneTokenPath(creditAccount, tokenIn, tokenOut, amount, slippage) {
56
+ const tokenInAddr = sdk_gov_1.tokenDataByNetwork[this.network][tokenIn] || tokenIn;
57
+ const connectors = this.getAvailableConnectors(creditAccount.balances);
58
+ const result = await this.pathFinder.callStatic.findOneTokenPath(tokenInAddr, amount, sdk_gov_1.tokenDataByNetwork[this.network][tokenOut] || tokenOut, creditAccount.addr, connectors, slippage, {
59
+ gasLimit: GAS_PER_BLOCK,
60
+ });
61
+ return {
62
+ amount: (0, sdk_gov_1.toBigInt)(result.amount),
63
+ calls: result.calls,
64
+ };
65
+ }
66
+ /**
67
+ * @dev Finds the best path for opening credit account and converting all NORMAL tokens and LP token in the way to TARGET
68
+ * @param cm CreditManagerData which represents credit manager you want to use to open credit account
69
+ * @param expectedBalances Expected balances which would be on account accounting also debt. For example,
70
+ * if you open an USDC credit account, borrow 50_000 USDC and provide 10 WETH and 10_USDC as collateral
71
+ * from your own funds, expectedBalances should be: { "USDC": 60_000 * (10**6), "<address of WETH>": WAD.mul(10) }
72
+ *
73
+ * @param target Address of symbol of desired token
74
+ * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
75
+ * @returns PathFinderOpenStrategyResult which
76
+ */
77
+ async findOpenStrategyPath(cm, expectedBalances, target, slippage) {
78
+ const targetAddr = sdk_gov_1.tokenDataByNetwork[this.network][target] || target;
79
+ const expectedBalancesAddr = Object.entries(expectedBalances).reduce((acc, [token, balance]) => {
80
+ const tokenAddr = sdk_gov_1.tokenDataByNetwork[this.network][token] || token;
81
+ acc[tokenAddr.toLowerCase()] = balance;
82
+ return acc;
83
+ }, {});
84
+ const balances = cm.collateralTokens.map(token => ({
85
+ token,
86
+ balance: expectedBalancesAddr[token] || 0,
87
+ }));
88
+ const connectors = this.getAvailableConnectors(cm.supportedTokens);
89
+ const result = await this.pathFinder.callStatic.findOpenStrategyPath(cm.address, balances, targetAddr, connectors, slippage, {
90
+ gasLimit: GAS_PER_BLOCK,
91
+ });
92
+ const balancesAfter = result[0].reduce((acc, b) => {
93
+ acc[b.token.toLowerCase()] = (0, sdk_gov_1.toBigInt)(b.balance);
94
+ return acc;
95
+ }, {});
96
+ return {
97
+ balances: balancesAfter,
98
+ calls: result[1].calls,
99
+ };
100
+ }
101
+ /**
102
+ * @dev Finds the path to swap / withdraw all assets from CreditAccount into underlying asset
103
+ * Can bu used for closing credit account and for liquidations as well.
104
+ * @param creditAccount CreditAccountData object used for close path computation
105
+ * @param slippage Slippage in PERCENTAGE_FORMAT (100% = 10_000) per operation
106
+ * @return The best option in PathFinderCloseResult format, which
107
+ * - underlyingBalance - total balance of underlying token
108
+ * - calls - list of calls which should be done to swap & unwrap everything to underlying token
109
+ */
110
+ async findBestClosePath(creditAccount, slippage, noConcurency = false) {
111
+ const loopsPerTx = Math.floor(GAS_PER_BLOCK / MAX_GAS_PER_ROUTE);
112
+ const pathOptions = pathOptions_1.PathOptionFactory.generatePathOptions(creditAccount.allBalances, loopsPerTx);
113
+ const connectors = this.getAvailableConnectors(creditAccount.balances);
114
+ let results = [];
115
+ if (noConcurency) {
116
+ for (const po of pathOptions) {
117
+ results.push(await this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, connectors, slippage, po, loopsPerTx, false, {
118
+ gasLimit: GAS_PER_BLOCK,
119
+ }));
120
+ }
121
+ }
122
+ else {
123
+ const requests = pathOptions.map(po => this.pathFinder.callStatic.findBestClosePath(creditAccount.addr, connectors, slippage, po, loopsPerTx, false, {
124
+ gasLimit: GAS_PER_BLOCK,
125
+ }));
126
+ results = await Promise.all(requests);
127
+ }
128
+ const bestResult = results.reduce((best, [pathFinderResult, gasPriceRAY]) => PathFinderV1.compare(best, {
129
+ calls: pathFinderResult.calls,
130
+ amount: (0, sdk_gov_1.toBigInt)(pathFinderResult.amount),
131
+ gasUsage: (0, sdk_gov_1.toBigInt)(pathFinderResult.gasUsage),
132
+ }, (0, sdk_gov_1.toBigInt)(gasPriceRAY)), {
133
+ amount: 0n,
134
+ gasUsage: 0n,
135
+ calls: [],
136
+ });
137
+ return {
138
+ underlyingBalance: bestResult.amount +
139
+ creditAccount.allBalances[creditAccount.underlyingToken.toLowerCase()]
140
+ .balance,
141
+ calls: bestResult.calls,
142
+ };
143
+ }
144
+ static compare(r1, r2, gasPriceRAY) {
145
+ const comparator = ({ amount, gasUsage }, gasPrice) => amount - (gasUsage * gasPrice) / sdk_gov_1.RAY;
146
+ return comparator(r1, gasPriceRAY) > comparator(r2, gasPriceRAY) ? r1 : r2;
147
+ }
148
+ getAvailableConnectors(availableList) {
149
+ return PathFinderV1.getAvailableConnectors(availableList, this._connectors);
150
+ }
151
+ static getAvailableConnectors(availableList, connectors) {
152
+ return connectors.filter(t => availableList[t] !== undefined);
153
+ }
154
+ }
155
+ exports.PathFinderV1 = PathFinderV1;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sdk_gov_1 = require("@gearbox-protocol/sdk-gov");
4
+ const chai_1 = require("chai");
5
+ const ethers_1 = require("ethers");
6
+ const pathfinderv1_1 = require("./pathfinderv1");
7
+ describe("PathFinderV1 test", () => {
8
+ it("compare works correctly", () => {
9
+ const r1 = {
10
+ amount: 2000n,
11
+ gasUsage: 1000n,
12
+ calls: [],
13
+ };
14
+ const r2 = {
15
+ amount: 3000n,
16
+ gasUsage: 2000n,
17
+ calls: [],
18
+ };
19
+ let result = pathfinderv1_1.PathFinderV1.compare(r1, r2, sdk_gov_1.RAY);
20
+ (0, chai_1.expect)(result).to.be.eql(r2);
21
+ result = pathfinderv1_1.PathFinderV1.compare(r1, r2, sdk_gov_1.RAY * 2n);
22
+ (0, chai_1.expect)(result).to.be.eql(r1);
23
+ });
24
+ it("has all expected connectors", () => {
25
+ const pf = new pathfinderv1_1.PathFinderV1("", new ethers_1.providers.JsonRpcProvider(), "Mainnet");
26
+ const allowedTokens = {
27
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase()]: true,
28
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase()]: true,
29
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.USDT.toLowerCase()]: true,
30
+ [sdk_gov_1.tokenDataByNetwork.Mainnet.FRAX.toLowerCase()]: true,
31
+ };
32
+ (0, chai_1.expect)(pf.getAvailableConnectors(allowedTokens)).to.be.deep.equal([
33
+ sdk_gov_1.tokenDataByNetwork.Mainnet.USDC.toLowerCase(),
34
+ sdk_gov_1.tokenDataByNetwork.Mainnet.WETH.toLowerCase(),
35
+ sdk_gov_1.tokenDataByNetwork.Mainnet.USDT.toLowerCase(),
36
+ sdk_gov_1.tokenDataByNetwork.Mainnet.FRAX.toLowerCase(),
37
+ ]);
38
+ });
39
+ });
@@ -1,6 +1,5 @@
1
1
  import { ExcludeArrayProps } from "@gearbox-protocol/sdk-gov";
2
- import { CreditAccountDataStructOutput, ScheduledWithdrawalStructOutput, TokenBalanceStructOutput } from "../types/IDataCompressorV3_00";
3
- import { BigintifyProps } from "../utils/types";
2
+ import { CreditAccountDataStructOutput, TokenBalanceStructOutput } from "../types/IDataCompressorV3_00";
3
+ import { BigintifyProps, PartialKeys } from "../utils/types";
4
4
  export type CaTokenBalance = BigintifyProps<ExcludeArrayProps<TokenBalanceStructOutput>>;
5
- export type ScheduledWithdrawal = BigintifyProps<ExcludeArrayProps<ScheduledWithdrawalStructOutput>>;
6
- export type CreditAccountDataPayload = ExcludeArrayProps<CreditAccountDataStructOutput>;
5
+ export type CreditAccountDataPayload = PartialKeys<ExcludeArrayProps<CreditAccountDataStructOutput>, "accruedInterest" | "accruedFees" | "healthFactor" | "totalValue">;
@@ -14,8 +14,11 @@ export type CreditManagerDataPayload = ExcludeArrayProps<CreditManagerDataStruct
14
14
  export interface ChartsCreditManagerPayload {
15
15
  addr: string;
16
16
  underlyingToken: string;
17
+ configurator: string;
18
+ creditFacade: string;
17
19
  isWeth: boolean;
18
20
  poolAddress: string;
21
+ name: string;
19
22
  maxAmount: BigNumberish;
20
23
  minAmount: BigNumberish;
21
24
  maxLeverageFactor: number;
@@ -12,6 +12,9 @@ interface CreditSessionReward {
12
12
  pool: string;
13
13
  symbol: string;
14
14
  }
15
+ export interface SecondaryStatus {
16
+ secStatus: Array<[block: number, status: number]>;
17
+ }
15
18
  export interface CreditSessionPayload {
16
19
  id: string;
17
20
  status: number;
@@ -52,6 +55,11 @@ export interface CreditSessionPayload {
52
55
  currentTimestamp: number;
53
56
  cvxUnclaimedRewards: Record<string, CreditSessionReward>;
54
57
  balances: Record<string, CreditSessionBalancePayload>;
58
+ baseBorrowAPY7DAverage: number;
59
+ baseBorrowAPY_RAY: string;
60
+ baseToken: string;
61
+ pool: string;
62
+ teritaryStatus: null | SecondaryStatus;
55
63
  }
56
64
  export interface CreditSessionFilteredPayload {
57
65
  balances: Record<string, CreditSessionBalancePayload>;
@@ -72,6 +80,9 @@ export interface CreditSessionFilteredPayload {
72
80
  pnl: number;
73
81
  pnlUSD: number;
74
82
  tfIndex: number;
83
+ closedAtTimestamp: number;
84
+ sinceTimestamp: number;
85
+ teritaryStatus: null | SecondaryStatus;
75
86
  }
76
87
  export interface CreditSessionsAggregatedStatsPayload {
77
88
  healthFactor: BigNumberish;