mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
[WIP] Refinance method
This commit is contained in:
parent
ccca474d92
commit
1824f904c9
|
@ -275,7 +275,7 @@ contract DSMath {
|
||||||
|
|
||||||
contract Helpers is DSMath {
|
contract Helpers is DSMath {
|
||||||
|
|
||||||
address constant feeCollector = 0xb1DC62EC38E6E3857a887210C38418E4A17Da5B2;
|
address payable constant feeCollector = 0xb1DC62EC38E6E3857a887210C38418E4A17Da5B2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Return ethereum address
|
* @dev Return ethereum address
|
||||||
|
@ -999,3 +999,47 @@ contract MakerHelpers is AaveV2Helpers {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
contract RefinanceResolver is MakerHelpers {
|
||||||
|
|
||||||
|
// Aave v1 Id - 1
|
||||||
|
// Aave v2 Id - 2
|
||||||
|
// Compound Id - 3
|
||||||
|
struct RefinanceData {
|
||||||
|
uint source;
|
||||||
|
uint target;
|
||||||
|
uint collateralFee;
|
||||||
|
uint debtFee;
|
||||||
|
address[] tokens;
|
||||||
|
uint[] borrowAmts;
|
||||||
|
uint[] paybackAmts;
|
||||||
|
uint[] withdrawAmts;
|
||||||
|
uint[] depositAmts;
|
||||||
|
uint[] borrowRateModes;
|
||||||
|
uint[] paybackRateModes;
|
||||||
|
}
|
||||||
|
|
||||||
|
function refinance(RefinanceData calldata data) external payable {
|
||||||
|
|
||||||
|
require(data.source != data.target, "source-and-target-unequal");
|
||||||
|
|
||||||
|
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);
|
||||||
|
_aaveV1Withdraw(aaveCore, length, data.tokens, data.withdrawAmts);
|
||||||
|
_aaveV2Deposit(aaveV2, aaveData, length, data.collateralFee, data.tokens, data.depositAmts);
|
||||||
|
} else if (data.source == 1 && data.target == 3) {
|
||||||
|
_compBorrow(length, data.debtFee, data.tokens, data.borrowAmts);
|
||||||
|
_aaveV1Payback(aaveV1, length, data.tokens, data.paybackAmts);
|
||||||
|
_aaveV1Withdraw(aaveCore, length, data.tokens, data.withdrawAmts);
|
||||||
|
_compDeposit(length, data.collateralFee, data.tokens, data.depositAmts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user