@moonwell-fi/moonwell-sdk 0.10.1 → 0.10.3

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 (92) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/_cjs/actions/core/markets/common.js +17 -7
  3. package/_cjs/actions/core/markets/common.js.map +1 -1
  4. package/_cjs/actions/core/markets/getMarkets.js +17 -7
  5. package/_cjs/actions/core/markets/getMarkets.js.map +1 -1
  6. package/_cjs/actions/governance/common.js +37 -5
  7. package/_cjs/actions/governance/common.js.map +1 -1
  8. package/_cjs/actions/governance/getDelegates.js +17 -7
  9. package/_cjs/actions/governance/getDelegates.js.map +1 -1
  10. package/_cjs/actions/governance/getDiscussions.js +17 -7
  11. package/_cjs/actions/governance/getDiscussions.js.map +1 -1
  12. package/_cjs/actions/governance/getGovernanceTokenInfo.js +17 -7
  13. package/_cjs/actions/governance/getGovernanceTokenInfo.js.map +1 -1
  14. package/_cjs/actions/governance/getStakingInfo.js +6 -1
  15. package/_cjs/actions/governance/getStakingInfo.js.map +1 -1
  16. package/_cjs/actions/governance/getUserStakingInfo.js +2 -10
  17. package/_cjs/actions/governance/getUserStakingInfo.js.map +1 -1
  18. package/_cjs/actions/governance/proposals/getProposals.js +17 -7
  19. package/_cjs/actions/governance/proposals/getProposals.js.map +1 -1
  20. package/_cjs/actions/governance/snapshot/getSnapshotProposals.js +17 -7
  21. package/_cjs/actions/governance/snapshot/getSnapshotProposals.js.map +1 -1
  22. package/_cjs/actions/morpho/markets/getMorphoMarkets.js +17 -7
  23. package/_cjs/actions/morpho/markets/getMorphoMarkets.js.map +1 -1
  24. package/_cjs/actions/morpho/user-rewards/common.js +62 -89
  25. package/_cjs/actions/morpho/user-rewards/common.js.map +1 -1
  26. package/_cjs/actions/morpho/vaults/common.js +8 -0
  27. package/_cjs/actions/morpho/vaults/common.js.map +1 -1
  28. package/_cjs/actions/morpho/vaults/getMorphoVaults.js +17 -7
  29. package/_cjs/actions/morpho/vaults/getMorphoVaults.js.map +1 -1
  30. package/_cjs/environments/definitions/base/morpho-vaults.js +24 -0
  31. package/_cjs/environments/definitions/base/morpho-vaults.js.map +1 -1
  32. package/_cjs/environments/definitions/base/tokens.js +28 -4
  33. package/_cjs/environments/definitions/base/tokens.js.map +1 -1
  34. package/_cjs/errors/version.js +1 -1
  35. package/_esm/actions/governance/common.js +40 -5
  36. package/_esm/actions/governance/common.js.map +1 -1
  37. package/_esm/actions/governance/getStakingInfo.js +6 -1
  38. package/_esm/actions/governance/getStakingInfo.js.map +1 -1
  39. package/_esm/actions/governance/getUserStakingInfo.js +3 -12
  40. package/_esm/actions/governance/getUserStakingInfo.js.map +1 -1
  41. package/_esm/actions/morpho/user-rewards/common.js +71 -96
  42. package/_esm/actions/morpho/user-rewards/common.js.map +1 -1
  43. package/_esm/actions/morpho/vaults/common.js +11 -0
  44. package/_esm/actions/morpho/vaults/common.js.map +1 -1
  45. package/_esm/environments/definitions/base/morpho-vaults.js +24 -0
  46. package/_esm/environments/definitions/base/morpho-vaults.js.map +1 -1
  47. package/_esm/environments/definitions/base/tokens.js +28 -4
  48. package/_esm/environments/definitions/base/tokens.js.map +1 -1
  49. package/_esm/errors/version.js +1 -1
  50. package/_types/actions/core/markets/common.d.ts.map +1 -1
  51. package/_types/actions/core/user-positions/common.d.ts.map +1 -1
  52. package/_types/actions/core/user-rewards/common.d.ts.map +1 -1
  53. package/_types/actions/governance/common.d.ts +8 -1
  54. package/_types/actions/governance/common.d.ts.map +1 -1
  55. package/_types/actions/governance/getStakingInfo.d.ts.map +1 -1
  56. package/_types/actions/governance/getUserStakingInfo.d.ts.map +1 -1
  57. package/_types/actions/governance/proposals/common.d.ts.map +1 -1
  58. package/_types/actions/governance/snapshot/common.d.ts.map +1 -1
  59. package/_types/actions/morpho/user-rewards/common.d.ts.map +1 -1
  60. package/_types/actions/morpho/utils/accrueInterests.d.ts.map +1 -1
  61. package/_types/actions/morpho/utils/math.d.ts.map +1 -1
  62. package/_types/actions/morpho/vaults/common.d.ts.map +1 -1
  63. package/_types/client/createActions.d.ts.map +1 -1
  64. package/_types/client/createMoonwellClient.d.ts +107 -2433
  65. package/_types/client/createMoonwellClient.d.ts.map +1 -1
  66. package/_types/common/index.d.ts.map +1 -1
  67. package/_types/environments/definitions/arbitrum/environment.d.ts.map +1 -1
  68. package/_types/environments/definitions/avalanche/environment.d.ts.map +1 -1
  69. package/_types/environments/definitions/base/environment.d.ts.map +1 -1
  70. package/_types/environments/definitions/base/morpho-vaults.d.ts +24 -0
  71. package/_types/environments/definitions/base/morpho-vaults.d.ts.map +1 -1
  72. package/_types/environments/definitions/base/tokens.d.ts +28 -4
  73. package/_types/environments/definitions/base/tokens.d.ts.map +1 -1
  74. package/_types/environments/definitions/ethereum/environment.d.ts.map +1 -1
  75. package/_types/environments/definitions/moonbeam/environment.d.ts.map +1 -1
  76. package/_types/environments/definitions/moonriver/environment.d.ts.map +1 -1
  77. package/_types/environments/definitions/optimism/environment.d.ts.map +1 -1
  78. package/_types/environments/definitions/polygon/environment.d.ts.map +1 -1
  79. package/_types/environments/index.d.ts +52 -4
  80. package/_types/environments/index.d.ts.map +1 -1
  81. package/_types/environments/types/config.d.ts.map +1 -1
  82. package/_types/environments/utils/index.d.ts.map +1 -1
  83. package/_types/errors/version.d.ts +1 -1
  84. package/actions/governance/common.ts +75 -7
  85. package/actions/governance/getStakingInfo.ts +8 -3
  86. package/actions/governance/getUserStakingInfo.ts +3 -12
  87. package/actions/morpho/user-rewards/common.ts +113 -226
  88. package/actions/morpho/vaults/common.ts +15 -0
  89. package/environments/definitions/base/morpho-vaults.ts +28 -0
  90. package/environments/definitions/base/tokens.ts +28 -4
  91. package/errors/version.ts +1 -1
  92. package/package.json +1 -1
@@ -20,17 +20,19 @@ export async function getUserMorphoRewardsData(params: {
20
20
  environment: Environment;
21
21
  account: `0x${string}`;
22
22
  }): Promise<MorphoUserReward[]> {
23
- const merklRewards = await getMerklRewardsData(
24
- params.environment,
25
- params.account,
26
- );
23
+ const isFullDeployment =
24
+ params.environment.custom.morpho?.minimalDeployment === false;
25
+
26
+ const emptyMorphoRewards: MorphoRewardsResponse[] = [];
27
+ const [merklRewards, morphoRewards] = await Promise.all([
28
+ getMerklRewardsData(params.environment, params.account),
29
+ isFullDeployment
30
+ ? getMorphoRewardsData(params.environment, params.account)
31
+ : Promise.resolve(emptyMorphoRewards),
32
+ ]);
27
33
 
28
- if (params.environment.custom.morpho?.minimalDeployment === false) {
29
- const morphoRewards = await getMorphoRewardsData(
30
- params.environment,
31
- params.account,
32
- );
33
- // Process Morpho rewards
34
+ if (isFullDeployment) {
35
+ // Process Morpho rewards (GraphQL query depends on morphoRewards result)
34
36
  const morphoAssets = await getMorphoAssetsData(
35
37
  params.environment,
36
38
  morphoRewards.map((r) => r.asset.address),
@@ -189,6 +191,28 @@ export async function getUserMorphoRewardsData(params: {
189
191
  );
190
192
 
191
193
  // Process Merkl rewards
194
+ const vaultCampaignIds = new Set<string>(
195
+ (Object.values(publicEnvironments) as Environment[]).flatMap(
196
+ (environment) =>
197
+ Object.values(environment.config.vaults ?? {})
198
+ .map((vault) => vault.campaignId)
199
+ .filter((id): id is string => id !== undefined),
200
+ ),
201
+ );
202
+
203
+ const getVaultRewardAmount = (
204
+ breakdowns: any[],
205
+ field: "amount" | "claimed" | "pending",
206
+ ) => {
207
+ return breakdowns.reduce(
208
+ (acc, curr) =>
209
+ vaultCampaignIds.has(curr.campaignId)
210
+ ? acc + BigInt(curr[field])
211
+ : acc,
212
+ 0n,
213
+ );
214
+ };
215
+
192
216
  const merklResult: MorphoUserReward[] = [];
193
217
 
194
218
  for (const chainData of merklRewards) {
@@ -205,30 +229,6 @@ export async function getUserMorphoRewardsData(params: {
205
229
  name: morphoAsset?.name ?? reward.token.symbol,
206
230
  };
207
231
 
208
- const getVaultRewardAmount = (
209
- breakdowns: any[],
210
- field: "amount" | "claimed" | "pending",
211
- ) => {
212
- return breakdowns.reduce((acc, curr) => {
213
- // Check if campaign exists in vaults across all chains
214
- const isVaultCampaign = Object.values(publicEnvironments).some(
215
- (environment) => {
216
- // Check if environment has vaults
217
- if (
218
- environment.config.vaults &&
219
- Object.keys(environment.config.vaults).length > 0
220
- ) {
221
- return Object.values(environment.config.vaults).some(
222
- (vault) => vault.campaignId === curr.campaignId,
223
- );
224
- }
225
- return false;
226
- },
227
- );
228
- return isVaultCampaign ? acc + BigInt(curr[field]) : acc;
229
- }, 0n);
230
- };
231
-
232
232
  const amount = getVaultRewardAmount(reward.breakdowns, "amount");
233
233
  const claimed = getVaultRewardAmount(reward.breakdowns, "claimed");
234
234
  const pending = getVaultRewardAmount(reward.breakdowns, "pending");
@@ -319,6 +319,69 @@ export async function getUserMorphoStakingRewardsData(params: {
319
319
  return [];
320
320
  }
321
321
 
322
+ // Hoist shared contract reads outside the per-vault loop
323
+ const homeEnvironment =
324
+ (Object.values(publicEnvironments) as Environment[]).find((e) =>
325
+ e.custom?.governance?.chainIds?.includes(params.environment.chainId),
326
+ ) || params.environment;
327
+
328
+ const viewsContract = params.environment.contracts.views;
329
+ const homeViewsContract = homeEnvironment.contracts.views;
330
+
331
+ const [allMarkets, nativeTokenPriceRaw, governanceTokenPriceRaw] =
332
+ await Promise.all([
333
+ viewsContract?.read.getAllMarketsInfo(),
334
+ homeViewsContract?.read.getNativeTokenPrice(),
335
+ homeViewsContract?.read.getGovernanceTokenPrice(),
336
+ ]);
337
+
338
+ const governanceTokenPrice = new Amount(governanceTokenPriceRaw || 0n, 18);
339
+ const nativeTokenPrice = new Amount(nativeTokenPriceRaw || 0n, 18);
340
+
341
+ let tokenPrices =
342
+ allMarkets
343
+ ?.map((marketInfo) => {
344
+ const marketFound = findMarketByAddress(
345
+ params.environment,
346
+ marketInfo.market,
347
+ );
348
+ if (marketFound) {
349
+ return {
350
+ token: marketFound.underlyingToken,
351
+ tokenPrice: new Amount(
352
+ marketInfo.underlyingPrice,
353
+ 36 - marketFound.underlyingToken.decimals,
354
+ ),
355
+ };
356
+ } else {
357
+ return;
358
+ }
359
+ })
360
+ .filter((token) => !!token) || [];
361
+
362
+ // Add governance token to token prices
363
+ if (params.environment.custom?.governance?.token) {
364
+ tokenPrices = [
365
+ ...tokenPrices,
366
+ {
367
+ token:
368
+ params.environment.config.tokens[
369
+ params.environment.custom.governance.token
370
+ ]!,
371
+ tokenPrice: governanceTokenPrice,
372
+ },
373
+ ];
374
+ }
375
+
376
+ // Add native token to token prices
377
+ tokenPrices = [
378
+ ...tokenPrices,
379
+ {
380
+ token: findTokenByAddress(params.environment, zeroAddress)!,
381
+ tokenPrice: nativeTokenPrice,
382
+ },
383
+ ];
384
+
322
385
  const rewards = await Promise.all(
323
386
  vaultsWithStaking.map(async (vault) => {
324
387
  if (!vault.multiReward) return [];
@@ -329,73 +392,6 @@ export async function getUserMorphoStakingRewardsData(params: {
329
392
  vault.multiReward,
330
393
  );
331
394
 
332
- const homeEnvironment =
333
- (Object.values(publicEnvironments) as Environment[]).find((e) =>
334
- e.custom?.governance?.chainIds?.includes(params.environment.chainId),
335
- ) || params.environment;
336
-
337
- const viewsContract = params.environment.contracts.views;
338
- const homeViewsContract = homeEnvironment.contracts.views;
339
-
340
- const userData = await Promise.all([
341
- viewsContract?.read.getAllMarketsInfo(),
342
- homeViewsContract?.read.getNativeTokenPrice(),
343
- homeViewsContract?.read.getGovernanceTokenPrice(),
344
- ]);
345
-
346
- const [allMarkets, nativeTokenPriceRaw, governanceTokenPriceRaw] =
347
- userData;
348
-
349
- const governanceTokenPrice = new Amount(
350
- governanceTokenPriceRaw || 0n,
351
- 18,
352
- );
353
- const nativeTokenPrice = new Amount(nativeTokenPriceRaw || 0n, 18);
354
-
355
- let tokenPrices =
356
- allMarkets
357
- ?.map((marketInfo) => {
358
- const marketFound = findMarketByAddress(
359
- params.environment,
360
- marketInfo.market,
361
- );
362
- if (marketFound) {
363
- return {
364
- token: marketFound.underlyingToken,
365
- tokenPrice: new Amount(
366
- marketInfo.underlyingPrice,
367
- 36 - marketFound.underlyingToken.decimals,
368
- ),
369
- };
370
- } else {
371
- return;
372
- }
373
- })
374
- .filter((token) => !!token) || [];
375
-
376
- // Add governance token to token prices
377
- if (params.environment.custom?.governance?.token) {
378
- tokenPrices = [
379
- ...tokenPrices,
380
- {
381
- token:
382
- params.environment.config.tokens[
383
- params.environment.custom.governance.token
384
- ]!,
385
- tokenPrice: governanceTokenPrice,
386
- },
387
- ];
388
- }
389
-
390
- // Add native token to token prices
391
- tokenPrices = [
392
- ...tokenPrices,
393
- {
394
- token: findTokenByAddress(params.environment, zeroAddress)!,
395
- tokenPrice: nativeTokenPrice,
396
- },
397
- ];
398
-
399
395
  return vaultRewards
400
396
  .filter((reward): reward is { amount: Amount; token: TokenConfig } => {
401
397
  return reward !== undefined && reward.amount.value > 0;
@@ -587,140 +583,31 @@ type MerklRewardsResponse = {
587
583
  }>;
588
584
  };
589
585
 
590
- // Types for Merkl Opportunities API
591
- type MerklToken = {
592
- id: string;
593
- name: string;
594
- chainId: number;
595
- address: string;
596
- decimals: number;
597
- symbol: string;
598
- displaySymbol: string;
599
- icon: string;
600
- verified: boolean;
601
- isTest: boolean;
602
- type: string;
603
- isNative: boolean;
604
- price: number;
605
- };
606
-
607
- type MerklRewardBreakdown = {
608
- token: MerklToken;
609
- amount: string;
610
- value: number;
611
- distributionType: string;
612
- id: string;
613
- timestamp: string;
614
- campaignId: string;
615
- dailyRewardsRecordId: string;
616
- };
617
-
618
- type MerklOpportunity = {
619
- chainId: number;
620
- type: string;
621
- identifier: string;
622
- name: string;
623
- description: string;
624
- howToSteps: string[];
625
- status: string;
626
- action: string;
627
- tvl: number;
628
- apr: number;
629
- dailyRewards: number;
630
- tags: any[];
631
- id: string;
632
- depositUrl: string;
633
- explorerAddress: string;
634
- lastCampaignCreatedAt: number;
635
- aprRecord: {
636
- cumulated: number;
637
- timestamp: string;
638
- breakdowns: {
639
- distributionType: string;
640
- identifier: string;
641
- type: string;
642
- value: number;
643
- timestamp: string;
644
- }[];
645
- };
646
- rewardsRecord: {
647
- id: string;
648
- total: number;
649
- timestamp: string;
650
- breakdowns: MerklRewardBreakdown[];
651
- };
652
- };
653
-
654
586
  async function getMerklRewardsData(
655
587
  environment: Environment,
656
588
  account: Address,
657
589
  ): Promise<MerklRewardsResponse[]> {
658
590
  try {
659
- // Get unique chain IDs from vault opportunities
660
- const chainIdsPromises = Object.values(environment.config.vaults).map(
661
- async (vault) => {
662
- try {
663
- const response = await fetch(
664
- `https://api.merkl.xyz/v4/opportunities?identifier=${environment.config.tokens[vault.vaultToken]?.address}&chainId=${environment.chainId}&status=LIVE`,
665
- {
666
- headers: MOONWELL_FETCH_JSON_HEADERS,
667
- },
668
- );
669
-
670
- if (!response.ok) {
671
- console.warn(
672
- `Failed to fetch opportunities: ${response.status} ${response.statusText}`,
673
- );
674
- return [];
675
- }
676
-
677
- const data: MerklOpportunity[] = await response.json();
678
- return data.flatMap((opportunity) =>
679
- opportunity.rewardsRecord.breakdowns.map(
680
- (breakdown) => breakdown.token.chainId,
681
- ),
682
- );
683
- } catch (error) {
684
- console.warn(
685
- `Error fetching opportunities for vault ${vault.vaultToken}:`,
686
- error,
687
- );
688
- return [];
689
- }
591
+ // Merkl campaigns always distribute rewards on the same chain as the
592
+ // opportunity, so environment.chainId is the only chain we need to query.
593
+ // The previous two-phase approach (fetch opportunities per vault extract
594
+ // chain IDs → fetch rewards per chain) made N+1 HTTP calls to discover
595
+ // a chain ID we already know.
596
+ const response = await fetch(
597
+ `https://api.merkl.xyz/v4/users/${account}/rewards?chainId=${environment.chainId}&test=false&breakdownPage=0&reloadChainId=${environment.chainId}`,
598
+ {
599
+ headers: MOONWELL_FETCH_JSON_HEADERS,
690
600
  },
691
601
  );
692
602
 
693
- const chainIds = [...new Set((await Promise.all(chainIdsPromises)).flat())];
694
-
695
- // Fetch rewards for each unique chain ID
696
- const rewardsPromises = chainIds.map(async (chainId) => {
697
- try {
698
- const response = await fetch(
699
- `https://api.merkl.xyz/v4/users/${account}/rewards?chainId=${chainId}&test=false&breakdownPage=0&reloadChainId=${chainId}`,
700
- {
701
- headers: MOONWELL_FETCH_JSON_HEADERS,
702
- },
703
- );
704
-
705
- if (!response.ok) {
706
- console.warn(
707
- `Merkl API request failed: ${response.status} ${response.statusText}`,
708
- );
709
- return [];
710
- }
711
-
712
- return (await response.json()) as MerklRewardsResponse[];
713
- } catch (error) {
714
- console.warn(
715
- `Error fetching Merkl rewards for chain ${chainId}:`,
716
- error,
717
- );
718
- return [];
719
- }
720
- });
603
+ if (!response.ok) {
604
+ console.warn(
605
+ `Merkl API request failed: ${response.status} ${response.statusText}`,
606
+ );
607
+ return [];
608
+ }
721
609
 
722
- const allRewards = await Promise.all(rewardsPromises);
723
- return allRewards.flat();
610
+ return (await response.json()) as MerklRewardsResponse[];
724
611
  } catch (error) {
725
612
  console.error("Error in getMerklRewardsData:", error);
726
613
  return [];
@@ -847,6 +847,21 @@ async function getMorphoVaultsDataFromOnChain(params: {
847
847
  },
848
848
  );
849
849
 
850
+ // For V2 vaults, normalize allocations to reflect deployed asset distribution
851
+ // V2 vaults may have idle capital not deployed to adapters, which causes
852
+ // raw allocations to sum to less than 100% of total vault assets
853
+ if (vaultConfig.version === 2) {
854
+ const totalAllocation = markets.reduce(
855
+ (sum, m) => sum + m.allocation,
856
+ 0,
857
+ );
858
+ if (totalAllocation > 0) {
859
+ for (const market of markets) {
860
+ market.allocation = market.allocation / totalAllocation;
861
+ }
862
+ }
863
+ }
864
+
850
865
  // Only calculate baseApy from markets for v1 vaults
851
866
  // v2 vaults already have baseApy from Morpho API
852
867
  if (vaultConfig.version !== 2) {
@@ -9,24 +9,52 @@ export const vaults = createVaultConfig({
9
9
  vaultToken: "mwETH",
10
10
  campaignId:
11
11
  "0x1df9a935f6b928b4809c4fda483f16839140864b2b412cc5fea85fd5d9d00e57",
12
+ version: 2,
13
+ },
14
+ mwETHv1: {
15
+ underlyingToken: "ETH",
16
+ vaultToken: "mwETHv1",
17
+ campaignId:
18
+ "0x1df9a935f6b928b4809c4fda483f16839140864b2b412cc5fea85fd5d9d00e57",
12
19
  },
13
20
  mwUSDC: {
14
21
  underlyingToken: "USDC",
15
22
  vaultToken: "mwUSDC",
16
23
  campaignId:
17
24
  "0xec43a3d75ae25c5255eb06b3aac6b79ccb2cdb6b99740ea13553661b0f06b756",
25
+ version: 2,
26
+ },
27
+ mwUSDCv1: {
28
+ underlyingToken: "USDC",
29
+ vaultToken: "mwUSDCv1",
30
+ campaignId:
31
+ "0xec43a3d75ae25c5255eb06b3aac6b79ccb2cdb6b99740ea13553661b0f06b756",
18
32
  },
19
33
  mwEURC: {
20
34
  underlyingToken: "EURC",
21
35
  vaultToken: "mwEURC",
22
36
  campaignId:
23
37
  "0x03430078e052d58b6e80fa8e373c38a75736f1d24768b9c92a2e44bc4ce62b1d",
38
+ version: 2,
39
+ },
40
+ mwEURCv1: {
41
+ underlyingToken: "EURC",
42
+ vaultToken: "mwEURCv1",
43
+ campaignId:
44
+ "0x03430078e052d58b6e80fa8e373c38a75736f1d24768b9c92a2e44bc4ce62b1d",
24
45
  },
25
46
  mwcbBTC: {
26
47
  underlyingToken: "cbBTC",
27
48
  vaultToken: "mwcbBTC",
28
49
  campaignId:
29
50
  "0xb230a09331c22280ae3e02a65caad21a553274912352d8f93c7a92c0f9bb3da4",
51
+ version: 2,
52
+ },
53
+ mwcbBTCv1: {
54
+ underlyingToken: "cbBTC",
55
+ vaultToken: "mwcbBTCv1",
56
+ campaignId:
57
+ "0xb230a09331c22280ae3e02a65caad21a553274912352d8f93c7a92c0f9bb3da4",
30
58
  },
31
59
  meUSDC: {
32
60
  underlyingToken: "USDC",
@@ -141,29 +141,53 @@ export const tokens = createTokenConfig({
141
141
  symbol: "mEURC",
142
142
  },
143
143
  mwETH: {
144
- address: "0xa0E430870c4604CcfC7B38Ca7845B1FF653D0ff1",
144
+ address: "0x89BeDBB1C4837444Da215A377275Ff96A84D6f53",
145
145
  decimals: 18,
146
146
  name: "Moonwell Flagship ETH",
147
147
  symbol: "mwETH",
148
148
  },
149
+ mwETHv1: {
150
+ address: "0xa0E430870c4604CcfC7B38Ca7845B1FF653D0ff1",
151
+ decimals: 18,
152
+ name: "Moonwell Flagship ETH V1",
153
+ symbol: "mwETHv1",
154
+ },
149
155
  mwUSDC: {
150
- address: "0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca",
156
+ address: "0x48a90E85be5C56b0A669985A12ee7C449fC79965",
151
157
  decimals: 18,
152
158
  name: "Moonwell Flagship USDC",
153
159
  symbol: "mwUSDC",
154
160
  },
161
+ mwUSDCv1: {
162
+ address: "0xc1256Ae5FF1cf2719D4937adb3bbCCab2E00A2Ca",
163
+ decimals: 18,
164
+ name: "Moonwell Flagship USDC V1",
165
+ symbol: "mwUSDCv1",
166
+ },
155
167
  mwEURC: {
156
- address: "0xf24608E0CCb972b0b0f4A6446a0BBf58c701a026",
168
+ address: "0x5083b1387Ec3d4Ee6467B83890D98f1AF93F7c48",
157
169
  decimals: 18,
158
170
  name: "Moonwell Flagship EURC",
159
171
  symbol: "mwEURC",
160
172
  },
173
+ mwEURCv1: {
174
+ address: "0xf24608E0CCb972b0b0f4A6446a0BBf58c701a026",
175
+ decimals: 18,
176
+ name: "Moonwell Flagship EURC V1",
177
+ symbol: "mwEURCv1",
178
+ },
161
179
  mwcbBTC: {
162
- address: "0x543257eF2161176D7C8cD90BA65C2d4CaEF5a796",
180
+ address: "0xdbA76Bc542bb07538e046B40F2e8a215B409F7A8",
163
181
  decimals: 18,
164
182
  name: "Moonwell Frontier cbBTC",
165
183
  symbol: "mwcbBTC",
166
184
  },
185
+ mwcbBTCv1: {
186
+ address: "0x543257eF2161176D7C8cD90BA65C2d4CaEF5a796",
187
+ decimals: 18,
188
+ name: "Moonwell Frontier cbBTC V1",
189
+ symbol: "mwcbBTCv1",
190
+ },
167
191
  WELL: {
168
192
  address: "0xA88594D404727625A9437C3f886C7643872296AE",
169
193
  decimals: 18,
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '0.10.1'
1
+ export const version = '0.10.3'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@moonwell-fi/moonwell-sdk",
3
3
  "description": "TypeScript Interface for Moonwell",
4
- "version": "0.10.1",
4
+ "version": "0.10.3",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",