Silent overflow in `TrimmedAmount::shift` could result in rate limiter being bypassed
Within `TrimmedAmount::trim`, there is an explicit check that ensures the scaled amount does not exceed the maximum uint64:\\n```\\n// NOTE: amt after trimming must fit into uint64 (that's the point of\\n// trimming, as Solana only supports uint64 for token amts)\\nif (amountScaled > type(uint64).max) {\\n    revert AmountTooLarge(amt);\\n}\\n```\\n\\nHowever, no such check exists within `TrimmedAmount::shift` which means there is potential for silent overflow when casting to `uint64` here:\\n```\\nfunction shift(\\n    TrimmedAmount memory amount,\\n    uint8 toDecimals\\n) internal pure returns (TrimmedAmount memory) {\\n    uint8 actualToDecimals = minUint8(TRIMMED_DECIMALS, toDecimals);\\n    return TrimmedAmount(\\n        uint64(scale(amount.amount, amount.decimals, actualToDecimals)), actualToDecimals\\n    );\\n}\\n```\\n
Explicitly check the scaled amount in `TrimmedAmount::shift` does not exceed the maximum `uint64`.
A silent overflow in `TrimmedAmount::shift` could result in the rate limiter being bypassed, considering its usage in `NttManager::_transferEntryPoint`. Given the high impact and reasonable likelihood of this issue occurring, it is classified a MEDIUM severity finding.
```\\n// NOTE: amt after trimming must fit into uint64 (that's the point of\\n// trimming, as Solana only supports uint64 for token amts)\\nif (amountScaled > type(uint64).max) {\\n    revert AmountTooLarge(amt);\\n}\\n```\\n