dev
This commit is contained in:
85
contracts/NFTPool/impl/NFTPoolFeeModel.sol
Normal file
85
contracts/NFTPool/impl/NFTPoolFeeModel.sol
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
|
||||
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 NFTPoolFeeModel is InitializableOwnable {
|
||||
using SafeMath for uint256;
|
||||
|
||||
uint256 public _GLOBAL_NFT_IN_FEE_ = 0;
|
||||
uint256 public _GLOBAL_NFT_RANDOM_OUT_FEE_ = 0;
|
||||
uint256 public _GLOBAL_NFT_TARGET_OUT_FEE_ = 50000000000000000;//0.05
|
||||
|
||||
struct FilterAdminInfo {
|
||||
uint256 nftInFee;
|
||||
uint256 nftRandomOutFee;
|
||||
uint256 nftTargetOutFee;
|
||||
bool isSet;
|
||||
}
|
||||
|
||||
mapping(address => FilterAdminInfo) filterAdmins;
|
||||
|
||||
function addFilterAdminInfo(address filterAdminAddr, uint256 nftInFee, uint256 nftRandomOutFee, uint256 nftTargetOutFee) external onlyOwner {
|
||||
FilterAdminInfo memory filterAdmin = FilterAdminInfo({
|
||||
nftInFee: nftInFee,
|
||||
nftRandomOutFee: nftRandomOutFee,
|
||||
nftTargetOutFee: nftTargetOutFee,
|
||||
isSet: true
|
||||
});
|
||||
filterAdmins[filterAdminAddr] = filterAdmin;
|
||||
}
|
||||
|
||||
function setFilterAdminInfo(address filterAdminAddr, uint256 nftInFee, uint256 nftRandomOutFee, uint256 nftTargetOutFee) external onlyOwner {
|
||||
filterAdmins[filterAdminAddr].nftInFee = nftInFee;
|
||||
filterAdmins[filterAdminAddr].nftRandomOutFee = nftRandomOutFee;
|
||||
filterAdmins[filterAdminAddr].nftTargetOutFee = nftTargetOutFee;
|
||||
}
|
||||
|
||||
function setGlobalParam(uint256 nftInFee, uint256 nftRandomOutFee, uint256 nftTargetOutFee) external onlyOwner {
|
||||
_GLOBAL_NFT_IN_FEE_ = nftInFee;
|
||||
_GLOBAL_NFT_RANDOM_OUT_FEE_ = nftRandomOutFee;
|
||||
_GLOBAL_NFT_TARGET_OUT_FEE_ = nftTargetOutFee;
|
||||
}
|
||||
|
||||
|
||||
function getNFTInFee(address filterAdminAddr, address) external view returns(uint256) {
|
||||
FilterAdminInfo memory filterAdminInfo = filterAdmins[filterAdminAddr];
|
||||
|
||||
if(filterAdminInfo.isSet) {
|
||||
return filterAdminInfo.nftInFee;
|
||||
}else {
|
||||
return _GLOBAL_NFT_IN_FEE_;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getNFTRandomOutFee(address filterAdminAddr, address) external view returns(uint256) {
|
||||
FilterAdminInfo memory filterAdminInfo = filterAdmins[filterAdminAddr];
|
||||
|
||||
if(filterAdminInfo.isSet) {
|
||||
return filterAdminInfo.nftRandomOutFee;
|
||||
}else {
|
||||
return _GLOBAL_NFT_RANDOM_OUT_FEE_;
|
||||
}
|
||||
}
|
||||
|
||||
function getNFTTargetOutFee(address filterAdminAddr, address) external view returns(uint256) {
|
||||
FilterAdminInfo memory filterAdminInfo = filterAdmins[filterAdminAddr];
|
||||
|
||||
if(filterAdminInfo.isSet) {
|
||||
return filterAdminInfo.nftTargetOutFee;
|
||||
}else {
|
||||
return _GLOBAL_NFT_TARGET_OUT_FEE_;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user