@moonwell-fi/moonwell-sdk 0.13.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/_cjs/actions/core/markets/common.js +11 -4
  3. package/_cjs/actions/core/markets/common.js.map +1 -1
  4. package/_cjs/actions/core/user-rewards/common.js +6 -5
  5. package/_cjs/actions/core/user-rewards/common.js.map +1 -1
  6. package/_cjs/actions/governance/getStakingInfo.js +113 -31
  7. package/_cjs/actions/governance/getStakingInfo.js.map +1 -1
  8. package/_cjs/actions/governance/getUserStakingInfo.js +106 -18
  9. package/_cjs/actions/governance/getUserStakingInfo.js.map +1 -1
  10. package/_cjs/actions/governance/getWellPrice.js +26 -0
  11. package/_cjs/actions/governance/getWellPrice.js.map +1 -0
  12. package/_cjs/actions/morpho/user-rewards/common.js +10 -3
  13. package/_cjs/actions/morpho/user-rewards/common.js.map +1 -1
  14. package/_cjs/actions/morpho/vaults/common.js +19 -6
  15. package/_cjs/actions/morpho/vaults/common.js.map +1 -1
  16. package/_cjs/errors/version.js +1 -1
  17. package/_esm/actions/core/markets/common.js +11 -4
  18. package/_esm/actions/core/markets/common.js.map +1 -1
  19. package/_esm/actions/core/user-rewards/common.js +6 -5
  20. package/_esm/actions/core/user-rewards/common.js.map +1 -1
  21. package/_esm/actions/governance/getStakingInfo.js +136 -32
  22. package/_esm/actions/governance/getStakingInfo.js.map +1 -1
  23. package/_esm/actions/governance/getUserStakingInfo.js +120 -19
  24. package/_esm/actions/governance/getUserStakingInfo.js.map +1 -1
  25. package/_esm/actions/governance/getWellPrice.js +50 -0
  26. package/_esm/actions/governance/getWellPrice.js.map +1 -0
  27. package/_esm/actions/morpho/user-rewards/common.js +10 -3
  28. package/_esm/actions/morpho/user-rewards/common.js.map +1 -1
  29. package/_esm/actions/morpho/vaults/common.js +19 -6
  30. package/_esm/actions/morpho/vaults/common.js.map +1 -1
  31. package/_esm/errors/version.js +1 -1
  32. package/_types/actions/core/markets/common.d.ts.map +1 -1
  33. package/_types/actions/core/user-rewards/common.d.ts.map +1 -1
  34. package/_types/actions/governance/getStakingInfo.d.ts +1 -1
  35. package/_types/actions/governance/getStakingInfo.d.ts.map +1 -1
  36. package/_types/actions/governance/getUserStakingInfo.d.ts.map +1 -1
  37. package/_types/actions/governance/getWellPrice.d.ts +29 -0
  38. package/_types/actions/governance/getWellPrice.d.ts.map +1 -0
  39. package/_types/actions/morpho/user-rewards/common.d.ts.map +1 -1
  40. package/_types/actions/morpho/vaults/common.d.ts.map +1 -1
  41. package/_types/errors/version.d.ts +1 -1
  42. package/actions/core/markets/common.ts +11 -6
  43. package/actions/core/user-rewards/common.ts +6 -5
  44. package/actions/governance/getStakingInfo.ts +195 -87
  45. package/actions/governance/getUserStakingInfo.ts +168 -54
  46. package/actions/governance/getWellPrice.ts +66 -0
  47. package/actions/morpho/user-rewards/common.ts +10 -3
  48. package/actions/morpho/vaults/common.ts +19 -12
  49. package/errors/version.ts +1 -1
  50. package/package.json +1 -1
@@ -1,64 +1,168 @@
1
1
  import { base } from "viem/chains";
2
2
  import { Amount, DAYS_PER_YEAR, SECONDS_PER_DAY, getEnvironmentsFromArgs, } from "../../common/index.js";
3
- import { publicEnvironments, } from "../../environments/index.js";
4
3
  import { getMerklStakingApr } from "./common.js";
4
+ import { getGovernanceTokenPriceFor } from "./getWellPrice.js";
5
+ const isStakingInfoStruct = (value) => {
6
+ if (typeof value !== "object" || value === null)
7
+ return false;
8
+ const v = value;
9
+ return (typeof v.cooldown === "bigint" &&
10
+ typeof v.distributionEnd === "bigint" &&
11
+ typeof v.emissionPerSecond === "bigint" &&
12
+ typeof v.totalSupply === "bigint" &&
13
+ typeof v.unstakeWindow === "bigint");
14
+ };
15
+ /**
16
+ * Reads the staking fields directly from the stkWELL token contract when the
17
+ * core views' getStakingInfo() is unavailable or returns zeroed data
18
+ * (e.g. reverts on Moonbeam). Reads each field independently so a single
19
+ * transient RPC failure doesn't erase the whole fallback.
20
+ *
21
+ * The `assets` mapping is keyed by the stkWELL contract's own address — that's
22
+ * the Aave-fork convention (`address(this)` in StakedAave._initialize), not
23
+ * the underlying staked token. Verified on Moonbeam: assets(stkWELL) returns
24
+ * non-zero emissionPerSecond; assets(WELL) returns zero.
25
+ */
26
+ async function getStakingInfoFromStkWell(environment) {
27
+ const stakingToken = environment.contracts.stakingToken;
28
+ const stakingTokenKey = environment.config.contracts.stakingToken;
29
+ const tokens = environment.config.tokens;
30
+ const stakingTokenAddress = stakingTokenKey
31
+ ? tokens[stakingTokenKey]?.address
32
+ : undefined;
33
+ if (!stakingToken || !stakingTokenAddress) {
34
+ environment.onError?.(new Error("getStakingInfoFromStkWell: missing stkWELL config"), { source: "staking-fallback", chainId: environment.chainId });
35
+ return undefined;
36
+ }
37
+ const [cooldownR, unstakeWindowR, distributionEndR, totalSupplyR, assetDataR,] = await Promise.allSettled([
38
+ stakingToken.read.COOLDOWN_SECONDS(),
39
+ stakingToken.read.UNSTAKE_WINDOW(),
40
+ stakingToken.read.DISTRIBUTION_END(),
41
+ stakingToken.read.totalSupply(),
42
+ stakingToken.read.assets([stakingTokenAddress]),
43
+ ]);
44
+ // Surface every rejection so operators don't have to guess which read failed.
45
+ for (const r of [
46
+ cooldownR,
47
+ unstakeWindowR,
48
+ distributionEndR,
49
+ totalSupplyR,
50
+ assetDataR,
51
+ ]) {
52
+ if (r.status === "rejected") {
53
+ environment.onError?.(r.reason, {
54
+ source: "staking-fallback",
55
+ chainId: environment.chainId,
56
+ });
57
+ }
58
+ }
59
+ // totalSupply is load-bearing for APR; if its read failed (vs. legitimately
60
+ // returning 0n on an empty new chain) we can't produce a sensible struct.
61
+ if (totalSupplyR.status === "rejected")
62
+ return undefined;
63
+ const assetData = assetDataR.status === "fulfilled" ? assetDataR.value : undefined;
64
+ // viem returns multi-output reads as a tuple (Readonly<[bigint, bigint, bigint]>)
65
+ // even when the ABI names the outputs.
66
+ const emissionPerSecond = assetData ? assetData[0] : 0n;
67
+ return {
68
+ cooldown: cooldownR.status === "fulfilled" ? cooldownR.value : 0n,
69
+ unstakeWindow: unstakeWindowR.status === "fulfilled" ? unstakeWindowR.value : 0n,
70
+ distributionEnd: distributionEndR.status === "fulfilled" ? distributionEndR.value : 0n,
71
+ totalSupply: totalSupplyR.value,
72
+ emissionPerSecond,
73
+ };
74
+ }
5
75
  export async function getStakingInfo(client, args) {
6
76
  const environments = getEnvironmentsFromArgs(client, args);
7
77
  const envsWithStaking = environments.filter((env) => env.config.contracts.stakingToken);
78
+ const baseEnvironment = client.environments?.base;
8
79
  const envStakingInfoSettlements = await Promise.allSettled(envsWithStaking.map(async (environment) => {
9
- const homeEnvironment = Object.values(publicEnvironments).find((e) => e.custom?.governance?.chainIds?.includes(environment.chainId)) || environment;
10
80
  const isBase = environment.chainId === base.id;
11
- const settlements = await Promise.allSettled([
81
+ const [viewsStakingResult, historicalStakingResult, priceResult] = await Promise.allSettled([
12
82
  environment.contracts.views?.read.getStakingInfo(),
13
- homeEnvironment.contracts.views?.read.getGovernanceTokenPrice(),
14
- ...(isBase
15
- ? [
16
- environment.contracts.views?.read.getStakingInfo({
17
- blockNumber: BigInt(34149943),
18
- }),
19
- ]
20
- : []),
83
+ isBase
84
+ ? environment.contracts.views?.read.getStakingInfo({
85
+ blockNumber: BigInt(34149943),
86
+ })
87
+ : Promise.resolve(undefined),
88
+ getGovernanceTokenPriceFor(environment, baseEnvironment),
21
89
  ]);
22
- return settlements.map((s) => s.status === "fulfilled" ? s.value : undefined);
90
+ const viewsStaking = viewsStakingResult.status === "fulfilled"
91
+ ? viewsStakingResult.value
92
+ : undefined;
93
+ // Fall back to direct stkWELL reads when the views call rejected (the
94
+ // known Moonbeam failure mode) or returned a fully-zeroed struct
95
+ // (suspicious — a real deployment always has cooldown and unstake
96
+ // window configured > 0). A new chain with zero stakers but real
97
+ // schedule constants still goes through views.
98
+ const allZeroed = isStakingInfoStruct(viewsStaking) &&
99
+ viewsStaking.cooldown === 0n &&
100
+ viewsStaking.unstakeWindow === 0n &&
101
+ viewsStaking.totalSupply === 0n &&
102
+ viewsStaking.emissionPerSecond === 0n;
103
+ const viewsValid = isStakingInfoStruct(viewsStaking) && !allZeroed;
104
+ const stakingInfo = viewsValid
105
+ ? viewsStaking
106
+ : await getStakingInfoFromStkWell(environment);
107
+ const historicalStaking = historicalStakingResult.status === "fulfilled"
108
+ ? historicalStakingResult.value
109
+ : undefined;
110
+ const price = priceResult.status === "fulfilled" ? priceResult.value : 0n;
111
+ if (priceResult.status === "rejected") {
112
+ environment.onError?.(priceResult.reason, {
113
+ source: "governance-token-price",
114
+ chainId: environment.chainId,
115
+ });
116
+ }
117
+ return { stakingInfo, historicalStaking, price };
23
118
  }));
24
- const envStakingInfo = envStakingInfoSettlements
25
- .filter((s) => s.status === "fulfilled")
26
- .map((s) => s.value)
27
- .filter((val) => val !== undefined);
119
+ const envStakingInfo = envStakingInfoSettlements.map((s) => s.status === "fulfilled"
120
+ ? s.value
121
+ : { stakingInfo: undefined, historicalStaking: undefined, price: 0n });
28
122
  const baseEnv = envsWithStaking.find((env) => env.chainId === base.id);
29
- const stakingTokenKey = baseEnv?.config.contracts.stakingToken;
30
- const baseStkToken = baseEnv != null && stakingTokenKey != null
31
- ? baseEnv.config.tokens[stakingTokenKey]
123
+ const baseStakingTokenKey = baseEnv?.config.contracts.stakingToken;
124
+ const baseTokens = baseEnv?.config.tokens;
125
+ const baseStkTokenAddress = baseStakingTokenKey
126
+ ? baseTokens?.[baseStakingTokenKey]?.address
32
127
  : undefined;
33
- const baseStakingApr = baseStkToken != null ? await getMerklStakingApr(baseStkToken.address) : 0;
128
+ const baseStakingApr = baseStkTokenAddress
129
+ ? await getMerklStakingApr(baseStkTokenAddress)
130
+ : 0;
34
131
  const result = envsWithStaking.flatMap((curr, index) => {
35
- const token = curr.config.tokens[curr.config.contracts.governanceToken];
36
- const stakingToken = curr.config.tokens[curr.config.contracts.stakingToken];
37
- const envStakingInfoData = envStakingInfo[index][0];
38
- const envGovernanceTokenPriceData = envStakingInfo[index][1];
39
- const envStakingInfoDataAfterX28Proposal = envStakingInfo[index][2];
132
+ const govKey = curr.config.contracts.governanceToken;
133
+ const stkKey = curr.config.contracts.stakingToken;
134
+ const currTokens = curr.config.tokens;
135
+ if (!govKey || !stkKey)
136
+ return [];
137
+ const token = currTokens[govKey];
138
+ const stakingToken = currTokens[stkKey];
139
+ if (!token || !stakingToken)
140
+ return [];
141
+ // envStakingInfo is built via Promise.allSettled with an explicit
142
+ // fallback object at the .map below, so entries are always defined here.
143
+ const { stakingInfo: envStakingInfoData, historicalStaking, price, } = envStakingInfo[index];
40
144
  const isBase = curr.chainId === base.id;
41
- if (!envStakingInfoData ||
42
- (isBase && !envStakingInfoDataAfterX28Proposal)) {
145
+ if (!envStakingInfoData || (isBase && !historicalStaking)) {
43
146
  return [];
44
147
  }
45
148
  const { cooldown, distributionEnd, emissionPerSecond: emissionPerSecondRaw, totalSupply: totalSupplyRaw, unstakeWindow, } = envStakingInfoData;
46
- //Quick workaround to get governance token price from some other environment
47
- const governanceTokenPrice = new Amount((envGovernanceTokenPriceData ?? 0n), 18);
149
+ const tokenPrice = new Amount(price, 18);
48
150
  const totalSupply = new Amount(totalSupplyRaw, 18);
49
151
  const emissionPerSecond = new Amount(emissionPerSecondRaw, 18);
50
152
  const emissionPerYear = emissionPerSecond.value * SECONDS_PER_DAY * DAYS_PER_YEAR;
51
- const apr = ((emissionPerYear + totalSupply.value) / totalSupply.value - 1) * 100;
153
+ const apr = totalSupply.value > 0
154
+ ? ((emissionPerYear + totalSupply.value) / totalSupply.value - 1) * 100
155
+ : 0;
52
156
  const stakingInfo = {
53
157
  apr: isBase ? baseStakingApr : apr,
54
158
  chainId: curr.chainId,
55
159
  cooldown: Number(cooldown),
56
160
  distributionEnd: Number(distributionEnd),
57
161
  token,
58
- tokenPrice: governanceTokenPrice.value,
162
+ tokenPrice: tokenPrice.value,
59
163
  stakingToken,
60
164
  totalSupply,
61
- totalSupplyUSD: totalSupply.value * governanceTokenPrice.value,
165
+ totalSupplyUSD: totalSupply.value * tokenPrice.value,
62
166
  unstakeWindow: Number(unstakeWindow),
63
167
  };
64
168
  return stakingInfo;
@@ -1 +1 @@
1
- {"version":3,"file":"getStakingInfo.js","sourceRoot":"","sources":["../../../actions/governance/getStakingInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getStakingInfo.js","sourceRoot":"","sources":["../../../actions/governance/getStakingInfo.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,139 @@
1
1
  import { base } from "viem/chains";
2
2
  import { Amount, getEnvironmentsFromArgs } from "../../common/index.js";
3
- import { publicEnvironments, } from "../../environments/index.js";
4
3
  import { getMerklCampaignIds, getMerklRewardsData } from "./common.js";
4
+ import { getGovernanceTokenPriceFor } from "./getWellPrice.js";
5
+ /**
6
+ * Reads per-user staking fields directly from stkWELL when views.getUserStakingInfo()
7
+ * is unavailable (e.g. reverts on Moonbeam).
8
+ */
9
+ async function readUserStakingFromStkWell(environment, userAddress) {
10
+ const stakingToken = environment.contracts.stakingToken;
11
+ if (!stakingToken)
12
+ return undefined;
13
+ const [cooldownR, rewardsR, balanceR] = await Promise.allSettled([
14
+ stakingToken.read.stakersCooldowns([userAddress]),
15
+ stakingToken.read.getTotalRewardsBalance([userAddress]),
16
+ stakingToken.read.balanceOf([userAddress]),
17
+ ]);
18
+ // Surface every rejection so a single failed read (e.g. balanceOf throttled)
19
+ // doesn't silently zero a field that the UI would then display as "no stake".
20
+ for (const r of [cooldownR, rewardsR, balanceR]) {
21
+ if (r.status === "rejected") {
22
+ environment.onError?.(r.reason, {
23
+ source: "user-staking-fallback",
24
+ chainId: environment.chainId,
25
+ });
26
+ }
27
+ }
28
+ if (cooldownR.status === "rejected" &&
29
+ rewardsR.status === "rejected" &&
30
+ balanceR.status === "rejected") {
31
+ return undefined;
32
+ }
33
+ return {
34
+ cooldown: cooldownR.status === "fulfilled" ? cooldownR.value : 0n,
35
+ pendingRewards: rewardsR.status === "fulfilled" ? rewardsR.value : 0n,
36
+ totalStaked: balanceR.status === "fulfilled" ? balanceR.value : 0n,
37
+ };
38
+ }
39
+ /**
40
+ * Reads global cooldown/unstakeWindow constants from stkWELL when
41
+ * views.getStakingInfo() is unavailable.
42
+ */
43
+ async function readScheduleFromStkWell(environment) {
44
+ const stakingToken = environment.contracts.stakingToken;
45
+ if (!stakingToken)
46
+ return undefined;
47
+ const [cooldownR, unstakeWindowR] = await Promise.allSettled([
48
+ stakingToken.read.COOLDOWN_SECONDS(),
49
+ stakingToken.read.UNSTAKE_WINDOW(),
50
+ ]);
51
+ // Surface every rejection. A silent cooldown=0n would corrupt downstream
52
+ // cooldownEnding math even if the unstakeWindow read succeeded.
53
+ for (const r of [cooldownR, unstakeWindowR]) {
54
+ if (r.status === "rejected") {
55
+ environment.onError?.(r.reason, {
56
+ source: "user-staking-schedule-fallback",
57
+ chainId: environment.chainId,
58
+ });
59
+ }
60
+ }
61
+ if (cooldownR.status === "rejected" && unstakeWindowR.status === "rejected") {
62
+ return undefined;
63
+ }
64
+ return {
65
+ cooldown: cooldownR.status === "fulfilled" ? cooldownR.value : 0n,
66
+ unstakeWindow: unstakeWindowR.status === "fulfilled" ? unstakeWindowR.value : 0n,
67
+ };
68
+ }
69
+ const isUserStakingShape = (value) => {
70
+ if (typeof value !== "object" || value === null)
71
+ return false;
72
+ const v = value;
73
+ return (typeof v.cooldown === "bigint" &&
74
+ typeof v.pendingRewards === "bigint" &&
75
+ typeof v.totalStaked === "bigint");
76
+ };
77
+ const isScheduleShape = (value) => {
78
+ if (typeof value !== "object" || value === null)
79
+ return false;
80
+ const v = value;
81
+ return typeof v.cooldown === "bigint" && typeof v.unstakeWindow === "bigint";
82
+ };
5
83
  export async function getUserStakingInfo(client, args) {
6
84
  const { userAddress } = args;
7
85
  const environments = getEnvironmentsFromArgs(client, args);
8
86
  const envsWithStaking = environments.filter((env) => env.contracts.stakingToken);
87
+ const baseEnvironment = client.environments?.base;
9
88
  const envStakingInfo = await Promise.all(envsWithStaking.map(async (environment) => {
10
- const homeEnvironment = Object.values(publicEnvironments).find((e) => e.custom?.governance?.chainIds?.includes(environment.chainId)) || environment;
11
89
  const settled = await Promise.allSettled([
12
90
  environment.contracts.views?.read.getUserStakingInfo([userAddress]),
13
91
  environment.contracts.governanceToken?.read.balanceOf([userAddress]),
14
- homeEnvironment.contracts.views?.read.getGovernanceTokenPrice(),
15
92
  environment.contracts.views?.read.getStakingInfo(),
93
+ getGovernanceTokenPriceFor(environment, baseEnvironment),
16
94
  ]);
17
- return settled.map((s) => s.status === "fulfilled" ? s.value : undefined);
95
+ const [userStakingR, balanceR, stakingScheduleR, priceR] = settled;
96
+ const viewsUserStaking = userStakingR.status === "fulfilled" ? userStakingR.value : undefined;
97
+ const userStaking = isUserStakingShape(viewsUserStaking)
98
+ ? viewsUserStaking
99
+ : await readUserStakingFromStkWell(environment, userAddress);
100
+ const viewsSchedule = stakingScheduleR.status === "fulfilled"
101
+ ? stakingScheduleR.value
102
+ : undefined;
103
+ const schedule = isScheduleShape(viewsSchedule)
104
+ ? viewsSchedule
105
+ : await readScheduleFromStkWell(environment);
106
+ const tokenBalance = balanceR.status === "fulfilled" && balanceR.value !== undefined
107
+ ? balanceR.value
108
+ : 0n;
109
+ const price = priceR.status === "fulfilled" ? priceR.value : 0n;
110
+ if (priceR.status === "rejected") {
111
+ environment.onError?.(priceR.reason, {
112
+ source: "governance-token-price",
113
+ chainId: environment.chainId,
114
+ });
115
+ }
116
+ return { userStaking, schedule, tokenBalance, price };
18
117
  }));
19
118
  const campaignIds = await getMerklCampaignIds();
20
119
  const merklRewards = await getMerklRewardsData(campaignIds, base.id, userAddress);
21
120
  const result = envsWithStaking.flatMap((curr, index) => {
22
- const token = curr.config.tokens[curr.config.contracts.governanceToken];
23
- const stakingToken = curr.config.tokens[curr.config.contracts.stakingToken];
24
- const userStakingInfoData = envStakingInfo[index]?.[0];
25
- if (!userStakingInfoData)
121
+ const govKey = curr.config.contracts.governanceToken;
122
+ const stkKey = curr.config.contracts.stakingToken;
123
+ const currTokens = curr.config.tokens;
124
+ if (!govKey || !stkKey)
125
+ return [];
126
+ const token = currTokens[govKey];
127
+ const stakingToken = currTokens[stkKey];
128
+ if (!token || !stakingToken)
26
129
  return [];
27
- const { cooldown, pendingRewards, totalStaked } = userStakingInfoData;
28
- // merkl rewards (only for base)
130
+ // envStakingInfo is built via Promise.all over the same envsWithStaking
131
+ // array, so index access is always defined.
132
+ const { userStaking, schedule, tokenBalance, price } = envStakingInfo[index];
133
+ if (!userStaking || !schedule)
134
+ return [];
135
+ const { cooldown, pendingRewards, totalStaked } = userStaking;
136
+ const { cooldown: cooldownSeconds, unstakeWindow } = schedule;
29
137
  const isBase = curr.chainId === base.id;
30
138
  const merklReward = merklRewards.reduce((acc, r) => {
31
139
  if (r.chain === curr.chainId) {
@@ -34,16 +142,9 @@ export async function getUserStakingInfo(client, args) {
34
142
  return acc;
35
143
  }, 0n);
36
144
  const merklPendingRewards = isBase ? merklReward : 0n;
37
- const tokenBalance = (envStakingInfo[index]?.[1] ?? 0n);
38
- const governanceTokenPriceRaw = (envStakingInfo[index]?.[2] ??
39
- 0n);
40
- const stakingInfoData = envStakingInfo[index]?.[3];
41
- if (!stakingInfoData)
42
- return [];
43
- const { cooldown: cooldownSeconds, unstakeWindow } = stakingInfoData;
44
145
  const cooldownEnding = cooldown > 0n ? cooldown + cooldownSeconds : 0n;
45
146
  const unstakingEnding = cooldown > 0n ? cooldown + cooldownSeconds + unstakeWindow : 0n;
46
- const governanceTokenPrice = new Amount(governanceTokenPriceRaw, 18);
147
+ const tokenPrice = new Amount(price, 18);
47
148
  const userStakingInfo = {
48
149
  chainId: curr.chainId,
49
150
  cooldownActive: cooldown > 0n,
@@ -56,7 +157,7 @@ export async function getUserStakingInfo(client, args) {
56
157
  : new Amount(pendingRewards, 18),
57
158
  token,
58
159
  tokenBalance: new Amount(tokenBalance, 18),
59
- tokenPrice: governanceTokenPrice.value,
160
+ tokenPrice: tokenPrice.value,
60
161
  stakingToken,
61
162
  stakingTokenBalance: new Amount(totalStaked, 18),
62
163
  };
@@ -1 +1 @@
1
- {"version":3,"file":"getUserStakingInfo.js","sourceRoot":"","sources":["../../../actions/governance/getUserStakingInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getUserStakingInfo.js","sourceRoot":"","sources":["../../../actions/governance/getUserStakingInfo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { publicEnvironments, } from "../../environments/index.js";
2
+ /**
3
+ * Reads WELL/USD from Base's lending oracle via getUnderlyingPrice(mWELL).
4
+ *
5
+ * The Base oracle is Chainlink-fed and shared by the lending markets, so it's
6
+ * the authoritative WELL/USD source. Used in place of the per-chain
7
+ * views.getGovernanceTokenPrice() which is unreliable on Moonbeam (returns
8
+ * stale data) and Base (returns 0).
9
+ *
10
+ * Returns a uint256 already scaled to 18 decimals.
11
+ *
12
+ * @param baseEnvironment Pass the caller's Base environment when available so
13
+ * user-configured RPCs / onError handlers are honored. Falls back to the
14
+ * SDK's default public Base environment otherwise.
15
+ */
16
+ export async function getWellPriceFromBaseOracle(baseEnvironment) {
17
+ const baseEnv = baseEnvironment ?? publicEnvironments.base;
18
+ const tokens = baseEnv.config.tokens;
19
+ const mWELL = tokens.MOONWELL_WELL?.address;
20
+ const oracle = baseEnv.contracts.oracle;
21
+ if (!mWELL || !oracle) {
22
+ // A custom Base env without MOONWELL_WELL or an oracle would silently
23
+ // zero out every WELL-priced read across the SDK. Surface it instead.
24
+ baseEnv.onError?.(new Error(`getWellPriceFromBaseOracle: missing ${!mWELL ? "MOONWELL_WELL token" : "oracle contract"} on Base env`), { source: "well-price", chainId: baseEnv.chainId });
25
+ return 0n;
26
+ }
27
+ return await oracle.read.getUnderlyingPrice([mWELL]);
28
+ }
29
+ /**
30
+ * Returns the governance-token-in-USD price for an environment.
31
+ *
32
+ * - For WELL-governed chains (Base, Optimism, Moonbeam), reads from the Base
33
+ * lending oracle's mWELL underlying price (authoritative, Chainlink-fed).
34
+ * - For non-WELL chains (currently only Moonriver / MFAM), reads from the
35
+ * env's own views.getGovernanceTokenPrice() — Moonriver has its own MFAM
36
+ * oracle and isn't priced from Base.
37
+ *
38
+ * Returns 0n if the lookup fails.
39
+ */
40
+ export async function getGovernanceTokenPriceFor(environment, baseEnvironment) {
41
+ if (environment.custom?.governance?.token === "WELL") {
42
+ return getWellPriceFromBaseOracle(baseEnvironment);
43
+ }
44
+ // Non-WELL (e.g. Moonriver / MFAM): the env itself is the governance "home".
45
+ const views = environment.contracts.views;
46
+ if (!views)
47
+ return 0n;
48
+ return (await views.read.getGovernanceTokenPrice()) ?? 0n;
49
+ }
50
+ //# sourceMappingURL=getWellPrice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getWellPrice.js","sourceRoot":"","sources":["../../../actions/governance/getWellPrice.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,eAA6B;IAE7B,MAAM,OAAO,GAAG,eAAe,IAAI,kBAAkB,CAAC,IAAI,CAAC;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAG7B,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,sEAAsE;QACtE,sEAAsE;QACtE,OAAO,CAAC,OAAO,EAAE,CACf,IAAI,KAAK,CACP,uCAAuC,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAiB,cAAc,CACxG,EACD,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CACnD,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,WAAwB,EACxB,eAA6B;IAE7B,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,KAAK,MAAM,EAAE,CAAC;QACrD,OAAO,0BAA0B,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IACD,6EAA6E;IAC7E,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC"}
@@ -3,6 +3,7 @@ import { Amount } from "../../../common/amount.js";
3
3
  import { MOONWELL_FETCH_JSON_HEADERS } from "../../../common/fetch-headers.js";
4
4
  import { publicEnvironments, } from "../../../environments/index.js";
5
5
  import { findMarketByAddress, findTokenByAddress, } from "../../../environments/utils/index.js";
6
+ import { getGovernanceTokenPriceFor } from "../../governance/getWellPrice.js";
6
7
  /**
7
8
  * Error thrown for any failure communicating with the Merkl API: non-ok HTTP
8
9
  * responses, network rejections (fetch threw), and response-body parse errors.
@@ -111,10 +112,16 @@ export async function getUserMorphoStakingRewardsData(params) {
111
112
  const [allMarkets, nativeTokenPriceRaw, governanceTokenPriceRaw] = await Promise.all([
112
113
  viewsContract?.read.getAllMarketsInfo(),
113
114
  homeViewsContract?.read.getNativeTokenPrice(),
114
- homeViewsContract?.read.getGovernanceTokenPrice(),
115
+ getGovernanceTokenPriceFor(params.environment).catch((err) => {
116
+ params.environment.onError?.(err, {
117
+ source: "governance-token-price",
118
+ chainId: params.environment.chainId,
119
+ });
120
+ return 0n;
121
+ }),
115
122
  ]);
116
- const governanceTokenPrice = new Amount(governanceTokenPriceRaw || 0n, 18);
117
- const nativeTokenPrice = new Amount(nativeTokenPriceRaw || 0n, 18);
123
+ const governanceTokenPrice = new Amount(governanceTokenPriceRaw, 18);
124
+ const nativeTokenPrice = new Amount(nativeTokenPriceRaw ?? 0n, 18);
118
125
  let tokenPrices = allMarkets
119
126
  ?.map((marketInfo) => {
120
127
  const marketFound = findMarketByAddress(params.environment, marketInfo.market);
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../actions/morpho/user-rewards/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../actions/morpho/user-rewards/common.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ dayjs.extend(utc);
5
5
  import { Amount } from "../../../common/amount.js";
6
6
  import { publicEnvironments, } from "../../../environments/index.js";
7
7
  import { findMarketByAddress, findTokenByAddress, } from "../../../environments/utils/index.js";
8
+ import { getGovernanceTokenPriceFor } from "../../governance/getWellPrice.js";
8
9
  import { getGraphQL, getVaultV2Apy } from "../utils/graphql.js";
9
10
  import { SECONDS_PER_YEAR, WAD, mulDivDown, toAssetsDown, wMulDown, } from "../utils/math.js";
10
11
  import { fetchTokenMap, fetchVaultsFromIndexer, getV1VaultKey, transformVaultsFromIndexer, } from "./lunarIndexerTransform.js";
@@ -151,11 +152,17 @@ async function getMorphoVaultsDataFromIndexer(params) {
151
152
  const data = await Promise.all([
152
153
  viewsContract?.read.getAllMarketsInfo(),
153
154
  homeViewsContract?.read.getNativeTokenPrice(),
154
- homeViewsContract?.read.getGovernanceTokenPrice(),
155
+ getGovernanceTokenPriceFor(environment).catch((err) => {
156
+ environment.onError?.(err, {
157
+ source: "governance-token-price",
158
+ chainId: environment.chainId,
159
+ });
160
+ return 0n;
161
+ }),
155
162
  ]);
156
163
  const [allMarkets, nativeTokenPriceRaw, governanceTokenPriceRaw] = data;
157
- const governanceTokenPrice = new Amount(governanceTokenPriceRaw || 0n, 18);
158
- const nativeTokenPrice = new Amount(nativeTokenPriceRaw || 0n, 18);
164
+ const governanceTokenPrice = new Amount(governanceTokenPriceRaw, 18);
165
+ const nativeTokenPrice = new Amount(nativeTokenPriceRaw ?? 0n, 18);
159
166
  let tokenPrices = allMarkets
160
167
  ?.map((marketInfo) => {
161
168
  const marketFound = findMarketByAddress(environment, marketInfo.market);
@@ -591,11 +598,17 @@ async function getMorphoVaultsDataFromOnChain(params) {
591
598
  const data = await Promise.all([
592
599
  viewsContract?.read.getAllMarketsInfo(),
593
600
  homeViewsContract?.read.getNativeTokenPrice(),
594
- homeViewsContract?.read.getGovernanceTokenPrice(),
601
+ getGovernanceTokenPriceFor(environment).catch((err) => {
602
+ environment.onError?.(err, {
603
+ source: "governance-token-price",
604
+ chainId: environment.chainId,
605
+ });
606
+ return 0n;
607
+ }),
595
608
  ]);
596
609
  const [allMarkets, nativeTokenPriceRaw, governanceTokenPriceRaw] = data;
597
- const governanceTokenPrice = new Amount(governanceTokenPriceRaw || 0n, 18);
598
- const nativeTokenPrice = new Amount(nativeTokenPriceRaw || 0n, 18);
610
+ const governanceTokenPrice = new Amount(governanceTokenPriceRaw, 18);
611
+ const nativeTokenPrice = new Amount(nativeTokenPriceRaw ?? 0n, 18);
599
612
  let tokenPrices = allMarkets
600
613
  ?.map((marketInfo) => {
601
614
  const marketFound = findMarketByAddress(environment, marketInfo.market);