Unable to transfer fee reserve assets to treasury
Transferring fee reserve assets to the treasury manager contract will result in a revert, leading to a loss of rewards for NOTE stakers.\\n```\\nFile: TreasuryAction.sol\\n    /// @notice redeems and transfers tokens to the treasury manager contract\\n    function _redeemAndTransfer(uint16 currencyId, int256 primeCashRedeemAmount) private returns (uint256) {\\n        PrimeRate memory primeRate = PrimeRateLib.buildPrimeRateStateful(currencyId);\\n        int256 actualTransferExternal = TokenHandler.withdrawPrimeCash(\\n            treasuryManagerContract,\\n            currencyId,\\n            primeCashRedeemAmount.neg(),\\n            primeRate,\\n            true // if ETH, transfers it as WETH\\n        );\\n\\n        require(actualTransferExternal > 0);\\n        return uint256(actualTransferExternal);\\n    }\\n```\\n\\nThe value returned by the `TokenHandler.withdrawPrimeCash` function is always less than or equal to zero. Thus, the condition `actualTransferExternal > 0` will always be false, and the `_redeemAndTransfer` function will always revert.\\nThe `transferReserveToTreasury` function depends on `_redeemAndTransfer` function. Thus, it is not possible to transfer any asset to the treasury manager contract.
Negate the value returned by the `TokenHandler.withdrawPrimeCash` function.\\n```\\n        int256 actualTransferExternal = TokenHandler.withdrawPrimeCash(\\n            treasuryManagerContract,\\n            currencyId,\\n            primeCashRedeemAmount.neg(),\\n            primeRate,\\n            true // if ETH, transfers it as WETH\\n// Remove the line below\\n       );\\n// Add the line below\\n       ).neg();\\n```\\n
The fee collected by Notional is stored in the Fee Reserve. The fee reserve assets will be transferred to Notional's Treasury to be invested into the sNOTE pool. Without the ability to do so, the NOTE stakers will not receive their rewards.
```\\nFile: TreasuryAction.sol\\n    /// @notice redeems and transfers tokens to the treasury manager contract\\n    function _redeemAndTransfer(uint16 currencyId, int256 primeCashRedeemAmount) private returns (uint256) {\\n        PrimeRate memory primeRate = PrimeRateLib.buildPrimeRateStateful(currencyId);\\n        int256 actualTransferExternal = TokenHandler.withdrawPrimeCash(\\n            treasuryManagerContract,\\n            currencyId,\\n            primeCashRedeemAmount.neg(),\\n            primeRate,\\n            true // if ETH, transfers it as WETH\\n        );\\n\\n        require(actualTransferExternal > 0);\\n        return uint256(actualTransferExternal);\\n    }\\n```\\n