From 63024f1d6a9bb96d52a2323fd3d07d3af4d2950f Mon Sep 17 00:00:00 2001 From: pizzaman1337 Date: Tue, 17 Sep 2024 16:36:15 -0600 Subject: [PATCH] Expose calculateDeltaBFromReserves --- .../beanstalk/silo/ConvertGettersFacet.sol | 15 +++++++++++++++ protocol/contracts/interfaces/IMockFBeanstalk.sol | 2 +- .../mocks/mockFacets/MockPipelineConvertFacet.sol | 8 -------- protocol/test/foundry/farm/PipelineConvert.t.sol | 6 +++--- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/protocol/contracts/beanstalk/silo/ConvertGettersFacet.sol b/protocol/contracts/beanstalk/silo/ConvertGettersFacet.sol index 6686001085..94dbaf95be 100644 --- a/protocol/contracts/beanstalk/silo/ConvertGettersFacet.sol +++ b/protocol/contracts/beanstalk/silo/ConvertGettersFacet.sol @@ -69,6 +69,21 @@ contract ConvertGettersFacet { return LibDeltaB.cappedReservesDeltaB(well); } + /** + * @notice calculates the deltaB for a given well using the reserves. + * @dev reverts if the bean reserve is less than the minimum, + * or if the usd oracle fails. + * This differs from the twaDeltaB, as this function should not be used within the sunrise function. + * @return deltaB The deltaB using the reserves. + */ + function calculateDeltaBFromReserves( + address well, + uint256[] memory reserves, + uint256 lookback + ) external view returns (int256) { + return LibDeltaB.calculateDeltaBFromReserves(well, reserves, lookback); + } + /** * @notice Returns currently available convert power for this block * @return convertCapacity The amount of convert power available for this block diff --git a/protocol/contracts/interfaces/IMockFBeanstalk.sol b/protocol/contracts/interfaces/IMockFBeanstalk.sol index 347e3221ce..f23a84acd6 100644 --- a/protocol/contracts/interfaces/IMockFBeanstalk.sol +++ b/protocol/contracts/interfaces/IMockFBeanstalk.sol @@ -751,7 +751,7 @@ interface IMockFBeanstalk { uint256 outputTokenAmountInDirectionOfPeg ) external view returns (uint256 cumulativePenalty, PenaltyData memory pdCapacity); - function calculateDeltaBFromReservesE( + function calculateDeltaBFromReserves( address well, uint256[] memory reserves, uint256 lookback diff --git a/protocol/contracts/mocks/mockFacets/MockPipelineConvertFacet.sol b/protocol/contracts/mocks/mockFacets/MockPipelineConvertFacet.sol index 8a2433eb0f..416d6120ac 100644 --- a/protocol/contracts/mocks/mockFacets/MockPipelineConvertFacet.sol +++ b/protocol/contracts/mocks/mockFacets/MockPipelineConvertFacet.sol @@ -32,12 +32,4 @@ contract MockPipelineConvertFacet is PipelineConvertFacet { outputTokenAmountInDirectionOfPeg ); } - - function calculateDeltaBFromReservesE( - address well, - uint256[] memory reserves, - uint256 lookback - ) external view returns (int256) { - return LibDeltaB.calculateDeltaBFromReserves(well, reserves, lookback); - } } diff --git a/protocol/test/foundry/farm/PipelineConvert.t.sol b/protocol/test/foundry/farm/PipelineConvert.t.sol index 40a1e0c041..7b64f53e51 100644 --- a/protocol/test/foundry/farm/PipelineConvert.t.sol +++ b/protocol/test/foundry/farm/PipelineConvert.t.sol @@ -1949,7 +1949,7 @@ contract PipelineConvertTest is TestHelper { reserves[beanIndex] = reserves[beanIndex].sub(beansOut); // get new deltaB - deltaB = pipelineConvert.calculateDeltaBFromReservesE(well, reserves, 0); + deltaB = bs.calculateDeltaBFromReserves(well, reserves, 0); } function calculateDeltaBForWellAfterAddingBean( @@ -1969,7 +1969,7 @@ contract PipelineConvertTest is TestHelper { // add to bean index (no beans out on this one) reserves[beanIndex] = reserves[beanIndex].add(beansIn); // get new deltaB - deltaB = pipelineConvert.calculateDeltaBFromReservesE(well, reserves, 0); + deltaB = bs.calculateDeltaBFromReserves(well, reserves, 0); } function calculateDeltaBForWellAfterAddingNonBean( @@ -1989,7 +1989,7 @@ contract PipelineConvertTest is TestHelper { reserves[nonBeanIndex] = reserves[nonBeanIndex].add(amountIn); // get new deltaB - deltaB = pipelineConvert.calculateDeltaBFromReservesE(well, reserves, 0); + deltaB = bs.calculateDeltaBFromReserves(well, reserves, 0); } // verifies there's no way to withdraw from a deposit without losing grown stalk