```\nFile: AuraStakingMixin.sol\n    function claimRewardTokens() external returns (uint256[] memory claimedBalances) {\n        uint16 feePercentage = BalancerVaultStorage.getStrategyVaultSettings().feePercentage;\n        IERC20[] memory rewardTokens = _rewardTokens();\n\n        uint256 numRewardTokens = rewardTokens.length;\n\n        claimedBalances = new uint256[](numRewardTokens);\n        for (uint256 i; i < numRewardTokens; i++) {\n            claimedBalances[i] = rewardTokens[i].balanceOf(address(this));\n        }\n\n        AURA_REWARD_POOL.getReward(address(this), true);\n        for (uint256 i; i < numRewardTokens; i++) {\n            claimedBalances[i] = rewardTokens[i].balanceOf(address(this)) - claimedBalances[i];\n\n            if (claimedBalances[i] > 0 && feePercentage != 0 && FEE_RECEIVER != address(0)) {\n                uint256 feeAmount = claimedBalances[i] * feePercentage / BalancerConstants.VAULT_PERCENT_BASIS;\n                rewardTokens[i].checkTransfer(FEE_RECEIVER, feeAmount);\n                claimedBalances[i] -= feeAmount;\n            }\n        }\n\n        emit BalancerEvents.ClaimedRewardTokens(rewardTokens, claimedBalances);\n    }\n```\n