contract IERC20 rewardsToken
contract IERC20 stakingToken
uint256 rewardsDuration
uint256 periodFinish
uint256 rewardRate
uint256 lastUpdateTime
uint256 rewardPerTokenStored
mapping(address => uint256) userRewardPerTokenPaid
mapping(address => uint256) rewards
constructor(address _owner, contract IERC20 _rewardsToken, contract IERC20 _stakingToken, uint256 _rewardsDuration) public
function totalSupply() external view returns (uint256)
function balanceOf(address account) external view returns (uint256)
function lastTimeRewardApplicable() public view returns (uint256)
function rewardPerToken() public view returns (uint256)
function earned(address account) public view returns (uint256)
function getRewardForDuration() external view returns (uint256)
function stakeWithPermit(uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external
function stake(uint256 amount) external
function withdraw(uint256 amount) public
function getReward() public
function exit() external
function notifyRewardAmount(uint256 reward) external
modifier updateReward(address account)
event RewardAdded(uint256 reward)
event Staked(address user, uint256 amount)
event Withdrawn(address user, uint256 amount)
event RewardPaid(address user, uint256 reward)