735546619e
Signed-off-by: T-Hax <>
56 lines
1.9 KiB
Solidity
56 lines
1.9 KiB
Solidity
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
pragma solidity >=0.7.5;
|
|
|
|
import '@openzeppelin/contracts/token/ERC20/IERC20.sol';
|
|
import '@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol';
|
|
|
|
import './PeripheryPayments.sol';
|
|
import '../interfaces/IPeripheryPaymentsWithFee.sol';
|
|
|
|
import '../interfaces/external/IWETH9.sol';
|
|
import '../libraries/TransferHelper.sol';
|
|
|
|
abstract contract PeripheryPaymentsWithFee is PeripheryPayments, IPeripheryPaymentsWithFee {
|
|
using LowGasSafeMath for uint256;
|
|
|
|
/// @inheritdoc IPeripheryPaymentsWithFee
|
|
function unwrapWETH9WithFee(
|
|
uint256 amountMinimum,
|
|
address recipient,
|
|
uint256 feeBips,
|
|
address feeRecipient
|
|
) public payable override {
|
|
require(feeBips > 0 && feeBips <= 100);
|
|
|
|
uint256 balanceWETH9 = IWETH9(WETH9).balanceOf(address(this));
|
|
require(balanceWETH9 >= amountMinimum, 'Insufficient WETH9');
|
|
|
|
if (balanceWETH9 > 0) {
|
|
IWETH9(WETH9).withdraw(balanceWETH9);
|
|
uint256 feeAmount = balanceWETH9.mul(feeBips) / 10_000;
|
|
if (feeAmount > 0) TransferHelper.safeTransferETH(feeRecipient, feeAmount);
|
|
TransferHelper.safeTransferETH(recipient, balanceWETH9 - feeAmount);
|
|
}
|
|
}
|
|
|
|
/// @inheritdoc IPeripheryPaymentsWithFee
|
|
function sweepTokenWithFee(
|
|
address token,
|
|
uint256 amountMinimum,
|
|
address recipient,
|
|
uint256 feeBips,
|
|
address feeRecipient
|
|
) public payable override {
|
|
require(feeBips > 0 && feeBips <= 100);
|
|
|
|
uint256 balanceToken = IERC20(token).balanceOf(address(this));
|
|
require(balanceToken >= amountMinimum, 'Insufficient token');
|
|
|
|
if (balanceToken > 0) {
|
|
uint256 feeAmount = balanceToken.mul(feeBips) / 10_000;
|
|
if (feeAmount > 0) TransferHelper.safeTransfer(token, feeRecipient, feeAmount);
|
|
TransferHelper.safeTransfer(token, recipient, balanceToken - feeAmount);
|
|
}
|
|
}
|
|
}
|