deposit - remember deposit and based on that calculate all info for giving rewards
reduceStakeOrUnstake - remember that stake was used to pay something or it was unstaked
withdrawRewards - claim collected rewards for user
pragmasolidity 0.6.12;import"ISDK.sol";contract ExampleContract {addresspublic farmAddress;functionsetFarmAddress(address_farmAddress ) externalonlyOnwer { require(_farmAddress !=address(0x0)); farmAddress = _farmAddress; }functiondeposit()externalonlyOnwer {// If warmup == 0 => depositISDK(farmAddress).deposit(msg.sender, amount);// If warmup != 0 makeDepoistRequest + finaliseDepositISDK(farmAddress).makeDepositRequest(msg.sender, amount);// After warmup has passedISDK(farmAddress).finaliseDeposit(_user, stakeId); }functionreduceStakeOrUnstake()externalonlyOwner {// IF Example Contract is storring stake amount in multiple stakesISDK(farmAddress).noticeReducedStake( msg.sender, amount, stakeID );// IF Example Contract is just adding stake amount to one balance ISDK(farmAddress).noticeReducedStakeWithoutStakeId( msg.sender, amount, stakeID ); }functionwithdrawRewards()externalonlyOwner {ISDK(farmAddress).withdrawRewards(msg.sender); }}