-
Notifications
You must be signed in to change notification settings - Fork 11
/
LybraWbETHVault.sol
37 lines (28 loc) · 1.38 KB
/
LybraWbETHVault.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.17;
import "../interfaces/IEUSD.sol";
import "./base/LybraPeUSDVaultBase.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
interface IWBETH {
function exchangeRatio() external view returns (uint256);
function deposit(address referral) external payable;
}
contract LybraWBETHVault is LybraPeUSDVaultBase {
//WBETH = 0xae78736Cd615f374D3085123A210448E74Fc6393
constructor(address _peusd, address _oracle, address _asset, address _config)
LybraPeUSDVaultBase(_peusd, _oracle, _asset, _config) {}
function depositEtherToMint(uint256 mintAmount) external payable override {
require(msg.value >= 1 ether, "DNL");
uint256 preBalance = collateralAsset.balanceOf(address(this));
IWBETH(address(collateralAsset)).deposit{value: msg.value}(address(configurator));
uint256 balance = collateralAsset.balanceOf(address(this));
depositedAsset[msg.sender] += balance - preBalance;
if (mintAmount > 0) {
_mintPeUSD(msg.sender, msg.sender, mintAmount, getAssetPrice());
}
emit DepositEther(msg.sender, address(collateralAsset), msg.value,balance - preBalance, block.timestamp);
}
function getAssetPrice() public override returns (uint256) {
return (_etherPrice() * IWBETH(address(collateralAsset)).exchangeRatio()) / 1e18;
}
}