@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.
- package/contracts/index.sol +32 -3
- package/lib/apy/curveAPY.js +2 -1
- package/lib/apy/index.d.ts +2 -2
- package/lib/apy/yearnAPY.js +1 -1
- package/lib/contracts/contractsRegister.d.ts +5 -2
- package/lib/contracts/contractsRegister.js +12 -0
- package/lib/core/assets.d.ts +2 -2
- package/lib/core/assets.js +4 -4
- package/lib/core/creditAccount.d.ts +72 -15
- package/lib/core/creditAccount.js +153 -62
- package/lib/core/creditAccount.spec.js +907 -16
- package/lib/core/creditManager.d.ts +19 -6
- package/lib/core/creditManager.js +66 -14
- package/lib/core/creditSession.d.ts +11 -1
- package/lib/core/creditSession.js +20 -2
- package/lib/core/endpoint.d.ts +10 -0
- package/lib/core/endpoint.js +26 -0
- package/lib/core/events.js +16 -16
- package/lib/core/gauge.d.ts +26 -0
- package/lib/core/gauge.js +63 -0
- package/lib/core/gaugeMath.d.ts +40 -0
- package/lib/core/gaugeMath.js +108 -0
- package/lib/core/gaugeMath.spec.js +388 -0
- package/lib/core/{pool/data.d.ts → pool.d.ts} +16 -8
- package/lib/core/{pool/data.js → pool.js} +43 -20
- package/lib/core/strategy.d.ts +15 -15
- package/lib/core/strategy.js +10 -26
- package/lib/core/trade.d.ts +11 -9
- package/lib/core/trade.js +36 -27
- package/lib/core/transactions.d.ts +110 -14
- package/lib/core/transactions.js +191 -108
- package/lib/index.d.ts +5 -0
- package/lib/index.js +5 -0
- package/lib/parsers/abstractParser.js +1 -2
- package/lib/parsers/convexBaseRewardPoolAdapterParser.js +10 -8
- package/lib/parsers/convexBaseRewardPoolAdapterParser.spec.js +9 -6
- package/lib/parsers/convexBoosterAdapterParser.js +6 -6
- package/lib/parsers/convexBoosterAdapterParser.spec.js +4 -4
- package/lib/parsers/creditFacadeParser.d.ts +2 -1
- package/lib/parsers/creditFacadeParser.js +44 -5
- package/lib/parsers/creditFacadeParser.spec.js +3 -4
- package/lib/parsers/curveAdapterParser.js +10 -11
- package/lib/parsers/curveAdapterParser.spec.js +6 -2
- package/lib/parsers/lidoAdapterParser.js +3 -2
- package/lib/parsers/lidoAdapterParser.spec.js +2 -2
- package/lib/parsers/txParser.d.ts +1 -1
- package/lib/parsers/txParser.js +9 -3
- package/lib/parsers/uniV2AdapterParser.js +5 -4
- package/lib/parsers/uniV2AdapterParser.spec.js +3 -2
- package/lib/parsers/uniV3AdapterParser.js +9 -7
- package/lib/parsers/uniV3AdapterParser.spec.js +3 -2
- package/lib/parsers/wstETHAdapterParser.js +6 -4
- package/lib/parsers/wstETHAdapterParser.spec.js +4 -4
- package/lib/parsers/yearnAdapterParser.spec.js +4 -4
- package/lib/parsers/yearnV2AdapterParser.js +13 -3
- package/lib/pathfinder/core.d.ts +8 -9
- package/lib/pathfinder/pathOptions.d.ts +2 -1
- package/lib/pathfinder/pathOptions.js +20 -1
- package/lib/pathfinder/pathOptions.spec.js +2 -2
- package/lib/pathfinder/pathfinder.d.ts +44 -16
- package/lib/pathfinder/pathfinder.js +58 -39
- package/lib/pathfinder/pathfinder.spec.js +7 -3
- package/lib/pathfinder/v1/core.d.ts +16 -0
- package/lib/pathfinder/v1/pathfinderv1.d.ts +46 -0
- package/lib/pathfinder/v1/pathfinderv1.js +155 -0
- package/lib/pathfinder/v1/pathfinderv1.spec.d.ts +1 -0
- package/lib/pathfinder/v1/pathfinderv1.spec.js +39 -0
- package/lib/payload/creditAccount.d.ts +3 -4
- package/lib/payload/creditManager.d.ts +3 -0
- package/lib/payload/creditSession.d.ts +11 -0
- package/lib/payload/gauge.d.ts +12 -0
- package/lib/payload/pool.d.ts +4 -0
- package/lib/types/CalldataExtractor.d.ts +44 -0
- package/lib/types/ERC20.d.ts +198 -0
- package/lib/types/FarmAccounting.d.ts +27 -0
- package/lib/types/IAaveV2_LendingPoolAdapter.d.ts +171 -0
- package/lib/types/IAaveV2_WrappedATokenAdapter.d.ts +290 -0
- package/lib/types/IBalancerV2Vault.sol/IBalancerV2Vault.d.ts +308 -0
- package/lib/types/IBalancerV2Vault.sol/IBalancerV2VaultGetters.d.ts +112 -0
- package/lib/types/IBalancerV2Vault.sol/index.d.ts +2 -0
- package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter.d.ts +466 -0
- package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter.js +2 -0
- package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents.d.ts +43 -0
- package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents.js +2 -0
- package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions.d.ts +27 -0
- package/lib/types/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions.js +2 -0
- package/lib/types/IBalancerV2VaultAdapter.sol/index.d.ts +3 -0
- package/lib/types/IBalancerV2VaultAdapter.sol/index.js +2 -0
- package/lib/types/IBotListV3.sol/IBotListV3.d.ts +286 -0
- package/lib/types/IBotListV3.sol/IBotListV3.js +2 -0
- package/lib/types/IBotListV3.sol/IBotListV3Events.d.ts +103 -0
- package/lib/types/IBotListV3.sol/IBotListV3Events.js +2 -0
- package/lib/types/IBotListV3.sol/index.d.ts +2 -0
- package/lib/types/IBotListV3.sol/index.js +2 -0
- package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter.d.ts +216 -0
- package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter.js +2 -0
- package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions.d.ts +27 -0
- package/lib/types/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions.js +2 -0
- package/lib/types/ICompoundV2_CTokenAdapter.sol/index.d.ts +2 -0
- package/lib/types/ICompoundV2_CTokenAdapter.sol/index.js +2 -0
- package/lib/types/IContractsRegister.sol/IContractsRegister.d.ts +128 -0
- package/lib/types/IContractsRegister.sol/IContractsRegister.js +2 -0
- package/lib/types/IContractsRegister.sol/IContractsRegisterEvents.d.ts +50 -0
- package/lib/types/IContractsRegister.sol/IContractsRegisterEvents.js +2 -0
- package/lib/types/IContractsRegister.sol/index.d.ts +2 -0
- package/lib/types/IContractsRegister.sol/index.js +2 -0
- package/lib/types/IControllerTimelockV3.sol/IControllerTimelockV3.d.ts +504 -0
- package/lib/types/IControllerTimelockV3.sol/IControllerTimelockV3.js +2 -0
- package/lib/types/IControllerTimelockV3.sol/IControllerTimelockV3Events.d.ts +82 -0
- package/lib/types/IControllerTimelockV3.sol/IControllerTimelockV3Events.js +2 -0
- package/lib/types/IControllerTimelockV3.sol/index.d.ts +2 -0
- package/lib/types/IControllerTimelockV3.sol/index.js +2 -0
- package/lib/types/IConvexToken.d.ts +9 -1
- package/lib/types/IConvexV1BaseRewardPoolAdapter.d.ts +46 -30
- package/lib/types/{IConvexV1BoosterAdapter.d.ts → IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter.d.ts} +40 -21
- package/lib/types/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter.js +2 -0
- package/lib/types/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapterEvents.d.ts +43 -0
- package/lib/types/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapterEvents.js +2 -0
- package/lib/types/IConvexV1BoosterAdapter.sol/index.d.ts +2 -0
- package/lib/types/IConvexV1BoosterAdapter.sol/index.js +2 -0
- package/lib/types/ICreditFacadeV2.sol/ICreditFacadeV2Extended.d.ts +7 -11
- package/lib/types/ICreditFacadeV3.sol/ICreditFacadeV3.d.ts +58 -109
- package/lib/types/ICreditFacadeV3.sol/ICreditFacadeV3Events.d.ts +31 -35
- package/lib/types/ICreditFacadeV3Multicall.d.ts +91 -60
- package/lib/types/ICreditManagerV3.sol/ICreditManagerV3.d.ts +117 -97
- package/lib/types/ICurveV1Adapter.d.ts +41 -105
- package/lib/types/ICurveV1_2AssetsAdapter.d.ts +41 -105
- package/lib/types/ICurveV1_3AssetsAdapter.d.ts +41 -105
- package/lib/types/ICurveV1_4AssetsAdapter.d.ts +41 -105
- package/lib/types/IDaiLikePermit.d.ts +59 -0
- package/lib/types/IDaiLikePermit.js +2 -0
- package/lib/types/IDataCompressorV2_10.d.ts +26 -41
- package/lib/types/IDataCompressorV3_00.d.ts +123 -42
- package/lib/types/IDegenNFTV2.sol/IDegenNFTV2.d.ts +339 -0
- package/lib/types/IDegenNFTV2.sol/IDegenNFTV2.js +2 -0
- package/lib/types/IDegenNFTV2.sol/IDegenNFTV2Events.d.ts +61 -0
- package/lib/types/IDegenNFTV2.sol/IDegenNFTV2Events.js +2 -0
- package/lib/types/IDegenNFTV2.sol/IDegenNFTV2Exceptions.d.ts +27 -0
- package/lib/types/IDegenNFTV2.sol/IDegenNFTV2Exceptions.js +2 -0
- package/lib/types/IDegenNFTV2.sol/index.d.ts +3 -0
- package/lib/types/IDegenNFTV2.sol/index.js +2 -0
- package/lib/types/IERC165.d.ts +42 -0
- package/lib/types/IERC165.js +2 -0
- package/lib/types/IERC20Permit.d.ts +74 -0
- package/lib/types/IERC20Permit.js +2 -0
- package/lib/types/IERC20ZapperDeposits.d.ts +117 -0
- package/lib/types/IERC20ZapperDeposits.js +2 -0
- package/lib/types/IERC4626Adapter.d.ts +238 -0
- package/lib/types/IERC4626Adapter.js +2 -0
- package/lib/types/IERC721.d.ts +220 -0
- package/lib/types/IERC721.js +2 -0
- package/lib/types/IERC721Metadata.d.ts +244 -0
- package/lib/types/IERC721Metadata.js +2 -0
- package/lib/types/IETHZapperDeposits.d.ts +66 -0
- package/lib/types/IETHZapperDeposits.js +2 -0
- package/lib/types/IFarmingPool.d.ts +318 -0
- package/lib/types/IFarmingPool.js +2 -0
- package/lib/types/IGasPricer.d.ts +44 -0
- package/lib/types/IGasPricer.js +2 -0
- package/lib/types/IGaugeV3.sol/IGaugeV3.d.ts +366 -0
- package/lib/types/IGaugeV3.sol/IGaugeV3.js +2 -0
- package/lib/types/IGaugeV3.sol/IGaugeV3Events.d.ts +114 -0
- package/lib/types/IGaugeV3.sol/IGaugeV3Events.js +2 -0
- package/lib/types/IGaugeV3.sol/index.d.ts +2 -0
- package/lib/types/IGaugeV3.sol/index.js +2 -0
- package/lib/types/IGearStakingV3.sol/IGearStakingV3.d.ts +408 -0
- package/lib/types/IGearStakingV3.sol/IGearStakingV3.js +2 -0
- package/lib/types/IGearStakingV3.sol/IGearStakingV3Events.d.ts +117 -0
- package/lib/types/IGearStakingV3.sol/IGearStakingV3Events.js +2 -0
- package/lib/types/IGearStakingV3.sol/index.d.ts +2 -0
- package/lib/types/IGearStakingV3.sol/index.js +2 -0
- package/lib/types/ILPPriceFeed.sol/ILPPriceFeed.d.ts +285 -0
- package/lib/types/ILPPriceFeed.sol/ILPPriceFeed.js +2 -0
- package/lib/types/ILPPriceFeed.sol/ILPPriceFeedEvents.d.ts +54 -0
- package/lib/types/ILPPriceFeed.sol/ILPPriceFeedEvents.js +2 -0
- package/lib/types/ILPPriceFeed.sol/ILPPriceFeedExceptions.d.ts +27 -0
- package/lib/types/ILPPriceFeed.sol/ILPPriceFeedExceptions.js +2 -0
- package/lib/types/ILPPriceFeed.sol/index.d.ts +3 -0
- package/lib/types/ILPPriceFeed.sol/index.js +2 -0
- package/lib/types/{ILidoV1Adapter.sol/ILidoV1Adapter.d.ts → ILidoV1Adapter.d.ts} +13 -48
- package/lib/types/ILidoV1Adapter.js +2 -0
- package/lib/types/ILinearInterestRateModelV3.d.ts +120 -0
- package/lib/types/ILinearInterestRateModelV3.js +2 -0
- package/lib/types/IPermit2.d.ts +130 -0
- package/lib/types/IPermit2.js +2 -0
- package/lib/types/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3.d.ts +473 -0
- package/lib/types/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3.js +2 -0
- package/lib/types/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3Events.d.ts +113 -0
- package/lib/types/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3Events.js +2 -0
- package/lib/types/IPoolQuotaKeeperV3.sol/index.d.ts +2 -0
- package/lib/types/IPoolQuotaKeeperV3.sol/index.js +2 -0
- package/lib/types/IPoolV3.sol/IPoolV3.d.ts +43 -3
- package/lib/types/IPriceFeed.sol/IPriceFeed.d.ts +109 -0
- package/lib/types/IPriceFeed.sol/IPriceFeed.js +2 -0
- package/lib/types/IPriceFeed.sol/IUpdatablePriceFeed.d.ts +133 -0
- package/lib/types/IPriceFeed.sol/IUpdatablePriceFeed.js +2 -0
- package/lib/types/IPriceFeed.sol/index.d.ts +2 -0
- package/lib/types/IPriceFeed.sol/index.js +2 -0
- package/lib/types/IPriceOracle.sol/IPriceOracleV2.d.ts +166 -0
- package/lib/types/IPriceOracle.sol/IPriceOracleV2.js +2 -0
- package/lib/types/IPriceOracle.sol/IPriceOracleV2Events.d.ts +43 -0
- package/lib/types/IPriceOracle.sol/IPriceOracleV2Events.js +2 -0
- package/lib/types/{ILidoV1Adapter.sol/ILidoV1AdapterExceptions.d.ts → IPriceOracle.sol/IPriceOracleV2Exceptions.d.ts} +3 -3
- package/lib/types/IPriceOracle.sol/IPriceOracleV2Exceptions.js +2 -0
- package/lib/types/IPriceOracle.sol/IPriceOracleV2Ext.d.ts +182 -0
- package/lib/types/IPriceOracle.sol/IPriceOracleV2Ext.js +2 -0
- package/lib/types/IPriceOracle.sol/index.d.ts +4 -0
- package/lib/types/IPriceOracle.sol/index.js +2 -0
- package/lib/types/IPriceOracleV3.sol/IPriceOracleV3.d.ts +272 -0
- package/lib/types/IPriceOracleV3.sol/IPriceOracleV3.js +2 -0
- package/lib/types/IPriceOracleV3.sol/IPriceOracleV3Events.d.ts +79 -0
- package/lib/types/IPriceOracleV3.sol/IPriceOracleV3Events.js +2 -0
- package/lib/types/IPriceOracleV3.sol/index.d.ts +2 -0
- package/lib/types/IPriceOracleV3.sol/index.js +2 -0
- package/lib/types/IRouter.d.ts +11 -1
- package/lib/types/IRouterV3.d.ts +281 -0
- package/lib/types/IRouterV3.js +2 -0
- package/lib/types/IUniswapV2Adapter.sol/IUniswapV2Adapter.d.ts +10 -9
- package/lib/types/IUniswapV3Adapter.sol/IUniswapV3Adapter.d.ts +27 -21
- package/lib/types/IVotingContractV3.d.ts +74 -0
- package/lib/types/IVotingContractV3.js +2 -0
- package/lib/types/IWETH.d.ts +197 -0
- package/lib/types/IWETH.js +2 -0
- package/lib/types/IYearnV2Adapter.d.ts +22 -22
- package/lib/types/IZapper.d.ts +56 -37
- package/lib/types/IZapperRegister.d.ts +62 -0
- package/lib/types/IZapperRegister.js +2 -0
- package/lib/types/IwstETHV1Adapter.d.ts +17 -17
- package/lib/types/NumericArrayLib.d.ts +27 -0
- package/lib/types/NumericArrayLib.js +2 -0
- package/lib/types/RedstoneConstants.d.ts +27 -0
- package/lib/types/RedstoneConstants.js +2 -0
- package/lib/types/RedstoneConsumerBase.d.ts +84 -0
- package/lib/types/RedstoneConsumerBase.js +2 -0
- package/lib/types/RedstoneConsumerNumericBase.d.ts +84 -0
- package/lib/types/RedstoneConsumerNumericBase.js +2 -0
- package/lib/types/RedstoneDefaultsLib.d.ts +27 -0
- package/lib/types/RedstoneDefaultsLib.js +2 -0
- package/lib/types/{ILidoV1Adapter.sol/ILidoV1AdapterEvents.d.ts → RedstonePriceFeed.sol/IRedstonePriceFeedEvents.d.ts} +11 -11
- package/lib/types/RedstonePriceFeed.sol/IRedstonePriceFeedEvents.js +2 -0
- package/lib/types/RedstonePriceFeed.sol/IRedstonePriceFeedExceptions.d.ts +27 -0
- package/lib/types/RedstonePriceFeed.sol/IRedstonePriceFeedExceptions.js +2 -0
- package/lib/types/RedstonePriceFeed.sol/RedstonePriceFeed.d.ts +279 -0
- package/lib/types/RedstonePriceFeed.sol/RedstonePriceFeed.js +2 -0
- package/lib/types/RedstonePriceFeed.sol/index.d.ts +3 -0
- package/lib/types/RedstonePriceFeed.sol/index.js +2 -0
- package/lib/types/SafeERC20.d.ts +27 -0
- package/lib/types/SafeERC20.js +2 -0
- package/lib/types/factories/AddressProvider__factory.d.ts +1 -1
- package/lib/types/factories/AddressProvider__factory.js +1 -1
- package/lib/types/factories/Balances.sol/BalanceOps__factory.d.ts +1 -1
- package/lib/types/factories/Balances.sol/BalanceOps__factory.js +1 -1
- package/lib/types/factories/CalldataExtractor__factory.d.ts +87 -0
- package/lib/types/factories/CalldataExtractor__factory.js +127 -0
- package/lib/types/factories/Claimable__factory.d.ts +1 -1
- package/lib/types/factories/Claimable__factory.js +1 -1
- package/lib/types/factories/ERC20__factory.d.ts +239 -0
- package/lib/types/factories/ERC20__factory.js +328 -0
- package/lib/types/factories/Errors__factory.d.ts +1 -1
- package/lib/types/factories/Errors__factory.js +1 -1
- package/lib/types/factories/FarmAccounting__factory.d.ts +33 -0
- package/lib/types/factories/FarmAccounting__factory.js +57 -0
- package/lib/types/factories/{IWERC20Zapper__factory.d.ts → IAaveV2_LendingPoolAdapter__factory.d.ts} +89 -69
- package/lib/types/factories/{IWERC20Zapper__factory.js → IAaveV2_LendingPoolAdapter__factory.js} +99 -75
- package/lib/types/factories/IAaveV2_WrappedATokenAdapter__factory.d.ts +252 -0
- package/lib/types/factories/IAaveV2_WrappedATokenAdapter__factory.js +341 -0
- package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2VaultGetters__factory.d.ts +78 -0
- package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2VaultGetters__factory.js +111 -0
- package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2Vault__factory.d.ts +360 -0
- package/lib/types/factories/IBalancerV2Vault.sol/IBalancerV2Vault__factory.js +475 -0
- package/lib/types/factories/IBalancerV2Vault.sol/index.d.ts +2 -0
- package/lib/types/factories/IBalancerV2Vault.sol/index.js +10 -0
- package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents__factory.d.ts +23 -0
- package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterEvents__factory.js +38 -0
- package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions__factory.d.ts +12 -0
- package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1AdapterExceptions__factory.js → IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapterExceptions__factory.js} +4 -4
- package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter__factory.d.ts +514 -0
- package/lib/types/factories/IBalancerV2VaultAdapter.sol/IBalancerV2VaultAdapter__factory.js +675 -0
- package/lib/types/factories/IBalancerV2VaultAdapter.sol/index.d.ts +3 -0
- package/lib/types/factories/IBalancerV2VaultAdapter.sol/index.js +12 -0
- package/lib/types/factories/IBotListV3.sol/IBotListV3Events__factory.d.ts +103 -0
- package/lib/types/factories/IBotListV3.sol/IBotListV3Events__factory.js +138 -0
- package/lib/types/factories/IBotListV3.sol/IBotListV3__factory.d.ts +315 -0
- package/lib/types/factories/IBotListV3.sol/IBotListV3__factory.js +416 -0
- package/lib/types/factories/IBotListV3.sol/index.d.ts +2 -0
- package/lib/types/factories/IBotListV3.sol/index.js +10 -0
- package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter__factory.d.ts +196 -0
- package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_CTokenAdapter__factory.js +267 -0
- package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions__factory.d.ts +16 -0
- package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/ICompoundV2_Exceptions__factory.js +30 -0
- package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/index.d.ts +2 -0
- package/lib/types/factories/ICompoundV2_CTokenAdapter.sol/index.js +10 -0
- package/lib/types/factories/IContractsRegister.sol/IContractsRegisterEvents__factory.d.ts +28 -0
- package/lib/types/factories/IContractsRegister.sol/IContractsRegisterEvents__factory.js +45 -0
- package/lib/types/factories/{IWETHZapper__factory.d.ts → IContractsRegister.sol/IContractsRegister__factory.d.ts} +64 -60
- package/lib/types/factories/{IWETHZapper__factory.js → IContractsRegister.sol/IContractsRegister__factory.js} +70 -65
- package/lib/types/factories/IContractsRegister.sol/index.d.ts +2 -0
- package/lib/types/factories/IContractsRegister.sol/index.js +10 -0
- package/lib/types/factories/IControllerTimelockV3.sol/IControllerTimelockV3Events__factory.d.ts +73 -0
- package/lib/types/factories/IControllerTimelockV3.sol/IControllerTimelockV3Events__factory.js +101 -0
- package/lib/types/factories/IControllerTimelockV3.sol/IControllerTimelockV3__factory.d.ts +427 -0
- package/lib/types/factories/IControllerTimelockV3.sol/IControllerTimelockV3__factory.js +556 -0
- package/lib/types/factories/IControllerTimelockV3.sol/index.d.ts +2 -0
- package/lib/types/factories/IControllerTimelockV3.sol/index.js +10 -0
- package/lib/types/factories/IConvexToken__factory.d.ts +10 -0
- package/lib/types/factories/IConvexToken__factory.js +13 -0
- package/lib/types/factories/IConvexV1BaseRewardPoolAdapter__factory.d.ts +38 -6
- package/lib/types/factories/IConvexV1BaseRewardPoolAdapter__factory.js +48 -6
- package/lib/types/factories/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapterEvents__factory.d.ts +23 -0
- package/lib/types/factories/IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapterEvents__factory.js +38 -0
- package/lib/types/factories/{IConvexV1BoosterAdapter__factory.d.ts → IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter__factory.d.ts} +26 -3
- package/lib/types/factories/{IConvexV1BoosterAdapter__factory.js → IConvexV1BoosterAdapter.sol/IConvexV1BoosterAdapter__factory.js} +31 -2
- package/lib/types/factories/IConvexV1BoosterAdapter.sol/index.d.ts +2 -0
- package/lib/types/factories/IConvexV1BoosterAdapter.sol/index.js +10 -0
- package/lib/types/factories/ICreditFacadeV2.sol/ICreditFacadeV2Extended__factory.d.ts +0 -4
- package/lib/types/factories/ICreditFacadeV2.sol/ICreditFacadeV2Extended__factory.js +0 -5
- package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3Events__factory.d.ts +19 -29
- package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3Events__factory.js +21 -33
- package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3__factory.d.ts +21 -97
- package/lib/types/factories/ICreditFacadeV3.sol/ICreditFacadeV3__factory.js +23 -119
- package/lib/types/factories/ICreditFacadeV3Multicall__factory.d.ts +77 -43
- package/lib/types/factories/ICreditFacadeV3Multicall__factory.js +96 -54
- package/lib/types/factories/ICreditManagerV3.sol/ICreditManagerV3__factory.d.ts +162 -158
- package/lib/types/factories/ICreditManagerV3.sol/ICreditManagerV3__factory.js +200 -195
- package/lib/types/factories/ICurveV1Adapter__factory.d.ts +13 -71
- package/lib/types/factories/ICurveV1Adapter__factory.js +14 -91
- package/lib/types/factories/ICurveV1_2AssetsAdapter__factory.d.ts +13 -71
- package/lib/types/factories/ICurveV1_2AssetsAdapter__factory.js +14 -91
- package/lib/types/factories/ICurveV1_3AssetsAdapter__factory.d.ts +13 -71
- package/lib/types/factories/ICurveV1_3AssetsAdapter__factory.js +14 -91
- package/lib/types/factories/ICurveV1_4AssetsAdapter__factory.d.ts +13 -71
- package/lib/types/factories/ICurveV1_4AssetsAdapter__factory.js +14 -91
- package/lib/types/factories/IDaiLikePermit__factory.d.ts +46 -0
- package/lib/types/factories/IDaiLikePermit__factory.js +67 -0
- package/lib/types/factories/IDataCompressorV2_10__factory.d.ts +56 -66
- package/lib/types/factories/IDataCompressorV2_10__factory.js +68 -82
- package/lib/types/factories/IDataCompressorV3_00__factory.d.ts +321 -95
- package/lib/types/factories/IDataCompressorV3_00__factory.js +406 -119
- package/lib/types/factories/IDegenNFTV2.sol/IDegenNFTV2Events__factory.d.ts +38 -0
- package/lib/types/factories/IDegenNFTV2.sol/IDegenNFTV2Events__factory.js +58 -0
- package/lib/types/factories/IDegenNFTV2.sol/IDegenNFTV2Exceptions__factory.d.ts +24 -0
- package/lib/types/factories/IDegenNFTV2.sol/IDegenNFTV2Exceptions__factory.js +39 -0
- package/lib/types/factories/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3__factory.d.ts → IDegenNFTV2.sol/IDegenNFTV2__factory.d.ts} +190 -180
- package/lib/types/factories/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3__factory.js → IDegenNFTV2.sol/IDegenNFTV2__factory.js} +212 -195
- package/lib/types/factories/IDegenNFTV2.sol/index.d.ts +3 -0
- package/lib/types/factories/IDegenNFTV2.sol/index.js +12 -0
- package/lib/types/factories/IERC165__factory.d.ts +22 -0
- package/lib/types/factories/IERC165__factory.js +38 -0
- package/lib/types/factories/IERC20Permit__factory.d.ts +66 -0
- package/lib/types/factories/IERC20Permit__factory.js +94 -0
- package/lib/types/factories/IERC20ZapperDeposits__factory.d.ts +120 -0
- package/lib/types/factories/IERC20ZapperDeposits__factory.js +165 -0
- package/lib/types/factories/IERC4626Adapter__factory.d.ts +220 -0
- package/lib/types/factories/IERC4626Adapter__factory.js +297 -0
- package/lib/types/factories/IERC721Metadata__factory.d.ts +262 -0
- package/lib/types/factories/IERC721Metadata__factory.js +349 -0
- package/lib/types/factories/IERC721__factory.d.ts +228 -0
- package/lib/types/factories/IERC721__factory.js +304 -0
- package/lib/types/factories/IETHZapperDeposits__factory.d.ts +40 -0
- package/lib/types/factories/IETHZapperDeposits__factory.js +62 -0
- package/lib/types/factories/IFarmingPool__factory.d.ts +299 -0
- package/lib/types/factories/IFarmingPool__factory.js +396 -0
- package/lib/types/factories/IGasPricer__factory.d.ts +22 -0
- package/lib/types/factories/IGasPricer__factory.js +38 -0
- package/lib/types/factories/IGaugeV3.sol/IGaugeV3Events__factory.d.ts +118 -0
- package/lib/types/factories/IGaugeV3.sol/IGaugeV3Events__factory.js +157 -0
- package/lib/types/factories/IGaugeV3.sol/IGaugeV3__factory.d.ts +342 -0
- package/lib/types/factories/IGaugeV3.sol/IGaugeV3__factory.js +448 -0
- package/lib/types/factories/IGaugeV3.sol/index.d.ts +2 -0
- package/lib/types/factories/IGaugeV3.sol/index.js +10 -0
- package/lib/types/factories/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events__factory.d.ts → IGearStakingV3.sol/IGearStakingV3Events__factory.d.ts} +33 -63
- package/lib/types/factories/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events__factory.js → IGearStakingV3.sol/IGearStakingV3Events__factory.js} +34 -70
- package/lib/types/factories/IGearStakingV3.sol/IGearStakingV3__factory.d.ts +504 -0
- package/lib/types/factories/IGearStakingV3.sol/IGearStakingV3__factory.js +660 -0
- package/lib/types/factories/IGearStakingV3.sol/index.d.ts +2 -0
- package/lib/types/factories/IGearStakingV3.sol/index.js +10 -0
- package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeedEvents__factory.d.ts +33 -0
- package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeedEvents__factory.js +51 -0
- package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeedExceptions__factory.d.ts +28 -0
- package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeedExceptions__factory.js +44 -0
- package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeed__factory.d.ts +261 -0
- package/lib/types/factories/ILPPriceFeed.sol/ILPPriceFeed__factory.js +344 -0
- package/lib/types/factories/ILPPriceFeed.sol/index.d.ts +3 -0
- package/lib/types/factories/ILPPriceFeed.sol/index.js +12 -0
- package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1Adapter__factory.d.ts → ILidoV1Adapter__factory.d.ts} +7 -37
- package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1Adapter__factory.js → ILidoV1Adapter__factory.js} +8 -46
- package/lib/types/factories/ILinearInterestRateModelV3__factory.d.ts +98 -0
- package/lib/types/factories/ILinearInterestRateModelV3__factory.js +136 -0
- package/lib/types/factories/IPermit2__factory.d.ts +113 -0
- package/lib/types/factories/IPermit2__factory.js +155 -0
- package/lib/types/factories/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3Events__factory.d.ts +103 -0
- package/lib/types/factories/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3Events__factory.js +140 -0
- package/lib/types/factories/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3__factory.d.ts +441 -0
- package/lib/types/factories/IPoolQuotaKeeperV3.sol/IPoolQuotaKeeperV3__factory.js +580 -0
- package/lib/types/factories/IPoolQuotaKeeperV3.sol/index.d.ts +2 -0
- package/lib/types/factories/IPoolQuotaKeeperV3.sol/index.js +10 -0
- package/lib/types/factories/IPoolV3.sol/IPoolV3__factory.d.ts +62 -4
- package/lib/types/factories/IPoolV3.sol/IPoolV3__factory.js +79 -4
- package/lib/types/factories/IPriceFeed.sol/IPriceFeed__factory.d.ts +84 -0
- package/lib/types/factories/IPriceFeed.sol/IPriceFeed__factory.js +117 -0
- package/lib/types/factories/IPriceFeed.sol/IUpdatablePriceFeed__factory.d.ts +104 -0
- package/lib/types/factories/IPriceFeed.sol/IUpdatablePriceFeed__factory.js +143 -0
- package/lib/types/factories/IPriceFeed.sol/index.d.ts +2 -0
- package/lib/types/factories/IPriceFeed.sol/index.js +10 -0
- package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Events__factory.d.ts +23 -0
- package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Events__factory.js +38 -0
- package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Exceptions__factory.d.ts +20 -0
- package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Exceptions__factory.js +34 -0
- package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Ext__factory.d.ts +197 -0
- package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2Ext__factory.js +267 -0
- package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2__factory.d.ts +183 -0
- package/lib/types/factories/IPriceOracle.sol/IPriceOracleV2__factory.js +249 -0
- package/lib/types/factories/IPriceOracle.sol/index.d.ts +4 -0
- package/lib/types/factories/IPriceOracle.sol/index.js +14 -0
- package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3Events__factory.d.ts +78 -0
- package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3Events__factory.js +106 -0
- package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3__factory.d.ts +326 -0
- package/lib/types/factories/IPriceOracleV3.sol/IPriceOracleV3__factory.js +433 -0
- package/lib/types/factories/IPriceOracleV3.sol/index.d.ts +2 -0
- package/lib/types/factories/IPriceOracleV3.sol/index.js +10 -0
- package/lib/types/factories/IRouterV3__factory.d.ts +451 -0
- package/lib/types/factories/IRouterV3__factory.js +597 -0
- package/lib/types/factories/IRouter__factory.d.ts +14 -0
- package/lib/types/factories/IRouter__factory.js +19 -0
- package/lib/types/factories/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.d.ts +5 -1
- package/lib/types/factories/IUniswapV2Adapter.sol/IUniswapV2Adapter__factory.js +6 -1
- package/lib/types/factories/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.d.ts +12 -4
- package/lib/types/factories/IUniswapV3Adapter.sol/IUniswapV3Adapter__factory.js +14 -4
- package/lib/types/factories/IVotingContractV3__factory.d.ts +44 -0
- package/lib/types/factories/IVotingContractV3__factory.js +65 -0
- package/lib/types/factories/IWETH__factory.d.ts +194 -0
- package/lib/types/factories/IWETH__factory.js +260 -0
- package/lib/types/factories/IYearnV2Adapter__factory.d.ts +21 -13
- package/lib/types/factories/IYearnV2Adapter__factory.js +27 -15
- package/lib/types/factories/IZapperRegister__factory.d.ts +42 -0
- package/lib/types/factories/IZapperRegister__factory.js +64 -0
- package/lib/types/factories/IZapper__factory.d.ts +41 -11
- package/lib/types/factories/IZapper__factory.js +50 -11
- package/lib/types/factories/IwstETHV1Adapter__factory.d.ts +12 -4
- package/lib/types/factories/IwstETHV1Adapter__factory.js +16 -4
- package/lib/types/factories/NumericArrayLib__factory.d.ts +25 -0
- package/lib/types/factories/NumericArrayLib__factory.js +47 -0
- package/lib/types/factories/RedstoneConstants__factory.d.ts +65 -0
- package/lib/types/factories/RedstoneConstants__factory.js +99 -0
- package/lib/types/factories/RedstoneConsumerBase__factory.d.ts +164 -0
- package/lib/types/factories/RedstoneConsumerBase__factory.js +223 -0
- package/lib/types/factories/RedstoneConsumerNumericBase__factory.d.ts +164 -0
- package/lib/types/factories/RedstoneConsumerNumericBase__factory.js +223 -0
- package/lib/types/factories/RedstoneDefaultsLib__factory.d.ts +45 -0
- package/lib/types/factories/RedstoneDefaultsLib__factory.js +74 -0
- package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1AdapterEvents__factory.d.ts → RedstonePriceFeed.sol/IRedstonePriceFeedEvents__factory.d.ts} +6 -6
- package/lib/types/factories/{ILidoV1Adapter.sol/ILidoV1AdapterEvents__factory.js → RedstonePriceFeed.sol/IRedstonePriceFeedEvents__factory.js} +5 -5
- package/lib/types/factories/RedstonePriceFeed.sol/IRedstonePriceFeedExceptions__factory.d.ts +28 -0
- package/lib/types/factories/RedstonePriceFeed.sol/IRedstonePriceFeedExceptions__factory.js +44 -0
- package/lib/types/factories/RedstonePriceFeed.sol/RedstonePriceFeed__factory.d.ts +443 -0
- package/lib/types/factories/RedstonePriceFeed.sol/RedstonePriceFeed__factory.js +589 -0
- package/lib/types/factories/RedstonePriceFeed.sol/index.d.ts +3 -0
- package/lib/types/factories/RedstonePriceFeed.sol/index.js +12 -0
- package/lib/types/factories/SafeERC20__factory.d.ts +49 -0
- package/lib/types/factories/SafeERC20__factory.js +77 -0
- package/lib/types/factories/index.d.ts +44 -5
- package/lib/types/factories/index.js +74 -10
- package/lib/types/index.d.ts +173 -29
- package/lib/types/index.js +147 -30
- package/lib/utils/formatter.d.ts +0 -3
- package/lib/utils/formatter.js +1 -67
- package/lib/utils/math.d.ts +2 -0
- package/lib/utils/math.js +2 -0
- package/lib/utils/types.d.ts +1 -0
- package/lib/watchers/creditAccountWatcher.d.ts +3 -2
- package/lib/watchers/creditAccountWatcher.js +19 -13
- package/lib/watchers/creditAccountWatcher.spec.js +18 -18
- package/lib/watchers/creditManagerWatcher.d.ts +5 -3
- package/lib/watchers/creditManagerWatcher.js +32 -10
- package/lib/watchers/creditManagerWatcher.spec.js +12 -4
- package/package.json +13 -9
- package/contracts/IRouter.sol +0 -100
- package/lib/core/pool/index.d.ts +0 -1
- package/lib/core/pool/index.js +0 -17
- package/lib/core/strategy.spec.js +0 -62
- package/lib/types/ILidoV1Adapter.sol/index.d.ts +0 -3
- package/lib/types/IWERC20Zapper.d.ts +0 -142
- package/lib/types/IWETHZapper.d.ts +0 -138
- package/lib/types/IWithdrawalManagerV3.sol/IWithdrawalManagerV3.d.ts +0 -370
- package/lib/types/IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events.d.ts +0 -133
- package/lib/types/IWithdrawalManagerV3.sol/index.d.ts +0 -2
- package/lib/types/factories/ILidoV1Adapter.sol/ILidoV1AdapterExceptions__factory.d.ts +0 -12
- package/lib/types/factories/ILidoV1Adapter.sol/index.d.ts +0 -3
- package/lib/types/factories/ILidoV1Adapter.sol/index.js +0 -12
- package/lib/types/factories/IWithdrawalManagerV3.sol/index.d.ts +0 -2
- package/lib/types/factories/IWithdrawalManagerV3.sol/index.js +0 -10
- /package/lib/core/{strategy.spec.d.ts → gaugeMath.spec.d.ts} +0 -0
- /package/lib/{types/IConvexV1BoosterAdapter.js → pathfinder/v1/core.js} +0 -0
- /package/lib/{types/ILidoV1Adapter.sol/ILidoV1Adapter.js → payload/gauge.js} +0 -0
- /package/lib/types/{ILidoV1Adapter.sol/ILidoV1AdapterEvents.js → CalldataExtractor.js} +0 -0
- /package/lib/types/{ILidoV1Adapter.sol/ILidoV1AdapterExceptions.js → ERC20.js} +0 -0
- /package/lib/types/{ILidoV1Adapter.sol/index.js → FarmAccounting.js} +0 -0
- /package/lib/types/{IWERC20Zapper.js → IAaveV2_LendingPoolAdapter.js} +0 -0
- /package/lib/types/{IWETHZapper.js → IAaveV2_WrappedATokenAdapter.js} +0 -0
- /package/lib/types/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3.js → IBalancerV2Vault.sol/IBalancerV2Vault.js} +0 -0
- /package/lib/types/{IWithdrawalManagerV3.sol/IWithdrawalManagerV3Events.js → IBalancerV2Vault.sol/IBalancerV2VaultGetters.js} +0 -0
- /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 {
|
|
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 {
|
|
6
|
-
import {
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
|
|
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:
|
|
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
|
|
19
|
-
findOneTokenPath(creditAccount
|
|
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
|
|
22
|
-
* @param cm CreditManagerData which represents credit manager you want to use to open
|
|
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
|
|
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(
|
|
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
|
|
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:
|
|
42
|
-
static compare(r1:
|
|
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
|
-
"
|
|
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.
|
|
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
|
|
33
|
-
tokenOut
|
|
34
|
-
tokenOut,
|
|
31
|
+
tokenIn,
|
|
32
|
+
tokenOut,
|
|
35
33
|
connectors,
|
|
36
|
-
amount
|
|
37
|
-
|
|
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.
|
|
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(
|
|
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
|
|
68
|
-
* @param cm CreditManagerData which represents credit manager you want to use to open
|
|
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
|
|
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
|
|
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:
|
|
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,
|
|
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 =
|
|
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:
|
|
98
|
-
|
|
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
|
|
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,
|
|
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 (
|
|
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
|
-
|
|
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 = ({
|
|
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
|
-
|
|
10
|
+
minAmount: 2000n,
|
|
11
|
+
amount: 20000n,
|
|
11
12
|
gasUsage: 1000n,
|
|
12
13
|
calls: [],
|
|
13
14
|
};
|
|
14
15
|
const r2 = {
|
|
15
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
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;
|