In this contracts a user can stake for 3 months, 6 months, 1 year and 3 year. They will be able to claim the reward after the deposite amount's time period is over.
The tokens will be in the pool. There is a functions that allows to send bsck the tokens to the owner address. Once The allocated reward is not sufficient the user will not be able to stake. The remaining award will be shown at the interface.