some changes & rename
This commit is contained in:
79
contracts/NFTPool/impl/Controller.sol
Normal file
79
contracts/NFTPool/impl/Controller.sol
Normal file
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
|
||||
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 {SafeMath} from "../../lib/SafeMath.sol";
|
||||
|
||||
contract Controller is InitializableOwnable {
|
||||
using SafeMath for uint256;
|
||||
|
||||
uint256 public _GLOBAL_NFT_IN_FEE_RATE_ = 0;
|
||||
uint256 public _GLOBAL_NFT_OUT_FEE_RATE_ = 0;
|
||||
|
||||
struct FilterAdminFeeRateInfo {
|
||||
uint256 nftInFeeRate;
|
||||
uint256 nftOutFeeRate;
|
||||
bool isOpen;
|
||||
}
|
||||
|
||||
mapping(address => FilterAdminFeeRateInfo) filterAdminFeeRates;
|
||||
|
||||
mapping(address => bool) public isEmergencyWithdrawOpen;
|
||||
|
||||
//==================== Event =====================
|
||||
event SetEmergencyWithdraw(address filter, bool isOpen);
|
||||
|
||||
//==================== Ownable ====================
|
||||
|
||||
function setFilterAdminFeeRateInfo(
|
||||
address filterAdminAddr,
|
||||
uint256 nftInFeeRate,
|
||||
uint256 nftOutFeeRate,
|
||||
bool isOpen
|
||||
) external onlyOwner {
|
||||
FilterAdminFeeRateInfo memory feeRateInfo = FilterAdminFeeRateInfo({
|
||||
nftInFeeRate: nftInFeeRate,
|
||||
nftOutFeeRate: nftOutFeeRate,
|
||||
isOpen: isOpen
|
||||
});
|
||||
filterAdminFeeRates[filterAdminAddr] = feeRateInfo;
|
||||
}
|
||||
|
||||
function setGlobalParam(uint256 nftInFeeRate, uint256 nftOutFeeRate) external onlyOwner {
|
||||
_GLOBAL_NFT_IN_FEE_RATE_ = nftInFeeRate;
|
||||
_GLOBAL_NFT_OUT_FEE_RATE_ = nftOutFeeRate;
|
||||
}
|
||||
|
||||
function setEmergencyWithdraw(address filter, bool isOpen) external onlyOwner {
|
||||
isEmergencyWithdrawOpen[filter] = isOpen;
|
||||
emit SetEmergencyWithdraw(filter, isOpen);
|
||||
}
|
||||
|
||||
//===================== View ========================
|
||||
function getMintFeeRate(address filterAdminAddr) external view returns (uint256) {
|
||||
FilterAdminFeeRateInfo memory filterAdminFeeRateInfo = filterAdminFeeRates[filterAdminAddr];
|
||||
|
||||
if (filterAdminFeeRateInfo.isSet) {
|
||||
return filterAdminFeeRateInfo.nftInFeeRate;
|
||||
} else {
|
||||
return _GLOBAL_NFT_IN_FEERate_;
|
||||
}
|
||||
}
|
||||
|
||||
function getBurnFeeRate(address filterAdminAddr) external view returns (uint256) {
|
||||
FilterAdminFeeInfo memory filterAdminFeeInfo = filterAdminFees[filterAdminAddr];
|
||||
|
||||
if (filterAdminFeeInfo.isSet) {
|
||||
return filterAdminFeeInfo.nftOutFee;
|
||||
} else {
|
||||
return _GLOBAL_NFT_OUT_FEE_;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user