interface StakingContract {
    function transferOwnership(address newOwner) external;
    function burn(address account, uint256 amount) external;
    function updateHoldersDay(bool _enableHoldersDay) external;
    
    // Self-explanatory functions to update several configuration variables
    
    function updateTokenAddress(address newToken) external;
    
    function updateCalculator(address calc) external;
    
    function updateUseExternalCalcIterative(bool _useExternalCalcIterative) external;
    
    
    function updateInflationAdjustmentFactor(uint256 _inflationAdjustmentFactor) external;
    
    function updateStreak(bool negative, uint _streak) external;
    
    function updateMinStakeDurationDays(uint8 _minStakeDurationDays) external;
    
    function updateMinStakes(uint _minStake) external;
    function updateMinPercentIncrease(uint8 _minIncrease) external;
    function updateEnableBurns(bool _enabledBurns) external;
    
    function updateWhitelist(address addr, string calldata reason, bool remove) external;
    
    function updateUniWhitelist(address addr, string calldata reason, bool remove) external;
    
    function updateBlacklist(address addr, uint256 fee, bool remove) external;
    
    function updateUniswapPair(address addr) external;
    
    function updateEnableUniswapSellBurns(bool _enableDirectSellBurns) external;
    
    function updateUniswapSellBurnPercent(uint8 _sellerBurnPercent) external;
    
    function updateFreeze(bool _enableFreeze) external;
    
    function updateNextStakingContract(address nextContract) external;
    
    function updateLiquidityStakingContract(address _liquidityStakingContract) external;
    
    function updateOracle(address _oracle) external;
    
    function updatePreviousStakingContract(address previousContract) external;

    function updateTransferBurnFee(uint _transferBurnFee) external;

    function updateMaxStreak(uint _maxStreak) external;

    function updateMaxStakingDays(uint _maxStakingDays) external;
    function updateHoldersDayRewardDenominator(uint _holdersDayRewardDenominator) external;

    function updateIncreaseTransferFees(bool _increaseTransferFees) external;
    function updateCheckPreviousContractWhitelist(bool _checkPreviousStakingContractWhitelist) external;
    
    function removeLatestUpdate() external;
    function resetStakeTimeDebug(address account, uint startTimestamp, uint lastTimestamp, bool migrated) external;
    
}
function updateTokenAddress(address newToken) external;

// Self-explanatory functions to update several configuration variables