// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import { ERC20 } from '@openzeppelin/contracts/token/ERC20/ERC20.sol'; import { ERC20Permit } from '@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol'; contract WETH is ERC20('Wrapped Ether', 'WETH'), ERC20Permit('Wrapped Ether') { event Deposit(address indexed dst, uint256 wad); event Withdrawal(address indexed src, uint256 wad); receive() external payable { deposit(); } function deposit() public payable { _mint(msg.sender, msg.value); emit Deposit(msg.sender, msg.value); } function withdraw(uint256 amount) external { _burn(msg.sender, amount); payable(msg.sender).transfer(amount); emit Withdrawal(msg.sender, amount); } }