contract Setters is State, Getters {
    using SafeMath for uint256;

    /**
     * Global
     */

    function pause() internal {
        _state.paused = true;
    }

    /**
     * Account
     */

    function incrementBalanceOfBonded(address account, uint256 amount) internal {
        _state.accounts[account].bonded = _state.accounts[account].bonded.add(amount);
        _state.balance.bonded = _state.balance.bonded.add(amount);
    }

    function decrementBalanceOfBonded(
        address account,
        uint256 amount,
        string memory reason
    ) internal {
        _state.accounts[account].bonded = _state.accounts[account].bonded.sub(amount, reason);
        _state.balance.bonded = _state.balance.bonded.sub(amount, reason);
    }

    function incrementBalanceOfStaged(address account, uint256 amount) internal {
        _state.accounts[account].staged = _state.accounts[account].staged.add(amount);
        _state.balance.staged = _state.balance.staged.add(amount);
    }

    function decrementBalanceOfStaged(
        address account,
        uint256 amount,
        string memory reason
    ) internal {
        _state.accounts[account].staged = _state.accounts[account].staged.sub(amount, reason);
        _state.balance.staged = _state.balance.staged.sub(amount, reason);
    }

    function incrementBalanceOfClaimable1(address account, uint256 amount) internal {
        _state.accounts[account].claimable1 = _state.accounts[account].claimable1.add(amount);
        _state.balance.claimable1 = _state.balance.claimable1.add(amount);
    }

    function incrementBalanceOfClaimable2(address account, uint256 amount) internal {
        _state.accounts[account].claimable2 = _state.accounts[account].claimable2.add(amount);
        _state.balance.claimable2 = _state.balance.claimable2.add(amount);
    }

    function decrementBalanceOfClaimable1(
        address account,
        uint256 amount,
        string memory reason
    ) internal {
        _state.accounts[account].claimable1 = _state.accounts[account].claimable1.sub(amount, reason);
        _state.balance.claimable1 = _state.balance.claimable1.sub(amount, reason);
    }

    function decrementBalanceOfClaimable2(
        address account,
        uint256 amount,
        string memory reason
    ) internal {
        _state.accounts[account].claimable2 = _state.accounts[account].claimable2.sub(amount, reason);
        _state.balance.claimable2 = _state.balance.claimable2.sub(amount, reason);
    }

    function incrementBalanceOfPhantom1(address account, uint256 amount) internal {
        _state.accounts[account].phantom1 = _state.accounts[account].phantom1.add(amount);
        _state.balance.phantom1 = _state.balance.phantom1.add(amount);
    }

    function incrementBalanceOfPhantom2(address account, uint256 amount) internal {
        _state.accounts[account].phantom2 = _state.accounts[account].phantom2.add(amount);
        _state.balance.phantom2 = _state.balance.phantom2.add(amount);
    }

    function decrementBalanceOfPhantom1(
        address account,
        uint256 amount,
        string memory reason
    ) internal {
        _state.accounts[account].phantom1 = _state.accounts[account].phantom1.sub(amount, reason);
        _state.balance.phantom1 = _state.balance.phantom1.sub(amount, reason);
    }

    function decrementBalanceOfPhantom2(
        address account,
        uint256 amount,
        string memory reason
    ) internal {
        _state.accounts[account].phantom2 = _state.accounts[account].phantom2.sub(amount, reason);
        _state.balance.phantom2 = _state.balance.phantom2.sub(amount, reason);
    }

    function unfreeze(address account) internal {
        _state.accounts[account].fluidUntil = epoch().add(Constants.getPoolExitLockupEpochs());
    }
}
function pause() internal {
    _state.paused = true;
}

/**
 * Global
 */