[
{
"inputs": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "dateStart",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dateEnd",
"type": "uint256"
},
{
"components": [
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxTokensBeStaked",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "availableTokensBeStaked",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardsPool",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardsWithdrawn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mycFeesPool",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxStakingAmount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isSignatureRequired",
"type": "bool"
}
],
"internalType": "struct StakingPlan[]",
"name": "plans",
"type": "tuple[]"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AlreadyRescued",
"type": "error"
},
{
"inputs": [],
"name": "AmountCantBeZero",
"type": "error"
},
{
"inputs": [],
"name": "DateInFuture",
"type": "error"
},
{
"inputs": [],
"name": "DateInPast",
"type": "error"
},
{
"inputs": [],
"name": "EndOfStakeNotReached",
"type": "error"
},
{
"inputs": [],
"name": "MaxStakingAmountExceed",
"type": "error"
},
{
"inputs": [],
"name": "NoSlotsAvailable",
"type": "error"
},
{
"inputs": [],
"name": "NoTokensAvailableToStake",
"type": "error"
},
{
"inputs": [],
"name": "NothingToWithdraw",
"type": "error"
},
{
"inputs": [],
"name": "OnlyFactory",
"type": "error"
},
{
"inputs": [],
"name": "StakeAlreadyExists",
"type": "error"
},
{
"inputs": [],
"name": "StakeNotFound",
"type": "error"
},
{
"inputs": [],
"name": "StakingPeriodNotEnded",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "stakingPlanId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "unstakeDate",
"type": "uint256"
}
],
"name": "Staked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "stakingPlanId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "unstakeDate",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
}
],
"name": "StakedWithSignature",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "stakingPlanId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "reward",
"type": "uint256"
}
],
"name": "Unstaked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "stakingPlanId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "staked",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "withdrawn",
"type": "uint256"
}
],
"name": "UnstakedWithPenalty",
"type": "event"
},
{
"inputs": [],
"name": "claimUnusedRewards",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "planId",
"type": "uint256"
}
],
"name": "getPlan",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxTokensBeStaked",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "availableTokensBeStaked",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardsPool",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardsWithdrawn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mycFeesPool",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxStakingAmount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isSignatureRequired",
"type": "bool"
}
],
"internalType": "struct StakingPlan",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPlans",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxTokensBeStaked",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "availableTokensBeStaked",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardsPool",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rewardsWithdrawn",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mycFeesPool",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxStakingAmount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "isSignatureRequired",
"type": "bool"
}
],
"internalType": "struct StakingPlan[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPlansLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "isNonceUsed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "stakingPlanId",
"type": "uint256"
}
],
"name": "stake",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"internalType": "uint256",
"name": "planId",
"type": "uint256"
}
],
"name": "stakeInfoOf",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "stakeDate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct UserStake",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "staker",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "stakingPlanId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "stakeWithSignature",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "staker",
"type": "address"
}
],
"name": "stakesInfoOf",
"outputs": [
{
"components": [
{
"internalType": "uint256",
"name": "stakeDate",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"internalType": "struct UserStake[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "stakingPool",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "dateStart",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dateEnd",
"type": "uint256"
},
{
"internalType": "bool",
"name": "rescued",
"type": "bool"
},
{
"internalType": "uint256",
"name": "mycFeesWithdrawn",
"type": "uint256"
}
],
"internalType": "struct StakingPool",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "stakingPlanId",
"type": "uint256"
}
],
"name": "unstake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "stakingPlanId",
"type": "uint256"
}
],
"name": "unstakeWithPenalty",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]