This is the contract with which the user can stake, unstake, claim rewards, see their reward balance and their staked amount. The Staking Manager is initialized by providing the values of a minimum staking period, minimum staking amount, max token allotment for rewards, reward fee percentage and the duration of the staking program, along with the addresses from the RebaseEngine, Staking Database, Network Demand and Distribution Pool.