Files
dodo-contractV2/contracts/NFTPool/impl/ControllerModel.sol

86 lines
2.6 KiB
Solidity
Raw Normal View History

2021-09-09 15:53:53 +08:00
/*
Copyright 2021 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {InitializableOwnable} from "../../lib/InitializableOwnable.sol";
import {IERC20} from "../../intf/IERC20.sol";
import {SafeMath} from "../../lib/SafeMath.sol";
contract ControllerModel is InitializableOwnable {
using SafeMath for uint256;
uint256 public _GLOBAL_NFT_IN_FEE_ = 0;
2021-09-09 22:38:19 +08:00
uint256 public _GLOBAL_NFT_OUT_FEE_ = 0;
2021-09-09 15:53:53 +08:00
struct FilterAdminFeeInfo {
uint256 nftInFee;
2021-09-09 22:38:19 +08:00
uint256 nftOutFee;
2021-09-09 15:53:53 +08:00
bool isSet;
}
mapping(address => FilterAdminFeeInfo) filterAdminFees;
mapping(address => bool) isEmergencyWithdraw;
//==================== Event =====================
event SetEmergencyWithdraw(address filter, bool isOpen);
//==================== Ownable ====================
2021-09-09 22:38:19 +08:00
function addFilterAdminFeeInfo(address filterAdminAddr, uint256 nftInFee, uint256 nftOutFee) external onlyOwner {
2021-09-09 15:53:53 +08:00
FilterAdminFeeInfo memory filterAdmin = FilterAdminFeeInfo({
nftInFee: nftInFee,
2021-09-09 22:38:19 +08:00
nftOutFee: nftOutFee,
2021-09-09 15:53:53 +08:00
isSet: true
});
filterAdminFees[filterAdminAddr] = filterAdmin;
}
2021-09-09 22:38:19 +08:00
function setFilterAdminFeeInfo(address filterAdminAddr, uint256 nftInFee, uint256 nftOutFee) external onlyOwner {
2021-09-09 15:53:53 +08:00
filterAdminFees[filterAdminAddr].nftInFee = nftInFee;
2021-09-09 22:38:19 +08:00
filterAdminFees[filterAdminAddr].nftOutFee = nftOutFee;
2021-09-09 15:53:53 +08:00
}
2021-09-09 22:38:19 +08:00
function setGlobalParam(uint256 nftInFee, uint256 nftOutFee) external onlyOwner {
2021-09-09 15:53:53 +08:00
_GLOBAL_NFT_IN_FEE_ = nftInFee;
2021-09-09 22:38:19 +08:00
_GLOBAL_NFT_OUT_FEE_ = nftOutFee;
2021-09-09 15:53:53 +08:00
}
function setEmergencyWithdraw(address filter, bool isOpen) external onlyOwner {
isEmergencyWithdraw[filter] = isOpen;
emit SetEmergencyWithdraw(filter, isOpen);
}
//===================== View ========================
2021-09-09 22:38:19 +08:00
function getMintFee(address filterAdminAddr) external view returns(uint256) {
2021-09-09 16:18:27 +08:00
FilterAdminFeeInfo memory filterAdminFeeInfo = filterAdminFees[filterAdminAddr];
2021-09-09 15:53:53 +08:00
2021-09-09 16:18:27 +08:00
if(filterAdminFeeInfo.isSet) {
return filterAdminFeeInfo.nftInFee;
2021-09-09 15:53:53 +08:00
}else {
return _GLOBAL_NFT_IN_FEE_;
}
}
2021-09-09 22:38:19 +08:00
function getBurnFee(address filterAdminAddr) external view returns(uint256) {
2021-09-09 16:18:27 +08:00
FilterAdminFeeInfo memory filterAdminFeeInfo = filterAdminFees[filterAdminAddr];
2021-09-09 15:53:53 +08:00
2021-09-09 16:18:27 +08:00
if(filterAdminFeeInfo.isSet) {
2021-09-09 22:38:19 +08:00
return filterAdminFeeInfo.nftOutFee;
2021-09-09 15:53:53 +08:00
}else {
2021-09-09 22:38:19 +08:00
return _GLOBAL_NFT_OUT_FEE_;
2021-09-09 15:53:53 +08:00
}
}
function getEmergencySwitch(address filter) external view returns(bool) {
return isEmergencyWithdraw[filter];
}
}