From 93e9e5aab4e7dba24a23b768ce70baa59dbf3b56 Mon Sep 17 00:00:00 2001 From: Danny Delott Date: Thu, 13 Feb 2025 22:12:27 -0800 Subject: [PATCH 1/2] Add non ideal state --- .../src/ui/markets/PoolsList/PoolsList.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/hyperdrive-trading/src/ui/markets/PoolsList/PoolsList.tsx b/apps/hyperdrive-trading/src/ui/markets/PoolsList/PoolsList.tsx index c89ded0db..af49f7863 100644 --- a/apps/hyperdrive-trading/src/ui/markets/PoolsList/PoolsList.tsx +++ b/apps/hyperdrive-trading/src/ui/markets/PoolsList/PoolsList.tsx @@ -225,7 +225,12 @@ export function PoolsList(): ReactElement { )} - ) : null} + ) : ( + + )} ); From b8e3bf502ce0919c391d2d5aeb17e4afaee21a0b Mon Sep 17 00:00:00 2001 From: Danny Delott Date: Thu, 13 Feb 2025 23:26:43 -0800 Subject: [PATCH 2/2] Fix morpho rewards resolver --- .../src/rewards/resolvers/morpho.ts | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/hyperdrive-appconfig/src/rewards/resolvers/morpho.ts b/packages/hyperdrive-appconfig/src/rewards/resolvers/morpho.ts index 2b5b8b3eb..7d368af8b 100644 --- a/packages/hyperdrive-appconfig/src/rewards/resolvers/morpho.ts +++ b/packages/hyperdrive-appconfig/src/rewards/resolvers/morpho.ts @@ -324,11 +324,17 @@ function parseAllocationRewards({ // Calculate "Reward rates" (like APR) for tokens that have monetary // value, based on the vault's allocated assets. if (reward.supplyApr) { + const vaultAdjustedRewardRate = percentOfVaultAllocatedToMarket.mul( + // The supplyAPR is provided as a javascript number from the + // Morpho endpoint, which could end up having more than 18 numbers + // after the decimal point. Since fixed=-point-wasm doesn't like + // that, we must make sure to truncate the supplyApr before using + // it. + parseFixed(truncateTo18Decimals(reward.supplyApr)), + ); return { reward, - vaultAdjustedRewardRate: percentOfVaultAllocatedToMarket.mul( - parseFixed(reward.supplyApr), - ), + vaultAdjustedRewardRate, }; } @@ -429,3 +435,11 @@ function parseAllocationRewards({ return [...transferableTokenRewards, ...nonTransferableTokenRewards]; } + +/** + * Truncates a number to no more than 18 decimal places after the decimal point. + * This prevents fixed point wasm errors, "Exponent 18 is too small for I256" + */ +function truncateTo18Decimals(num: number) { + return Math.floor(num * 1e18) / 1e18; +}