diff --git a/src/MorphoBundler.sol b/src/MorphoBundler.sol index 185f57e8..a0e818c9 100644 --- a/src/MorphoBundler.sol +++ b/src/MorphoBundler.sol @@ -46,6 +46,11 @@ abstract contract MorphoBundler is BaseBundler, IMorphoBundler { _callback(data); } + function onMorphoLiquidate(uint256, bytes calldata data) external { + // Don't need to approve Morpho to pull tokens because it should already be approved max. + _callback(data); + } + function onMorphoFlashLoan(uint256, bytes calldata data) external { // Don't need to approve Morpho to pull tokens because it should already be approved max. _callback(data); diff --git a/test/forge/MorphoBundlerLocalTest.sol b/test/forge/MorphoBundlerLocalTest.sol index e6dcf27f..56a0876a 100644 --- a/test/forge/MorphoBundlerLocalTest.sol +++ b/test/forge/MorphoBundlerLocalTest.sol @@ -461,7 +461,8 @@ contract MorphoBundlerLocalTest is LocalTest { seizedCollateral.mulDivUp(ORACLE_PRICE_SCALE / 2, ORACLE_PRICE_SCALE).wDivUp(incentiveFactor); uint256 expectedRepaidShares = repaidAssets.toSharesDown(amountBorrowed, borrowShares); - bundle.push(_erc20TransferFrom(address(loanToken), repaidAssets)); + callbackBundle.push(_erc20TransferFrom(address(loanToken), repaidAssets)); + bundle.push(_morphoLiquidate(marketParams, USER, seizedCollateral, 0, type(uint256).max)); bundle.push(_erc20Transfer(address(collateralToken), LIQUIDATOR, seizedCollateral)); diff --git a/test/forge/helpers/BaseTest.sol b/test/forge/helpers/BaseTest.sol index 9dc57cf2..a0dd7717 100644 --- a/test/forge/helpers/BaseTest.sol +++ b/test/forge/helpers/BaseTest.sol @@ -256,10 +256,10 @@ abstract contract BaseTest is Test { uint256 seizedCollateral, uint256 repaidShares, uint256 maxRepaidAssets - ) internal pure returns (bytes memory) { + ) internal view returns (bytes memory) { return abi.encodeCall( MorphoBundler.morphoLiquidate, - (marketParams, borrower, seizedCollateral, repaidShares, maxRepaidAssets, hex"") + (marketParams, borrower, seizedCollateral, repaidShares, maxRepaidAssets, abi.encode(callbackBundle)) ); }