@moonwell-fi/moonwell-sdk 0.12.2 → 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 (114) hide show
  1. package/CHANGELOG.md +22 -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/getDelegates.js.map +1 -1
  7. package/_cjs/actions/governance/getStakingInfo.js +113 -31
  8. package/_cjs/actions/governance/getStakingInfo.js.map +1 -1
  9. package/_cjs/actions/governance/getUserStakingInfo.js +106 -18
  10. package/_cjs/actions/governance/getUserStakingInfo.js.map +1 -1
  11. package/_cjs/actions/governance/getUserVotingPowers.js +21 -6
  12. package/_cjs/actions/governance/getUserVotingPowers.js.map +1 -1
  13. package/_cjs/actions/governance/getWellPrice.js +26 -0
  14. package/_cjs/actions/governance/getWellPrice.js.map +1 -0
  15. package/_cjs/actions/morpho/user-rewards/common.js +87 -12
  16. package/_cjs/actions/morpho/user-rewards/common.js.map +1 -1
  17. package/_cjs/actions/morpho/user-rewards/getMorphoUserRewards.js +46 -10
  18. package/_cjs/actions/morpho/user-rewards/getMorphoUserRewards.js.map +1 -1
  19. package/_cjs/actions/morpho/vaults/common.js +19 -6
  20. package/_cjs/actions/morpho/vaults/common.js.map +1 -1
  21. package/_cjs/environments/definitions/ethereum/contracts.js +12 -0
  22. package/_cjs/environments/definitions/ethereum/contracts.js.map +1 -0
  23. package/_cjs/environments/definitions/ethereum/custom.js +18 -0
  24. package/_cjs/environments/definitions/ethereum/custom.js.map +1 -0
  25. package/_cjs/environments/definitions/ethereum/environment.js +9 -5
  26. package/_cjs/environments/definitions/ethereum/environment.js.map +1 -1
  27. package/_cjs/environments/definitions/ethereum/tokens.js +12 -0
  28. package/_cjs/environments/definitions/ethereum/tokens.js.map +1 -1
  29. package/_cjs/environments/definitions/governance.js +1 -1
  30. package/_cjs/environments/definitions/governance.js.map +1 -1
  31. package/_cjs/errors/version.js +1 -1
  32. package/_cjs/index.js +5 -1
  33. package/_cjs/index.js.map +1 -1
  34. package/_esm/actions/core/markets/common.js +11 -4
  35. package/_esm/actions/core/markets/common.js.map +1 -1
  36. package/_esm/actions/core/user-rewards/common.js +6 -5
  37. package/_esm/actions/core/user-rewards/common.js.map +1 -1
  38. package/_esm/actions/governance/getDelegates.js +2 -0
  39. package/_esm/actions/governance/getDelegates.js.map +1 -1
  40. package/_esm/actions/governance/getStakingInfo.js +136 -32
  41. package/_esm/actions/governance/getStakingInfo.js.map +1 -1
  42. package/_esm/actions/governance/getUserStakingInfo.js +120 -19
  43. package/_esm/actions/governance/getUserStakingInfo.js.map +1 -1
  44. package/_esm/actions/governance/getUserVotingPowers.js +24 -6
  45. package/_esm/actions/governance/getUserVotingPowers.js.map +1 -1
  46. package/_esm/actions/governance/getWellPrice.js +50 -0
  47. package/_esm/actions/governance/getWellPrice.js.map +1 -0
  48. package/_esm/actions/morpho/user-rewards/common.js +93 -12
  49. package/_esm/actions/morpho/user-rewards/common.js.map +1 -1
  50. package/_esm/actions/morpho/user-rewards/getMorphoUserRewards.js +51 -11
  51. package/_esm/actions/morpho/user-rewards/getMorphoUserRewards.js.map +1 -1
  52. package/_esm/actions/morpho/vaults/common.js +19 -6
  53. package/_esm/actions/morpho/vaults/common.js.map +1 -1
  54. package/_esm/environments/definitions/ethereum/contracts.js +10 -0
  55. package/_esm/environments/definitions/ethereum/contracts.js.map +1 -0
  56. package/_esm/environments/definitions/ethereum/custom.js +15 -0
  57. package/_esm/environments/definitions/ethereum/custom.js.map +1 -0
  58. package/_esm/environments/definitions/ethereum/environment.js +11 -5
  59. package/_esm/environments/definitions/ethereum/environment.js.map +1 -1
  60. package/_esm/environments/definitions/ethereum/tokens.js +12 -0
  61. package/_esm/environments/definitions/ethereum/tokens.js.map +1 -1
  62. package/_esm/environments/definitions/governance.js +2 -2
  63. package/_esm/environments/definitions/governance.js.map +1 -1
  64. package/_esm/errors/version.js +1 -1
  65. package/_esm/index.js +2 -0
  66. package/_esm/index.js.map +1 -1
  67. package/_types/actions/core/markets/common.d.ts.map +1 -1
  68. package/_types/actions/core/user-rewards/common.d.ts.map +1 -1
  69. package/_types/actions/governance/getDelegates.d.ts.map +1 -1
  70. package/_types/actions/governance/getStakingInfo.d.ts +1 -1
  71. package/_types/actions/governance/getStakingInfo.d.ts.map +1 -1
  72. package/_types/actions/governance/getUserStakingInfo.d.ts.map +1 -1
  73. package/_types/actions/governance/getUserVotingPowers.d.ts.map +1 -1
  74. package/_types/actions/governance/getWellPrice.d.ts +29 -0
  75. package/_types/actions/governance/getWellPrice.d.ts.map +1 -0
  76. package/_types/actions/morpho/user-rewards/common.d.ts +23 -0
  77. package/_types/actions/morpho/user-rewards/common.d.ts.map +1 -1
  78. package/_types/actions/morpho/user-rewards/getMorphoUserRewards.d.ts +22 -0
  79. package/_types/actions/morpho/user-rewards/getMorphoUserRewards.d.ts.map +1 -1
  80. package/_types/actions/morpho/vaults/common.d.ts.map +1 -1
  81. package/_types/client/createMoonwellClient.d.ts +62 -2
  82. package/_types/client/createMoonwellClient.d.ts.map +1 -1
  83. package/_types/environments/definitions/ethereum/contracts.d.ts +4 -0
  84. package/_types/environments/definitions/ethereum/contracts.d.ts.map +1 -0
  85. package/_types/environments/definitions/ethereum/custom.d.ts +18 -0
  86. package/_types/environments/definitions/ethereum/custom.d.ts.map +1 -0
  87. package/_types/environments/definitions/ethereum/environment.d.ts +52 -2
  88. package/_types/environments/definitions/ethereum/environment.d.ts.map +1 -1
  89. package/_types/environments/definitions/ethereum/tokens.d.ts +12 -0
  90. package/_types/environments/definitions/ethereum/tokens.d.ts.map +1 -1
  91. package/_types/environments/definitions/governance.d.ts.map +1 -1
  92. package/_types/environments/index.d.ts +34 -4
  93. package/_types/environments/index.d.ts.map +1 -1
  94. package/_types/errors/version.d.ts +1 -1
  95. package/_types/index.d.ts +2 -0
  96. package/_types/index.d.ts.map +1 -1
  97. package/actions/core/markets/common.ts +11 -6
  98. package/actions/core/user-rewards/common.ts +6 -5
  99. package/actions/governance/getDelegates.ts +2 -0
  100. package/actions/governance/getStakingInfo.ts +195 -87
  101. package/actions/governance/getUserStakingInfo.ts +168 -54
  102. package/actions/governance/getUserVotingPowers.ts +30 -15
  103. package/actions/governance/getWellPrice.ts +66 -0
  104. package/actions/morpho/user-rewards/common.ts +91 -14
  105. package/actions/morpho/user-rewards/getMorphoUserRewards.ts +77 -12
  106. package/actions/morpho/vaults/common.ts +19 -12
  107. package/environments/definitions/ethereum/contracts.ts +10 -0
  108. package/environments/definitions/ethereum/custom.ts +15 -0
  109. package/environments/definitions/ethereum/environment.ts +15 -6
  110. package/environments/definitions/ethereum/tokens.ts +12 -0
  111. package/environments/definitions/governance.ts +2 -2
  112. package/errors/version.ts +1 -1
  113. package/index.ts +3 -0
  114. package/package.json +1 -1
@@ -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":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAIxE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAuB/D;;;GAGG;AACH,KAAK,UAAU,0BAA0B,CACvC,WAAwB,EACxB,WAAoB;IAEpB,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC;IACxD,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QAC/D,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,CAAC;QACjD,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,WAAW,CAAC,CAAC;QACvD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;KAC3C,CAAC,CAAC;IAEH,6EAA6E;IAC7E,8EAA8E;IAC9E,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5B,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;gBAC9B,MAAM,EAAE,uBAAuB;gBAC/B,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IACE,SAAS,CAAC,MAAM,KAAK,UAAU;QAC/B,QAAQ,CAAC,MAAM,KAAK,UAAU;QAC9B,QAAQ,CAAC,MAAM,KAAK,UAAU,EAC9B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACjE,cAAc,EAAE,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACrE,WAAW,EAAE,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;KACnE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,uBAAuB,CACpC,WAAwB;IAExB,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC;IACxD,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEpC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;QAC3D,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE;QACpC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE;KACnC,CAAC,CAAC;IAEH,yEAAyE;IACzE,gEAAgE;IAChE,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5B,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;gBAC9B,MAAM,EAAE,gCAAgC;gBACxC,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,IAAI,cAAc,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC5E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACjE,aAAa,EACX,cAAc,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;KACpE,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAA8B,EAAE;IACxE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAC9B,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ;QACpC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAClC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAc,EAAkC,EAAE;IACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAItC,MAAsB,EACtB,IAAyD;IAEzD,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE7B,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE3D,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CACpC,CAAC;IAEF,MAAM,eAAe,GACnB,MAAM,CAAC,YACR,EAAE,IAAI,CAAC;IAER,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACvC,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,CAAC;YACnE,WAAW,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;YACpE,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE;YAClD,0BAA0B,CAAC,WAAW,EAAE,eAAe,CAAC;SACzD,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;QAEnE,MAAM,gBAAgB,GACpB,YAAY,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,MAAM,WAAW,GAAG,kBAAkB,CAAC,gBAAgB,CAAC;YACtD,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,MAAM,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAE/D,MAAM,aAAa,GACjB,gBAAgB,CAAC,MAAM,KAAK,WAAW;YACrC,CAAC,CAAC,gBAAgB,CAAC,KAAK;YACxB,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC;YAC7C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAE/C,MAAM,YAAY,GAChB,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;YAC7D,CAAC,CAAC,QAAQ,CAAC,KAAK;YAChB,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;gBACnC,MAAM,EAAE,wBAAwB;gBAChC,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACxD,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAChD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC5C,WAAW,EACX,IAAI,CAAC,EAAE,EACP,WAAW,CACZ,CAAC;IAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAG9B,CAAC;QACF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,CAAC;QAEvC,wEAAwE;QACxE,4CAA4C;QAC5C,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAClD,cAAc,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAEzC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC;QAC9D,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC;QAE9D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,OAAO,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,MAAM,cAAc,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,eAAe,GACnB,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAElE,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEzC,MAAM,eAAe,GAAoB;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,cAAc,EAAE,QAAQ,GAAG,EAAE;YAC7B,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC/B,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC;YACtC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC;YACtC,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC;YACxC,cAAc,EAAE,MAAM;gBACpB,CAAC,CAAC,IAAI,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBACrC,CAAC,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YAClC,KAAK;YACL,YAAY,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1C,UAAU,EAAE,UAAU,CAAC,KAAK;YAC5B,YAAY;YACZ,mBAAmB,EAAE,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;SACjD,CAAC;QAEF,OAAO,eAAe,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,22 +1,40 @@
1
1
  import { zeroAddress } from "viem";
2
2
  import { Amount, getBlockNumberAtTimestamp, getEnvironmentsFromArgs, } from "../../common/index.js";
3
+ const warnedNoViewsEnvs = new Set();
3
4
  export async function getUserVotingPowers(client, args) {
4
5
  const { governanceToken, userAddress, blockNumber, snapshotTimestamp } = args;
5
6
  const environments = getEnvironmentsFromArgs(client, args);
6
- const tokenEnvironments = environments.filter((env) => env.custom?.governance?.token === governanceToken);
7
+ // A chain can hold a governance token without deploying a views contract
8
+ // (voting reads run on the hub). Skipping the no-views case here lets the
9
+ // read site below call views.read.getUserVotingPower directly.
10
+ const tokenEnvironments = environments.flatMap((env) => {
11
+ if (env.custom?.governance?.token !== governanceToken) {
12
+ return [];
13
+ }
14
+ const views = env.contracts.views;
15
+ if (views === undefined) {
16
+ const key = `${env.chainId}:${governanceToken}`;
17
+ if (!warnedNoViewsEnvs.has(key)) {
18
+ warnedNoViewsEnvs.add(key);
19
+ console.warn(`[moonwell-sdk] getUserVotingPowers: skipping chainId=${env.chainId} for governanceToken=${governanceToken} — environment holds the token but has no views contract.`);
20
+ }
21
+ return [];
22
+ }
23
+ return [{ env, views }];
24
+ });
7
25
  const perChainBlockNumbers = snapshotTimestamp !== undefined
8
- ? await Promise.all(tokenEnvironments.map((env) => getBlockNumberAtTimestamp(env.publicClient, BigInt(snapshotTimestamp))))
26
+ ? await Promise.all(tokenEnvironments.map(({ env }) => getBlockNumberAtTimestamp(env.publicClient, BigInt(snapshotTimestamp))))
9
27
  : undefined;
10
- const environmentsUserVotingPowers = await Promise.all(tokenEnvironments.map((environment, index) => {
28
+ const resolvedVotingPowers = await Promise.all(tokenEnvironments.map(async ({ env, views }, index) => {
11
29
  const blockForChain = perChainBlockNumbers
12
30
  ? perChainBlockNumbers[index]
13
31
  : blockNumber;
14
- return environment.contracts.views?.read.getUserVotingPower([userAddress], {
32
+ const votingPowers = await views.read.getUserVotingPower([userAddress], {
15
33
  blockNumber: blockForChain,
16
34
  });
35
+ return { env, votingPowers };
17
36
  }));
18
- return tokenEnvironments.map((environment, index) => {
19
- const votingPowers = environmentsUserVotingPowers[index];
37
+ return resolvedVotingPowers.map(({ env: environment, votingPowers }) => {
20
38
  return {
21
39
  chainId: environment.chainId,
22
40
  //Claims balances
@@ -1 +1 @@
1
- {"version":3,"file":"getUserVotingPowers.js","sourceRoot":"","sources":["../../../actions/governance/getUserVotingPowers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getUserVotingPowers.js","sourceRoot":"","sources":["../../../actions/governance/getUserVotingPowers.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,11 +3,54 @@ 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";
7
+ /**
8
+ * Error thrown for any failure communicating with the Merkl API: non-ok HTTP
9
+ * responses, network rejections (fetch threw), and response-body parse errors.
10
+ *
11
+ * - HTTP failures populate `status` and `statusText`.
12
+ * - Network and parse failures leave `status`/`statusText` undefined and
13
+ * carry the original error via `cause`.
14
+ */
15
+ export class MerklApiError extends Error {
16
+ constructor(params) {
17
+ super(params.message, params.cause !== undefined ? { cause: params.cause } : undefined);
18
+ Object.defineProperty(this, "status", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: void 0
23
+ });
24
+ Object.defineProperty(this, "statusText", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: void 0
29
+ });
30
+ Object.defineProperty(this, "url", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: void 0
35
+ });
36
+ Object.defineProperty(this, "chainId", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: void 0
41
+ });
42
+ this.name = "MerklApiError";
43
+ this.url = params.url;
44
+ this.chainId = params.chainId;
45
+ this.status = params.status;
46
+ this.statusText = params.statusText;
47
+ }
48
+ }
6
49
  export async function getUserMorphoRewardsData(params) {
7
50
  // The Morpho URD distributions endpoint (rewards.morpho.org) was
8
51
  // deprecated and now 301-redirects to a SPA, so JSON parsing fails.
9
52
  // Surface only Merkl rewards.
10
- const merklRewards = await getMerklRewardsData(params.environment, params.account);
53
+ const merklRewards = await getMerklRewardsData(params.environment, params.account, { throwOnError: params.throwOnExternalApiError ?? false });
11
54
  const isFullDeployment = params.environment.custom.morpho?.minimalDeployment === false;
12
55
  // For full deployments (Base), restrict to Moonwell vault campaigns so the
13
56
  // result excludes staking and other Moonwell campaigns; those are returned
@@ -69,10 +112,16 @@ export async function getUserMorphoStakingRewardsData(params) {
69
112
  const [allMarkets, nativeTokenPriceRaw, governanceTokenPriceRaw] = await Promise.all([
70
113
  viewsContract?.read.getAllMarketsInfo(),
71
114
  homeViewsContract?.read.getNativeTokenPrice(),
72
- 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
+ }),
73
122
  ]);
74
- const governanceTokenPrice = new Amount(governanceTokenPriceRaw || 0n, 18);
75
- const nativeTokenPrice = new Amount(nativeTokenPriceRaw || 0n, 18);
123
+ const governanceTokenPrice = new Amount(governanceTokenPriceRaw, 18);
124
+ const nativeTokenPrice = new Amount(nativeTokenPriceRaw ?? 0n, 18);
76
125
  let tokenPrices = allMarkets
77
126
  ?.map((marketInfo) => {
78
127
  const marketFound = findMarketByAddress(params.environment, marketInfo.market);
@@ -155,24 +204,56 @@ const getRewardsEarnedData = async (environment, userAddress, multiRewardsAddres
155
204
  }));
156
205
  return rewards.filter(Boolean);
157
206
  };
158
- async function getMerklRewardsData(environment, account) {
207
+ async function getMerklRewardsData(environment, account, options = { throwOnError: false }) {
208
+ const url = `https://api.merkl.xyz/v4/users/${account}/rewards?chainId=${environment.chainId}&test=false&breakdownPage=0&reloadChainId=${environment.chainId}`;
209
+ let response;
159
210
  try {
160
211
  // Merkl campaigns always distribute rewards on the same chain as the
161
212
  // opportunity, so environment.chainId is the only chain we need to query.
162
213
  // The previous two-phase approach (fetch opportunities per vault → extract
163
214
  // chain IDs → fetch rewards per chain) made N+1 HTTP calls to discover
164
215
  // a chain ID we already know.
165
- const response = await fetch(`https://api.merkl.xyz/v4/users/${account}/rewards?chainId=${environment.chainId}&test=false&breakdownPage=0&reloadChainId=${environment.chainId}`, {
166
- headers: MOONWELL_FETCH_JSON_HEADERS,
167
- });
168
- if (!response.ok) {
169
- console.warn(`Merkl API request failed: ${response.status} ${response.statusText}`);
170
- return [];
216
+ response = await fetch(url, { headers: MOONWELL_FETCH_JSON_HEADERS });
217
+ }
218
+ catch (error) {
219
+ if (options.throwOnError) {
220
+ throw new MerklApiError({
221
+ message: `Merkl API network error for chain ${environment.chainId}`,
222
+ url,
223
+ chainId: environment.chainId,
224
+ cause: error,
225
+ });
226
+ }
227
+ console.error(`[getMerklRewardsData:network] chain=${environment.chainId} url=${url}`, error);
228
+ return [];
229
+ }
230
+ if (!response.ok) {
231
+ const message = `Merkl API request failed for chain ${environment.chainId}: ${response.status} ${response.statusText}`;
232
+ if (options.throwOnError) {
233
+ throw new MerklApiError({
234
+ message,
235
+ url,
236
+ chainId: environment.chainId,
237
+ status: response.status,
238
+ statusText: response.statusText,
239
+ });
171
240
  }
241
+ console.warn(`${message} (url=${url})`);
242
+ return [];
243
+ }
244
+ try {
172
245
  return (await response.json());
173
246
  }
174
247
  catch (error) {
175
- console.error("Error in getMerklRewardsData:", error);
248
+ if (options.throwOnError) {
249
+ throw new MerklApiError({
250
+ message: `Merkl API response parse error for chain ${environment.chainId}`,
251
+ url,
252
+ chainId: environment.chainId,
253
+ cause: error,
254
+ });
255
+ }
256
+ console.error(`[getMerklRewardsData:parse] chain=${environment.chainId} url=${url}`, error);
176
257
  return [];
177
258
  }
178
259
  }
@@ -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":"AAAA,OAAO,EAAgB,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAGL,kBAAkB,GACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAMtC,YAAY,MAOX;QACC,KAAK,CACH,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACjE,CAAC;QAhBK;;;;;WAA2B;QAC3B;;;;;WAA+B;QAC/B;;;;;WAAY;QACZ;;;;;WAAgB;QAcvB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAI9C;IACC,iEAAiE;IACjE,oEAAoE;IACpE,8BAA8B;IAC9B,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC5C,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,OAAO,EACd,EAAE,YAAY,EAAE,MAAM,CAAC,uBAAuB,IAAI,KAAK,EAAE,CAC1D,CAAC;IAEF,MAAM,gBAAgB,GACpB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,KAAK,KAAK,CAAC;IAEhE,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IAC3E,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,gBAAgB;QACvC,CAAC,CAAC,IAAI,GAAG,CACJ,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAmB,CAAC,OAAO,CAC1D,CAAC,WAAW,EAAE,EAAE,CACd,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;aAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;aAChC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CACpD,CACF;QACH,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,aAAa,GAAG,CACpB,UAKG,EACH,KAAuC,EAC/B,EAAE,CACV,UAAU,CAAC,MAAM,CACf,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CACZ,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QAChE,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,GAAG,EACT,EAAE,CACH,CAAC;IAEJ,MAAM,WAAW,GAAuB,EAAE,CAAC;IAE3C,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE,CAAC;QACrC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAkB;gBACxC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;gBAC/B,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;gBAC3B,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;aAC1B,CAAC;YAEF,MAAM,MAAM,GAAG,gBAAgB;gBAC7B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC;gBAC5C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,MAAM,OAAO,GAAG,gBAAgB;gBAC9B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;gBAC7C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAG,gBAAgB;gBAC9B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC;gBAC7C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE3B,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YACxE,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YACvE,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAClE,MAAM,kBAAkB,GACtB,eAAe,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAEpD,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW;gBACX,YAAY;gBACZ,eAAe;gBACf,eAAe;gBACf,kBAAkB;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,MAGrD;IACC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CACrC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CACjC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,yDAAyD;IACzD,MAAM,eAAe,GAClB,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9D,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CACrE,IAAI,MAAM,CAAC,WAAW,CAAC;IAE1B,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC;IACzD,MAAM,iBAAiB,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC;IAE1D,MAAM,CAAC,UAAU,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,GAC9D,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE;QACvC,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,EAAE;QAC7C,0BAA0B,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC3D,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,wBAAwB;gBAChC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;aACpC,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;KACH,CAAC,CAAC;IAEL,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,mBAAmB,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnE,IAAI,WAAW,GACb,UAAU;QACR,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACnB,MAAM,WAAW,GAAG,mBAAmB,CACrC,MAAM,CAAC,WAAW,EAClB,UAAU,CAAC,MAAM,CAClB,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO;gBACL,KAAK,EAAE,WAAW,CAAC,eAAe;gBAClC,UAAU,EAAE,IAAI,MAAM,CACpB,UAAU,CAAC,eAAe,EAC1B,EAAE,GAAG,WAAW,CAAC,eAAe,CAAC,QAAQ,CAC1C;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;QACT,CAAC;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAEtC,uCAAuC;IACvC,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACjD,WAAW,GAAG;YACZ,GAAG,WAAW;YACd;gBACE,KAAK,EACH,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAC9B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAC1C;gBACJ,UAAU,EAAE,oBAAoB;aACjC;SACF,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,WAAW,GAAG;QACZ,GAAG,WAAW;QACd;YACE,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAE;YAC3D,UAAU,EAAE,gBAAgB;SAC7B;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACpC,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAC7C,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,OAAO,EACd,KAAK,CAAC,WAAW,CAClB,CAAC;QAEF,OAAO,YAAY;aAChB,MAAM,CAAC,CAAC,MAAM,EAAoD,EAAE;YACnE,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QACzD,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CACjD,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC,CAAC;YAE/C,OAAO;gBACL,GAAG,MAAM;gBACT,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;gBACnC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ;aAC1C,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,oBAAoB,GAAG,KAAK,EAChC,WAAwB,EACxB,WAAoB,EACpB,mBAA4B,EAC5B,EAAE;IACF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,cAAc,GAAG,QAAQ,CAAC;QAC9B,wEAAwE;KACzE,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,WAAW,CAAC;QACtC,OAAO,EAAE,mBAAmB;QAC5B,GAAG,EAAE,cAAc;QACnB,MAAM,EAAE,WAAW,CAAC,YAAY;KACjC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAEnE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;gBACnD,WAAW;gBACX,KAAK,CAAC,OAAO;aACd,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AAyCF,KAAK,UAAU,mBAAmB,CAChC,WAAwB,EACxB,OAAgB,EAChB,UAAqC,EAAE,YAAY,EAAE,KAAK,EAAE;IAE5D,MAAM,GAAG,GAAG,kCAAkC,OAAO,oBAAoB,WAAW,CAAC,OAAO,6CAA6C,WAAW,CAAC,OAAO,EAAE,CAAC;IAE/J,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,qEAAqE;QACrE,0EAA0E;QAC1E,2EAA2E;QAC3E,uEAAuE;QACvE,8BAA8B;QAC9B,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC;gBACtB,OAAO,EAAE,qCAAqC,WAAW,CAAC,OAAO,EAAE;gBACnE,GAAG;gBACH,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,KAAK,CACX,uCAAuC,WAAW,CAAC,OAAO,QAAQ,GAAG,EAAE,EACvE,KAAK,CACN,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,sCAAsC,WAAW,CAAC,OAAO,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACvH,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC;gBACtB,OAAO;gBACP,GAAG;gBACH,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,SAAS,GAAG,GAAG,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAC;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC;gBACtB,OAAO,EAAE,4CAA4C,WAAW,CAAC,OAAO,EAAE;gBAC1E,GAAG;gBACH,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,KAAK,CACX,qCAAqC,WAAW,CAAC,OAAO,QAAQ,GAAG,EAAE,EACrE,KAAK,CACN,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,15 +1,55 @@
1
1
  import { getEnvironmentsFromArgs } from "../../../common/index.js";
2
- import { getUserMorphoRewardsData } from "./common.js";
3
- export async function getMorphoUserRewards(client, args) {
4
- const environments = getEnvironmentsFromArgs(client, args);
5
- const environmentsUserRewards = await Promise.all(environments
6
- .filter((environment) => environment.contracts.morphoViews !== undefined)
7
- .map((environment) => {
8
- return getUserMorphoRewardsData({
9
- environment,
10
- account: args.userAddress,
2
+ import { MerklApiError, getUserMorphoRewardsData } from "./common.js";
3
+ /**
4
+ * AggregateError thrown by `getMorphoUserRewards` when one or more chains
5
+ * fail and `throwOnExternalApiError` is `true`. The `rewards` property
6
+ * carries the rewards from any chains that succeeded so callers can still
7
+ * surface partial results alongside the per-chain failures in `errors`.
8
+ */
9
+ export class MorphoUserRewardsAggregateError extends AggregateError {
10
+ constructor(errors, message, rewards) {
11
+ super(errors, message);
12
+ Object.defineProperty(this, "rewards", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
11
17
  });
12
- }));
13
- return environmentsUserRewards.flat();
18
+ this.name = "MorphoUserRewardsAggregateError";
19
+ this.rewards = rewards;
20
+ }
21
+ }
22
+ export async function getMorphoUserRewards(client, args) {
23
+ const targetEnvironments = getEnvironmentsFromArgs(client, args).filter((environment) => environment.contracts.morphoViews !== undefined);
24
+ const settled = await Promise.allSettled(targetEnvironments.map((environment) => getUserMorphoRewardsData({
25
+ environment,
26
+ account: args.userAddress,
27
+ ...(args.throwOnExternalApiError !== undefined && {
28
+ throwOnExternalApiError: args.throwOnExternalApiError,
29
+ }),
30
+ })));
31
+ const fulfilled = [];
32
+ const failures = [];
33
+ const failedChainIds = [];
34
+ for (const [i, result] of settled.entries()) {
35
+ const environment = targetEnvironments[i];
36
+ if (result.status === "fulfilled") {
37
+ fulfilled.push(...result.value);
38
+ continue;
39
+ }
40
+ const reason = result.reason;
41
+ if (reason instanceof MerklApiError) {
42
+ failures.push(reason);
43
+ failedChainIds.push(reason.chainId);
44
+ continue;
45
+ }
46
+ const baseError = reason instanceof Error ? reason : new Error(String(reason));
47
+ failures.push(new Error(`getMorphoUserRewards failed for chain ${environment.chainId}: ${baseError.message}`, { cause: baseError }));
48
+ failedChainIds.push(environment.chainId);
49
+ }
50
+ if (failures.length > 0 && args.throwOnExternalApiError === true) {
51
+ throw new MorphoUserRewardsAggregateError(failures, `getMorphoUserRewards failed for chains: ${failedChainIds.join(", ")}`, fulfilled);
52
+ }
53
+ return fulfilled;
14
54
  }
15
55
  //# sourceMappingURL=getMorphoUserRewards.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMorphoUserRewards.js","sourceRoot":"","sources":["../../../../actions/morpho/user-rewards/getMorphoUserRewards.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAInE,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAWvD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAIxC,MAAsB,EACtB,IAA2D;IAE3D,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAE3D,MAAM,uBAAuB,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/C,YAAY;SACT,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC;SACxE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;QACnB,OAAO,wBAAwB,CAAC;YAC9B,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,WAAW;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CACL,CAAC;IAEF,OAAO,uBAAuB,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"getMorphoUserRewards.js","sourceRoot":"","sources":["../../../../actions/morpho/user-rewards/getMorphoUserRewards.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAInE,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,OAAO,+BAAgC,SAAQ,cAAc;IAGjE,YAAY,MAAe,EAAE,OAAe,EAAE,OAA2B;QACvE,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAHhB;;;;;WAA4B;QAInC,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAuBD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAIxC,MAAsB,EACtB,IAA2D;IAE3D,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,CACrE,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,KAAK,SAAS,CACjE,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,kBAAkB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACrC,wBAAwB,CAAC;QACvB,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,WAAW;QACzB,GAAG,CAAC,IAAI,CAAC,uBAAuB,KAAK,SAAS,IAAI;YAChD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;SACtD,CAAC;KACH,CAAC,CACH,CACF,CAAC;IAEF,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAY,EAAE,CAAC;IAC7B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,MAAM,YAAY,aAAa,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GACb,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,QAAQ,CAAC,IAAI,CACX,IAAI,KAAK,CACP,yCAAyC,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAAE,EACpF,EAAE,KAAK,EAAE,SAAS,EAAE,CACrB,CACF,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,uBAAuB,KAAK,IAAI,EAAE,CAAC;QACjE,MAAM,IAAI,+BAA+B,CACvC,QAAQ,EACR,2CAA2C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACtE,SAAS,CACV,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}