mirror of
https://github.com/Instadapp/dsa-connectors-old.git
synced 2024-07-29 22:47:46 +00:00
Added Exit dai function
This commit is contained in:
parent
076a836c03
commit
26f2de4025
|
@ -622,6 +622,7 @@ contract BasicResolver is MakerHelpers {
|
|||
|
||||
contract BasicExtraResolver is BasicResolver {
|
||||
event LogWithdrawLiquidated(uint256 indexed vault, bytes32 indexed ilk, uint256 tokenAmt, uint256 getId, uint256 setId);
|
||||
event LogExitDai(uint256 indexed vault, bytes32 indexed ilk, uint256 tokenAmt, uint256 getId, uint256 setId);
|
||||
|
||||
/**
|
||||
* @dev Withdraw leftover ETH/ERC20_Token after Liquidation.
|
||||
|
@ -674,6 +675,53 @@ contract BasicExtraResolver is BasicResolver {
|
|||
EventInterface(getEventAddr()).emitEvent(_type, _id, _eventCode, _eventParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dev Exit DAI from urn.
|
||||
* @param vault Vault ID.
|
||||
* @param amt token amount to exit.
|
||||
* @param getId Get token amount at this ID from `InstaMemory` Contract.
|
||||
* @param setId Set token amount at this ID in `InstaMemory` Contract.
|
||||
*/
|
||||
function exitDai(
|
||||
uint vault,
|
||||
uint amt,
|
||||
uint getId,
|
||||
uint setId
|
||||
) external payable {
|
||||
ManagerLike managerContract = ManagerLike(getMcdManager());
|
||||
|
||||
uint _amt = getUint(getId, amt);
|
||||
uint _vault = getVault(managerContract, vault);
|
||||
(bytes32 ilk, address urn) = getVaultData(managerContract, _vault);
|
||||
|
||||
address daiJoin = getMcdDaiJoin();
|
||||
|
||||
VatLike vatContract = VatLike(managerContract.vat());
|
||||
if(_amt == uint(-1)) {
|
||||
_amt = vatContract.dai(urn);
|
||||
_amt = _amt / 10 ** 27;
|
||||
}
|
||||
|
||||
managerContract.move(
|
||||
_vault,
|
||||
address(this),
|
||||
toRad(_amt)
|
||||
);
|
||||
|
||||
if (vatContract.can(address(this), address(daiJoin)) == 0) {
|
||||
vatContract.hope(daiJoin);
|
||||
}
|
||||
|
||||
DaiJoinInterface(daiJoin).exit(address(this), _amt);
|
||||
|
||||
setUint(setId, _amt);
|
||||
|
||||
emit LogExitDai(_vault, ilk, _amt, getId, setId);
|
||||
bytes32 _eventCode = keccak256("LogExitDai(uint256,bytes32,uint256,uint256,uint256)");
|
||||
bytes memory _eventParam = abi.encode(_vault, ilk, _amt, getId, setId);
|
||||
(uint _type, uint _id) = connectorID();
|
||||
EventInterface(getEventAddr()).emitEvent(_type, _id, _eventCode, _eventParam);
|
||||
}
|
||||
}
|
||||
|
||||
contract DsrResolver is BasicExtraResolver {
|
||||
|
|
Loading…
Reference in New Issue
Block a user