// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor(){
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;
import "./Ownable.sol";
import "./SafeMath.sol";
import "./XIVInterface.sol";
contract XIVDatabase is Ownable{
using SafeMath for uint256;
mapping (address=>uint256) tokensStaked; //amount of XIV staked by user + incentive from betting
mapping(address=> uint256) actualAmountStakingByUser; // XIV staked by users.
address[] userStakedAddress; // array of user's address who has staked..
address[] tempArray;
// XIVDatabaseLib.BetInfo[] tempBetArray;
uint256 tokenStakedAmount; // total Amount currently staked by all users.
uint256 minStakeXIVAmount; // min amount that user can bet on.
uint256 maxStakeXIVAmount; // max amount that user can bet on.
uint256 totalTransactions; // sum of all transactions
uint256 investmentId;
uint256 slotExecutionId;
uint256 slotId;
mapping(address=>bool) isStakeMapping;
mapping(uint256=> XIVDatabaseLib.IncentiveInfo[]) incentiveMapping;
mapping(address=> XIVDatabaseLib.StakingInfo[]) StakingInfoMapping;
uint256 minLPvalue; // min amount of token that user can stake in LP
mapping(address=>XIVDatabaseLib.LPLockedInfo) lockingPeriodForLPMapping; // time for which staked value is locked
uint256 betFactorLP; // this is the ratio according to which users can bet considering the amount staked..
address XIVMainContractAddress;
address XIVBettingFixedContractAddress;
address XIVBettingFlexibleContractAddress;
address oracleWrapperContractAddress = 0xBc79719636EC60Bc3d98901Af82B278F17a58037; //address of oracle wrapper from where the prices would be fetched
address XIVTokenContractAddress = 0x44f262622248027f8E2a8Fb1090c4Cf85072392C; //XIV contract address
// mapping and arry of the currencies in the flash individuals vaults.
mapping(address=>XIVDatabaseLib.DefiCoin) flashVaultMapping;
address[] flashVaultContractAddressArray;
/*
* fixed individuals starts
*/
// mapping and arry of the currencies in the fixed individuals vaults.
mapping(address=>XIVDatabaseLib.DefiCoin) defiCoinsFixedMapping;
address[] allDefiCoinFixedContractAddressArray;
// array of daysCount and its % drop and other values for fixed
XIVDatabaseLib.FixedInfo[] fixedDefiCoinArray;
/*
* flexible individuals starts
*/
// mapping and arry of the currencies in the flexible individuals vaults.
mapping(address=>XIVDatabaseLib.DefiCoin) defiCoinsFlexibleMapping;
address[] allDefiCoinFlexibleContractAddressArray;
// flexible individual dropvalue and other values
XIVDatabaseLib.FlexibleInfo[] flexibleDefiCoinArray;
// flexible individual time periods days
XIVDatabaseLib.TimePeriod[] flexibleDefiCoinTimePeriodArray;
/*
* fixed and flexible adding currency index starts
*/
// mapping and arry of the currencies for all index vaults.
mapping(address=>XIVDatabaseLib.IndexCoin) defiCoinsIndexMapping;
address[] allIndexDefiCoinContractAddressArray;
/*
* flexible index starts
*/
// flexible index dropvalue and other values
XIVDatabaseLib.FlexibleInfo[] flexibleIndexArray;
// flexible index time periods days
XIVDatabaseLib.TimePeriod[] flexibleIndexTimePeriodArray;
// this include array of imdex on which bet is placed. key will be betId and value will be array of all index...
mapping(uint256=>XIVDatabaseLib.IndexCoin[]) betIndexForFlexibleArray;
// this contains the values on which flexible index bet is placed
mapping(uint256=>XIVDatabaseLib.BetPriceHistory) betPriceHistoryFlexibleMapping;
/*
* fixed index starts
*/
XIVDatabaseLib.FixedInfo[] fixedDefiIndexArray;
// this include array of imdex on which bet is placed. key will be betId and value will be array of all index...
mapping(uint256=>XIVDatabaseLib.IndexCoin[]) betIndexForFixedArray;
// this contains the values on which fixed index bet is placed
mapping(uint256=>XIVDatabaseLib.BetPriceHistory) betPriceHistoryFixedMapping;
uint256 betBaseIndexValue; //10**8 index value
uint256 betActualIndexValue; // marketcap value
uint256 betid;
XIVDatabaseLib.BetInfo[] betArray;
mapping(uint256=>uint256) findBetInArrayUsingBetIdMapping; // getting the bet index using betid... Key is betId and value will be index in the betArray...
mapping(address=> uint256[]) betAddressesArray;
uint256 plentyOneDayPercentage; // percentage in 10**2
mapping(uint256=>uint256) plentyThreeDayPercentage; // key is day and value is percentage in 10**2
mapping(uint256=>uint256) plentySevenDayPercentage; // key is day and value is percentage in 10**2
uint256[] daysArray;
uint256 rewardGeneratedAmount;
address[] userAddressUsedForBetting;
mapping(address=>mapping(uint256=>mapping(address=>bool))) existingBetCheckMapping;
event BetDetails(uint256 indexed betId, uint256 indexed status, uint256 indexed betEndTime);
event LPEvent(uint256 typeOfLP, address indexed userAddress, uint256 amount, uint256 timestamp);
function emitBetDetails(uint256 betId, uint256 status, uint256 betEndTime) external onlyMyContracts{
emit BetDetails( betId, status, betEndTime);
}
function emitLPEvent(uint256 typeOfLP, address userAddress, uint256 amount, uint256 timestamp) external onlyMyContracts{
emit LPEvent(typeOfLP, userAddress, amount, timestamp);
}
function updateExistingBetCheckMapping(address _userAddress,uint256 _betType, address _BetContractAddress,bool status) external onlyMyContracts{
existingBetCheckMapping[_userAddress][_betType][_BetContractAddress]=status;
}
function getExistingBetCheckMapping(address _userAddress,uint256 _betType, address _BetContractAddress) external view returns(bool){
return (existingBetCheckMapping[_userAddress][_betType][_BetContractAddress]);
}
function addFixedDefiCoinArray(uint256 _daysCount,uint16 _upDownPercentage, uint16 _riskFactor, uint16 _rewardFactor) public onlyOwner{
bool isAvailable=false;
for(uint256 i=0;i<fixedDefiCoinArray.length;i++){
if(fixedDefiCoinArray[i].daysCount==_daysCount){
isAvailable=true;
break;
}
}
require(!isAvailable,"Already have this data.");
XIVDatabaseLib.FixedInfo memory fobject=XIVDatabaseLib.FixedInfo({
id:fixedDefiCoinArray.length,
daysCount:_daysCount,
upDownPercentage:_upDownPercentage,
riskFactor:_riskFactor,
rewardFactor:_rewardFactor,
status:true
});
fixedDefiCoinArray.push(fobject);
addDaysToDayArray(_daysCount);
}
function updateFixedDefiCoinArray(uint256 index,uint256 _daysCount,uint16 _upDownPercentage, uint16 _riskFactor, uint16 _rewardFactor, bool _status) public onlyOwner{
fixedDefiCoinArray[index].daysCount=_daysCount;
fixedDefiCoinArray[index].upDownPercentage=_upDownPercentage;
fixedDefiCoinArray[index].riskFactor=_riskFactor;
fixedDefiCoinArray[index].rewardFactor=_rewardFactor;
fixedDefiCoinArray[index].status=_status;
addDaysToDayArray(_daysCount);
}
function addUpdateForDefiFixedCoin(address _ContractAddress, string memory _currencySymbol,
uint16 _OracleType, bool _Status, bool isFlashVault) public onlyOwner{
// add update defi felxible coin
XIVDatabaseLib.DefiCoin memory dCoin=XIVDatabaseLib.DefiCoin({
oracleType:_OracleType,
currencySymbol:_currencySymbol,
status:_Status
});
if(isFlashVault){
flashVaultMapping[_ContractAddress]=dCoin;
}else{
defiCoinsFixedMapping[_ContractAddress]=dCoin;
}
// check wheather contract exists in allFlexibleContractAddressArray array
if(!contractAvailableInArray(_ContractAddress,isFlashVault?flashVaultContractAddressArray:allDefiCoinFixedContractAddressArray)){
(isFlashVault?flashVaultContractAddressArray:allDefiCoinFixedContractAddressArray).push(_ContractAddress);
}
}
function getDefiCoinsFixedMapping(address _betContractAddress, bool isFlashVault) external view returns(XIVDatabaseLib.DefiCoin memory){
return (isFlashVault?flashVaultMapping[_betContractAddress]:defiCoinsFixedMapping[_betContractAddress]);
}
function getDefiCoinsFixedContractAddressArray(bool isFlashVault) external view returns(address[] memory){
return (isFlashVault?flashVaultContractAddressArray:allDefiCoinFixedContractAddressArray);
}
function addUpdateForDefiCoinFlexible(address _ContractAddress, string memory _currencySymbol,
uint16 _OracleType, bool _Status) public onlyOwner{
// add update defi felxible coin
XIVDatabaseLib.DefiCoin memory dCoin=XIVDatabaseLib.DefiCoin({
oracleType:_OracleType,
currencySymbol:_currencySymbol,
status:_Status
});
defiCoinsFlexibleMapping[_ContractAddress]=dCoin;
// check wheather contract exists in allFlexibleContractAddressArray array
if(!contractAvailableInArray(_ContractAddress,allDefiCoinFlexibleContractAddressArray)){
allDefiCoinFlexibleContractAddressArray.push(_ContractAddress);
}
}
function getDefiCoinsFlexibleMapping(address _betContractAddress) external view returns(XIVDatabaseLib.DefiCoin memory){
return (defiCoinsFlexibleMapping[_betContractAddress]);
}
function getDefiCoinsFlexibleContractAddressArray() external view returns(address[] memory){
return allDefiCoinFlexibleContractAddressArray;
}
function addflexibleDefiCoinArray(uint16 _upDownPercentage, uint16 _riskFactor, uint16 _rewardFactor) public onlyOwner{
XIVDatabaseLib.FlexibleInfo memory fobject=XIVDatabaseLib.FlexibleInfo({
id:flexibleDefiCoinArray.length,
upDownPercentage:_upDownPercentage,
riskFactor:_riskFactor,
rewardFactor:_rewardFactor,
status:true
});
flexibleDefiCoinArray.push(fobject);
}
function updateflexibleDefiCoinArray(uint256 index,uint16 _upDownPercentage, uint16 _riskFactor, uint16 _rewardFactor, bool _status) public onlyOwner{
flexibleDefiCoinArray[index].upDownPercentage=_upDownPercentage;
flexibleDefiCoinArray[index].riskFactor=_riskFactor;
flexibleDefiCoinArray[index].rewardFactor=_rewardFactor;
flexibleDefiCoinArray[index].status=_status;
}
function addFlexibleDefiCoinTimePeriodArray(uint256 _tdays) public onlyOwner{
bool isAvailable=false;
for(uint256 i=0;i<flexibleDefiCoinTimePeriodArray.length;i++){
if(flexibleDefiCoinTimePeriodArray[i]._days==_tdays){
isAvailable=true;
break;
}
}
require(!isAvailable,"Already have this data.");
XIVDatabaseLib.TimePeriod memory tobject= XIVDatabaseLib.TimePeriod({
_days:_tdays,
status:true
});
flexibleDefiCoinTimePeriodArray.push(tobject);
addDaysToDayArray(_tdays);
}
function updateFlexibleDefiCoinTimePeriodArray(uint256 index, uint256 _tdays, bool _status) public onlyOwner{
flexibleDefiCoinTimePeriodArray[index]._days=_tdays;
flexibleDefiCoinTimePeriodArray[index].status=_status;
addDaysToDayArray(_tdays);
}
function getFlexibleDefiCoinTimePeriodArray() public view returns(XIVDatabaseLib.TimePeriod[] memory){
return flexibleDefiCoinTimePeriodArray;
}
function addUpdateForIndexCoin(XIVDatabaseLib.IndexCoin[] memory tupleCoinArray) public onlyOwner{
// add update index fixed coin
tempArray=new address[](0);
allIndexDefiCoinContractAddressArray=tempArray;
for(uint256 i=0;i<tupleCoinArray.length;i++){
defiCoinsIndexMapping[tupleCoinArray[i].contractAddress]=tupleCoinArray[i];
// check wheather contract exists in allFixedContractAddressArray array
if(!contractAvailableInArray(tupleCoinArray[i].contractAddress,allIndexDefiCoinContractAddressArray)){
allIndexDefiCoinContractAddressArray.push(tupleCoinArray[i].contractAddress);
}
}
}
function addflexibleIndexCoinArray(uint16 _upDownPercentage, uint16 _riskFactor, uint16 _rewardFactor) public onlyOwner{
XIVDatabaseLib.FlexibleInfo memory fobject=XIVDatabaseLib.FlexibleInfo({
id:flexibleIndexArray.length,
upDownPercentage:_upDownPercentage,
riskFactor:_riskFactor,
rewardFactor:_rewardFactor,
status:true
});
flexibleIndexArray.push(fobject);
}
function updateflexibleIndexCoinArray(uint256 index,uint16 _upDownPercentage, uint16 _riskFactor, uint16 _rewardFactor, bool _status) public onlyOwner{
flexibleIndexArray[index].upDownPercentage=_upDownPercentage;
flexibleIndexArray[index].riskFactor=_riskFactor;
flexibleIndexArray[index].rewardFactor=_rewardFactor;
flexibleIndexArray[index].status=_status;
}
function addFlexibleIndexTimePeriodArray(uint256 _tdays) public onlyOwner{
bool isAvailable=false;
for(uint256 i=0;i<flexibleIndexTimePeriodArray.length;i++){
if(flexibleIndexTimePeriodArray[i]._days==_tdays){
isAvailable=true;
break;
}
}
require(!isAvailable,"Already have this data.");
XIVDatabaseLib.TimePeriod memory tobject= XIVDatabaseLib.TimePeriod({
_days:_tdays,
status:true
});
flexibleIndexTimePeriodArray.push(tobject);
addDaysToDayArray(_tdays);
}
function updateFlexibleIndexTimePeriodArray(uint256 index, uint256 _tdays, bool _status) public onlyOwner{
flexibleIndexTimePeriodArray[index]._days=_tdays;
flexibleIndexTimePeriodArray[index].status=_status;
addDaysToDayArray(_tdays);
}
function getFlexibleIndexTimePeriodArray() public view returns(XIVDatabaseLib.TimePeriod[] memory){
return flexibleIndexTimePeriodArray;
}
function addFixedDefiIndexArray(uint256 _daysCount,uint16 _upDownPercentage, uint16 _riskFactor, uint16 _rewardFactor) public onlyOwner{
bool isAvailable=false;
for(uint256 i=0;i<fixedDefiIndexArray.length;i++){
if(fixedDefiIndexArray[i].daysCount==_daysCount){
isAvailable=true;
break;
}
}
require(!isAvailable,"Already have this data.");
XIVDatabaseLib.FixedInfo memory fobject=XIVDatabaseLib.FixedInfo({
id:fixedDefiIndexArray.length,
daysCount:_daysCount,
upDownPercentage:_upDownPercentage,
riskFactor:_riskFactor,
rewardFactor:_rewardFactor,
status:true
});
fixedDefiIndexArray.push(fobject);
addDaysToDayArray(_daysCount);
}
function updateFixedDefiIndexArray(uint256 index,uint256 _daysCount,uint16 _upDownPercentage, uint16 _riskFactor, uint16 _rewardFactor, bool _status) public onlyOwner{
fixedDefiIndexArray[index].daysCount=_daysCount;
fixedDefiIndexArray[index].upDownPercentage=_upDownPercentage;
fixedDefiIndexArray[index].riskFactor=_riskFactor;
fixedDefiIndexArray[index].rewardFactor=_rewardFactor;
fixedDefiIndexArray[index].status=_status;
addDaysToDayArray(_daysCount);
}
function contractAvailableInArray(address _ContractAddress,address[] memory _contractArray) internal pure returns(bool){
for(uint256 i=0;i<_contractArray.length;i++){
if(_ContractAddress==_contractArray[i]){
return true;
}
}
return false;
}
function updateMaxStakeXIVAmount(uint256 _maxStakeXIVAmount) external onlyOwner{
maxStakeXIVAmount=_maxStakeXIVAmount;
}
function getMaxStakeXIVAmount() external view returns(uint256){
return maxStakeXIVAmount;
}
function updateMinStakeXIVAmount(uint256 _minStakeXIVAmount) external onlyOwner{
minStakeXIVAmount=_minStakeXIVAmount;
}
function getMinStakeXIVAmount() external view returns(uint256){
return minStakeXIVAmount;
}
function updateMinLPvalue(uint256 _minLPvalue) external onlyOwner{
minLPvalue=_minLPvalue;
}
function getMinLPvalue() external view returns(uint256){
return minLPvalue;
}
function updateBetFactorLP(uint256 _betFactorLP) external onlyOwner{
betFactorLP=_betFactorLP;
}
function getBetFactorLP() external view returns(uint256){
return betFactorLP;
}
function updateTotalTransactions(uint256 _totalTransactions) external onlyMyContracts{
totalTransactions=_totalTransactions;
}
function getTotalTransactions() external view returns(uint256){
return totalTransactions;
}
function updateXIVMainContractAddress(address _XIVMainContractAddress) external onlyOwner{
XIVMainContractAddress=_XIVMainContractAddress;
}
function updateXIVBettingFixedContractAddress(address _XIVBettingFixedContractAddress) external onlyOwner{
XIVBettingFixedContractAddress=_XIVBettingFixedContractAddress;
}
function updateXIVBettingFlexibleContractAddress(address _XIVBettingFlexibleContractAddress) external onlyOwner{
XIVBettingFlexibleContractAddress=_XIVBettingFlexibleContractAddress;
}
function updateXIVTokenContractAddress(address _XIVTokenContractAddress) external onlyOwner{
XIVTokenContractAddress=_XIVTokenContractAddress;
}
function getXIVTokenContractAddress() external view returns(address){
return XIVTokenContractAddress;
}
function updateBetBaseIndexValue(uint256 _betBaseIndexValue) external onlyMyContracts{
betBaseIndexValue=_betBaseIndexValue;
}
function getBetBaseIndexValue() external view returns(uint256){
return betBaseIndexValue;
}
function updateBetActualIndexValue(uint256 _betActualIndexValue) external onlyMyContracts{
betActualIndexValue=_betActualIndexValue;
}
function getBetActualIndexValue() external view returns(uint256){
return betActualIndexValue;
}
// function transferETH(address payable userAddress,uint256 amount) external onlyMyContracts {
// require(address(this).balance >= amount,"The Contract does not have enough ethers.");
// userAddress.transfer(amount);
// }
function transferTokens(address contractAddress,address userAddress,uint256 amount) external onlyMyContracts {
Token tokenObj=Token(contractAddress);
require(tokenObj.balanceOf(address(this))>= amount, "Tokens not available");
tokenObj.transfer(userAddress, amount);
}
function transferFromTokens(address contractAddress,address fromAddress, address toAddress,uint256 amount) external onlyMyContracts {
require(checkTokens(contractAddress,amount,fromAddress));
Token(contractAddress).transferFrom(fromAddress, toAddress, amount);
}
function checkTokens(address contractAddress,uint256 amount, address fromAddress) internal view returns(bool){
Token tokenObj = Token(contractAddress);
//check if user has balance
require(tokenObj.balanceOf(fromAddress) >= amount, "You don't have enough XIV balance");
//check if user has provided allowance
require(tokenObj.allowance(fromAddress,address(this)) >= amount,
"Please allow smart contract to spend on your behalf");
return true;
}
function getTokensStaked(address userAddress) external view returns(uint256){
return (tokensStaked[userAddress]);
}
function updateTokensStaked(address userAddress, uint256 amount) external onlyMyContracts{
tokensStaked[userAddress]=amount;
}
function getStakingInfoMapping(address userAddress) external view returns(XIVDatabaseLib.StakingInfo[] memory){
return (StakingInfoMapping[userAddress]);
}
function updateStakingInfoMapping(address userAddress, XIVDatabaseLib.StakingInfo memory sInfo) external onlyMyContracts{
StakingInfoMapping[userAddress].push(sInfo);
}
function getActualAmountStakedByUser(address userAddress) external view returns(uint256){
return (actualAmountStakingByUser[userAddress]);
}
function updateIsStakeMapping(address userAddress,bool isStake) external onlyMyContracts{
isStakeMapping[userAddress]=(isStake);
}
function getIsStakeMapping(address userAddress) external view returns(bool){
return (isStakeMapping[userAddress]);
}
function updateIncentiveMapping(uint256 _slotId, XIVDatabaseLib.IncentiveInfo memory iInfo) external onlyMyContracts{
incentiveMapping[_slotId].push(iInfo);
}
function getIncentiveMapping(uint256 _slotId) external view returns(XIVDatabaseLib.IncentiveInfo[] memory){
return (incentiveMapping[_slotId]);
}
function updateActualAmountStakedByUser(address userAddress, uint256 amount) external onlyMyContracts{
actualAmountStakingByUser[userAddress]=amount;
}
function getLockingPeriodForLPMapping(address userAddress) external view returns(XIVDatabaseLib.LPLockedInfo memory){
return (lockingPeriodForLPMapping[userAddress]);
}
function updateLockingPeriodForLPMapping(address userAddress, uint256 _amountLocked, uint256 _lockedTimeStamp) external onlyMyContracts{
XIVDatabaseLib.LPLockedInfo memory lpLockedInfo= XIVDatabaseLib.LPLockedInfo({
lockedTimeStamp:_lockedTimeStamp,
amountLocked:_amountLocked
});
lockingPeriodForLPMapping[userAddress]=lpLockedInfo;
}
function getTokenStakedAmount() external view returns(uint256){
return (tokenStakedAmount);
}
function updateTokenStakedAmount(uint256 _tokenStakedAmount) external onlyMyContracts{
tokenStakedAmount=_tokenStakedAmount;
}
function getBetId() external view returns(uint256){
return betid;
}
function updateBetId(uint256 _userBetId) external onlyMyContracts{
betid=_userBetId;
}
function getInvestmentId() external view returns(uint256){
return investmentId;
}
function updateInvestmentId(uint256 _investmentId) external onlyMyContracts{
investmentId=_investmentId;
}
function getSlotExecutionId() external view returns(uint256){
return slotExecutionId;
}
function updateSlotExecutionId(uint256 _slotExecutionId) external onlyMyContracts{
slotExecutionId=_slotExecutionId;
}
function getSlotId() external view returns(uint256){
return slotId;
}
function updateSlotId(uint256 _slotId) external onlyMyContracts{
slotId=_slotId;
}
function updateBetArray(XIVDatabaseLib.BetInfo memory bObject) external onlyMyContracts{
betArray.push(bObject);
}
function updateBetArrayIndex(XIVDatabaseLib.BetInfo memory bObject, uint256 index) external onlyMyContracts{
betArray[index]=bObject;
}
function getBetArray() external view returns(XIVDatabaseLib.BetInfo[] memory){
return betArray;
}
function getFindBetInArrayUsingBetIdMapping(uint256 _betid) external view returns(uint256){
return findBetInArrayUsingBetIdMapping[_betid];
}
function updateFindBetInArrayUsingBetIdMapping(uint256 _betid, uint256 value) external onlyMyContracts{
findBetInArrayUsingBetIdMapping[_betid]=value;
}
function updateUserStakedAddress(address _address) external onlyMyContracts{
userStakedAddress.push(_address);
}
function getUserStakedAddress() external view returns(address[] memory){
return userStakedAddress;
}
function updateUserStakedAddress(address[] memory _userStakedAddress) external onlyMyContracts{
userStakedAddress=_userStakedAddress;
}
function getFlexibleDefiCoinArray() external view returns(XIVDatabaseLib.FlexibleInfo[] memory){
return flexibleDefiCoinArray;
}
function getFlexibleIndexArray() external view returns(XIVDatabaseLib.FlexibleInfo[] memory){
return flexibleIndexArray;
}
function getFixedDefiCoinArray() external view returns(XIVDatabaseLib.FixedInfo[] memory){
return fixedDefiCoinArray;
}
function getFixedDefiIndexArray() external view returns(XIVDatabaseLib.FixedInfo[] memory){
return fixedDefiIndexArray;
}
function getAllIndexContractAddressArray() external view returns(address[] memory){
return allIndexDefiCoinContractAddressArray;
}
function getDefiCoinIndexMapping(address _ContractAddress) external view returns(XIVDatabaseLib.IndexCoin memory){
return (defiCoinsIndexMapping[_ContractAddress]);
}
function updateBetIndexForFixedArray(uint256 _betId, XIVDatabaseLib.IndexCoin memory iCArray) external onlyMyContracts{
betIndexForFixedArray[_betId].push(iCArray);
}
function getBetIndexForFixedArray(uint256 _betId) external view returns(XIVDatabaseLib.IndexCoin[] memory){
return (betIndexForFixedArray[_betId]);
}
function updateBetIndexForFlexibleArray(uint256 _betId, XIVDatabaseLib.IndexCoin memory iCArray) external onlyMyContracts{
betIndexForFlexibleArray[_betId].push(iCArray);
}
function getBetIndexForFlexibleArray(uint256 _betId) external view returns(XIVDatabaseLib.IndexCoin[] memory){
return (betIndexForFlexibleArray[_betId]);
}
function updateBetPriceHistoryFixedMapping(uint256 _betId, XIVDatabaseLib.BetPriceHistory memory bPHObj) external onlyMyContracts{
betPriceHistoryFixedMapping[_betId]=bPHObj;
}
function getBetPriceHistoryFixedMapping(uint256 _betId) external view returns(XIVDatabaseLib.BetPriceHistory memory){
return (betPriceHistoryFixedMapping[_betId]);
}
function updateBetPriceHistoryFlexibleMapping(uint256 _betId, XIVDatabaseLib.BetPriceHistory memory bPHObj) external onlyMyContracts{
betPriceHistoryFlexibleMapping[_betId]=bPHObj;
}
function getBetPriceHistoryFlexibleMapping(uint256 _betId) external view returns(XIVDatabaseLib.BetPriceHistory memory){
return (betPriceHistoryFlexibleMapping[_betId]);
}
function addUpdatePlentyOneDayPercentage(uint256 percentage) public onlyOwner{
plentyOneDayPercentage=percentage;
}
function getPlentyOneDayPercentage() external view returns(uint256){
return (plentyOneDayPercentage);
}
function addUpdatePlentyThreeDayPercentage(uint256 _days, uint256 percentage) public onlyOwner{
plentyThreeDayPercentage[_days]=percentage;
}
function getPlentyThreeDayPercentage(uint256 _days) external view returns(uint256){
return (plentyThreeDayPercentage[_days]);
}
function addUpdatePlentySevenDayPercentage(uint256 _days, uint256 percentage) public onlyOwner{
plentySevenDayPercentage[_days]=percentage;
}
function getPlentySevenDayPercentage(uint256 _days) external view returns(uint256){
return (plentySevenDayPercentage[_days]);
}
function updateOrcaleAddress(address oracleAddress) external onlyOwner{
oracleWrapperContractAddress=oracleAddress;
}
function getOracleWrapperContractAddress() external view returns(address){
return oracleWrapperContractAddress;
}
function getBetsAccordingToUserAddress(address userAddress) external view returns(uint256[] memory){
return betAddressesArray[userAddress];
}
function getUserBetCount(address userAddress) external view returns(uint256){
return betAddressesArray[userAddress].length;
}
function getUserBetArray(address userAddress, uint256 pageNo, uint256 pageSize) external view returns(XIVDatabaseLib.BetInfo[] memory){
uint256[] memory betIndexes=betAddressesArray[userAddress];
if(betIndexes.length>0){
uint256 startIndex=(((betIndexes.length).sub(pageNo.mul(pageSize))).sub(1));
uint256 endIndex;
uint256 pageCount=startIndex.add(1);
if(pageSize.sub(1)<startIndex){
endIndex=(startIndex.sub(pageSize.sub(1)));
pageCount=pageSize;
}
XIVDatabaseLib.BetInfo[] memory bArray=new XIVDatabaseLib.BetInfo[](pageCount);
uint256 value;
for(uint256 i=endIndex;i<=startIndex;i++){
bArray[value]=betArray[findBetInArrayUsingBetIdMapping[betIndexes[i]]];
value++;
}
return bArray;
}
return new XIVDatabaseLib.BetInfo[](0);
}
function updateBetAddressesArray(address userAddress, uint256 _betId) external onlyMyContracts{
betAddressesArray[userAddress].push(_betId);
}
function getRewardGeneratedAmount() external view returns(uint256){
return rewardGeneratedAmount;
}
function updateRewardGeneratedAmount(uint256 _rewardGeneratedAmount) external onlyMyContracts{
rewardGeneratedAmount=_rewardGeneratedAmount;
}
function addUserAddressUsedForBetting(address userAddress) external onlyMyContracts{
userAddressUsedForBetting.push(userAddress);
}
function getUserAddressUsedForBetting() external view returns(address[] memory){
return userAddressUsedForBetting;
}
function addDaysToDayArray(uint256 _days) internal{
bool isAvailable;
for(uint256 i=0;i<daysArray.length;i++){
if(daysArray[i]==_days){
isAvailable=true;
break;
}
}
if(!isAvailable){
daysArray.push(_days);
}
}
function isDaysAvailable(uint256 _days) external view returns(bool){
for(uint256 i=0;i<daysArray.length;i++){
if(daysArray[i]==_days){
return true;
}
}
return false;
}
function getDaysArray() external view returns(uint256[] memory){
return daysArray;
}
modifier onlyMyContracts() {
require(msg.sender == XIVMainContractAddress || msg.sender==XIVBettingFixedContractAddress || msg.sender== XIVBettingFlexibleContractAddress);
_;
}
fallback() external payable {
}
}
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;
library XIVDatabaseLib{
// deficoin struct for deficoinmappings..
struct DefiCoin{
uint16 oracleType;
string currencySymbol;
bool status;
}
struct TimePeriod{
uint256 _days;
bool status;
}
struct FlexibleInfo{
uint256 id;
uint16 upDownPercentage; //10**2
uint16 riskFactor; //10**2
uint16 rewardFactor; //10**2
bool status;
}
struct FixedInfo{
uint256 id;
uint256 daysCount;// integer value
uint16 upDownPercentage; //10**2
uint16 riskFactor; //10**2
uint16 rewardFactor; //10**2
bool status;
}
struct IndexCoin{
uint16 oracleType;
string currencySymbol;
address contractAddress;
bool status;
uint256 contributionPercentage; //10**2
}
struct BetPriceHistory{
uint256 baseIndexValue;
uint256 actualIndexValue;
}
struct LPLockedInfo{
uint256 lockedTimeStamp;
uint256 amountLocked;
}
struct StakingInfo{
uint256 investmentId;
uint256 stakeAmount;
}
struct IncentiveInfo{
uint256 tillInvestmentId;
uint256 incentiveAmount;
uint256 totalAmountStakedAtIncentiveTime;
}
struct BetInfo{
uint256 id;
uint256 principalAmount;
uint256 amount;
address userAddress;
address contractAddress;
uint256 betType; //
uint256 currentPrice;
uint256 timestamp;
uint256 betTimePeriod;
uint16 checkpointPercent;
uint16 rewardFactor;
uint16 riskFactor;
uint256 adminCommissionFee;
uint16 status; // 0->bet active, 1->bet won, 2->bet lost, 3-> withdraw before result
}
}
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;
import "./XIVDatabaseLib.sol";
interface Token{
function decimals() external view returns(uint256);
function symbol() external view returns(string memory);
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
}
interface OracleWrapper{
function getPrice(string calldata currencySymbol,uint256 oracleType) external view returns (uint256);
}
interface DatabaseContract{
function transferTokens(address contractAddress,address userAddress,uint256 amount) external;
function transferFromTokens(address contractAddress,address fromAddress, address toAddress,uint256 amount) external;
function getTokensStaked(address userAddress) external view returns(uint256);
function updateTokensStaked(address userAddress, uint256 amount) external;
function getTokenStakedAmount() external view returns(uint256);
function updateTokenStakedAmount(uint256 _tokenStakedAmount) external;
function getBetId() external view returns(uint256);
function updateBetId(uint256 _userBetId) external;
function updateBetArray(XIVDatabaseLib.BetInfo memory bObject) external;
function getBetArray() external view returns(XIVDatabaseLib.BetInfo[] memory);
function getFindBetInArrayUsingBetIdMapping(uint256 _betid) external view returns(uint256);
function updateFindBetInArrayUsingBetIdMapping(uint256 _betid, uint256 value) external;
function updateUserStakedAddress(address _address) external;
function updateUserStakedAddress(address[] memory _userStakedAddress) external;
function getUserStakedAddress() external view returns(address[] memory);
function getDefiCoinsFixedMapping(address _betContractAddress,bool isFlashVault) external view returns(XIVDatabaseLib.DefiCoin memory);
function getDefiCoinsFlexibleMapping(address _betContractAddress) external view returns(XIVDatabaseLib.DefiCoin memory);
function getFlexibleDefiCoinArray() external view returns(XIVDatabaseLib.FlexibleInfo[] memory);
function getFlexibleIndexArray() external view returns(XIVDatabaseLib.FlexibleInfo[] memory);
function updateBetArrayIndex(XIVDatabaseLib.BetInfo memory bObject, uint256 index) external;
function updateBetIndexForFixedArray(uint256 _betId, XIVDatabaseLib.IndexCoin memory iCArray) external;
function updateBetBaseIndexValue(uint256 _betBaseIndexValueFixed) external;
function getBetBaseIndexValue() external view returns(uint256);
function updateBetPriceHistoryFixedMapping(uint256 _betId, XIVDatabaseLib.BetPriceHistory memory bPHObj) external;
function updateBetActualIndexValue(uint256 _betActualIndexValueFixed) external;
function getBetActualIndexValue() external view returns(uint256);
function getBetIndexForFixedArray(uint256 _betId) external view returns(XIVDatabaseLib.IndexCoin[] memory);
function getBetPriceHistoryFixedMapping(uint256 _betId) external view returns(XIVDatabaseLib.BetPriceHistory memory);
function getXIVTokenContractAddress() external view returns(address);
function getAllIndexContractAddressArray() external view returns(address[] memory);
function getDefiCoinIndexMapping(address _ContractAddress) external view returns(XIVDatabaseLib.IndexCoin memory);
function updateBetIndexForFlexibleArray(uint256 _betId, XIVDatabaseLib.IndexCoin memory iCArray) external;
function getBetIndexForFlexibleArray(uint256 _betId) external view returns(XIVDatabaseLib.IndexCoin[] memory);
function updateBetPriceHistoryFlexibleMapping(uint256 _betId, XIVDatabaseLib.BetPriceHistory memory bPHObj) external;
function getBetPriceHistoryFlexibleMapping(uint256 _betId) external view returns(XIVDatabaseLib.BetPriceHistory memory);
function getOracleWrapperContractAddress() external view returns(address);
function getPlentyOneDayPercentage() external view returns(uint256);
function getPlentyThreeDayPercentage(uint256 _days) external view returns(uint256);
function getPlentySevenDayPercentage(uint256 _days) external view returns(uint256);
function getBetsAccordingToUserAddress(address userAddress) external view returns(uint256[] memory);
function updateBetAddressesArray(address userAddress, uint256 _betId) external;
function getRewardGeneratedAmount() external view returns(uint256);
function updateRewardGeneratedAmount(uint256 _rewardGeneratedAmount) external;
function addUserAddressUsedForBetting(address userAddress) external;
function getUserAddressUsedForBetting() external view returns(address[] memory);
function getFixedDefiCoinArray() external view returns(XIVDatabaseLib.FixedInfo[] memory);
function getFixedDefiIndexArray() external view returns(XIVDatabaseLib.FixedInfo[] memory);
function getMaxStakeXIVAmount() external view returns(uint256);
function getMinStakeXIVAmount() external view returns(uint256);
function getBetFactorLP() external view returns(uint256);
function updateActualAmountStakedByUser(address userAddress, uint256 amount) external;
function getActualAmountStakedByUser(address userAddress) external view returns(uint256);
function isDaysAvailable(uint256 _days) external view returns(bool);
function updateExistingBetCheckMapping(address _userAddress,uint256 _betType, address _BetContractAddress,bool status) external;
function getExistingBetCheckMapping(address _userAddress,uint256 _betType, address _BetContractAddress) external view returns(bool);
function updateTotalTransactions(uint256 _totalTransactions) external;
function getTotalTransactions() external view returns(uint256);
function getFlexibleDefiCoinTimePeriodArray() external view returns(XIVDatabaseLib.TimePeriod[] memory);
function getFlexibleIndexTimePeriodArray() external view returns(XIVDatabaseLib.TimePeriod[] memory);
function getMinLPvalue() external view returns(uint256);
function getLockingPeriodForLPMapping(address userAddress) external view returns(XIVDatabaseLib.LPLockedInfo memory);
function updateLockingPeriodForLPMapping(address userAddress, uint256 _amountLocked, uint256 _lockedTimeStamp) external;
function getStakingInfoMapping(address userAddress) external view returns(XIVDatabaseLib.StakingInfo[] memory);
function updateStakingInfoMapping(address userAddress, XIVDatabaseLib.StakingInfo memory sInfo) external;
function getInvestmentId() external view returns(uint256);
function updateInvestmentId(uint256 _investmentId) external;
function getSlotExecutionId() external view returns(uint256);
function updateSlotExecutionId(uint256 _slotExecutionId) external;
function getSlotId() external view returns(uint256);
function updateSlotId(uint256 _slotId) external;
function updateIncentiveMapping(uint256 _slotId, XIVDatabaseLib.IncentiveInfo memory iInfo) external;
function getIncentiveMapping(uint256 _slotId) external view returns(XIVDatabaseLib.IncentiveInfo[] memory);
function emitBetDetails(uint256 betId, uint256 status, uint256 betEndTime) external;
function emitLPEvent(uint256 typeOfLP, address userAddress, uint256 amount, uint256 timestamp) external ;
function updateIsStakeMapping(address userAddress,bool isStake) external;
function getIsStakeMapping(address userAddress) external view returns(bool);
}
{
"compilationTarget": {
"XIVDatabase.sol": "XIVDatabase"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 1
},
"remappings": []
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"betId","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"status","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"betEndTime","type":"uint256"}],"name":"BetDetails","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"typeOfLP","type":"uint256"},{"indexed":true,"internalType":"address","name":"userAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LPEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"uint256","name":"_daysCount","type":"uint256"},{"internalType":"uint16","name":"_upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"_riskFactor","type":"uint16"},{"internalType":"uint16","name":"_rewardFactor","type":"uint16"}],"name":"addFixedDefiCoinArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_daysCount","type":"uint256"},{"internalType":"uint16","name":"_upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"_riskFactor","type":"uint16"},{"internalType":"uint16","name":"_rewardFactor","type":"uint16"}],"name":"addFixedDefiIndexArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tdays","type":"uint256"}],"name":"addFlexibleDefiCoinTimePeriodArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tdays","type":"uint256"}],"name":"addFlexibleIndexTimePeriodArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ContractAddress","type":"address"},{"internalType":"string","name":"_currencySymbol","type":"string"},{"internalType":"uint16","name":"_OracleType","type":"uint16"},{"internalType":"bool","name":"_Status","type":"bool"}],"name":"addUpdateForDefiCoinFlexible","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ContractAddress","type":"address"},{"internalType":"string","name":"_currencySymbol","type":"string"},{"internalType":"uint16","name":"_OracleType","type":"uint16"},{"internalType":"bool","name":"_Status","type":"bool"},{"internalType":"bool","name":"isFlashVault","type":"bool"}],"name":"addUpdateForDefiFixedCoin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"contributionPercentage","type":"uint256"}],"internalType":"struct XIVDatabaseLib.IndexCoin[]","name":"tupleCoinArray","type":"tuple[]"}],"name":"addUpdateForIndexCoin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"addUpdatePlentyOneDayPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"addUpdatePlentySevenDayPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"addUpdatePlentyThreeDayPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"addUserAddressUsedForBetting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"_riskFactor","type":"uint16"},{"internalType":"uint16","name":"_rewardFactor","type":"uint16"}],"name":"addflexibleDefiCoinArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"_riskFactor","type":"uint16"},{"internalType":"uint16","name":"_rewardFactor","type":"uint16"}],"name":"addflexibleIndexCoinArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"betId","type":"uint256"},{"internalType":"uint256","name":"status","type":"uint256"},{"internalType":"uint256","name":"betEndTime","type":"uint256"}],"name":"emitBetDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"typeOfLP","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"emitLPEvent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getActualAmountStakedByUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllIndexContractAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetActualIndexValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetArray","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"principalAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"betType","type":"uint256"},{"internalType":"uint256","name":"currentPrice","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"betTimePeriod","type":"uint256"},{"internalType":"uint16","name":"checkpointPercent","type":"uint16"},{"internalType":"uint16","name":"rewardFactor","type":"uint16"},{"internalType":"uint16","name":"riskFactor","type":"uint16"},{"internalType":"uint256","name":"adminCommissionFee","type":"uint256"},{"internalType":"uint16","name":"status","type":"uint16"}],"internalType":"struct XIVDatabaseLib.BetInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetBaseIndexValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetFactorLP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betId","type":"uint256"}],"name":"getBetIndexForFixedArray","outputs":[{"components":[{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"contributionPercentage","type":"uint256"}],"internalType":"struct XIVDatabaseLib.IndexCoin[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betId","type":"uint256"}],"name":"getBetIndexForFlexibleArray","outputs":[{"components":[{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"contributionPercentage","type":"uint256"}],"internalType":"struct XIVDatabaseLib.IndexCoin[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betId","type":"uint256"}],"name":"getBetPriceHistoryFixedMapping","outputs":[{"components":[{"internalType":"uint256","name":"baseIndexValue","type":"uint256"},{"internalType":"uint256","name":"actualIndexValue","type":"uint256"}],"internalType":"struct XIVDatabaseLib.BetPriceHistory","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betId","type":"uint256"}],"name":"getBetPriceHistoryFlexibleMapping","outputs":[{"components":[{"internalType":"uint256","name":"baseIndexValue","type":"uint256"},{"internalType":"uint256","name":"actualIndexValue","type":"uint256"}],"internalType":"struct XIVDatabaseLib.BetPriceHistory","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getBetsAccordingToUserAddress","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDaysArray","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ContractAddress","type":"address"}],"name":"getDefiCoinIndexMapping","outputs":[{"components":[{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"contributionPercentage","type":"uint256"}],"internalType":"struct XIVDatabaseLib.IndexCoin","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isFlashVault","type":"bool"}],"name":"getDefiCoinsFixedContractAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_betContractAddress","type":"address"},{"internalType":"bool","name":"isFlashVault","type":"bool"}],"name":"getDefiCoinsFixedMapping","outputs":[{"components":[{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"bool","name":"status","type":"bool"}],"internalType":"struct XIVDatabaseLib.DefiCoin","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefiCoinsFlexibleContractAddressArray","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_betContractAddress","type":"address"}],"name":"getDefiCoinsFlexibleMapping","outputs":[{"components":[{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"bool","name":"status","type":"bool"}],"internalType":"struct XIVDatabaseLib.DefiCoin","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"uint256","name":"_betType","type":"uint256"},{"internalType":"address","name":"_BetContractAddress","type":"address"}],"name":"getExistingBetCheckMapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betid","type":"uint256"}],"name":"getFindBetInArrayUsingBetIdMapping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFixedDefiCoinArray","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"daysCount","type":"uint256"},{"internalType":"uint16","name":"upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"riskFactor","type":"uint16"},{"internalType":"uint16","name":"rewardFactor","type":"uint16"},{"internalType":"bool","name":"status","type":"bool"}],"internalType":"struct XIVDatabaseLib.FixedInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFixedDefiIndexArray","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"daysCount","type":"uint256"},{"internalType":"uint16","name":"upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"riskFactor","type":"uint16"},{"internalType":"uint16","name":"rewardFactor","type":"uint16"},{"internalType":"bool","name":"status","type":"bool"}],"internalType":"struct XIVDatabaseLib.FixedInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlexibleDefiCoinArray","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint16","name":"upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"riskFactor","type":"uint16"},{"internalType":"uint16","name":"rewardFactor","type":"uint16"},{"internalType":"bool","name":"status","type":"bool"}],"internalType":"struct XIVDatabaseLib.FlexibleInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlexibleDefiCoinTimePeriodArray","outputs":[{"components":[{"internalType":"uint256","name":"_days","type":"uint256"},{"internalType":"bool","name":"status","type":"bool"}],"internalType":"struct XIVDatabaseLib.TimePeriod[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlexibleIndexArray","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint16","name":"upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"riskFactor","type":"uint16"},{"internalType":"uint16","name":"rewardFactor","type":"uint16"},{"internalType":"bool","name":"status","type":"bool"}],"internalType":"struct XIVDatabaseLib.FlexibleInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlexibleIndexTimePeriodArray","outputs":[{"components":[{"internalType":"uint256","name":"_days","type":"uint256"},{"internalType":"bool","name":"status","type":"bool"}],"internalType":"struct XIVDatabaseLib.TimePeriod[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_slotId","type":"uint256"}],"name":"getIncentiveMapping","outputs":[{"components":[{"internalType":"uint256","name":"tillInvestmentId","type":"uint256"},{"internalType":"uint256","name":"incentiveAmount","type":"uint256"},{"internalType":"uint256","name":"totalAmountStakedAtIncentiveTime","type":"uint256"}],"internalType":"struct XIVDatabaseLib.IncentiveInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getInvestmentId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getIsStakeMapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getLockingPeriodForLPMapping","outputs":[{"components":[{"internalType":"uint256","name":"lockedTimeStamp","type":"uint256"},{"internalType":"uint256","name":"amountLocked","type":"uint256"}],"internalType":"struct XIVDatabaseLib.LPLockedInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxStakeXIVAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinLPvalue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinStakeXIVAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleWrapperContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPlentyOneDayPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"getPlentySevenDayPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"getPlentyThreeDayPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardGeneratedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSlotExecutionId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSlotId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getStakingInfoMapping","outputs":[{"components":[{"internalType":"uint256","name":"investmentId","type":"uint256"},{"internalType":"uint256","name":"stakeAmount","type":"uint256"}],"internalType":"struct XIVDatabaseLib.StakingInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenStakedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getTokensStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTransactions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserAddressUsedForBetting","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"pageNo","type":"uint256"},{"internalType":"uint256","name":"pageSize","type":"uint256"}],"name":"getUserBetArray","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"principalAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"betType","type":"uint256"},{"internalType":"uint256","name":"currentPrice","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"betTimePeriod","type":"uint256"},{"internalType":"uint16","name":"checkpointPercent","type":"uint16"},{"internalType":"uint16","name":"rewardFactor","type":"uint16"},{"internalType":"uint16","name":"riskFactor","type":"uint16"},{"internalType":"uint256","name":"adminCommissionFee","type":"uint256"},{"internalType":"uint16","name":"status","type":"uint16"}],"internalType":"struct XIVDatabaseLib.BetInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserBetCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserStakedAddress","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getXIVTokenContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"}],"name":"isDaysAvailable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"fromAddress","type":"address"},{"internalType":"address","name":"toAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFromTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateActualAmountStakedByUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betActualIndexValue","type":"uint256"}],"name":"updateBetActualIndexValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"_betId","type":"uint256"}],"name":"updateBetAddressesArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"principalAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"betType","type":"uint256"},{"internalType":"uint256","name":"currentPrice","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"betTimePeriod","type":"uint256"},{"internalType":"uint16","name":"checkpointPercent","type":"uint16"},{"internalType":"uint16","name":"rewardFactor","type":"uint16"},{"internalType":"uint16","name":"riskFactor","type":"uint16"},{"internalType":"uint256","name":"adminCommissionFee","type":"uint256"},{"internalType":"uint16","name":"status","type":"uint16"}],"internalType":"struct XIVDatabaseLib.BetInfo","name":"bObject","type":"tuple"}],"name":"updateBetArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"principalAmount","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"betType","type":"uint256"},{"internalType":"uint256","name":"currentPrice","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"betTimePeriod","type":"uint256"},{"internalType":"uint16","name":"checkpointPercent","type":"uint16"},{"internalType":"uint16","name":"rewardFactor","type":"uint16"},{"internalType":"uint16","name":"riskFactor","type":"uint16"},{"internalType":"uint256","name":"adminCommissionFee","type":"uint256"},{"internalType":"uint16","name":"status","type":"uint16"}],"internalType":"struct XIVDatabaseLib.BetInfo","name":"bObject","type":"tuple"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"updateBetArrayIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betBaseIndexValue","type":"uint256"}],"name":"updateBetBaseIndexValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betFactorLP","type":"uint256"}],"name":"updateBetFactorLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_userBetId","type":"uint256"}],"name":"updateBetId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betId","type":"uint256"},{"components":[{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"contributionPercentage","type":"uint256"}],"internalType":"struct XIVDatabaseLib.IndexCoin","name":"iCArray","type":"tuple"}],"name":"updateBetIndexForFixedArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betId","type":"uint256"},{"components":[{"internalType":"uint16","name":"oracleType","type":"uint16"},{"internalType":"string","name":"currencySymbol","type":"string"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"},{"internalType":"uint256","name":"contributionPercentage","type":"uint256"}],"internalType":"struct XIVDatabaseLib.IndexCoin","name":"iCArray","type":"tuple"}],"name":"updateBetIndexForFlexibleArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betId","type":"uint256"},{"components":[{"internalType":"uint256","name":"baseIndexValue","type":"uint256"},{"internalType":"uint256","name":"actualIndexValue","type":"uint256"}],"internalType":"struct XIVDatabaseLib.BetPriceHistory","name":"bPHObj","type":"tuple"}],"name":"updateBetPriceHistoryFixedMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betId","type":"uint256"},{"components":[{"internalType":"uint256","name":"baseIndexValue","type":"uint256"},{"internalType":"uint256","name":"actualIndexValue","type":"uint256"}],"internalType":"struct XIVDatabaseLib.BetPriceHistory","name":"bPHObj","type":"tuple"}],"name":"updateBetPriceHistoryFlexibleMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"uint256","name":"_betType","type":"uint256"},{"internalType":"address","name":"_BetContractAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"updateExistingBetCheckMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betid","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"updateFindBetInArrayUsingBetIdMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"_daysCount","type":"uint256"},{"internalType":"uint16","name":"_upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"_riskFactor","type":"uint16"},{"internalType":"uint16","name":"_rewardFactor","type":"uint16"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateFixedDefiCoinArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"_daysCount","type":"uint256"},{"internalType":"uint16","name":"_upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"_riskFactor","type":"uint16"},{"internalType":"uint16","name":"_rewardFactor","type":"uint16"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateFixedDefiIndexArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"_tdays","type":"uint256"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateFlexibleDefiCoinTimePeriodArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"_tdays","type":"uint256"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateFlexibleIndexTimePeriodArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_slotId","type":"uint256"},{"components":[{"internalType":"uint256","name":"tillInvestmentId","type":"uint256"},{"internalType":"uint256","name":"incentiveAmount","type":"uint256"},{"internalType":"uint256","name":"totalAmountStakedAtIncentiveTime","type":"uint256"}],"internalType":"struct XIVDatabaseLib.IncentiveInfo","name":"iInfo","type":"tuple"}],"name":"updateIncentiveMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_investmentId","type":"uint256"}],"name":"updateInvestmentId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"bool","name":"isStake","type":"bool"}],"name":"updateIsStakeMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"_amountLocked","type":"uint256"},{"internalType":"uint256","name":"_lockedTimeStamp","type":"uint256"}],"name":"updateLockingPeriodForLPMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxStakeXIVAmount","type":"uint256"}],"name":"updateMaxStakeXIVAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minLPvalue","type":"uint256"}],"name":"updateMinLPvalue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minStakeXIVAmount","type":"uint256"}],"name":"updateMinStakeXIVAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oracleAddress","type":"address"}],"name":"updateOrcaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardGeneratedAmount","type":"uint256"}],"name":"updateRewardGeneratedAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_slotExecutionId","type":"uint256"}],"name":"updateSlotExecutionId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_slotId","type":"uint256"}],"name":"updateSlotId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"components":[{"internalType":"uint256","name":"investmentId","type":"uint256"},{"internalType":"uint256","name":"stakeAmount","type":"uint256"}],"internalType":"struct XIVDatabaseLib.StakingInfo","name":"sInfo","type":"tuple"}],"name":"updateStakingInfoMapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenStakedAmount","type":"uint256"}],"name":"updateTokenStakedAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateTokensStaked","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalTransactions","type":"uint256"}],"name":"updateTotalTransactions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"updateUserStakedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_userStakedAddress","type":"address[]"}],"name":"updateUserStakedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_XIVBettingFixedContractAddress","type":"address"}],"name":"updateXIVBettingFixedContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_XIVBettingFlexibleContractAddress","type":"address"}],"name":"updateXIVBettingFlexibleContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_XIVMainContractAddress","type":"address"}],"name":"updateXIVMainContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_XIVTokenContractAddress","type":"address"}],"name":"updateXIVTokenContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint16","name":"_upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"_riskFactor","type":"uint16"},{"internalType":"uint16","name":"_rewardFactor","type":"uint16"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateflexibleDefiCoinArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint16","name":"_upDownPercentage","type":"uint16"},{"internalType":"uint16","name":"_riskFactor","type":"uint16"},{"internalType":"uint16","name":"_rewardFactor","type":"uint16"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateflexibleIndexCoinArray","outputs":[],"stateMutability":"nonpayable","type":"function"}]