diff --git a/apps/hyperdrive-trading/src/ui/portfolio/rewards/RewardsTableDesktop.tsx b/apps/hyperdrive-trading/src/ui/portfolio/rewards/RewardsTableDesktop.tsx index 19aad9c21..5d0256fd6 100644 --- a/apps/hyperdrive-trading/src/ui/portfolio/rewards/RewardsTableDesktop.tsx +++ b/apps/hyperdrive-trading/src/ui/portfolio/rewards/RewardsTableDesktop.tsx @@ -247,6 +247,7 @@ function ClaimRewardsButton({ rewardTokenAddress: reward.rewardTokenAddress, claimContractAddress: reward.claimContractAddress, account, + chainId: reward.chainId, }); const appConfig = useAppConfigForConnectedChain({ strict: false }); @@ -273,7 +274,7 @@ function ClaimRewardsButton({ disabled className="daisy-btn daisy-btn-disabled daisy-btn-ghost rounded-full bg-gray-600 font-inter" > - Claim Reward + Claim Rewards ); } @@ -300,7 +301,7 @@ function ClaimRewardsButton({ )} onClick={claim} > - Claim Reward + Claim Rewards ); } @@ -323,6 +324,7 @@ function ClaimableAmount({ rewardTokenAddress: reward.rewardTokenAddress, claimContractAddress: reward.claimContractAddress, account, + chainId: reward.chainId, }); return ( diff --git a/apps/hyperdrive-trading/src/ui/rewards/hooks/useClaimableRewards.ts b/apps/hyperdrive-trading/src/ui/rewards/hooks/useClaimableRewards.ts index e74b7f24e..ce2dcfb72 100644 --- a/apps/hyperdrive-trading/src/ui/rewards/hooks/useClaimableRewards.ts +++ b/apps/hyperdrive-trading/src/ui/rewards/hooks/useClaimableRewards.ts @@ -2,12 +2,13 @@ import { parseFixed } from "@delvtech/fixed-point-wasm"; import { MerklApi } from "@merkl/api"; import { useQuery } from "@tanstack/react-query"; import { makeQueryKey2 } from "src/base/makeQueryKey"; +import { rewardsFork } from "src/chains/rewardsFork"; import { HyperdriveRewardsApi, Reward, } from "src/rewards/generated/HyperdriveRewardsApi"; import { Address, Hash } from "viem"; -import { base, gnosis, linea, mainnet } from "viem/chains"; +import { gnosis } from "viem/chains"; import { usePublicClient } from "wagmi"; export function useClaimableRewards({ @@ -58,6 +59,7 @@ async function fetchHyperdriveRewardApi(account: Address): Promise { // TODO: Remove this once claimbableAmount is no longer formatted server side return response.rewards.map((r) => ({ ...r, + chainId: rewardsFork.id, claimableAmount: parseFixed(r.claimableAmount).bigint.toString(), })); } catch (error: any) { @@ -84,14 +86,14 @@ const merkl = MerklApi("https://api.merkl.xyz").v4; * See: https://app.merkl.xyz/status */ const MerklDistributorsByChain: Record = { - [mainnet.id]: "0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae", [gnosis.id]: "0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae", - [base.id]: "0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae", - [linea.id]: "0x3Ef3D8bA38EBe18DB133cEc108f4D14CE00Dd9Ae", }; async function fetchMileRewards(account: Address): Promise { - const chainIds = [mainnet.id, gnosis.id, linea.id, base.id]; + // Merkl.xyz accumulates Miles across all chains and hyperdrives onto Gnosis + // chain only. This makes things easier for turning them into HD later if + // they're all just on one chain. + const chainIds = [gnosis.id]; // Request miles earned on each chain. We have to call this once per chain // since the merkl api is buggy, despite accepting an array of chain ids. If diff --git a/apps/hyperdrive-trading/src/ui/rewards/hooks/useClaimedRewards.ts b/apps/hyperdrive-trading/src/ui/rewards/hooks/useClaimedRewards.ts index 9d791e800..2fa768b1b 100644 --- a/apps/hyperdrive-trading/src/ui/rewards/hooks/useClaimedRewards.ts +++ b/apps/hyperdrive-trading/src/ui/rewards/hooks/useClaimedRewards.ts @@ -5,10 +5,12 @@ import { useReadContract } from "wagmi"; export function useClaimedRewards({ rewardTokenAddress, claimContractAddress, + chainId, account, }: { rewardTokenAddress: Address | undefined; claimContractAddress: Address | undefined; + chainId: number | undefined; account: Address | undefined; }): { claimed: bigint | undefined; status: "loading" | "error" | "success" } { const enabled = !!rewardTokenAddress && !!account; @@ -16,6 +18,7 @@ export function useClaimedRewards({ address: claimContractAddress, abi: hyperdriveRewardsAbi, functionName: "claimed", + chainId, args: enabled ? [account, rewardTokenAddress] : undefined, query: { enabled, diff --git a/packages/hyperdrive-appconfig/src/rewards/resolvers/hypervueMiles.ts b/packages/hyperdrive-appconfig/src/rewards/resolvers/hypervueMiles.ts index 324d31bb5..47cbdceb4 100644 --- a/packages/hyperdrive-appconfig/src/rewards/resolvers/hypervueMiles.ts +++ b/packages/hyperdrive-appconfig/src/rewards/resolvers/hypervueMiles.ts @@ -9,7 +9,7 @@ export const fetchHypervueMilesRewards: RewardResolver = async () => { { type: "info", iconUrl: HyperVueMilesIconUrl, - message: "Earns 1 Mile per day for every $1 supplied", + message: "Earns 1 Mile per year for every $1 supplied", }, ]; };