code improvements

This commit is contained in:
Gerardo Nardelli 2020-11-10 11:28:19 -03:00
parent cf9c8855c3
commit b0d9dbe2a7
3 changed files with 37 additions and 65 deletions

View File

@ -24,14 +24,6 @@ contract BaseUniswapAdapter {
using PercentageMath for uint256;
using SafeERC20 for IERC20;
struct PermitParams {
uint256[] amount;
uint256[] deadline;
uint8[] v;
bytes32[] r;
bytes32[] s;
}
struct PermitSignature {
uint256 amount;
uint256 deadline;
@ -267,8 +259,7 @@ contract BaseUniswapAdapter {
* @return whether or not permit should be called
*/
function _usePermit(PermitSignature memory signature) internal pure returns (bool) {
return !(uint256(signature.deadline) == uint256(signature.v) &&
uint256(signature.deadline) == 0);
return !(uint256(signature.deadline) == uint256(signature.v) && uint256(signature.deadline) == 0);
}
/**

View File

@ -15,6 +15,14 @@ import {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';
**/
contract UniswapLiquiditySwapAdapter is BaseUniswapAdapter, IFlashLoanReceiver {
struct PermitParams {
uint256[] amount;
uint256[] deadline;
uint8[] v;
bytes32[] r;
bytes32[] s;
}
struct SwapParams {
address[] assetToSwapToList;
uint256[] minAmountsToReceive;
@ -191,14 +199,10 @@ contract UniswapLiquiditySwapAdapter is BaseUniswapAdapter, IFlashLoanReceiver {
uint256 flashLoanDebt = amount.add(premium);
uint256 amountToPull = swapAllBalance ? aTokenInitiatorBalance : flashLoanDebt;
_pullATokenAndRepayFlashLoan(
assetFrom,
aToken,
initiator,
amountToPull,
flashLoanDebt,
permitSignature
);
_pullAToken(assetFrom, aToken, initiator, amountToPull, permitSignature);
// Repay flashloan
IERC20(assetFrom).approve(address(POOL), flashLoanDebt);
}
/**
@ -228,27 +232,4 @@ contract UniswapLiquiditySwapAdapter is BaseUniswapAdapter, IFlashLoanReceiver {
return SwapParams(assetToSwapToList, minAmountsToReceive, swapAllBalance, PermitParams(permitAmount, deadline, v, r, s));
}
/**
* @dev Pull the ATokens from the user and use them to repay the flashloan
* @param reserve address of the asset
* @param reserveAToken address of the aToken of the reserve
* @param user address
* @param amountToPull amount to be pulled from the user
* @param flashLoanDebt need to be repaid
* @param permitSignature struct containing the permit signature
*/
function _pullATokenAndRepayFlashLoan(
address reserve,
address reserveAToken,
address user,
uint256 amountToPull,
uint256 flashLoanDebt,
PermitSignature memory permitSignature
) internal {
_pullAToken(reserve, reserveAToken, user, amountToPull, permitSignature);
// Repay flashloan
IERC20(reserve).approve(address(POOL), flashLoanDebt);
}
}