From 1c942132241dc25c33a0744b1a2a1124a6436b4f Mon Sep 17 00:00:00 2001 From: Zak Date: Tue, 12 Nov 2024 14:23:39 +0000 Subject: [PATCH 1/3] feat: add pool share to staking pool --- src/components/tst-staking/StakingRewards.jsx | 4 + src/components/tst-staking/StakingSummary.jsx | 75 +++++++------------ src/components/vault/merkl/RewardList.jsx | 2 + .../vault/yield/YieldPerformanceModal.jsx | 2 +- src/pages/tst-staking/TstStaking.jsx | 24 +++++- src/pages/vault/VaultMerkl.jsx | 2 + 6 files changed, 58 insertions(+), 51 deletions(-) diff --git a/src/components/tst-staking/StakingRewards.jsx b/src/components/tst-staking/StakingRewards.jsx index 37120af..b851750 100644 --- a/src/components/tst-staking/StakingRewards.jsx +++ b/src/components/tst-staking/StakingRewards.jsx @@ -19,6 +19,8 @@ const StakingRewards = ({ rawStakedSince, collatDaily, priceData, + tstGlobalBalance, + tstGlobalBalanceLoading, }) => { const { erc20Abi } = useErc20AbiStore(); @@ -102,6 +104,8 @@ const StakingRewards = ({ rawStakedSince={rawStakedSince} collatDaily={collatDaily} latestPrices={latestPrices} + tstGlobalBalance={tstGlobalBalance} + tstGlobalBalanceLoading={tstGlobalBalanceLoading} /> { const [open, setOpen] = useState(false); const [shareOpen, setShareOpen] = useState(false); @@ -175,7 +177,15 @@ const StakingSummary = ({ } // formatted amount - const stakedAmount = ethers.formatEther(tstAmount.toString()); + const stakedAmount = ethers.formatUnits(tstAmount.toString(), 18); + + let globalAmount = 0; + + if (tstGlobalBalance) { + globalAmount = ethers.formatUnits(tstGlobalBalance.toString(), 18); + } + + const poolShare = Number((stakedAmount / globalAmount) * 100).toFixed(8); const handleCloseModal = () => { setOpen(false) @@ -220,22 +230,6 @@ const StakingSummary = ({ return since; } - // const calculateSimpleAPY = (stakedAmount, totalRewardsValue, daysStaked) => { - // const dailyEarnings = Number(totalRewardsValue / daysStaked) || 0; - // const annualEarningsPerTST = (dailyEarnings * 365) / Number(stakedAmount) || 0; - // return annualEarningsPerTST * 100; - // } - const calculateSimpleAPY = (stakedAmount, totalRewardsValue, daysStaked) => { - const dailyEarnings = totalRewardsValue || 0; - const annualEarningsPerTST = (dailyEarnings * 365) / Number(stakedAmount) || 0; - return annualEarningsPerTST; - } - - // const calculateSimpleAPY = (totalValueUSD, dailyEarnings) => { - // const apy = Number(dailyEarnings * 365); - // return apy; - // } - const rewardsWithPrices = rewardsData.map(reward => { const useAmount = ethers.formatUnits(reward.amount, reward.decimals); const useRate = ethers.formatUnits(reward.dailyReward, reward.decimals); @@ -267,10 +261,6 @@ const StakingSummary = ({ if (nextTier?.minAmount) { progress = (stakedAmount / nextTier.minAmount) * 100; } - const apyDisplay = calculateSimpleAPY(stakedAmount, totalRateUSD, daysStaked) + '%' || '0%'; - // const apyDisplay = calculateSimpleAPY(totalValueUSD, dailyEarnings).toFixed(8) + '%' || '0%'; - - let stakeRatio = 'TODO.DOTO'; let progressPercentage = `${progress}%`; @@ -306,14 +296,14 @@ const StakingSummary = ({ - {/*
+
- Historical APY + Your Pool Share
-
*/} +
@@ -400,7 +390,7 @@ const StakingSummary = ({ Participate in protocol governance -
+
@@ -411,33 +401,14 @@ const StakingSummary = ({
- {/*
-
- - Historical APY - - - - - - {apyDisplay} - -
-
*/} - {/*
+
Your Pool Share - {stakeRatio} + {tstGlobalBalanceLoading ? ( + + ) : ( + <> + {poolShare || 0}% + + )}
-
*/} +
diff --git a/src/components/vault/merkl/RewardList.jsx b/src/components/vault/merkl/RewardList.jsx index 2c7e25c..0b5a03a 100644 --- a/src/components/vault/merkl/RewardList.jsx +++ b/src/components/vault/merkl/RewardList.jsx @@ -81,6 +81,8 @@ const RewardList = ({ } }); + console.log(123123, {merklBalances}, {merklRewards}) + const hasClaims = merklData.find(item => item?.unclaimed > 0); return ( diff --git a/src/components/vault/yield/YieldPerformanceModal.jsx b/src/components/vault/yield/YieldPerformanceModal.jsx index ec17703..705d3b2 100644 --- a/src/components/vault/yield/YieldPerformanceModal.jsx +++ b/src/components/vault/yield/YieldPerformanceModal.jsx @@ -190,7 +190,7 @@ const YieldPerformanceModal = ({ Current Value - ~${currentUSD?.toFixed(2) || ''} + ${currentUSD?.toFixed(2) || ''}
diff --git a/src/pages/tst-staking/TstStaking.jsx b/src/pages/tst-staking/TstStaking.jsx index 0e2d4c6..1e88577 100644 --- a/src/pages/tst-staking/TstStaking.jsx +++ b/src/pages/tst-staking/TstStaking.jsx @@ -14,6 +14,8 @@ import { } from '@heroicons/react/24/outline'; import { + useTstAddressStore, + useErc20AbiStore, useStakingPoolv3AbiStore, useStakingPoolv3AddressStore, } from "../../store/Store"; @@ -27,16 +29,26 @@ import Typography from "../../components/ui/Typography"; const TstStaking = (props) => { const { stakingPoolv3Abi } = useStakingPoolv3AbiStore(); - const navigate = useNavigate(); + const { erc20Abi } = useErc20AbiStore(); const { arbitrumSepoliaStakingPoolv3Address, arbitrumStakingPoolv3Address, } = useStakingPoolv3AddressStore(); + + const { + arbitrumTstAddress, + arbitrumSepoliaTstAddress, + } = useTstAddressStore(); + const navigate = useNavigate(); const { address } = useAccount(); const chainId = useChainId(); + const tstAddress = chainId === arbitrumSepolia.id ? + arbitrumSepoliaTstAddress : + arbitrumTstAddress; + const stakingPoolv3Address = chainId === arbitrumSepolia.id ? arbitrumSepoliaStakingPoolv3Address @@ -63,11 +75,19 @@ const TstStaking = (props) => { args: [], }); + const { data: tstGlobalBalance, isLoading: tstGlobalBalanceLoading, refetch: refetchTstGlobalBalance } = useReadContract({ + address: tstAddress, + abi: erc20Abi, + functionName: "balanceOf", + args: [stakingPoolv3Address], + }); + useWatchBlockNumber({ onBlockNumber() { refetchPositions(); refetchRewards(); refetchDailyReward(); + refetchTstGlobalBalance(); }, }) @@ -174,6 +194,8 @@ const TstStaking = (props) => { collatDaily={collatDaily} priceData={priceData} priceDataLoading={priceDataLoading} + tstGlobalBalance={tstGlobalBalance} + tstGlobalBalanceLoading={tstGlobalBalanceLoading} /> )} diff --git a/src/pages/vault/VaultMerkl.jsx b/src/pages/vault/VaultMerkl.jsx index 836c766..0ea5ad3 100644 --- a/src/pages/vault/VaultMerkl.jsx +++ b/src/pages/vault/VaultMerkl.jsx @@ -149,6 +149,8 @@ const VaultMerkl = () => { } }; + console.log(1231312313131233, {merklRewards}) + if (vaultsLoading) { return (
From 565f1ba80a3c45902d40f4445d87affbbb07b72e Mon Sep 17 00:00:00 2001 From: Zak Date: Tue, 12 Nov 2024 14:24:04 +0000 Subject: [PATCH 2/3] chore: remove console logs --- src/components/vault/merkl/RewardList.jsx | 2 -- src/pages/vault/VaultMerkl.jsx | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/components/vault/merkl/RewardList.jsx b/src/components/vault/merkl/RewardList.jsx index 0b5a03a..2c7e25c 100644 --- a/src/components/vault/merkl/RewardList.jsx +++ b/src/components/vault/merkl/RewardList.jsx @@ -81,8 +81,6 @@ const RewardList = ({ } }); - console.log(123123, {merklBalances}, {merklRewards}) - const hasClaims = merklData.find(item => item?.unclaimed > 0); return ( diff --git a/src/pages/vault/VaultMerkl.jsx b/src/pages/vault/VaultMerkl.jsx index 0ea5ad3..836c766 100644 --- a/src/pages/vault/VaultMerkl.jsx +++ b/src/pages/vault/VaultMerkl.jsx @@ -149,8 +149,6 @@ const VaultMerkl = () => { } }; - console.log(1231312313131233, {merklRewards}) - if (vaultsLoading) { return (
From b3a0ea84f56abbd36ab06eac59e68642d14b81fe Mon Sep 17 00:00:00 2001 From: Zak Date: Tue, 12 Nov 2024 15:00:43 +0000 Subject: [PATCH 3/3] feat: add merkl historical claim total --- src/components/vault/merkl/RewardItem.jsx | 6 +- src/components/vault/merkl/RewardList.jsx | 55 +++++++++++++++++-- .../vault/yield/YieldClaimModal.jsx | 6 +- .../vault/yield/YieldPerformanceModal.jsx | 2 +- src/components/vault/yield/YieldViewModal.jsx | 2 +- src/pages/vault/VaultHistory.jsx | 12 ++-- src/pages/vault/VaultMerkl.jsx | 8 +-- 7 files changed, 71 insertions(+), 20 deletions(-) diff --git a/src/components/vault/merkl/RewardItem.jsx b/src/components/vault/merkl/RewardItem.jsx index 0563bf7..d90affd 100644 --- a/src/components/vault/merkl/RewardItem.jsx +++ b/src/components/vault/merkl/RewardItem.jsx @@ -64,6 +64,10 @@ const RewardItem = ({ {ethers.formatUnits(balance, decimals)} + + {ethers.formatUnits(claimed, decimals)} + + {ethers.formatUnits(unclaimed, decimals)} @@ -87,7 +91,7 @@ const RewardItem = ({ 'glass-alt-bg w-full hidden h-0' )} > - + <>
) diff --git a/src/pages/vault/VaultMerkl.jsx b/src/pages/vault/VaultMerkl.jsx index 836c766..2793058 100644 --- a/src/pages/vault/VaultMerkl.jsx +++ b/src/pages/vault/VaultMerkl.jsx @@ -60,20 +60,20 @@ const VaultMerkl = () => {