diff --git a/docs/api/steward_api_doc.md b/docs/api/steward_api_doc.md index 3b120c0b..ad158600 100644 --- a/docs/api/steward_api_doc.md +++ b/docs/api/steward_api_doc.md @@ -50,13 +50,42 @@ - [aave_v3_debt_token.proto](#aave_v3_debt_token-proto) - [AaveV3DebtTokenAdaptorV1](#steward-v4-AaveV3DebtTokenAdaptorV1) - - [AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan](#steward-v4-AaveV3DebtTokenAdaptorV1-AdaptorCallForAaveV3Flashloan) - [AaveV3DebtTokenAdaptorV1.BorrowFromAave](#steward-v4-AaveV3DebtTokenAdaptorV1-BorrowFromAave) - - [AaveV3DebtTokenAdaptorV1.FlashLoan](#steward-v4-AaveV3DebtTokenAdaptorV1-FlashLoan) - [AaveV3DebtTokenAdaptorV1.RepayAaveDebt](#steward-v4-AaveV3DebtTokenAdaptorV1-RepayAaveDebt) - [AaveV3DebtTokenAdaptorV1.RepayWithATokens](#steward-v4-AaveV3DebtTokenAdaptorV1-RepayWithATokens) - [AaveV3DebtTokenAdaptorV1Calls](#steward-v4-AaveV3DebtTokenAdaptorV1Calls) +- [aave_v3_debt_token_flash_loan.proto](#aave_v3_debt_token_flash_loan-proto) + - [AaveV3DebtTokenAdaptorV1FlashLoan](#steward-v4-AaveV3DebtTokenAdaptorV1FlashLoan) + - [AaveV3DebtTokenAdaptorV1FlashLoan.AdaptorCallForAaveV3FlashLoan](#steward-v4-AaveV3DebtTokenAdaptorV1FlashLoan-AdaptorCallForAaveV3FlashLoan) + - [AaveV3DebtTokenAdaptorV1FlashLoan.FlashLoan](#steward-v4-AaveV3DebtTokenAdaptorV1FlashLoan-FlashLoan) + - [AaveV3DebtTokenAdaptorV1FlashLoanCalls](#steward-v4-AaveV3DebtTokenAdaptorV1FlashLoanCalls) + +- [aura_erc4626.proto](#aura_erc4626-proto) + - [AuraERC4626AdaptorV1](#steward-v4-AuraERC4626AdaptorV1) + - [AuraERC4626AdaptorV1.GetRewards](#steward-v4-AuraERC4626AdaptorV1-GetRewards) + - [AuraERC4626AdaptorV1Calls](#steward-v4-AuraERC4626AdaptorV1Calls) + +- [balancer_pool.proto](#balancer_pool-proto) + - [BalancerPoolAdaptorV1](#steward-v4-BalancerPoolAdaptorV1) + - [BalancerPoolAdaptorV1.ClaimRewards](#steward-v4-BalancerPoolAdaptorV1-ClaimRewards) + - [BalancerPoolAdaptorV1.ExitPool](#steward-v4-BalancerPoolAdaptorV1-ExitPool) + - [BalancerPoolAdaptorV1.ExitPoolRequest](#steward-v4-BalancerPoolAdaptorV1-ExitPoolRequest) + - [BalancerPoolAdaptorV1.JoinPool](#steward-v4-BalancerPoolAdaptorV1-JoinPool) + - [BalancerPoolAdaptorV1.SingleSwap](#steward-v4-BalancerPoolAdaptorV1-SingleSwap) + - [BalancerPoolAdaptorV1.StakeBPT](#steward-v4-BalancerPoolAdaptorV1-StakeBPT) + - [BalancerPoolAdaptorV1.SwapData](#steward-v4-BalancerPoolAdaptorV1-SwapData) + - [BalancerPoolAdaptorV1.UnstakeBPT](#steward-v4-BalancerPoolAdaptorV1-UnstakeBPT) + - [BalancerPoolAdaptorV1Calls](#steward-v4-BalancerPoolAdaptorV1Calls) + + - [BalancerPoolAdaptorV1.SwapKind](#steward-v4-BalancerPoolAdaptorV1-SwapKind) + +- [balancer_pool_flash_loan.proto](#balancer_pool_flash_loan-proto) + - [BalancerPoolAdaptorV1FlashLoan](#steward-v4-BalancerPoolAdaptorV1FlashLoan) + - [BalancerPoolAdaptorV1FlashLoan.AdaptorCallForBalancerPoolFlashLoan](#steward-v4-BalancerPoolAdaptorV1FlashLoan-AdaptorCallForBalancerPoolFlashLoan) + - [BalancerPoolAdaptorV1FlashLoan.MakeFlashLoan](#steward-v4-BalancerPoolAdaptorV1FlashLoan-MakeFlashLoan) + - [BalancerPoolAdaptorV1FlashLoanCalls](#steward-v4-BalancerPoolAdaptorV1FlashLoanCalls) + - [base.proto](#base-proto) - [OracleSwap](#steward-v4-OracleSwap) - [RevokeApproval](#steward-v4-RevokeApproval) @@ -107,26 +136,37 @@ - [CellarV2](#steward-v4-CellarV2) - [CellarV2.AddPosition](#steward-v4-CellarV2-AddPosition) - [CellarV2.CallOnAdaptor](#steward-v4-CellarV2-CallOnAdaptor) + - [CellarV2.InitiateShutdown](#steward-v4-CellarV2-InitiateShutdown) + - [CellarV2.LiftShutdown](#steward-v4-CellarV2-LiftShutdown) - [CellarV2.RemovePosition](#steward-v4-CellarV2-RemovePosition) - [CellarV2.SetHoldingPosition](#steward-v4-CellarV2-SetHoldingPosition) + - [CellarV2.SetPlatformFee](#steward-v4-CellarV2-SetPlatformFee) - [CellarV2.SetRebalanceDeviation](#steward-v4-CellarV2-SetRebalanceDeviation) - [CellarV2.SetShareLockPeriod](#steward-v4-CellarV2-SetShareLockPeriod) - [CellarV2.SetStrategistPayoutAddress](#steward-v4-CellarV2-SetStrategistPayoutAddress) + - [CellarV2.SetStrategistPlatformCut](#steward-v4-CellarV2-SetStrategistPlatformCut) + - [CellarV2.SetupAdaptor](#steward-v4-CellarV2-SetupAdaptor) - [CellarV2.SwapPositions](#steward-v4-CellarV2-SwapPositions) - [CellarV2Governance](#steward-v4-CellarV2Governance) - [CellarV2Governance.InitiateShutdown](#steward-v4-CellarV2Governance-InitiateShutdown) - [CellarV2Governance.LiftShutdown](#steward-v4-CellarV2Governance-LiftShutdown) - [CellarV2Governance.SetPlatformFee](#steward-v4-CellarV2Governance-SetPlatformFee) + - [CellarV2Governance.SetRebalanceDeviation](#steward-v4-CellarV2Governance-SetRebalanceDeviation) - [CellarV2Governance.SetStrategistPlatformCut](#steward-v4-CellarV2Governance-SetStrategistPlatformCut) - [CellarV2Governance.SetupAdaptor](#steward-v4-CellarV2Governance-SetupAdaptor) - [CellarV2_2](#steward-v4-CellarV2_2) + - [CellarV2_2.AddAdaptorToCatalogue](#steward-v4-CellarV2_2-AddAdaptorToCatalogue) - [CellarV2_2.AddPosition](#steward-v4-CellarV2_2-AddPosition) + - [CellarV2_2.AddPositionToCatalogue](#steward-v4-CellarV2_2-AddPositionToCatalogue) + - [CellarV2_2.CachePriceRouter](#steward-v4-CellarV2_2-CachePriceRouter) - [CellarV2_2.CallOnAdaptor](#steward-v4-CellarV2_2-CallOnAdaptor) - [CellarV2_2.FunctionCall](#steward-v4-CellarV2_2-FunctionCall) - [CellarV2_2.InitiateShutdown](#steward-v4-CellarV2_2-InitiateShutdown) - [CellarV2_2.LiftShutdown](#steward-v4-CellarV2_2-LiftShutdown) - [CellarV2_2.Multicall](#steward-v4-CellarV2_2-Multicall) + - [CellarV2_2.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_2-RemoveAdaptorFromCatalogue) - [CellarV2_2.RemovePosition](#steward-v4-CellarV2_2-RemovePosition) + - [CellarV2_2.RemovePositionFromCatalogue](#steward-v4-CellarV2_2-RemovePositionFromCatalogue) - [CellarV2_2.SetHoldingPosition](#steward-v4-CellarV2_2-SetHoldingPosition) - [CellarV2_2.SetRebalanceDeviation](#steward-v4-CellarV2_2-SetRebalanceDeviation) - [CellarV2_2.SetShareLockPeriod](#steward-v4-CellarV2_2-SetShareLockPeriod) @@ -135,13 +175,79 @@ - [CellarV2_2.SwapPositions](#steward-v4-CellarV2_2-SwapPositions) - [CellarV2_2Governance](#steward-v4-CellarV2_2Governance) - [CellarV2_2Governance.AddAdaptorToCatalogue](#steward-v4-CellarV2_2Governance-AddAdaptorToCatalogue) + - [CellarV2_2Governance.AddPosition](#steward-v4-CellarV2_2Governance-AddPosition) - [CellarV2_2Governance.AddPositionToCatalogue](#steward-v4-CellarV2_2Governance-AddPositionToCatalogue) + - [CellarV2_2Governance.CachePriceRouter](#steward-v4-CellarV2_2Governance-CachePriceRouter) + - [CellarV2_2Governance.CallOnAdaptor](#steward-v4-CellarV2_2Governance-CallOnAdaptor) - [CellarV2_2Governance.ForcePositionOut](#steward-v4-CellarV2_2Governance-ForcePositionOut) + - [CellarV2_2Governance.FunctionCall](#steward-v4-CellarV2_2Governance-FunctionCall) + - [CellarV2_2Governance.InitiateShutdown](#steward-v4-CellarV2_2Governance-InitiateShutdown) + - [CellarV2_2Governance.LiftShutdown](#steward-v4-CellarV2_2Governance-LiftShutdown) + - [CellarV2_2Governance.Multicall](#steward-v4-CellarV2_2Governance-Multicall) - [CellarV2_2Governance.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_2Governance-RemoveAdaptorFromCatalogue) + - [CellarV2_2Governance.RemovePosition](#steward-v4-CellarV2_2Governance-RemovePosition) - [CellarV2_2Governance.RemovePositionFromCatalogue](#steward-v4-CellarV2_2Governance-RemovePositionFromCatalogue) + - [CellarV2_2Governance.SetHoldingPosition](#steward-v4-CellarV2_2Governance-SetHoldingPosition) + - [CellarV2_2Governance.SetRebalanceDeviation](#steward-v4-CellarV2_2Governance-SetRebalanceDeviation) + - [CellarV2_2Governance.SetShareLockPeriod](#steward-v4-CellarV2_2Governance-SetShareLockPeriod) + - [CellarV2_2Governance.SetStrategistPlatformCut](#steward-v4-CellarV2_2Governance-SetStrategistPlatformCut) + - [CellarV2_2Governance.SwapPositions](#steward-v4-CellarV2_2Governance-SwapPositions) - [CellarV2_2Governance.ToggleIgnorePause](#steward-v4-CellarV2_2Governance-ToggleIgnorePause) + - [CellarV2_5](#steward-v4-CellarV2_5) + - [CellarV2_5.AddAdaptorToCatalogue](#steward-v4-CellarV2_5-AddAdaptorToCatalogue) + - [CellarV2_5.AddPosition](#steward-v4-CellarV2_5-AddPosition) + - [CellarV2_5.AddPositionToCatalogue](#steward-v4-CellarV2_5-AddPositionToCatalogue) + - [CellarV2_5.CachePriceRouter](#steward-v4-CellarV2_5-CachePriceRouter) + - [CellarV2_5.CallOnAdaptor](#steward-v4-CellarV2_5-CallOnAdaptor) + - [CellarV2_5.DecreaseShareSupplyCap](#steward-v4-CellarV2_5-DecreaseShareSupplyCap) + - [CellarV2_5.DropAlternativeAssetData](#steward-v4-CellarV2_5-DropAlternativeAssetData) + - [CellarV2_5.FunctionCall](#steward-v4-CellarV2_5-FunctionCall) + - [CellarV2_5.IncreaseShareSupplyCap](#steward-v4-CellarV2_5-IncreaseShareSupplyCap) + - [CellarV2_5.InitiateShutdown](#steward-v4-CellarV2_5-InitiateShutdown) + - [CellarV2_5.LiftShutdown](#steward-v4-CellarV2_5-LiftShutdown) + - [CellarV2_5.Multicall](#steward-v4-CellarV2_5-Multicall) + - [CellarV2_5.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_5-RemoveAdaptorFromCatalogue) + - [CellarV2_5.RemovePosition](#steward-v4-CellarV2_5-RemovePosition) + - [CellarV2_5.RemovePositionFromCatalogue](#steward-v4-CellarV2_5-RemovePositionFromCatalogue) + - [CellarV2_5.SetAlternativeAssetData](#steward-v4-CellarV2_5-SetAlternativeAssetData) + - [CellarV2_5.SetHoldingPosition](#steward-v4-CellarV2_5-SetHoldingPosition) + - [CellarV2_5.SetRebalanceDeviation](#steward-v4-CellarV2_5-SetRebalanceDeviation) + - [CellarV2_5.SetShareLockPeriod](#steward-v4-CellarV2_5-SetShareLockPeriod) + - [CellarV2_5.SetSharePriceOracle](#steward-v4-CellarV2_5-SetSharePriceOracle) + - [CellarV2_5.SetStrategistPayoutAddress](#steward-v4-CellarV2_5-SetStrategistPayoutAddress) + - [CellarV2_5.SetStrategistPlatformCut](#steward-v4-CellarV2_5-SetStrategistPlatformCut) + - [CellarV2_5.SwapPositions](#steward-v4-CellarV2_5-SwapPositions) + - [CellarV2_5Governance](#steward-v4-CellarV2_5Governance) + - [CellarV2_5Governance.AddAdaptorToCatalogue](#steward-v4-CellarV2_5Governance-AddAdaptorToCatalogue) + - [CellarV2_5Governance.AddPosition](#steward-v4-CellarV2_5Governance-AddPosition) + - [CellarV2_5Governance.AddPositionToCatalogue](#steward-v4-CellarV2_5Governance-AddPositionToCatalogue) + - [CellarV2_5Governance.CachePriceRouter](#steward-v4-CellarV2_5Governance-CachePriceRouter) + - [CellarV2_5Governance.CallOnAdaptor](#steward-v4-CellarV2_5Governance-CallOnAdaptor) + - [CellarV2_5Governance.DecreaseShareSupplyCap](#steward-v4-CellarV2_5Governance-DecreaseShareSupplyCap) + - [CellarV2_5Governance.ForcePositionOut](#steward-v4-CellarV2_5Governance-ForcePositionOut) + - [CellarV2_5Governance.FunctionCall](#steward-v4-CellarV2_5Governance-FunctionCall) + - [CellarV2_5Governance.IncreaseShareSupplyCap](#steward-v4-CellarV2_5Governance-IncreaseShareSupplyCap) + - [CellarV2_5Governance.InitiateShutdown](#steward-v4-CellarV2_5Governance-InitiateShutdown) + - [CellarV2_5Governance.LiftShutdown](#steward-v4-CellarV2_5Governance-LiftShutdown) + - [CellarV2_5Governance.Multicall](#steward-v4-CellarV2_5Governance-Multicall) + - [CellarV2_5Governance.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_5Governance-RemoveAdaptorFromCatalogue) + - [CellarV2_5Governance.RemovePosition](#steward-v4-CellarV2_5Governance-RemovePosition) + - [CellarV2_5Governance.RemovePositionFromCatalogue](#steward-v4-CellarV2_5Governance-RemovePositionFromCatalogue) + - [CellarV2_5Governance.SetAutomationActions](#steward-v4-CellarV2_5Governance-SetAutomationActions) + - [CellarV2_5Governance.SetHoldingPosition](#steward-v4-CellarV2_5Governance-SetHoldingPosition) + - [CellarV2_5Governance.SetRebalanceDeviation](#steward-v4-CellarV2_5Governance-SetRebalanceDeviation) + - [CellarV2_5Governance.SetSharePriceOracle](#steward-v4-CellarV2_5Governance-SetSharePriceOracle) + - [CellarV2_5Governance.SetStrategistPlatformCut](#steward-v4-CellarV2_5Governance-SetStrategistPlatformCut) + - [CellarV2_5Governance.ToggleIgnorePause](#steward-v4-CellarV2_5Governance-ToggleIgnorePause) + +- [collateral_f_token.proto](#collateral_f_token-proto) + - [CollateralFTokenAdaptorV1](#steward-v4-CollateralFTokenAdaptorV1) + - [CollateralFTokenAdaptorV1.AddCollateral](#steward-v4-CollateralFTokenAdaptorV1-AddCollateral) + - [CollateralFTokenAdaptorV1.RemoveCollateral](#steward-v4-CollateralFTokenAdaptorV1-RemoveCollateral) + - [CollateralFTokenAdaptorV1Calls](#steward-v4-CollateralFTokenAdaptorV1Calls) - [common.proto](#common-proto) + - [MarketParams](#steward-v4-MarketParams) - [OracleSwapParams](#steward-v4-OracleSwapParams) - [SwapParams](#steward-v4-SwapParams) - [UniV2OracleSwapParams](#steward-v4-UniV2OracleSwapParams) @@ -151,6 +257,31 @@ - [Exchange](#steward-v4-Exchange) +- [convex_curve.proto](#convex_curve-proto) + - [ConvexCurveAdaptorV1](#steward-v4-ConvexCurveAdaptorV1) + - [ConvexCurveAdaptorV1.DepositLPTInConvexAndStake](#steward-v4-ConvexCurveAdaptorV1-DepositLPTInConvexAndStake) + - [ConvexCurveAdaptorV1.GetRewards](#steward-v4-ConvexCurveAdaptorV1-GetRewards) + - [ConvexCurveAdaptorV1.WithdrawFromBaseRewardPoolAsLPT](#steward-v4-ConvexCurveAdaptorV1-WithdrawFromBaseRewardPoolAsLPT) + - [ConvexCurveAdaptorV1Calls](#steward-v4-ConvexCurveAdaptorV1Calls) + +- [curve.proto](#curve-proto) + - [CurveAdaptorV1](#steward-v4-CurveAdaptorV1) + - [CurveAdaptorV1.AddLiquidity](#steward-v4-CurveAdaptorV1-AddLiquidity) + - [CurveAdaptorV1.AddLiquidityETH](#steward-v4-CurveAdaptorV1-AddLiquidityETH) + - [CurveAdaptorV1.ClaimRewards](#steward-v4-CurveAdaptorV1-ClaimRewards) + - [CurveAdaptorV1.RemoveLiquidity](#steward-v4-CurveAdaptorV1-RemoveLiquidity) + - [CurveAdaptorV1.RemoveLiquidityETH](#steward-v4-CurveAdaptorV1-RemoveLiquidityETH) + - [CurveAdaptorV1.StakeInGauge](#steward-v4-CurveAdaptorV1-StakeInGauge) + - [CurveAdaptorV1.UnstakeFromGauge](#steward-v4-CurveAdaptorV1-UnstakeFromGauge) + - [CurveAdaptorV1Calls](#steward-v4-CurveAdaptorV1Calls) + +- [debt_f_token.proto](#debt_f_token-proto) + - [DebtFTokenAdaptorV1](#steward-v4-DebtFTokenAdaptorV1) + - [DebtFTokenAdaptorV1.BorrowFromFraxlend](#steward-v4-DebtFTokenAdaptorV1-BorrowFromFraxlend) + - [DebtFTokenAdaptorV1.CallAddInterest](#steward-v4-DebtFTokenAdaptorV1-CallAddInterest) + - [DebtFTokenAdaptorV1.RepayFraxlendDebt](#steward-v4-DebtFTokenAdaptorV1-RepayFraxlendDebt) + - [DebtFTokenAdaptorV1Calls](#steward-v4-DebtFTokenAdaptorV1Calls) + - [debt_token.proto](#debt_token-proto) - [AaveDebtTokenAdaptorV1](#steward-v4-AaveDebtTokenAdaptorV1) - [AaveDebtTokenAdaptorV1.BorrowFromAave](#steward-v4-AaveDebtTokenAdaptorV1-BorrowFromAave) @@ -162,6 +293,12 @@ - [AaveDebtTokenAdaptorV2.RepayAaveDebt](#steward-v4-AaveDebtTokenAdaptorV2-RepayAaveDebt) - [AaveDebtTokenAdaptorV2Calls](#steward-v4-AaveDebtTokenAdaptorV2Calls) +- [erc4626.proto](#erc4626-proto) + - [ERC4626AdaptorV1](#steward-v4-ERC4626AdaptorV1) + - [ERC4626AdaptorV1.DepositToVault](#steward-v4-ERC4626AdaptorV1-DepositToVault) + - [ERC4626AdaptorV1.WithdrawFromVault](#steward-v4-ERC4626AdaptorV1-WithdrawFromVault) + - [ERC4626AdaptorV1Calls](#steward-v4-ERC4626AdaptorV1Calls) + - [f_token.proto](#f_token-proto) - [FTokenAdaptorV1](#steward-v4-FTokenAdaptorV1) - [FTokenAdaptorV1.CallAddInterest](#steward-v4-FTokenAdaptorV1-CallAddInterest) @@ -185,6 +322,12 @@ - [governance.proto](#governance-proto) - [GovernanceCall](#steward-v4-GovernanceCall) +- [legacy_cellar_adaptor.proto](#legacy_cellar_adaptor-proto) + - [LegacyCellarAdaptorV1](#steward-v4-LegacyCellarAdaptorV1) + - [LegacyCellarAdaptorV1.DepositToCellar](#steward-v4-LegacyCellarAdaptorV1-DepositToCellar) + - [LegacyCellarAdaptorV1.WithdrawFromCellar](#steward-v4-LegacyCellarAdaptorV1-WithdrawFromCellar) + - [LegacyCellarAdaptorV1Calls](#steward-v4-LegacyCellarAdaptorV1Calls) + - [morpho_aave_v2_a_token.proto](#morpho_aave_v2_a_token-proto) - [MorphoAaveV2ATokenAdaptorV1](#steward-v4-MorphoAaveV2ATokenAdaptorV1) - [MorphoAaveV2ATokenAdaptorV1.DepositToAaveV2Morpho](#steward-v4-MorphoAaveV2ATokenAdaptorV1-DepositToAaveV2Morpho) @@ -215,6 +358,24 @@ - [MorphoAaveV3DebtTokenAdaptorV1.RepayAaveV3MorphoDebt](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1-RepayAaveV3MorphoDebt) - [MorphoAaveV3DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1Calls) +- [morpho_blue_collateral.proto](#morpho_blue_collateral-proto) + - [MorphoBlueCollateralAdaptorV1](#steward-v4-MorphoBlueCollateralAdaptorV1) + - [MorphoBlueCollateralAdaptorV1.AddCollateral](#steward-v4-MorphoBlueCollateralAdaptorV1-AddCollateral) + - [MorphoBlueCollateralAdaptorV1.RemoveCollateral](#steward-v4-MorphoBlueCollateralAdaptorV1-RemoveCollateral) + - [MorphoBlueCollateralAdaptorV1Calls](#steward-v4-MorphoBlueCollateralAdaptorV1Calls) + +- [morpho_blue_debt.proto](#morpho_blue_debt-proto) + - [MorphoBlueDebtAdaptorV1](#steward-v4-MorphoBlueDebtAdaptorV1) + - [MorphoBlueDebtAdaptorV1.BorrowFromMorphoBlue](#steward-v4-MorphoBlueDebtAdaptorV1-BorrowFromMorphoBlue) + - [MorphoBlueDebtAdaptorV1.RepayMorphoBlueDebt](#steward-v4-MorphoBlueDebtAdaptorV1-RepayMorphoBlueDebt) + - [MorphoBlueDebtAdaptorV1Calls](#steward-v4-MorphoBlueDebtAdaptorV1Calls) + +- [morpho_blue_supply.proto](#morpho_blue_supply-proto) + - [MorphoBlueSupplyAdaptorV1](#steward-v4-MorphoBlueSupplyAdaptorV1) + - [MorphoBlueSupplyAdaptorV1.LendToMorphoBlue](#steward-v4-MorphoBlueSupplyAdaptorV1-LendToMorphoBlue) + - [MorphoBlueSupplyAdaptorV1.WithdrawFromMorphoBlue](#steward-v4-MorphoBlueSupplyAdaptorV1-WithdrawFromMorphoBlue) + - [MorphoBlueSupplyAdaptorV1Calls](#steward-v4-MorphoBlueSupplyAdaptorV1Calls) + - [morpho_reward_handler.proto](#morpho_reward_handler-proto) - [Claim](#steward-v4-Claim) @@ -223,7 +384,37 @@ - [OneInchAdaptorV1.SwapWithOneInch](#steward-v4-OneInchAdaptorV1-SwapWithOneInch) - [OneInchAdaptorV1Calls](#steward-v4-OneInchAdaptorV1Calls) +- [pendle.proto](#pendle-proto) + - [PendleAdaptorV1](#steward-v4-PendleAdaptorV1) + - [PendleAdaptorV1.AddLiquidityDualSyAndPt](#steward-v4-PendleAdaptorV1-AddLiquidityDualSyAndPt) + - [PendleAdaptorV1.ApproxParams](#steward-v4-PendleAdaptorV1-ApproxParams) + - [PendleAdaptorV1.MintPyFromSy](#steward-v4-PendleAdaptorV1-MintPyFromSy) + - [PendleAdaptorV1.MintSyFromToken](#steward-v4-PendleAdaptorV1-MintSyFromToken) + - [PendleAdaptorV1.RedeemPyToSy](#steward-v4-PendleAdaptorV1-RedeemPyToSy) + - [PendleAdaptorV1.RedeemSyToToken](#steward-v4-PendleAdaptorV1-RedeemSyToToken) + - [PendleAdaptorV1.RemoveLiquidityDualSyAndPt](#steward-v4-PendleAdaptorV1-RemoveLiquidityDualSyAndPt) + - [PendleAdaptorV1.SwapData](#steward-v4-PendleAdaptorV1-SwapData) + - [PendleAdaptorV1.SwapExactPtForYt](#steward-v4-PendleAdaptorV1-SwapExactPtForYt) + - [PendleAdaptorV1.SwapExactYtForPt](#steward-v4-PendleAdaptorV1-SwapExactYtForPt) + - [PendleAdaptorV1.TokenInput](#steward-v4-PendleAdaptorV1-TokenInput) + - [PendleAdaptorV1.TokenOutput](#steward-v4-PendleAdaptorV1-TokenOutput) + - [PendleAdaptorV1Calls](#steward-v4-PendleAdaptorV1Calls) + +- [staking.proto](#staking-proto) + - [StakingAdaptorV1](#steward-v4-StakingAdaptorV1) + - [StakingAdaptorV1.CancelBurn](#steward-v4-StakingAdaptorV1-CancelBurn) + - [StakingAdaptorV1.CompleteBurn](#steward-v4-StakingAdaptorV1-CompleteBurn) + - [StakingAdaptorV1.Mint](#steward-v4-StakingAdaptorV1-Mint) + - [StakingAdaptorV1.MintERC20](#steward-v4-StakingAdaptorV1-MintERC20) + - [StakingAdaptorV1.RemoveClaimedRequest](#steward-v4-StakingAdaptorV1-RemoveClaimedRequest) + - [StakingAdaptorV1.RequestBurn](#steward-v4-StakingAdaptorV1-RequestBurn) + - [StakingAdaptorV1.Unwrap](#steward-v4-StakingAdaptorV1-Unwrap) + - [StakingAdaptorV1.Wrap](#steward-v4-StakingAdaptorV1-Wrap) + - [StakingAdaptorV1Calls](#steward-v4-StakingAdaptorV1Calls) + - [steward.proto](#steward-proto) + - [EncodeRequest](#steward-v4-EncodeRequest) + - [EncodeResponse](#steward-v4-EncodeResponse) - [ScheduleRequest](#steward-v4-ScheduleRequest) - [ScheduleResponse](#steward-v4-ScheduleResponse) - [SimulateRequest](#steward-v4-SimulateRequest) @@ -234,6 +425,7 @@ - [VersionResponse](#steward-v4-VersionResponse) - [ContractCallService](#steward-v4-ContractCallService) + - [EncodingService](#steward-v4-EncodingService) - [SimulateContractCallService](#steward-v4-SimulateContractCallService) - [StatusService](#steward-v4-StatusService) @@ -965,43 +1157,6 @@ Represents call data for the Aave Debt Token adaptor, used for borrowing and rep | borrow_from_aave | [AaveV3DebtTokenAdaptorV1.BorrowFromAave](#steward-v4-AaveV3DebtTokenAdaptorV1-BorrowFromAave) | | Represents function `borrowFromAave(ERC20 debtTokenToBorrow, uint256 amountToBorrow)` | | repay_aave_debt | [AaveV3DebtTokenAdaptorV1.RepayAaveDebt](#steward-v4-AaveV3DebtTokenAdaptorV1-RepayAaveDebt) | | Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | | repay_with_a_tokens | [AaveV3DebtTokenAdaptorV1.RepayWithATokens](#steward-v4-AaveV3DebtTokenAdaptorV1-RepayWithATokens) | | Represents function `repayWithATokens(ERC20 underlying, uint256 amount)` | -| flash_loan | [AaveV3DebtTokenAdaptorV1.FlashLoan](#steward-v4-AaveV3DebtTokenAdaptorV1-FlashLoan) | | Represents function `flashLoan(address[] loanToken, uint256[] loanAmount, bytes params)` | - - - - - - - - -### AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan -Represents a call to adaptor an. The cellar must be authorized to call the target adaptor. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| adaptor | [string](#string) | | Address of the adaptor | -| aave_a_token_v1_calls | [AaveATokenAdaptorV1Calls](#steward-v4-AaveATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenAdaptor V1 | -| aave_debt_token_v1_calls | [AaveDebtTokenAdaptorV1Calls](#steward-v4-AaveDebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenAdaptor V1 | -| compound_c_token_v2_calls | [CompoundCTokenAdaptorV2Calls](#steward-v4-CompoundCTokenAdaptorV2Calls) | | Represents function calls to the CompoundCTokenAdaptor V2 | -| aave_a_token_v2_calls | [AaveATokenAdaptorV2Calls](#steward-v4-AaveATokenAdaptorV2Calls) | | Represents function calls to the AaveATokenV2Adaptor | -| aave_debt_token_v2_calls | [AaveDebtTokenAdaptorV2Calls](#steward-v4-AaveDebtTokenAdaptorV2Calls) | | Represents function calls to the AavaDebtTokenV2Adaptor | -| aave_v3_a_token_v1_calls | [AaveV3ATokenAdaptorV1Calls](#steward-v4-AaveV3ATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenV1Adaptor | -| aave_v3_debt_token_v1_calls | [AaveV3DebtTokenAdaptorV1Calls](#steward-v4-AaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenV1Adaptor | -| one_inch_v1_calls | [OneInchAdaptorV1Calls](#steward-v4-OneInchAdaptorV1Calls) | | Represents function calls to the OneInchAdaptorV1 | -| fees_and_reserves_v1_calls | [FeesAndReservesAdaptorV1Calls](#steward-v4-FeesAndReservesAdaptorV1Calls) | | Represents function calls to the FeesAndReservesAdaptorV1 | -| zero_x_v1_calls | [ZeroXAdaptorV1Calls](#steward-v4-ZeroXAdaptorV1Calls) | | Represents functionc alls to the ZeroXAdaptorV1 | -| swap_with_uniswap_v1_calls | [SwapWithUniswapAdaptorV1Calls](#steward-v4-SwapWithUniswapAdaptorV1Calls) | | Represents function calls to the SwapWithUniswapAdaptorV1 | -| vesting_simple_v2_calls | [VestingSimpleAdaptorV2Calls](#steward-v4-VestingSimpleAdaptorV2Calls) | | Represents function calls to VestingSimpleAdaptor | -| cellar_v1_calls | [CellarAdaptorV1Calls](#steward-v4-CellarAdaptorV1Calls) | | Represents function calls to the CellarAdaptor | -| uniswap_v3_v2_calls | [UniswapV3AdaptorV2Calls](#steward-v4-UniswapV3AdaptorV2Calls) | | Represents function calls to the UniswapV3Adaptor V2 | -| aave_v2_enable_asset_as_collateral_v1_calls | [AaveV2EnableAssetAsCollateralAdaptorV1Calls](#steward-v4-AaveV2EnableAssetAsCollateralAdaptorV1Calls) | | Represents function calls to the AaveV2EnableAssetAsCollatorAdaptor V1 | -| f_token_v1_calls | [FTokenAdaptorV1Calls](#steward-v4-FTokenAdaptorV1Calls) | | Represents function calls to the FTokenAdaptor V1 | -| morpho_aave_v2_a_token_v1_calls | [MorphoAaveV2ATokenAdaptorV1Calls](#steward-v4-MorphoAaveV2ATokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2AToken V1 | -| morpho_aave_v2_debt_token_v1_calls | [MorphoAaveV2DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2DebtToken V1 | -| morpho_aave_v3_a_token_collateral_v1_calls | [MorphoAaveV3ATokenCollateralAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenCollateral V1 | -| morpho_aave_v3_a_token_p2p_v1_calls | [MorphoAaveV3ATokenP2PAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenP2P V1 | -| morpho_aave_v3_debt_token_v1_calls | [MorphoAaveV3DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3DebtToken V1 | @@ -1026,25 +1181,6 @@ Represents function `depositToAave(ERC20 tokenToDeposit, uint256 amountToDeposit - - -### AaveV3DebtTokenAdaptorV1.FlashLoan -Allows strategists to have Cellars take out flash loans - -Represents function `flashLoan(address[] loanToken, uint256[] loanAmount, bytes params)` - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| loan_tokens | [string](#string) | repeated | The addresses of the ERC20 tokens to borrow | -| loan_amounts | [string](#string) | repeated | The amounts to borrow | -| params | [AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan](#steward-v4-AaveV3DebtTokenAdaptorV1-AdaptorCallForAaveV3Flashloan) | repeated | The params to pass to the flash loan callback. | - - - - - - ### AaveV3DebtTokenAdaptorV1.RepayAaveDebt @@ -1105,165 +1241,170 @@ Represents function `repayWithATokens(ERC20 underlying, uint256 amount)` - +
-## base.proto - +## aave_v3_debt_token_flash_loan.proto - -### OracleSwap -Helper function to make safe "blind" Uniswap Swaps by comparing value in vs value out of the swap. + -Represents function `oracleSwap(ERC20 assetIn, ERC20 assetOut, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params, uint64 slippage)` +### AaveV3DebtTokenAdaptorV1FlashLoan +Represents call data for the Aave Debt Token adaptor, used for borrowing and repaying debt on Aave. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| asset_in | [string](#string) | | Asset to swap from | -| asset_out | [string](#string) | | Asset to swap to | -| amount_in | [string](#string) | | Amount to swap | -| exchange | [Exchange](#steward-v4-Exchange) | | The exchange to make the swap on | -| params | [OracleSwapParams](#steward-v4-OracleSwapParams) | | The parameters for the swap | -| slippage | [uint64](#uint64) | | The slippage allowed for the swap | +| flash_loan | [AaveV3DebtTokenAdaptorV1FlashLoan.FlashLoan](#steward-v4-AaveV3DebtTokenAdaptorV1FlashLoan-FlashLoan) | | Represents function `flashLoan(address[] loanToken, uint256[] loanAmount, bytes params)` | - - -### RevokeApproval -Allows strategists to zero out an approval for a given `asset`. + -Represents function `revokeApproval(ERC20 asset, address spender)` +### AaveV3DebtTokenAdaptorV1FlashLoan.AdaptorCallForAaveV3FlashLoan +Represents a call to adaptor an. The cellar must be authorized to call the target adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| asset | [string](#string) | | ERC20 Asset to revoke spender's approval for | -| spender | [string](#string) | | The spender to revoke approval of asset for | +| adaptor | [string](#string) | | Address of the adaptor | +| aave_a_token_v1_calls | [AaveATokenAdaptorV1Calls](#steward-v4-AaveATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenAdaptor V1 | +| aave_debt_token_v1_calls | [AaveDebtTokenAdaptorV1Calls](#steward-v4-AaveDebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenAdaptor V1 | +| compound_c_token_v2_calls | [CompoundCTokenAdaptorV2Calls](#steward-v4-CompoundCTokenAdaptorV2Calls) | | Represents function calls to the CompoundCTokenAdaptor V2 | +| aave_a_token_v2_calls | [AaveATokenAdaptorV2Calls](#steward-v4-AaveATokenAdaptorV2Calls) | | Represents function calls to the AaveATokenV2Adaptor | +| aave_debt_token_v2_calls | [AaveDebtTokenAdaptorV2Calls](#steward-v4-AaveDebtTokenAdaptorV2Calls) | | Represents function calls to the AavaDebtTokenV2Adaptor | +| aave_v3_a_token_v1_calls | [AaveV3ATokenAdaptorV1Calls](#steward-v4-AaveV3ATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenV1Adaptor | +| one_inch_v1_calls | [OneInchAdaptorV1Calls](#steward-v4-OneInchAdaptorV1Calls) | | Represents function calls to the OneInchAdaptorV1 | +| fees_and_reserves_v1_calls | [FeesAndReservesAdaptorV1Calls](#steward-v4-FeesAndReservesAdaptorV1Calls) | | Represents function calls to the FeesAndReservesAdaptorV1 | +| zero_x_v1_calls | [ZeroXAdaptorV1Calls](#steward-v4-ZeroXAdaptorV1Calls) | | Represents functionc alls to the ZeroXAdaptorV1 | +| swap_with_uniswap_v1_calls | [SwapWithUniswapAdaptorV1Calls](#steward-v4-SwapWithUniswapAdaptorV1Calls) | | Represents function calls to the SwapWithUniswapAdaptorV1 | +| vesting_simple_v2_calls | [VestingSimpleAdaptorV2Calls](#steward-v4-VestingSimpleAdaptorV2Calls) | | Represents function calls to VestingSimpleAdaptor | +| cellar_v1_calls | [CellarAdaptorV1Calls](#steward-v4-CellarAdaptorV1Calls) | | Represents function calls to the CellarAdaptor | +| uniswap_v3_v2_calls | [UniswapV3AdaptorV2Calls](#steward-v4-UniswapV3AdaptorV2Calls) | | Represents function calls to the UniswapV3Adaptor V2 | +| aave_v2_enable_asset_as_collateral_v1_calls | [AaveV2EnableAssetAsCollateralAdaptorV1Calls](#steward-v4-AaveV2EnableAssetAsCollateralAdaptorV1Calls) | | Represents function calls to the AaveV2EnableAssetAsCollatorAdaptor V1 | +| f_token_v1_calls | [FTokenAdaptorV1Calls](#steward-v4-FTokenAdaptorV1Calls) | | Represents function calls to the FTokenAdaptor V1 | +| morpho_aave_v2_a_token_v1_calls | [MorphoAaveV2ATokenAdaptorV1Calls](#steward-v4-MorphoAaveV2ATokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2AToken V1 | +| morpho_aave_v2_debt_token_v1_calls | [MorphoAaveV2DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2DebtToken V1 | +| morpho_aave_v3_a_token_collateral_v1_calls | [MorphoAaveV3ATokenCollateralAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenCollateral V1 | +| morpho_aave_v3_a_token_p2p_v1_calls | [MorphoAaveV3ATokenP2PAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenP2P V1 | +| morpho_aave_v3_debt_token_v1_calls | [MorphoAaveV3DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3DebtToken V1 | +| balancer_pool_v1_calls | [BalancerPoolAdaptorV1Calls](#steward-v4-BalancerPoolAdaptorV1Calls) | | Represents function calls to the BalancerPoolAdaptor V1 | +| legacy_cellar_v1_calls | [LegacyCellarAdaptorV1Calls](#steward-v4-LegacyCellarAdaptorV1Calls) | | Represents function calls to the LegacyCellarAdaptor V1 | +| debt_f_token_v1_calls | [DebtFTokenAdaptorV1Calls](#steward-v4-DebtFTokenAdaptorV1Calls) | | Represents function calls to the DebtFTokenAdaptor V1 | +| collateral_f_token_v1_calls | [CollateralFTokenAdaptorV1Calls](#steward-v4-CollateralFTokenAdaptorV1Calls) | | Represents function calls to the CollateralFTokenAdaptor V1 | +| convex_curve_v1_calls | [ConvexCurveAdaptorV1Calls](#steward-v4-ConvexCurveAdaptorV1Calls) | | Represents function calls for the ConvexCurveAdaptorV1 | +| curve_v1_calls | [CurveAdaptorV1Calls](#steward-v4-CurveAdaptorV1Calls) | | Represents function calls for the CurveAdaptorV1 | +| aura_erc4626_v1_calls | [AuraERC4626AdaptorV1Calls](#steward-v4-AuraERC4626AdaptorV1Calls) | | Represents function calls for the AuraERC4626AdaptorV1 | +| morpho_blue_collateral_v1_calls | [MorphoBlueCollateralAdaptorV1Calls](#steward-v4-MorphoBlueCollateralAdaptorV1Calls) | | Represents function calls for the MorphoBlueCollateralAdaptorV1 | +| morpho_blue_debt_v1_calls | [MorphoBlueDebtAdaptorV1Calls](#steward-v4-MorphoBlueDebtAdaptorV1Calls) | | Represents function calls for the MorphoBlueDebtAdaptorV1 | +| morpho_blue_supply_v1_calls | [MorphoBlueSupplyAdaptorV1Calls](#steward-v4-MorphoBlueSupplyAdaptorV1Calls) | | Represents function calls for the MorphoBlueSupplyAdaptorV1 | +| erc4626_v1_calls | [ERC4626AdaptorV1Calls](#steward-v4-ERC4626AdaptorV1Calls) | | Represents function calls for the ERC4626AdaptorV1 | +| staking_v1_calls | [StakingAdaptorV1Calls](#steward-v4-StakingAdaptorV1Calls) | | Represents function calls for the StakingAdaptorV1 | +| aave_v3_debt_token_v1_calls | [AaveV3DebtTokenAdaptorV1Calls](#steward-v4-AaveV3DebtTokenAdaptorV1Calls) | | Represents function calls for the AaveV3DebtTokenAdaptor V1 | +| pendle_v1_calls | [PendleAdaptorV1Calls](#steward-v4-PendleAdaptorV1Calls) | | Represents function calls for the PendleAdaptorV1 | - + -### Swap -Helper function that allows swaps using the Swap Router +### AaveV3DebtTokenAdaptorV1FlashLoan.FlashLoan +Allows strategists to have Cellars take out flash loans -Represents function `swap(ERC20 assetIn, ERC20 assetOut, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params)` +Represents function `flashLoan(address[] loanToken, uint256[] loanAmount, bytes params)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| asset_in | [string](#string) | | Asset to swap from | -| asset_out | [string](#string) | | Asset to swap to | -| amount_in | [string](#string) | | Amount to swap | -| exchange | [Exchange](#steward-v4-Exchange) | | The exchange to make the swap on | -| params | [SwapParams](#steward-v4-SwapParams) | | The parameters for the swap | - - - - - - - - - - - - +| loan_tokens | [string](#string) | repeated | The addresses of the ERC20 tokens to borrow | +| loan_amounts | [string](#string) | repeated | The amounts to borrow | +| params | [AaveV3DebtTokenAdaptorV1FlashLoan.AdaptorCallForAaveV3FlashLoan](#steward-v4-AaveV3DebtTokenAdaptorV1FlashLoan-AdaptorCallForAaveV3FlashLoan) | repeated | The params to pass to the flash loan callback. | - - -## c_token.proto + - +### AaveV3DebtTokenAdaptorV1FlashLoanCalls -### CompoundCTokenAdaptorV2 -Represents call data for the Compound C Token adaptor V2, managing lending positions on Compound. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| deposit_to_compound | [CompoundCTokenAdaptorV2.DepositToCompound](#steward-v4-CompoundCTokenAdaptorV2-DepositToCompound) | | Represents function `depositToCompound(CErc20 market, uint256 amountToDeposit)` | -| withdraw_from_compound | [CompoundCTokenAdaptorV2.WithdrawFromCompound](#steward-v4-CompoundCTokenAdaptorV2-WithdrawFromCompound) | | Represents function `withdrawFromCompound(CErc20 market, uint256 amountToWithdraw)` | -| claim_comp | [CompoundCTokenAdaptorV2.ClaimComp](#steward-v4-CompoundCTokenAdaptorV2-ClaimComp) | | Represents function `claimComp()` | +| calls | [AaveV3DebtTokenAdaptorV1FlashLoan](#steward-v4-AaveV3DebtTokenAdaptorV1FlashLoan) | repeated | | + - + -### CompoundCTokenAdaptorV2.ClaimComp -Allows strategists to claim COMP rewards. + -Represents function `claimComp()` + + + +## aura_erc4626.proto - -### CompoundCTokenAdaptorV2.DepositToCompound -Allows strategists to lend assets on Compound. + -Represents function `depositToCompound(CErc20 market, uint256 amountToDeposit)` +### AuraERC4626AdaptorV1 +Represents call data for the Aura ERC4626 adaptor V1 | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| market | [string](#string) | | | -| amount_to_deposit | [string](#string) | | | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| get_rewards | [AuraERC4626AdaptorV1.GetRewards](#steward-v4-AuraERC4626AdaptorV1-GetRewards) | | Represents function `getRewards(IBaseRewardPool _auraPool, bool _claimExtras)` | - + -### CompoundCTokenAdaptorV2.WithdrawFromCompound -Allows strategists to withdraw assets from Compound. +### AuraERC4626AdaptorV1.GetRewards +Allows strategist to get rewards for an Aura pool. -Represents function `withdrawFromCompound(CErc20 market, uint256 amountToWithdraw)` +Represents function `getRewards(IBaseRewardPool _auraPool, bool _claimExtras)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| market | [string](#string) | | | -| amount_to_withdraw | [string](#string) | | | +| aura_pool | [string](#string) | | The address of the Aura pool to get rewards for | +| claim_extras | [bool](#bool) | | Whether to claim extra rewards associated with the pool | - + -### CompoundCTokenAdaptorV2Calls +### AuraERC4626AdaptorV1Calls | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [CompoundCTokenAdaptorV2](#steward-v4-CompoundCTokenAdaptorV2) | repeated | | +| calls | [AuraERC4626AdaptorV1](#steward-v4-AuraERC4626AdaptorV1) | repeated | | @@ -1279,1270 +1420,4401 @@ Represents function `withdrawFromCompound(CErc20 market, uint256 amountToWithdra - + -## cellar_adaptor.proto - +## balancer_pool.proto - -### CellarAdaptorV1 + +### BalancerPoolAdaptorV1 +Represents call data for the Balancer Pool adaptor V1, for managing pool positions on Balancer. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| depositToCellar | [CellarAdaptorV1.DepositToCellar](#steward-v4-CellarAdaptorV1-DepositToCellar) | | Represents function `depositToCellar(Cellar cellar, uint256 assets)` | -| withdrawFromCellar | [CellarAdaptorV1.WithdrawFromCellar](#steward-v4-CellarAdaptorV1-WithdrawFromCellar) | | Represents function `withdrawFromCellar(Cellar cellar, uint256 assets)` | +| join_pool | [BalancerPoolAdaptorV1.JoinPool](#steward-v4-BalancerPoolAdaptorV1-JoinPool) | | Represents function `relayerJoinPool(ERC20[] tokensIn, uint256[] amountsIn, ERC20 btpOut, bytes[] memory callData)` | +| exit_pool | [BalancerPoolAdaptorV1.ExitPool](#steward-v4-BalancerPoolAdaptorV1-ExitPool) | | Represents function `relayerExitPool(ERC20 bptIn, uint256 amountIn, ERC20[] memory tokensOut, bytes[] memory callData)` | +| stake_bpt | [BalancerPoolAdaptorV1.StakeBPT](#steward-v4-BalancerPoolAdaptorV1-StakeBPT) | | Represents function `stakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountIn)` | +| unstake_bpt | [BalancerPoolAdaptorV1.UnstakeBPT](#steward-v4-BalancerPoolAdaptorV1-UnstakeBPT) | | Represents function `unstakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountOut)` | +| claim_rewards | [BalancerPoolAdaptorV1.ClaimRewards](#steward-v4-BalancerPoolAdaptorV1-ClaimRewards) | | Represents function `claimRewards(address gauge)` | - + -### CellarAdaptorV1.DepositToCellar -Allows strategists to deposit into Cellar positions. +### BalancerPoolAdaptorV1.ClaimRewards +Claim rewards ($BAL) from LP position -Represents function `depositToCellar(Cellar cellar, uint256 assets)` +Represents `function claimRewards(address gauge)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| cellar | [string](#string) | | | -| assets | [string](#string) | | | +| gauge | [string](#string) | | The gauge to claim rewards from | - + -### CellarAdaptorV1.WithdrawFromCellar -Allows strategists to withdraw from Cellar positions. +### BalancerPoolAdaptorV1.ExitPool +Call `BalancerRelayer` on mainnet to carry out exit txs -Represents function `withdrawFromCellar(Cellar cellar, uint256 assets)` +Represents function `exitPool(ERC20 targetBpt, IVault.SingleSwap[] memory swapsBeforeJoin, SwapData memory swapData, IVault.ExitPoolRequest request)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| cellar | [string](#string) | | | -| assets | [string](#string) | | | +| target_bpt | [string](#string) | | The target pool | +| swaps_after_exit | [BalancerPoolAdaptorV1.SingleSwap](#steward-v4-BalancerPoolAdaptorV1-SingleSwap) | repeated | Swaps to execute after exiting pool | +| swap_data | [BalancerPoolAdaptorV1.SwapData](#steward-v4-BalancerPoolAdaptorV1-SwapData) | | Data for swaps | +| request | [BalancerPoolAdaptorV1.ExitPoolRequest](#steward-v4-BalancerPoolAdaptorV1-ExitPoolRequest) | | | - + -### CellarAdaptorV1Calls +### BalancerPoolAdaptorV1.ExitPoolRequest | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [CellarAdaptorV1](#steward-v4-CellarAdaptorV1) | repeated | | +| assets | [string](#string) | repeated | | +| min_amounts_out | [string](#string) | repeated | | +| user_data | [bytes](#bytes) | | | +| to_internal_balance | [bool](#bool) | | | - - + - +### BalancerPoolAdaptorV1.JoinPool +Allows strategists to join Balancer pools using EXACT_TOKENS_IN_FOR_BPT_OUT joins - +Represents function `joinPool(ERC20 targetBpt, IVault.SingleSwap[] memory swapsBeforeJoin, SwapData memory swapData, uint256 minimumBpt)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| target_bpt | [string](#string) | | The target pool | +| swaps_before_join | [BalancerPoolAdaptorV1.SingleSwap](#steward-v4-BalancerPoolAdaptorV1-SingleSwap) | repeated | Swap to execute before joining pool | +| swap_data | [BalancerPoolAdaptorV1.SwapData](#steward-v4-BalancerPoolAdaptorV1-SwapData) | | Data for swaps | +| minimum_bpt | [string](#string) | | The minimum BPT to mint | - - -## cellar_v1.proto - -### CellarV1 -Represents a function call to a cellar that implements Cellar.sol + + +### BalancerPoolAdaptorV1.SingleSwap +Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on the `kind` value. +Represents the SingleSwap struct defined here: +https://github.com/PeggyJV/cellar-contracts/blob/main/src/interfaces/external/Balancer/IVault.sol | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| add_position | [CellarV1.AddPosition](#steward-v4-CellarV1-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | -| push_position | [CellarV1.PushPosition](#steward-v4-CellarV1-PushPosition) | | Represents function `pushPosition(address position)` | -| remove_position | [CellarV1.RemovePosition](#steward-v4-CellarV1-RemovePosition) | | Represents function `removePosition(uint256 index)` | -| set_holding_position | [CellarV1.SetHoldingPosition](#steward-v4-CellarV1-SetHoldingPosition) | | Represents function `setHoldingPosition(address newHoldingPosition)` | -| rebalance | [CellarV1.Rebalance](#steward-v4-CellarV1-Rebalance) | | Represents function `rebalance(address fromPosition, address toPosition, uint256 assetsFrom, SwapRouter.Exchange exchange, bytes calldata params)` | -| set_strategist_payout_address | [CellarV1.SetStrategistPayoutAddress](#steward-v4-CellarV1-SetStrategistPayoutAddress) | | Represents function `setStrategistPayoutAddress(address payout)` | -| set_withdraw_type | [CellarV1.SetWithdrawType](#steward-v4-CellarV1-SetWithdrawType) | | Represents function `setWithdrawType(WithdrawType newWithdrawType)` | -| swap_positions | [CellarV1.SwapPositions](#steward-v4-CellarV1-SwapPositions) | | Represents function `swapPositions(uint256 index1, uint256 index2)` | -| set_deposit_limit | [CellarV1.SetDepositLimit](#steward-v4-CellarV1-SetDepositLimit) | | Represents function `setDepositLimit()` | -| set_liquidity_limit | [CellarV1.SetLiquidityLimit](#steward-v4-CellarV1-SetLiquidityLimit) | | Represents function `setLiquidityLimit()` | -| set_share_lock_period | [CellarV1.SetShareLockPeriod](#steward-v4-CellarV1-SetShareLockPeriod) | | Represents function `setShareLockPeriod()` | -| set_rebalance_deviation | [CellarV1.SetRebalanceDeviation](#steward-v4-CellarV1-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint265)` | +| pool_id | [string](#string) | | The pool ID (bytes32) | +| kind | [BalancerPoolAdaptorV1.SwapKind](#steward-v4-BalancerPoolAdaptorV1-SwapKind) | | The swap kind (enum) | +| asset_in | [string](#string) | | The asset in (address) | +| asset_out | [string](#string) | | The asset out (address) | +| amount | [string](#string) | | The amount (uint256) | +| user_data | [bytes](#bytes) | | The user data (bytes) | - + -### CellarV1.AddPosition -Insert a trusted position to the list of positions used by the cellar at a given index. +### BalancerPoolAdaptorV1.StakeBPT +Stake (deposit) BPTs into respective pool gauge -Represents function `addPosition(uint256 index, address position)` +Represents `function stakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountIn)`` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index | [string](#string) | | Index at which to add the position | -| position | [string](#string) | | Address of the position to add | - +| bpt | [string](#string) | | The BPT to stake | +| liquidity_gauge | [string](#string) | | The liquidity gauge to stake into | +| amount_in | [string](#string) | | The amount to stake | - -### CellarV1.PushPosition -Push a trusted position to the end of the list of positions used by the cellar. If you -know you are going to add a position to the end of the array, this is more efficient then -`addPosition`. + -Represents function `pushPosition(address position)` +### BalancerPoolAdaptorV1.SwapData +Stores each swaps min amount, and deadline | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| position | [string](#string) | | Address of the position to push | +| min_amounts_for_swaps | [string](#string) | repeated | The minimum amounts for swaps | +| swap_deadlines | [string](#string) | repeated | The swap deadlines | - + -### CellarV1.Rebalance -Move assets between positions. To move assets from/to this cellar's holdings, specify -the address of this cellar as the `fromPosition`/`toPosition`. +### BalancerPoolAdaptorV1.UnstakeBPT +Unstake (withdraw) BPT from respective pool gauge -Represents function `rebalance(address fromPosition, address toPosition, - uint256 assetsFrom, SwapRouter.Exchange exchange, bytes calldata params) +Represents `function unstakeBPT(ERC20 _bpt, address _liquidityGauge, uint256 _amountOut)`` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| from_position | [string](#string) | | | -| to_position | [string](#string) | | | -| assets_from | [string](#string) | | | -| exchange | [Exchange](#steward-v4-Exchange) | | | -| params | [SwapParams](#steward-v4-SwapParams) | | | +| bpt | [string](#string) | | The BPT to unstake | +| liquidity_gauge | [string](#string) | | The liquidity gauge to unstake from | +| amount_out | [string](#string) | | The amount to unstake | - + -### CellarV1.RemovePosition -Remove the position at a given index from the list of positions used by the cellar. +### BalancerPoolAdaptorV1Calls -Represents function `removePosition(uint256 index)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index | [string](#string) | | Index at which to remove the position | +| calls | [BalancerPoolAdaptorV1](#steward-v4-BalancerPoolAdaptorV1) | repeated | | + - -### CellarV1.SetDepositLimit -Set the per-wallet deposit limit. Uses the same decimals as the current asset. + -Represents function `setDepositLimit()` +### BalancerPoolAdaptorV1.SwapKind +Represents the SwapKind enum defined here: +https://github.com/PeggyJV/cellar-contracts/blob/main/src/interfaces/external/Balancer/IVault.sol +| Name | Number | Description | +| ---- | ------ | ----------- | +| SWAP_KIND_UNSPECIFIED | 0 | | +| SWAP_KIND_GIVEN_IN | 1 | | +| SWAP_KIND_GIVEN_OUT | 2 | | -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| new_limit | [string](#string) | | | + + + + + + + + + + + +## balancer_pool_flash_loan.proto + + + + + +### BalancerPoolAdaptorV1FlashLoan +Represents flash loan call data for the Balancer Pool adaptor V1, for managing pool positions on Balancer. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| make_flash_loan | [BalancerPoolAdaptorV1FlashLoan.MakeFlashLoan](#steward-v4-BalancerPoolAdaptorV1FlashLoan-MakeFlashLoan) | | | + + + + + + + + +### BalancerPoolAdaptorV1FlashLoan.AdaptorCallForBalancerPoolFlashLoan +NOTE: Make FlashLoan takes an array of AdaptorCall. cellar_v2.proto defines it, but also imports this file, therefore we can't import cellar_v2.proto in order to use the AdaptorCall message here. To avoid the recursive import, we duplicate the message definition. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | Address of the adaptor | +| aave_a_token_v1_calls | [AaveATokenAdaptorV1Calls](#steward-v4-AaveATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenAdaptor V1 | +| aave_debt_token_v1_calls | [AaveDebtTokenAdaptorV1Calls](#steward-v4-AaveDebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenAdaptor V1 | +| compound_c_token_v2_calls | [CompoundCTokenAdaptorV2Calls](#steward-v4-CompoundCTokenAdaptorV2Calls) | | Represents function calls to the CompoundCTokenAdaptor V2 | +| aave_a_token_v2_calls | [AaveATokenAdaptorV2Calls](#steward-v4-AaveATokenAdaptorV2Calls) | | Represents function calls to the AaveATokenV2Adaptor | +| aave_debt_token_v2_calls | [AaveDebtTokenAdaptorV2Calls](#steward-v4-AaveDebtTokenAdaptorV2Calls) | | Represents function calls to the AavaDebtTokenV2Adaptor | +| aave_v3_a_token_v1_calls | [AaveV3ATokenAdaptorV1Calls](#steward-v4-AaveV3ATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenV1Adaptor | +| aave_v3_debt_token_v1_calls | [AaveV3DebtTokenAdaptorV1Calls](#steward-v4-AaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenV1Adaptor | +| one_inch_v1_calls | [OneInchAdaptorV1Calls](#steward-v4-OneInchAdaptorV1Calls) | | Represents function calls to the OneInchAdaptorV1 | +| fees_and_reserves_v1_calls | [FeesAndReservesAdaptorV1Calls](#steward-v4-FeesAndReservesAdaptorV1Calls) | | Represents function calls to the FeesAndReservesAdaptorV1 | +| zero_x_v1_calls | [ZeroXAdaptorV1Calls](#steward-v4-ZeroXAdaptorV1Calls) | | Represents functionc alls to the ZeroXAdaptorV1 | +| swap_with_uniswap_v1_calls | [SwapWithUniswapAdaptorV1Calls](#steward-v4-SwapWithUniswapAdaptorV1Calls) | | Represents function calls to the SwapWithUniswapAdaptorV1 | +| vesting_simple_v2_calls | [VestingSimpleAdaptorV2Calls](#steward-v4-VestingSimpleAdaptorV2Calls) | | Represents function calls to VestingSimpleAdaptor | +| cellar_v1_calls | [CellarAdaptorV1Calls](#steward-v4-CellarAdaptorV1Calls) | | Represents function calls to the CellarAdaptor | +| uniswap_v3_v2_calls | [UniswapV3AdaptorV2Calls](#steward-v4-UniswapV3AdaptorV2Calls) | | Represents function calls to the UniswapV3Adaptor V2 | +| aave_v2_enable_asset_as_collateral_v1_calls | [AaveV2EnableAssetAsCollateralAdaptorV1Calls](#steward-v4-AaveV2EnableAssetAsCollateralAdaptorV1Calls) | | Represents function calls to the AaveV2EnableAssetAsCollatorAdaptor V1 | +| f_token_v1_calls | [FTokenAdaptorV1Calls](#steward-v4-FTokenAdaptorV1Calls) | | Represents function calls to the FTokenAdaptor V1 | +| morpho_aave_v2_a_token_v1_calls | [MorphoAaveV2ATokenAdaptorV1Calls](#steward-v4-MorphoAaveV2ATokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2AToken V1 | +| morpho_aave_v2_debt_token_v1_calls | [MorphoAaveV2DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2DebtToken V1 | +| morpho_aave_v3_a_token_collateral_v1_calls | [MorphoAaveV3ATokenCollateralAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenCollateral V1 | +| morpho_aave_v3_a_token_p2p_v1_calls | [MorphoAaveV3ATokenP2PAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenP2P V1 | +| morpho_aave_v3_debt_token_v1_calls | [MorphoAaveV3DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3DebtToken V1 | +| legacy_cellar_v1_calls | [LegacyCellarAdaptorV1Calls](#steward-v4-LegacyCellarAdaptorV1Calls) | | Represents function calls to the LegacyCellarAdaptor V1 | +| debt_f_token_v1_calls | [DebtFTokenAdaptorV1Calls](#steward-v4-DebtFTokenAdaptorV1Calls) | | Represents function calls to the DebtFTokenAdaptor V1 | +| collateral_f_token_v1_calls | [CollateralFTokenAdaptorV1Calls](#steward-v4-CollateralFTokenAdaptorV1Calls) | | Represents function calls to the CollateralFTokenAdaptor V1 | +| convex_curve_v1_calls | [ConvexCurveAdaptorV1Calls](#steward-v4-ConvexCurveAdaptorV1Calls) | | Represents function calls for the ConvexCurveAdaptorV1 | +| curve_v1_calls | [CurveAdaptorV1Calls](#steward-v4-CurveAdaptorV1Calls) | | Represents function calls for the CurveAdaptorV1 | +| aura_erc4626_v1_calls | [AuraERC4626AdaptorV1Calls](#steward-v4-AuraERC4626AdaptorV1Calls) | | Represents function calls for the AuraERC4626AdaptorV1 | +| morpho_blue_collateral_v1_calls | [MorphoBlueCollateralAdaptorV1Calls](#steward-v4-MorphoBlueCollateralAdaptorV1Calls) | | Represents function calls for the MorphoBlueCollateralAdaptorV1 | +| morpho_blue_debt_v1_calls | [MorphoBlueDebtAdaptorV1Calls](#steward-v4-MorphoBlueDebtAdaptorV1Calls) | | Represents function calls for the MorphoBlueDebtAdaptorV1 | +| morpho_blue_supply_v1_calls | [MorphoBlueSupplyAdaptorV1Calls](#steward-v4-MorphoBlueSupplyAdaptorV1Calls) | | Represents function calls for the MorphoBlueSupplyAdaptorV1 | +| erc4626_v1_calls | [ERC4626AdaptorV1Calls](#steward-v4-ERC4626AdaptorV1Calls) | | Represents function calls for the ERC4626AdaptorV1 | +| staking_v1_calls | [StakingAdaptorV1Calls](#steward-v4-StakingAdaptorV1Calls) | | Represents function calls for the StakingAdaptorV1 | +| pendle_v1_calls | [PendleAdaptorV1Calls](#steward-v4-PendleAdaptorV1Calls) | | Represents function calls for the PendleAdaptorV1 | + + + + + + + + +### BalancerPoolAdaptorV1FlashLoan.MakeFlashLoan +Make a flash loan + +Represents `function makeFlashLoan(IERC20[] tokens, uint256[] amounts, bytes memory data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| tokens | [string](#string) | repeated | The tokens to flash loan | +| amounts | [string](#string) | repeated | The amounts to flash loan | +| data | [BalancerPoolAdaptorV1FlashLoan.AdaptorCallForBalancerPoolFlashLoan](#steward-v4-BalancerPoolAdaptorV1FlashLoan-AdaptorCallForBalancerPoolFlashLoan) | repeated | The data to flash loan | + + + + + + + + +### BalancerPoolAdaptorV1FlashLoanCalls + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| calls | [BalancerPoolAdaptorV1FlashLoan](#steward-v4-BalancerPoolAdaptorV1FlashLoan) | repeated | | + + + + + + + + + + + + + + + + + + +## base.proto + + + + + +### OracleSwap +Helper function to make safe "blind" Uniswap Swaps by comparing value in vs value out of the swap. + +Represents function `oracleSwap(ERC20 assetIn, ERC20 assetOut, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params, uint64 slippage)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| asset_in | [string](#string) | | Asset to swap from | +| asset_out | [string](#string) | | Asset to swap to | +| amount_in | [string](#string) | | Amount to swap | +| exchange | [Exchange](#steward-v4-Exchange) | | The exchange to make the swap on | +| params | [OracleSwapParams](#steward-v4-OracleSwapParams) | | The parameters for the swap | +| slippage | [uint64](#uint64) | | The slippage allowed for the swap | + + + + + + + + +### RevokeApproval +Allows strategists to zero out an approval for a given `asset`. + +Represents function `revokeApproval(ERC20 asset, address spender)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| asset | [string](#string) | | ERC20 Asset to revoke spender's approval for | +| spender | [string](#string) | | The spender to revoke approval of asset for | + + + + + + + + +### Swap +Helper function that allows swaps using the Swap Router + +Represents function `swap(ERC20 assetIn, ERC20 assetOut, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| asset_in | [string](#string) | | Asset to swap from | +| asset_out | [string](#string) | | Asset to swap to | +| amount_in | [string](#string) | | Amount to swap | +| exchange | [Exchange](#steward-v4-Exchange) | | The exchange to make the swap on | +| params | [SwapParams](#steward-v4-SwapParams) | | The parameters for the swap | + + + + + + + + + + + + + + + + + + +## c_token.proto + + + + + +### CompoundCTokenAdaptorV2 +Represents call data for the Compound C Token adaptor V2, managing lending positions on Compound. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| deposit_to_compound | [CompoundCTokenAdaptorV2.DepositToCompound](#steward-v4-CompoundCTokenAdaptorV2-DepositToCompound) | | Represents function `depositToCompound(CErc20 market, uint256 amountToDeposit)` | +| withdraw_from_compound | [CompoundCTokenAdaptorV2.WithdrawFromCompound](#steward-v4-CompoundCTokenAdaptorV2-WithdrawFromCompound) | | Represents function `withdrawFromCompound(CErc20 market, uint256 amountToWithdraw)` | +| claim_comp | [CompoundCTokenAdaptorV2.ClaimComp](#steward-v4-CompoundCTokenAdaptorV2-ClaimComp) | | Represents function `claimComp()` | + + + + + + + + +### CompoundCTokenAdaptorV2.ClaimComp +Allows strategists to claim COMP rewards. + +Represents function `claimComp()` + + + + + + + + +### CompoundCTokenAdaptorV2.DepositToCompound +Allows strategists to lend assets on Compound. + +Represents function `depositToCompound(CErc20 market, uint256 amountToDeposit)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| market | [string](#string) | | | +| amount_to_deposit | [string](#string) | | | + + + + + + + + +### CompoundCTokenAdaptorV2.WithdrawFromCompound +Allows strategists to withdraw assets from Compound. + +Represents function `withdrawFromCompound(CErc20 market, uint256 amountToWithdraw)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| market | [string](#string) | | | +| amount_to_withdraw | [string](#string) | | | + + + + + + + + +### CompoundCTokenAdaptorV2Calls + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| calls | [CompoundCTokenAdaptorV2](#steward-v4-CompoundCTokenAdaptorV2) | repeated | | + + + + + + + + + + + + + + + + + + +## cellar_adaptor.proto + + + + + +### CellarAdaptorV1 + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| depositToCellar | [CellarAdaptorV1.DepositToCellar](#steward-v4-CellarAdaptorV1-DepositToCellar) | | Represents function `depositToCellar(Cellar cellar, uint256 assets)` | +| withdrawFromCellar | [CellarAdaptorV1.WithdrawFromCellar](#steward-v4-CellarAdaptorV1-WithdrawFromCellar) | | Represents function `withdrawFromCellar(Cellar cellar, uint256 assets)` | + + + + + + + + +### CellarAdaptorV1.DepositToCellar +Allows strategists to deposit into Cellar positions. + +Represents function `depositToCellar(Cellar cellar, uint256 assets)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cellar | [string](#string) | | | +| assets | [string](#string) | | | + + + + + + + + +### CellarAdaptorV1.WithdrawFromCellar +Allows strategists to withdraw from Cellar positions. + +Represents function `withdrawFromCellar(Cellar cellar, uint256 assets)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cellar | [string](#string) | | | +| assets | [string](#string) | | | + + + + + + + + +### CellarAdaptorV1Calls + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| calls | [CellarAdaptorV1](#steward-v4-CellarAdaptorV1) | repeated | | + + + + + + + + + + + + + + + + + + +## cellar_v1.proto + + + + + +### CellarV1 +Represents a function call to a cellar that implements Cellar.sol + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| add_position | [CellarV1.AddPosition](#steward-v4-CellarV1-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | +| push_position | [CellarV1.PushPosition](#steward-v4-CellarV1-PushPosition) | | Represents function `pushPosition(address position)` | +| remove_position | [CellarV1.RemovePosition](#steward-v4-CellarV1-RemovePosition) | | Represents function `removePosition(uint256 index)` | +| set_holding_position | [CellarV1.SetHoldingPosition](#steward-v4-CellarV1-SetHoldingPosition) | | Represents function `setHoldingPosition(address newHoldingPosition)` | +| rebalance | [CellarV1.Rebalance](#steward-v4-CellarV1-Rebalance) | | Represents function `rebalance(address fromPosition, address toPosition, uint256 assetsFrom, SwapRouter.Exchange exchange, bytes calldata params)` | +| set_strategist_payout_address | [CellarV1.SetStrategistPayoutAddress](#steward-v4-CellarV1-SetStrategistPayoutAddress) | | Represents function `setStrategistPayoutAddress(address payout)` | +| set_withdraw_type | [CellarV1.SetWithdrawType](#steward-v4-CellarV1-SetWithdrawType) | | Represents function `setWithdrawType(WithdrawType newWithdrawType)` | +| swap_positions | [CellarV1.SwapPositions](#steward-v4-CellarV1-SwapPositions) | | Represents function `swapPositions(uint256 index1, uint256 index2)` | +| set_deposit_limit | [CellarV1.SetDepositLimit](#steward-v4-CellarV1-SetDepositLimit) | | Represents function `setDepositLimit()` | +| set_liquidity_limit | [CellarV1.SetLiquidityLimit](#steward-v4-CellarV1-SetLiquidityLimit) | | Represents function `setLiquidityLimit()` | +| set_share_lock_period | [CellarV1.SetShareLockPeriod](#steward-v4-CellarV1-SetShareLockPeriod) | | Represents function `setShareLockPeriod()` | +| set_rebalance_deviation | [CellarV1.SetRebalanceDeviation](#steward-v4-CellarV1-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint256)` | + + + + + + + + +### CellarV1.AddPosition +Insert a trusted position to the list of positions used by the cellar at a given index. + +Represents function `addPosition(uint256 index, address position)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [string](#string) | | Index at which to add the position | +| position | [string](#string) | | Address of the position to add | + + + + + + + + +### CellarV1.PushPosition +Push a trusted position to the end of the list of positions used by the cellar. If you +know you are going to add a position to the end of the array, this is more efficient then +`addPosition`. + +Represents function `pushPosition(address position)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position | [string](#string) | | Address of the position to push | + + + + + + + + +### CellarV1.Rebalance +Move assets between positions. To move assets from/to this cellar's holdings, specify +the address of this cellar as the `fromPosition`/`toPosition`. + +Represents function `rebalance(address fromPosition, address toPosition, + uint256 assetsFrom, SwapRouter.Exchange exchange, bytes calldata params) + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| from_position | [string](#string) | | | +| to_position | [string](#string) | | | +| assets_from | [string](#string) | | | +| exchange | [Exchange](#steward-v4-Exchange) | | | +| params | [SwapParams](#steward-v4-SwapParams) | | | + + + + + + + + +### CellarV1.RemovePosition +Remove the position at a given index from the list of positions used by the cellar. + +Represents function `removePosition(uint256 index)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [string](#string) | | Index at which to remove the position | + + + + + + + + +### CellarV1.SetDepositLimit +Set the per-wallet deposit limit. Uses the same decimals as the current asset. + +Represents function `setDepositLimit()` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_limit | [string](#string) | | | + + + + + + + + +### CellarV1.SetHoldingPosition +Set the holding position used by the cellar. + +Represents function `setHoldingPosition(address newHoldingPosition)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_holding_position | [string](#string) | | Address of the new holding position to use | + + + + + + + + +### CellarV1.SetLiquidityLimit +Set the maximum liquidity that cellar can manage. Uses the same decimals as the current asset. + +Represents function `setLiquidityLimit()` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_limit | [string](#string) | | | + + + + + + + + +### CellarV1.SetRebalanceDeviation +Represents function `setRebalanceDeviation(uint256)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_deviation | [string](#string) | | | + + + + + + + + +### CellarV1.SetShareLockPeriod +Allows share lock period to be updated. + +Represents function `setShareLockPeriod()` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_lock | [string](#string) | | | + + + + + + + + +### CellarV1.SetStrategistPayoutAddress +Sets the Strategists payout address. + +Represents function `setStrategistPayoutAddress(address payout)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| payout | [string](#string) | | | + + + + + + + + +### CellarV1.SetWithdrawType +Set the withdraw type used by the cellar. + +Represents function `setWithdrawType(WithdrawType newWithdrawType)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_withdraw_type | [CellarV1.WithdrawType](#steward-v4-CellarV1-WithdrawType) | | The withdraw type to use for the cellar | + + + + + + + + +### CellarV1.SwapPositions +Swap the positions at two given indeces. + +Represents function `swapPositions(uint256 index1, uint256 index2)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index_1 | [string](#string) | | Index of the first position | +| index_2 | [string](#string) | | Index of the second position | + + + + + + + + +### CellarV1Governance +Represent a function call initiated through a governance proposal + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| initiate_shutdown | [CellarV1Governance.InitiateShutdown](#steward-v4-CellarV1Governance-InitiateShutdown) | | Represents function `initiateShutdown()` | +| lift_shutdown | [CellarV1Governance.LiftShutdown](#steward-v4-CellarV1Governance-LiftShutdown) | | Represents function `liftShutdown()` | +| reset_high_watermark | [CellarV1Governance.ResetHighWatermark](#steward-v4-CellarV1Governance-ResetHighWatermark) | | Represents function `resetHighWatermark()` | +| set_fees_distributor | [CellarV1Governance.SetFeesDistributor](#steward-v4-CellarV1Governance-SetFeesDistributor) | | Represents function `setFeesDistributor(address)` | +| set_performance_fee | [CellarV1Governance.SetPerformanceFee](#steward-v4-CellarV1Governance-SetPerformanceFee) | | Represents function `setPerformanceFee(uint256)` | +| set_platform_fee | [CellarV1Governance.SetPlatformFee](#steward-v4-CellarV1Governance-SetPlatformFee) | | Represents function `setPlatformFee(uint256)` | +| set_strategist_performance_cut | [CellarV1Governance.SetStrategistPerformanceCut](#steward-v4-CellarV1Governance-SetStrategistPerformanceCut) | | Represents function `setStrategistPerformanceCut(uint256)` | +| set_strategist_platform_cut | [CellarV1Governance.SetStrategistPlatformCut](#steward-v4-CellarV1Governance-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(address)` | +| trust_position | [CellarV1Governance.TrustPosition](#steward-v4-CellarV1Governance-TrustPosition) | | Represents function `trustPosition(address)` | + + + + + + + + +### CellarV1Governance.InitiateShutdown +Represents function `initiateShutdown()` + + + + + + + + +### CellarV1Governance.LiftShutdown +Represents function `liftShutdown()` + + + + + + + + +### CellarV1Governance.ResetHighWatermark +Represents function `resetHighWatermark()` + + + + + + + + +### CellarV1Governance.SetFeesDistributor +Represents function `setFeesDistributor(bytes32)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_fees_distributor | [string](#string) | | Cosmos address of the new fees distributor | + + + + + + + + +### CellarV1Governance.SetPerformanceFee +Represents function `setPerformanceFee(uint64)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [uint64](#uint64) | | New performance fee | + + + + + + + + +### CellarV1Governance.SetPlatformFee +Represents function `setPlatformFee(uint64)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [uint64](#uint64) | | New platform fee | + + + + + + + + +### CellarV1Governance.SetStrategistPerformanceCut +Represents function `setStrategistPerformanceCut(uint64)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [uint64](#uint64) | | New strategist performance cut | + + + + + + + + +### CellarV1Governance.SetStrategistPlatformCut +Represents function `setStrategistPlatformCut(uint64)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [uint64](#uint64) | | New strategist platform cut | + + + + + + + + +### CellarV1Governance.TrustPosition +Represents function `trustPosition(address)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| erc20_address | [string](#string) | | | +| erc4626_address | [string](#string) | | | +| cellar_address | [string](#string) | | | + + + + + + + + + + +### CellarV1.WithdrawType +Represents the withdraw type to use for the cellar + +| Name | Number | Description | +| ---- | ------ | ----------- | +| WITHDRAW_TYPE_UNSPECIFIED | 0 | | +| WITHDRAW_TYPE_ORDERLY | 1 | | +| WITHDRAW_TYPE_PROPORTIONAL | 2 | | + + + + + + + + + + + + + +## cellar_v2.proto + + + + + +### AdaptorCall +Represents a call to adaptor an. The cellar must be authorized to call the target adaptor. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | Address of the adaptor | +| aave_a_token_v1_calls | [AaveATokenAdaptorV1Calls](#steward-v4-AaveATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenAdaptor V1 | +| aave_debt_token_v1_calls | [AaveDebtTokenAdaptorV1Calls](#steward-v4-AaveDebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenAdaptor V1 | +| compound_c_token_v2_calls | [CompoundCTokenAdaptorV2Calls](#steward-v4-CompoundCTokenAdaptorV2Calls) | | Represents function calls to the CompoundCTokenAdaptor V2 | +| aave_a_token_v2_calls | [AaveATokenAdaptorV2Calls](#steward-v4-AaveATokenAdaptorV2Calls) | | Represents function calls to the AaveATokenV2Adaptor | +| aave_debt_token_v2_calls | [AaveDebtTokenAdaptorV2Calls](#steward-v4-AaveDebtTokenAdaptorV2Calls) | | Represents function calls to the AavaDebtTokenV2Adaptor | +| aave_v3_a_token_v1_calls | [AaveV3ATokenAdaptorV1Calls](#steward-v4-AaveV3ATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenV1Adaptor | +| aave_v3_debt_token_v1_calls | [AaveV3DebtTokenAdaptorV1Calls](#steward-v4-AaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenV1Adaptor | +| one_inch_v1_calls | [OneInchAdaptorV1Calls](#steward-v4-OneInchAdaptorV1Calls) | | Represents function calls to the OneInchAdaptorV1 | +| fees_and_reserves_v1_calls | [FeesAndReservesAdaptorV1Calls](#steward-v4-FeesAndReservesAdaptorV1Calls) | | Represents function calls to the FeesAndReservesAdaptorV1 | +| zero_x_v1_calls | [ZeroXAdaptorV1Calls](#steward-v4-ZeroXAdaptorV1Calls) | | Represents functionc alls to the ZeroXAdaptorV1 | +| swap_with_uniswap_v1_calls | [SwapWithUniswapAdaptorV1Calls](#steward-v4-SwapWithUniswapAdaptorV1Calls) | | Represents function calls to the SwapWithUniswapAdaptorV1 | +| vesting_simple_v2_calls | [VestingSimpleAdaptorV2Calls](#steward-v4-VestingSimpleAdaptorV2Calls) | | Represents function calls to VestingSimpleAdaptor | +| cellar_v1_calls | [CellarAdaptorV1Calls](#steward-v4-CellarAdaptorV1Calls) | | Represents function calls to the CellarAdaptor | +| uniswap_v3_v2_calls | [UniswapV3AdaptorV2Calls](#steward-v4-UniswapV3AdaptorV2Calls) | | Represents function calls to the UniswapV3Adaptor V2 | +| aave_v2_enable_asset_as_collateral_v1_calls | [AaveV2EnableAssetAsCollateralAdaptorV1Calls](#steward-v4-AaveV2EnableAssetAsCollateralAdaptorV1Calls) | | Represents function calls to the AaveV2EnableAssetAsCollatorAdaptor V1 | +| f_token_v1_calls | [FTokenAdaptorV1Calls](#steward-v4-FTokenAdaptorV1Calls) | | Represents function calls to the FTokenAdaptor V1 | +| morpho_aave_v2_a_token_v1_calls | [MorphoAaveV2ATokenAdaptorV1Calls](#steward-v4-MorphoAaveV2ATokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2AToken V1 | +| morpho_aave_v2_debt_token_v1_calls | [MorphoAaveV2DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2DebtToken V1 | +| morpho_aave_v3_a_token_collateral_v1_calls | [MorphoAaveV3ATokenCollateralAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenCollateral V1 | +| morpho_aave_v3_a_token_p2p_v1_calls | [MorphoAaveV3ATokenP2PAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenP2P V1 | +| morpho_aave_v3_debt_token_v1_calls | [MorphoAaveV3DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3DebtToken V1 | +| balancer_pool_v1_calls | [BalancerPoolAdaptorV1Calls](#steward-v4-BalancerPoolAdaptorV1Calls) | | Represents function calls to the BalancerPoolAdaptor V1 | +| legacy_cellar_v1_calls | [LegacyCellarAdaptorV1Calls](#steward-v4-LegacyCellarAdaptorV1Calls) | | Represents function calls to the LegacyCellarAdaptor V1 | +| debt_f_token_v1_calls | [DebtFTokenAdaptorV1Calls](#steward-v4-DebtFTokenAdaptorV1Calls) | | Represents function calls to the DebtFTokenAdaptor V1 | +| collateral_f_token_v1_calls | [CollateralFTokenAdaptorV1Calls](#steward-v4-CollateralFTokenAdaptorV1Calls) | | Represents function calls to the CollateralFTokenAdaptor V1 | +| aave_v3_debt_token_v1_flash_loan_calls | [AaveV3DebtTokenAdaptorV1FlashLoanCalls](#steward-v4-AaveV3DebtTokenAdaptorV1FlashLoanCalls) | | Represents function call for the AaveV3DebtTokenAdaptorV1 | +| balancer_pool_v1_flash_loan_calls | [BalancerPoolAdaptorV1FlashLoanCalls](#steward-v4-BalancerPoolAdaptorV1FlashLoanCalls) | | Represents function call for the BalancerPoolAdaptorV1 | +| convex_curve_v1_calls | [ConvexCurveAdaptorV1Calls](#steward-v4-ConvexCurveAdaptorV1Calls) | | Represents function calls for the ConvexCurveAdaptorV1 | +| curve_v1_calls | [CurveAdaptorV1Calls](#steward-v4-CurveAdaptorV1Calls) | | Represents function calls for the CurveAdaptorV1 | +| aura_erc4626_v1_calls | [AuraERC4626AdaptorV1Calls](#steward-v4-AuraERC4626AdaptorV1Calls) | | Represents function calls for the AuraERC4626AdaptorV1 | +| morpho_blue_collateral_v1_calls | [MorphoBlueCollateralAdaptorV1Calls](#steward-v4-MorphoBlueCollateralAdaptorV1Calls) | | Represents function calls for the MorphoBlueCollateralAdaptorV1 | +| morpho_blue_debt_v1_calls | [MorphoBlueDebtAdaptorV1Calls](#steward-v4-MorphoBlueDebtAdaptorV1Calls) | | Represents function calls for the MorphoBlueDebtAdaptorV1 | +| morpho_blue_supply_v1_calls | [MorphoBlueSupplyAdaptorV1Calls](#steward-v4-MorphoBlueSupplyAdaptorV1Calls) | | Represents function calls for the MorphoBlueSupplyAdaptorV1 | +| erc4626_v1_calls | [ERC4626AdaptorV1Calls](#steward-v4-ERC4626AdaptorV1Calls) | | Represents function calls for the ERC4626AdaptorV1 | +| staking_v1_calls | [StakingAdaptorV1Calls](#steward-v4-StakingAdaptorV1Calls) | | Represents function calls for the StakingAdaptorV1 | +| pendle_v1_calls | [PendleAdaptorV1Calls](#steward-v4-PendleAdaptorV1Calls) | | Represents function calls for the PendleAdaptorV1 | + + + + + + + + +### CellarV2 +Represents a function call to a cellar that implements Cellar.sol + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| call_on_adaptor | [CellarV2.CallOnAdaptor](#steward-v4-CellarV2-CallOnAdaptor) | | Represents function `callOnAdaptor(AdaptorCall[] memory data)` | +| remove_position | [CellarV2.RemovePosition](#steward-v4-CellarV2-RemovePosition) | | Represents function `removePosition(uint256 index)` | +| set_holding_position | [CellarV2.SetHoldingPosition](#steward-v4-CellarV2-SetHoldingPosition) | | Represents function `setHoldingPosition(uint32 position_id)` | +| set_strategist_payout_address | [CellarV2.SetStrategistPayoutAddress](#steward-v4-CellarV2-SetStrategistPayoutAddress) | | Represents function `setStrategistPayoutAddress(address payout)` | +| swap_positions | [CellarV2.SwapPositions](#steward-v4-CellarV2-SwapPositions) | | Represents function `swapPositions(uint256 index1, uint256 index2)` | +| set_share_lock_period | [CellarV2.SetShareLockPeriod](#steward-v4-CellarV2-SetShareLockPeriod) | | Represents function `setShareLockPeriod(uint256 newLock)` | +| add_position | [CellarV2.AddPosition](#steward-v4-CellarV2-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | +| setup_adaptor | [CellarV2.SetupAdaptor](#steward-v4-CellarV2-SetupAdaptor) | | Represents function `setupAdaptor(address adaptor)` | +| initiate_shutdown | [CellarV2.InitiateShutdown](#steward-v4-CellarV2-InitiateShutdown) | | Represents function `initiateShutdown()` | +| lift_shutdown | [CellarV2.LiftShutdown](#steward-v4-CellarV2-LiftShutdown) | | Represents function `liftShutdown()` | +| set_platform_fee | [CellarV2.SetPlatformFee](#steward-v4-CellarV2-SetPlatformFee) | | Represents function `setPlatformFee(uint256)` | +| set_strategist_platform_cut | [CellarV2.SetStrategistPlatformCut](#steward-v4-CellarV2-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(address)` | +| set_rebalance_deviation | [CellarV2.SetRebalanceDeviation](#steward-v4-CellarV2-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint256)` | + + + + + + + + +### CellarV2.AddPosition +Insert a trusted position to the list of positions used by the cellar at a given index. + +Represents function `addPosition(uint32 index, uint32 positionId, bytes configurationData, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to add the position | +| position_id | [uint32](#uint32) | | The position's ID in the cellar registry | +| configuration_data | [bytes](#bytes) | | Data used to configure how the position behaves | +| in_debt_array | [bool](#bool) | | Whether to add position in the debt array, or the credit array. | + + + + + + + + +### CellarV2.CallOnAdaptor +Allows strategists to manage their Cellar using arbitrary logic calls to adaptors. + +Represents function `callOnAdaptor(AdaptorCall[] memory data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| data | [AdaptorCall](#steward-v4-AdaptorCall) | repeated | | + + + + + + + + +### CellarV2.InitiateShutdown +Represents function `initiateShutdown()` + + + + + + + + +### CellarV2.LiftShutdown +Represents function `liftShutdown()` + + + + + + + + +### CellarV2.RemovePosition +Remove the position at a given index from the list of positions used by the cellar. + +Represents function `removePosition(uint32 index, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to remove the position | +| in_debt_array | [bool](#bool) | | Whether to remove position from the debt array, or the credit array. | + + + + + + + + +### CellarV2.SetHoldingPosition +Set the holding position used of the cellar. + +Represents function `setHoldingIndex(uint8 index)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | ID (index) of the new holding position to use | + + + + + + + + +### CellarV2.SetPlatformFee +Represents function `setPlatformFee(uint64)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [uint64](#uint64) | | New platform fee | + + + + + + + + +### CellarV2.SetRebalanceDeviation +Changes the cellar's allowed rebalance deviation, which is the percent the total assets of a cellar may deviate +during a `callOnAdaptor`(rebalance) call. The maximum allowed deviation is 100000000000000000 (0.1e18), or 10%. + +Represents function `setRebalanceDeviation(uint256)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_deviation | [string](#string) | | | + + + + + + + + +### CellarV2.SetShareLockPeriod +Allows share lock period to be updated. + +Represents function `setShareLockPeriod()` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_lock | [string](#string) | | | + + + + + + + + +### CellarV2.SetStrategistPayoutAddress +Sets the Strategists payout address. + +Represents function `setStrategistPayoutAddress(address payout)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| payout | [string](#string) | | | + + + + + + + + +### CellarV2.SetStrategistPlatformCut +Represents function `setStrategistPlatformCut(uint64)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [uint64](#uint64) | | New strategist platform cut | + + + + + + + + +### CellarV2.SetupAdaptor +Allows owner to add new adaptors for the cellar to use. + +Represents function `setupAdaptor(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | Address of the adaptor | + + + + + + + + +### CellarV2.SwapPositions +Swap the positions at two given indeces. + +Represents function `swapPositions(uint32 index1, uint32 index2)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index_1 | [uint32](#uint32) | | Index of the first position | +| index_2 | [uint32](#uint32) | | Index of the second position | +| in_debt_array | [bool](#bool) | | Whether to switch positions in the debt array, or the credit array. | + + + + + + + + +### CellarV2Governance +Represent a function call initiated through a governance proposal + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| initiate_shutdown | [CellarV2Governance.InitiateShutdown](#steward-v4-CellarV2Governance-InitiateShutdown) | | Represents function `initiateShutdown()` | +| lift_shutdown | [CellarV2Governance.LiftShutdown](#steward-v4-CellarV2Governance-LiftShutdown) | | Represents function `liftShutdown()` | +| set_platform_fee | [CellarV2Governance.SetPlatformFee](#steward-v4-CellarV2Governance-SetPlatformFee) | | Represents function `setPlatformFee(uint256)` | +| set_strategist_platform_cut | [CellarV2Governance.SetStrategistPlatformCut](#steward-v4-CellarV2Governance-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(address)` | +| setup_adaptor | [CellarV2Governance.SetupAdaptor](#steward-v4-CellarV2Governance-SetupAdaptor) | | Represents function `setupAdaptor(address adaptor)` | +| set_rebalance_deviation | [CellarV2Governance.SetRebalanceDeviation](#steward-v4-CellarV2Governance-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint256)` | + + + + + + + + +### CellarV2Governance.InitiateShutdown +Represents function `initiateShutdown()` + + + + + + + + +### CellarV2Governance.LiftShutdown +Represents function `liftShutdown()` + + + + + + + + +### CellarV2Governance.SetPlatformFee +Represents function `setPlatformFee(uint64)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [uint64](#uint64) | | New platform fee | + + + + + + + + +### CellarV2Governance.SetRebalanceDeviation +Changes the cellar's allowed rebalance deviation, which is the percent the total assets of a cellar may deviate +during a `callOnAdaptor`(rebalance) call. The maximum allowed deviation is 100000000000000000 (0.1e18), or 10%. + +Represents function `setRebalanceDeviation(uint256)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_deviation | [string](#string) | | | + + + + + + + + +### CellarV2Governance.SetStrategistPlatformCut +Represents function `setStrategistPlatformCut(uint64)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [uint64](#uint64) | | New strategist platform cut | + + + + + + + + +### CellarV2Governance.SetupAdaptor +Allows owner to add new adaptors for the cellar to use. + +Represents function `setupAdaptor(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | Address of the adaptor | + + + + + + + + +### CellarV2_2 + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| function_call | [CellarV2_2.FunctionCall](#steward-v4-CellarV2_2-FunctionCall) | | Represents a single function call | +| multicall | [CellarV2_2.Multicall](#steward-v4-CellarV2_2-Multicall) | | Represents multiple, ordered function calls | + + + + + + + + +### CellarV2_2.AddAdaptorToCatalogue +Allows the owner to add an adaptor to the Cellar's adaptor catalogue + +Represents function `addAdaptorToCatalogue(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | | + + + + + + + + +### CellarV2_2.AddPosition +Insert a trusted position to the list of positions used by the cellar at a given index. + +Represents function `addPosition(uint32 index, uint32 positionId, bytes configurationData, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to add the position | +| position_id | [uint32](#uint32) | | The position's ID in the cellar registry | +| configuration_data | [bytes](#bytes) | | Data used to configure how the position behaves | +| in_debt_array | [bool](#bool) | | Whether to add position in the debt array, or the credit array. | + + + + + + + + +### CellarV2_2.AddPositionToCatalogue +Allows the owner to add a position to the Cellar's position catalogue + +Represents function `addPositionToCatalogue(uint32 positionId)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | | + + + + + + + + +### CellarV2_2.CachePriceRouter +Updates the cellar to use the latest price router in the registry. + +Represents function `cachePriceRouter(bool checkTotalAssets, uint16 allowableRange, address expectedPriceRouter)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| check_total_assets | [bool](#bool) | | Whether to check the total assets of the cellar | +| allowable_range | [uint32](#uint32) | | The allowable range of the cellar's total assets to deviate between old and new routers | +| expected_price_router | [string](#string) | | The expected price router address | + + + + + + + + +### CellarV2_2.CallOnAdaptor +Allows strategists to manage their Cellar using arbitrary logic calls to adaptors. + +Represents function `callOnAdaptor(AdaptorCall[] memory data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| data | [AdaptorCall](#steward-v4-AdaptorCall) | repeated | | + + + + + + + + +### CellarV2_2.FunctionCall +The function you wish to execute on the target cellar + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| add_position | [CellarV2_2.AddPosition](#steward-v4-CellarV2_2-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | +| call_on_adaptor | [CellarV2_2.CallOnAdaptor](#steward-v4-CellarV2_2-CallOnAdaptor) | | Represents function `callOnAdaptor(AdaptorCall[] memory data)` | +| remove_position | [CellarV2_2.RemovePosition](#steward-v4-CellarV2_2-RemovePosition) | | Represents function `removePosition(uint256 index, bool inDebtArray)` | +| remove_adaptor_from_catalogue | [CellarV2_2.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_2-RemoveAdaptorFromCatalogue) | | Represents function `removeAdaptorFromCatalogue(address adaptor)` | +| remove_position_from_catalogue | [CellarV2_2.RemovePositionFromCatalogue](#steward-v4-CellarV2_2-RemovePositionFromCatalogue) | | Represents function `removePositionFromCatalogue(uint32 positionId)` | +| set_holding_position | [CellarV2_2.SetHoldingPosition](#steward-v4-CellarV2_2-SetHoldingPosition) | | Represents function `setHoldingPosition(uint32 position_id)` | +| set_strategist_payout_address | [CellarV2_2.SetStrategistPayoutAddress](#steward-v4-CellarV2_2-SetStrategistPayoutAddress) | | Represents function `setStrategistPayoutAddress(address payout)` | +| swap_positions | [CellarV2_2.SwapPositions](#steward-v4-CellarV2_2-SwapPositions) | | Represents function `swapPositions(uint256 index1, uint256 index2)` | +| add_adaptor_to_catalogue | [CellarV2_2.AddAdaptorToCatalogue](#steward-v4-CellarV2_2-AddAdaptorToCatalogue) | | Represents function `addAdaptorToCatalogue(address adaptor)` | +| add_position_to_catalogue | [CellarV2_2.AddPositionToCatalogue](#steward-v4-CellarV2_2-AddPositionToCatalogue) | | Represents function `addPositionToCatalogue(uint32 positionId)` | +| set_rebalance_deviation | [CellarV2_2.SetRebalanceDeviation](#steward-v4-CellarV2_2-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint256)` | +| set_share_lock_period | [CellarV2_2.SetShareLockPeriod](#steward-v4-CellarV2_2-SetShareLockPeriod) | | Represents function `setShareLockPeriod(uint256 newLock)` | +| set_strategist_platform_cut | [CellarV2_2.SetStrategistPlatformCut](#steward-v4-CellarV2_2-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(uint64 cut)` | +| initiate_shutdown | [CellarV2_2.InitiateShutdown](#steward-v4-CellarV2_2-InitiateShutdown) | | Represents function `initiateShutdown()` | +| lift_shutdown | [CellarV2_2.LiftShutdown](#steward-v4-CellarV2_2-LiftShutdown) | | Represents function `liftShutdown()` | +| cache_price_router | [CellarV2_2.CachePriceRouter](#steward-v4-CellarV2_2-CachePriceRouter) | | Represents function `cachePriceRouter(bool checkTotalAssets, uint16 allowableRange, address expectedPriceRouter)` | + + + + + + + + +### CellarV2_2.InitiateShutdown +Shutdown the cellar. Used in an emergency or if the cellar has been deprecated. + +Represents function `initiateShutdown()` + + + + + + + + +### CellarV2_2.LiftShutdown +Allows the owner to restart a shut down Cellar + +Represents function `liftShutdown()` + + + + + + + + +### CellarV2_2.Multicall +Allows caller to call multiple functions in a single TX. + +Represents function `multicall(bytes[] data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| function_calls | [CellarV2_2.FunctionCall](#steward-v4-CellarV2_2-FunctionCall) | repeated | | + + + + + + + + +### CellarV2_2.RemoveAdaptorFromCatalogue +Allows callers to remove adaptors from this cellar's catalogue + +Represents function `removeAdaptorFromCatalogue(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | | + + + + + + + + +### CellarV2_2.RemovePosition +Remove the position at a given index from the list of positions used by the cellar. + +Represents function `removePosition(uint32 index, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to remove the position | +| in_debt_array | [bool](#bool) | | Whether to remove position from the debt array, or the credit array. | + + + + + + + + +### CellarV2_2.RemovePositionFromCatalogue +Allows caller to remove positions from this cellar's catalogue + +Represents function `removePositionFromCatalogue(uint32 positionId)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | | + + + + + + + + +### CellarV2_2.SetHoldingPosition +Set the holding position used of the cellar. + +Represents function `setHoldingIndex(uint8 index)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | ID (index) of the new holding position to use | + + + + + + + + +### CellarV2_2.SetRebalanceDeviation +Changes the cellar's allowed rebalance deviation, which is the percent the total assets of a cellar may deviate +during a `callOnAdaptor`(rebalance) call. The maximum allowed deviation is 100000000000000000 (0.1e18), or 10%. + +Represents function `setRebalanceDeviation(uint256)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_deviation | [string](#string) | | | + + + + + + + + +### CellarV2_2.SetShareLockPeriod +Allows share lock period to be updated. + +Represents function `setShareLockPeriod()` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_lock | [string](#string) | | | + + + + + + + + +### CellarV2_2.SetStrategistPayoutAddress +Sets the Strategists payout address. + +Represents function `setStrategistPayoutAddress(address payout)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| payout | [string](#string) | | | + + + + + + + + +### CellarV2_2.SetStrategistPlatformCut +Allows strategist to set the platform cut for the cellar. + +Represents function `setStrategistPlatformCut(uint64 cut)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_cut | [uint64](#uint64) | | The new strategist platform cut | + + + + + + + + +### CellarV2_2.SwapPositions +Swap the positions at two given indeces. + +Represents function `swapPositions(uint32 index1, uint32 index2)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index_1 | [uint32](#uint32) | | Index of the first position | +| index_2 | [uint32](#uint32) | | Index of the second position | +| in_debt_array | [bool](#bool) | | Whether to switch positions in the debt array, or the credit array. | + + + + + + + + +### CellarV2_2Governance +Represent a function call initiated through a governance proposal + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| function_call | [CellarV2_2Governance.FunctionCall](#steward-v4-CellarV2_2Governance-FunctionCall) | | Represents a single function call | +| multicall | [CellarV2_2Governance.Multicall](#steward-v4-CellarV2_2Governance-Multicall) | | Represents multiple, ordered function calls | + + + + + + + + +### CellarV2_2Governance.AddAdaptorToCatalogue +Allows the owner to add an adaptor to the Cellar's adaptor catalogue + +Represents function `addAdaptorToCatalogue(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | | + + + + + + + + +### CellarV2_2Governance.AddPosition +Insert a trusted position to the list of positions used by the cellar at a given index. + +Represents function `addPosition(uint32 index, uint32 positionId, bytes configurationData, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to add the position | +| position_id | [uint32](#uint32) | | The position's ID in the cellar registry | +| configuration_data | [bytes](#bytes) | | Data used to configure how the position behaves | +| in_debt_array | [bool](#bool) | | Whether to add position in the debt array, or the credit array. | + + + + + + + + +### CellarV2_2Governance.AddPositionToCatalogue +Allows the owner to add a position to the Cellar's position catalogue + +Represents function `addPositionToCatalogue(uint32 positionId)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | | + + + + + + + + +### CellarV2_2Governance.CachePriceRouter +Updates the cellar to use the latest price router in the registry. + +Represents function `cachePriceRouter(bool checkTotalAssets, uint16 allowableRange, address expectedPriceRouter)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| check_total_assets | [bool](#bool) | | Whether to check the total assets of the cellar | +| allowable_range | [uint32](#uint32) | | The allowable range of the cellar's total assets to deviate between old and new routers | +| expected_price_router | [string](#string) | | The expected price router address | + + + + + + + + +### CellarV2_2Governance.CallOnAdaptor +Allows strategists to manage their Cellar using arbitrary logic calls to adaptors. + +Represents function `callOnAdaptor(AdaptorCall[] memory data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| data | [AdaptorCall](#steward-v4-AdaptorCall) | repeated | | + + + + + + + + +### CellarV2_2Governance.ForcePositionOut +Allows caller to force a position out of the cellar + +Represents function `forcePositionOut(uint32 index, uint32 positionId, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | | +| position_id | [uint32](#uint32) | | | +| in_debt_array | [bool](#bool) | | | + + + + + + + + +### CellarV2_2Governance.FunctionCall +The function you wish to execute on the target cellar + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| add_adaptor_to_catalogue | [CellarV2_2Governance.AddAdaptorToCatalogue](#steward-v4-CellarV2_2Governance-AddAdaptorToCatalogue) | | Represents function `addAdaptorToCatalogue(address adaptor)` | +| add_position_to_catalogue | [CellarV2_2Governance.AddPositionToCatalogue](#steward-v4-CellarV2_2Governance-AddPositionToCatalogue) | | Represents function `addPositionToCatalogue(uint32 positionId)` | +| set_rebalance_deviation | [CellarV2_2Governance.SetRebalanceDeviation](#steward-v4-CellarV2_2Governance-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint256)` | +| set_share_lock_period | [CellarV2_2Governance.SetShareLockPeriod](#steward-v4-CellarV2_2Governance-SetShareLockPeriod) | | Represents function `setShareLockPeriod(uint256 newLock)` | +| set_strategist_platform_cut | [CellarV2_2Governance.SetStrategistPlatformCut](#steward-v4-CellarV2_2Governance-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(uint64 cut)` | +| initiate_shutdown | [CellarV2_2Governance.InitiateShutdown](#steward-v4-CellarV2_2Governance-InitiateShutdown) | | Represents function `initiateShutdown()` | +| lift_shutdown | [CellarV2_2Governance.LiftShutdown](#steward-v4-CellarV2_2Governance-LiftShutdown) | | Represents function `liftShutdown()` | +| force_position_out | [CellarV2_2Governance.ForcePositionOut](#steward-v4-CellarV2_2Governance-ForcePositionOut) | | Represents function `forcePositionOut(uint32 index, uint32 positionId, bool inDebtArray)` | +| toggle_ignore_pause | [CellarV2_2Governance.ToggleIgnorePause](#steward-v4-CellarV2_2Governance-ToggleIgnorePause) | | Represents function `toggleIgnorePause(bool ignore)` | +| cache_price_router | [CellarV2_2Governance.CachePriceRouter](#steward-v4-CellarV2_2Governance-CachePriceRouter) | | Represents function `cachePriceRouter(bool checkTotalAssets, uint16 allowableRange, address expectedPriceRouter)` | +| add_position | [CellarV2_2Governance.AddPosition](#steward-v4-CellarV2_2Governance-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | +| call_on_adaptor | [CellarV2_2Governance.CallOnAdaptor](#steward-v4-CellarV2_2Governance-CallOnAdaptor) | | Represents function `callOnAdaptor(AdaptorCall[] memory data)` | +| remove_position | [CellarV2_2Governance.RemovePosition](#steward-v4-CellarV2_2Governance-RemovePosition) | | Represents function `removePosition(uint256 index, bool inDebtArray)` | +| remove_adaptor_from_catalogue | [CellarV2_2Governance.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_2Governance-RemoveAdaptorFromCatalogue) | | Represents function `removeAdaptorFromCatalogue(address adaptor)` | +| remove_position_from_catalogue | [CellarV2_2Governance.RemovePositionFromCatalogue](#steward-v4-CellarV2_2Governance-RemovePositionFromCatalogue) | | Represents function `removePositionFromCatalogue(uint32 positionId)` | +| set_holding_position | [CellarV2_2Governance.SetHoldingPosition](#steward-v4-CellarV2_2Governance-SetHoldingPosition) | | Represents function `setHoldingPosition(uint32 position_id)` | +| swap_positions | [CellarV2_2Governance.SwapPositions](#steward-v4-CellarV2_2Governance-SwapPositions) | | Represents function `swapPositions(uint256 index1, uint256 index2)` | + + + + + + + + +### CellarV2_2Governance.InitiateShutdown +Shutdown the cellar. Used in an emergency or if the cellar has been deprecated. + +Represents function `initiateShutdown()` + + + + + + + + +### CellarV2_2Governance.LiftShutdown +Allows the owner to restart a shut down Cellar + +Represents function `liftShutdown()` + + + + + + + + +### CellarV2_2Governance.Multicall +Allows caller to call multiple functions in a single TX. + +Represents function `multicall(bytes[] data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| function_calls | [CellarV2_2Governance.FunctionCall](#steward-v4-CellarV2_2Governance-FunctionCall) | repeated | | + + + + + + + + +### CellarV2_2Governance.RemoveAdaptorFromCatalogue +Allows callers to remove adaptors from this cellar's catalogue + +Represents function `removeAdaptorFromCatalogue(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | | + + + + + + + + +### CellarV2_2Governance.RemovePosition +Remove the position at a given index from the list of positions used by the cellar. + +Represents function `removePosition(uint32 index, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to remove the position | +| in_debt_array | [bool](#bool) | | Whether to remove position from the debt array, or the credit array. | + + + + + + + + +### CellarV2_2Governance.RemovePositionFromCatalogue +Allows caller to remove positions from this cellar's catalogue + +Represents function `removePositionFromCatalogue(uint32 positionId)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | | + + + + + + + + +### CellarV2_2Governance.SetHoldingPosition +Set the holding position used of the cellar. + +Represents function `setHoldingIndex(uint8 index)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | ID (index) of the new holding position to use | + + + + + + + + +### CellarV2_2Governance.SetRebalanceDeviation +Changes the cellar's allowed rebalance deviation, which is the percent the total assets of a cellar may deviate +during a `callOnAdaptor`(rebalance) call. The maximum allowed deviation is 100000000000000000 (0.1e18), or 10%. + +Represents function `setRebalanceDeviation(uint256)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_deviation | [string](#string) | | | + + + + + + + + +### CellarV2_2Governance.SetShareLockPeriod +Allows share lock period to be updated. + +Represents function `setShareLockPeriod()` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_lock | [string](#string) | | | + + + + + + + + +### CellarV2_2Governance.SetStrategistPlatformCut +Allows strategist to set the platform cut for the cellar. + +Represents function `setStrategistPlatformCut(uint64 cut)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_cut | [uint64](#uint64) | | The new strategist platform cut | + + + + + + + + +### CellarV2_2Governance.SwapPositions +Swap the positions at two given indeces. + +Represents function `swapPositions(uint32 index1, uint32 index2)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index_1 | [uint32](#uint32) | | Index of the first position | +| index_2 | [uint32](#uint32) | | Index of the second position | +| in_debt_array | [bool](#bool) | | Whether to switch positions in the debt array, or the credit array. | + + + + + + + + +### CellarV2_2Governance.ToggleIgnorePause +Allows caller to toggle the ignorePause flag on the cellar + +Represents function `toggleIgnorePause(bool ignore)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| ignore | [bool](#bool) | | | + + + + + + + + +### CellarV2_5 + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| function_call | [CellarV2_5.FunctionCall](#steward-v4-CellarV2_5-FunctionCall) | | Represents a single function call | +| multicall | [CellarV2_5.Multicall](#steward-v4-CellarV2_5-Multicall) | | Represents multiple, ordered function calls | + + + + + + + + +### CellarV2_5.AddAdaptorToCatalogue +Allows the owner to add an adaptor to the Cellar's adaptor catalogue + +Represents function `addAdaptorToCatalogue(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | | + + + + + + + + +### CellarV2_5.AddPosition +Insert a trusted position to the list of positions used by the cellar at a given index. + +Represents function `addPosition(uint32 index, uint32 positionId, bytes configurationData, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to add the position | +| position_id | [uint32](#uint32) | | The position's ID in the cellar registry | +| configuration_data | [bytes](#bytes) | | Data used to configure how the position behaves | +| in_debt_array | [bool](#bool) | | Whether to add position in the debt array, or the credit array. | + + + + + + + + +### CellarV2_5.AddPositionToCatalogue +Allows the owner to add a position to the Cellar's position catalogue + +Represents function `addPositionToCatalogue(uint32 positionId)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | | + + + + + + + + +### CellarV2_5.CachePriceRouter +Updates the cellar to use the latest price router in the registry. + +Represents function `cachePriceRouter(bool checkTotalAssets, uint16 allowableRange, address expectedPriceRouter)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| check_total_assets | [bool](#bool) | | Whether to check the total assets of the cellar | +| allowable_range | [uint32](#uint32) | | The allowable range of the cellar's total assets to deviate between old and new routers | +| expected_price_router | [string](#string) | | The expected price router address | + + + + + + + + +### CellarV2_5.CallOnAdaptor +Allows strategists to manage their Cellar using arbitrary logic calls to adaptors. + +Represents function `callOnAdaptor(AdaptorCall[] memory data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| data | [AdaptorCall](#steward-v4-AdaptorCall) | repeated | | + + + + + + + + +### CellarV2_5.DecreaseShareSupplyCap +Allows strategist to decrease the share supply cap + +Represents function `decreaseShareSupplyCap(uint192)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_cap | [string](#string) | | | + + + + + + + + +### CellarV2_5.DropAlternativeAssetData +Allows the strategist to stop an alternative asset from being deposited. + +Represents function `dropAlternativeAssetData(ERC20 _alternativeAsset)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| alternative_asset | [string](#string) | | The address of the alternative asset | + + + + + + + + +### CellarV2_5.FunctionCall +The function you wish to execute on the target cellar + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| add_position | [CellarV2_5.AddPosition](#steward-v4-CellarV2_5-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | +| call_on_adaptor | [CellarV2_5.CallOnAdaptor](#steward-v4-CellarV2_5-CallOnAdaptor) | | Represents function `callOnAdaptor(AdaptorCall[] memory data)` | +| remove_position | [CellarV2_5.RemovePosition](#steward-v4-CellarV2_5-RemovePosition) | | Represents function `removePosition(uint256 index)` | +| set_holding_position | [CellarV2_5.SetHoldingPosition](#steward-v4-CellarV2_5-SetHoldingPosition) | | Represents function `setHoldingPosition(uint32 position_id)` | +| set_strategist_payout_address | [CellarV2_5.SetStrategistPayoutAddress](#steward-v4-CellarV2_5-SetStrategistPayoutAddress) | | Represents function `setStrategistPayoutAddress(address payout)` | +| swap_positions | [CellarV2_5.SwapPositions](#steward-v4-CellarV2_5-SwapPositions) | | Represents function `swapPositions(uint256 index1, uint256 index2)` | +| set_share_lock_period | [CellarV2_5.SetShareLockPeriod](#steward-v4-CellarV2_5-SetShareLockPeriod) | | Represents function `setShareLockPeriod(uint256 newLock)` | +| initiate_shutdown | [CellarV2_5.InitiateShutdown](#steward-v4-CellarV2_5-InitiateShutdown) | | Represents function `initiateShutdown()` | +| lift_shutdown | [CellarV2_5.LiftShutdown](#steward-v4-CellarV2_5-LiftShutdown) | | Represents function `liftShutdown()` | +| remove_adaptor_from_catalogue | [CellarV2_5.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_5-RemoveAdaptorFromCatalogue) | | Represents function `removeAdaptorFromCatalogue(address adaptor)` | +| remove_position_from_catalogue | [CellarV2_5.RemovePositionFromCatalogue](#steward-v4-CellarV2_5-RemovePositionFromCatalogue) | | Represents function `removePositionFromCatalogue(uint32 positionId)` | +| decrease_share_supply_cap | [CellarV2_5.DecreaseShareSupplyCap](#steward-v4-CellarV2_5-DecreaseShareSupplyCap) | | Represents function `decreaseShareSupplyCap(uint192) | +| set_alternative_asset_data | [CellarV2_5.SetAlternativeAssetData](#steward-v4-CellarV2_5-SetAlternativeAssetData) | | Represents function `setAlternativeAssetData(ERC20 _alternativeAsset, uint32 _alternativeHoldingPosition, uint32 _alternativeAssetFee)` | +| drop_alternative_asset_data | [CellarV2_5.DropAlternativeAssetData](#steward-v4-CellarV2_5-DropAlternativeAssetData) | | Represents function `setDropAlternativeAssetData(ERC20 _alternativeAsset)` | +| add_adaptor_to_catalogue | [CellarV2_5.AddAdaptorToCatalogue](#steward-v4-CellarV2_5-AddAdaptorToCatalogue) | | Represents function `addAdaptorToCatalogue(address adaptor)` | +| add_position_to_catalogue | [CellarV2_5.AddPositionToCatalogue](#steward-v4-CellarV2_5-AddPositionToCatalogue) | | Represents function `addPositionToCatalogue(uint32 positionId)` | +| set_rebalance_deviation | [CellarV2_5.SetRebalanceDeviation](#steward-v4-CellarV2_5-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint256)` | +| set_strategist_platform_cut | [CellarV2_5.SetStrategistPlatformCut](#steward-v4-CellarV2_5-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(uint64 cut)` | +| set_share_price_oracle | [CellarV2_5.SetSharePriceOracle](#steward-v4-CellarV2_5-SetSharePriceOracle) | | Represents function `setSharePriceOracle(uint256 _registryId, ERC4626SharePriceOracle _sharePriceOracle)` | +| increase_share_supply_cap | [CellarV2_5.IncreaseShareSupplyCap](#steward-v4-CellarV2_5-IncreaseShareSupplyCap) | | Represents function `increaseShareSupplyCap(uint192 _newShareSupplyCap)` | +| cache_price_router | [CellarV2_5.CachePriceRouter](#steward-v4-CellarV2_5-CachePriceRouter) | | Represents function `cachePriceRouter(bool checkTotalAssets, uint16 allowableRange, address expectedPriceRouter)` | + + + + + + + + +### CellarV2_5.IncreaseShareSupplyCap +Allows the caller to increase the share supply cap + +Represents function `increaseShareSupplyCap(uint192 _newShareSupplyCap)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_cap | [string](#string) | | | + + + + + + + + +### CellarV2_5.InitiateShutdown +Shutdown the cellar. Used in an emergency or if the cellar has been deprecated. + +Represents function `initiateShutdown()` + + + + + + + + +### CellarV2_5.LiftShutdown +Allows the owner to restart a shut down Cellar + +Represents function `liftShutdown()` + + + + + + + + +### CellarV2_5.Multicall +Allows caller to call multiple functions in a single TX. + +Represents function `multicall(bytes[] data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| function_calls | [CellarV2_5.FunctionCall](#steward-v4-CellarV2_5-FunctionCall) | repeated | | + + + + + + + + +### CellarV2_5.RemoveAdaptorFromCatalogue +Allows callers to remove adaptors from this cellar's catalogue + +Represents function `removeAdaptorFromCatalogue(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | | + + + + + + + + +### CellarV2_5.RemovePosition +Remove the position at a given index from the list of positions used by the cellar. + +Represents function `removePosition(uint32 index, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to remove the position | +| in_debt_array | [bool](#bool) | | Whether to remove position from the debt array, or the credit array. | + + + + + + + + +### CellarV2_5.RemovePositionFromCatalogue +Allows caller to remove positions from this cellar's catalogue + +Represents function `removePositionFromCatalogue(uint32 positionId)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | | + + + + + + + + +### CellarV2_5.SetAlternativeAssetData +Allows the strategist to add, or update an existing alternative asset deposit. + +Represents function `setAlternativeAssetData(ERC20 _alternativeAsset, uint32 _alternativeHoldingPosition, uint32 _alternativeAssetFee)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| alternative_asset | [string](#string) | | The address of the alternative asset | +| alternative_holding_position | [uint32](#uint32) | | The holding position to direct alternative asset deposits to | +| alternative_asset_fee | [uint32](#uint32) | | The fee to charge for depositing this alternative asset | + + + + + + + + +### CellarV2_5.SetHoldingPosition +Set the holding position used of the cellar. + +Represents function `setHoldingIndex(uint8 index)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | ID (index) of the new holding position to use | + + + + + + + + +### CellarV2_5.SetRebalanceDeviation +Changes the cellar's allowed rebalance deviation, which is the percent the total assets of a cellar may deviate +during a `callOnAdaptor`(rebalance) call. The maximum allowed deviation is 100000000000000000 (0.1e18), or 10%. + +Represents function `setRebalanceDeviation(uint256)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_deviation | [string](#string) | | | + + + + + + + + +### CellarV2_5.SetShareLockPeriod +Allows share lock period to be updated. + +Represents function `setShareLockPeriod()` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_lock | [string](#string) | | | + + + + + + + + +### CellarV2_5.SetSharePriceOracle +Allows the caller to set the share price oracle contract + +Represents function `setSharePriceOracle(uint256 _registryId, ERC4626SharePriceOracle _sharePriceOracle)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| registry_id | [string](#string) | | The oracle registry ID | +| share_price_oracle | [string](#string) | | The oracle contract address | + + + + + + + + +### CellarV2_5.SetStrategistPayoutAddress +Sets the Strategists payout address. + +Represents function `setStrategistPayoutAddress(address payout)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| payout | [string](#string) | | | + + + + + + + + +### CellarV2_5.SetStrategistPlatformCut +Allows strategist to set the platform cut for the cellar. + +Represents function `setStrategistPlatformCut(uint64 cut)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_cut | [uint64](#uint64) | | The new strategist platform cut | + + + + + + + + +### CellarV2_5.SwapPositions +Swap the positions at two given indeces. + +Represents function `swapPositions(uint32 index1, uint32 index2)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index_1 | [uint32](#uint32) | | Index of the first position | +| index_2 | [uint32](#uint32) | | Index of the second position | +| in_debt_array | [bool](#bool) | | Whether to switch positions in the debt array, or the credit array. | + + + + + + + + +### CellarV2_5Governance +Represent a function call initiated through a governance proposal + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| function_call | [CellarV2_5Governance.FunctionCall](#steward-v4-CellarV2_5Governance-FunctionCall) | | Represents a single function call | +| multicall | [CellarV2_5Governance.Multicall](#steward-v4-CellarV2_5Governance-Multicall) | | Represents multiple, ordered function calls | + + + + + + + + +### CellarV2_5Governance.AddAdaptorToCatalogue +Allows the owner to add an adaptor to the Cellar's adaptor catalogue + +Represents function `addAdaptorToCatalogue(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | | + + + + + + + + +### CellarV2_5Governance.AddPosition +Insert a trusted position to the list of positions used by the cellar at a given index. + +Represents function `addPosition(uint32 index, uint32 positionId, bytes configurationData, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to add the position | +| position_id | [uint32](#uint32) | | The position's ID in the cellar registry | +| configuration_data | [bytes](#bytes) | | Data used to configure how the position behaves | +| in_debt_array | [bool](#bool) | | Whether to add position in the debt array, or the credit array. | + + + + + + + + +### CellarV2_5Governance.AddPositionToCatalogue +Allows the owner to add a position to the Cellar's position catalogue + +Represents function `addPositionToCatalogue(uint32 positionId)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | | + + + + + + + + +### CellarV2_5Governance.CachePriceRouter +Updates the cellar to use the latest price router in the registry. + +Represents function `cachePriceRouter(bool checkTotalAssets, uint16 allowableRange, address expectedPriceRouter)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| check_total_assets | [bool](#bool) | | Whether to check the total assets of the cellar | +| allowable_range | [uint32](#uint32) | | The allowable range of the cellar's total assets to deviate between old and new routers | +| expected_price_router | [string](#string) | | The expected price router address | + + + + + + + + +### CellarV2_5Governance.CallOnAdaptor +Allows strategists to manage their Cellar using arbitrary logic calls to adaptors. + +Represents function `callOnAdaptor(AdaptorCall[] memory data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| data | [AdaptorCall](#steward-v4-AdaptorCall) | repeated | | + + + + + + + + +### CellarV2_5Governance.DecreaseShareSupplyCap +Allows strategist to decrease the share supply cap + +Represents function `decreaseShareSupplyCap(uint192)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_cap | [string](#string) | | | + + + + + + + + +### CellarV2_5Governance.ForcePositionOut +Allows caller to force a position out of the cellar + +Represents function `forcePositionOut(uint32 index, uint32 positionId, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | | +| position_id | [uint32](#uint32) | | | +| in_debt_array | [bool](#bool) | | | + + + + + + + + +### CellarV2_5Governance.FunctionCall +The function you wish to execute on the target cellar + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| add_adaptor_to_catalogue | [CellarV2_5Governance.AddAdaptorToCatalogue](#steward-v4-CellarV2_5Governance-AddAdaptorToCatalogue) | | Represents function `addAdaptorToCatalogue(address adaptor)` | +| add_position_to_catalogue | [CellarV2_5Governance.AddPositionToCatalogue](#steward-v4-CellarV2_5Governance-AddPositionToCatalogue) | | Represents function `addPositionToCatalogue(uint32 positionId)` | +| set_rebalance_deviation | [CellarV2_5Governance.SetRebalanceDeviation](#steward-v4-CellarV2_5Governance-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint256)` | +| set_strategist_platform_cut | [CellarV2_5Governance.SetStrategistPlatformCut](#steward-v4-CellarV2_5Governance-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(uint64 cut)` | +| force_position_out | [CellarV2_5Governance.ForcePositionOut](#steward-v4-CellarV2_5Governance-ForcePositionOut) | | Represents function `forcePositionOut(uint32 index, uint32 positionId, bool inDebtArray)` | +| toggle_ignore_pause | [CellarV2_5Governance.ToggleIgnorePause](#steward-v4-CellarV2_5Governance-ToggleIgnorePause) | | Represents function `toggleIgnorePause()` | +| set_share_price_oracle | [CellarV2_5Governance.SetSharePriceOracle](#steward-v4-CellarV2_5Governance-SetSharePriceOracle) | | Represents function `setSharePriceOracle(uint256 _registryId, ERC4626SharePriceOracle _sharePriceOracle)` | +| increase_share_supply_cap | [CellarV2_5Governance.IncreaseShareSupplyCap](#steward-v4-CellarV2_5Governance-IncreaseShareSupplyCap) | | Represents function `increaseShareSupplyCap(uint192 _newShareSupplyCap)` | +| set_automation_actions | [CellarV2_5Governance.SetAutomationActions](#steward-v4-CellarV2_5Governance-SetAutomationActions) | | Represents function `setAutomatiionActions(uint256 _registryId, address _expectedAutomationActions)` | +| cache_price_router | [CellarV2_5Governance.CachePriceRouter](#steward-v4-CellarV2_5Governance-CachePriceRouter) | | Represents function `cachePriceRouter(bool checkTotalAssets, uint16 allowableRange, address expectedPriceRouter)` | +| initiate_shutdown | [CellarV2_5Governance.InitiateShutdown](#steward-v4-CellarV2_5Governance-InitiateShutdown) | | Represents function `initiateShutdown()` | +| lift_shutdown | [CellarV2_5Governance.LiftShutdown](#steward-v4-CellarV2_5Governance-LiftShutdown) | | Represents function `liftShutdown()` | +| remove_adaptor_from_catalogue | [CellarV2_5Governance.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_5Governance-RemoveAdaptorFromCatalogue) | | Represents function `removeAdaptorFromCatalogue(address adaptor)` | +| remove_position_from_catalogue | [CellarV2_5Governance.RemovePositionFromCatalogue](#steward-v4-CellarV2_5Governance-RemovePositionFromCatalogue) | | Represents function `removePositionFromCatalogue(uint32 positionId)` | +| decrease_share_supply_cap | [CellarV2_5Governance.DecreaseShareSupplyCap](#steward-v4-CellarV2_5Governance-DecreaseShareSupplyCap) | | Represents function `decreaseShareSupplyCap(uint192) | +| set_holding_position | [CellarV2_5Governance.SetHoldingPosition](#steward-v4-CellarV2_5Governance-SetHoldingPosition) | | Represents function `setHoldingPosition(uint32 position_id)` | +| add_position | [CellarV2_5Governance.AddPosition](#steward-v4-CellarV2_5Governance-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | +| call_on_adaptor | [CellarV2_5Governance.CallOnAdaptor](#steward-v4-CellarV2_5Governance-CallOnAdaptor) | | Represents function `callOnAdaptor(AdaptorCall[] memory data)` | +| remove_position | [CellarV2_5Governance.RemovePosition](#steward-v4-CellarV2_5Governance-RemovePosition) | | Represents function `removePosition(uint256 index)` | + + + + + + + + +### CellarV2_5Governance.IncreaseShareSupplyCap +Allows the caller to increase the share supply cap + +Represents function `increaseShareSupplyCap(uint192 _newShareSupplyCap)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_cap | [string](#string) | | | + + + + + + + + +### CellarV2_5Governance.InitiateShutdown +Shutdown the cellar. Used in an emergency or if the cellar has been deprecated. + +Represents function `initiateShutdown()` + + + + + + + + +### CellarV2_5Governance.LiftShutdown +Allows the owner to restart a shut down Cellar + +Represents function `liftShutdown()` + + + + + + + + +### CellarV2_5Governance.Multicall +Allows caller to call multiple functions in a single TX. + +Represents function `multicall(bytes[] data)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| function_calls | [CellarV2_5Governance.FunctionCall](#steward-v4-CellarV2_5Governance-FunctionCall) | repeated | | + + + + + + + + +### CellarV2_5Governance.RemoveAdaptorFromCatalogue +Allows callers to remove adaptors from this cellar's catalogue + +Represents function `removeAdaptorFromCatalogue(address adaptor)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| adaptor | [string](#string) | | | + + + + + + + + +### CellarV2_5Governance.RemovePosition +Remove the position at a given index from the list of positions used by the cellar. + +Represents function `removePosition(uint32 index, bool inDebtArray)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| index | [uint32](#uint32) | | Index at which to remove the position | +| in_debt_array | [bool](#bool) | | Whether to remove position from the debt array, or the credit array. | + + + + + + + + +### CellarV2_5Governance.RemovePositionFromCatalogue +Allows caller to remove positions from this cellar's catalogue + +Represents function `removePositionFromCatalogue(uint32 positionId)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | | + + + + + + + + +### CellarV2_5Governance.SetAutomationActions +Allows caller to set automation actions + +Represents function `setAutomatiionActions(uint256 _registryId, address _expectedAutomationActions)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| registry_id | [string](#string) | | The oracle registry ID | +| expected_automation_actions | [string](#string) | | The automation actions contract address | + + + + + + + + +### CellarV2_5Governance.SetHoldingPosition +Set the holding position used of the cellar. + +Represents function `setHoldingIndex(uint8 index)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| position_id | [uint32](#uint32) | | ID (index) of the new holding position to use | + + + + + + + + +### CellarV2_5Governance.SetRebalanceDeviation +Changes the cellar's allowed rebalance deviation, which is the percent the total assets of a cellar may deviate +during a `callOnAdaptor`(rebalance) call. The maximum allowed deviation is 100000000000000000 (0.1e18), or 10%. + +Represents function `setRebalanceDeviation(uint256)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_deviation | [string](#string) | | | + + + + + + + + +### CellarV2_5Governance.SetSharePriceOracle +Allows the caller to set the share price oracle contract + +Represents function `setSharePriceOracle(uint256 _registryId, ERC4626SharePriceOracle _sharePriceOracle)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| registry_id | [string](#string) | | The oracle registry ID | +| share_price_oracle | [string](#string) | | The oracle contract address | + + + + + + + + +### CellarV2_5Governance.SetStrategistPlatformCut +Allows strategist to set the platform cut for the cellar. + +Represents function `setStrategistPlatformCut(uint64 cut)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_cut | [uint64](#uint64) | | The new strategist platform cut | + + + + + + + + +### CellarV2_5Governance.ToggleIgnorePause +Allows caller to toggle the ignorePause flag on the cellar + +Represents function `toggleIgnorePause()` + + + + + + + + + + + + + + + + + + +## collateral_f_token.proto + + + + + +### CollateralFTokenAdaptorV1 +Represents call data for the Frax Collateral F Token adaptor. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| add_collateral | [CollateralFTokenAdaptorV1.AddCollateral](#steward-v4-CollateralFTokenAdaptorV1-AddCollateral) | | Represents function `addCollateral(IFToken _fraxlendPair, uint256 _collateralToDeposit)` | +| remove_collateral | [CollateralFTokenAdaptorV1.RemoveCollateral](#steward-v4-CollateralFTokenAdaptorV1-RemoveCollateral) | | Represents function `removeCollateral(uint256 _collateralAmount, IFToken _fraxlendPair)` | + + + + + + + + +### CollateralFTokenAdaptorV1.AddCollateral +Allows strategists to add collateral to the respective cellar position on FraxLend, enabling borrowing. + +Represents function `addCollateral(IFToken _fraxlendPair, uint256 _collateralToDeposit)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| fraxlend_pair | [string](#string) | | The FraxLend pair to add collateral to. | +| collateral_to_deposit | [string](#string) | | The amount of collateral to add to the cellar position. | + + + + + + + + +### CollateralFTokenAdaptorV1.RemoveCollateral +Allows strategists to remove collateral from the respective cellar position on FraxLend. + +Represents function `removeCollateral(uint256 _collateralAmount, IFToken _fraxlendPair)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| collateral_amount | [string](#string) | | The amount of collateral to remove from the cellar position. | +| fraxlend_pair | [string](#string) | | The FraxLend pair to remove collateral from. | + + + + + + + + +### CollateralFTokenAdaptorV1Calls + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| calls | [CollateralFTokenAdaptorV1](#steward-v4-CollateralFTokenAdaptorV1) | repeated | | + + + + + + + + + + + + + + + + + + +## common.proto + + + + + +### MarketParams +Represents parameters for a Morpho Blue market + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| loan_token | [string](#string) | | The address of the loan token | +| collateral_token | [string](#string) | | The address of the collateral token | +| oracle | [string](#string) | | The address of the oracle | +| irm | [string](#string) | | The address of the interest rate model | +| lltv | [string](#string) | | The loan-to-value ratio | + + + + + + + + +### OracleSwapParams +Represents swap params for BaseAdaptor.oracleSwap() + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| univ2_params | [UniV2OracleSwapParams](#steward-v4-UniV2OracleSwapParams) | | | +| univ3_params | [UniV3OracleSwapParams](#steward-v4-UniV3OracleSwapParams) | | | + + + + + + + + +### SwapParams +Represents swap parameters for an exchange + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| univ2_params | [UniV2SwapParams](#steward-v4-UniV2SwapParams) | | Params for a Uniswap V2 swap | +| univ3_params | [UniV3SwapParams](#steward-v4-UniV3SwapParams) | | Params for a Uniswap V3 swap | + + + + + + + + +### UniV2OracleSwapParams +Represents oracle swap parameters for UniswapV2 + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | repeated | Array of addresses dictating what swap path to follow | + + + + + + + + +### UniV2SwapParams +Represents swap parameters for UniswapV2 + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | repeated | Array of addresses dictating what swap path to follow | +| amount | [string](#string) | | Amount of the first asset in the path to swap | +| amount_out_min | [string](#string) | | The minimum amount of the last asset in the path to receive | + + + + + + + + +### UniV3OracleSwapParams +Represents oracle swap parameters for UniswapV3 + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | repeated | Array of addresses dictating what swap path to follow | +| pool_fees | [uint32](#uint32) | repeated | Array of pool fees dictating what swap pools to use | + + + + + + + + +### UniV3SwapParams +Represents swap parameters for UniswapV3 + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| path | [string](#string) | repeated | Array of addresses dictating what swap path to follow | +| pool_fees | [uint32](#uint32) | repeated | Array of pool fees dictating what swap pools to use | +| amount | [string](#string) | | Amount of the first asset in the path to swap | +| amount_out_min | [string](#string) | | The minimum amount of the last asset in the path to receive | + + + + + + + + + + +### Exchange +Exchange selector + +| Name | Number | Description | +| ---- | ------ | ----------- | +| EXCHANGE_UNSPECIFIED | 0 | | +| EXCHANGE_UNIV2 | 1 | Represents Uniswap V2 | +| EXCHANGE_UNIV3 | 2 | Represents Uniswap V3 | + + + + + + + + + + + + + +## convex_curve.proto + + + + + +### ConvexCurveAdaptorV1 +Represents call data for the Convex Curve adaptor V1 + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| deposit_lpt_in_convex_and_stake | [ConvexCurveAdaptorV1.DepositLPTInConvexAndStake](#steward-v4-ConvexCurveAdaptorV1-DepositLPTInConvexAndStake) | | Represents function `depositLPTInConvexAndStake(uint256 _pid, address baseRewardPool, ERC20 _lpt, CurvePool _pool, bytes4 _selector, uint256 _amount)` | +| withdraw_from_base_reward_pool_as_lpt | [ConvexCurveAdaptorV1.WithdrawFromBaseRewardPoolAsLPT](#steward-v4-ConvexCurveAdaptorV1-WithdrawFromBaseRewardPoolAsLPT) | | Represents function `withdrawFromBaseRewardPoolAsLPTaddress(_baseRewardPool, uint256 _amount, bool _claim)` | +| get_rewards | [ConvexCurveAdaptorV1.GetRewards](#steward-v4-ConvexCurveAdaptorV1-GetRewards) | | Represents function `getRewards(address _baseRewardPool, bool _claimExtras)` | + + + + + + + + +### ConvexCurveAdaptorV1.DepositLPTInConvexAndStake +Allows strategists to deposit and stake LPTs into Convex markets via the respective Convex market Booster contract + +Represents function `depositLPTInConvexAndStake(uint256 _pid, address baseRewardPool, ERC20 _lpt, CurvePool _pool, bytes4 _selector, uint256 _amount)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| pid | [string](#string) | | | +| base_reward_pool | [string](#string) | | | +| lpt | [string](#string) | | | +| pool | [string](#string) | | | +| selector | [string](#string) | | | +| amount_to_deposit | [string](#string) | | | + + + + + + + + +### ConvexCurveAdaptorV1.GetRewards +Allows strategists to get rewards for an Convex Booster without withdrawing/unwrapping from Convex market + +Represents function `getRewards(address _baseRewardPool, bool _claimExtras)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| base_reward_pool | [string](#string) | | | +| claim_extras | [bool](#bool) | | | + + + + + + + + +### ConvexCurveAdaptorV1.WithdrawFromBaseRewardPoolAsLPT +Allows strategists to withdraw from Convex markets via Booster contract w/ or w/o claiming rewards + +Represents function `withdrawFromBaseRewardPoolAsLPTaddress(_baseRewardPool, uint256 _amount, bool _claim)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| base_reward_pool | [string](#string) | | | +| amount_to_withdraw | [string](#string) | | | +| claim | [bool](#bool) | | | + + + + + + + + +### ConvexCurveAdaptorV1Calls + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| calls | [ConvexCurveAdaptorV1](#steward-v4-ConvexCurveAdaptorV1) | repeated | | + + + + + + + + + + + + + + + + + + +## curve.proto + + + + + +### CurveAdaptorV1 +Represents call data for the Curve adaptor V1 + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| add_liquidity | [CurveAdaptorV1.AddLiquidity](#steward-v4-CurveAdaptorV1-AddLiquidity) | | Represents function `addLiquidity(address pool, ERC20 lpToken, uint256[] orderedUnderlyingTokenAmounts, uint256 minLPAmount, CurveGauge gauge, bytes4 selector)` | +| add_liquidity_eth | [CurveAdaptorV1.AddLiquidityETH](#steward-v4-CurveAdaptorV1-AddLiquidityETH) | | Represents function `addLiquidityETH(address pool, ERC20 lpToken, uint256[] orderedMinimumUnderlyingTokenAmountsOut, uint256 minLPAmount, bool useUnderlying, CurveGauge gauge, bytes4 selector)` | +| remove_liquidity | [CurveAdaptorV1.RemoveLiquidity](#steward-v4-CurveAdaptorV1-RemoveLiquidity) | | Represents function `removeLiquidity(address pool, ERC20 lpToken, uint256 lpTokenAmount, uint256[] orderedMinimumUnderlyingTokenAmountsOut, CurveGauge gauge, bytes4 selector)` | +| remove_liquidity_eth | [CurveAdaptorV1.RemoveLiquidityETH](#steward-v4-CurveAdaptorV1-RemoveLiquidityETH) | | Represents function `removeLiquidityETH(address pool, ERC20 lpToken, uint256 lpTokenAmount, uint256[] orderedMinimumUnderlyingTokenAmountsOut, bool useUnderlying, CurveGauge gauge, bytes4 selector)` | +| stake_in_gauge | [CurveAdaptorV1.StakeInGauge](#steward-v4-CurveAdaptorV1-StakeInGauge) | | Represents function `stakeInGauge(ERC20 lpToken, CurveGauge gauge, uint256 amount, CurvePool pool, bytes4 selector)` | +| unstake_from_gauge | [CurveAdaptorV1.UnstakeFromGauge](#steward-v4-CurveAdaptorV1-UnstakeFromGauge) | | Represents function `unstakeFromGauge(CurveGauge gauge, uint256 amount)` | +| claim_rewards | [CurveAdaptorV1.ClaimRewards](#steward-v4-CurveAdaptorV1-ClaimRewards) | | Represents function `claimRewards(CurveGauge gauge)` | - -### CellarV1.SetHoldingPosition -Set the holding position used by the cellar. + -Represents function `setHoldingPosition(address newHoldingPosition)` +### CurveAdaptorV1.AddLiquidity +Allows strategist to add liquidity to Curve pairs that do NOT use the native asset. + +Represents function `addLiquidity(address pool, ERC20 lpToken, uint256[] orderedUnderlyingTokenAmounts, uint256 minLPAmount, CurveGauge gauge, bytes4 selector)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_holding_position | [string](#string) | | Address of the new holding position to use | +| pool | [string](#string) | | Address of the Curve pool | +| lp_token | [string](#string) | | Address of the LP token | +| ordered_underlying_token_amounts | [string](#string) | repeated | Minimum amount of each underlying token to receive | +| min_lp_amount | [string](#string) | | Minimum amount of LP tokens to receive | +| gauge | [string](#string) | | Address of the Curve gauge | +| selector | [string](#string) | | Selector of the function to call | - + -### CellarV1.SetLiquidityLimit -Set the maximum liquidity that cellar can manage. Uses the same decimals as the current asset. +### CurveAdaptorV1.AddLiquidityETH +Allows strategist to add liquidity to Curve pairs that use the native asset. -Represents function `setLiquidityLimit()` +Represents function `addLiquidityETH(address pool, ERC20 lpToken, uint256[] orderedUnderlyingTokenAmounts, uint256 minLPAmount, bool useUnderlying, CurveGauge gauge, bytes4 selector)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_limit | [string](#string) | | | +| pool | [string](#string) | | Address of the Curve pool | +| lp_token | [string](#string) | | Address of the LP token | +| ordered_underlying_token_amounts | [string](#string) | repeated | Minimum amount of each underlying token to receive | +| min_lp_amount | [string](#string) | | Minimum amount of LP tokens to receive | +| use_underlying | [bool](#bool) | | Whether to use the underlying asset or the wrapped asset | +| gauge | [string](#string) | | Address of the Curve gauge | +| selector | [string](#string) | | Selector of the function to call | - + -### CellarV1.SetRebalanceDeviation -Represents function `setRebalanceDeviation(uint256)` +### CurveAdaptorV1.ClaimRewards +Allows strategist to claim rewards from a gauge. + +Represents function `claimRewards(CurveGauge gauge)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_deviation | [string](#string) | | | +| gauge | [string](#string) | | Address of the Curve gauge | - + -### CellarV1.SetShareLockPeriod -Allows share lock period to be updated. +### CurveAdaptorV1.RemoveLiquidity +Allows strategist to remove liquidity from Curve pairs that do NOT use the native asset. -Represents function `setShareLockPeriod()` +Represents function `removeLiquidity(address pool, ERC20 lpToken, uint256 lpTokenAmount, uint256[] orderedMinimumUnderlyingTokenAmountsOut, CurveGauge gauge, bytes4 selector)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_lock | [string](#string) | | | +| pool | [string](#string) | | Address of the Curve pool | +| lp_token | [string](#string) | | Address of the LP token | +| lp_token_amount | [string](#string) | | Amount of LP tokens to remove | +| ordered_minimum_underlying_token_amounts_out | [string](#string) | repeated | Minimum amount of each underlying token to receive | +| gauge | [string](#string) | | Address of the Curve gauge | +| selector | [string](#string) | | Selector of the function to call | - + -### CellarV1.SetStrategistPayoutAddress -Sets the Strategists payout address. +### CurveAdaptorV1.RemoveLiquidityETH +Allows strategist to remove liquidity from Curve pairs that use the native asset. -Represents function `setStrategistPayoutAddress(address payout)` +Represents function `removeLiquidityETH(address pool, ERC20 lpToken, uint256 lpTokenAmount, uint256[] orderedMinimumUnderlyingTokenAmountsOut, bool useUnderlying, CurveGauge gauge, bytes4 selector)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| payout | [string](#string) | | | +| pool | [string](#string) | | Address of the Curve pool | +| lp_token | [string](#string) | | Address of the LP token | +| lp_token_amount | [string](#string) | | Amount of LP tokens to remove | +| ordered_minimum_underlying_token_amounts_out | [string](#string) | repeated | Minimum amount of each underlying token to receive | +| use_underlying | [bool](#bool) | | Whether to use the underlying asset or the wrapped asset | +| gauge | [string](#string) | | Address of the Curve gauge | +| selector | [string](#string) | | Selector of the function to call | - + -### CellarV1.SetWithdrawType -Set the withdraw type used by the cellar. +### CurveAdaptorV1.StakeInGauge +Allows strategist to stake Curve LP tokens in their gauge. -Represents function `setWithdrawType(WithdrawType newWithdrawType)` +Represents function `stakeInGauge(ERC20 lpToken, CurveGauge gauge, uint256 amount, CurvePool pool, bytes4 selector)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_withdraw_type | [CellarV1.WithdrawType](#steward-v4-CellarV1-WithdrawType) | | The withdraw type to use for the cellar | +| lp_token | [string](#string) | | Address of the LP token | +| gauge | [string](#string) | | Address of the Curve gauge | +| amount | [string](#string) | | Amount of LP tokens to stake | +| pool | [string](#string) | | Address of the Curve pool | +| selector | [string](#string) | | Selector of the function to call | - + -### CellarV1.SwapPositions -Swap the positions at two given indeces. +### CurveAdaptorV1.UnstakeFromGauge +Allows strategist to unstake Curve LP tokens from their gauge. -Represents function `swapPositions(uint256 index1, uint256 index2)` +Represents function `unstakeFromGauge(CurveGauge gauge, uint256 amount)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index_1 | [string](#string) | | Index of the first position | -| index_2 | [string](#string) | | Index of the second position | +| gauge | [string](#string) | | Address of the Curve gauge | +| amount | [string](#string) | | Amount of LP tokens to unstake | - + + +### CurveAdaptorV1Calls -### CellarV1Governance -Represent a function call initiated through a governance proposal | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| initiate_shutdown | [CellarV1Governance.InitiateShutdown](#steward-v4-CellarV1Governance-InitiateShutdown) | | Represents function `initiateShutdown()` | -| lift_shutdown | [CellarV1Governance.LiftShutdown](#steward-v4-CellarV1Governance-LiftShutdown) | | Represents function `liftShutdown()` | -| reset_high_watermark | [CellarV1Governance.ResetHighWatermark](#steward-v4-CellarV1Governance-ResetHighWatermark) | | Represents function `resetHighWatermark()` | -| set_fees_distributor | [CellarV1Governance.SetFeesDistributor](#steward-v4-CellarV1Governance-SetFeesDistributor) | | Represents function `setFeesDistributor(address)` | -| set_performance_fee | [CellarV1Governance.SetPerformanceFee](#steward-v4-CellarV1Governance-SetPerformanceFee) | | Represents function `setPerformanceFee(uint256)` | -| set_platform_fee | [CellarV1Governance.SetPlatformFee](#steward-v4-CellarV1Governance-SetPlatformFee) | | Represents function `setPlatformFee(uint256)` | -| set_strategist_performance_cut | [CellarV1Governance.SetStrategistPerformanceCut](#steward-v4-CellarV1Governance-SetStrategistPerformanceCut) | | Represents function `setStrategistPerformanceCut(uint256)` | -| set_strategist_platform_cut | [CellarV1Governance.SetStrategistPlatformCut](#steward-v4-CellarV1Governance-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(address)` | -| trust_position | [CellarV1Governance.TrustPosition](#steward-v4-CellarV1Governance-TrustPosition) | | Represents function `trustPosition(address)` | +| calls | [CurveAdaptorV1](#steward-v4-CurveAdaptorV1) | repeated | | + - + -### CellarV1Governance.InitiateShutdown -Represents function `initiateShutdown()` + + + + +## debt_f_token.proto - -### CellarV1Governance.LiftShutdown -Represents function `liftShutdown()` + + + +### DebtFTokenAdaptorV1 +Represents call data for the Frax adaptor. +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| borrow_from_fraxlend | [DebtFTokenAdaptorV1.BorrowFromFraxlend](#steward-v4-DebtFTokenAdaptorV1-BorrowFromFraxlend) | | Represents function `borrowFromFraxlend(IFToken fraxlendPair, uint256 amountToBorrow)` | +| repay_fraxlend_debt | [DebtFTokenAdaptorV1.RepayFraxlendDebt](#steward-v4-DebtFTokenAdaptorV1-RepayFraxlendDebt) | | Represents function `repayFraxlendDebt(IFToken _fraxlendPair, uint256 _debtTokenRepayAmount)` | +| call_add_interest | [DebtFTokenAdaptorV1.CallAddInterest](#steward-v4-DebtFTokenAdaptorV1-CallAddInterest) | | Represents function `callAddInterest(IFToken _fraxlendPair)` | - -### CellarV1Governance.ResetHighWatermark -Represents function `resetHighWatermark()` + + +### DebtFTokenAdaptorV1.BorrowFromFraxlend +Allows a strategist to borrow assets from Fraxlend + +Represents `function borrowFromFraxlend(IFToken fraxlendPair, uint256 amountToBorrow)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| fraxlend_pair | [string](#string) | | The address of the Frax Pair to borrow from. | +| amount_to_borrow | [string](#string) | | The amount of the asset to borrow. | - -### CellarV1Governance.SetFeesDistributor -Represents function `setFeesDistributor(bytes32)` + + + + +### DebtFTokenAdaptorV1.CallAddInterest +Allows a strategist to call `addInterest` on a Frax Pair they are using + +Represents `function callAddInterest(IFToken _fraxlendPair)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_fees_distributor | [string](#string) | | Cosmos address of the new fees distributor | +| fraxlend_pair | [string](#string) | | The address of the pair to call addInterest on. | - + -### CellarV1Governance.SetPerformanceFee -Represents function `setPerformanceFee(uint64)` +### DebtFTokenAdaptorV1.RepayFraxlendDebt +Allows strategists to repay loan debt on Fraxlend Pair. +Make sure to call addInterest() beforehand to ensure we are repaying what is required. + +Represents `function repayFraxlendDebt(IFToken _fraxlendPair, uint256 _debtTokenRepayAmount)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [uint64](#uint64) | | New performance fee | +| fraxlend_pair | [string](#string) | | The address of the Frax Pair to repay debt on. | +| debt_token_repay_amount | [string](#string) | | The amount of the debt token to repay. | - + + +### DebtFTokenAdaptorV1Calls -### CellarV1Governance.SetPlatformFee -Represents function `setPlatformFee(uint64)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [uint64](#uint64) | | New platform fee | +| calls | [DebtFTokenAdaptorV1](#steward-v4-DebtFTokenAdaptorV1) | repeated | | + - + -### CellarV1Governance.SetStrategistPerformanceCut -Represents function `setStrategistPerformanceCut(uint64)` + + + + + + + + + +## debt_token.proto + + + + + +### AaveDebtTokenAdaptorV1 +Represents call data for the Aave Debt Token adaptor V1, used for borrowing and repaying debt on Aave. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [uint64](#uint64) | | New strategist performance cut | +| swap | [Swap](#steward-v4-Swap) | | Represents function `swap(ERC20 assetIn, ERC20 assetOut, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params)` | +| oracle_swap | [OracleSwap](#steward-v4-OracleSwap) | | Represents function `oracleSwap(ERC20 assetIn, ERC20 assetOut, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params, uint64 slippage)` | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| borrow_from_aave | [AaveDebtTokenAdaptorV1.BorrowFromAave](#steward-v4-AaveDebtTokenAdaptorV1-BorrowFromAave) | | Represents function `borrowFromAave(ERC20 debtTokenToBorrow, uint256 amountToBorrow)` | +| repay_aave_debt | [AaveDebtTokenAdaptorV1.RepayAaveDebt](#steward-v4-AaveDebtTokenAdaptorV1-RepayAaveDebt) | | Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | +| swap_and_repay | [AaveDebtTokenAdaptorV1.SwapAndRepay](#steward-v4-AaveDebtTokenAdaptorV1-SwapAndRepay) | | Represents function `swapAndRepay(ERC20 tokenIn, ERC20 tokenToRepay, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params)` | - + -### CellarV1Governance.SetStrategistPlatformCut -Represents function `setStrategistPlatformCut(uint64)` +### AaveDebtTokenAdaptorV1.BorrowFromAave +Allows strategists to borrow assets from Aave. + +Represents function `depositToAave(ERC20 tokenToDeposit, uint256 amountToDeposit)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [uint64](#uint64) | | New strategist platform cut | +| token | [string](#string) | | The address of the ERC20 token to borrow | +| amount | [string](#string) | | The amount to borrow | - + -### CellarV1Governance.TrustPosition -Represents function `trustPosition(address)` +### AaveDebtTokenAdaptorV1.RepayAaveDebt +Allows strategists to repay loan debt on Aave. + +Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| erc20_address | [string](#string) | | | -| erc4626_address | [string](#string) | | | -| cellar_address | [string](#string) | | | +| token | [string](#string) | | The address of the ERC20 token to repay | +| amount | [string](#string) | | The amount to repay | - + - +### AaveDebtTokenAdaptorV1.SwapAndRepay +Allows strategists to swap assets and repay loans in one call. -### CellarV1.WithdrawType -Represents the withdraw type to use for the cellar +Represents function `swapAndRepay(ERC20 tokenIn, ERC20 tokenToRepay, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params)` -| Name | Number | Description | -| ---- | ------ | ----------- | -| WITHDRAW_TYPE_UNSPECIFIED | 0 | | -| WITHDRAW_TYPE_ORDERLY | 1 | | -| WITHDRAW_TYPE_PROPORTIONAL | 2 | | +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| token_in | [string](#string) | | The address of the token to swap from | +| token_to_repay | [string](#string) | | The address of the token to swap to and repay with | +| amount_in | [string](#string) | | The amount to swap | +| exchange | [Exchange](#steward-v4-Exchange) | | The exchange to make the swap on | +| params | [SwapParams](#steward-v4-SwapParams) | | The parameters for the swap | - - - - - + -## cellar_v2.proto +### AaveDebtTokenAdaptorV1Calls + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| calls | [AaveDebtTokenAdaptorV1](#steward-v4-AaveDebtTokenAdaptorV1) | repeated | | - -### AdaptorCall -Represents a call to adaptor an. The cellar must be authorized to call the target adaptor. + + + + +### AaveDebtTokenAdaptorV2 +Represents call data for the Aave Debt Token adaptor V2, used for borrowing and repaying debt on Aave. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| adaptor | [string](#string) | | Address of the adaptor | -| aave_a_token_v1_calls | [AaveATokenAdaptorV1Calls](#steward-v4-AaveATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenAdaptor V1 | -| aave_debt_token_v1_calls | [AaveDebtTokenAdaptorV1Calls](#steward-v4-AaveDebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenAdaptor V1 | -| compound_c_token_v2_calls | [CompoundCTokenAdaptorV2Calls](#steward-v4-CompoundCTokenAdaptorV2Calls) | | Represents function calls to the CompoundCTokenAdaptor V2 | -| aave_a_token_v2_calls | [AaveATokenAdaptorV2Calls](#steward-v4-AaveATokenAdaptorV2Calls) | | Represents function calls to the AaveATokenV2Adaptor | -| aave_debt_token_v2_calls | [AaveDebtTokenAdaptorV2Calls](#steward-v4-AaveDebtTokenAdaptorV2Calls) | | Represents function calls to the AavaDebtTokenV2Adaptor | -| aave_v3_a_token_v1_calls | [AaveV3ATokenAdaptorV1Calls](#steward-v4-AaveV3ATokenAdaptorV1Calls) | | Represents function calls to the AaveATokenV1Adaptor | -| aave_v3_debt_token_v1_calls | [AaveV3DebtTokenAdaptorV1Calls](#steward-v4-AaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the AavaDebtTokenV1Adaptor | -| one_inch_v1_calls | [OneInchAdaptorV1Calls](#steward-v4-OneInchAdaptorV1Calls) | | Represents function calls to the OneInchAdaptorV1 | -| fees_and_reserves_v1_calls | [FeesAndReservesAdaptorV1Calls](#steward-v4-FeesAndReservesAdaptorV1Calls) | | Represents function calls to the FeesAndReservesAdaptorV1 | -| zero_x_v1_calls | [ZeroXAdaptorV1Calls](#steward-v4-ZeroXAdaptorV1Calls) | | Represents functionc alls to the ZeroXAdaptorV1 | -| swap_with_uniswap_v1_calls | [SwapWithUniswapAdaptorV1Calls](#steward-v4-SwapWithUniswapAdaptorV1Calls) | | Represents function calls to the SwapWithUniswapAdaptorV1 | -| vesting_simple_v2_calls | [VestingSimpleAdaptorV2Calls](#steward-v4-VestingSimpleAdaptorV2Calls) | | Represents function calls to VestingSimpleAdaptor | -| cellar_v1_calls | [CellarAdaptorV1Calls](#steward-v4-CellarAdaptorV1Calls) | | Represents function calls to the CellarAdaptor | -| uniswap_v3_v2_calls | [UniswapV3AdaptorV2Calls](#steward-v4-UniswapV3AdaptorV2Calls) | | Represents function calls to the UniswapV3Adaptor V2 | -| aave_v2_enable_asset_as_collateral_v1_calls | [AaveV2EnableAssetAsCollateralAdaptorV1Calls](#steward-v4-AaveV2EnableAssetAsCollateralAdaptorV1Calls) | | Represents function calls to the AaveV2EnableAssetAsCollatorAdaptor V1 | -| f_token_v1_calls | [FTokenAdaptorV1Calls](#steward-v4-FTokenAdaptorV1Calls) | | Represents function calls to the FTokenAdaptor V1 | -| morpho_aave_v2_a_token_v1_calls | [MorphoAaveV2ATokenAdaptorV1Calls](#steward-v4-MorphoAaveV2ATokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2AToken V1 | -| morpho_aave_v2_debt_token_v1_calls | [MorphoAaveV2DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV2DebtToken V1 | -| morpho_aave_v3_a_token_collateral_v1_calls | [MorphoAaveV3ATokenCollateralAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenCollateral V1 | -| morpho_aave_v3_a_token_p2p_v1_calls | [MorphoAaveV3ATokenP2PAdaptorV1Calls](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3ATokenP2P V1 | -| morpho_aave_v3_debt_token_v1_calls | [MorphoAaveV3DebtTokenAdaptorV1Calls](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1Calls) | | Represents function calls to the MorphoAaveV3DebtToken V1 | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| borrow_from_aave | [AaveDebtTokenAdaptorV2.BorrowFromAave](#steward-v4-AaveDebtTokenAdaptorV2-BorrowFromAave) | | Represents function `borrowFromAave(ERC20 debtTokenToBorrow, uint256 amountToBorrow)` | +| repay_aave_debt | [AaveDebtTokenAdaptorV2.RepayAaveDebt](#steward-v4-AaveDebtTokenAdaptorV2-RepayAaveDebt) | | Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | - + -### CellarV2 -Represents a function call to a cellar that implements Cellar.sol +### AaveDebtTokenAdaptorV2.BorrowFromAave +Allows strategists to borrow assets from Aave. + +Represents function `depositToAave(ERC20 tokenToDeposit, uint256 amountToDeposit)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| add_position | [CellarV2.AddPosition](#steward-v4-CellarV2-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | -| call_on_adaptor | [CellarV2.CallOnAdaptor](#steward-v4-CellarV2-CallOnAdaptor) | | Represents function `callOnAdaptor(AdaptorCall[] memory data)` | -| remove_position | [CellarV2.RemovePosition](#steward-v4-CellarV2-RemovePosition) | | Represents function `removePosition(uint256 index)` | -| set_holding_position | [CellarV2.SetHoldingPosition](#steward-v4-CellarV2-SetHoldingPosition) | | Represents function `setHoldingPosition(uint32 position_id)` | -| set_strategist_payout_address | [CellarV2.SetStrategistPayoutAddress](#steward-v4-CellarV2-SetStrategistPayoutAddress) | | Represents function `setStrategistPayoutAddress(address payout)` | -| swap_positions | [CellarV2.SwapPositions](#steward-v4-CellarV2-SwapPositions) | | Represents function `swapPositions(uint256 index1, uint256 index2)` | -| set_rebalance_deviation | [CellarV2.SetRebalanceDeviation](#steward-v4-CellarV2-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint265)` | -| set_share_lock_period | [CellarV2.SetShareLockPeriod](#steward-v4-CellarV2-SetShareLockPeriod) | | Represents function `setShareLockPeriod(uint256 newLock)` | +| token | [string](#string) | | The address of the ERC20 token to borrow | +| amount | [string](#string) | | The amount to borrow | - + -### CellarV2.AddPosition -Insert a trusted position to the list of positions used by the cellar at a given index. +### AaveDebtTokenAdaptorV2.RepayAaveDebt +Allows strategists to repay loan debt on Aave. -Represents function `addPosition(uint32 index, uint32 positionId, bytes configurationData, bool inDebtArray)` +Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index | [uint32](#uint32) | | Index at which to add the position | -| position_id | [uint32](#uint32) | | The position's ID in the cellar registry | -| configuration_data | [bytes](#bytes) | | Data used to configure how the position behaves | -| in_debt_array | [bool](#bool) | | Whether to add position in the debt array, or the credit array. | +| token | [string](#string) | | The address of the ERC20 token to repay | +| amount | [string](#string) | | The amount to repay | + + + + + + + + +### AaveDebtTokenAdaptorV2Calls + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| calls | [AaveDebtTokenAdaptorV2](#steward-v4-AaveDebtTokenAdaptorV2) | repeated | | - -### CellarV2.CallOnAdaptor -Allows strategists to manage their Cellar using arbitrary logic calls to adaptors. + -Represents function `callOnAdaptor(AdaptorCall[] memory data)` + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| data | [AdaptorCall](#steward-v4-AdaptorCall) | repeated | | + + + +## erc4626.proto - -### CellarV2.RemovePosition -Remove the position at a given index from the list of positions used by the cellar. + -Represents function `removePosition(uint32 index, bool inDebtArray)` +### ERC4626AdaptorV1 +Represents call data for the ERC4626 adaptor V1 | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index | [uint32](#uint32) | | Index at which to remove the position | -| in_debt_array | [bool](#bool) | | Whether to remove position from the debt array, or the credit array. | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| deposit_to_vault | [ERC4626AdaptorV1.DepositToVault](#steward-v4-ERC4626AdaptorV1-DepositToVault) | | Represents function `depositToVault(ERC4626 erc4626Vault, uint256 assets)` | +| withdraw_from_vault | [ERC4626AdaptorV1.WithdrawFromVault](#steward-v4-ERC4626AdaptorV1-WithdrawFromVault) | | Represents function `withdrawFromVault(ERC4626 erc4626Vault, uint256 assets)` | - + -### CellarV2.SetHoldingPosition -Set the holding position used of the cellar. +### ERC4626AdaptorV1.DepositToVault +Allows strategists to deposit into ERC4626 positions. -Represents function `setHoldingIndex(uint8 index)` +Represents function `depositToVault(ERC4626 erc4626Vault, uint256 assets)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| position_id | [uint32](#uint32) | | ID (index) of the new holding position to use | +| erc4626_vault | [string](#string) | | The address of the ERC4626 vault | +| assets | [string](#string) | | The amount of assets to deposit | - + -### CellarV2.SetRebalanceDeviation -Changes the cellar's allowed rebalance deviation, which is the percent the total assets of a cellar may deviate -during a `callOnAdaptor`(rebalance) call. The maximum allowed deviation is 100000000000000000 (0.1e18), or 10%. +### ERC4626AdaptorV1.WithdrawFromVault +Allows strategists to withdraw from ERC4626 positions. -Represents function `setRebalanceDeviation(uint256)` +Represents function `withdrawFromVault(ERC4626 erc4626Vault, uint256 assets)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_deviation | [string](#string) | | | +| erc4626_vault | [string](#string) | | The address of the ERC4626 vault | +| assets | [string](#string) | | The amount of assets to withdraw | - + -### CellarV2.SetShareLockPeriod -Allows share lock period to be updated. +### ERC4626AdaptorV1Calls -Represents function `setShareLockPeriod()` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_lock | [string](#string) | | | - - +| calls | [ERC4626AdaptorV1](#steward-v4-ERC4626AdaptorV1) | repeated | | - -### CellarV2.SetStrategistPayoutAddress -Sets the Strategists payout address. + -Represents function `setStrategistPayoutAddress(address payout)` + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| payout | [string](#string) | | | + + + +## f_token.proto - -### CellarV2.SwapPositions -Swap the positions at two given indeces. + -Represents function `swapPositions(uint32 index1, uint32 index2)` +### FTokenAdaptorV1 +Represents call data for the Frax adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index_1 | [uint32](#uint32) | | Index of the first position | -| index_2 | [uint32](#uint32) | | Index of the second position | -| in_debt_array | [bool](#bool) | | Whether to switch positions in the debt array, or the credit array. | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| lend_frax | [FTokenAdaptorV1.LendFrax](#steward-v4-FTokenAdaptorV1-LendFrax) | | Represents function `lendFrax(IFToken fToken, uint256 amountToDeposit)` | +| redeem_frax_share | [FTokenAdaptorV1.RedeemFraxShare](#steward-v4-FTokenAdaptorV1-RedeemFraxShare) | | Represents function `redeemFraxShare(IFToken fToken, uint256 amountToRedeem)` | +| withdraw_frax | [FTokenAdaptorV1.WithdrawFrax](#steward-v4-FTokenAdaptorV1-WithdrawFrax) | | Represents function `withdrawFrax(IFToken fToken, uint256 amountToWithdraw)` | +| call_add_interest | [FTokenAdaptorV1.CallAddInterest](#steward-v4-FTokenAdaptorV1-CallAddInterest) | | Represents function `callAddInterest(IFToken fToken)` | - + -### CellarV2Governance -Represent a function call initiated through a governance proposal +### FTokenAdaptorV1.CallAddInterest +Allows a strategist to call `addInterest` on a Frax Pair they are using + +Represents `function callAddInterest(IFToken fToken)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| initiate_shutdown | [CellarV2Governance.InitiateShutdown](#steward-v4-CellarV2Governance-InitiateShutdown) | | Represents function `initiateShutdown()` | -| lift_shutdown | [CellarV2Governance.LiftShutdown](#steward-v4-CellarV2Governance-LiftShutdown) | | Represents function `liftShutdown()` | -| set_platform_fee | [CellarV2Governance.SetPlatformFee](#steward-v4-CellarV2Governance-SetPlatformFee) | | Represents function `setPlatformFee(uint256)` | -| set_strategist_platform_cut | [CellarV2Governance.SetStrategistPlatformCut](#steward-v4-CellarV2Governance-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(address)` | -| setup_adaptor | [CellarV2Governance.SetupAdaptor](#steward-v4-CellarV2Governance-SetupAdaptor) | | Represents function `setupAdaptor(address adaptor)` | - - - +| f_token | [string](#string) | | The address of the fToken to call `addInterest` on. | - -### CellarV2Governance.InitiateShutdown -Represents function `initiateShutdown()` + +### FTokenAdaptorV1.LendFrax +Allows strategists to lend FRAX on FraxLend +Represents `function lendFrax(IFToken fToken, uint256 amountToDeposit)` - +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| f_token | [string](#string) | | The address of the fToken to lend. | +| amount_to_deposit | [string](#string) | | The amount of the fToken to lend. | -### CellarV2Governance.LiftShutdown -Represents function `liftShutdown()` + - +### FTokenAdaptorV1.RedeemFraxShare +Allows strategists to redeem FRAX shares on FraxLend -### CellarV2Governance.SetPlatformFee -Represents function `setPlatformFee(uint64)` +Represents `function redeemFraxShare(IFToken fToken, uint256 amountToRedeem)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [uint64](#uint64) | | New platform fee | +| f_token | [string](#string) | | The address of the fToken to redeem. | +| amount_to_redeem | [string](#string) | | The amount of the fToken to redeem. | - + -### CellarV2Governance.SetStrategistPlatformCut -Represents function `setStrategistPlatformCut(uint64)` +### FTokenAdaptorV1.WithdrawFrax +Allows strategists to withdraw FRAX from FraxLend + +Represents `function withdrawFrax(IFToken fToken, uint256 amountToWithdraw)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [uint64](#uint64) | | New strategist platform cut | +| f_token | [string](#string) | | The address of the fToken to withdraw. | +| amount_to_withdraw | [string](#string) | | The amount of the fToken to withdraw. | - + -### CellarV2Governance.SetupAdaptor -Allows owner to add new adaptors for the cellar to use. +### FTokenAdaptorV1Calls -Represents function `setupAdaptor(address adaptor)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| adaptor | [string](#string) | | Address of the adaptor | - - +| calls | [FTokenAdaptorV1](#steward-v4-FTokenAdaptorV1) | repeated | | - -### CellarV2_2 + + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| function_call | [CellarV2_2.FunctionCall](#steward-v4-CellarV2_2-FunctionCall) | | Represents a single function call | -| multicall | [CellarV2_2.Multicall](#steward-v4-CellarV2_2-Multicall) | | Represents multiple, ordered function calls | + + + +## fees_and_reserves.proto - -### CellarV2_2.AddPosition -Insert a trusted position to the list of positions used by the cellar at a given index. + -Represents function `addPosition(uint32 index, uint32 positionId, bytes configurationData, bool inDebtArray)` +### FeesAndReservesAdaptorV1 +Represents call data for the FeesAndReserves and FeesAndReservesAdaptor contracts. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index | [uint32](#uint32) | | Index at which to add the position | -| position_id | [uint32](#uint32) | | The position's ID in the cellar registry | -| configuration_data | [bytes](#bytes) | | Data used to configure how the position behaves | -| in_debt_array | [bool](#bool) | | Whether to add position in the debt array, or the credit array. | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| update_performance_fees | [FeesAndReservesAdaptorV1.UpdatePerformanceFees](#steward-v4-FeesAndReservesAdaptorV1-UpdatePerformanceFees) | | Represents function `updatePerformanceFee(uint32 performanceFee)` | +| update_management_fees | [FeesAndReservesAdaptorV1.UpdateManagementFees](#steward-v4-FeesAndReservesAdaptorV1-UpdateManagementFees) | | Represents function `updateManagementFee(uint32 managementFee)` | +| change_upkeep_frequency | [FeesAndReservesAdaptorV1.ChangeUpkeepFrequency](#steward-v4-FeesAndReservesAdaptorV1-ChangeUpkeepFrequency) | | Represents function `changeUpkeepFrequency(uint64 newFrequency)` | +| change_upkeep_max_gas | [FeesAndReservesAdaptorV1.ChangeUpkeepMaxGas](#steward-v4-FeesAndReservesAdaptorV1-ChangeUpkeepMaxGas) | | Represents function `changeUpkeepMaxGas(uint64 newMaxGas)` | +| setup_meta_data | [FeesAndReservesAdaptorV1.SetupMetaData](#steward-v4-FeesAndReservesAdaptorV1-SetupMetaData) | | Represents function `setupMetaData(uint32 managementFee, uint32 performanceFee)` | +| add_assets_to_reserves | [FeesAndReservesAdaptorV1.AddAssetsToReserves](#steward-v4-FeesAndReservesAdaptorV1-AddAssetsToReserves) | | Represents function `addAssetsToReserves(uint256 amount)` | +| withdraw_assets_from_reserves | [FeesAndReservesAdaptorV1.WithdrawAssetsFromReserves](#steward-v4-FeesAndReservesAdaptorV1-WithdrawAssetsFromReserves) | | Represents function `withdrawAssetsFromReserves(uint256 amount)` | +| prepare_fees | [FeesAndReservesAdaptorV1.PrepareFees](#steward-v4-FeesAndReservesAdaptorV1-PrepareFees) | | Represents function `prepareFees(uint256 amount)` | - + -### CellarV2_2.CallOnAdaptor -Allows strategists to manage their Cellar using arbitrary logic calls to adaptors. +### FeesAndReservesAdaptorV1.AddAssetsToReserves +Allows the owner to add assets to the Cellar's reserves -Represents function `callOnAdaptor(AdaptorCall[] memory data)` +Represents function `addAssetsToReserves(uint256 amount)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| data | [AdaptorCall](#steward-v4-AdaptorCall) | repeated | | +| amount | [string](#string) | | | - + -### CellarV2_2.FunctionCall -The function you wish to execute on the target cellar +### FeesAndReservesAdaptorV1.ChangeUpkeepFrequency +Allows the owner to update a Cellar's upkeep frequency. + +Represents function `changeUpkeepFrequency(uint64 newFrequency)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| add_position | [CellarV2_2.AddPosition](#steward-v4-CellarV2_2-AddPosition) | | Represents function `addPosition(uint256 index, address position)` | -| call_on_adaptor | [CellarV2_2.CallOnAdaptor](#steward-v4-CellarV2_2-CallOnAdaptor) | | Represents function `callOnAdaptor(AdaptorCall[] memory data)` | -| remove_position | [CellarV2_2.RemovePosition](#steward-v4-CellarV2_2-RemovePosition) | | Represents function `removePosition(uint256 index)` | -| set_holding_position | [CellarV2_2.SetHoldingPosition](#steward-v4-CellarV2_2-SetHoldingPosition) | | Represents function `setHoldingPosition(uint32 position_id)` | -| set_strategist_payout_address | [CellarV2_2.SetStrategistPayoutAddress](#steward-v4-CellarV2_2-SetStrategistPayoutAddress) | | Represents function `setStrategistPayoutAddress(address payout)` | -| swap_positions | [CellarV2_2.SwapPositions](#steward-v4-CellarV2_2-SwapPositions) | | Represents function `swapPositions(uint256 index1, uint256 index2)` | -| set_rebalance_deviation | [CellarV2_2.SetRebalanceDeviation](#steward-v4-CellarV2_2-SetRebalanceDeviation) | | Represents function `setRebalanceDeviation(uint265)` | -| set_share_lock_period | [CellarV2_2.SetShareLockPeriod](#steward-v4-CellarV2_2-SetShareLockPeriod) | | Represents function `setShareLockPeriod(uint256 newLock)` | -| initiate_shutdown | [CellarV2_2.InitiateShutdown](#steward-v4-CellarV2_2-InitiateShutdown) | | Represents function `initiateShutdown()` | -| set_strategist_platform_cut | [CellarV2_2.SetStrategistPlatformCut](#steward-v4-CellarV2_2-SetStrategistPlatformCut) | | Represents function `setStrategistPlatformCut(uint64 cut)` | -| lift_shutdown | [CellarV2_2.LiftShutdown](#steward-v4-CellarV2_2-LiftShutdown) | | Represents function `liftShutdown()` | +| new_frequency | [uint64](#uint64) | | | - + -### CellarV2_2.InitiateShutdown -Shutdown the cellar. Used in an emergency or if the cellar has been deprecated. +### FeesAndReservesAdaptorV1.ChangeUpkeepMaxGas +Allows the owner to update a Cellar's upkeep max gas. -Represents function `initiateShutdown()` +Represents function `changeUpkeepMaxGas(uint64 newMaxGas)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| new_max_gas | [uint64](#uint64) | | | - -### CellarV2_2.LiftShutdown -Allows the owner to restart a shut down Cellar -Represents function `liftShutdown()` + +### FeesAndReservesAdaptorV1.PrepareFees +Allows the owner to prepare fees to be split between the platform, strategist, and protocol +Represents function `prepareFees(uint256 amount)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [string](#string) | | | - -### CellarV2_2.Multicall -Allows caller to call multiple functions in a single TX. -Represents function `multicall(bytes[] data)` + + + + +### FeesAndReservesAdaptorV1.SetupMetaData +Allows the owner to set the Cellar's fee metadata + +Represents function `setupMetaData(uint32 managementFee, uint32 performanceFee)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| function_calls | [CellarV2_2.FunctionCall](#steward-v4-CellarV2_2-FunctionCall) | repeated | | +| management_fee | [uint32](#uint32) | | | +| performance_fee | [uint32](#uint32) | | | - + -### CellarV2_2.RemovePosition -Remove the position at a given index from the list of positions used by the cellar. +### FeesAndReservesAdaptorV1.UpdateManagementFees +Allows the owner to update a Cellar's management fee. -Represents function `removePosition(uint32 index, bool inDebtArray)` +Represents function `updateManagementFee(uint32 managementFee)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index | [uint32](#uint32) | | Index at which to remove the position | -| in_debt_array | [bool](#bool) | | Whether to remove position from the debt array, or the credit array. | +| management_fee | [uint32](#uint32) | | | - + -### CellarV2_2.SetHoldingPosition -Set the holding position used of the cellar. +### FeesAndReservesAdaptorV1.UpdatePerformanceFees +Allows the owner to update a Cellar's performance fee. -Represents function `setHoldingIndex(uint8 index)` +Represents function `updatePerformanceFee(uint32 performanceFee)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| position_id | [uint32](#uint32) | | ID (index) of the new holding position to use | - +| performance_fee | [uint32](#uint32) | | | - -### CellarV2_2.SetRebalanceDeviation -Changes the cellar's allowed rebalance deviation, which is the percent the total assets of a cellar may deviate -during a `callOnAdaptor`(rebalance) call. The maximum allowed deviation is 100000000000000000 (0.1e18), or 10%. + -Represents function `setRebalanceDeviation(uint256)` +### FeesAndReservesAdaptorV1.WithdrawAssetsFromReserves +Allows the owner to withdraw assets from the Cellar's reserves + +Represents function `withdrawAssetsFromReserves(uint256 amount)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_deviation | [string](#string) | | | +| amount | [string](#string) | | | - + -### CellarV2_2.SetShareLockPeriod -Allows share lock period to be updated. +### FeesAndReservesAdaptorV1Calls -Represents function `setShareLockPeriod()` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_lock | [string](#string) | | | - - +| calls | [FeesAndReservesAdaptorV1](#steward-v4-FeesAndReservesAdaptorV1) | repeated | | - -### CellarV2_2.SetStrategistPayoutAddress -Sets the Strategists payout address. + -Represents function `setStrategistPayoutAddress(address payout)` + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| payout | [string](#string) | | | + + + +## governance.proto - -### CellarV2_2.SetStrategistPlatformCut -Allows strategist to set the platform cut for the cellar. + -Represents function `setStrategistPlatformCut(uint64 cut)` +### GovernanceCall +Represents a governance-executed cellar function call. Used for Scheduled Cork Proposals in Sommelier. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_cut | [uint64](#uint64) | | The new strategist platform cut | +| aave_v2_stablecoin | [AaveV2StablecoinGovernance](#steward-v4-AaveV2StablecoinGovernance) | | Governance function calls to the AaveV2Stablecoin cellar | +| cellar_v1 | [CellarV1Governance](#steward-v4-CellarV1Governance) | | Governance function calls to V1 cellars | +| cellar_v2 | [CellarV2Governance](#steward-v4-CellarV2Governance) | | Governance function calls to V2 cellars | +| cellar_v2_2 | [CellarV2_2Governance](#steward-v4-CellarV2_2Governance) | | Governance function calls to the V2.2 cellars | +| cellar_v2_5 | [CellarV2_5Governance](#steward-v4-CellarV2_5Governance) | | Governance function calls to the V2.5 cellars | + - + -### CellarV2_2.SwapPositions -Swap the positions at two given indeces. + -Represents function `swapPositions(uint32 index1, uint32 index2)` + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| index_1 | [uint32](#uint32) | | Index of the first position | -| index_2 | [uint32](#uint32) | | Index of the second position | -| in_debt_array | [bool](#bool) | | Whether to switch positions in the debt array, or the credit array. | + + +## legacy_cellar_adaptor.proto + - +### LegacyCellarAdaptorV1 -### CellarV2_2Governance -Represent a function call initiated through a governance proposal | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| add_adaptor_to_catalogue | [CellarV2_2Governance.AddAdaptorToCatalogue](#steward-v4-CellarV2_2Governance-AddAdaptorToCatalogue) | | Represents function `addAdaptorToCatalogue(address adaptor)` | -| add_position_to_catalogue | [CellarV2_2Governance.AddPositionToCatalogue](#steward-v4-CellarV2_2Governance-AddPositionToCatalogue) | | Represents function `addPositionToCatalogue(uint32 positionId)` | -| remove_adaptor_from_catalogue | [CellarV2_2Governance.RemoveAdaptorFromCatalogue](#steward-v4-CellarV2_2Governance-RemoveAdaptorFromCatalogue) | | Represents function `removeAdaptorFromCatalogue(address adaptor)` | -| remove_position_from_catalogue | [CellarV2_2Governance.RemovePositionFromCatalogue](#steward-v4-CellarV2_2Governance-RemovePositionFromCatalogue) | | Represents function `removePositionFromCatalogue(uint32 positionId)` | -| force_position_out | [CellarV2_2Governance.ForcePositionOut](#steward-v4-CellarV2_2Governance-ForcePositionOut) | | Represents function `forcePositionOut(uint32 index, uint32 positionId, bool inDebtArray)` | -| toggle_ignore_pause | [CellarV2_2Governance.ToggleIgnorePause](#steward-v4-CellarV2_2Governance-ToggleIgnorePause) | | Represents function `toggleIgnorePause(bool ignore)` | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| depositToCellar | [LegacyCellarAdaptorV1.DepositToCellar](#steward-v4-LegacyCellarAdaptorV1-DepositToCellar) | | Represents function `depositToCellar(Cellar cellar, uint256 assets, address oracle)` | +| withdrawFromCellar | [LegacyCellarAdaptorV1.WithdrawFromCellar](#steward-v4-LegacyCellarAdaptorV1-WithdrawFromCellar) | | Represents function `withdrawFromCellar(Cellar cellar, uint256 assets, address oracle)` | - + -### CellarV2_2Governance.AddAdaptorToCatalogue -Allows the owner to add an adaptor to the Cellar's adaptor catalogue +### LegacyCellarAdaptorV1.DepositToCellar +Allows strategists to deposit into Cellar positions. -Represents function `addAdaptorToCatalogue(address adaptor)` +Represents function `depositToCellar(Cellar cellar, uint256 assets, address oracle)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| adaptor | [string](#string) | | | +| cellar | [string](#string) | | | +| assets | [string](#string) | | | +| oracle | [string](#string) | | | - + -### CellarV2_2Governance.AddPositionToCatalogue -Allows the owner to add a position to the Cellar's position catalogue +### LegacyCellarAdaptorV1.WithdrawFromCellar +Allows strategists to withdraw from Cellar positions. -Represents function `addPositionToCatalogue(uint32 positionId)` +Represents function `withdrawFromCellar(Cellar cellar, uint256 assets, address oracle)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| position_id | [uint32](#uint32) | | | +| cellar | [string](#string) | | | +| assets | [string](#string) | | | +| oracle | [string](#string) | | | - + -### CellarV2_2Governance.ForcePositionOut -Allows caller to force a position out of the cellar +### LegacyCellarAdaptorV1Calls -Represents function `forcePositionOut(uint32 index, uint32 positionId, bool inDebtArray)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| index | [uint32](#uint32) | | | -| position_id | [uint32](#uint32) | | | -| in_debt_array | [bool](#bool) | | | - - +| calls | [LegacyCellarAdaptorV1](#steward-v4-LegacyCellarAdaptorV1) | repeated | | - -### CellarV2_2Governance.RemoveAdaptorFromCatalogue -Allows callers to remove adaptors from this cellar's catalogue + -Represents function `removeAdaptorFromCatalogue(address adaptor)` + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| adaptor | [string](#string) | | | + + + +## morpho_aave_v2_a_token.proto - -### CellarV2_2Governance.RemovePositionFromCatalogue -Allows caller to remove positions from this cellar's catalogue + -Represents function `removePositionFromCatalogue(uint32 positionId)` +### MorphoAaveV2ATokenAdaptorV1 +Represents call data for the Morpho Aave V2 AToken adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| position_id | [uint32](#uint32) | | | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| deposit_to_aave_v2_morpho | [MorphoAaveV2ATokenAdaptorV1.DepositToAaveV2Morpho](#steward-v4-MorphoAaveV2ATokenAdaptorV1-DepositToAaveV2Morpho) | | Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` | +| withdraw_from_aave_v2_morpho | [MorphoAaveV2ATokenAdaptorV1.WithdrawFromAaveV2Morpho](#steward-v4-MorphoAaveV2ATokenAdaptorV1-WithdrawFromAaveV2Morpho) | | Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` | +| claim | [Claim](#steward-v4-Claim) | | Represents function `claim(uint256 claimable, bytes32[] memory proof)` | - + -### CellarV2_2Governance.ToggleIgnorePause -Allows caller to toggle the ignorePause flag on the cellar +### MorphoAaveV2ATokenAdaptorV1.DepositToAaveV2Morpho +Allows strategists to lend assets on Morpho. -Represents function `toggleIgnorePause(bool ignore)` +Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| ignore | [bool](#bool) | | | +| a_token | [string](#string) | | The address of the Aave V2 aToken to deposit to. | +| amount_to_deposit | [string](#string) | | The amount of the asset to deposit. | - - + - +### MorphoAaveV2ATokenAdaptorV1.WithdrawFromAaveV2Morpho +Allows strategists to withdraw assets from Morpho. - +Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| a_token | [string](#string) | | The address of the Aave V2 aToken to withdraw from. | +| amount_to_withdraw | [string](#string) | | The amount of the asset to withdraw. | - - -## common.proto - -### OracleSwapParams -Represents swap params for BaseAdaptor.oracleSwap() + + +### MorphoAaveV2ATokenAdaptorV1Calls + | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| univ2_params | [UniV2OracleSwapParams](#steward-v4-UniV2OracleSwapParams) | | | -| univ3_params | [UniV3OracleSwapParams](#steward-v4-UniV3OracleSwapParams) | | | +| calls | [MorphoAaveV2ATokenAdaptorV1](#steward-v4-MorphoAaveV2ATokenAdaptorV1) | repeated | | + - + -### SwapParams -Represents swap parameters for an exchange + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| univ2_params | [UniV2SwapParams](#steward-v4-UniV2SwapParams) | | Params for a Uniswap V2 swap | -| univ3_params | [UniV3SwapParams](#steward-v4-UniV3SwapParams) | | Params for a Uniswap V3 swap | + + +## morpho_aave_v2_debt_token.proto - + -### UniV2OracleSwapParams -Represents oracle swap parameters for UniswapV2 +### MorphoAaveV2DebtTokenAdaptorV1 +Represents call data for the Morpho Aave V2 Debt Token adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| path | [string](#string) | repeated | Array of addresses dictating what swap path to follow | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| borrow_from_aave_v2_morpho | [MorphoAaveV2DebtTokenAdaptorV1.BorrowFromAaveV2Morpho](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1-BorrowFromAaveV2Morpho) | | Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` | +| repay_aave_v2_morpho_debt | [MorphoAaveV2DebtTokenAdaptorV1.RepayAaveV2MorphoDebt](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1-RepayAaveV2MorphoDebt) | | Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` | - + -### UniV2SwapParams -Represents swap parameters for UniswapV2 +### MorphoAaveV2DebtTokenAdaptorV1.BorrowFromAaveV2Morpho +Allows strategists to borrow assets from Aave. + +Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| path | [string](#string) | repeated | Array of addresses dictating what swap path to follow | -| amount | [string](#string) | | Amount of the first asset in the path to swap | -| amount_out_min | [string](#string) | | The minimum amount of the last asset in the path to receive | +| a_token | [string](#string) | | The address of the Aave V2 aToken to borrow. | +| amount_to_borrow | [string](#string) | | The amount of the asset to borrow. | - + -### UniV3OracleSwapParams -Represents oracle swap parameters for UniswapV3 +### MorphoAaveV2DebtTokenAdaptorV1.RepayAaveV2MorphoDebt +Allows strategists to repay loan debt on Aave. + +Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| path | [string](#string) | repeated | Array of addresses dictating what swap path to follow | -| pool_fees | [uint32](#uint32) | repeated | Array of pool fees dictating what swap pools to use | +| a_token | [string](#string) | | The address of the Aave V2 aToken to repay. | +| amount_to_repay | [string](#string) | | The amount of the asset to repay. | - + + +### MorphoAaveV2DebtTokenAdaptorV1Calls -### UniV3SwapParams -Represents swap parameters for UniswapV3 | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| path | [string](#string) | repeated | Array of addresses dictating what swap path to follow | -| pool_fees | [uint32](#uint32) | repeated | Array of pool fees dictating what swap pools to use | -| amount | [string](#string) | | Amount of the first asset in the path to swap | -| amount_out_min | [string](#string) | | The minimum amount of the last asset in the path to receive | +| calls | [MorphoAaveV2DebtTokenAdaptorV1](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1) | repeated | | @@ -2550,19 +5822,6 @@ Represents swap parameters for UniswapV3 - - - -### Exchange -Exchange selector - -| Name | Number | Description | -| ---- | ------ | ----------- | -| EXCHANGE_UNSPECIFIED | 0 | | -| EXCHANGE_UNIV2 | 1 | Represents Uniswap V2 | -| EXCHANGE_UNIV3 | 2 | Represents Uniswap V3 | - - @@ -2571,167 +5830,163 @@ Exchange selector - + -## debt_token.proto +## morpho_aave_v3_a_token_collateral.proto - + -### AaveDebtTokenAdaptorV1 -Represents call data for the Aave Debt Token adaptor V1, used for borrowing and repaying debt on Aave. +### MorphoAaveV3ATokenCollateralAdaptorV1 +Represents call data for the Morpho Aave V3 AToken Collateral adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| swap | [Swap](#steward-v4-Swap) | | Represents function `swap(ERC20 assetIn, ERC20 assetOut, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params)` | -| oracle_swap | [OracleSwap](#steward-v4-OracleSwap) | | Represents function `oracleSwap(ERC20 assetIn, ERC20 assetOut, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params, uint64 slippage)` | | revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| borrow_from_aave | [AaveDebtTokenAdaptorV1.BorrowFromAave](#steward-v4-AaveDebtTokenAdaptorV1-BorrowFromAave) | | Represents function `borrowFromAave(ERC20 debtTokenToBorrow, uint256 amountToBorrow)` | -| repay_aave_debt | [AaveDebtTokenAdaptorV1.RepayAaveDebt](#steward-v4-AaveDebtTokenAdaptorV1-RepayAaveDebt) | | Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | -| swap_and_repay | [AaveDebtTokenAdaptorV1.SwapAndRepay](#steward-v4-AaveDebtTokenAdaptorV1-SwapAndRepay) | | Represents function `swapAndRepay(ERC20 tokenIn, ERC20 tokenToRepay, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params)` | +| deposit_to_aave_v3_morpho | [MorphoAaveV3ATokenCollateralAdaptorV1.DepositToAaveV3Morpho](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1-DepositToAaveV3Morpho) | | Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` | +| withdraw_from_aave_v3_morpho | [MorphoAaveV3ATokenCollateralAdaptorV1.WithdrawFromAaveV3Morpho](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1-WithdrawFromAaveV3Morpho) | | Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` | +| claim | [Claim](#steward-v4-Claim) | | Represents function `claim(uint256 claimable, bytes32[] memory proof)` | - + -### AaveDebtTokenAdaptorV1.BorrowFromAave -Allows strategists to borrow assets from Aave. +### MorphoAaveV3ATokenCollateralAdaptorV1.DepositToAaveV3Morpho +Allows strategists to lend assets on Morpho -Represents function `depositToAave(ERC20 tokenToDeposit, uint256 amountToDeposit)` +Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` | Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| token | [string](#string) | | The address of the ERC20 token to borrow | -| amount | [string](#string) | | The amount to borrow | +| ----- | ---- | ----- | ----------- | +| token_to_deposit | [string](#string) | | The address of the token to deposit | +| amount_to_deposit | [string](#string) | | The amount of tokens to deposit | - + -### AaveDebtTokenAdaptorV1.RepayAaveDebt -Allows strategists to repay loan debt on Aave. +### MorphoAaveV3ATokenCollateralAdaptorV1.WithdrawFromAaveV3Morpho +Allows strategists to withdraw assets from Morpho -Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` +Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token | [string](#string) | | The address of the ERC20 token to repay | -| amount | [string](#string) | | The amount to repay | +| token_to_withdraw | [string](#string) | | The address of the token to withdraw | +| amount_to_withdraw | [string](#string) | | The amount of tokens to withdraw | - + -### AaveDebtTokenAdaptorV1.SwapAndRepay -Allows strategists to swap assets and repay loans in one call. +### MorphoAaveV3ATokenCollateralAdaptorV1Calls -Represents function `swapAndRepay(ERC20 tokenIn, ERC20 tokenToRepay, uint256 amountIn, SwapRouter.Exchange exchange, bytes memory params)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token_in | [string](#string) | | The address of the token to swap from | -| token_to_repay | [string](#string) | | The address of the token to swap to and repay with | -| amount_in | [string](#string) | | The amount to swap | -| exchange | [Exchange](#steward-v4-Exchange) | | The exchange to make the swap on | -| params | [SwapParams](#steward-v4-SwapParams) | | The parameters for the swap | - +| calls | [MorphoAaveV3ATokenCollateralAdaptorV1](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1) | repeated | | - + -### AaveDebtTokenAdaptorV1Calls + + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| calls | [AaveDebtTokenAdaptorV1](#steward-v4-AaveDebtTokenAdaptorV1) | repeated | | + + +## morpho_aave_v3_a_token_p2p.proto - + -### AaveDebtTokenAdaptorV2 -Represents call data for the Aave Debt Token adaptor V2, used for borrowing and repaying debt on Aave. +### MorphoAaveV3ATokenP2PAdaptorV1 +Represents call data for the Morpho Aave V3 A Token P2P adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| borrow_from_aave | [AaveDebtTokenAdaptorV2.BorrowFromAave](#steward-v4-AaveDebtTokenAdaptorV2-BorrowFromAave) | | Represents function `borrowFromAave(ERC20 debtTokenToBorrow, uint256 amountToBorrow)` | -| repay_aave_debt | [AaveDebtTokenAdaptorV2.RepayAaveDebt](#steward-v4-AaveDebtTokenAdaptorV2-RepayAaveDebt) | | Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | +| deposit_to_aave_v3_morpho | [MorphoAaveV3ATokenP2PAdaptorV1.DepositToAaveV3Morpho](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1-DepositToAaveV3Morpho) | | Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` | +| withdraw_from_aave_v3_morpho | [MorphoAaveV3ATokenP2PAdaptorV1.WithdrawFromAaveV3Morpho](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1-WithdrawFromAaveV3Morpho) | | Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` | +| claim | [Claim](#steward-v4-Claim) | | Represents function `claim(uint256 claimable, bytes32[] memory proof)` | - + -### AaveDebtTokenAdaptorV2.BorrowFromAave -Allows strategists to borrow assets from Aave. +### MorphoAaveV3ATokenP2PAdaptorV1.DepositToAaveV3Morpho +Allows strategists to lend assets on Morpho -Represents function `depositToAave(ERC20 tokenToDeposit, uint256 amountToDeposit)` +Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token | [string](#string) | | The address of the ERC20 token to borrow | -| amount | [string](#string) | | The amount to borrow | +| token_to_deposit | [string](#string) | | The address of the token to deposit | +| amount_to_deposit | [string](#string) | | The amount of tokens to deposit | +| max_iterations | [string](#string) | | The maximum number of iterations to run | - + -### AaveDebtTokenAdaptorV2.RepayAaveDebt -Allows strategists to repay loan debt on Aave. +### MorphoAaveV3ATokenP2PAdaptorV1.WithdrawFromAaveV3Morpho +Allows strategists to withdraw assets from Morpho -Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` +Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token | [string](#string) | | The address of the ERC20 token to repay | -| amount | [string](#string) | | The amount to repay | +| token_to_withdraw | [string](#string) | | The address of the token to withdraw | +| amount_to_withdraw | [string](#string) | | The amount of tokens to withdraw | +| max_iterations | [string](#string) | | The maximum number of iterations to run | - + -### AaveDebtTokenAdaptorV2Calls +### MorphoAaveV3ATokenP2PAdaptorV1Calls | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [AaveDebtTokenAdaptorV2](#steward-v4-AaveDebtTokenAdaptorV2) | repeated | | +| calls | [MorphoAaveV3ATokenP2PAdaptorV1](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1) | repeated | | @@ -2747,337 +6002,328 @@ Represents function `repayAaveDebt(ERC20 tokenToRepay, uint256 amountToRepay)` - + -## f_token.proto +## morpho_aave_v3_debt_token.proto - + -### FTokenAdaptorV1 -Represents call data for the Frax adaptor. +### MorphoAaveV3DebtTokenAdaptorV1 +Represents call data for the Morpho Aave V3 Debt Token adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| lend_frax | [FTokenAdaptorV1.LendFrax](#steward-v4-FTokenAdaptorV1-LendFrax) | | Represents function `lendFrax(IFToken fToken, uint256 amountToDeposit)` | -| redeem_frax_share | [FTokenAdaptorV1.RedeemFraxShare](#steward-v4-FTokenAdaptorV1-RedeemFraxShare) | | Represents function `redeemFraxShare(IFToken fToken, uint256 amountToRedeem)` | -| withdraw_frax | [FTokenAdaptorV1.WithdrawFrax](#steward-v4-FTokenAdaptorV1-WithdrawFrax) | | Represents function `withdrawFrax(IFToken fToken, uint256 amountToWithdraw)` | -| call_add_interest | [FTokenAdaptorV1.CallAddInterest](#steward-v4-FTokenAdaptorV1-CallAddInterest) | | Represents function `callAddInterest(IFToken fToken)` | +| borrow_from_aave_v3_morpho | [MorphoAaveV3DebtTokenAdaptorV1.BorrowFromAaveV3Morpho](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1-BorrowFromAaveV3Morpho) | | Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` | +| repay_aave_v3_morpho_debt | [MorphoAaveV3DebtTokenAdaptorV1.RepayAaveV3MorphoDebt](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1-RepayAaveV3MorphoDebt) | | Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | - + -### FTokenAdaptorV1.CallAddInterest -Allows a strategist to call `addInterest` on a Frax Pair they are using +### MorphoAaveV3DebtTokenAdaptorV1.BorrowFromAaveV3Morpho +Allows strategists to borrow assets from Morpho -Represents `function callAddInterest(IFToken fToken)` +Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| f_token | [string](#string) | | The address of the fToken to call `addInterest` on. | +| underlying | [string](#string) | | The underlying asset to borrow | +| amount_to_borrow | [string](#string) | | The amount of the underlying asset to borrow | +| max_iterations | [string](#string) | | The maximum number of iterations to perform | - + -### FTokenAdaptorV1.LendFrax -Allows strategists to lend FRAX on FraxLend +### MorphoAaveV3DebtTokenAdaptorV1.RepayAaveV3MorphoDebt +Allows strategists to repay loan debt on Morpho -Represents `function lendFrax(IFToken fToken, uint256 amountToDeposit)` +Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| f_token | [string](#string) | | The address of the fToken to lend. | -| amount_to_deposit | [string](#string) | | The amount of the fToken to lend. | +| token_to_repay | [string](#string) | | The token to repay | +| amount_to_repay | [string](#string) | | The amount of the token to repay | - + -### FTokenAdaptorV1.RedeemFraxShare -Allows strategists to redeem FRAX shares on FraxLend +### MorphoAaveV3DebtTokenAdaptorV1Calls -Represents `function redeemFraxShare(IFToken fToken, uint256 amountToRedeem)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| f_token | [string](#string) | | The address of the fToken to redeem. | -| amount_to_redeem | [string](#string) | | The amount of the fToken to redeem. | - - +| calls | [MorphoAaveV3DebtTokenAdaptorV1](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1) | repeated | | - -### FTokenAdaptorV1.WithdrawFrax -Allows strategists to withdraw FRAX from FraxLend + -Represents `function withdrawFrax(IFToken fToken, uint256 amountToWithdraw)` + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| f_token | [string](#string) | | The address of the fToken to withdraw. | -| amount_to_withdraw | [string](#string) | | The amount of the fToken to withdraw. | + + + +## morpho_blue_collateral.proto - -### FTokenAdaptorV1Calls + +### MorphoBlueCollateralAdaptorV1 +Represents call data for the Morpho Blue Collateral adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [FTokenAdaptorV1](#steward-v4-FTokenAdaptorV1) | repeated | | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| add_collateral | [MorphoBlueCollateralAdaptorV1.AddCollateral](#steward-v4-MorphoBlueCollateralAdaptorV1-AddCollateral) | | Represents function `addCollateral(MarketParams memory _market, uint256 _collateralToDeposit)` | +| remove_collateral | [MorphoBlueCollateralAdaptorV1.RemoveCollateral](#steward-v4-MorphoBlueCollateralAdaptorV1-RemoveCollateral) | | Represents function `removeCollateral(MarketParams memory _market, uint256 _collateralAmount)` | - - + - +### MorphoBlueCollateralAdaptorV1.AddCollateral +Allows strategists to add collateral to the respective cellar position on specified MB Market, enabling borrowing. - +Represents function `addCollateral(MarketParams memory _market, uint256 _collateralToDeposit)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| market | [MarketParams](#steward-v4-MarketParams) | | Identifier of a Morpho Blue Market | +| collateral_to_deposit | [string](#string) | | The amount of collateral to add | - - -## fees_and_reserves.proto - -### FeesAndReservesAdaptorV1 -Represents call data for the FeesAndReserves and FeesAndReservesAdaptor contracts. + + +### MorphoBlueCollateralAdaptorV1.RemoveCollateral +Allows strategists to remove collateral from the respective cellar position on specified MB Market. + +Represents function `removeCollateral(MarketParams memory _market, uint256 _collateralAmount)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| update_performance_fees | [FeesAndReservesAdaptorV1.UpdatePerformanceFees](#steward-v4-FeesAndReservesAdaptorV1-UpdatePerformanceFees) | | Represents function `updatePerformanceFee(uint32 performanceFee)` | -| update_management_fees | [FeesAndReservesAdaptorV1.UpdateManagementFees](#steward-v4-FeesAndReservesAdaptorV1-UpdateManagementFees) | | Represents function `updateManagementFee(uint32 managementFee)` | -| change_upkeep_frequency | [FeesAndReservesAdaptorV1.ChangeUpkeepFrequency](#steward-v4-FeesAndReservesAdaptorV1-ChangeUpkeepFrequency) | | Represents function `changeUpkeepFrequency(uint64 newFrequency)` | -| change_upkeep_max_gas | [FeesAndReservesAdaptorV1.ChangeUpkeepMaxGas](#steward-v4-FeesAndReservesAdaptorV1-ChangeUpkeepMaxGas) | | Represents function `changeUpkeepMaxGas(uint64 newMaxGas)` | -| setup_meta_data | [FeesAndReservesAdaptorV1.SetupMetaData](#steward-v4-FeesAndReservesAdaptorV1-SetupMetaData) | | Represents function `setupMetaData(uint32 managementFee, uint32 performanceFee)` | -| add_assets_to_reserves | [FeesAndReservesAdaptorV1.AddAssetsToReserves](#steward-v4-FeesAndReservesAdaptorV1-AddAssetsToReserves) | | Represents function `addAssetsToReserves(uint256 amount)` | -| withdraw_assets_from_reserves | [FeesAndReservesAdaptorV1.WithdrawAssetsFromReserves](#steward-v4-FeesAndReservesAdaptorV1-WithdrawAssetsFromReserves) | | Represents function `withdrawAssetsFromReserves(uint256 amount)` | -| prepare_fees | [FeesAndReservesAdaptorV1.PrepareFees](#steward-v4-FeesAndReservesAdaptorV1-PrepareFees) | | Represents function `prepareFees(uint256 amount)` | +| market | [MarketParams](#steward-v4-MarketParams) | | Identifier of a Morpho Blue Market | +| collateral_amount | [string](#string) | | The amount of collateral to remove | - + -### FeesAndReservesAdaptorV1.AddAssetsToReserves -Allows the owner to add assets to the Cellar's reserves +### MorphoBlueCollateralAdaptorV1Calls -Represents function `addAssetsToReserves(uint256 amount)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [string](#string) | | | - +| calls | [MorphoBlueCollateralAdaptorV1](#steward-v4-MorphoBlueCollateralAdaptorV1) | repeated | | - - -### FeesAndReservesAdaptorV1.ChangeUpkeepFrequency -Allows the owner to update a Cellar's upkeep frequency. + -Represents function `changeUpkeepFrequency(uint64 newFrequency)` + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| new_frequency | [uint64](#uint64) | | | + + + +## morpho_blue_debt.proto - -### FeesAndReservesAdaptorV1.ChangeUpkeepMaxGas -Allows the owner to update a Cellar's upkeep max gas. + -Represents function `changeUpkeepMaxGas(uint64 newMaxGas)` +### MorphoBlueDebtAdaptorV1 +Represents call data for the Morpho Blue Debt adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| new_max_gas | [uint64](#uint64) | | | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| borrow_from_morpho_blue | [MorphoBlueDebtAdaptorV1.BorrowFromMorphoBlue](#steward-v4-MorphoBlueDebtAdaptorV1-BorrowFromMorphoBlue) | | Represents function `borrowFromMorphoBlue(MarketParams memory _market, uint256 _amountToBorrow)` | +| repay_morpho_blue_debt | [MorphoBlueDebtAdaptorV1.RepayMorphoBlueDebt](#steward-v4-MorphoBlueDebtAdaptorV1-RepayMorphoBlueDebt) | | Represents function `repayMorphoBlueDebt(MarketParams memory _market, uint256 _debtTokenRepayAmount)` | - + -### FeesAndReservesAdaptorV1.PrepareFees -Allows the owner to prepare fees to be split between the platform, strategist, and protocol +### MorphoBlueDebtAdaptorV1.BorrowFromMorphoBlue +Allows strategists borrow a specific amount of an asset on Morpho Blue -Represents function `prepareFees(uint256 amount)` +Represents function `borrowFromMorphoBlue(MarketParams memory _market, uint256 _amountToBorrow)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [string](#string) | | | +| market | [MarketParams](#steward-v4-MarketParams) | | Identifier of a Morpho Blue Market | +| amount_to_borrow | [string](#string) | | The amount of the debt token to borrow | - + -### FeesAndReservesAdaptorV1.SetupMetaData -Allows the owner to set the Cellar's fee metadata +### MorphoBlueDebtAdaptorV1.RepayMorphoBlueDebt +Allows strategists to repay loan debt on Morph Blue Lending Market. Make sure to call addInterest() beforehand to ensure we are repaying what is required. -Represents function `setupMetaData(uint32 managementFee, uint32 performanceFee)` +Represents function `repayMorphoBlueDebt(MarketParams memory _market, uint256 _debtTokenRepayAmount)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| management_fee | [uint32](#uint32) | | | -| performance_fee | [uint32](#uint32) | | | +| market | [MarketParams](#steward-v4-MarketParams) | | Identifier of a Morpho Blue Market | +| debt_token_repay_amount | [string](#string) | | The amount of the debt token to repay | - + -### FeesAndReservesAdaptorV1.UpdateManagementFees -Allows the owner to update a Cellar's management fee. +### MorphoBlueDebtAdaptorV1Calls -Represents function `updateManagementFee(uint32 managementFee)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| management_fee | [uint32](#uint32) | | | - +| calls | [MorphoBlueDebtAdaptorV1](#steward-v4-MorphoBlueDebtAdaptorV1) | repeated | | - - -### FeesAndReservesAdaptorV1.UpdatePerformanceFees -Allows the owner to update a Cellar's performance fee. + -Represents function `updatePerformanceFee(uint32 performanceFee)` + + -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| performance_fee | [uint32](#uint32) | | | + + + +## morpho_blue_supply.proto - -### FeesAndReservesAdaptorV1.WithdrawAssetsFromReserves -Allows the owner to withdraw assets from the Cellar's reserves + -Represents function `withdrawAssetsFromReserves(uint256 amount)` +### MorphoBlueSupplyAdaptorV1 +Represents call data for the Morpho Blue Supply adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| amount | [string](#string) | | | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| lend_to_morpho_blue | [MorphoBlueSupplyAdaptorV1.LendToMorphoBlue](#steward-v4-MorphoBlueSupplyAdaptorV1-LendToMorphoBlue) | | Represents function `lendToMorphoBlue(MarketParams memory _market, uint256 _assets)` | +| withdraw_from_morpho_blue | [MorphoBlueSupplyAdaptorV1.WithdrawFromMorphoBlue](#steward-v4-MorphoBlueSupplyAdaptorV1-WithdrawFromMorphoBlue) | | Represents function `withdrawFromMorphoBlue(MarketParams memory _market, uint256 _assets)` | - + -### FeesAndReservesAdaptorV1Calls +### MorphoBlueSupplyAdaptorV1.LendToMorphoBlue +Allows strategists to lend a specific amount for an asset on Morpho Blue +Represents function `lendToMorphoBlue(MarketParams memory _market, uint256 _assets)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [FeesAndReservesAdaptorV1](#steward-v4-FeesAndReservesAdaptorV1) | repeated | | +| market | [MarketParams](#steward-v4-MarketParams) | | Identifier of a Morpho Blue Market | +| assets | [string](#string) | | The amount of the loan token to lend | - - + - +### MorphoBlueSupplyAdaptorV1.WithdrawFromMorphoBlue +Allows strategists to withdraw the underlying asset plus interest - +Represents function `withdrawFromMorphoBlue(MarketParams memory _market, uint256 _assets)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| market | [MarketParams](#steward-v4-MarketParams) | | Identifier of a Morpho Blue Market | +| assets | [string](#string) | | The amount of the loan token to lend | - - -## governance.proto - -### GovernanceCall -Represents a governance-executed cellar function call. Used for Scheduled Cork Proposals in Sommelier. + + +### MorphoBlueSupplyAdaptorV1Calls + | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| aave_v2_stablecoin | [AaveV2StablecoinGovernance](#steward-v4-AaveV2StablecoinGovernance) | | Governance function calls to the AaveV2Stablecoin cellar | -| cellar_v1 | [CellarV1Governance](#steward-v4-CellarV1Governance) | | Governance function calls to V1 cellars | -| cellar_v2 | [CellarV2Governance](#steward-v4-CellarV2Governance) | | Governance function calls to V2 cellars | -| cellar_v2_2 | [CellarV2_2Governance](#steward-v4-CellarV2_2Governance) | | Governance function calls to the V2.2 cellars | +| calls | [MorphoBlueSupplyAdaptorV1](#steward-v4-MorphoBlueSupplyAdaptorV1) | repeated | | @@ -3093,76 +6339,92 @@ Represents a governance-executed cellar function call. Used for Scheduled Cork P - + -## morpho_aave_v2_a_token.proto +## morpho_reward_handler.proto - + -### MorphoAaveV2ATokenAdaptorV1 -Represents call data for the Morpho Aave V2 AToken adaptor. +### Claim +Allows Morpho A Token cellars to claim Morpho Rewards + +Represents function `claim(uint256 claimable, bytes32[] memory proof)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| deposit_to_aave_v2_morpho | [MorphoAaveV2ATokenAdaptorV1.DepositToAaveV2Morpho](#steward-v4-MorphoAaveV2ATokenAdaptorV1-DepositToAaveV2Morpho) | | Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` | -| withdraw_from_aave_v2_morpho | [MorphoAaveV2ATokenAdaptorV1.WithdrawFromAaveV2Morpho](#steward-v4-MorphoAaveV2ATokenAdaptorV1-WithdrawFromAaveV2Morpho) | | Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` | -| claim | [Claim](#steward-v4-Claim) | | Represents function `claim(uint256 claimable, bytes32[] memory proof)` | +| claimable | [string](#string) | | The amount of the asset to withdraw. | +| proof | [bytes](#bytes) | repeated | Proof of claim | + - + -### MorphoAaveV2ATokenAdaptorV1.DepositToAaveV2Morpho -Allows strategists to lend assets on Morpho. + -Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` + + + + + + + +## oneinch.proto + + + + + +### OneInchAdaptorV1 +Represents call data for the OneInch adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| a_token | [string](#string) | | The address of the Aave V2 aToken to deposit to. | -| amount_to_deposit | [string](#string) | | The amount of the asset to deposit. | +| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | +| swap_with_one_inch | [OneInchAdaptorV1.SwapWithOneInch](#steward-v4-OneInchAdaptorV1-SwapWithOneInch) | | Represents function `swapWithOneInch(ERC20 tokenIn, ERC20 tokenOut, uint256 amount, bytes swapCallData)` | - + -### MorphoAaveV2ATokenAdaptorV1.WithdrawFromAaveV2Morpho -Allows strategists to withdraw assets from Morpho. +### OneInchAdaptorV1.SwapWithOneInch +Allows strategists to make ERC20 swaps using 1Inch. -Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` +Represents function `swapWithOneInch(ERC20 tokenIn, ERC20 tokenOut, uint256 amount, bytes swapCallData)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| a_token | [string](#string) | | The address of the Aave V2 aToken to withdraw from. | -| amount_to_withdraw | [string](#string) | | The amount of the asset to withdraw. | +| token_in | [string](#string) | | | +| token_out | [string](#string) | | | +| amount | [string](#string) | | | +| swap_call_data | [bytes](#bytes) | | | - + -### MorphoAaveV2ATokenAdaptorV1Calls +### OneInchAdaptorV1Calls | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [MorphoAaveV2ATokenAdaptorV1](#steward-v4-MorphoAaveV2ATokenAdaptorV1) | repeated | | +| calls | [OneInchAdaptorV1](#steward-v4-OneInchAdaptorV1) | repeated | | @@ -3178,247 +6440,276 @@ Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountT - + -## morpho_aave_v2_debt_token.proto +## pendle.proto - + -### MorphoAaveV2DebtTokenAdaptorV1 -Represents call data for the Morpho Aave V2 Debt Token adaptor. +### PendleAdaptorV1 +Represents call data for the Pendle adaptor. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| borrow_from_aave_v2_morpho | [MorphoAaveV2DebtTokenAdaptorV1.BorrowFromAaveV2Morpho](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1-BorrowFromAaveV2Morpho) | | Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` | -| repay_aave_v2_morpho_debt | [MorphoAaveV2DebtTokenAdaptorV1.RepayAaveV2MorphoDebt](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1-RepayAaveV2MorphoDebt) | | Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` | +| mint_sy_from_token | [PendleAdaptorV1.MintSyFromToken](#steward-v4-PendleAdaptorV1-MintSyFromToken) | | Represents function `mintSyFromToken(IPendleMarket market, uint256 minSyOut, TokenInput memory input)` | +| mint_py_from_sy | [PendleAdaptorV1.MintPyFromSy](#steward-v4-PendleAdaptorV1-MintPyFromSy) | | Represents function `mintPyFromSy(IPendleMarket market, uint256 netSyIn, uint256 minPyOut)` | +| swap_exact_pt_for_yt | [PendleAdaptorV1.SwapExactPtForYt](#steward-v4-PendleAdaptorV1-SwapExactPtForYt) | | Represents function `swapExactPtForYt(IPendleMarket market, uint256 exactPtIn, uint256 minYtOut, ApproxParams calldata guessTotalYtToSwap)` | +| swap_exact_yt_for_pt | [PendleAdaptorV1.SwapExactYtForPt](#steward-v4-PendleAdaptorV1-SwapExactYtForPt) | | Represents function `swapExactYtForPt(IPendleMarket market, uint256 exactYtIn, uint256 minPtOut, ApproxParams calldata guessTotalPtToSwap)` | +| add_liquidity_dual_sy_and_pt | [PendleAdaptorV1.AddLiquidityDualSyAndPt](#steward-v4-PendleAdaptorV1-AddLiquidityDualSyAndPt) | | Represents function `addLiquidityDualSyAndPt(IPendleMarket market, uint256 netSyDesired, uint256 netPtDesired, uint256 minLpOut)` | +| remove_liquidity_dual_sy_and_pt | [PendleAdaptorV1.RemoveLiquidityDualSyAndPt](#steward-v4-PendleAdaptorV1-RemoveLiquidityDualSyAndPt) | | Represents function `removeLiquidityDualSyAndPt(IPendleMarket market, uint256 netLpToRemove, uint256 minSyOut, uint256 minPtOut)` | +| redeem_py_to_sy | [PendleAdaptorV1.RedeemPyToSy](#steward-v4-PendleAdaptorV1-RedeemPyToSy) | | Represents function `redeemPyToSy(IPendleMarket market, uint256 netPyIn, uint256 minSyOut)` | +| redeem_sy_to_token | [PendleAdaptorV1.RedeemSyToToken](#steward-v4-PendleAdaptorV1-RedeemSyToToken) | | Represents function `redeemSyToToken(IPendleMarket market, uint256 netSyIn, TokenOutput memory output)` | - + -### MorphoAaveV2DebtTokenAdaptorV1.BorrowFromAaveV2Morpho -Allows strategists to borrow assets from Aave. +### PendleAdaptorV1.AddLiquidityDualSyAndPt +Allows strategist to add liquidity to a Pendle market. -Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` +Represents function `addLiquidityDualSyAndPt(IPendleMarket market, uint256 netSyDesired, uint256 netPtDesired, uint256 minLpOut)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| a_token | [string](#string) | | The address of the Aave V2 aToken to borrow. | -| amount_to_borrow | [string](#string) | | The amount of the asset to borrow. | - +| market | [string](#string) | | The address of the Pendle market to add liquidity to. | +| net_sy_desired | [string](#string) | | The net amount of SY to add to the market. | +| net_pt_desired | [string](#string) | | The net amount of PT to add to the market. | +| min_lp_out | [string](#string) | | The minimum amount of LP tokens to receive. | - -### MorphoAaveV2DebtTokenAdaptorV1.RepayAaveV2MorphoDebt -Allows strategists to repay loan debt on Aave. + -Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` +### PendleAdaptorV1.ApproxParams +All of these fields are uint256 | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| a_token | [string](#string) | | The address of the Aave V2 aToken to repay. | -| amount_to_repay | [string](#string) | | The amount of the asset to repay. | +| guess_min | [string](#string) | | The minimum guess for the swap. | +| guess_max | [string](#string) | | The maximum guess for the swap. | +| guess_offchain | [string](#string) | | The offchain guess for the swap. | +| max_iteration | [string](#string) | | The maximum number of iterations for the swap. Every iteration, the diff between guessMin and guessMax will be divided by 2. | +| eps | [string](#string) | | the max eps between the returned result & the correct result, base 1e18. Normally this number will be set to 1e15 (1e18/1000 = 0.1%) | - + -### MorphoAaveV2DebtTokenAdaptorV1Calls +### PendleAdaptorV1.MintPyFromSy +Allows strategist to exchange an SY for a PY. +Represents function `mintPyFromSy(IPendleMarket market, uint256 netSyIn, uint256 minPyOut)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [MorphoAaveV2DebtTokenAdaptorV1](#steward-v4-MorphoAaveV2DebtTokenAdaptorV1) | repeated | | +| market | [string](#string) | | The address of the Pendle market to mint PY from. | +| net_sy_in | [string](#string) | | The net amount of SY to exchange for PY. | +| min_py_out | [string](#string) | | The minimum amount of PY to receive. | - - + - +### PendleAdaptorV1.MintSyFromToken +Allows strategist to exchange a token for an SY. - +Represents function `mintSyFromToken(IPendleMarket market, uint256 minSyOut, TokenInput memory input)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| market | [string](#string) | | The address of the Pendle market to mint SY from. | +| min_sy_out | [string](#string) | | The minimum amount of SY to receive. | +| input | [PendleAdaptorV1.TokenInput](#steward-v4-PendleAdaptorV1-TokenInput) | | The input token address to exchange for SY. | - - -## morpho_aave_v3_a_token_collateral.proto - -### MorphoAaveV3ATokenCollateralAdaptorV1 -Represents call data for the Morpho Aave V3 AToken Collateral adaptor. + + +### PendleAdaptorV1.RedeemPyToSy +Allows strategist to redeem PY for SY. + +Represents function `redeemPyToSy(IPendleMarket market, uint256 netPyIn, uint256 minSyOut)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| deposit_to_aave_v3_morpho | [MorphoAaveV3ATokenCollateralAdaptorV1.DepositToAaveV3Morpho](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1-DepositToAaveV3Morpho) | | Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` | -| withdraw_from_aave_v3_morpho | [MorphoAaveV3ATokenCollateralAdaptorV1.WithdrawFromAaveV3Morpho](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1-WithdrawFromAaveV3Morpho) | | Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` | -| claim | [Claim](#steward-v4-Claim) | | Represents function `claim(uint256 claimable, bytes32[] memory proof)` | +| market | [string](#string) | | The address of the Pendle market to redeem PY from. | +| net_py_in | [string](#string) | | The net amount of PY to redeem for SY. | +| min_sy_out | [string](#string) | | The minimum amount of SY to receive. | - + -### MorphoAaveV3ATokenCollateralAdaptorV1.DepositToAaveV3Morpho -Allows strategists to lend assets on Morpho +### PendleAdaptorV1.RedeemSyToToken +Allows strategist to redeem SY for a token. -Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` +Represents function `redeemSyToToken(IPendleMarket market, uint256 netSyIn, TokenOutput memory output)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token_to_deposit | [string](#string) | | The address of the token to deposit | -| amount_to_deposit | [string](#string) | | The amount of tokens to deposit | +| market | [string](#string) | | The address of the Pendle market to redeem SY from. | +| net_sy_in | [string](#string) | | The net amount of SY to redeem for a token. | +| output | [PendleAdaptorV1.TokenOutput](#steward-v4-PendleAdaptorV1-TokenOutput) | | The output token address to receive. | - + -### MorphoAaveV3ATokenCollateralAdaptorV1.WithdrawFromAaveV3Morpho -Allows strategists to withdraw assets from Morpho +### PendleAdaptorV1.RemoveLiquidityDualSyAndPt +Allows strategist to remove liquidity from a Pendle market. -Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` +Represents function `removeLiquidityDualSyAndPt(IPendleMarket market, uint256 netLpToRemove, uint256 minSyOut, uint256 minPtOut)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token_to_withdraw | [string](#string) | | The address of the token to withdraw | -| amount_to_withdraw | [string](#string) | | The amount of tokens to withdraw | +| market | [string](#string) | | The address of the Pendle market to remove liquidity from. | +| net_lp_to_remove | [string](#string) | | The net amount of LP tokens to remove from the market. | +| min_sy_out | [string](#string) | | The minimum amount of SY to receive. | +| min_pt_out | [string](#string) | | The minimum amount of PT to receive. | - + -### MorphoAaveV3ATokenCollateralAdaptorV1Calls +### PendleAdaptorV1.SwapData | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [MorphoAaveV3ATokenCollateralAdaptorV1](#steward-v4-MorphoAaveV3ATokenCollateralAdaptorV1) | repeated | | +| swap_type | [int32](#int32) | | The swap type | +| ext_router | [string](#string) | | The external router address. | +| ext_calldata | [string](#string) | | The external calldata. | +| need_scale | [bool](#bool) | | Whether or not scaling is needed. | - - + - +### PendleAdaptorV1.SwapExactPtForYt +Allows strategist to exchange PT for YT. - +Represents function `swapExactPtForYt(IPendleMarket market, uint256 exactPtIn, uint256 minYtOut, ApproxParams calldata guessTotalYtToSwap)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| market | [string](#string) | | The address of the Pendle market to swap PT for YT. | +| exact_pt_in | [string](#string) | | The exact amount of PT to swap for YT. | +| min_yt_out | [string](#string) | | The minimum amount of YT to receive. | +| guess_total_yt_to_swap | [PendleAdaptorV1.ApproxParams](#steward-v4-PendleAdaptorV1-ApproxParams) | | The approximate parameters for the swap. | - - -## morpho_aave_v3_a_token_p2p.proto - -### MorphoAaveV3ATokenP2PAdaptorV1 -Represents call data for the Morpho Aave V3 A Token P2P adaptor. + + +### PendleAdaptorV1.SwapExactYtForPt +Allows strategist to exchange YT for PT. + +Represents function `swapExactYtForPt(IPendleMarket market, uint256 exactYtIn, uint256 minPtOut, ApproxParams calldata guessTotalPtToSwap)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| deposit_to_aave_v3_morpho | [MorphoAaveV3ATokenP2PAdaptorV1.DepositToAaveV3Morpho](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1-DepositToAaveV3Morpho) | | Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` | -| withdraw_from_aave_v3_morpho | [MorphoAaveV3ATokenP2PAdaptorV1.WithdrawFromAaveV3Morpho](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1-WithdrawFromAaveV3Morpho) | | Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` | -| claim | [Claim](#steward-v4-Claim) | | Represents function `claim(uint256 claimable, bytes32[] memory proof)` | +| market | [string](#string) | | The address of the Pendle market to swap YT for PT. | +| exact_yt_in | [string](#string) | | The exact amount of YT to swap for PT. | +| min_pt_out | [string](#string) | | The minimum amount of PT to receive. | +| guess_total_pt_to_swap | [PendleAdaptorV1.ApproxParams](#steward-v4-PendleAdaptorV1-ApproxParams) | | The approximation parameters for the swap. | - + -### MorphoAaveV3ATokenP2PAdaptorV1.DepositToAaveV3Morpho -Allows strategists to lend assets on Morpho +### PendleAdaptorV1.TokenInput -Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token_to_deposit | [string](#string) | | The address of the token to deposit | -| amount_to_deposit | [string](#string) | | The amount of tokens to deposit | -| max_iterations | [string](#string) | | The maximum number of iterations to run | +| token_in | [string](#string) | | The input token address. | +| net_token_in | [string](#string) | | The net amount of the input token. | +| token_mint_sy | [string](#string) | | The token address to mint SY. | +| pendle_swap | [string](#string) | | The Pendle swap address. | +| swap_data | [PendleAdaptorV1.SwapData](#steward-v4-PendleAdaptorV1-SwapData) | | The swap data. | - + -### MorphoAaveV3ATokenP2PAdaptorV1.WithdrawFromAaveV3Morpho -Allows strategists to withdraw assets from Morpho +### PendleAdaptorV1.TokenOutput -Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token_to_withdraw | [string](#string) | | The address of the token to withdraw | -| amount_to_withdraw | [string](#string) | | The amount of tokens to withdraw | -| max_iterations | [string](#string) | | The maximum number of iterations to run | +| token_out | [string](#string) | | The output token address. | +| min_token_out | [string](#string) | | The minimum amount of the output token. | +| token_redeem_sy | [string](#string) | | The token address to redeem SY. | +| pendle_swap | [string](#string) | | The Pendle swap address. | +| swap_data | [PendleAdaptorV1.SwapData](#steward-v4-PendleAdaptorV1-SwapData) | | The swap data. | - + -### MorphoAaveV3ATokenP2PAdaptorV1Calls +### PendleAdaptorV1Calls | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [MorphoAaveV3ATokenP2PAdaptorV1](#steward-v4-MorphoAaveV3ATokenP2PAdaptorV1) | repeated | | +| calls | [PendleAdaptorV1](#steward-v4-PendleAdaptorV1) | repeated | | @@ -3434,177 +6725,195 @@ Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amo - + -## morpho_aave_v3_debt_token.proto +## staking.proto - + -### MorphoAaveV3DebtTokenAdaptorV1 -Represents call data for the Morpho Aave V3 Debt Token adaptor. +### StakingAdaptorV1 +Represents call data for the Staking adaptor V1 | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| borrow_from_aave_v3_morpho | [MorphoAaveV3DebtTokenAdaptorV1.BorrowFromAaveV3Morpho](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1-BorrowFromAaveV3Morpho) | | Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` | -| repay_aave_v3_morpho_debt | [MorphoAaveV3DebtTokenAdaptorV1.RepayAaveV3MorphoDebt](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1-RepayAaveV3MorphoDebt) | | Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` | +| mint | [StakingAdaptorV1.Mint](#steward-v4-StakingAdaptorV1-Mint) | | Represents function `mint(uint256 amount, uint256 minAmountOut, bytes calldata wildcard)` | +| request_burn | [StakingAdaptorV1.RequestBurn](#steward-v4-StakingAdaptorV1-RequestBurn) | | Represents function `requestBurn(uint256 amount, bytes calldata wildcard)` | +| complete_burn | [StakingAdaptorV1.CompleteBurn](#steward-v4-StakingAdaptorV1-CompleteBurn) | | Represents function `completeBurn(uint256 id, uint256 minAmountOut, bytes calldata wildcard)` | +| cancel_burn | [StakingAdaptorV1.CancelBurn](#steward-v4-StakingAdaptorV1-CancelBurn) | | Represents function `cancelBurn(uint256 id, bytes calldata wildcard)` | +| wrap | [StakingAdaptorV1.Wrap](#steward-v4-StakingAdaptorV1-Wrap) | | Represents function `wrap(uint256 amount, uint256 minAmountOut, bytes calldata wildcard)` | +| unwrap | [StakingAdaptorV1.Unwrap](#steward-v4-StakingAdaptorV1-Unwrap) | | Represents function `unwrap(uint256 amount, uint256 minAmountOut, bytes calldata wildcard)` | +| mint_erc20 | [StakingAdaptorV1.MintERC20](#steward-v4-StakingAdaptorV1-MintERC20) | | Represents function `mintERC20(ERC20 depositAsset, uint256 amount, uint256 minAmountOut, bytes calldata wildcard)` | +| remove_claimed_request | [StakingAdaptorV1.RemoveClaimedRequest](#steward-v4-StakingAdaptorV1-RemoveClaimedRequest) | | Represents function `removeClaimedRequest(uint256, bytes calldata)` | - + -### MorphoAaveV3DebtTokenAdaptorV1.BorrowFromAaveV3Morpho -Allows strategists to borrow assets from Morpho +### StakingAdaptorV1.CancelBurn +Allows a strategist to cancel an active burn/withdraw request. -Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` +Represents the function `cancelBurn(uint256 id, bytes calldata wildcard)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| underlying | [string](#string) | | The underlying asset to borrow | -| amount_to_borrow | [string](#string) | | The amount of the underlying asset to borrow | -| max_iterations | [string](#string) | | The maximum number of iterations to perform | +| id | [string](#string) | | The id of the burn request | +| wildcard | [string](#string) | | Arbitrary ABI encoded data that can be used by inheriting adaptors | - + -### MorphoAaveV3DebtTokenAdaptorV1.RepayAaveV3MorphoDebt -Allows strategists to repay loan debt on Morpho +### StakingAdaptorV1.CompleteBurn +Allows a strategist to complete a burn/withdraw of a derivative asset for a native asset. -Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` +Represents the function `completeBurn(uint256 id, uint256 minAmountOut, bytes calldata wildcard)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token_to_repay | [string](#string) | | The token to repay | -| amount_to_repay | [string](#string) | | The amount of the token to repay | +| id | [string](#string) | | The id of the burn request | +| min_amount_out | [string](#string) | | The minimum amount of the asset to receive | +| wildcard | [string](#string) | | Arbitrary ABI encoded data that can be used by inheriting adaptors | - + -### MorphoAaveV3DebtTokenAdaptorV1Calls +### StakingAdaptorV1.Mint +Allows a strategist to `mint` a derivative asset using the chains native asset. +Represents the function `mint(uint256 amount, uint256 minAmountOut, bytes calldata wildcard)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [MorphoAaveV3DebtTokenAdaptorV1](#steward-v4-MorphoAaveV3DebtTokenAdaptorV1) | repeated | | +| amount | [string](#string) | | The amount of the asset to mint | +| min_amount_out | [string](#string) | | The minimum amount of the asset to receive | +| wildcard | [string](#string) | | Arbitrary ABI encoded data that can be used by inheriting adaptors | - - + - +### StakingAdaptorV1.MintERC20 +Allows a strategist to mint a derivative asset using an ERC20. - +Represents the function `mintERC20(ERC20 depositAsset, uint256 amount, uint256 minAmountOut, bytes calldata wildcard)` +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| deposit_asset | [string](#string) | | The address of the ERC20 asset to deposit | +| amount | [string](#string) | | The amount of the asset to mint | +| min_amount_out | [string](#string) | | The minimum amount of the asset to receive | +| wildcard | [string](#string) | | Arbitrary ABI encoded data that can be used by inheriting adaptors | + - - -## morpho_reward_handler.proto - + -### Claim -Allows Morpho A Token cellars to claim Morpho Rewards +### StakingAdaptorV1.RemoveClaimedRequest +Allows strategist to remove a request from `requestIds` if it has already been claimed. -Represents function `claim(uint256 claimable, bytes32[] memory proof)` +Represents the function `removeClaimedRequest(uint256, bytes calldata)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| claimable | [string](#string) | | The amount of the asset to withdraw. | -| proof | [bytes](#bytes) | repeated | Proof of claim | +| id | [string](#string) | | The id of the request to remove | +| wildcard | [string](#string) | | Arbitrary ABI encoded data that can be used by inheriting adaptors | - - + - +### StakingAdaptorV1.RequestBurn +Allows a strategist to request to burn/withdraw a derivative for a chains native asset. - +Represents the function `requestBurn(uint256 amount, bytes calldata wildcard)` + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| amount | [string](#string) | | The amount of the asset to burn | +| wildcard | [string](#string) | | Arbitrary ABI encoded data that can be used by inheriting adaptors | - - -## oneinch.proto + - +### StakingAdaptorV1.Unwrap +Allows a strategist to unwrap a wrapped derivative asset. -### OneInchAdaptorV1 -Represents call data for the OneInch adaptor. +Represents the function `unwrap(uint256 amount, uint256 minAmountOut, bytes calldata wildcard)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| revoke_approval | [RevokeApproval](#steward-v4-RevokeApproval) | | Represents function `revokeApproval(ERC20 asset, address spender)` | -| swap_with_one_inch | [OneInchAdaptorV1.SwapWithOneInch](#steward-v4-OneInchAdaptorV1-SwapWithOneInch) | | Represents function `swapWithOneInch(ERC20 tokenIn, ERC20 tokenOut, uint256 amount, bytes swapCallData)` | +| amount | [string](#string) | | The amount of the asset to unwrap | +| min_amount_out | [string](#string) | | The minimum amount of the asset to receive | +| wildcard | [string](#string) | | Arbitrary ABI encoded data that can be used by inheriting adaptors | - + -### OneInchAdaptorV1.SwapWithOneInch -Allows strategists to make ERC20 swaps using 1Inch. +### StakingAdaptorV1.Wrap +Allows a strategist to wrap a derivative asset. -Represents function `swapWithOneInch(ERC20 tokenIn, ERC20 tokenOut, uint256 amount, bytes swapCallData)` +Represents the function `wrap(uint256 amount, uint256 minAmountOut, bytes calldata wildcard)` | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| token_in | [string](#string) | | | -| token_out | [string](#string) | | | -| amount | [string](#string) | | | -| swap_call_data | [bytes](#bytes) | | | +| amount | [string](#string) | | The amount of the asset to wrap | +| min_amount_out | [string](#string) | | The minimum amount of the asset to receive | +| wildcard | [string](#string) | | Arbitrary ABI encoded data that can be used by inheriting adaptors | - + -### OneInchAdaptorV1Calls +### StakingAdaptorV1Calls | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| calls | [OneInchAdaptorV1](#steward-v4-OneInchAdaptorV1) | repeated | | +| calls | [StakingAdaptorV1](#steward-v4-StakingAdaptorV1) | repeated | | @@ -3627,6 +6936,41 @@ Represents function `swapWithOneInch(ERC20 tokenIn, ERC20 tokenOut, uint256 amou + + +### EncodeRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| cellar_id | [string](#string) | | | +| aave_v2_stablecoin | [AaveV2Stablecoin](#steward-v4-AaveV2Stablecoin) | | | +| cellar_v1 | [CellarV1](#steward-v4-CellarV1) | | | +| cellar_v2 | [CellarV2](#steward-v4-CellarV2) | | | +| cellar_v2_2 | [CellarV2_2](#steward-v4-CellarV2_2) | | | +| cellar_v2_5 | [CellarV2_5](#steward-v4-CellarV2_5) | | | + + + + + + + + +### EncodeResponse + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| encoded_call | [string](#string) | | The encoded contract call | + + + + + + ### ScheduleRequest @@ -3641,6 +6985,9 @@ Represents a scheduled function call to a particular Cellar | cellar_v1 | [CellarV1](#steward-v4-CellarV1) | | | | cellar_v2 | [CellarV2](#steward-v4-CellarV2) | | | | cellar_v2_2 | [CellarV2_2](#steward-v4-CellarV2_2) | | | +| cellar_v2_5 | [CellarV2_5](#steward-v4-CellarV2_5) | | | +| chain_id | [uint64](#uint64) | | The ID of the chain on which the target Cellar resides | +| deadline | [uint64](#uint64) | | The unix timestamp deadline for the contract call to be executed | @@ -3656,6 +7003,7 @@ Represents a scheduled function call to a particular Cellar | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | id | [string](#string) | | The hex encoded ID of the scheduled cork | +| chain_id | [uint64](#uint64) | | The ID of the chain on which the target Cellar resides | @@ -3760,6 +7108,16 @@ Service for handling Cellar contract calls | Schedule | [ScheduleRequest](#steward-v4-ScheduleRequest) | [ScheduleResponse](#steward-v4-ScheduleResponse) | Handles scheduled contract call submission | + + +### EncodingService +Service for testing contract call encoding. Simply returns the encoded call data in the response. + +| Method Name | Request Type | Response Type | Description | +| ----------- | ------------ | ------------- | ------------| +| Encode | [EncodeRequest](#steward-v4-EncodeRequest) | [EncodeResponse](#steward-v4-EncodeResponse) | Handles contract call encoding | + + ### SimulateContractCallService diff --git a/go.mod b/go.mod index e0bd8ba0..4d5a5607 100644 --- a/go.mod +++ b/go.mod @@ -212,7 +212,7 @@ replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alp replace github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 -replace github.com/peggyjv/steward/steward_proto_go/steward_proto => ./steward_proto_go/steward_proto +replace github.com/peggyjv/steward/steward_proto_go/steward_proto => ./go/steward_proto_go/steward_proto // use cometbft replace github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.28 diff --git a/go/builder/adaptors/aave_v2_a_token.go b/go/builder/adaptors/aave_v2_a_token.go index 9c7b7060..fa25f1cb 100644 --- a/go/builder/adaptors/aave_v2_a_token.go +++ b/go/builder/adaptors/aave_v2_a_token.go @@ -7,6 +7,8 @@ import ( "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) +// AaveV2ATokenAdaptorV2CallBuilder is a builder for AaveV2ATokenAdaptorV2 calls. +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Aave/AaveATokenAdaptor.sol type AaveV2ATokenAdaptorV2CallBuilder struct { adaptor common.Address calls []*steward_proto.AaveATokenAdaptorV2 diff --git a/go/builder/adaptors/aave_v2_a_token_test.go b/go/builder/adaptors/aave_v2_a_token_test.go index 16731eda..ca768629 100644 --- a/go/builder/adaptors/aave_v2_a_token_test.go +++ b/go/builder/adaptors/aave_v2_a_token_test.go @@ -31,4 +31,53 @@ func TestNewAaveATokenAdaptorCall(t *testing.T) { assert.IsType(t, &steward_proto.AaveATokenAdaptorV2_RevokeApproval{}, builder.calls[0].Function) assert.IsType(t, &steward_proto.AaveATokenAdaptorV2_DepositToAave_{}, builder.calls[1].Function) assert.IsType(t, &steward_proto.AaveATokenAdaptorV2_WithdrawFromAave_{}, builder.calls[2].Function) + + result := builder.Build() + assert.Equal(t, adaptor.Hex(), result.Adaptor) + assert.IsType(t, &steward_proto.AdaptorCall_AaveATokenV2Calls{}, result.CallData) +} + +func TestEmptyBuilder(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2ATokenAdaptorV2CallBuilder(adaptor) + + assert.Equal(t, 0, len(builder.calls)) + + result := builder.Build() + assert.Equal(t, adaptor.Hex(), result.Adaptor) + assert.IsType(t, &steward_proto.AdaptorCall_AaveATokenV2Calls{}, result.CallData) +} + +func TestRevokeApproval(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2ATokenAdaptorV2CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + spender := common.HexToAddress("0x11111111111111111111111111111111111111111") + builder.RevokeApproval(asset, spender) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveATokenAdaptorV2_RevokeApproval{}, builder.calls[0].Function) +} + +func TestDepositToAave(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2ATokenAdaptorV2CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + builder.DepositToAave(asset, big.NewInt(100)) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveATokenAdaptorV2_DepositToAave_{}, builder.calls[0].Function) +} + +func TestWithdrawFromAave(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2ATokenAdaptorV2CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + builder.WithdrawFromAave(asset, big.NewInt(100)) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveATokenAdaptorV2_WithdrawFromAave_{}, builder.calls[0].Function) } diff --git a/go/builder/adaptors/aave_v2_debt_token.go b/go/builder/adaptors/aave_v2_debt_token.go new file mode 100644 index 00000000..b38a0196 --- /dev/null +++ b/go/builder/adaptors/aave_v2_debt_token.go @@ -0,0 +1,72 @@ +package adaptors + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" +) + +// AaveV2DebtTokenAdaptorV2CallBuilder is a builder for AaveV2DebtTokenAdaptorV2 calls. +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Aave/AaveDebtTokenAdaptor.sol +type AaveV2DebtTokenAdaptorV2CallBuilder struct { + adaptor common.Address + calls []*steward_proto.AaveDebtTokenAdaptorV2 +} + +func NewAaveV2DebtTokenAdaptorV2CallBuilder(adaptor common.Address) *AaveV2DebtTokenAdaptorV2CallBuilder { + return &AaveV2DebtTokenAdaptorV2CallBuilder{ + adaptor: adaptor, + calls: make([]*steward_proto.AaveDebtTokenAdaptorV2, 0), + } +} + +func (b *AaveV2DebtTokenAdaptorV2CallBuilder) Build() *steward_proto.AdaptorCall { + return &steward_proto.AdaptorCall{ + Adaptor: b.adaptor.Hex(), + CallData: &steward_proto.AdaptorCall_AaveDebtTokenV2Calls{ + AaveDebtTokenV2Calls: &steward_proto.AaveDebtTokenAdaptorV2Calls{ + Calls: b.calls, + }, + }, + } +} + +func (b *AaveV2DebtTokenAdaptorV2CallBuilder) RevokeApproval(asset common.Address, spender common.Address) *AaveV2DebtTokenAdaptorV2CallBuilder { + b.calls = append(b.calls, &steward_proto.AaveDebtTokenAdaptorV2{ + Function: &steward_proto.AaveDebtTokenAdaptorV2_RevokeApproval{ + RevokeApproval: &steward_proto.RevokeApproval{ + Asset: asset.Hex(), + Spender: spender.Hex(), + }, + }, + }) + + return b +} + +func (b *AaveV2DebtTokenAdaptorV2CallBuilder) BorrowFromAave(token common.Address, amount *big.Int) *AaveV2DebtTokenAdaptorV2CallBuilder { + b.calls = append(b.calls, &steward_proto.AaveDebtTokenAdaptorV2{ + Function: &steward_proto.AaveDebtTokenAdaptorV2_BorrowFromAave_{ + BorrowFromAave: &steward_proto.AaveDebtTokenAdaptorV2_BorrowFromAave{ + Token: token.Hex(), + Amount: amount.String(), + }, + }, + }) + + return b +} + +func (b *AaveV2DebtTokenAdaptorV2CallBuilder) RepayAaveDebt(token common.Address, amount *big.Int) *AaveV2DebtTokenAdaptorV2CallBuilder { + b.calls = append(b.calls, &steward_proto.AaveDebtTokenAdaptorV2{ + Function: &steward_proto.AaveDebtTokenAdaptorV2_RepayAaveDebt_{ + RepayAaveDebt: &steward_proto.AaveDebtTokenAdaptorV2_RepayAaveDebt{ + Token: token.Hex(), + Amount: amount.String(), + }, + }, + }) + + return b +} diff --git a/go/builder/adaptors/aave_v2_debt_token_test.go b/go/builder/adaptors/aave_v2_debt_token_test.go new file mode 100644 index 00000000..a3e60a0c --- /dev/null +++ b/go/builder/adaptors/aave_v2_debt_token_test.go @@ -0,0 +1,83 @@ +package adaptors + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "github.com/stretchr/testify/assert" +) + +// Test the AaveV2DebtTokenAdaptorCallBuilder constructor +func TestNewAaveDebtTokenAdaptorCall(t *testing.T) { + // Create a new AaveV2DebtTokenAdaptorCallBuilder + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2DebtTokenAdaptorV2CallBuilder(adaptor) + + // Check the builder + assert.Equal(t, adaptor.Hex(), builder.adaptor.Hex()) + assert.Equal(t, 0, len(builder.calls)) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + spender := common.HexToAddress("0x11111111111111111111111111111111111111111") + builder.RevokeApproval(asset, spender) + builder.BorrowFromAave(asset, big.NewInt(100)) + builder.RepayAaveDebt(asset, big.NewInt(100)) + + // Check the builder + assert.Equal(t, adaptor.Hex(), builder.adaptor.Hex()) + assert.Equal(t, 3, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveDebtTokenAdaptorV2_RevokeApproval{}, builder.calls[0].Function) + assert.IsType(t, &steward_proto.AaveDebtTokenAdaptorV2_BorrowFromAave_{}, builder.calls[1].Function) + assert.IsType(t, &steward_proto.AaveDebtTokenAdaptorV2_RepayAaveDebt_{}, builder.calls[2].Function) + + result := builder.Build() + assert.Equal(t, adaptor.Hex(), result.Adaptor) + assert.IsType(t, &steward_proto.AdaptorCall_AaveDebtTokenV2Calls{}, result.CallData) +} + +func TestEmptyAaveV2DebtTokenAdaptorBuilder(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2DebtTokenAdaptorV2CallBuilder(adaptor) + + assert.Equal(t, 0, len(builder.calls)) + + result := builder.Build() + assert.Equal(t, adaptor.Hex(), result.Adaptor) + assert.IsType(t, &steward_proto.AdaptorCall_AaveDebtTokenV2Calls{}, result.CallData) +} + +func TestAaveV2DebtTokenAdaptorRevokeApproval(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2DebtTokenAdaptorV2CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + spender := common.HexToAddress("0x11111111111111111111111111111111111111111") + builder.RevokeApproval(asset, spender) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveDebtTokenAdaptorV2_RevokeApproval{}, builder.calls[0].Function) +} + +func TestBorrowFromAave(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2DebtTokenAdaptorV2CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + builder.BorrowFromAave(asset, big.NewInt(100)) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveDebtTokenAdaptorV2_BorrowFromAave_{}, builder.calls[0].Function) +} + +func TestRepayAaveDebt(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2DebtTokenAdaptorV2CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + builder.RepayAaveDebt(asset, big.NewInt(100)) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveDebtTokenAdaptorV2_RepayAaveDebt_{}, builder.calls[0].Function) +} diff --git a/go/builder/adaptors/aave_v2_enable_asset_as_collateral.go b/go/builder/adaptors/aave_v2_enable_asset_as_collateral.go index 6ab470d3..79911649 100644 --- a/go/builder/adaptors/aave_v2_enable_asset_as_collateral.go +++ b/go/builder/adaptors/aave_v2_enable_asset_as_collateral.go @@ -5,6 +5,8 @@ import ( "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) +// AaveV2EnableAssetAsCollateralAdaptorV1CallBuilder builds calls for the AaveV2EnableAssetAsCollateralAdaptorV1 adaptor +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Aave/AaveV2EnableAssetAsCollateralAdaptor.sol type AaveV2EnableAssetAsCollateralAdaptorV1CallBuilder struct { adaptor common.Address calls []*steward_proto.AaveV2EnableAssetAsCollateralAdaptorV1 diff --git a/go/builder/adaptors/aave_v2_enable_asset_as_collateral_test.go b/go/builder/adaptors/aave_v2_enable_asset_as_collateral_test.go new file mode 100644 index 00000000..91d95458 --- /dev/null +++ b/go/builder/adaptors/aave_v2_enable_asset_as_collateral_test.go @@ -0,0 +1,23 @@ +package adaptors + +import ( + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "github.com/stretchr/testify/assert" +) + +// Test enabling an asset as collateral +func TestEnableAssetAsCollateral(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV2EnableAssetAsCollateralAdaptorV1CallBuilder(adaptor) + + // Test enabling + asset := common.HexToAddress("0x0000000000000000000000000000000000000000") + builder.SetUserUseReserveAsCollateral(asset, true) + + // Check the builder + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveV2EnableAssetAsCollateralAdaptorV1_SetUserUseReserveAsCollateral_{}, builder.calls[0].Function) +} diff --git a/go/builder/adaptors/aave_v3_a_token.go b/go/builder/adaptors/aave_v3_a_token.go index f7d50da2..80248381 100644 --- a/go/builder/adaptors/aave_v3_a_token.go +++ b/go/builder/adaptors/aave_v3_a_token.go @@ -7,6 +7,8 @@ import ( "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) +// Builder for AaveV3ATokenAdaptorV1 adaptor +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Aave/V3/AaveV3ATokenAdaptor.sol type AaveV3ATokenAdaptorV1CallBuilder struct { adaptor common.Address calls []*steward_proto.AaveV3ATokenAdaptorV1 diff --git a/go/builder/adaptors/aave_v3_a_token_test.go b/go/builder/adaptors/aave_v3_a_token_test.go new file mode 100644 index 00000000..fe8dee56 --- /dev/null +++ b/go/builder/adaptors/aave_v3_a_token_test.go @@ -0,0 +1,44 @@ +package adaptors + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "github.com/stretchr/testify/assert" +) + +// Test the AaveV3ATokenAdaptorCallBuilder constructor +func TestNewAaveV3ATokenAdaptorCall(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV3ATokenAdaptorV1CallBuilder(adaptor) + + // Check the builder + assert.Equal(t, adaptor.Hex(), builder.adaptor.Hex()) + assert.Equal(t, 0, len(builder.calls)) +} + +// Test DepositToAave function +func TestDepositToAaveV3(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV3ATokenAdaptorV1CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + builder.DepositToAave(asset, big.NewInt(100)) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveV3ATokenAdaptorV1_DepositToAave_{}, builder.calls[0].Function) +} + +// Test WithdrawFromAave function +func TestWithdrawFromAaveV3(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV3ATokenAdaptorV1CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + builder.WithdrawFromAave(asset, big.NewInt(100)) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveV3ATokenAdaptorV1_WithdrawFromAave_{}, builder.calls[0].Function) +} diff --git a/go/builder/adaptors/aave_v3_debt_token.go b/go/builder/adaptors/aave_v3_debt_token.go index 7b2d660e..817d7232 100644 --- a/go/builder/adaptors/aave_v3_debt_token.go +++ b/go/builder/adaptors/aave_v3_debt_token.go @@ -7,6 +7,8 @@ import ( "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) +// AaveV3DebtTokenAdaptorV1CallBuilder is a builder for AaveV3DebtTokenAdaptorV1 calls +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Aave/V3/AaveV3DebtTokenAdaptor.sol type AaveV3DebtTokenAdaptorV1CallBuilder struct { adaptor common.Address calls []*steward_proto.AaveV3DebtTokenAdaptorV1 diff --git a/go/builder/adaptors/aave_v3_debt_token_flash_loan.go b/go/builder/adaptors/aave_v3_debt_token_flash_loan.go index 7fe58020..bdd6fa18 100644 --- a/go/builder/adaptors/aave_v3_debt_token_flash_loan.go +++ b/go/builder/adaptors/aave_v3_debt_token_flash_loan.go @@ -7,14 +7,15 @@ import ( "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) -// Builder +// Builder for using flash loans with the AaveV3DebtTokenAdaptorV1 adaptor +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Aave/V3/AaveV3DebtTokenAdaptor.sol type AaveV3DebtTokenFlashLoanAdaptorV1CallBuilder struct { adaptor common.Address calls []*steward_proto.AaveV3DebtTokenAdaptorV1FlashLoan } // Constructor -func NewAaveV3DebtTokenFlashLoanAdaptorV1Call(adaptor common.Address) *AaveV3DebtTokenFlashLoanAdaptorV1CallBuilder { +func NewAaveV3DebtTokenFlashLoanAdaptorV1CallBuilder(adaptor common.Address) *AaveV3DebtTokenFlashLoanAdaptorV1CallBuilder { return &AaveV3DebtTokenFlashLoanAdaptorV1CallBuilder{ adaptor: adaptor, } diff --git a/go/builder/adaptors/aave_v3_debt_token_flash_loan_test.go b/go/builder/adaptors/aave_v3_debt_token_flash_loan_test.go new file mode 100644 index 00000000..d0ce15fe --- /dev/null +++ b/go/builder/adaptors/aave_v3_debt_token_flash_loan_test.go @@ -0,0 +1,41 @@ +package adaptors + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "github.com/stretchr/testify/assert" + "google.golang.org/protobuf/reflect/protoreflect" +) + +// Test the AaveV3DebtTokenFlashLoanAdaptorCallBuilder constructor +func TestNewAaveV3DebtTokenFlashLoanAdaptorCall(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV3DebtTokenFlashLoanAdaptorV1CallBuilder(adaptor) + + // Check the builder + assert.Equal(t, adaptor.Hex(), builder.adaptor.Hex()) + assert.Equal(t, 0, len(builder.calls)) +} + +// Test RequestFlashLoan function +func TestRequestFlashLoan(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV3DebtTokenFlashLoanAdaptorV1CallBuilder(adaptor) + + asset := common.HexToAddress("0x00000000000000000000000000000000000000000") + + // AaveV3 adaptor call builder + call := NewAaveV2ATokenAdaptorV2CallBuilder(common.HexToAddress("0x1")).DepositToAave(common.HexToAddress("0x2"), big.NewInt(100)).Build() + + builder.FlashLoan([]common.Address{asset}, []*big.Int{big.NewInt(100)}, []*steward_proto.AdaptorCall{call}) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveV3DebtTokenAdaptorV1FlashLoan_FlashLoan{}, builder.calls[0].FlashLoan) + assert.Equal(t, asset.Hex(), builder.calls[0].FlashLoan.LoanTokens[0]) + assert.Equal(t, "100", builder.calls[0].FlashLoan.LoanAmounts[0]) + actual := call.GetAaveATokenV2Calls().Calls[0].GetDepositToAave().ProtoReflect().Descriptor().FullName() + assert.Equal(t, protoreflect.FullName("steward.v4.AaveATokenAdaptorV2.DepositToAave"), actual) +} diff --git a/go/builder/adaptors/aave_v3_debt_token_test.go b/go/builder/adaptors/aave_v3_debt_token_test.go new file mode 100644 index 00000000..9f384eed --- /dev/null +++ b/go/builder/adaptors/aave_v3_debt_token_test.go @@ -0,0 +1,32 @@ +package adaptors + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "github.com/stretchr/testify/assert" +) + +// Test the AaveV3DebtTokenAdaptorCallBuilder constructor +func TestNewAaveV3DebtTokenAdaptorCall(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV3DebtTokenAdaptorV1CallBuilder(adaptor) + + // Check the builder + assert.Equal(t, adaptor.Hex(), builder.adaptor.Hex()) + assert.Equal(t, 0, len(builder.calls)) +} + +// Test RepayDebt function +func TestRepayDebt(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewAaveV3DebtTokenAdaptorV1CallBuilder(adaptor) + + asset := common.HexToAddress("0x0000000000000000000000000000000000000000") + builder.RepayAaveDebt(asset, big.NewInt(100)) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.AaveV3DebtTokenAdaptorV1_RepayAaveDebt_{}, builder.calls[0].Function) +} diff --git a/go/builder/adaptors/balancer_pool.go b/go/builder/adaptors/balancer_pool.go index 0f20a99c..116dac8d 100644 --- a/go/builder/adaptors/balancer_pool.go +++ b/go/builder/adaptors/balancer_pool.go @@ -13,6 +13,8 @@ const ( BalancerSwapKindGivenOut ) +// BalancerPoolAdaptorV1CallBuilder is a builder for BalancerPoolAdaptorV1 calls +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol type BalancerPoolAdaptorV1CallBuilder struct { adaptor common.Address calls []*steward_proto.BalancerPoolAdaptorV1 @@ -49,40 +51,40 @@ func (b *BalancerPoolAdaptorV1CallBuilder) RevokeApproval(asset common.Address, return b } -type SingleSwap struct { - poolId string - kind int - assetIn common.Address - assetOut common.Address - amount *big.Int - userData []byte +type BalancerSingleSwap struct { + PoolId string + Kind int + AssetIn common.Address + AssetOut common.Address + Amount *big.Int + UserData []byte } -type SwapData struct { - minAmountsForSwaps []*big.Int - swapDeadlines []*big.Int +type BalancerSwapData struct { + MinAmountsForSwaps []*big.Int + SwapDeadlines []*big.Int } -func (b *BalancerPoolAdaptorV1CallBuilder) JoinPool(targetBpt common.Address, swapsBeforeJoin []*SingleSwap, swapData SwapData, minimumBPT *big.Int) *BalancerPoolAdaptorV1CallBuilder { +func (b *BalancerPoolAdaptorV1CallBuilder) JoinPool(targetBpt common.Address, swapsBeforeJoin []*BalancerSingleSwap, swapData BalancerSwapData, minimumBPT *big.Int) *BalancerPoolAdaptorV1CallBuilder { singleSwaps := make([]*steward_proto.BalancerPoolAdaptorV1_SingleSwap, len(swapsBeforeJoin)) for i, swap := range swapsBeforeJoin { singleSwaps[i] = &steward_proto.BalancerPoolAdaptorV1_SingleSwap{ - PoolId: swap.poolId[:], - Kind: steward_proto.BalancerPoolAdaptorV1_SwapKind(swap.kind), - AssetIn: swap.assetIn.Hex(), - AssetOut: swap.assetOut.Hex(), - Amount: swap.amount.String(), - UserData: swap.userData, + PoolId: swap.PoolId[:], + Kind: steward_proto.BalancerPoolAdaptorV1_SwapKind(swap.Kind), + AssetIn: swap.AssetIn.Hex(), + AssetOut: swap.AssetOut.Hex(), + Amount: swap.Amount.String(), + UserData: swap.UserData, } } data := &steward_proto.BalancerPoolAdaptorV1_SwapData{ - MinAmountsForSwaps: make([]string, len(swapData.minAmountsForSwaps)), - SwapDeadlines: make([]string, len(swapData.swapDeadlines)), + MinAmountsForSwaps: make([]string, len(swapData.MinAmountsForSwaps)), + SwapDeadlines: make([]string, len(swapData.SwapDeadlines)), } - for i, amount := range swapData.minAmountsForSwaps { + for i, amount := range swapData.MinAmountsForSwaps { data.MinAmountsForSwaps[i] = amount.String() } - for i, deadline := range swapData.swapDeadlines { + for i, deadline := range swapData.SwapDeadlines { data.SwapDeadlines[i] = deadline.String() } @@ -100,42 +102,42 @@ func (b *BalancerPoolAdaptorV1CallBuilder) JoinPool(targetBpt common.Address, sw return b } -type ExitPoolRequest struct { - assets []common.Address - minAmountsOut []big.Int - userData []byte - toInternalBalance bool +type BalancerExitPoolRequest struct { + Assets []common.Address + MinAmountsOut []*big.Int + UserData []byte + ToInternalBalance bool } -func (b *BalancerPoolAdaptorV1CallBuilder) ExitPool(targetBpt common.Address, swapsAfterExit []*SingleSwap, swapData SwapData, exitRequest *ExitPoolRequest) *BalancerPoolAdaptorV1CallBuilder { +func (b *BalancerPoolAdaptorV1CallBuilder) ExitPool(targetBpt common.Address, swapsAfterExit []*BalancerSingleSwap, swapData BalancerSwapData, exitRequest *BalancerExitPoolRequest) *BalancerPoolAdaptorV1CallBuilder { singleSwaps := make([]*steward_proto.BalancerPoolAdaptorV1_SingleSwap, len(swapsAfterExit)) for i, swap := range swapsAfterExit { singleSwaps[i] = &steward_proto.BalancerPoolAdaptorV1_SingleSwap{ - PoolId: swap.poolId[:], - Kind: steward_proto.BalancerPoolAdaptorV1_SwapKind(swap.kind), - AssetIn: swap.assetIn.Hex(), - AssetOut: swap.assetOut.Hex(), - Amount: swap.amount.String(), - UserData: swap.userData, + PoolId: swap.PoolId[:], + Kind: steward_proto.BalancerPoolAdaptorV1_SwapKind(swap.Kind), + AssetIn: swap.AssetIn.Hex(), + AssetOut: swap.AssetOut.Hex(), + Amount: swap.Amount.String(), + UserData: swap.UserData, } } data := &steward_proto.BalancerPoolAdaptorV1_SwapData{ - MinAmountsForSwaps: make([]string, len(swapData.minAmountsForSwaps)), - SwapDeadlines: make([]string, len(swapData.swapDeadlines)), + MinAmountsForSwaps: make([]string, len(swapData.MinAmountsForSwaps)), + SwapDeadlines: make([]string, len(swapData.SwapDeadlines)), } - for i, amount := range swapData.minAmountsForSwaps { + for i, amount := range swapData.MinAmountsForSwaps { data.MinAmountsForSwaps[i] = amount.String() } - for i, deadline := range swapData.swapDeadlines { + for i, deadline := range swapData.SwapDeadlines { data.SwapDeadlines[i] = deadline.String() } - assets := make([]string, len(exitRequest.assets)) - minAmountsOut := make([]string, len(exitRequest.minAmountsOut)) - for i, asset := range exitRequest.assets { + assets := make([]string, len(exitRequest.Assets)) + minAmountsOut := make([]string, len(exitRequest.MinAmountsOut)) + for i, asset := range exitRequest.Assets { assets[i] = asset.Hex() } - for i, amount := range exitRequest.minAmountsOut { + for i, amount := range exitRequest.MinAmountsOut { minAmountsOut[i] = amount.String() } @@ -148,8 +150,8 @@ func (b *BalancerPoolAdaptorV1CallBuilder) ExitPool(targetBpt common.Address, sw Request: &steward_proto.BalancerPoolAdaptorV1_ExitPoolRequest{ Assets: assets, MinAmountsOut: minAmountsOut, - UserData: exitRequest.userData, - ToInternalBalance: exitRequest.toInternalBalance, + UserData: exitRequest.UserData, + ToInternalBalance: exitRequest.ToInternalBalance, }, }, }, diff --git a/go/builder/adaptors/balancer_pool_flash_loan.go b/go/builder/adaptors/balancer_pool_flash_loan.go new file mode 100644 index 00000000..c8b6b31f --- /dev/null +++ b/go/builder/adaptors/balancer_pool_flash_loan.go @@ -0,0 +1,277 @@ +package adaptors + +import ( + "math/big" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" +) + +// BalancerPoolAdaptorV1CallBuilder is a builder for using flash loans with the BalancerPoolAdaptorV1 adaptor. +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Balancer/BalancerPoolAdaptor.sol +type BalancerPoolFlashLoanAdaptorV1CallBuilder struct { + adaptor common.Address + calls []*steward_proto.BalancerPoolAdaptorV1FlashLoan +} + +// Constructor +func NewBalancerPoolFlashLoanAdaptorV1CallBuilder(adaptor common.Address) *BalancerPoolFlashLoanAdaptorV1CallBuilder { + return &BalancerPoolFlashLoanAdaptorV1CallBuilder{ + adaptor: adaptor, + } +} + +// Build +func (b *BalancerPoolFlashLoanAdaptorV1CallBuilder) Build() *steward_proto.AdaptorCall { + return &steward_proto.AdaptorCall{ + Adaptor: b.adaptor.Hex(), + CallData: &steward_proto.AdaptorCall_BalancerPoolV1FlashLoanCalls{ + BalancerPoolV1FlashLoanCalls: &steward_proto.BalancerPoolAdaptorV1FlashLoanCalls{ + Calls: b.calls, + }, + }, + } +} + +// FlashLoan +func (b *BalancerPoolFlashLoanAdaptorV1CallBuilder) FlashLoan(loanTokens []common.Address, loanAmounts []*big.Int, userData []*steward_proto.AdaptorCall) *BalancerPoolFlashLoanAdaptorV1CallBuilder { + // convert loan tokens to strings + tokensStr := make([]string, len(loanTokens)) + for i, token := range loanTokens { + tokensStr[i] = token.Hex() + } + amountsStr := make([]string, len(loanAmounts)) + for i, amount := range loanAmounts { + amountsStr[i] = amount.String() + } + converted := make([]*steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan, len(userData)) + for i, call := range userData { + converted[i] = convertToBalancerPoolFlashLoanAdaptorCall(call) + } + b.calls = append(b.calls, &steward_proto.BalancerPoolAdaptorV1FlashLoan{ + MakeFlashLoan: &steward_proto.BalancerPoolAdaptorV1FlashLoan_MakeFlashLoan{ + Tokens: tokensStr, + Amounts: amountsStr, + Data: converted, + }, + }) + + return b +} + +func convertToBalancerPoolFlashLoanAdaptorCall(call *steward_proto.AdaptorCall) *steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan { + switch a := call.CallData.(type) { + case *steward_proto.AdaptorCall_AaveATokenV2Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_AaveATokenV2Calls{ + AaveATokenV2Calls: a.AaveATokenV2Calls, + }, + } + case *steward_proto.AdaptorCall_AaveDebtTokenV2Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_AaveDebtTokenV2Calls{ + AaveDebtTokenV2Calls: a.AaveDebtTokenV2Calls, + }, + } + case *steward_proto.AdaptorCall_AaveV3ATokenV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_AaveV3ATokenV1Calls{ + AaveV3ATokenV1Calls: a.AaveV3ATokenV1Calls, + }, + } + case *steward_proto.AdaptorCall_CompoundCTokenV2Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_CompoundCTokenV2Calls{ + CompoundCTokenV2Calls: a.CompoundCTokenV2Calls, + }, + } + case *steward_proto.AdaptorCall_OneInchV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_OneInchV1Calls{ + OneInchV1Calls: a.OneInchV1Calls, + }, + } + case *steward_proto.AdaptorCall_FeesAndReservesV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_FeesAndReservesV1Calls{ + FeesAndReservesV1Calls: a.FeesAndReservesV1Calls, + }, + } + case *steward_proto.AdaptorCall_ZeroXV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_ZeroXV1Calls{ + ZeroXV1Calls: a.ZeroXV1Calls, + }, + } + case *steward_proto.AdaptorCall_SwapWithUniswapV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_SwapWithUniswapV1Calls{ + SwapWithUniswapV1Calls: a.SwapWithUniswapV1Calls, + }, + } + case *steward_proto.AdaptorCall_VestingSimpleV2Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_VestingSimpleV2Calls{ + VestingSimpleV2Calls: a.VestingSimpleV2Calls, + }, + } + case *steward_proto.AdaptorCall_CellarV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_CellarV1Calls{ + CellarV1Calls: a.CellarV1Calls, + }, + } + case *steward_proto.AdaptorCall_UniswapV3V2Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_UniswapV3V2Calls{ + UniswapV3V2Calls: a.UniswapV3V2Calls, + }, + } + case *steward_proto.AdaptorCall_AaveV2EnableAssetAsCollateralV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_AaveV2EnableAssetAsCollateralV1Calls{ + AaveV2EnableAssetAsCollateralV1Calls: a.AaveV2EnableAssetAsCollateralV1Calls, + }, + } + case *steward_proto.AdaptorCall_FTokenV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_FTokenV1Calls{ + FTokenV1Calls: a.FTokenV1Calls, + }, + } + case *steward_proto.AdaptorCall_MorphoAaveV2ATokenV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_MorphoAaveV2ATokenV1Calls{ + MorphoAaveV2ATokenV1Calls: a.MorphoAaveV2ATokenV1Calls, + }, + } + case *steward_proto.AdaptorCall_MorphoAaveV2DebtTokenV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_MorphoAaveV2DebtTokenV1Calls{ + MorphoAaveV2DebtTokenV1Calls: a.MorphoAaveV2DebtTokenV1Calls, + }, + } + case *steward_proto.AdaptorCall_MorphoAaveV3ATokenCollateralV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_MorphoAaveV3ATokenCollateralV1Calls{ + MorphoAaveV3ATokenCollateralV1Calls: a.MorphoAaveV3ATokenCollateralV1Calls, + }, + } + case *steward_proto.AdaptorCall_MorphoAaveV3ATokenP2PV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_MorphoAaveV3ATokenP2PV1Calls{ + MorphoAaveV3ATokenP2PV1Calls: a.MorphoAaveV3ATokenP2PV1Calls, + }, + } + case *steward_proto.AdaptorCall_MorphoAaveV3DebtTokenV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_MorphoAaveV3DebtTokenV1Calls{ + MorphoAaveV3DebtTokenV1Calls: a.MorphoAaveV3DebtTokenV1Calls, + }, + } + case *steward_proto.AdaptorCall_AaveV3DebtTokenV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_AaveV3DebtTokenV1Calls{ + AaveV3DebtTokenV1Calls: a.AaveV3DebtTokenV1Calls, + }, + } + case *steward_proto.AdaptorCall_LegacyCellarV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_LegacyCellarV1Calls{ + LegacyCellarV1Calls: a.LegacyCellarV1Calls, + }, + } + case *steward_proto.AdaptorCall_DebtFTokenV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_DebtFTokenV1Calls{ + DebtFTokenV1Calls: a.DebtFTokenV1Calls, + }, + } + case *steward_proto.AdaptorCall_CollateralFTokenV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_CollateralFTokenV1Calls{ + CollateralFTokenV1Calls: a.CollateralFTokenV1Calls, + }, + } + case *steward_proto.AdaptorCall_ConvexCurveV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_ConvexCurveV1Calls{ + ConvexCurveV1Calls: a.ConvexCurveV1Calls, + }, + } + case *steward_proto.AdaptorCall_CurveV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_CurveV1Calls{ + CurveV1Calls: a.CurveV1Calls, + }, + } + case *steward_proto.AdaptorCall_AuraErc4626V1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_AuraErc4626V1Calls{ + AuraErc4626V1Calls: a.AuraErc4626V1Calls, + }, + } + case *steward_proto.AdaptorCall_MorphoBlueCollateralV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_MorphoBlueCollateralV1Calls{ + MorphoBlueCollateralV1Calls: a.MorphoBlueCollateralV1Calls, + }, + } + case *steward_proto.AdaptorCall_MorphoBlueDebtV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_MorphoBlueDebtV1Calls{ + MorphoBlueDebtV1Calls: a.MorphoBlueDebtV1Calls, + }, + } + case *steward_proto.AdaptorCall_MorphoBlueSupplyV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_MorphoBlueSupplyV1Calls{ + MorphoBlueSupplyV1Calls: a.MorphoBlueSupplyV1Calls, + }, + } + case *steward_proto.AdaptorCall_Erc4626V1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_Erc4626V1Calls{ + Erc4626V1Calls: a.Erc4626V1Calls, + }, + } + case *steward_proto.AdaptorCall_StakingV1Calls: + return &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan{ + Adaptor: call.Adaptor, + CallData: &steward_proto.BalancerPoolAdaptorV1FlashLoan_AdaptorCallForBalancerPoolFlashLoan_StakingV1Calls{ + StakingV1Calls: a.StakingV1Calls, + }, + } + default: + return nil + } +} diff --git a/go/builder/adaptors/balancer_pool_test.go b/go/builder/adaptors/balancer_pool_test.go new file mode 100644 index 00000000..f60ee6bc --- /dev/null +++ b/go/builder/adaptors/balancer_pool_test.go @@ -0,0 +1,77 @@ +package adaptors + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "github.com/stretchr/testify/assert" +) + +// Test the BalancerPoolAdaptorCallBuilder constructor +func TestNewBalancerPoolAdaptorCall(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewBalancerPoolAdaptorV1CallBuilder(adaptor) + + // Check the builder + assert.Equal(t, adaptor.Hex(), builder.adaptor.Hex()) + assert.Equal(t, 0, len(builder.calls)) +} + +// Test JoinPool function +func TestJoinPool(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewBalancerPoolAdaptorV1CallBuilder(adaptor) + + swapData := BalancerSwapData{ + MinAmountsForSwaps: []*big.Int{big.NewInt(100)}, + SwapDeadlines: []*big.Int{big.NewInt(1000)}, + } + + singleSwap := BalancerSingleSwap{ + PoolId: "0x3333333333333333333333333333333333333333", + Kind: 1, + AssetIn: common.HexToAddress("0x0000000000000000000000000000000000000000"), + AssetOut: common.HexToAddress("0x1111111111111111111111111111111111111111"), + Amount: big.NewInt(100), + UserData: []byte{0x01, 0x02, 0x03}, + } + + targetAddress := common.HexToAddress("0x4") + + builder.JoinPool(targetAddress, []*BalancerSingleSwap{&singleSwap}, swapData, big.NewInt(42)) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.BalancerPoolAdaptorV1_JoinPool_{}, builder.calls[0].Function) +} + +// Test ExitPool function +func TestExitPool(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890123456789012345678901234567890") + builder := NewBalancerPoolAdaptorV1CallBuilder(adaptor) + + swapData := BalancerSwapData{ + MinAmountsForSwaps: []*big.Int{big.NewInt(100)}, + SwapDeadlines: []*big.Int{big.NewInt(1000)}, + } + + singleSwap := BalancerSingleSwap{ + PoolId: "0x3333333333333333333333333333333333333333", + Kind: 1, + AssetIn: common.HexToAddress("0x0000000000000000000000000000000000000000"), + AssetOut: common.HexToAddress("0x1111111111111111111111111111111111111111"), + Amount: big.NewInt(100), + UserData: []byte{0x01, 0x02, 0x03}, + } + targetAddress := common.HexToAddress("0x4") + exitPoolRequest := BalancerExitPoolRequest{ + Assets: []common.Address{common.HexToAddress("0x1")}, + MinAmountsOut: []*big.Int{big.NewInt(100)}, + } + + builder.ExitPool(targetAddress, []*BalancerSingleSwap{&singleSwap}, swapData, &exitPoolRequest) + + assert.Equal(t, 1, len(builder.calls)) + assert.IsType(t, &steward_proto.BalancerPoolAdaptorV1_ExitPool_{}, builder.calls[0].Function) +} diff --git a/go/builder/adaptors/pendle.go b/go/builder/adaptors/pendle.go index 06584cda..57482276 100644 --- a/go/builder/adaptors/pendle.go +++ b/go/builder/adaptors/pendle.go @@ -1,17 +1,223 @@ package adaptors import ( + "math/big" + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) -// Builder +// PendleAdaptorCallBuilder is a builder for PendleAdaptorV1 calls +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Pendle/PendleAdaptor.sol type PendleAdaptorCallBuilder struct { adaptor common.Address + calls []*steward_proto.PendleAdaptorV1 } // Constructor -func NewPendleAdaptorCall(adaptor common.Address) *PendleAdaptorCallBuilder { +func NewPendleAdaptorV1CallBuilder(adaptor common.Address) *PendleAdaptorCallBuilder { return &PendleAdaptorCallBuilder{ adaptor: adaptor, + calls: make([]*steward_proto.PendleAdaptorV1, 0), + } +} + +// Build +func (b *PendleAdaptorCallBuilder) Build() *steward_proto.AdaptorCall { + return &steward_proto.AdaptorCall{ + Adaptor: b.adaptor.Hex(), + CallData: &steward_proto.AdaptorCall_PendleV1Calls{ + PendleV1Calls: &steward_proto.PendleAdaptorV1Calls{ + Calls: b.calls, + }, + }, + } +} + +func (b *PendleAdaptorCallBuilder) RevokeApproval(asset common.Address, spender common.Address) *PendleAdaptorCallBuilder { + b.calls = append(b.calls, &steward_proto.PendleAdaptorV1{ + Function: &steward_proto.PendleAdaptorV1_RevokeApproval{ + RevokeApproval: &steward_proto.RevokeApproval{ + Asset: asset.Hex(), + Spender: spender.Hex(), + }, + }, + }) + + return b +} + +type PendleSwapData struct { + SwapType int32 + ExtRouter common.Address + ExtCallData string + NeedScale bool +} + +func convertPendleSwapData(data PendleSwapData) *steward_proto.PendleAdaptorV1_SwapData { + return &steward_proto.PendleAdaptorV1_SwapData{ + SwapType: data.SwapType, + ExtRouter: data.ExtRouter.Hex(), + ExtCalldata: data.ExtCallData, + NeedScale: data.NeedScale, + } +} + +type PendleTokenInput struct { + TokenIn common.Address + NetTokenIn *big.Int + TokenMintSy common.Address + PendleSwap common.Address + SwapData PendleSwapData +} + +func convertPendleTokenInput(input PendleTokenInput) *steward_proto.PendleAdaptorV1_TokenInput { + return &steward_proto.PendleAdaptorV1_TokenInput{ + TokenIn: input.TokenIn.Hex(), + NetTokenIn: input.NetTokenIn.String(), + TokenMintSy: input.TokenMintSy.Hex(), + PendleSwap: input.PendleSwap.Hex(), + SwapData: convertPendleSwapData(input.SwapData), + } +} + +type PendleApproxParams struct { + GuessMin *big.Int + GuessMax *big.Int + GuessOffchain *big.Int + MaxIteration *big.Int + Eps *big.Int +} + +func convertPendleApproxParams(params PendleApproxParams) *steward_proto.PendleAdaptorV1_ApproxParams { + return &steward_proto.PendleAdaptorV1_ApproxParams{ + GuessMin: params.GuessMin.String(), + GuessMax: params.GuessMax.String(), + GuessOffchain: params.GuessOffchain.String(), + MaxIteration: params.MaxIteration.String(), + Eps: params.Eps.String(), + } +} + +type PendleTokenOutput struct { + TokenOut common.Address + MinTokenOut *big.Int + TokenRedeemSy common.Address + PendleSwap common.Address + SwapData PendleSwapData +} + +func convertPendleTokenOutput(output PendleTokenOutput) *steward_proto.PendleAdaptorV1_TokenOutput { + return &steward_proto.PendleAdaptorV1_TokenOutput{ + TokenOut: output.TokenOut.Hex(), + MinTokenOut: output.MinTokenOut.String(), + TokenRedeemSy: output.TokenRedeemSy.Hex(), + PendleSwap: output.PendleSwap.Hex(), + SwapData: convertPendleSwapData(output.SwapData), } } + +func (b *PendleAdaptorCallBuilder) MintSyFromToken(market common.Address, minSyOut *big.Int, tokenInput PendleTokenInput) *PendleAdaptorCallBuilder { + b.calls = append(b.calls, &steward_proto.PendleAdaptorV1{ + Function: &steward_proto.PendleAdaptorV1_MintSyFromToken_{ + MintSyFromToken: &steward_proto.PendleAdaptorV1_MintSyFromToken{ + Market: market.Hex(), + MinSyOut: minSyOut.String(), + Input: convertPendleTokenInput(tokenInput), + }, + }, + }) + + return b +} + +func (b *PendleAdaptorCallBuilder) MintPyFromSy(market common.Address, netSyIn *big.Int, minPyOut *big.Int) *PendleAdaptorCallBuilder { + b.calls = append(b.calls, &steward_proto.PendleAdaptorV1{ + Function: &steward_proto.PendleAdaptorV1_MintPyFromSy_{ + MintPyFromSy: &steward_proto.PendleAdaptorV1_MintPyFromSy{ + Market: market.Hex(), + NetSyIn: netSyIn.String(), + MinPyOut: minPyOut.String(), + }, + }, + }) + + return b +} + +func (b *PendleAdaptorCallBuilder) SwapExactPtForYt(market common.Address, exactPtIn *big.Int, minYtOut *big.Int, guessTotalYtToSwap PendleApproxParams) *PendleAdaptorCallBuilder { + b.calls = append(b.calls, &steward_proto.PendleAdaptorV1{ + Function: &steward_proto.PendleAdaptorV1_SwapExactPtForYt_{ + SwapExactPtForYt: &steward_proto.PendleAdaptorV1_SwapExactPtForYt{ + Market: market.Hex(), + ExactPtIn: exactPtIn.String(), + MinYtOut: minYtOut.String(), + GuessTotalYtToSwap: convertPendleApproxParams(guessTotalYtToSwap), + }, + }, + }) + + return b +} + +// SwapExactYtForPt +func (b *PendleAdaptorCallBuilder) SwapExactYtForPt(market common.Address, exactYtIn *big.Int, minPtOut *big.Int, guessTotalPtToSwap PendleApproxParams) *PendleAdaptorCallBuilder { + b.calls = append(b.calls, &steward_proto.PendleAdaptorV1{ + Function: &steward_proto.PendleAdaptorV1_SwapExactYtForPt_{ + SwapExactYtForPt: &steward_proto.PendleAdaptorV1_SwapExactYtForPt{ + Market: market.Hex(), + ExactYtIn: exactYtIn.String(), + MinPtOut: minPtOut.String(), + GuessTotalPtToSwap: convertPendleApproxParams(guessTotalPtToSwap), + }, + }, + }) + + return b +} + +// AddLiquidityDualSyAndPt +func (b *PendleAdaptorCallBuilder) AddLiquidityDualSyAndPt(market common.Address, netSyDesired *big.Int, netPtDesired *big.Int, minLpOut *big.Int) *PendleAdaptorCallBuilder { + b.calls = append(b.calls, &steward_proto.PendleAdaptorV1{ + Function: &steward_proto.PendleAdaptorV1_AddLiquidityDualSyAndPt_{ + AddLiquidityDualSyAndPt: &steward_proto.PendleAdaptorV1_AddLiquidityDualSyAndPt{ + Market: market.Hex(), + NetSyDesired: netSyDesired.String(), + NetPtDesired: netPtDesired.String(), + MinLpOut: minLpOut.String(), + }, + }, + }) + + return b +} + +// RedeemPyToSy +func (b *PendleAdaptorCallBuilder) RedeemPyToSy(market common.Address, netPyIn *big.Int, minSyOut *big.Int) *PendleAdaptorCallBuilder { + b.calls = append(b.calls, &steward_proto.PendleAdaptorV1{ + Function: &steward_proto.PendleAdaptorV1_RedeemPyToSy_{ + RedeemPyToSy: &steward_proto.PendleAdaptorV1_RedeemPyToSy{ + Market: market.Hex(), + NetPyIn: netPyIn.String(), + MinSyOut: minSyOut.String(), + }, + }, + }) + + return b +} + +// RedeemSyToToken +func (b *PendleAdaptorCallBuilder) RedeemSyToToken(market common.Address, netSyIn *big.Int, tokenOutput PendleTokenOutput) *PendleAdaptorCallBuilder { + b.calls = append(b.calls, &steward_proto.PendleAdaptorV1{ + Function: &steward_proto.PendleAdaptorV1_RedeemSyToToken_{ + RedeemSyToToken: &steward_proto.PendleAdaptorV1_RedeemSyToToken{ + Market: market.Hex(), + NetSyIn: netSyIn.String(), + Output: convertPendleTokenOutput(tokenOutput), + }, + }, + }) + + return b +} diff --git a/go/builder/adaptors/pendle_test.go b/go/builder/adaptors/pendle_test.go new file mode 100644 index 00000000..2cc2771b --- /dev/null +++ b/go/builder/adaptors/pendle_test.go @@ -0,0 +1,208 @@ +package adaptors + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "github.com/stretchr/testify/assert" +) + +func TestNewPendleAdaptorV1CallBuilder(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + builder := NewPendleAdaptorV1CallBuilder(adaptor) + + assert.Equal(t, adaptor, builder.adaptor) + assert.NotNil(t, builder.calls) +} + +func TestBuild(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + builder := NewPendleAdaptorV1CallBuilder(adaptor) + + call := builder.Build() + assert.Equal(t, adaptor.Hex(), call.Adaptor) + assert.NotNil(t, call.CallData) +} + +func TestPendleRevokeApproval(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + asset := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef") + spender := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + + builder := NewPendleAdaptorV1CallBuilder(adaptor). + RevokeApproval(asset, spender) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetRevokeApproval() + assert.Equal(t, asset.Hex(), call.Asset) + assert.Equal(t, spender.Hex(), call.Spender) + assert.IsType(t, &steward_proto.PendleAdaptorV1_RevokeApproval{}, call) +} + +func TestAddLiquidityDualSyAndPt(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + market := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef") + netSyDesired := big.NewInt(1000) + netPtDesired := big.NewInt(500) + minLpOut := big.NewInt(50) + + builder := NewPendleAdaptorV1CallBuilder(adaptor) + builder.AddLiquidityDualSyAndPt(market, netSyDesired, netPtDesired, minLpOut) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetAddLiquidityDualSyAndPt() + assert.Equal(t, market.Hex(), call.Market) + assert.Equal(t, netSyDesired.String(), call.NetSyDesired) + assert.Equal(t, netPtDesired.String(), call.NetPtDesired) + assert.Equal(t, minLpOut.String(), call.MinLpOut) + assert.IsType(t, &steward_proto.PendleAdaptorV1_AddLiquidityDualSyAndPt{}, call) +} + +func TestRedeemPyToSy(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + market := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef") + netPyIn := big.NewInt(1000) + minSyOut := big.NewInt(500) + + builder := NewPendleAdaptorV1CallBuilder(adaptor) + builder.RedeemPyToSy(market, netPyIn, minSyOut) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetRedeemPyToSy() + assert.Equal(t, market.Hex(), call.Market) + assert.Equal(t, netPyIn.String(), call.NetPyIn) + assert.Equal(t, minSyOut.String(), call.MinSyOut) + assert.IsType(t, &steward_proto.PendleAdaptorV1_RedeemPyToSy{}, call) +} + +func TestRedeemSyToToken(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + market := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef") + netSyIn := big.NewInt(1000) + tokenOutput := PendleTokenOutput{ + // Initialize the fields of PendleTokenOutput as needed + } + + builder := NewPendleAdaptorV1CallBuilder(adaptor) + builder.RedeemSyToToken(market, netSyIn, tokenOutput) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetRedeemSyToToken() + assert.Equal(t, market.Hex(), call.Market) + assert.Equal(t, netSyIn.String(), call.NetSyIn) + assert.IsType(t, &steward_proto.PendleAdaptorV1_RedeemSyToToken{}, call) +} + +func TestConvertPendleSwapData(t *testing.T) { + data := PendleSwapData{ + SwapType: 1, + ExtRouter: common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef"), + ExtCallData: "0x1234", + NeedScale: true, + } + + result := convertPendleSwapData(data) + + assert.Equal(t, data.SwapType, result.SwapType) + assert.Equal(t, data.ExtRouter.Hex(), result.ExtRouter) + assert.Equal(t, data.ExtCallData, result.ExtCalldata) + assert.Equal(t, data.NeedScale, result.NeedScale) +} + +func TestConvertPendleTokenInput(t *testing.T) { + input := PendleTokenInput{ + TokenIn: common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef"), + NetTokenIn: big.NewInt(1000), + TokenMintSy: common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678"), + PendleSwap: common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef"), + SwapData: PendleSwapData{ + SwapType: 1, + ExtRouter: common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef"), + ExtCallData: "0x1234", + NeedScale: true, + }, + } + + result := convertPendleTokenInput(input) + + assert.Equal(t, input.TokenIn.Hex(), result.TokenIn) + assert.Equal(t, input.NetTokenIn.String(), result.NetTokenIn) + assert.Equal(t, input.TokenMintSy.Hex(), result.TokenMintSy) + assert.Equal(t, input.PendleSwap.Hex(), result.PendleSwap) + assert.Equal(t, input.SwapData.SwapType, result.SwapData.SwapType) + assert.Equal(t, input.SwapData.ExtRouter.Hex(), result.SwapData.ExtRouter) + assert.Equal(t, input.SwapData.ExtCallData, result.SwapData.ExtCalldata) + assert.Equal(t, input.SwapData.NeedScale, result.SwapData.NeedScale) +} + +func TestConvertPendleApproxParams(t *testing.T) { + params := PendleApproxParams{ + GuessMin: big.NewInt(1000), + GuessMax: big.NewInt(2000), + GuessOffchain: big.NewInt(1500), + MaxIteration: big.NewInt(10), + Eps: big.NewInt(1), + } + + result := convertPendleApproxParams(params) + + assert.Equal(t, params.GuessMin.String(), result.GuessMin) + assert.Equal(t, params.GuessMax.String(), result.GuessMax) + assert.Equal(t, params.GuessOffchain.String(), result.GuessOffchain) + assert.Equal(t, params.MaxIteration.String(), result.MaxIteration) + assert.Equal(t, params.Eps.String(), result.Eps) +} + +func TestPendleAdaptorCallBuilder_AddLiquidityDualSyAndPt(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + market := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef") + netSyDesired := big.NewInt(1000) + netPtDesired := big.NewInt(500) + minLpOut := big.NewInt(50) + + builder := NewPendleAdaptorV1CallBuilder(adaptor) + builder.AddLiquidityDualSyAndPt(market, netSyDesired, netPtDesired, minLpOut) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetAddLiquidityDualSyAndPt() + assert.Equal(t, market.Hex(), call.Market) + assert.Equal(t, netSyDesired.String(), call.NetSyDesired) + assert.Equal(t, netPtDesired.String(), call.NetPtDesired) + assert.Equal(t, minLpOut.String(), call.MinLpOut) +} + +func TestPendleAdaptorCallBuilder_RedeemPyToSy(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + market := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef") + netPyIn := big.NewInt(1000) + minSyOut := big.NewInt(500) + + builder := NewPendleAdaptorV1CallBuilder(adaptor) + builder.RedeemPyToSy(market, netPyIn, minSyOut) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetRedeemPyToSy() + assert.Equal(t, market.Hex(), call.Market) + assert.Equal(t, netPyIn.String(), call.NetPyIn) + assert.Equal(t, minSyOut.String(), call.MinSyOut) +} + +func TestPendleAdaptorCallBuilder_RedeemSyToToken(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + market := common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef") + netSyIn := big.NewInt(1000) + tokenOutput := PendleTokenOutput{ + // Initialize the fields of PendleTokenOutput as needed + } + + builder := NewPendleAdaptorV1CallBuilder(adaptor) + builder.RedeemSyToToken(market, netSyIn, tokenOutput) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetRedeemSyToToken() + assert.Equal(t, market.Hex(), call.Market) + assert.Equal(t, netSyIn.String(), call.NetSyIn) + // Add more assertions for tokenOutput fields if needed +} diff --git a/go/builder/adaptors/swap_with_uniswap.go b/go/builder/adaptors/swap_with_uniswap.go index cbac7d55..54ae24c9 100644 --- a/go/builder/adaptors/swap_with_uniswap.go +++ b/go/builder/adaptors/swap_with_uniswap.go @@ -7,7 +7,8 @@ import ( "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) -// Builder for SwapWithUniswapAdaptorV1 +// SwapWithUniswapAdaptorV1CallBuilder is a builder for SwapWithUniswapAdaptorV1 calls +// Contract: https://github.com/PeggyJV/cellar-contracts/blob/main/src/modules/adaptors/Uniswap/SwapWithUniswapAdaptor.sol type SwapWithUniswapAdaptorV1CallBuilder struct { adaptor common.Address calls []*steward_proto.SwapWithUniswapAdaptorV1 @@ -21,7 +22,6 @@ func NewSwapWithUniswapAdaptorV1CallBuilder(adaptor common.Address) *SwapWithUni } } -// Build builds the AdaptorCall func (b *SwapWithUniswapAdaptorV1CallBuilder) Build() *steward_proto.AdaptorCall { return &steward_proto.AdaptorCall{ Adaptor: b.adaptor.Hex(), @@ -33,6 +33,19 @@ func (b *SwapWithUniswapAdaptorV1CallBuilder) Build() *steward_proto.AdaptorCall } } +func (b *SwapWithUniswapAdaptorV1CallBuilder) RevokeApproval(asset common.Address, spender common.Address) *SwapWithUniswapAdaptorV1CallBuilder { + b.calls = append(b.calls, &steward_proto.SwapWithUniswapAdaptorV1{ + Function: &steward_proto.SwapWithUniswapAdaptorV1_RevokeApproval{ + RevokeApproval: &steward_proto.RevokeApproval{ + Asset: asset.Hex(), + Spender: spender.Hex(), + }, + }, + }) + + return b +} + func (b *SwapWithUniswapAdaptorV1CallBuilder) SwapWithUniV2(path []common.Address, amount *big.Int, amountOutMin *big.Int) *SwapWithUniswapAdaptorV1CallBuilder { pathStrs := make([]string, 0) for _, addr := range path { diff --git a/go/builder/adaptors/swap_with_uniswap_test.go b/go/builder/adaptors/swap_with_uniswap_test.go new file mode 100644 index 00000000..2064f5e0 --- /dev/null +++ b/go/builder/adaptors/swap_with_uniswap_test.go @@ -0,0 +1,89 @@ +package adaptors + +import ( + "math/big" + "testing" + + "github.com/ethereum/go-ethereum/common" + "github.com/stretchr/testify/assert" +) + +func TestNewSwapWithUniswapAdaptorV1CallBuilder(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + builder := NewSwapWithUniswapAdaptorV1CallBuilder(adaptor) + + assert.Equal(t, adaptor, builder.adaptor) + assert.NotNil(t, builder.calls) +} + +func TestSwapWithUniswapAdaptorV1Build(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + builder := NewSwapWithUniswapAdaptorV1CallBuilder(adaptor) + + call := builder.Build() + assert.Equal(t, adaptor.Hex(), call.Adaptor) + assert.NotNil(t, call.CallData) +} + +func TestSwapWithUniswapRevokeApproval(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + asset := common.HexToAddress("0xadefabcdefabcdefabcdefabcdefabcdefabcdef") + spender := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + + builder := NewSwapWithUniswapAdaptorV1CallBuilder(adaptor). + RevokeApproval(asset, spender) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetRevokeApproval() + assert.Equal(t, asset.Hex(), call.Asset) + assert.Equal(t, spender.Hex(), call.Spender) +} + +func TestSwapWithUniV2(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + path := []common.Address{ + common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef"), + common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678"), + } + amount := big.NewInt(1000) + amountOutMin := big.NewInt(500) + + builder := NewSwapWithUniswapAdaptorV1CallBuilder(adaptor) + builder.SwapWithUniV2(path, amount, amountOutMin) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetSwapWithUniV2() + assert.Equal(t, len(path), len(call.Path)) + for i, addr := range path { + assert.Equal(t, addr.Hex(), call.Path[i]) + } + assert.Equal(t, amount.String(), call.Amount) + assert.Equal(t, amountOutMin.String(), call.AmountOutMin) +} + +func TestSwapWithUniV3(t *testing.T) { + adaptor := common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678") + path := []common.Address{ + common.HexToAddress("0xabcdefabcdefabcdefabcdefabcdefabcdefabcdef"), + common.HexToAddress("0x1234567890abcdef1234567890abcdef12345678"), + } + poolFees := []uint32{3000, 500} + amount := big.NewInt(1000) + amountOutMin := big.NewInt(500) + + builder := NewSwapWithUniswapAdaptorV1CallBuilder(adaptor) + builder.SwapWithUniV3(path, poolFees, amount, amountOutMin) + + assert.Len(t, builder.calls, 1) + call := builder.calls[0].GetSwapWithUniV3() + assert.Equal(t, len(path), len(call.Path)) + for i, addr := range path { + assert.Equal(t, addr.Hex(), call.Path[i]) + } + assert.Equal(t, len(poolFees), len(call.PoolFees)) + for i, fee := range poolFees { + assert.Equal(t, fee, call.PoolFees[i]) + } + assert.Equal(t, amount.String(), call.Amount) + assert.Equal(t, amountOutMin.String(), call.AmountOutMin) +} diff --git a/go/builder/cellar_call.go b/go/builder/cellar_call.go index b43714ba..acd7a3f9 100644 --- a/go/builder/cellar_call.go +++ b/go/builder/cellar_call.go @@ -8,17 +8,24 @@ import ( "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) -type CellarCallBuilder struct { +// CellarCallDataBuilder is the builder for cellar call data. It can be used to string together multiple function calls to one Cellar. Function calls will execute in the order they are added to the builder. +type CellarCallDataBuilder struct { functionCalls []*steward_proto.CellarV2_5_FunctionCall } -func NewCallDataBuilder() *CellarCallBuilder { - return &CellarCallBuilder{ +// NewCellarCallDataBuilder creates a new CallDataBuilder +func NewCellarCallDataBuilder() *CellarCallDataBuilder { + return &CellarCallDataBuilder{ functionCalls: make([]*steward_proto.CellarV2_5_FunctionCall, 0), } } -func (cdb *CellarCallBuilder) Build() (*steward_proto.CellarV2_5, error) { +func (cdb *CellarCallDataBuilder) GetFunctionCalls() []*steward_proto.CellarV2_5_FunctionCall { + return cdb.functionCalls +} + +// Build returns the CallData struct with the function calls added to the builder +func (cdb *CellarCallDataBuilder) Build() (*steward_proto.CellarV2_5, error) { if len(cdb.functionCalls) == 0 { return nil, fmt.Errorf("no function calls added to CallDataBuilder") } else if len(cdb.functionCalls) == 1 { @@ -39,14 +46,14 @@ func (cdb *CellarCallBuilder) Build() (*steward_proto.CellarV2_5, error) { } // CallOnAdaptor adds call data for the CallOnAdaptor function to the builder -func (cdb *CellarCallBuilder) CallOnAdaptor(adaptorCall *steward_proto.AdaptorCall) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) CallOnAdaptor(adaptorCalls ...*steward_proto.AdaptorCall) *CellarCallDataBuilder { // search functionCalls for type steward_proto.CellarV2_5_FunctionCall_CallOnAdaptor and if // it already exists, append to CallOnAdaptor.Data instead of creating a new CallOnAdaptor struct found := false for _, call := range cdb.functionCalls { if call.GetCallOnAdaptor() != nil { found = true - call.GetCallOnAdaptor().Data = append(call.GetCallOnAdaptor().Data, adaptorCall) + call.GetCallOnAdaptor().Data = append(call.GetCallOnAdaptor().Data, adaptorCalls...) break } } @@ -55,7 +62,7 @@ func (cdb *CellarCallBuilder) CallOnAdaptor(adaptorCall *steward_proto.AdaptorCa cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_CallOnAdaptor{ CallOnAdaptor: &steward_proto.CellarV2_5_CallOnAdaptor{ - Data: []*steward_proto.AdaptorCall{adaptorCall}, + Data: adaptorCalls, }, }, }) @@ -65,7 +72,7 @@ func (cdb *CellarCallBuilder) CallOnAdaptor(adaptorCall *steward_proto.AdaptorCa } // AddPosition adds call data for the AddPosition function to the builder -func (cdb *CellarCallBuilder) AddPosition(index uint32, positionId uint32, configurationData []byte, inDebtArray bool) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) AddPosition(index uint32, positionId uint32, configurationData []byte, inDebtArray bool) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_AddPosition{ AddPosition: &steward_proto.CellarV2_5_AddPosition{ @@ -81,7 +88,7 @@ func (cdb *CellarCallBuilder) AddPosition(index uint32, positionId uint32, confi } // RemovePosition adds call data for the RemovePosition function to the builder -func (cdb *CellarCallBuilder) RemovePosition(index uint32, inDebtArray bool) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) RemovePosition(index uint32, inDebtArray bool) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_RemovePosition{ RemovePosition: &steward_proto.CellarV2_5_RemovePosition{ @@ -95,7 +102,7 @@ func (cdb *CellarCallBuilder) RemovePosition(index uint32, inDebtArray bool) *Ce } // SetHoldingPosition adds call data for the SetHoldingPosition function to the builder -func (cdb *CellarCallBuilder) SetHoldingPosition(positionId uint32) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) SetHoldingPosition(positionId uint32) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_SetHoldingPosition{ SetHoldingPosition: &steward_proto.CellarV2_5_SetHoldingPosition{ @@ -108,7 +115,7 @@ func (cdb *CellarCallBuilder) SetHoldingPosition(positionId uint32) *CellarCallB } // SetStrategistPayoutAddress adds call data for the SetStrategistPayoutAddress function to the builder -func (cdb *CellarCallBuilder) SetStrategistPayoutAddress(payout common.Address) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) SetStrategistPayoutAddress(payout common.Address) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_SetStrategistPayoutAddress{ SetStrategistPayoutAddress: &steward_proto.CellarV2_5_SetStrategistPayoutAddress{ @@ -121,7 +128,7 @@ func (cdb *CellarCallBuilder) SetStrategistPayoutAddress(payout common.Address) } // SwapPositions adds call data for the SwapPositions function to the builder -func (cdb *CellarCallBuilder) SwapPositions(index1, index2 uint32, inDebtArray bool) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) SwapPositions(index1, index2 uint32, inDebtArray bool) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_SwapPositions{ SwapPositions: &steward_proto.CellarV2_5_SwapPositions{ @@ -136,7 +143,7 @@ func (cdb *CellarCallBuilder) SwapPositions(index1, index2 uint32, inDebtArray b } // SetShareLockPeriod adds call data for the SetShareLockPeriod function to the builder -func (cdb *CellarCallBuilder) SetShareLockPeriod(newLock big.Int) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) SetShareLockPeriod(newLock *big.Int) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_SetShareLockPeriod{ SetShareLockPeriod: &steward_proto.CellarV2_5_SetShareLockPeriod{ @@ -149,7 +156,7 @@ func (cdb *CellarCallBuilder) SetShareLockPeriod(newLock big.Int) *CellarCallBui } // InitiateShutdown adds call data for the InitiateShutdown function to the builder -func (cdb *CellarCallBuilder) InitiateShutdown() *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) InitiateShutdown() *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_InitiateShutdown{ InitiateShutdown: &steward_proto.CellarV2_5_InitiateShutdown{}, @@ -160,7 +167,7 @@ func (cdb *CellarCallBuilder) InitiateShutdown() *CellarCallBuilder { } // LiftShutdown adds call data for the LiftShutdown function to the builder -func (cdb *CellarCallBuilder) LiftShutdown() *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) LiftShutdown() *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_LiftShutdown{ LiftShutdown: &steward_proto.CellarV2_5_LiftShutdown{}, @@ -170,8 +177,21 @@ func (cdb *CellarCallBuilder) LiftShutdown() *CellarCallBuilder { return cdb } +// AddAdaptorToCatalogue adds call data for the AddAdaptorToCatalogue function to the builder +func (cdb *CellarCallDataBuilder) AddAdaptorToCatalogue(adaptor common.Address) *CellarCallDataBuilder { + cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ + Function: &steward_proto.CellarV2_5_FunctionCall_AddAdaptorToCatalogue{ + AddAdaptorToCatalogue: &steward_proto.CellarV2_5_AddAdaptorToCatalogue{ + Adaptor: adaptor.Hex(), + }, + }, + }) + + return cdb +} + // RemoveAdaptorFromCatalogue adds call data for the RemoveAdaptorFromCatalogue function to the builder -func (cdb *CellarCallBuilder) RemoveAdaptorFromCatalogue(adaptor common.Address) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) RemoveAdaptorFromCatalogue(adaptor common.Address) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_RemoveAdaptorFromCatalogue{ RemoveAdaptorFromCatalogue: &steward_proto.CellarV2_5_RemoveAdaptorFromCatalogue{ @@ -184,7 +204,7 @@ func (cdb *CellarCallBuilder) RemoveAdaptorFromCatalogue(adaptor common.Address) } // RemovePositionFromCatalogue adds call data for the RemovePositionFromCatalogue function to the builder -func (cdb *CellarCallBuilder) RemovePositionFromCatalogue(positionId uint32) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) RemovePositionFromCatalogue(positionId uint32) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_RemovePositionFromCatalogue{ RemovePositionFromCatalogue: &steward_proto.CellarV2_5_RemovePositionFromCatalogue{ @@ -197,7 +217,7 @@ func (cdb *CellarCallBuilder) RemovePositionFromCatalogue(positionId uint32) *Ce } // DecreaseShareSupplyCap adds call data for the DecreaseShareSupplyCap function to the builder -func (cdb *CellarCallBuilder) DecreaseShareSupplyCap(newCap big.Int) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) DecreaseShareSupplyCap(newCap *big.Int) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_DecreaseShareSupplyCap{ DecreaseShareSupplyCap: &steward_proto.CellarV2_5_DecreaseShareSupplyCap{ @@ -210,7 +230,7 @@ func (cdb *CellarCallBuilder) DecreaseShareSupplyCap(newCap big.Int) *CellarCall } // AddPositionToCatalogue adds call data for the AddPositionToCatalogue function to the builder -func (cdb *CellarCallBuilder) AddPositionToCatalogue(positionId uint32) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) AddPositionToCatalogue(positionId uint32) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_AddPositionToCatalogue{ AddPositionToCatalogue: &steward_proto.CellarV2_5_AddPositionToCatalogue{ @@ -223,7 +243,7 @@ func (cdb *CellarCallBuilder) AddPositionToCatalogue(positionId uint32) *CellarC } // SetRebalanceDeviation adds call data for the SetRebalanceDeviation function to the builder -func (cdb *CellarCallBuilder) SetRebalanceDeviation(newDeviation big.Int) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) SetRebalanceDeviation(newDeviation *big.Int) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_SetRebalanceDeviation{ SetRebalanceDeviation: &steward_proto.CellarV2_5_SetRebalanceDeviation{ @@ -236,7 +256,7 @@ func (cdb *CellarCallBuilder) SetRebalanceDeviation(newDeviation big.Int) *Cella } // SetStrategistPlatformCut adds call data for the SetStrategistPlatformCut function to the builder -func (cdb *CellarCallBuilder) SetStrategistPlatformCut(newCut uint64) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) SetStrategistPlatformCut(newCut uint64) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_SetStrategistPlatformCut{ SetStrategistPlatformCut: &steward_proto.CellarV2_5_SetStrategistPlatformCut{ @@ -249,7 +269,7 @@ func (cdb *CellarCallBuilder) SetStrategistPlatformCut(newCut uint64) *CellarCal } // IncreaseShareSupplyCap adds call data for the IncreaseShareSupplyCap function to the builder -func (cdb *CellarCallBuilder) IncreaseShareSupplyCap(newCap big.Int) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) IncreaseShareSupplyCap(newCap *big.Int) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_IncreaseShareSupplyCap{ IncreaseShareSupplyCap: &steward_proto.CellarV2_5_IncreaseShareSupplyCap{ @@ -262,7 +282,7 @@ func (cdb *CellarCallBuilder) IncreaseShareSupplyCap(newCap big.Int) *CellarCall } // SetSharePriceOracle adds call data for the SetSharePriceOracle function to the builder -func (cdb *CellarCallBuilder) SetSharePriceOracle(registryId big.Int, sharePriceOracle common.Address) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) SetSharePriceOracle(registryId *big.Int, sharePriceOracle common.Address) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_SetSharePriceOracle{ SetSharePriceOracle: &steward_proto.CellarV2_5_SetSharePriceOracle{ @@ -276,7 +296,7 @@ func (cdb *CellarCallBuilder) SetSharePriceOracle(registryId big.Int, sharePrice } // CachePriceRouter adds call data for the CachePriceRouter function to the builder -func (cdb *CellarCallBuilder) CachePriceRouter(checkTotalAssets bool, allowableRange uint32, expectedPriceRouter common.Address) *CellarCallBuilder { +func (cdb *CellarCallDataBuilder) CachePriceRouter(checkTotalAssets bool, allowableRange uint32, expectedPriceRouter common.Address) *CellarCallDataBuilder { cdb.functionCalls = append(cdb.functionCalls, &steward_proto.CellarV2_5_FunctionCall{ Function: &steward_proto.CellarV2_5_FunctionCall_CachePriceRouter{ CachePriceRouter: &steward_proto.CellarV2_5_CachePriceRouter{ diff --git a/go/builder/cellar_call_test.go b/go/builder/cellar_call_test.go new file mode 100644 index 00000000..f40fb89b --- /dev/null +++ b/go/builder/cellar_call_test.go @@ -0,0 +1,25 @@ +package builder + +// Tests for the CellarCallBuilder + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +// Test the CellarCallDataBuilder constructor +func TestNewCellarCallData(t *testing.T) { + // Create a new CellarCallDataBuilder + builder := NewCellarCallDataBuilder() + + // Check the builder + assert.Equal(t, 0, len(builder.functionCalls)) + + // Can't build an empty builder + result, error := builder.Build() + assert.Nil(t, result) + assert.Error(t, error) +} + +// Test the CallDataBuilder diff --git a/go/builder/examples/adaptor_call.go b/go/builder/examples/adaptor_call.go new file mode 100644 index 00000000..c801d673 --- /dev/null +++ b/go/builder/examples/adaptor_call.go @@ -0,0 +1,61 @@ +package examples + +import ( + "context" + "fmt" + "math/big" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/go/builder" + "github.com/peggyjv/steward/go/builder/adaptors" +) + +func ExampleAdaptorCall() { + // Get client and context + conn, client, err := CreateTlsClient() + if err != nil { + panic(err) + } + + defer conn.Close() + + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + + // Build adaptor call + adaptor := common.HexToAddress("0x1234567890000000000000000000000000000000") + token := common.HexToAddress("0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9") + amount := big.NewInt(100000) + adaptorCall := adaptors.NewAaveV2ATokenAdaptorV2CallBuilder(adaptor). + DepositToAave(token, amount). + Build() + + // Build call data + callData, err := builder.NewCellarCallDataBuilder(). + CallOnAdaptor(adaptorCall). + Build() + if err != nil { + panic(err) + } + + // Build request + cellarId := common.HexToAddress("0x0") + request, err := builder.NewScheduleRequestBuilder(). + WithCellarID(cellarId). + WithChainID(1). + WithCallData(callData). + WithBlockHeight(100). + Build() + if err != nil { + panic(err) + } + + // Send request + response, err := client.Schedule(ctx, request) + if err != nil { + panic(err) + } + + fmt.Print(response) +} diff --git a/go/builder/examples/broadcast_requests.go b/go/builder/examples/broadcast_requests.go new file mode 100644 index 00000000..bbbe0c13 --- /dev/null +++ b/go/builder/examples/broadcast_requests.go @@ -0,0 +1,62 @@ +package examples + +import ( + "context" + "fmt" + "sync" + + "github.com/cosmos/cosmos-sdk/client" + pubsub "github.com/peggyjv/sommelier/v7/x/pubsub/types" +) + +// Requests to schedule a contract call must be sent to many Steward instances. This is required because calls that do not have enough votes of approval from the validator set will not be +// executed. Right now there is no single endpoint that handles broadcastic the call to each +// Steward instance, so we must query the endpoints and then send the request to each one. +// +// This example includes a concurrent loop that sends the request to each subscriber, which is the optimal way to broadcast in production due to the time constraint of the scheduled height. +func ExampleBroadcastRequests() { + // Query the Sommelier chain to get the list of Steward instances + sommCtx := client.Context{}.WithNodeURI("http://localhost:26657") + sommQueryClient := pubsub.NewQueryClient(sommCtx) + + res, err := sommQueryClient.QuerySubscribers(context.Background(), &pubsub.QuerySubscribersRequest{}) + if err != nil { + panic(err) + } + + subscribers := res.Subscribers + + // Get client + conn, client, err := CreateTlsClient() + if err != nil { + panic(err) + } + + defer conn.Close() + + // Build request + request, err := BuildMulticallRequest() + if err != nil { + panic(err) + } + + // Send request to each subscriber concurrently + var wg sync.WaitGroup + + for _, subscriber := range subscribers { + wg.Add(1) + go func(pushUrl string) { + defer wg.Done() + + response, err := client.Schedule(context.Background(), request) + if err != nil { + fmt.Printf("Error sending request to %s: %s\n", pushUrl, err) + return + } + + fmt.Print("Sent request to ", pushUrl, " with response: ", response, "\n") + }(subscriber.PushUrl) + } + + wg.Wait() +} diff --git a/go/builder/examples/check_steward_status.go b/go/builder/examples/check_steward_status.go new file mode 100644 index 00000000..2cbaf022 --- /dev/null +++ b/go/builder/examples/check_steward_status.go @@ -0,0 +1,52 @@ +package examples + +import ( + "context" + "fmt" + "time" + + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "google.golang.org/grpc" +) + +// When running the production server, Steward exposes a Status/Version method that shows the current +// running version of Steward. It can be useful for verifying connectivity and compatability. TLS authentication +// is required to access this endpoint. +func CreateTlsStatusClient() (steward_proto.StatusServiceClient, error) { + // This example uses fake file paths for the auth materials + creds, err := buildCredentials("client.crt", "client.key", "server_ca.crt") + if err != nil { + return nil, err + } + + addr := "localhost:5734" + conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(creds)) + if err != nil { + return nil, err + } + + defer conn.Close() + + client := steward_proto.NewStatusServiceClient(conn) + + return client, nil +} + +func ExampleCheckStewardStatus() { + // Get client and context + client, err := CreateTlsStatusClient() + if err != nil { + panic(err) + } + + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + + // Send request + response, err := client.Version(ctx, &steward_proto.VersionRequest{}) + if err != nil { + panic(err) + } + + fmt.Print(response) +} diff --git a/go/builder/examples/create_insecure_simulate_client.go b/go/builder/examples/create_insecure_simulate_client.go new file mode 100644 index 00000000..af9e6511 --- /dev/null +++ b/go/builder/examples/create_insecure_simulate_client.go @@ -0,0 +1,34 @@ +package examples + +import ( + "context" + "fmt" + "time" + + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +func CreateInsecureSimulateClient() { + addr := "localhost:5734" + conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials())) + if err != nil { + panic(err) + } + + defer conn.Close() + + client := steward_proto.NewSimulateContractCallServiceClient(conn) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + // Use the client + resp, err := client.Simulate(ctx, nil) + if err != nil { + fmt.Println(err) + return + } + + fmt.Printf("Response: %s", resp) +} diff --git a/go/builder/examples/create_tls_client.go b/go/builder/examples/create_tls_client.go new file mode 100644 index 00000000..a3ca3a63 --- /dev/null +++ b/go/builder/examples/create_tls_client.go @@ -0,0 +1,50 @@ +package examples + +import ( + "crypto/tls" + "crypto/x509" + "os" + + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" +) + +func buildCredentials(clientCertPath string, clientKeyPath string, serverCAPath string) (credentials.TransportCredentials, error) { + clientCert, err := tls.LoadX509KeyPair(clientCertPath, clientKeyPath) + if err != nil { + return nil, err + } + + rootPool := x509.NewCertPool() + serverCA, err := os.ReadFile(serverCAPath) + if err != nil { + return nil, err + } + rootPool.AppendCertsFromPEM(serverCA) + + tlsConfig := &tls.Config{ + Certificates: []tls.Certificate{clientCert}, + RootCAs: rootPool, + } + + return credentials.NewTLS(tlsConfig), nil +} + +func CreateTlsClient() (*grpc.ClientConn, steward_proto.ContractCallServiceClient, error) { + // This example uses fake file paths for the auth materials + creds, err := buildCredentials("client.crt", "client.key", "server_ca.crt") + if err != nil { + return nil, nil, err + } + + addr := "localhost:5734" + conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(creds)) + if err != nil { + return nil, nil, err + } + + client := steward_proto.NewContractCallServiceClient(conn) + + return conn, client, nil +} diff --git a/go/builder/examples/multicall.go b/go/builder/examples/multicall.go new file mode 100644 index 00000000..faf6840f --- /dev/null +++ b/go/builder/examples/multicall.go @@ -0,0 +1,63 @@ +package examples + +import ( + "context" + "fmt" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/go/builder" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" +) + +func BuildMulticallRequest() (*steward_proto.ScheduleRequest, error) { + index := uint32(0) + positionId := uint32(1) + inDebtArray := false + configurationData := []byte{0x1} + + // A multicall is used implicitly when more than one function call is added to the CellarCallDataBuilder + callData, err := builder.NewCellarCallDataBuilder(). + AddPositionToCatalogue(positionId). + AddPosition(index, positionId, configurationData, inDebtArray). + Build() + if err != nil { + return nil, err + } + + // Build request + cellarId := common.HexToAddress("0x0") + return builder.NewScheduleRequestBuilder(). + WithCellarID(cellarId). + WithChainID(1). + WithCallData(callData). + WithBlockHeight(100). + Build() +} + +func ExampleMulticall() { + // Get client and context + conn, client, err := CreateTlsClient() + if err != nil { + panic(err) + } + + defer conn.Close() + + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + + // Build call data + request, err := BuildMulticallRequest() + if err != nil { + panic(err) + } + + // Send request + response, err := client.Schedule(ctx, request) + if err != nil { + panic(err) + } + + fmt.Print(response) +} diff --git a/go/builder/go.mod b/go/builder/go.mod index 8adcc5eb..cb275a6a 100644 --- a/go/builder/go.mod +++ b/go/builder/go.mod @@ -6,20 +6,112 @@ require ( github.com/ethereum/go-ethereum v1.14.5 github.com/peggyjv/steward/steward_proto_go/steward_proto v0.1.0 github.com/stretchr/testify v1.8.4 + google.golang.org/grpc v1.64.0 ) require ( + cosmossdk.io/errors v1.0.0-beta.7 // indirect + cosmossdk.io/math v1.0.0-rc.0 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.1 // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/armon/go-metrics v0.4.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/confio/ics23/go v0.9.0 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-proto v1.0.0-alpha8 // indirect + github.com/cosmos/cosmos-sdk v0.46.14 + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/cosmos/iavl v0.19.6 // indirect + github.com/cosmos/ledger-cosmos-go v0.12.4 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.0 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.0 // indirect + github.com/dvsekhvalnov/jose2go v1.5.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.5.1 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gogo/protobuf v1.3.3 // indirect + github.com/golang/glog v1.2.0 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/btree v1.1.2 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/gtank/merlin v0.1.1 // indirect + github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect github.com/holiman/uint256 v1.2.4 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.16.0 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/magiconair/properties v1.8.6 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/peggyjv/sommelier/v7 v7.0.1 + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.7 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.42.0 // indirect + github.com/prometheus/procfs v0.9.0 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/spf13/afero v1.9.2 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cobra v1.6.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.14.0 // indirect + github.com/subosito/gotenv v1.4.1 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tendermint/tendermint v0.34.29 // indirect + github.com/tendermint/tm-db v0.6.7 // indirect + github.com/tidwall/btree v1.5.0 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.3.6 // indirect golang.org/x/crypto v0.22.0 // indirect + golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/net v0.24.0 // indirect golang.org/x/sys v0.20.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/grpc v1.64.0 // indirect + google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect ) -replace github.com/peggyjv/steward/steward_proto_go/steward_proto => ../../steward_proto_go/steward_proto +replace github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + +replace github.com/peggyjv/steward/steward_proto_go/steward_proto => ../steward_proto_go/steward_proto + +replace github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.28 diff --git a/go/builder/go.sum b/go/builder/go.sum index f3ee4fb3..de1b1551 100644 --- a/go/builder/go.sum +++ b/go/builder/go.sum @@ -1,30 +1,945 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.28.1 h1:F5QDG5ChchaAVQhINh24U99OWHURqrW8OmQcGKXcbgI= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cosmossdk.io/errors v1.0.0-beta.7 h1:gypHW76pTQGVnHKo6QBkb4yFOJjC+sUGRc5Al3Odj1w= +cosmossdk.io/errors v1.0.0-beta.7/go.mod h1:mz6FQMJRku4bY7aqS/Gwfcmr/ue91roMEKAmDUDpBfE= +cosmossdk.io/math v1.0.0-rc.0 h1:ml46ukocrAAoBpYKMidF0R2tQJ1Uxfns0yH8wqgMAFc= +cosmossdk.io/math v1.0.0-rc.0/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= +github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= +github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/aws/aws-sdk-go v1.40.45 h1:QN1nsY27ssD/JmW4s83qmSb+uL6DG4GmCDzjmJB4xUI= +github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= +github.com/btcsuite/btcd/btcutil v1.1.2/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= +github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= +github.com/cometbft/cometbft v0.34.28 h1:gwryf55P1SWMUP4nOXpRVI2D0yPoYEzN+IBqmRBOsDc= +github.com/cometbft/cometbft v0.34.28/go.mod h1:L9shMfbkZ8B+7JlwANEr+NZbBcn+hBpwdbeYvA5rLCw= +github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= +github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/confio/ics23/go v0.9.0 h1:cWs+wdbS2KRPZezoaaj+qBleXgUk5WOQFMP3CQFGTr4= +github.com/confio/ics23/go v0.9.0/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-proto v1.0.0-alpha8 h1:d3pCRuMYYvGA5bM0ZbbjKn+AoQD4A7dyNG2wzwWalUw= +github.com/cosmos/cosmos-proto v1.0.0-alpha8/go.mod h1:6/p+Bc4O8JKeZqe0VqUGTX31eoYqemTT4C1hLCWsO7I= +github.com/cosmos/cosmos-sdk v0.46.14 h1:xlrUaMZT6QACdtWputs+ZxbAMWGYktWK+zlc8J4tKoE= +github.com/cosmos/cosmos-sdk v0.46.14/go.mod h1:9MRixWsgoJ2UmVsCRRePtENFPP3cM+gTC5azEpxgllo= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= +github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= +github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= +github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.0 h1:Jv3CGQHp9OjuMBSne1485aDpUkTKEcUqF+jm/LuerPI= +github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= +github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= +github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= +github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.6.1 h1:NASsgP4q6tL94WH6nJxKWj8As2H/2kop/bB1d8JMyRY= +github.com/hashicorp/go-getter v1.6.1/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/peggyjv/sommelier/v7 v7.0.1 h1:cyjq9g9f+SGbxRmbGD5hDQK0RVDONAiS0rSIFQ+F3oM= +github.com/peggyjv/sommelier/v7 v7.0.1/go.mod h1:lfoCsBhGd8IhBEYkNGiRBxCAfOwSSMLlVFUuJSGuV6M= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.7 h1:muncTPStnKRos5dpVKULv2FVd4bMOhNePj9CjgDb8Us= +github.com/pelletier/go-toml/v2 v2.0.7/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= +github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= +github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= +github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= +github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= +github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= +github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= +github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= +github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= +github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= +github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/go/builder/request.go b/go/builder/request.go index f6b7ff01..349581f3 100644 --- a/go/builder/request.go +++ b/go/builder/request.go @@ -7,6 +7,7 @@ import ( "github.com/peggyjv/steward/steward_proto_go/steward_proto" ) +// ScheduleRequestBuilder is the top-level builder for sending requests to Steward. It is used to build a ScheduleRequest. type ScheduleRequestBuilder struct { cellarID string chainID int @@ -15,10 +16,14 @@ type ScheduleRequestBuilder struct { deadline int } +// NewScheduleRequestBuilder creates a new ScheduleRequestBuilder. func NewScheduleRequestBuilder() *ScheduleRequestBuilder { - return &ScheduleRequestBuilder{} + return &ScheduleRequestBuilder{ + callData: &steward_proto.CellarV2_5{}, + } } +// Build tries to build the ScheduleRequest from the builder. It will return an error if basic validation fails. func (b *ScheduleRequestBuilder) Build() (*steward_proto.ScheduleRequest, error) { if err := b.Validate(); err != nil { return nil, err @@ -35,6 +40,7 @@ func (b *ScheduleRequestBuilder) Build() (*steward_proto.ScheduleRequest, error) }, nil } +// Validate checks if the builder has all the required fields set with legal values. func (b *ScheduleRequestBuilder) Validate() error { if b.chainID == 0 { return fmt.Errorf("chain ID cannot be zero") @@ -46,29 +52,58 @@ func (b *ScheduleRequestBuilder) Validate() error { return fmt.Errorf("deadline must be zero or positive") } + return validateCallData(b.callData) +} + +// Sanity check for call data builder +func validateCallData(callData *steward_proto.CellarV2_5) error { + if callData == nil { + return fmt.Errorf("call data cannot be nil") + } + + switch callData.GetCallType().(type) { + case *steward_proto.CellarV2_5_FunctionCall_: + if callData.GetFunctionCall() == nil { + return fmt.Errorf("function call cannot be nil") + } + case *steward_proto.CellarV2_5_Multicall_: + if callData.GetMulticall() == nil { + return fmt.Errorf("multi call cannot be nil") + } + + if len(callData.GetMulticall().FunctionCalls) == 0 { + return fmt.Errorf("multi call cannot be empty") + } + } + return nil } +// WithCellarID sets the cellar ID for the request. func (b *ScheduleRequestBuilder) WithCellarID(cellarID common.Address) *ScheduleRequestBuilder { b.cellarID = cellarID.Hex() return b } +// WithChainID sets the chain ID for the request. func (b *ScheduleRequestBuilder) WithChainID(chainID int) *ScheduleRequestBuilder { b.chainID = chainID return b } +// WithBlockHeight sets the Sommelier block height for the request at which the chain will tally votes for the cellar call. func (b *ScheduleRequestBuilder) WithBlockHeight(blockHeight int) *ScheduleRequestBuilder { b.blockHeight = blockHeight return b } +// WithCallData sets the call data for the request. func (b *ScheduleRequestBuilder) WithCallData(callData *steward_proto.CellarV2_5) *ScheduleRequestBuilder { b.callData = callData return b } +// WithDeadline sets the deadline for the request. Only applies to non-Ethereum chains. func (b *ScheduleRequestBuilder) WithDeadline(deadline int) *ScheduleRequestBuilder { b.deadline = deadline return b diff --git a/go/builder/request_test.go b/go/builder/request_test.go new file mode 100644 index 00000000..b3064f9b --- /dev/null +++ b/go/builder/request_test.go @@ -0,0 +1,233 @@ +//go:build integration + +package builder + +import ( + "context" + "math/big" + "testing" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/peggyjv/steward/go/builder/adaptors" + "github.com/peggyjv/steward/steward_proto_go/steward_proto" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +// Integration tests assuming there is a running Steward simulation server on port 5734 + +// Builds insecure grpc client for testing +func buildInsecureClient() (*grpc.ClientConn, steward_proto.SimulateContractCallServiceClient, error) { + addr := "localhost:5734" + conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials())) + if err != nil { + return nil, nil, err + } + + return conn, steward_proto.NewSimulateContractCallServiceClient(conn), nil +} + +func newRequest(callData *steward_proto.CellarV2_5) (*steward_proto.SimulateRequest, error) { + scheduleRequest, err := NewScheduleRequestBuilder(). + WithCellarID(common.HexToAddress("0x9999999999999999999999999999999999999999")). + WithChainID(1). + WithCallData(callData). + WithBlockHeight(1). + WithDeadline(0). + Build() + if err != nil { + return nil, err + } + + return &steward_proto.SimulateRequest{ + Request: scheduleRequest, + EncodeOnly: true, + }, nil +} + +func TestBuilderIntegration(t *testing.T) { + conn, client, err := buildInsecureClient() + require.NoError(t, err) + defer conn.Close() + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + require.NoError(t, err) + + amount := big.NewInt(100) + adaptor := common.HexToAddress("0x0000000000000000000000000000000000000000") + token := common.HexToAddress("0x1111111111111111111111111111111111111111") + spender := common.HexToAddress("0x2222222222222222222222222222222222222222") + + // Pendle args + market := common.HexToAddress("0x4444444444444444444444444444444444444444") + netSyDesired := big.NewInt(1000) + netPtDesired := big.NewInt(500) + minLpOut := big.NewInt(50) + netPyIn := big.NewInt(1000) + minSyOut := big.NewInt(500) + tokenInput := adaptors.PendleTokenInput{ + TokenIn: token, + NetTokenIn: amount, + TokenMintSy: token, + PendleSwap: token, + SwapData: adaptors.PendleSwapData{ + SwapType: 1, + ExtRouter: token, + ExtCallData: "FFFF", + NeedScale: true, + }, + } + approxParams := adaptors.PendleApproxParams{ + GuessMin: big.NewInt(1000), + GuessMax: big.NewInt(2000), + GuessOffchain: big.NewInt(1500), + MaxIteration: big.NewInt(10), + Eps: big.NewInt(1), + } + tokenOutput := adaptors.PendleTokenOutput{ + TokenOut: token, + MinTokenOut: amount, + TokenRedeemSy: token, + PendleSwap: token, + SwapData: adaptors.PendleSwapData{ + SwapType: 1, + ExtRouter: token, + ExtCallData: "FFFF", + NeedScale: true, + }, + } + + // CallOnAdaptor + testCases := []struct { + message string + calls *steward_proto.AdaptorCall + }{ + { + message: "call on AaveV2ATokenAdaptorV2", + calls: adaptors.NewAaveV2ATokenAdaptorV2CallBuilder(adaptor). + RevokeApproval(token, spender). + DepositToAave(token, amount). + WithdrawFromAave(token, amount). + Build(), + }, + { + message: "call on AaveV2DebtTokenAdaptorV2", + calls: adaptors.NewAaveV2DebtTokenAdaptorV2CallBuilder(adaptor). + RevokeApproval(token, spender). + BorrowFromAave(token, amount). + RepayAaveDebt(token, amount). + Build(), + }, + { + message: "call on AaveV3ATokenAdaptorV1", + calls: adaptors.NewAaveV3ATokenAdaptorV1CallBuilder(adaptor). + RevokeApproval(token, spender). + DepositToAave(token, amount). + WithdrawFromAave(token, amount). + AdjustIsolationModeAssetAsCollateral(token, true). + ChangeEMode(uint32(1)). + Build(), + }, + { + message: "call on AaveV3DebtTokenAdaptorV2", + calls: adaptors.NewAaveV3DebtTokenAdaptorV1CallBuilder(adaptor). + RevokeApproval(token, spender). + BorrowFromAave(token, amount). + RepayAaveDebt(token, amount). + RepayWithATokens(token, amount). + Build(), + }, + { + message: "call on AaveV2EnableAssetAsCollateralAdaptorV1", + calls: adaptors.NewAaveV2EnableAssetAsCollateralAdaptorV1CallBuilder(adaptor). + RevokeApproval(token, spender). + SetUserUseReserveAsCollateral(token, true). + Build(), + }, + { + message: "call on aave v3 flash loan", + calls: adaptors.NewAaveV3DebtTokenFlashLoanAdaptorV1CallBuilder(adaptor). + FlashLoan([]common.Address{token}, []*big.Int{amount}, []*steward_proto.AdaptorCall{adaptors.NewAaveV2EnableAssetAsCollateralAdaptorV1CallBuilder(adaptor). + RevokeApproval(token, spender). + SetUserUseReserveAsCollateral(token, false). + Build()}).Build(), + }, + { + message: "call on balancer flash loan", + calls: adaptors.NewBalancerPoolFlashLoanAdaptorV1CallBuilder(adaptor). + FlashLoan([]common.Address{token}, []*big.Int{amount}, []*steward_proto.AdaptorCall{adaptors.NewAaveV2EnableAssetAsCollateralAdaptorV1CallBuilder(adaptor). + RevokeApproval(token, spender). + SetUserUseReserveAsCollateral(token, false). + Build()}).Build(), + }, + { + message: "call on PendleAdaptorV1", + calls: adaptors.NewPendleAdaptorV1CallBuilder(adaptor). + RevokeApproval(token, spender). + MintSyFromToken(market, netSyDesired, tokenInput). + MintPyFromSy(market, netSyDesired, netPtDesired). + SwapExactPtForYt(market, amount, amount, approxParams). + SwapExactYtForPt(market, amount, amount, approxParams). + AddLiquidityDualSyAndPt(market, netSyDesired, netPtDesired, minLpOut). + RedeemPyToSy(market, netPyIn, minSyOut). + RedeemSyToToken(market, amount, tokenOutput). + Build(), + }, + { + message: "call swap with uniswap", + calls: adaptors.NewSwapWithUniswapAdaptorV1CallBuilder(adaptor). + RevokeApproval(token, spender). + SwapWithUniV2([]common.Address{token}, amount, amount). + SwapWithUniV3([]common.Address{token}, []uint32{1}, amount, amount). + Build(), + }, + } + + for _, c := range testCases { + t.Run(c.message, func(t *testing.T) { + callData, err := NewCellarCallDataBuilder(). + CallOnAdaptor(c.calls). + Build() + + assert.NoError(t, err) + + request, err := newRequest(callData) + assert.NoError(t, err) + + _, err = client.Simulate(ctx, request) + assert.NoError(t, err) + }) + } + + // Missing function calls are either not added to the builder or will cause the test to fail + // because of the hardcoded position/adaptor whitelist in steward. + t.Run("other cellar functions", func(t *testing.T) { + callData, err := NewCellarCallDataBuilder(). + AddPosition(uint32(0), uint32(1), []byte{0x00}, false). + SwapPositions(uint32(1), uint32(2), false). + RemovePosition(uint32(0), false). + SetHoldingPosition(uint32(2)). + SetStrategistPayoutAddress(spender). + SetShareLockPeriod(big.NewInt(100)). + InitiateShutdown(). + LiftShutdown(). + RemovePositionFromCatalogue(uint32(3)). + RemoveAdaptorFromCatalogue(adaptor). + IncreaseShareSupplyCap(big.NewInt(100)). + Build() + + assert.NoError(t, err) + + request, err := newRequest(callData) + assert.NoError(t, err) + + _, err = client.Simulate(ctx, request) + assert.NoError(t, err) + }) + +} diff --git a/go/client_example/client_example b/go/client_example/client_example deleted file mode 100755 index bf2108a2..00000000 Binary files a/go/client_example/client_example and /dev/null differ diff --git a/go/client_example/go.mod b/go/client_example/go.mod deleted file mode 100644 index b3b3fd9b..00000000 --- a/go/client_example/go.mod +++ /dev/null @@ -1,24 +0,0 @@ -module github.com/peggyjv/steward/client_example - -go 1.22.1 - -require ( - github.com/ethereum/go-ethereum v1.14.5 - github.com/peggyjv/steward/go/builder v0.0.0 - github.com/peggyjv/steward/steward_proto_go/steward_proto v0.1.0 - google.golang.org/grpc v1.64.0 -) - -require ( - github.com/holiman/uint256 v1.2.4 // indirect - golang.org/x/crypto v0.22.0 // indirect - golang.org/x/net v0.24.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/protobuf v1.34.2 // indirect -) - -replace github.com/peggyjv/steward/steward_proto_go/steward_proto => ../../steward_proto_go/steward_proto - -replace github.com/peggyjv/steward/go/builder => ../builder diff --git a/go/client_example/go.sum b/go/client_example/go.sum deleted file mode 100644 index 477700e0..00000000 --- a/go/client_example/go.sum +++ /dev/null @@ -1,28 +0,0 @@ -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= -github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= -github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/go/client_example/main.go b/go/client_example/main.go deleted file mode 100644 index 2d59efe1..00000000 --- a/go/client_example/main.go +++ /dev/null @@ -1,153 +0,0 @@ -package main - -import ( - "context" - "crypto/tls" - "crypto/x509" - "fmt" - "math/big" - "os" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/peggyjv/steward/go/builder" - "github.com/peggyjv/steward/go/builder/adaptors" - "github.com/peggyjv/steward/steward_proto_go/steward_proto" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" -) - -func main() { - /// 1. Build credentials object for two-way TLS authentication - - // Replace these paths with your own client cert and key, and server CA paths - creds, err := buildCredentials("client.crt", "client.key", "server_ca.crt") - if err != nil { - panic(err) - } - - /// 2. Construct context and client - - conn, client, err := buildClient(creds) - if err != nil { - panic(err) - } - defer conn.Close() - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - - /// 3. Construct adaptor calls and final request using the builder package - - request, err := buildScheduleRequest() - if err != nil { - panic(err) - } - - /// 4. Send the request - - _, err = client.Schedule(ctx, request) - if err != nil { - panic(err) - } -} - -func buildCredentials(clientCertPath string, clientKeyPath string, serverCAPath string) (credentials.TransportCredentials, error) { - clientCert, err := tls.LoadX509KeyPair(clientCertPath, clientKeyPath) - if err != nil { - return nil, err - } - - rootPool := x509.NewCertPool() - serverCA, err := os.ReadFile(serverCAPath) - if err != nil { - return nil, err - } - rootPool.AppendCertsFromPEM(serverCA) - - tlsConfig := &tls.Config{ - Certificates: []tls.Certificate{clientCert}, - RootCAs: rootPool, - } - - return credentials.NewTLS(tlsConfig), nil -} - -func getConnection(addr string, creds credentials.TransportCredentials) (*grpc.ClientConn, error) { - conn, err := grpc.NewClient( - addr, - grpc.WithTransportCredentials(creds), - ) - if err != nil { - return nil, err - } - - return conn, nil -} - -func buildClient(creds credentials.TransportCredentials) (*grpc.ClientConn, steward_proto.ContractCallServiceClient, error) { - addr := fmt.Sprintf("localhost:5734") - conn, err := getConnection(addr, creds) - if err != nil { - return nil, nil, err - } - - return conn, steward_proto.NewContractCallServiceClient(conn), nil -} - -func buildScheduleRequest() (*steward_proto.ScheduleRequest, error) { - ////// A. Build some adaptor calls - - // This call to the Aave V2 A Token adaptor will have two function calls in it - aaveV2Address := common.HexToAddress("0x1111111111111111111111111111111111111111") - token := common.HexToAddress("0x2222222222222222222222222222222222222222") - - aaveV2Call := adaptors.NewAaveV2ATokenAdaptorV2CallBuilder(aaveV2Address). - DepositToAave(token, big.NewInt(1000000000000000000)). - WithdrawFromAave(token, big.NewInt(1000000000000000000)). - Build() - - // This call to revoke swapping on Balancer will have one call in it - balancerAddress := common.HexToAddress("0x3333333333333333333333333333333333333333") - spenderAddress := common.HexToAddress("0x4444444444444444444444444444444444444444") - - balancerCall := adaptors.NewBalancerPoolAdaptorV1CallBuilder(balancerAddress). - RevokeApproval(token, spenderAddress). - Build() - - ////// B. Build the Cellar function call and put the adaptor calls in it - - // This will implicitly be a multicall to the Cellar contract since it includes two adaptors calls. - // We'll call some peripheral functions and then the adaptors. This is a nonsensical series of function - // calls simply meant to exhibit the use of the builder API. - configurationData := []byte("0xdeadbeef") - cellarCall, err := builder.NewCallDataBuilder(). - LiftShutdown(). - AddPosition(uint32(1), uint32(1), configurationData, false). - CallOnAdaptor(aaveV2Call). - CallOnAdaptor(balancerCall). - Build() - - if err != nil { - return nil, err - } - - ////// C. Build the final schedule request - - cellarId := "0x0000000000000000000000000000000000000000" - chainId := uint64(1) - blockHeight := uint64(100) - - scheduleRequest, err := builder.NewScheduleRequestBuilder(). - WithCellarID(common.HexToAddress(cellarId)). - WithChainID(int(chainId)). - WithBlockHeight(int(blockHeight)). - WithCallData(cellarCall). - Build() - - if err != nil { - return nil, err - } - - return scheduleRequest, nil -} diff --git a/steward_proto_go/steward_proto/a_token.pb.go b/go/steward_proto_go/steward_proto/a_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/a_token.pb.go rename to go/steward_proto_go/steward_proto/a_token.pb.go diff --git a/steward_proto_go/steward_proto/aave_v2_enable_asset_as_collateral_adaptor.pb.go b/go/steward_proto_go/steward_proto/aave_v2_enable_asset_as_collateral_adaptor.pb.go similarity index 100% rename from steward_proto_go/steward_proto/aave_v2_enable_asset_as_collateral_adaptor.pb.go rename to go/steward_proto_go/steward_proto/aave_v2_enable_asset_as_collateral_adaptor.pb.go diff --git a/steward_proto_go/steward_proto/aave_v2_stablecoin.pb.go b/go/steward_proto_go/steward_proto/aave_v2_stablecoin.pb.go similarity index 100% rename from steward_proto_go/steward_proto/aave_v2_stablecoin.pb.go rename to go/steward_proto_go/steward_proto/aave_v2_stablecoin.pb.go diff --git a/steward_proto_go/steward_proto/aave_v3_a_token.pb.go b/go/steward_proto_go/steward_proto/aave_v3_a_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/aave_v3_a_token.pb.go rename to go/steward_proto_go/steward_proto/aave_v3_a_token.pb.go diff --git a/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go b/go/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/aave_v3_debt_token.pb.go rename to go/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go diff --git a/steward_proto_go/steward_proto/aave_v3_debt_token_flash_loan.pb.go b/go/steward_proto_go/steward_proto/aave_v3_debt_token_flash_loan.pb.go similarity index 100% rename from steward_proto_go/steward_proto/aave_v3_debt_token_flash_loan.pb.go rename to go/steward_proto_go/steward_proto/aave_v3_debt_token_flash_loan.pb.go diff --git a/steward_proto_go/steward_proto/aura_erc4626.pb.go b/go/steward_proto_go/steward_proto/aura_erc4626.pb.go similarity index 100% rename from steward_proto_go/steward_proto/aura_erc4626.pb.go rename to go/steward_proto_go/steward_proto/aura_erc4626.pb.go diff --git a/steward_proto_go/steward_proto/balancer_pool.pb.go b/go/steward_proto_go/steward_proto/balancer_pool.pb.go similarity index 100% rename from steward_proto_go/steward_proto/balancer_pool.pb.go rename to go/steward_proto_go/steward_proto/balancer_pool.pb.go diff --git a/steward_proto_go/steward_proto/balancer_pool_flash_loan.pb.go b/go/steward_proto_go/steward_proto/balancer_pool_flash_loan.pb.go similarity index 100% rename from steward_proto_go/steward_proto/balancer_pool_flash_loan.pb.go rename to go/steward_proto_go/steward_proto/balancer_pool_flash_loan.pb.go diff --git a/steward_proto_go/steward_proto/base.pb.go b/go/steward_proto_go/steward_proto/base.pb.go similarity index 100% rename from steward_proto_go/steward_proto/base.pb.go rename to go/steward_proto_go/steward_proto/base.pb.go diff --git a/steward_proto_go/steward_proto/c_token.pb.go b/go/steward_proto_go/steward_proto/c_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/c_token.pb.go rename to go/steward_proto_go/steward_proto/c_token.pb.go diff --git a/steward_proto_go/steward_proto/cellar_adaptor.pb.go b/go/steward_proto_go/steward_proto/cellar_adaptor.pb.go similarity index 100% rename from steward_proto_go/steward_proto/cellar_adaptor.pb.go rename to go/steward_proto_go/steward_proto/cellar_adaptor.pb.go diff --git a/steward_proto_go/steward_proto/cellar_v1.pb.go b/go/steward_proto_go/steward_proto/cellar_v1.pb.go similarity index 100% rename from steward_proto_go/steward_proto/cellar_v1.pb.go rename to go/steward_proto_go/steward_proto/cellar_v1.pb.go diff --git a/steward_proto_go/steward_proto/cellar_v2.pb.go b/go/steward_proto_go/steward_proto/cellar_v2.pb.go similarity index 100% rename from steward_proto_go/steward_proto/cellar_v2.pb.go rename to go/steward_proto_go/steward_proto/cellar_v2.pb.go diff --git a/steward_proto_go/steward_proto/collateral_f_token.pb.go b/go/steward_proto_go/steward_proto/collateral_f_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/collateral_f_token.pb.go rename to go/steward_proto_go/steward_proto/collateral_f_token.pb.go diff --git a/steward_proto_go/steward_proto/common.pb.go b/go/steward_proto_go/steward_proto/common.pb.go similarity index 100% rename from steward_proto_go/steward_proto/common.pb.go rename to go/steward_proto_go/steward_proto/common.pb.go diff --git a/steward_proto_go/steward_proto/convex_curve.pb.go b/go/steward_proto_go/steward_proto/convex_curve.pb.go similarity index 100% rename from steward_proto_go/steward_proto/convex_curve.pb.go rename to go/steward_proto_go/steward_proto/convex_curve.pb.go diff --git a/steward_proto_go/steward_proto/curve.pb.go b/go/steward_proto_go/steward_proto/curve.pb.go similarity index 100% rename from steward_proto_go/steward_proto/curve.pb.go rename to go/steward_proto_go/steward_proto/curve.pb.go diff --git a/steward_proto_go/steward_proto/debt_f_token.pb.go b/go/steward_proto_go/steward_proto/debt_f_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/debt_f_token.pb.go rename to go/steward_proto_go/steward_proto/debt_f_token.pb.go diff --git a/steward_proto_go/steward_proto/debt_token.pb.go b/go/steward_proto_go/steward_proto/debt_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/debt_token.pb.go rename to go/steward_proto_go/steward_proto/debt_token.pb.go diff --git a/steward_proto_go/steward_proto/erc4626.pb.go b/go/steward_proto_go/steward_proto/erc4626.pb.go similarity index 100% rename from steward_proto_go/steward_proto/erc4626.pb.go rename to go/steward_proto_go/steward_proto/erc4626.pb.go diff --git a/steward_proto_go/steward_proto/f_token.pb.go b/go/steward_proto_go/steward_proto/f_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/f_token.pb.go rename to go/steward_proto_go/steward_proto/f_token.pb.go diff --git a/steward_proto_go/steward_proto/fees_and_reserves.pb.go b/go/steward_proto_go/steward_proto/fees_and_reserves.pb.go similarity index 100% rename from steward_proto_go/steward_proto/fees_and_reserves.pb.go rename to go/steward_proto_go/steward_proto/fees_and_reserves.pb.go diff --git a/steward_proto_go/steward_proto/go.mod b/go/steward_proto_go/steward_proto/go.mod similarity index 100% rename from steward_proto_go/steward_proto/go.mod rename to go/steward_proto_go/steward_proto/go.mod diff --git a/steward_proto_go/steward_proto/go.sum b/go/steward_proto_go/steward_proto/go.sum similarity index 100% rename from steward_proto_go/steward_proto/go.sum rename to go/steward_proto_go/steward_proto/go.sum diff --git a/steward_proto_go/steward_proto/governance.pb.go b/go/steward_proto_go/steward_proto/governance.pb.go similarity index 100% rename from steward_proto_go/steward_proto/governance.pb.go rename to go/steward_proto_go/steward_proto/governance.pb.go diff --git a/steward_proto_go/steward_proto/legacy_cellar_adaptor.pb.go b/go/steward_proto_go/steward_proto/legacy_cellar_adaptor.pb.go similarity index 100% rename from steward_proto_go/steward_proto/legacy_cellar_adaptor.pb.go rename to go/steward_proto_go/steward_proto/legacy_cellar_adaptor.pb.go diff --git a/steward_proto_go/steward_proto/morpho_aave_v2_a_token.pb.go b/go/steward_proto_go/steward_proto/morpho_aave_v2_a_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_aave_v2_a_token.pb.go rename to go/steward_proto_go/steward_proto/morpho_aave_v2_a_token.pb.go diff --git a/steward_proto_go/steward_proto/morpho_aave_v2_debt_token.pb.go b/go/steward_proto_go/steward_proto/morpho_aave_v2_debt_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_aave_v2_debt_token.pb.go rename to go/steward_proto_go/steward_proto/morpho_aave_v2_debt_token.pb.go diff --git a/steward_proto_go/steward_proto/morpho_aave_v3_a_token_collateral.pb.go b/go/steward_proto_go/steward_proto/morpho_aave_v3_a_token_collateral.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_aave_v3_a_token_collateral.pb.go rename to go/steward_proto_go/steward_proto/morpho_aave_v3_a_token_collateral.pb.go diff --git a/steward_proto_go/steward_proto/morpho_aave_v3_a_token_p2p.pb.go b/go/steward_proto_go/steward_proto/morpho_aave_v3_a_token_p2p.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_aave_v3_a_token_p2p.pb.go rename to go/steward_proto_go/steward_proto/morpho_aave_v3_a_token_p2p.pb.go diff --git a/steward_proto_go/steward_proto/morpho_aave_v3_debt_token.pb.go b/go/steward_proto_go/steward_proto/morpho_aave_v3_debt_token.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_aave_v3_debt_token.pb.go rename to go/steward_proto_go/steward_proto/morpho_aave_v3_debt_token.pb.go diff --git a/steward_proto_go/steward_proto/morpho_blue_collateral.pb.go b/go/steward_proto_go/steward_proto/morpho_blue_collateral.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_blue_collateral.pb.go rename to go/steward_proto_go/steward_proto/morpho_blue_collateral.pb.go diff --git a/steward_proto_go/steward_proto/morpho_blue_debt.pb.go b/go/steward_proto_go/steward_proto/morpho_blue_debt.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_blue_debt.pb.go rename to go/steward_proto_go/steward_proto/morpho_blue_debt.pb.go diff --git a/steward_proto_go/steward_proto/morpho_blue_supply.pb.go b/go/steward_proto_go/steward_proto/morpho_blue_supply.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_blue_supply.pb.go rename to go/steward_proto_go/steward_proto/morpho_blue_supply.pb.go diff --git a/steward_proto_go/steward_proto/morpho_reward_handler.pb.go b/go/steward_proto_go/steward_proto/morpho_reward_handler.pb.go similarity index 100% rename from steward_proto_go/steward_proto/morpho_reward_handler.pb.go rename to go/steward_proto_go/steward_proto/morpho_reward_handler.pb.go diff --git a/steward_proto_go/steward_proto/oneinch.pb.go b/go/steward_proto_go/steward_proto/oneinch.pb.go similarity index 100% rename from steward_proto_go/steward_proto/oneinch.pb.go rename to go/steward_proto_go/steward_proto/oneinch.pb.go diff --git a/steward_proto_go/steward_proto/pendle.pb.go b/go/steward_proto_go/steward_proto/pendle.pb.go similarity index 100% rename from steward_proto_go/steward_proto/pendle.pb.go rename to go/steward_proto_go/steward_proto/pendle.pb.go diff --git a/steward_proto_go/steward_proto/staking.pb.go b/go/steward_proto_go/steward_proto/staking.pb.go similarity index 100% rename from steward_proto_go/steward_proto/staking.pb.go rename to go/steward_proto_go/steward_proto/staking.pb.go diff --git a/steward_proto_go/steward_proto/steward.pb.go b/go/steward_proto_go/steward_proto/steward.pb.go similarity index 100% rename from steward_proto_go/steward_proto/steward.pb.go rename to go/steward_proto_go/steward_proto/steward.pb.go diff --git a/steward_proto_go/steward_proto/steward_grpc.pb.go b/go/steward_proto_go/steward_proto/steward_grpc.pb.go similarity index 100% rename from steward_proto_go/steward_proto/steward_grpc.pb.go rename to go/steward_proto_go/steward_proto/steward_grpc.pb.go diff --git a/steward_proto_go/steward_proto/swap_with_uniswap.pb.go b/go/steward_proto_go/steward_proto/swap_with_uniswap.pb.go similarity index 100% rename from steward_proto_go/steward_proto/swap_with_uniswap.pb.go rename to go/steward_proto_go/steward_proto/swap_with_uniswap.pb.go diff --git a/steward_proto_go/steward_proto/uniswap_v3.pb.go b/go/steward_proto_go/steward_proto/uniswap_v3.pb.go similarity index 100% rename from steward_proto_go/steward_proto/uniswap_v3.pb.go rename to go/steward_proto_go/steward_proto/uniswap_v3.pb.go diff --git a/steward_proto_go/steward_proto/vesting_simple.pb.go b/go/steward_proto_go/steward_proto/vesting_simple.pb.go similarity index 100% rename from steward_proto_go/steward_proto/vesting_simple.pb.go rename to go/steward_proto_go/steward_proto/vesting_simple.pb.go diff --git a/steward_proto_go/steward_proto/zero_x.pb.go b/go/steward_proto_go/steward_proto/zero_x.pb.go similarity index 100% rename from steward_proto_go/steward_proto/zero_x.pb.go rename to go/steward_proto_go/steward_proto/zero_x.pb.go