mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
Add refinanceMaker
This commit is contained in:
parent
a9f0d047fa
commit
17dcd74fd2
|
@ -1019,6 +1019,25 @@ contract RefinanceResolver is MakerHelpers {
|
||||||
uint[] paybackRateModes;
|
uint[] paybackRateModes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Aave v1 Id - 1
|
||||||
|
// Aave v2 Id - 2
|
||||||
|
// Compound Id - 3
|
||||||
|
struct RefinanceMakerData {
|
||||||
|
uint fromVaultId;
|
||||||
|
uint toVaultId;
|
||||||
|
uint source;
|
||||||
|
uint target;
|
||||||
|
uint collateralFee;
|
||||||
|
uint debtFee;
|
||||||
|
bool isFrom;
|
||||||
|
address token;
|
||||||
|
uint debt;
|
||||||
|
uint collateral;
|
||||||
|
string colType;
|
||||||
|
uint borrowRateMode;
|
||||||
|
uint paybackRateMode;
|
||||||
|
}
|
||||||
|
|
||||||
function refinance(RefinanceData calldata data) external payable {
|
function refinance(RefinanceData calldata data) external payable {
|
||||||
|
|
||||||
require(data.source != data.target, "source-and-target-unequal");
|
require(data.source != data.target, "source-and-target-unequal");
|
||||||
|
@ -1071,4 +1090,59 @@ contract RefinanceResolver is MakerHelpers {
|
||||||
revert("invalid-options");
|
revert("invalid-options");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function refinanceMaker(RefinanceMakerData calldata data) external payable {
|
||||||
|
|
||||||
|
AaveV2Interface aaveV2 = AaveV2Interface(getAaveV2Provider().getLendingPool());
|
||||||
|
AaveV1Interface aaveV1 = AaveV1Interface(getAaveProvider().getLendingPool());
|
||||||
|
AaveV1CoreInterface aaveCore = AaveV1CoreInterface(getAaveProvider().getLendingPoolCore());
|
||||||
|
AaveV2DataProviderInterface aaveData = getAaveV2DataProvider();
|
||||||
|
|
||||||
|
address[1] memory daiArray = [getMcdDai()];
|
||||||
|
address[1] memory tokens = [data.token];
|
||||||
|
uint[1] memory debtAmts = [data.debt];
|
||||||
|
uint[1] memory collateralAmts = [data.collateral];
|
||||||
|
|
||||||
|
if (data.isFrom) {
|
||||||
|
_makerPayback(data.fromVaultId, data.debt);
|
||||||
|
_makerWithdraw(data.fromVaultId, data.collateral);
|
||||||
|
|
||||||
|
uint[1] memory borrowRateModes = [data.borrowRateMode];
|
||||||
|
|
||||||
|
if (data.target == 1) {
|
||||||
|
_aaveV1Deposit(aaveV1, 1, data.collateralFee, tokens, collateralAmts);
|
||||||
|
_aaveV1Borrow(aaveV1, 1, data.debtFee, daiArray, debtAmts, borrowRateModes);
|
||||||
|
} else if (data.target == 2) {
|
||||||
|
_aaveV2Deposit(aaveV2, aaveData, 1, data.collateralFee, tokens, collateralAmts);
|
||||||
|
_aaveV2Borrow(aaveV2, 1, data.debtFee, daiArray, debtAmts, borrowRateModes);
|
||||||
|
} else if (data.target == 3) {
|
||||||
|
_compDeposit(1, data.collateralFee, tokens, collateralAmts);
|
||||||
|
_compBorrow(1, data.debtFee, daiArray, debtAmts);
|
||||||
|
} else {
|
||||||
|
revert("invalid-option");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (data.toVaultId == 0) {
|
||||||
|
_makerOpen(data.colType);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint[1] memory paybackRateModes = [data.paybackRateMode];
|
||||||
|
|
||||||
|
if (data.source == 1) {
|
||||||
|
_aaveV1Payback(aaveV1, 1, daiArray, debtAmts);
|
||||||
|
_aaveV1Withdraw(aaveCore, 1, tokens, collateralAmts);
|
||||||
|
} else if (data.source == 2) {
|
||||||
|
_aaveV2Payback(aaveV2, aaveData, 1, daiArray, debtAmts, paybackRateModes);
|
||||||
|
_aaveV2Withdraw(aaveV2, aaveData, 1, tokens, collateralAmts);
|
||||||
|
} else if (data.source == 3) {
|
||||||
|
_compPayback(1, daiArray, debtAmts);
|
||||||
|
_compWithdraw(1, tokens, collateralAmts);
|
||||||
|
} else {
|
||||||
|
revert("invalid-option");
|
||||||
|
}
|
||||||
|
|
||||||
|
_makerDeposit(data.toVaultId, data.collateral, data.collateralFee);
|
||||||
|
_makerBorrow(data.toVaultId, data.debt, data.debtFee);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user