mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
Add refinance method
This commit is contained in:
parent
1824f904c9
commit
a9f0d047fa
|
@ -1023,13 +1023,20 @@ contract RefinanceResolver is MakerHelpers {
|
|||
|
||||
require(data.source != data.target, "source-and-target-unequal");
|
||||
|
||||
uint length = data.tokens.length;
|
||||
|
||||
require(data.borrowAmts.length == length, "length-mismatch");
|
||||
require(data.paybackAmts.length == length, "length-mismatch");
|
||||
require(data.withdrawAmts.length == length, "length-mismatch");
|
||||
require(data.depositAmts.length == length, "length-mismatch");
|
||||
require(data.borrowRateModes.length == length, "length-mismatch");
|
||||
require(data.paybackRateModes.length == length, "length-mismatch");
|
||||
|
||||
AaveV2Interface aaveV2 = AaveV2Interface(getAaveV2Provider().getLendingPool());
|
||||
AaveV1Interface aaveV1 = AaveV1Interface(getAaveProvider().getLendingPool());
|
||||
AaveV1CoreInterface aaveCore = AaveV1CoreInterface(getAaveProvider().getLendingPoolCore());
|
||||
AaveV2DataProviderInterface aaveData = getAaveV2DataProvider();
|
||||
|
||||
uint length = data.borrowAmts.length;
|
||||
|
||||
if (data.source == 1 && data.target == 2) {
|
||||
_aaveV2Borrow(aaveV2, length, data.debtFee, data.tokens, data.borrowAmts, data.borrowRateModes);
|
||||
_aaveV1Payback(aaveV1, length, data.tokens, data.paybackAmts);
|
||||
|
@ -1040,6 +1047,28 @@ contract RefinanceResolver is MakerHelpers {
|
|||
_aaveV1Payback(aaveV1, length, data.tokens, data.paybackAmts);
|
||||
_aaveV1Withdraw(aaveCore, length, data.tokens, data.withdrawAmts);
|
||||
_compDeposit(length, data.collateralFee, data.tokens, data.depositAmts);
|
||||
} else if (data.source == 2 && data.target == 1) {
|
||||
_aaveV1Borrow(aaveV1, length, data.debtFee, data.tokens, data.borrowAmts, data.borrowRateModes);
|
||||
_aaveV2Payback(aaveV2, aaveData, length, data.tokens, data.paybackAmts, data.paybackRateModes);
|
||||
_aaveV2Withdraw(aaveV2, aaveData, length, data.tokens, data.withdrawAmts);
|
||||
_aaveV1Deposit(aaveV1, length, data.collateralFee, data.tokens, data.depositAmts);
|
||||
} else if (data.source == 2 && data.target == 3) {
|
||||
_compBorrow(length, data.debtFee, data.tokens, data.borrowAmts);
|
||||
_aaveV2Payback(aaveV2, aaveData, length, data.tokens, data.paybackAmts, data.paybackRateModes);
|
||||
_aaveV2Withdraw(aaveV2, aaveData, length, data.tokens, data.withdrawAmts);
|
||||
_compDeposit(length, data.collateralFee, data.tokens, data.depositAmts);
|
||||
} else if (data.source == 3 && data.target == 1) {
|
||||
_aaveV1Borrow(aaveV1, length, data.debtFee, data.tokens, data.borrowAmts, data.borrowRateModes);
|
||||
_compPayback(length, data.tokens, data.paybackAmts);
|
||||
_compWithdraw(length, data.tokens, data.withdrawAmts);
|
||||
_aaveV1Deposit(aaveV1, length, data.collateralFee, data.tokens, data.depositAmts);
|
||||
} else if (data.source == 3 && data.target == 2) {
|
||||
_aaveV2Borrow(aaveV2, length, data.debtFee, data.tokens, data.borrowAmts, data.borrowRateModes);
|
||||
_compPayback(length, data.tokens, data.paybackAmts);
|
||||
_compWithdraw(length, data.tokens, data.withdrawAmts);
|
||||
_aaveV2Deposit(aaveV2, aaveData, length, data.collateralFee, data.tokens, data.depositAmts);
|
||||
} else {
|
||||
revert("invalid-options");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user