编译器
0.5.17+commit.d19bba13
文件 1 的 17:ClaimsReward.sol
pragma solidity ^0.5.0;
import "@openzeppelin/contracts/math/SafeMath.sol";
import "../../abstract/LegacyMasterAware.sol";
import "../../interfaces/IClaims.sol";
import "../../interfaces/IClaimsData.sol";
import "../../interfaces/IClaimsReward.sol";
import "../../interfaces/IGovernance.sol";
import "../../interfaces/IMCR.sol";
import "../../interfaces/IMemberRoles.sol";
import "../../interfaces/INXMToken.sol";
import "../../interfaces/IPool.sol";
import "../../interfaces/IPooledStaking.sol";
import "../../interfaces/IQuotationData.sol";
import "../../interfaces/ITokenController.sol";
import "../../interfaces/ITokenData.sol";
contract ClaimsReward is IClaimsReward, LegacyMasterAware {
using SafeMath for uint;
INXMToken internal tk;
ITokenController internal tc;
ITokenData internal td;
IQuotationData internal qd;
IClaims internal c1;
IClaimsData internal cd;
IPool internal pool;
IGovernance internal gv;
IPooledStaking internal pooledStaking;
IMemberRoles internal memberRoles;
IMCR public mcr;
address public DAI;
address public constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
uint private constant DECIMAL1E18 = uint(10) ** 18;
constructor (address masterAddress, address _daiAddress) public {
changeMasterAddress(masterAddress);
DAI = _daiAddress;
}
function changeDependentContractAddress() public onlyInternal {
c1 = IClaims(ms.getLatestAddress("CL"));
cd = IClaimsData(ms.getLatestAddress("CD"));
tk = INXMToken(ms.tokenAddress());
tc = ITokenController(ms.getLatestAddress("TC"));
td = ITokenData(ms.getLatestAddress("TD"));
qd = IQuotationData(ms.getLatestAddress("QD"));
gv = IGovernance(ms.getLatestAddress("GV"));
pooledStaking = IPooledStaking(ms.getLatestAddress("PS"));
memberRoles = IMemberRoles(ms.getLatestAddress("MR"));
pool = IPool(ms.getLatestAddress("P1"));
mcr = IMCR(ms.getLatestAddress("MC"));
}
function closeClaim(uint _claimId) external {
(, , , uint status, uint dateUpd,) = cd.getClaim(_claimId);
bool canRetryPayout = status != 12 || dateUpd.add(cd.payoutRetryTime()) < block.timestamp;
require(canRetryPayout, "ClaimsReward: Payout retry time not reached.");
_changeClaimStatus(_claimId);
}
function changeClaimStatus(uint claimId) public checkPause onlyInternal {
_changeClaimStatus(claimId);
}
function _changeClaimStatus(uint claimId) internal {
(, uint coverid) = cd.getClaimCoverId(claimId);
(, uint status) = cd.getClaimStatusNumber(claimId);
if (status == 0) {
_changeClaimStatusCA(claimId, coverid, status);
} else if (status >= 1 && status <= 5) {
_changeClaimStatusMV(claimId, coverid, status);
} else if (status == 12) {
bool payoutSucceeded = attemptClaimPayout(coverid);
if (payoutSucceeded) {
c1.setClaimStatus(claimId, 14);
} else {
c1.setClaimStatus(claimId, 12);
}
}
}
function getCurrencyAssetAddress(bytes4 currency) public view returns (address) {
if (currency == "ETH") {
return ETH;
}
if (currency == "DAI") {
return DAI;
}
revert("ClaimsReward: unknown asset");
}
function attemptClaimPayout(uint coverId) internal returns (bool success) {
uint sumAssured = qd.getCoverSumAssured(coverId);
uint sumAssuredWei = sumAssured.mul(1e18);
bytes4 coverCurrency = qd.getCurrencyOfCover(coverId);
address asset = getCurrencyAssetAddress(coverCurrency);
address payable coverHolder = qd.getCoverMemberAddress(coverId);
address payable payoutAddress = memberRoles.getClaimPayoutAddress(coverHolder);
bool payoutSucceeded = pool.sendClaimPayout(asset, payoutAddress, sumAssuredWei);
if (payoutSucceeded) {
(, address scAddress) = qd.getscAddressOfCover(coverId);
uint tokenPrice = pool.getTokenPrice(asset);
uint burnNXMAmount = sumAssuredWei.mul(1e18).div(tokenPrice);
pooledStaking.pushBurn(scAddress, burnNXMAmount);
(, address coverContract) = qd.getscAddressOfCover(coverId);
qd.subFromTotalSumAssured(coverCurrency, sumAssured);
qd.subFromTotalSumAssuredSC(coverContract, coverCurrency, sumAssured);
mcr.updateMCRInternal(pool.getPoolValueInEth(), true);
return true;
}
return false;
}
function getRewardToBeGiven(
uint check,
uint voteid,
uint flag
)
public
view
returns (
uint tokenCalculated,
bool lastClaimedCheck,
uint tokens,
uint perc
)
{
uint claimId;
int8 verdict;
bool claimed;
uint tokensToBeDist;
uint totalTokens;
(tokens, claimId, verdict, claimed) = cd.getVoteDetails(voteid);
lastClaimedCheck = false;
int8 claimVerdict = cd.getFinalVerdict(claimId);
if (claimVerdict == 0) {
lastClaimedCheck = true;
}
if (claimVerdict == verdict && (claimed == false || flag == 1)) {
if (check == 1) {
(perc, , tokensToBeDist) = cd.getClaimRewardDetail(claimId);
} else {
(, perc, tokensToBeDist) = cd.getClaimRewardDetail(claimId);
}
if (perc > 0) {
if (check == 1) {
if (verdict == 1) {
(, totalTokens,) = cd.getClaimsTokenCA(claimId);
} else {
(,, totalTokens) = cd.getClaimsTokenCA(claimId);
}
} else {
if (verdict == 1) {
(, totalTokens,) = cd.getClaimsTokenMV(claimId);
} else {
(,, totalTokens) = cd.getClaimsTokenMV(claimId);
}
}
tokenCalculated = (perc.mul(tokens).mul(tokensToBeDist)).div(totalTokens.mul(100));
}
}
}
function upgrade(address _newAdd) public onlyInternal {
uint amount = tk.balanceOf(address(this));
if (amount > 0) {
require(tk.transfer(_newAdd, amount));
}
}
function getRewardToBeDistributedByUser(address _add) public view returns (uint total) {
uint lengthVote = cd.getVoteAddressCALength(_add);
uint lastIndexCA;
uint lastIndexMV;
uint tokenForVoteId;
uint voteId;
(lastIndexCA, lastIndexMV) = cd.getRewardDistributedIndex(_add);
for (uint i = lastIndexCA; i < lengthVote; i++) {
voteId = cd.getVoteAddressCA(_add, i);
(tokenForVoteId,,,) = getRewardToBeGiven(1, voteId, 0);
total = total.add(tokenForVoteId);
}
lengthVote = cd.getVoteAddressMemberLength(_add);
for (uint j = lastIndexMV; j < lengthVote; j++) {
voteId = cd.getVoteAddressMember(_add, j);
(tokenForVoteId,,,) = getRewardToBeGiven(0, voteId, 0);
total = total.add(tokenForVoteId);
}
return (total);
}
function getRewardAndClaimedStatus(uint check, uint claimId) public view returns (uint reward, bool claimed) {
uint voteId;
uint claimid;
uint lengthVote;
if (check == 1) {
lengthVote = cd.getVoteAddressCALength(msg.sender);
for (uint i = 0; i < lengthVote; i++) {
voteId = cd.getVoteAddressCA(msg.sender, i);
(, claimid, , claimed) = cd.getVoteDetails(voteId);
if (claimid == claimId) {break;}
}
} else {
lengthVote = cd.getVoteAddressMemberLength(msg.sender);
for (uint j = 0; j < lengthVote; j++) {
voteId = cd.getVoteAddressMember(msg.sender, j);
(, claimid, , claimed) = cd.getVoteDetails(voteId);
if (claimid == claimId) {break;}
}
}
(reward,,,) = getRewardToBeGiven(check, voteId, 1);
}
function claimAllPendingReward(uint records) public isMemberAndcheckPause {
_claimRewardToBeDistributed(records);
pooledStaking.withdrawReward(msg.sender);
uint governanceRewards = gv.claimReward(msg.sender, records);
if (governanceRewards > 0) {
require(tk.transfer(msg.sender, governanceRewards));
}
}
function getAllPendingRewardOfUser(address _add) public view returns (uint) {
uint caReward = getRewardToBeDistributedByUser(_add);
uint pooledStakingReward = pooledStaking.stakerReward(_add);
uint governanceReward = gv.getPendingReward(_add);
return caReward.add(pooledStakingReward).add(governanceReward);
}
function _rewardAgainstClaim(uint claimid, uint coverid, uint status) internal {
uint premiumNXM = qd.getCoverPremiumNXM(coverid);
uint distributableTokens = premiumNXM.mul(cd.claimRewardPerc()).div(100);
uint percCA;
uint percMV;
(percCA, percMV) = cd.getRewardStatus(status);
cd.setClaimRewardDetail(claimid, percCA, percMV, distributableTokens);
if (percCA > 0 || percMV > 0) {
tc.mint(address(this), distributableTokens);
}
if (status == 6 || status == 9 || status == 11) {
cd.changeFinalVerdict(claimid, -1);
tc.markCoverClaimClosed(coverid, false);
_burnCoverNoteDeposit(coverid);
} else if (status == 7 || status == 8 || status == 10) {
cd.changeFinalVerdict(claimid, 1);
tc.markCoverClaimClosed(coverid, true);
_unlockCoverNote(coverid);
bool payoutSucceeded = attemptClaimPayout(coverid);
uint nextStatus = payoutSucceeded ? 14 : 12;
c1.setClaimStatus(claimid, nextStatus);
}
}
function _burnCoverNoteDeposit(uint coverId) internal {
address _of = qd.getCoverMemberAddress(coverId);
bytes32 reason = keccak256(abi.encodePacked("CN", _of, coverId));
uint lockedAmount = tc.tokensLocked(_of, reason);
(uint amount,) = td.depositedCN(coverId);
amount = amount.div(2);
uint burnAmount = lockedAmount < amount ? lockedAmount : amount;
if (burnAmount != 0) {
tc.burnLockedTokens(_of, reason, amount);
}
}
function unlockCoverNote(uint coverId) external onlyInternal {
_unlockCoverNote(coverId);
}
function _unlockCoverNote(uint coverId) internal {
address coverHolder = qd.getCoverMemberAddress(coverId);
bytes32 reason = keccak256(abi.encodePacked("CN", coverHolder, coverId));
uint lockedCN = tc.tokensLocked(coverHolder, reason);
if (lockedCN != 0) {
tc.releaseLockedTokens(coverHolder, reason, lockedCN);
}
}
function _changeClaimStatusCA(uint claimid, uint coverid, uint status) internal {
if (c1.checkVoteClosing(claimid) == 1) {
uint caTokens = c1.getCATokens(claimid, 0);
uint accept;
uint deny;
uint acceptAndDeny;
bool rewardOrPunish;
uint sumAssured;
(, accept) = cd.getClaimVote(claimid, 1);
(, deny) = cd.getClaimVote(claimid, - 1);
acceptAndDeny = accept.add(deny);
accept = accept.mul(100);
deny = deny.mul(100);
if (caTokens == 0) {
status = 3;
} else {
sumAssured = qd.getCoverSumAssured(coverid).mul(DECIMAL1E18);
if (caTokens > sumAssured.mul(5)) {
if (accept.div(acceptAndDeny) > 70) {
status = 7;
qd.changeCoverStatusNo(coverid, uint8(IQuotationData.CoverStatus.ClaimAccepted));
rewardOrPunish = true;
} else if (deny.div(acceptAndDeny) > 70) {
status = 6;
qd.changeCoverStatusNo(coverid, uint8(IQuotationData.CoverStatus.ClaimDenied));
rewardOrPunish = true;
} else if (accept.div(acceptAndDeny) > deny.div(acceptAndDeny)) {
status = 4;
} else {
status = 5;
}
} else {
if (accept.div(acceptAndDeny) > deny.div(acceptAndDeny)) {
status = 2;
} else {
status = 3;
}
}
}
c1.setClaimStatus(claimid, status);
if (rewardOrPunish) {
_rewardAgainstClaim(claimid, coverid, status);
}
}
}
function _changeClaimStatusMV(uint claimid, uint coverid, uint status) internal {
if (c1.checkVoteClosing(claimid) == 1) {
uint8 coverStatus;
uint statusOrig = status;
uint mvTokens = c1.getCATokens(claimid, 1);
uint sumAssured = qd.getCoverSumAssured(coverid).mul(DECIMAL1E18);
uint thresholdUnreached = 0;
if (mvTokens < sumAssured.mul(5)) {
thresholdUnreached = 1;
}
uint accept;
(, accept) = cd.getClaimMVote(claimid, 1);
uint deny;
(, deny) = cd.getClaimMVote(claimid, - 1);
if (accept.add(deny) > 0) {
if (accept.mul(100).div(accept.add(deny)) >= 50 && statusOrig > 1 &&
statusOrig <= 5 && thresholdUnreached == 0) {
status = 8;
coverStatus = uint8(IQuotationData.CoverStatus.ClaimAccepted);
} else if (deny.mul(100).div(accept.add(deny)) >= 50 && statusOrig > 1 &&
statusOrig <= 5 && thresholdUnreached == 0) {
status = 9;
coverStatus = uint8(IQuotationData.CoverStatus.ClaimDenied);
}
}
if (thresholdUnreached == 1 && (statusOrig == 2 || statusOrig == 4)) {
status = 10;
coverStatus = uint8(IQuotationData.CoverStatus.ClaimAccepted);
} else if (thresholdUnreached == 1 && (statusOrig == 5 || statusOrig == 3 || statusOrig == 1)) {
status = 11;
coverStatus = uint8(IQuotationData.CoverStatus.ClaimDenied);
}
c1.setClaimStatus(claimid, status);
qd.changeCoverStatusNo(coverid, uint8(coverStatus));
_rewardAgainstClaim(claimid, coverid, status);
}
}
function _claimRewardToBeDistributed(uint _records) internal {
uint lengthVote = cd.getVoteAddressCALength(msg.sender);
uint voteid;
uint lastIndex;
(lastIndex,) = cd.getRewardDistributedIndex(msg.sender);
uint total = 0;
uint tokenForVoteId = 0;
bool lastClaimedCheck;
uint _days = td.lockCADays();
bool claimed;
uint counter = 0;
uint claimId;
uint perc;
uint i;
uint lastClaimed = lengthVote;
for (i = lastIndex; i < lengthVote && counter < _records; i++) {
voteid = cd.getVoteAddressCA(msg.sender, i);
(tokenForVoteId, lastClaimedCheck, , perc) = getRewardToBeGiven(1, voteid, 0);
if (lastClaimed == lengthVote && lastClaimedCheck == true) {
lastClaimed = i;
}
(, claimId, , claimed) = cd.getVoteDetails(voteid);
if (perc > 0 && !claimed) {
counter++;
cd.setRewardClaimed(voteid, true);
} else if (perc == 0 && cd.getFinalVerdict(claimId) != 0 && !claimed) {
(perc,,) = cd.getClaimRewardDetail(claimId);
if (perc == 0) {
counter++;
}
cd.setRewardClaimed(voteid, true);
}
if (tokenForVoteId > 0) {
total = tokenForVoteId.add(total);
}
}
if (lastClaimed == lengthVote) {
cd.setRewardDistributedIndexCA(msg.sender, i);
}
else {
cd.setRewardDistributedIndexCA(msg.sender, lastClaimed);
}
lengthVote = cd.getVoteAddressMemberLength(msg.sender);
lastClaimed = lengthVote;
_days = _days.mul(counter);
if (tc.tokensLockedAtTime(msg.sender, "CLA", now) > 0) {
tc.reduceLock(msg.sender, "CLA", _days);
}
(, lastIndex) = cd.getRewardDistributedIndex(msg.sender);
lastClaimed = lengthVote;
counter = 0;
for (i = lastIndex; i < lengthVote && counter < _records; i++) {
voteid = cd.getVoteAddressMember(msg.sender, i);
(tokenForVoteId, lastClaimedCheck,,) = getRewardToBeGiven(0, voteid, 0);
if (lastClaimed == lengthVote && lastClaimedCheck == true) {
lastClaimed = i;
}
(, claimId, , claimed) = cd.getVoteDetails(voteid);
if (claimed == false && cd.getFinalVerdict(claimId) != 0) {
cd.setRewardClaimed(voteid, true);
counter++;
}
if (tokenForVoteId > 0) {
total = tokenForVoteId.add(total);
}
}
if (total > 0) {
require(tk.transfer(msg.sender, total));
}
if (lastClaimed == lengthVote) {
cd.setRewardDistributedIndexMV(msg.sender, i);
}
else {
cd.setRewardDistributedIndexMV(msg.sender, lastClaimed);
}
}
}
文件 2 的 17:IClaims.sol
pragma solidity >=0.5.0;
interface IClaims {
function setClaimStatus(uint claimId, uint stat) external;
function getCATokens(uint claimId, uint member) external view returns (uint tokens);
function submitClaim(uint coverId) external;
function submitClaimForMember(uint coverId, address member) external;
function submitClaimAfterEPOff() external pure;
function submitCAVote(uint claimId, int8 verdict) external;
function submitMemberVote(uint claimId, int8 verdict) external;
function pauseAllPendingClaimsVoting() external pure;
function startAllPendingClaimsVoting() external pure;
function checkVoteClosing(uint claimId) external view returns (int8 close);
}
文件 3 的 17:IClaimsData.sol
pragma solidity >=0.5.0;
interface IClaimsData {
function pendingClaimStart() external view returns (uint);
function claimDepositTime() external view returns (uint);
function maxVotingTime() external view returns (uint);
function minVotingTime() external view returns (uint);
function payoutRetryTime() external view returns (uint);
function claimRewardPerc() external view returns (uint);
function minVoteThreshold() external view returns (uint);
function maxVoteThreshold() external view returns (uint);
function majorityConsensus() external view returns (uint);
function pauseDaysCA() external view returns (uint);
function userClaimVotePausedOn(address) external view returns (uint);
function setpendingClaimStart(uint _start) external;
function setRewardDistributedIndexCA(address _voter, uint caIndex) external;
function setUserClaimVotePausedOn(address user) external;
function setRewardDistributedIndexMV(address _voter, uint mvIndex) external;
function setClaimRewardDetail(
uint claimid,
uint percCA,
uint percMV,
uint tokens
) external;
function setRewardClaimed(uint _voteid, bool claimed) external;
function changeFinalVerdict(uint _claimId, int8 _verdict) external;
function addClaim(
uint _claimId,
uint _coverId,
address _from,
uint _nowtime
) external;
function addVote(
address _voter,
uint _tokens,
uint claimId,
int8 _verdict
) external;
function addClaimVoteCA(uint _claimId, uint _voteid) external;
function setUserClaimVoteCA(
address _from,
uint _claimId,
uint _voteid
) external;
function setClaimTokensCA(uint _claimId, int8 _vote, uint _tokens) external;
function setClaimTokensMV(uint _claimId, int8 _vote, uint _tokens) external;
function addClaimVotemember(uint _claimId, uint _voteid) external;
function setUserClaimVoteMember(
address _from,
uint _claimId,
uint _voteid
) external;
function updateState12Count(uint _claimId, uint _cnt) external;
function setClaimStatus(uint _claimId, uint _stat) external;
function setClaimdateUpd(uint _claimId, uint _dateUpd) external;
function setClaimAtEmergencyPause(
uint _coverId,
uint _dateUpd,
bool _submit
) external;
function setClaimSubmittedAtEPTrue(uint _index, bool _submit) external;
function setFirstClaimIndexToSubmitAfterEP(
uint _firstClaimIndexToSubmit
) external;
function setPendingClaimDetails(
uint _claimId,
uint _pendingTime,
bool _voting
) external;
function setPendingClaimVoteStatus(uint _claimId, bool _vote) external;
function setFirstClaimIndexToStartVotingAfterEP(
uint _claimStartVotingFirstIndex
) external;
function callVoteEvent(
address _userAddress,
uint _claimId,
bytes4 _typeOf,
uint _tokens,
uint _submitDate,
int8 _verdict
) external;
function callClaimEvent(
uint _coverId,
address _userAddress,
uint _claimId,
uint _datesubmit
) external;
function getUintParameters(bytes8 code) external view returns (bytes8 codeVal, uint val);
function getClaimOfEmergencyPauseByIndex(
uint _index
)
external
view
returns (
uint coverId,
uint dateUpd,
bool submit
);
function getAllClaimsByIndex(
uint _claimId
)
external
view
returns (
uint coverId,
int8 vote,
uint status,
uint dateUpd,
uint state12Count
);
function getUserClaimVoteCA(
address _add,
uint _claimId
)
external
view
returns (uint idVote);
function getUserClaimVoteMember(
address _add,
uint _claimId
)
external
view
returns (uint idVote);
function getAllVoteLength() external view returns (uint voteCount);
function getClaimStatusNumber(uint _claimId) external view returns (uint claimId, uint statno);
function getRewardStatus(uint statusNumber) external view returns (uint percCA, uint percMV);
function getClaimState12Count(uint _claimId) external view returns (uint num);
function getClaimDateUpd(uint _claimId) external view returns (uint dateupd);
function getAllClaimsByAddress(address _member) external view returns (uint[] memory claimarr);
function getClaimsTokenCA(
uint _claimId
)
external
view
returns (
uint claimId,
uint accept,
uint deny
);
function getClaimsTokenMV(
uint _claimId
)
external
view
returns (
uint claimId,
uint accept,
uint deny
);
function getCaClaimVotesToken(uint _claimId) external view returns (uint claimId, uint cnt);
function getMemberClaimVotesToken(
uint _claimId
)
external
view
returns (uint claimId, uint cnt);
function getVoteDetails(uint _voteid)
external view
returns (
uint tokens,
uint claimId,
int8 verdict,
bool rewardClaimed
);
function getVoterVote(uint _voteid) external view returns (address voter);
function getClaim(
uint _claimId
)
external
view
returns (
uint claimId,
uint coverId,
int8 vote,
uint status,
uint dateUpd,
uint state12Count
);
function getClaimVoteLength(
uint _claimId,
uint8 _ca
)
external
view
returns (uint claimId, uint len);
function getVoteVerdict(
uint _claimId,
uint _index,
uint8 _ca
)
external
view
returns (int8 ver);
function getVoteToken(
uint _claimId,
uint _index,
uint8 _ca
)
external
view
returns (uint tok);
function getVoteVoter(
uint _claimId,
uint _index,
uint8 _ca
)
external
view
returns (address voter);
function getUserClaimCount(address _add) external view returns (uint len);
function getClaimLength() external view returns (uint len);
function actualClaimLength() external view returns (uint len);
function getClaimFromNewStart(
uint _index,
address _add
)
external
view
returns (
uint coverid,
uint claimId,
int8 voteCA,
int8 voteMV,
uint statusnumber
);
function getUserClaimByIndex(
uint _index,
address _add
)
external
view
returns (
uint status,
uint coverid,
uint claimId
);
function getAllVotesForClaim(
uint _claimId
)
external
view
returns (
uint claimId,
uint[] memory ca,
uint[] memory mv
);
function getTokensClaim(
address _of,
uint _claimId
)
external
view
returns (
uint claimId,
uint tokens
);
function getRewardDistributedIndex(
address _voter
)
external
view
returns (
uint lastCAvoteIndex,
uint lastMVvoteIndex
);
function getClaimRewardDetail(
uint claimid
)
external
view
returns (
uint percCA,
uint percMV,
uint tokens
);
function getClaimCoverId(uint _claimId) external view returns (uint claimId, uint coverid);
function getClaimVote(uint _claimId, int8 _verdict) external view returns (uint claimId, uint token);
function getClaimMVote(uint _claimId, int8 _verdict) external view returns (uint claimId, uint token);
function getVoteAddressCA(address _voter, uint index) external view returns (uint);
function getVoteAddressMember(address _voter, uint index) external view returns (uint);
function getVoteAddressCALength(address _voter) external view returns (uint);
function getVoteAddressMemberLength(address _voter) external view returns (uint);
function getFinalVerdict(uint _claimId) external view returns (int8 verdict);
function getLengthOfClaimSubmittedAtEP() external view returns (uint len);
function getFirstClaimIndexToSubmitAfterEP() external view returns (uint indexToSubmit);
function getLengthOfClaimVotingPause() external view returns (uint len);
function getPendingClaimDetailsByIndex(
uint _index
)
external
view
returns (
uint claimId,
uint pendingTime,
bool voting
);
function getFirstClaimIndexToStartVotingAfterEP() external view returns (uint firstindex);
}
文件 4 的 17:IClaimsReward.sol
pragma solidity >=0.5.0;
interface IClaimsReward {
function changeClaimStatus(uint claimid) external;
function getCurrencyAssetAddress(bytes4 currency) external view returns (address);
function getRewardToBeGiven(
uint check,
uint voteid,
uint flag
)
external
view
returns (
uint tokenCalculated,
bool lastClaimedCheck,
uint tokens,
uint perc
);
function upgrade(address _newAdd) external;
function getRewardToBeDistributedByUser(address _add) external view returns (uint total);
function getRewardAndClaimedStatus(uint check, uint claimId) external view returns (uint reward, bool claimed);
function claimAllPendingReward(uint records) external;
function getAllPendingRewardOfUser(address _add) external view returns (uint);
function unlockCoverNote(uint coverId) external;
}
文件 5 的 17:IGovernance.sol
pragma solidity >=0.5.0;
interface IGovernance {
event Proposal(
address indexed proposalOwner,
uint256 indexed proposalId,
uint256 dateAdd,
string proposalTitle,
string proposalSD,
string proposalDescHash
);
event Solution(
uint256 indexed proposalId,
address indexed solutionOwner,
uint256 indexed solutionId,
string solutionDescHash,
uint256 dateAdd
);
event Vote(
address indexed from,
uint256 indexed proposalId,
uint256 indexed voteId,
uint256 dateAdd,
uint256 solutionChosen
);
event RewardClaimed(
address indexed member,
uint gbtReward
);
event VoteCast (uint256 proposalId);
event ProposalAccepted (uint256 proposalId);
event CloseProposalOnTime (
uint256 indexed proposalId,
uint256 time
);
event ActionSuccess (
uint256 proposalId
);
function createProposal(
string calldata _proposalTitle,
string calldata _proposalSD,
string calldata _proposalDescHash,
uint _categoryId
)
external;
function updateProposal(
uint _proposalId,
string calldata _proposalTitle,
string calldata _proposalSD,
string calldata _proposalDescHash
)
external;
function categorizeProposal(
uint _proposalId,
uint _categoryId,
uint _incentives
)
external;
function submitProposalWithSolution(
uint _proposalId,
string calldata _solutionHash,
bytes calldata _action
)
external;
function createProposalwithSolution(
string calldata _proposalTitle,
string calldata _proposalSD,
string calldata _proposalDescHash,
uint _categoryId,
string calldata _solutionHash,
bytes calldata _action
)
external;
function submitVote(uint _proposalId, uint _solutionChosen) external;
function closeProposal(uint _proposalId) external;
function claimReward(address _memberAddress, uint _maxRecords) external returns (uint pendingDAppReward);
function proposal(uint _proposalId)
external
view
returns (
uint proposalId,
uint category,
uint status,
uint finalVerdict,
uint totalReward
);
function canCloseProposal(uint _proposalId) external view returns (uint closeValue);
function allowedToCatgorize() external view returns (uint roleId);
function removeDelegation(address _add) external;
function getPendingReward(address _memberAddress) external view returns (uint pendingDAppReward);
}
文件 6 的 17:IMCR.sol
pragma solidity >=0.5.0;
interface IMCR {
function updateMCRInternal(uint poolValueInEth, bool forceUpdate) external;
function getMCR() external view returns (uint);
function maxMCRFloorIncrement() external view returns (uint24);
function mcrFloor() external view returns (uint112);
function mcr() external view returns (uint112);
function desiredMCR() external view returns (uint112);
function lastUpdateTime() external view returns (uint32);
}
文件 7 的 17:IMemberRoles.sol
pragma solidity >=0.5.0;
interface IMemberRoles {
enum Role {UnAssigned, AdvisoryBoard, Member, Owner}
function payJoiningFee(address _userAddress) external payable;
function switchMembership(address _newAddress) external;
function switchMembershipOf(address member, address _newAddress) external;
function swapOwner(address _newOwnerAddress) external;
function kycVerdict(address payable _userAddress, bool verdict) external;
function getClaimPayoutAddress(address payable _member) external view returns (address payable);
function setClaimPayoutAddress(address payable _address) external;
function totalRoles() external view returns (uint256);
function changeAuthorized(uint _roleId, address _newAuthorized) external;
function members(uint _memberRoleId) external view returns (uint, address[] memory memberArray);
function numberOfMembers(uint _memberRoleId) external view returns (uint);
function authorized(uint _memberRoleId) external view returns (address);
function roles(address _memberAddress) external view returns (uint[] memory);
function checkRole(address _memberAddress, uint _roleId) external view returns (bool);
function getMemberLengthForAllRoles() external view returns (uint[] memory totalMembers);
function memberAtIndex(uint _memberRoleId, uint index) external view returns (address, bool);
function membersLength(uint _memberRoleId) external view returns (uint);
}
文件 8 的 17:INXMMaster.sol
pragma solidity >=0.5.0;
interface INXMMaster {
function tokenAddress() external view returns (address);
function owner() external view returns (address);
function masterInitialized() external view returns (bool);
function isInternal(address _add) external view returns (bool);
function isPause() external view returns (bool check);
function isOwner(address _add) external view returns (bool);
function isMember(address _add) external view returns (bool);
function checkIsAuthToGoverned(address _add) external view returns (bool);
function dAppLocker() external view returns (address _add);
function getLatestAddress(bytes2 _contractName) external view returns (address payable contractAddress);
function upgradeMultipleContracts(
bytes2[] calldata _contractCodes,
address payable[] calldata newAddresses
) external;
function removeContracts(bytes2[] calldata contractCodesToRemove) external;
function addNewInternalContracts(
bytes2[] calldata _contractCodes,
address payable[] calldata newAddresses,
uint[] calldata _types
) external;
function updateOwnerParameters(bytes8 code, address payable val) external;
}
文件 9 的 17:INXMToken.sol
pragma solidity >=0.5.0;
interface INXMToken {
function burn(uint256 amount) external returns (bool);
function burnFrom(address from, uint256 value) external returns (bool);
function operatorTransfer(address from, uint256 value) external returns (bool);
function mint(address account, uint256 amount) external;
function isLockedForMV(address member) external view returns (uint);
function addToWhiteList(address _member) external returns (bool);
function removeFromWhiteList(address _member) external returns (bool);
function changeOperator(address _newOperator) external returns (bool);
function lockForMemberVote(address _of, uint _days) external;
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
文件 10 的 17:IPool.sol
pragma solidity >=0.5.0;
import "./IPriceFeedOracle.sol";
interface IPool {
function sellNXM(uint tokenAmount, uint minEthOut) external;
function sellNXMTokens(uint tokenAmount) external returns (bool);
function minPoolEth() external returns (uint);
function transferAssetToSwapOperator(address asset, uint amount) external;
function setAssetDataLastSwapTime(address asset, uint32 lastSwapTime) external;
function getAssetDetails(address _asset) external view returns (
uint112 min,
uint112 max,
uint32 lastAssetSwapTime,
uint maxSlippageRatio
);
function sendClaimPayout (
address asset,
address payable payoutAddress,
uint amount
) external returns (bool success);
function transferAsset(
address asset,
address payable destination,
uint amount
) external;
function upgradeCapitalPool(address payable newPoolAddress) external;
function priceFeedOracle() external view returns (IPriceFeedOracle);
function getPoolValueInEth() external view returns (uint);
function transferAssetFrom(address asset, address from, uint amount) external;
function getEthForNXM(uint nxmAmount) external view returns (uint ethAmount);
function calculateEthForNXM(
uint nxmAmount,
uint currentTotalAssetValue,
uint mcrEth
) external pure returns (uint);
function calculateMCRRatio(uint totalAssetValue, uint mcrEth) external pure returns (uint);
function calculateTokenSpotPrice(uint totalAssetValue, uint mcrEth) external pure returns (uint tokenPrice);
function getTokenPrice(address asset) external view returns (uint tokenPrice);
function getMCRRatio() external view returns (uint);
}
文件 11 的 17:IPooledStaking.sol
pragma solidity >=0.5.0;
interface IPooledStaking {
function accumulateReward(address contractAddress, uint amount) external;
function pushBurn(address contractAddress, uint amount) external;
function hasPendingActions() external view returns (bool);
function processPendingActions(uint maxIterations) external returns (bool finished);
function contractStake(address contractAddress) external view returns (uint);
function stakerReward(address staker) external view returns (uint);
function stakerDeposit(address staker) external view returns (uint);
function stakerContractStake(address staker, address contractAddress) external view returns (uint);
function withdraw(uint amount) external;
function stakerMaxWithdrawable(address stakerAddress) external view returns (uint);
function withdrawReward(address stakerAddress) external;
}
文件 12 的 17:IPriceFeedOracle.sol
pragma solidity >=0.5.0;
interface IPriceFeedOracle {
function daiAddress() external view returns (address);
function stETH() external view returns (address);
function ETH() external view returns (address);
function getAssetToEthRate(address asset) external view returns (uint);
function getAssetForEth(address asset, uint ethIn) external view returns (uint);
}
文件 13 的 17:IQuotationData.sol
pragma solidity >=0.5.0;
interface IQuotationData {
function authQuoteEngine() external view returns (address);
function stlp() external view returns (uint);
function stl() external view returns (uint);
function pm() external view returns (uint);
function minDays() external view returns (uint);
function tokensRetained() external view returns (uint);
function kycAuthAddress() external view returns (address);
function refundEligible(address) external view returns (bool);
function holdedCoverIDStatus(uint) external view returns (uint);
function timestampRepeated(uint) external view returns (bool);
enum HCIDStatus {NA, kycPending, kycPass, kycFailedOrRefunded, kycPassNoCover}
enum CoverStatus {Active, ClaimAccepted, ClaimDenied, CoverExpired, ClaimSubmitted, Requested}
function addInTotalSumAssuredSC(address _add, bytes4 _curr, uint _amount) external;
function subFromTotalSumAssuredSC(address _add, bytes4 _curr, uint _amount) external;
function subFromTotalSumAssured(bytes4 _curr, uint _amount) external;
function addInTotalSumAssured(bytes4 _curr, uint _amount) external;
function setTimestampRepeated(uint _timestamp) external;
function addCover(
uint16 _coverPeriod,
uint _sumAssured,
address payable _userAddress,
bytes4 _currencyCode,
address _scAddress,
uint premium,
uint premiumNXM
) external;
function addHoldCover(
address payable from,
address scAddress,
bytes4 coverCurr,
uint[] calldata coverDetails,
uint16 coverPeriod
) external;
function setRefundEligible(address _add, bool status) external;
function setHoldedCoverIDStatus(uint holdedCoverID, uint status) external;
function setKycAuthAddress(address _add) external;
function changeAuthQuoteEngine(address _add) external;
function getUintParameters(bytes8 code) external view returns (bytes8 codeVal, uint val);
function getProductDetails()
external
view
returns (
uint _minDays,
uint _pm,
uint _stl,
uint _stlp
);
function getCoverLength() external view returns (uint len);
function getAuthQuoteEngine() external view returns (address _add);
function getTotalSumAssured(bytes4 _curr) external view returns (uint amount);
function getAllCoversOfUser(address _add) external view returns (uint[] memory allCover);
function getUserCoverLength(address _add) external view returns (uint len);
function getCoverStatusNo(uint _cid) external view returns (uint8);
function getCoverPeriod(uint _cid) external view returns (uint32 cp);
function getCoverSumAssured(uint _cid) external view returns (uint sa);
function getCurrencyOfCover(uint _cid) external view returns (bytes4 curr);
function getValidityOfCover(uint _cid) external view returns (uint date);
function getscAddressOfCover(uint _cid) external view returns (uint, address);
function getCoverMemberAddress(uint _cid) external view returns (address payable _add);
function getCoverPremiumNXM(uint _cid) external view returns (uint _premiumNXM);
function getCoverDetailsByCoverID1(
uint _cid
)
external
view
returns (
uint cid,
address _memberAddress,
address _scAddress,
bytes4 _currencyCode,
uint _sumAssured,
uint premiumNXM
);
function getCoverDetailsByCoverID2(
uint _cid
)
external
view
returns (
uint cid,
uint8 status,
uint sumAssured,
uint16 coverPeriod,
uint validUntil
);
function getHoldedCoverDetailsByID1(
uint _hcid
)
external
view
returns (
uint hcid,
address scAddress,
bytes4 coverCurr,
uint16 coverPeriod
);
function getUserHoldedCoverLength(address _add) external view returns (uint);
function getUserHoldedCoverByIndex(address _add, uint index) external view returns (uint);
function getHoldedCoverDetailsByID2(
uint _hcid
)
external
view
returns (
uint hcid,
address payable memberAddress,
uint[] memory coverDetails
);
function getTotalSumAssuredSC(address _add, bytes4 _curr) external view returns (uint amount);
function changeCoverStatusNo(uint _cid, uint8 _stat) external;
}
文件 14 的 17:ITokenController.sol
pragma solidity >=0.5.0;
interface ITokenController {
function coverInfo(uint id) external view returns (uint16 claimCount, bool hasOpenClaim, bool hasAcceptedClaim);
function claimSubmissionGracePeriod() external view returns (uint);
function withdrawCoverNote(
address _of,
uint[] calldata _coverIds,
uint[] calldata _indexes
) external;
function markCoverClaimOpen(uint coverId) external;
function markCoverClaimClosed(uint coverId, bool isAccepted) external;
function changeOperator(address _newOperator) external;
function operatorTransfer(address _from, address _to, uint _value) external returns (bool);
function lockClaimAssessmentTokens(uint256 _amount, uint256 _time) external;
function lockOf(address _of, bytes32 _reason, uint256 _amount, uint256 _time) external returns (bool);
function mintCoverNote(
address _of,
bytes32 _reason,
uint256 _amount,
uint256 _time
) external;
function extendClaimAssessmentLock(uint256 _time) external;
function extendLockOf(address _of, bytes32 _reason, uint256 _time) external returns (bool);
function increaseClaimAssessmentLock(uint256 _amount) external;
function burnFrom(address _of, uint amount) external returns (bool);
function burnLockedTokens(address _of, bytes32 _reason, uint256 _amount) external;
function reduceLock(address _of, bytes32 _reason, uint256 _time) external;
function releaseLockedTokens(address _of, bytes32 _reason, uint256 _amount) external;
function addToWhitelist(address _member) external;
function removeFromWhitelist(address _member) external;
function mint(address _member, uint _amount) external;
function lockForMemberVote(address _of, uint _days) external;
function withdrawClaimAssessmentTokens(address _of) external;
function getLockReasons(address _of) external view returns (bytes32[] memory reasons);
function getLockedTokensValidity(address _of, bytes32 reason) external view returns (uint256 validity);
function getUnlockableTokens(address _of) external view returns (uint256 unlockableTokens);
function tokensLocked(address _of, bytes32 _reason) external view returns (uint256 amount);
function tokensLockedWithValidity(address _of, bytes32 _reason)
external
view
returns (uint256 amount, uint256 validity);
function tokensUnlockable(address _of, bytes32 _reason) external view returns (uint256 amount);
function totalSupply() external view returns (uint256);
function tokensLockedAtTime(address _of, bytes32 _reason, uint256 _time) external view returns (uint256 amount);
function totalBalanceOf(address _of) external view returns (uint256 amount);
function totalLockedBalance(address _of) external view returns (uint256 amount);
}
文件 15 的 17:ITokenData.sol
pragma solidity >=0.5.0;
interface ITokenData {
function walletAddress() external view returns (address payable);
function lockTokenTimeAfterCoverExp() external view returns (uint);
function bookTime() external view returns (uint);
function lockCADays() external view returns (uint);
function lockMVDays() external view returns (uint);
function scValidDays() external view returns (uint);
function joiningFee() external view returns (uint);
function stakerCommissionPer() external view returns (uint);
function stakerMaxCommissionPer() external view returns (uint);
function tokenExponent() external view returns (uint);
function priceStep() external view returns (uint);
function depositedCN(uint) external view returns (uint amount, bool isDeposited);
function lastCompletedStakeCommission(address) external view returns (uint);
function changeWalletAddress(address payable _address) external;
function getStakerStakedContractByIndex(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (address stakedContractAddress);
function getStakerStakedBurnedByIndex(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint burnedAmount);
function getStakerStakedUnlockableBeforeLastBurnByIndex(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint unlockable);
function getStakerStakedContractIndex(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint scIndex);
function getStakedContractStakerIndex(
address _stakedContractAddress,
uint _stakedContractIndex
)
external
view
returns (uint sIndex);
function getStakerInitialStakedAmountOnContract(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint amount);
function getStakerStakedContractLength(
address _stakerAddress
)
external
view
returns (uint length);
function getStakerUnlockedStakedTokens(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint amount);
function pushUnlockedStakedTokens(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function pushBurnedTokens(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function pushUnlockableBeforeLastBurnTokens(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function setUnlockableBeforeLastBurnTokens(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function pushEarnedStakeCommissions(
address _stakerAddress,
address _stakedContractAddress,
uint _stakedContractIndex,
uint _commissionAmount
) external;
function pushRedeemedStakeCommissions(
address _stakerAddress,
uint _stakerIndex,
uint _amount
) external;
function getStakerEarnedStakeCommission(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint);
function getStakerRedeemedStakeCommission(
address _stakerAddress,
uint _stakerIndex
)
external
view
returns (uint);
function getStakerTotalEarnedStakeCommission(
address _stakerAddress
)
external
view
returns (uint totalCommissionEarned);
function getStakerTotalReedmedStakeCommission(
address _stakerAddress
)
external
view
returns (uint totalCommissionRedeemed);
function setDepositCN(uint coverId, bool flag) external;
function getStakedContractStakerByIndex(
address _stakedContractAddress,
uint _stakedContractIndex
)
external
view
returns (address stakerAddress);
function getStakedContractStakersLength(
address _stakedContractAddress
) external view returns (uint length);
function addStake(
address _stakerAddress,
address _stakedContractAddress,
uint _amount
) external returns (uint scIndex);
function bookCATokens(address _of) external;
function isCATokensBooked(address _of) external view returns (bool res);
function setStakedContractCurrentCommissionIndex(
address _stakedContractAddress,
uint _index
) external;
function setLastCompletedStakeCommissionIndex(
address _stakerAddress,
uint _index
) external;
function setStakedContractCurrentBurnIndex(
address _stakedContractAddress,
uint _index
) external;
function setDepositCNAmount(uint coverId, uint amount) external;
}
文件 16 的 17:LegacyMasterAware.sol
pragma solidity ^0.5.0;
import "../interfaces/INXMMaster.sol";
contract LegacyMasterAware {
INXMMaster public ms;
address public nxMasterAddress;
modifier onlyInternal {
require(ms.isInternal(msg.sender));
_;
}
modifier isMemberAndcheckPause {
require(ms.isPause() == false && ms.isMember(msg.sender) == true);
_;
}
modifier onlyOwner {
require(ms.isOwner(msg.sender));
_;
}
modifier checkPause {
require(ms.isPause() == false);
_;
}
modifier isMember {
require(ms.isMember(msg.sender), "Not member");
_;
}
function changeDependentContractAddress() public;
function changeMasterAddress(address _masterAddress) public {
if (address(ms) != address(0)) {
require(address(ms) == msg.sender, "Not master");
}
ms = INXMMaster(_masterAddress);
nxMasterAddress = _masterAddress;
}
}
文件 17 的 17:SafeMath.sol
pragma solidity ^0.5.0;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
{
"compilationTarget": {
"contracts/modules/claims/ClaimsReward.sol": "ClaimsReward"
},
"evmVersion": "istanbul",
"libraries": {},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": []
}
[{"inputs":[{"internalType":"address","name":"masterAddress","type":"address"},{"internalType":"address","name":"_daiAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"DAI","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"claimId","type":"uint256"}],"name":"changeClaimStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"changeDependentContractAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_masterAddress","type":"address"}],"name":"changeMasterAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"records","type":"uint256"}],"name":"claimAllPendingReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_claimId","type":"uint256"}],"name":"closeClaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_add","type":"address"}],"name":"getAllPendingRewardOfUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"currency","type":"bytes4"}],"name":"getCurrencyAssetAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"check","type":"uint256"},{"internalType":"uint256","name":"claimId","type":"uint256"}],"name":"getRewardAndClaimedStatus","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_add","type":"address"}],"name":"getRewardToBeDistributedByUser","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"check","type":"uint256"},{"internalType":"uint256","name":"voteid","type":"uint256"},{"internalType":"uint256","name":"flag","type":"uint256"}],"name":"getRewardToBeGiven","outputs":[{"internalType":"uint256","name":"tokenCalculated","type":"uint256"},{"internalType":"bool","name":"lastClaimedCheck","type":"bool"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"perc","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mcr","outputs":[{"internalType":"contract IMCR","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ms","outputs":[{"internalType":"contract INXMMaster","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"nxMasterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coverId","type":"uint256"}],"name":"unlockCoverNote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newAdd","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]