mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
86 lines
3.1 KiB
Solidity
86 lines
3.1 KiB
Solidity
pragma solidity ^0.7.6;
|
|
|
|
/**
|
|
* @title B.Liquity.
|
|
* @dev Lending & Borrowing.
|
|
*/
|
|
import {
|
|
StabilityPoolLike,
|
|
BAMMLike
|
|
} from "./interface.sol";
|
|
import { Stores } from "../../../common/stores.sol";
|
|
import { Helpers } from "./helpers.sol";
|
|
import { Events } from "./events.sol";
|
|
|
|
abstract contract BLiquityResolver is Events, Helpers {
|
|
/* Begin: Stability Pool */
|
|
|
|
/**
|
|
* @dev Deposit LUSD into Stability Pool
|
|
* @notice Deposit LUSD into Stability Pool
|
|
* @param amount Amount of LUSD to deposit into Stability Pool
|
|
* @param getDepositId Optional storage slot to retrieve the amount of LUSD from
|
|
* @param setDepositId Optional storage slot to store the final amount of LUSD deposited
|
|
* @param setLqtyGainId Optional storage slot to store any LQTY gains in
|
|
*/
|
|
function deposit(
|
|
uint amount,
|
|
uint getDepositId,
|
|
uint setDepositId,
|
|
uint setLqtyGainId
|
|
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
|
amount = getUint(getDepositId, amount);
|
|
|
|
amount = amount == uint(-1) ? lusdToken.balanceOf(address(this)) : amount;
|
|
|
|
uint lqtyBalanceBefore = lqtyToken.balanceOf(address(this));
|
|
|
|
lusdToken.approve(address(BAMM), amount);
|
|
BAMM.deposit(amount);
|
|
|
|
uint lqtyBalanceAfter = lqtyToken.balanceOf(address(this));
|
|
uint lqtyGain = sub(lqtyBalanceAfter, lqtyBalanceBefore);
|
|
|
|
setUint(setDepositId, amount);
|
|
setUint(setLqtyGainId, lqtyGain);
|
|
|
|
_eventName = "LogStabilityDeposit(address,uint256,uint256,uint256,uint256,uint256)";
|
|
_eventParam = abi.encode(address(this), amount,lqtyGain, getDepositId, setDepositId, setLqtyGainId);
|
|
}
|
|
|
|
/**
|
|
* @dev Withdraw user deposited LUSD from Stability Pool
|
|
* @notice Withdraw LUSD from Stability Pool
|
|
* @param numShares amount of shares to withdraw from the BAMM
|
|
* @param getWithdrawId Optional storage slot to retrieve the amount of LUSD to withdraw from
|
|
* @param setWithdrawId Optional storage slot to store the withdrawn LUSD
|
|
* @param setLqtyGainId Optional storage slot to store any LQTY gains in
|
|
*/
|
|
function withdraw(
|
|
uint numShares,
|
|
uint getWithdrawId,
|
|
uint setWithdrawId,
|
|
uint setLqtyGainId
|
|
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
|
numShares = getUint(getWithdrawId, numShares);
|
|
|
|
numShares = numShares == uint(-1) ? BAMM.balanceOf(address(this)) : numShares;
|
|
|
|
uint lqtyBalanceBefore = lqtyToken.balanceOf(address(this));
|
|
|
|
BAMM.withdraw(numShares);
|
|
|
|
uint lqtyBalanceAfter = lqtyToken.balanceOf(address(this));
|
|
uint lqtyGain = sub(lqtyBalanceAfter, lqtyBalanceBefore);
|
|
|
|
setUint(setWithdrawId, numShares);
|
|
setUint(setLqtyGainId, lqtyGain);
|
|
|
|
_eventName = "LogStabilityWithdraw(address,uint256,uint256,uint256,uint256,uint256)";
|
|
_eventParam = abi.encode(address(this), numShares, lqtyGain, getWithdrawId, setWithdrawId, setLqtyGainId);
|
|
}
|
|
}
|
|
|
|
contract ConnectV2BLiquity is BLiquityResolver {
|
|
string public name = "B.Liquity-v1";
|
|
} |