@moonwell-fi/moonwell-sdk 0.21.0 → 0.23.0

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 (173) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +9 -3
  3. package/_cjs/actions/beam/common.js +1 -2
  4. package/_cjs/actions/beam/common.js.map +1 -1
  5. package/_cjs/actions/core/getUserBalances.js +11 -24
  6. package/_cjs/actions/core/getUserBalances.js.map +1 -1
  7. package/_cjs/actions/core/markets/common.js +146 -96
  8. package/_cjs/actions/core/markets/common.js.map +1 -1
  9. package/_cjs/actions/governance/getDelegates.js +2 -7
  10. package/_cjs/actions/governance/getDelegates.js.map +1 -1
  11. package/_cjs/actions/governance/getGovernanceTokenInfo.js +7 -12
  12. package/_cjs/actions/governance/getGovernanceTokenInfo.js.map +1 -1
  13. package/_cjs/actions/governance/getUserVoteReceipt.js +5 -4
  14. package/_cjs/actions/governance/getUserVoteReceipt.js.map +1 -1
  15. package/_cjs/actions/governance/governor-api-client.js.map +1 -1
  16. package/_cjs/actions/governance/proposals/common.js +73 -6
  17. package/_cjs/actions/governance/proposals/common.js.map +1 -1
  18. package/_cjs/actions/governance/proposals/getProposal.js +6 -73
  19. package/_cjs/actions/governance/proposals/getProposal.js.map +1 -1
  20. package/_cjs/actions/governance/proposals/getProposals.js +12 -92
  21. package/_cjs/actions/governance/proposals/getProposals.js.map +1 -1
  22. package/_cjs/client/createMoonwellClient.js +17 -15
  23. package/_cjs/client/createMoonwellClient.js.map +1 -1
  24. package/_cjs/common/index.js +4 -4
  25. package/_cjs/common/index.js.map +1 -1
  26. package/_cjs/environments/definitions/governance.js +1 -8
  27. package/_cjs/environments/definitions/governance.js.map +1 -1
  28. package/_cjs/environments/index.js +28 -42
  29. package/_cjs/environments/index.js.map +1 -1
  30. package/_cjs/environments/types/config.js.map +1 -1
  31. package/_cjs/errors/version.js +1 -1
  32. package/_esm/actions/beam/common.js +3 -2
  33. package/_esm/actions/beam/common.js.map +1 -1
  34. package/_esm/actions/core/getUserBalances.js +23 -24
  35. package/_esm/actions/core/getUserBalances.js.map +1 -1
  36. package/_esm/actions/core/markets/common.js +192 -104
  37. package/_esm/actions/core/markets/common.js.map +1 -1
  38. package/_esm/actions/governance/getDelegates.js +8 -8
  39. package/_esm/actions/governance/getDelegates.js.map +1 -1
  40. package/_esm/actions/governance/getGovernanceTokenInfo.js +20 -13
  41. package/_esm/actions/governance/getGovernanceTokenInfo.js.map +1 -1
  42. package/_esm/actions/governance/getUserVoteReceipt.js +16 -5
  43. package/_esm/actions/governance/getUserVoteReceipt.js.map +1 -1
  44. package/_esm/actions/governance/governor-api-client.js +14 -5
  45. package/_esm/actions/governance/governor-api-client.js.map +1 -1
  46. package/_esm/actions/governance/proposals/common.js +122 -10
  47. package/_esm/actions/governance/proposals/common.js.map +1 -1
  48. package/_esm/actions/governance/proposals/getProposal.js +16 -93
  49. package/_esm/actions/governance/proposals/getProposal.js.map +1 -1
  50. package/_esm/actions/governance/proposals/getProposals.js +37 -132
  51. package/_esm/actions/governance/proposals/getProposals.js.map +1 -1
  52. package/_esm/client/createMoonwellClient.js +24 -16
  53. package/_esm/client/createMoonwellClient.js.map +1 -1
  54. package/_esm/common/index.js +15 -4
  55. package/_esm/common/index.js.map +1 -1
  56. package/_esm/environments/definitions/governance.js +5 -9
  57. package/_esm/environments/definitions/governance.js.map +1 -1
  58. package/_esm/environments/index.js +2 -14
  59. package/_esm/environments/index.js.map +1 -1
  60. package/_esm/environments/types/config.js.map +1 -1
  61. package/_esm/errors/version.js +1 -1
  62. package/_types/actions/beam/common.d.ts +1 -1
  63. package/_types/actions/beam/common.d.ts.map +1 -1
  64. package/_types/actions/core/getUserBalances.d.ts.map +1 -1
  65. package/_types/actions/core/markets/common.d.ts.map +1 -1
  66. package/_types/actions/governance/getGovernanceTokenInfo.d.ts.map +1 -1
  67. package/_types/actions/governance/getUserVoteReceipt.d.ts.map +1 -1
  68. package/_types/actions/governance/governor-api-client.d.ts +14 -5
  69. package/_types/actions/governance/governor-api-client.d.ts.map +1 -1
  70. package/_types/actions/governance/proposals/common.d.ts +41 -6
  71. package/_types/actions/governance/proposals/common.d.ts.map +1 -1
  72. package/_types/actions/governance/proposals/getProposal.d.ts +1 -1
  73. package/_types/actions/governance/proposals/getProposal.d.ts.map +1 -1
  74. package/_types/actions/governance/proposals/getProposals.d.ts +1 -1
  75. package/_types/actions/governance/proposals/getProposals.d.ts.map +1 -1
  76. package/_types/client/createMoonwellClient.d.ts +10 -843
  77. package/_types/client/createMoonwellClient.d.ts.map +1 -1
  78. package/_types/common/index.d.ts +11 -0
  79. package/_types/common/index.d.ts.map +1 -1
  80. package/_types/environments/definitions/governance.d.ts +0 -7
  81. package/_types/environments/definitions/governance.d.ts.map +1 -1
  82. package/_types/environments/index.d.ts +7 -518
  83. package/_types/environments/index.d.ts.map +1 -1
  84. package/_types/environments/types/config.d.ts +22 -8
  85. package/_types/environments/types/config.d.ts.map +1 -1
  86. package/_types/errors/version.d.ts +1 -1
  87. package/actions/beam/common.ts +4 -9
  88. package/actions/core/getUserBalances.ts +25 -31
  89. package/actions/core/markets/common.ts +307 -166
  90. package/actions/governance/getDelegates.ts +8 -8
  91. package/actions/governance/getGovernanceTokenInfo.ts +23 -15
  92. package/actions/governance/getUserVoteReceipt.ts +19 -5
  93. package/actions/governance/governor-api-client.ts +14 -5
  94. package/actions/governance/proposals/common.ts +143 -10
  95. package/actions/governance/proposals/getProposal.ts +29 -112
  96. package/actions/governance/proposals/getProposals.ts +52 -153
  97. package/client/createMoonwellClient.ts +34 -44
  98. package/common/index.ts +17 -6
  99. package/environments/definitions/governance.ts +5 -9
  100. package/environments/index.ts +34 -71
  101. package/environments/types/config.ts +24 -8
  102. package/errors/version.ts +1 -1
  103. package/package.json +1 -1
  104. package/_cjs/environments/definitions/moonbeam/contracts.js +0 -22
  105. package/_cjs/environments/definitions/moonbeam/contracts.js.map +0 -1
  106. package/_cjs/environments/definitions/moonbeam/core-markets.js +0 -65
  107. package/_cjs/environments/definitions/moonbeam/core-markets.js.map +0 -1
  108. package/_cjs/environments/definitions/moonbeam/custom.js +0 -24
  109. package/_cjs/environments/definitions/moonbeam/custom.js.map +0 -1
  110. package/_cjs/environments/definitions/moonbeam/environment.js +0 -38
  111. package/_cjs/environments/definitions/moonbeam/environment.js.map +0 -1
  112. package/_cjs/environments/definitions/moonbeam/tokens.js +0 -176
  113. package/_cjs/environments/definitions/moonbeam/tokens.js.map +0 -1
  114. package/_cjs/environments/definitions/moonriver/contracts.js +0 -19
  115. package/_cjs/environments/definitions/moonriver/contracts.js.map +0 -1
  116. package/_cjs/environments/definitions/moonriver/core-markets.js +0 -46
  117. package/_cjs/environments/definitions/moonriver/core-markets.js.map +0 -1
  118. package/_cjs/environments/definitions/moonriver/custom.js +0 -12
  119. package/_cjs/environments/definitions/moonriver/custom.js.map +0 -1
  120. package/_cjs/environments/definitions/moonriver/environment.js +0 -36
  121. package/_cjs/environments/definitions/moonriver/environment.js.map +0 -1
  122. package/_cjs/environments/definitions/moonriver/tokens.js +0 -110
  123. package/_cjs/environments/definitions/moonriver/tokens.js.map +0 -1
  124. package/_esm/environments/definitions/moonbeam/contracts.js +0 -19
  125. package/_esm/environments/definitions/moonbeam/contracts.js.map +0 -1
  126. package/_esm/environments/definitions/moonbeam/core-markets.js +0 -62
  127. package/_esm/environments/definitions/moonbeam/core-markets.js.map +0 -1
  128. package/_esm/environments/definitions/moonbeam/custom.js +0 -21
  129. package/_esm/environments/definitions/moonbeam/custom.js.map +0 -1
  130. package/_esm/environments/definitions/moonbeam/environment.js +0 -32
  131. package/_esm/environments/definitions/moonbeam/environment.js.map +0 -1
  132. package/_esm/environments/definitions/moonbeam/tokens.js +0 -173
  133. package/_esm/environments/definitions/moonbeam/tokens.js.map +0 -1
  134. package/_esm/environments/definitions/moonriver/contracts.js +0 -16
  135. package/_esm/environments/definitions/moonriver/contracts.js.map +0 -1
  136. package/_esm/environments/definitions/moonriver/core-markets.js +0 -43
  137. package/_esm/environments/definitions/moonriver/core-markets.js.map +0 -1
  138. package/_esm/environments/definitions/moonriver/custom.js +0 -9
  139. package/_esm/environments/definitions/moonriver/custom.js.map +0 -1
  140. package/_esm/environments/definitions/moonriver/environment.js +0 -31
  141. package/_esm/environments/definitions/moonriver/environment.js.map +0 -1
  142. package/_esm/environments/definitions/moonriver/tokens.js +0 -107
  143. package/_esm/environments/definitions/moonriver/tokens.js.map +0 -1
  144. package/_types/environments/definitions/moonbeam/contracts.d.ts +0 -14
  145. package/_types/environments/definitions/moonbeam/contracts.d.ts.map +0 -1
  146. package/_types/environments/definitions/moonbeam/core-markets.d.ts +0 -57
  147. package/_types/environments/definitions/moonbeam/core-markets.d.ts.map +0 -1
  148. package/_types/environments/definitions/moonbeam/custom.d.ts +0 -25
  149. package/_types/environments/definitions/moonbeam/custom.d.ts.map +0 -1
  150. package/_types/environments/definitions/moonbeam/environment.d.ts +0 -265
  151. package/_types/environments/definitions/moonbeam/environment.d.ts.map +0 -1
  152. package/_types/environments/definitions/moonbeam/tokens.d.ts +0 -171
  153. package/_types/environments/definitions/moonbeam/tokens.d.ts.map +0 -1
  154. package/_types/environments/definitions/moonriver/contracts.d.ts +0 -11
  155. package/_types/environments/definitions/moonriver/contracts.d.ts.map +0 -1
  156. package/_types/environments/definitions/moonriver/core-markets.d.ts +0 -38
  157. package/_types/environments/definitions/moonriver/core-markets.d.ts.map +0 -1
  158. package/_types/environments/definitions/moonriver/custom.d.ts +0 -8
  159. package/_types/environments/definitions/moonriver/custom.d.ts.map +0 -1
  160. package/_types/environments/definitions/moonriver/environment.d.ts +0 -159
  161. package/_types/environments/definitions/moonriver/environment.d.ts.map +0 -1
  162. package/_types/environments/definitions/moonriver/tokens.d.ts +0 -105
  163. package/_types/environments/definitions/moonriver/tokens.d.ts.map +0 -1
  164. package/environments/definitions/moonbeam/contracts.ts +0 -19
  165. package/environments/definitions/moonbeam/core-markets.ts +0 -62
  166. package/environments/definitions/moonbeam/custom.ts +0 -21
  167. package/environments/definitions/moonbeam/environment.ts +0 -39
  168. package/environments/definitions/moonbeam/tokens.ts +0 -173
  169. package/environments/definitions/moonriver/contracts.ts +0 -16
  170. package/environments/definitions/moonriver/core-markets.ts +0 -43
  171. package/environments/definitions/moonriver/custom.ts +0 -9
  172. package/environments/definitions/moonriver/environment.ts +0 -38
  173. package/environments/definitions/moonriver/tokens.ts +0 -107
@@ -5,8 +5,7 @@ import {
5
5
  type BaseEnvironment,
6
6
  type Environment,
7
7
  type EthereumEnvironment,
8
- type MoonbeamEnvironment,
9
- type MoonriverEnvironment,
8
+ type OnErrorContext,
10
9
  type OptimismEnvironment,
11
10
  type PolygonEnvironment,
12
11
  type SupportedChains,
@@ -15,10 +14,9 @@ import {
15
14
  base,
16
15
  createEnvironment,
17
16
  ethereum,
18
- moonbeam,
19
- moonriver,
20
17
  optimism,
21
18
  polygon,
19
+ supportedChains,
22
20
  } from "../environments/index.js";
23
21
  import { actions } from "./createActions.js";
24
22
 
@@ -33,16 +31,6 @@ export type MoonwellClient<
33
31
  name,
34
32
  "optimism"
35
33
  >]: OptimismEnvironment;
36
- } & {
37
- [name in keyof environments as Extract<
38
- name,
39
- "moonbeam"
40
- >]: MoonbeamEnvironment;
41
- } & {
42
- [name in keyof environments as Extract<
43
- name,
44
- "moonriver"
45
- >]: MoonriverEnvironment;
46
34
  } & {
47
35
  [name in keyof environments as Extract<
48
36
  name,
@@ -77,34 +65,46 @@ export type NetworksConfig<networks> = {} extends networks
77
65
 
78
66
  export const createMoonwellClient = <const networks>(config: {
79
67
  networks: NetworksConfig<Narrow<networks>>;
80
- onError?: (
81
- error: unknown,
82
- context: { source: string; chainId: number },
83
- ) => void;
68
+ onError?: (error: unknown, context: OnErrorContext) => void;
84
69
  }) => {
85
70
  const environments = Object.entries(
86
71
  config.networks as NetworksConfig<SupportedChains>,
87
72
  ).reduce((prev, [curr, networkConfig]) => {
88
73
  if (!networkConfig) return prev;
74
+
75
+ // Every supported key gets its own branch and unknown keys throw. The old
76
+ // shape ended in a bare `: polygon` fallthrough, so a key TypeScript would
77
+ // have rejected — `moonbeam`/`moonriver` after the sunset (MOO-551), or any
78
+ // typo from a JS consumer — silently built a *Polygon* environment stored
79
+ // under that key, wired with Polygon addresses over the caller's RPC. Fail
80
+ // loudly instead, matching `createEnvironment`'s "Unsupported chainId".
81
+ const chain =
82
+ curr === "base"
83
+ ? base
84
+ : curr === "optimism"
85
+ ? optimism
86
+ : curr === "ethereum"
87
+ ? ethereum
88
+ : curr === "avalanche"
89
+ ? avalanche
90
+ : curr === "arbitrum"
91
+ ? arbitrum
92
+ : curr === "polygon"
93
+ ? polygon
94
+ : undefined;
95
+
96
+ if (!chain) {
97
+ throw new Error(
98
+ `Unsupported network "${curr}". Supported networks: ${Object.keys(
99
+ supportedChains,
100
+ ).join(", ")}.`,
101
+ );
102
+ }
103
+
89
104
  return {
90
105
  ...prev,
91
106
  [curr]: createEnvironment({
92
- chain:
93
- curr === "base"
94
- ? base
95
- : curr === "optimism"
96
- ? optimism
97
- : curr === "moonbeam"
98
- ? moonbeam
99
- : curr === "moonriver"
100
- ? moonriver
101
- : curr === "ethereum"
102
- ? ethereum
103
- : curr === "avalanche"
104
- ? avalanche
105
- : curr === "arbitrum"
106
- ? arbitrum
107
- : polygon,
107
+ chain,
108
108
  rpcUrls: networkConfig.rpcUrls,
109
109
  }),
110
110
  };
@@ -116,16 +116,6 @@ export const createMoonwellClient = <const networks>(config: {
116
116
  name,
117
117
  "optimism"
118
118
  >]: OptimismEnvironment;
119
- } & {
120
- [name in keyof networks as Extract<
121
- name,
122
- "moonbeam"
123
- >]: MoonbeamEnvironment;
124
- } & {
125
- [name in keyof networks as Extract<
126
- name,
127
- "moonriver"
128
- >]: MoonriverEnvironment;
129
119
  } & {
130
120
  [name in keyof networks as Extract<
131
121
  name,
package/common/index.ts CHANGED
@@ -136,6 +136,17 @@ export const getEnvironmentFromArgs = (
136
136
  return undefined;
137
137
  };
138
138
 
139
+ /**
140
+ * Resolve the environments an action should run against.
141
+ *
142
+ * A `chainId`/`network` that matches no registered environment yields an EMPTY
143
+ * array, not `[undefined]`. The single-element-holding-undefined shape used to
144
+ * leak out of here and every caller dereferences what it gets back, so an
145
+ * unmatched selector crashed with an opaque `Cannot read properties of
146
+ * undefined` instead of hitting the caller's own "nothing to do" guard. That
147
+ * became reachable on ordinary input once Moonbeam/Moonriver stopped being
148
+ * registrable (MOO-551) while `getProposal` still teaches callers to pass 1284.
149
+ */
139
150
  export const getEnvironmentsFromArgs = (
140
151
  client: MoonwellClient,
141
152
  args?: { chainId?: number; network?: any },
@@ -150,15 +161,15 @@ export const getEnvironmentsFromArgs = (
150
161
  };
151
162
 
152
163
  if (Number.isInteger(chainId)) {
153
- return [
154
- Object.values(client.environments).find(
155
- (env) => env.chainId === chainId,
156
- ),
157
- ] as Environment[];
164
+ const matched = Object.values(client.environments).find(
165
+ (env) => env.chainId === chainId,
166
+ );
167
+ return matched ? [matched] : [];
158
168
  }
159
169
 
160
170
  if (network) {
161
- return [client.environments[network]] as Environment[];
171
+ const matched = client.environments[network];
172
+ return matched ? [matched] : [];
162
173
  }
163
174
  }
164
175
  return Object.values(client.environments as Environment[]).filter((r) =>
@@ -1,4 +1,4 @@
1
- import { base, mainnet, moonbeam, moonriver, optimism } from "viem/chains";
1
+ import { base, mainnet, optimism } from "viem/chains";
2
2
 
3
3
  export interface GovernanceTokenInfo {
4
4
  id: string;
@@ -23,14 +23,10 @@ export const GovernanceTokensConfig = createGovernanceTokensConfig({
23
23
  id: "WELL",
24
24
  symbol: "WELL",
25
25
  name: "WELL",
26
- chainIds: [moonbeam.id, base.id, optimism.id, mainnet.id] as number[],
27
- testnet: false,
28
- },
29
- MFAM: {
30
- id: "MFAM",
31
- symbol: "MFAM",
32
- name: "MFAM",
33
- chainIds: [moonriver.id] as number[],
26
+ // Moonbeam (1284) dropped with the sunset (MOO-551): the chain is halted, so
27
+ // it can no longer serve voting-power reads. MFAM/Moonriver is gone for the
28
+ // same reason — Apollo governance ended with the chain.
29
+ chainIds: [base.id, optimism.id, mainnet.id] as number[],
34
30
  testnet: false,
35
31
  },
36
32
  });
@@ -15,18 +15,6 @@ import {
15
15
  createEnvironment as createBaseEnvironment,
16
16
  } from "./definitions/base/environment.js";
17
17
 
18
- import {
19
- createEnvironment as createMoonbeamEnvironment,
20
- type markets as moonbeamMarkets,
21
- type tokens as moonbeamTokens,
22
- } from "./definitions/moonbeam/environment.js";
23
-
24
- import {
25
- createEnvironment as createMoonriverEnvironment,
26
- type markets as moonriverMarkets,
27
- type tokens as moonriverTokens,
28
- } from "./definitions/moonriver/environment.js";
29
-
30
18
  import {
31
19
  createEnvironment as createOptimismEnvironment,
32
20
  type markets as optimismMarkets,
@@ -60,8 +48,12 @@ import {
60
48
  type tokens as polygonTokens,
61
49
  } from "./definitions/polygon/environment.js";
62
50
 
63
- import { moonbeam, moonriver, optimism } from "viem/chains";
64
- import type { Environment, TokenConfig } from "./types/config.js";
51
+ import { optimism } from "viem/chains";
52
+ import type {
53
+ Environment,
54
+ OnErrorContext,
55
+ TokenConfig,
56
+ } from "./types/config.js";
65
57
 
66
58
  export {
67
59
  arbitrum,
@@ -69,8 +61,6 @@ export {
69
61
  base,
70
62
  ethereum,
71
63
  GovernanceTokensConfig,
72
- moonbeam,
73
- moonriver,
74
64
  optimism,
75
65
  polygon,
76
66
  supportedChains,
@@ -82,6 +72,7 @@ export type {
82
72
  GovernanceToken,
83
73
  GovernanceTokenInfo,
84
74
  GovernanceTokensType,
75
+ OnErrorContext,
85
76
  Prettify,
86
77
  SupportedChains,
87
78
  SupportedChainsIds,
@@ -92,8 +83,6 @@ export type {
92
83
  const supportedChainsIds: { [id: number]: keyof typeof supportedChains } = {
93
84
  [base.id]: "base",
94
85
  [optimism.id]: "optimism",
95
- [moonriver.id]: "moonriver",
96
- [moonbeam.id]: "moonbeam",
97
86
  [ethereum.id]: "ethereum",
98
87
  [avalanche.id]: "avalanche",
99
88
  [arbitrum.id]: "arbitrum",
@@ -103,8 +92,6 @@ const supportedChainsIds: { [id: number]: keyof typeof supportedChains } = {
103
92
  const supportedChains = {
104
93
  base: base,
105
94
  optimism: optimism,
106
- moonriver: moonriver,
107
- moonbeam: moonbeam,
108
95
  ethereum: ethereum,
109
96
  avalanche: avalanche,
110
97
  arbitrum: arbitrum,
@@ -115,10 +102,6 @@ type SupportedChains = Prettify<keyof typeof supportedChains>;
115
102
  type SupportedChainsIds = Prettify<keyof typeof supportedChainsIds>;
116
103
 
117
104
  export type BaseEnvironment = ReturnType<typeof createBaseEnvironment>;
118
- export type MoonbeamEnvironment = ReturnType<typeof createMoonbeamEnvironment>;
119
- export type MoonriverEnvironment = ReturnType<
120
- typeof createMoonriverEnvironment
121
- >;
122
105
  export type OptimismEnvironment = ReturnType<typeof createOptimismEnvironment>;
123
106
  export type EthereumEnvironment = ReturnType<typeof createEthereumEnvironment>;
124
107
  export type AvalancheEnvironment = ReturnType<
@@ -129,21 +112,17 @@ export type PolygonEnvironment = ReturnType<typeof createPolygonEnvironment>;
129
112
 
130
113
  export type GetEnvironment<chain> = chain extends typeof base
131
114
  ? BaseEnvironment
132
- : chain extends typeof moonbeam
133
- ? MoonbeamEnvironment
134
- : chain extends typeof moonriver
135
- ? MoonriverEnvironment
136
- : chain extends typeof optimism
137
- ? OptimismEnvironment
138
- : chain extends typeof ethereum
139
- ? EthereumEnvironment
140
- : chain extends typeof avalanche
141
- ? AvalancheEnvironment
142
- : chain extends typeof arbitrum
143
- ? ArbitrumEnvironment
144
- : chain extends typeof polygon
145
- ? PolygonEnvironment
146
- : undefined;
115
+ : chain extends typeof optimism
116
+ ? OptimismEnvironment
117
+ : chain extends typeof ethereum
118
+ ? EthereumEnvironment
119
+ : chain extends typeof avalanche
120
+ ? AvalancheEnvironment
121
+ : chain extends typeof arbitrum
122
+ ? ArbitrumEnvironment
123
+ : chain extends typeof polygon
124
+ ? PolygonEnvironment
125
+ : undefined;
147
126
 
148
127
  export const createEnvironment = <const chain extends Chain>(config: {
149
128
  chain: chain;
@@ -152,12 +131,6 @@ export const createEnvironment = <const chain extends Chain>(config: {
152
131
  switch (config.chain.id) {
153
132
  case base.id:
154
133
  return createBaseEnvironment(config.rpcUrls) as GetEnvironment<chain>;
155
- case moonbeam.id:
156
- return createMoonbeamEnvironment(config.rpcUrls) as GetEnvironment<chain>;
157
- case moonriver.id:
158
- return createMoonriverEnvironment(
159
- config.rpcUrls,
160
- ) as GetEnvironment<chain>;
161
134
  case optimism.id:
162
135
  return createOptimismEnvironment(config.rpcUrls) as GetEnvironment<chain>;
163
136
  case ethereum.id:
@@ -177,8 +150,6 @@ export const createEnvironment = <const chain extends Chain>(config: {
177
150
 
178
151
  export const publicEnvironments = {
179
152
  base: createBaseEnvironment(),
180
- moonbeam: createMoonbeamEnvironment(),
181
- moonriver: createMoonriverEnvironment(),
182
153
  optimism: createOptimismEnvironment(),
183
154
  ethereum: createEthereumEnvironment(),
184
155
  avalanche: createAvalancheEnvironment(),
@@ -188,33 +159,25 @@ export const publicEnvironments = {
188
159
 
189
160
  export type TokensType<environment> = environment extends BaseEnvironment
190
161
  ? typeof baseTokens
191
- : environment extends MoonbeamEnvironment
192
- ? typeof moonbeamTokens
193
- : environment extends MoonriverEnvironment
194
- ? typeof moonriverTokens
195
- : environment extends OptimismEnvironment
196
- ? typeof optimismTokens
197
- : environment extends EthereumEnvironment
198
- ? typeof ethereumTokens
199
- : environment extends AvalancheEnvironment
200
- ? typeof avalancheTokens
201
- : environment extends ArbitrumEnvironment
202
- ? typeof arbitrumTokens
203
- : environment extends PolygonEnvironment
204
- ? typeof polygonTokens
205
- : undefined;
162
+ : environment extends OptimismEnvironment
163
+ ? typeof optimismTokens
164
+ : environment extends EthereumEnvironment
165
+ ? typeof ethereumTokens
166
+ : environment extends AvalancheEnvironment
167
+ ? typeof avalancheTokens
168
+ : environment extends ArbitrumEnvironment
169
+ ? typeof arbitrumTokens
170
+ : environment extends PolygonEnvironment
171
+ ? typeof polygonTokens
172
+ : undefined;
206
173
 
207
174
  export type MarketsType<environment> = environment extends BaseEnvironment
208
175
  ? typeof baseMarkets
209
- : environment extends MoonbeamEnvironment
210
- ? typeof moonbeamMarkets
211
- : environment extends MoonriverEnvironment
212
- ? typeof moonriverMarkets
213
- : environment extends OptimismEnvironment
214
- ? typeof optimismMarkets
215
- : environment extends EthereumEnvironment
216
- ? typeof ethereumMarkets
217
- : undefined;
176
+ : environment extends OptimismEnvironment
177
+ ? typeof optimismMarkets
178
+ : environment extends EthereumEnvironment
179
+ ? typeof ethereumMarkets
180
+ : undefined;
218
181
 
219
182
  export type VaultsType<environment> = environment extends BaseEnvironment
220
183
  ? typeof baseVaults
@@ -175,6 +175,20 @@ export type CustomConfigType = {
175
175
  };
176
176
  governance?: {
177
177
  token: GovernanceToken;
178
+ /**
179
+ * Satellite chains this environment acts as the governance home for.
180
+ *
181
+ * Consumed as a `homeEnvironment` membership test — a satellite prices its
182
+ * native-token rewards through whichever environment claims its chainId.
183
+ * Only Moonbeam ever claimed any, so since the sunset (MOO-551) every
184
+ * surviving environment ships `[]` and each chain resolves to itself via
185
+ * the call sites' `|| environment` fallback. The
186
+ * `ethereum/environment.test.ts` invariant keeps it that way.
187
+ *
188
+ * Kept as an extension point for a future hub that genuinely fronts other
189
+ * chains; collapsing the lookups and retiring the field is a separate
190
+ * cleanup, since it would change `Environment["custom"]`.
191
+ */
178
192
  chainIds: number[];
179
193
  proposalIdOffset?: number;
180
194
  snapshotEnsName?: string;
@@ -213,6 +227,14 @@ export type MorphoMarketsConfig<markets, tokens> = {} extends markets
213
227
  export type ContractsConfig<contracts, tokens> = {} extends contracts
214
228
  ? {}
215
229
  : { [name in keyof ContractConfig<tokens>]?: ContractConfig<tokens>[name] };
230
+
231
+ /** Context passed to `onError` callbacks. `token` is set for per-token read failures. */
232
+ export type OnErrorContext = {
233
+ source: string;
234
+ chainId: number;
235
+ token?: Address;
236
+ };
237
+
216
238
  export type CustomConfig<custom> = {} extends custom
217
239
  ? {}
218
240
  : { [name in keyof CustomConfigType]?: CustomConfigType[name] };
@@ -262,10 +284,7 @@ export const createEnvironmentConfig = <
262
284
  indexerUrl?: string;
263
285
  governanceIndexerUrl: string;
264
286
  lunarIndexerUrl?: string;
265
- onError?: (
266
- error: unknown,
267
- context: { source: string; chainId: number },
268
- ) => void;
287
+ onError?: (error: unknown, context: OnErrorContext) => void;
269
288
  tokens: TokensConfig<tokens>;
270
289
  markets: MarketsConfig<markets, tokens>;
271
290
  vaults: VaultsConfig<vaults, tokens>;
@@ -467,10 +486,7 @@ export type Environment<
467
486
  indexerUrl?: string;
468
487
  governanceIndexerUrl: string;
469
488
  lunarIndexerUrl?: string;
470
- onError?: (
471
- error: unknown,
472
- context: { source: string; chainId: number },
473
- ) => void;
489
+ onError?: (error: unknown, context: OnErrorContext) => void;
474
490
  tokens: {
475
491
  [name in keyof tokens]: TokenContractReturnType;
476
492
  };
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '0.21.0'
1
+ export const version = '0.23.0'
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.21.0",
4
+ "version": "0.23.0",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.contracts = void 0;
4
- const config_js_1 = require("../../types/config.js");
5
- const tokens_js_1 = require("./tokens.js");
6
- exports.contracts = (0, config_js_1.createContractsConfig)({
7
- tokens: tokens_js_1.tokens,
8
- contracts: {
9
- governanceToken: "WELL",
10
- stakingToken: "stkWELL",
11
- wrappedNativeToken: "WGLMR",
12
- tokenSale: "0x933fCDf708481c57E9FD82f6BAA084f42e98B60e",
13
- comptroller: "0x8E00D5e02E65A19337Cdba98bbA9F84d4186a180",
14
- maximillion: "0xe5Ef9310cC7E3437bAD83466675f24FD62A380c3",
15
- views: "0xe76C8B8706faC85a8Fbdcac3C42e3E7823c73994",
16
- oracle: "0xED301cd3EB27217BDB05C4E9B820a8A3c8B665f9",
17
- governor: "0xfc4DFB17101A12C5CEc5eeDd8E92B5b16557666d",
18
- multichainGovernor: "0x9A8464C4C11CeA17e191653Deb7CdC1bE30F1Af4",
19
- voteCollector: "0xB8A798a50a7274A13449B7f2Dd6Df22faF2d40E5",
20
- },
21
- });
22
- //# sourceMappingURL=contracts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../../../environments/definitions/moonbeam/contracts.ts"],"names":[],"mappings":";;;AAAA,qDAA8D;AAC9D,2CAAqC;AAExB,QAAA,SAAS,GAAG,IAAA,iCAAqB,EAAC;IAC7C,MAAM,EAAN,kBAAM;IACN,SAAS,EAAE;QACT,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE,SAAS;QACvB,kBAAkB,EAAE,OAAO;QAC3B,SAAS,EAAE,4CAA4C;QACvD,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE,4CAA4C;QACnD,MAAM,EAAE,4CAA4C;QACpD,QAAQ,EAAE,4CAA4C;QACtD,kBAAkB,EAAE,4CAA4C;QAChE,aAAa,EAAE,4CAA4C;KAC5D;CACF,CAAC,CAAC"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.markets = void 0;
4
- const config_js_1 = require("../../types/config.js");
5
- const tokens_js_1 = require("./tokens.js");
6
- exports.markets = (0, config_js_1.createMarketConfig)({
7
- tokens: tokens_js_1.tokens,
8
- markets: {
9
- MOONWELL_GLMR: {
10
- marketToken: "MOONWELL_GLMR",
11
- underlyingToken: "GLMR",
12
- },
13
- MOONWELL_xcDOT: {
14
- marketToken: "MOONWELL_xcDOT",
15
- underlyingToken: "xcDOT",
16
- badDebt: true,
17
- },
18
- MOONWELL_FRAX: {
19
- marketToken: "MOONWELL_FRAX",
20
- underlyingToken: "FRAX",
21
- badDebt: true,
22
- },
23
- MOONWELL_xcUSDC: {
24
- marketToken: "MOONWELL_xcUSDC",
25
- underlyingToken: "xcUSDC",
26
- },
27
- MOONWELL_xcUSDT: {
28
- marketToken: "MOONWELL_xcUSDT",
29
- underlyingToken: "xcUSDT",
30
- },
31
- MOONWELL_ETH_NOMAD: {
32
- marketToken: "MOONWELL_ETH_NOMAD",
33
- underlyingToken: "ETH_NOMAD",
34
- deprecated: true,
35
- },
36
- MOONWELL_BTC_NOMAD: {
37
- marketToken: "MOONWELL_BTC_NOMAD",
38
- underlyingToken: "BTC_NOMAD",
39
- deprecated: true,
40
- },
41
- MOONWELL_USDC_NOMAD: {
42
- marketToken: "MOONWELL_USDC_NOMAD",
43
- underlyingToken: "USDC_NOMAD",
44
- deprecated: true,
45
- },
46
- MOONWELL_ETH_WORMHOLE: {
47
- marketToken: "MOONWELL_ETH_WORMHOLE",
48
- underlyingToken: "ETH_WORMHOLE",
49
- },
50
- MOONWELL_BTC_WORMHOLE: {
51
- marketToken: "MOONWELL_BTC_WORMHOLE",
52
- underlyingToken: "BTC_WORMHOLE",
53
- },
54
- MOONWELL_USDC_WORMHOLE: {
55
- marketToken: "MOONWELL_USDC_WORMHOLE",
56
- underlyingToken: "USDC_WORMHOLE",
57
- },
58
- MOONWELL_BUSD_WORMHOLE: {
59
- marketToken: "MOONWELL_BUSD_WORMHOLE",
60
- underlyingToken: "BUSD_WORMHOLE",
61
- deprecated: true,
62
- },
63
- },
64
- });
65
- //# sourceMappingURL=core-markets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-markets.js","sourceRoot":"","sources":["../../../../environments/definitions/moonbeam/core-markets.ts"],"names":[],"mappings":";;;AAAA,qDAA2D;AAC3D,2CAAqC;AAExB,QAAA,OAAO,GAAG,IAAA,8BAAkB,EAAC;IACxC,MAAM,EAAN,kBAAM;IACN,OAAO,EAAE;QACP,aAAa,EAAE;YACb,WAAW,EAAE,eAAe;YAC5B,eAAe,EAAE,MAAM;SACxB;QACD,cAAc,EAAE;YACd,WAAW,EAAE,gBAAgB;YAC7B,eAAe,EAAE,OAAO;YACxB,OAAO,EAAE,IAAI;SACd;QACD,aAAa,EAAE;YACb,WAAW,EAAE,eAAe;YAC5B,eAAe,EAAE,MAAM;YACvB,OAAO,EAAE,IAAI;SACd;QACD,eAAe,EAAE;YACf,WAAW,EAAE,iBAAiB;YAC9B,eAAe,EAAE,QAAQ;SAC1B;QACD,eAAe,EAAE;YACf,WAAW,EAAE,iBAAiB;YAC9B,eAAe,EAAE,QAAQ;SAC1B;QACD,kBAAkB,EAAE;YAClB,WAAW,EAAE,oBAAoB;YACjC,eAAe,EAAE,WAAW;YAC5B,UAAU,EAAE,IAAI;SACjB;QACD,kBAAkB,EAAE;YAClB,WAAW,EAAE,oBAAoB;YACjC,eAAe,EAAE,WAAW;YAC5B,UAAU,EAAE,IAAI;SACjB;QACD,mBAAmB,EAAE;YACnB,WAAW,EAAE,qBAAqB;YAClC,eAAe,EAAE,YAAY;YAC7B,UAAU,EAAE,IAAI;SACjB;QACD,qBAAqB,EAAE;YACrB,WAAW,EAAE,uBAAuB;YACpC,eAAe,EAAE,cAAc;SAChC;QACD,qBAAqB,EAAE;YACrB,WAAW,EAAE,uBAAuB;YACpC,eAAe,EAAE,cAAc;SAChC;QACD,sBAAsB,EAAE;YACtB,WAAW,EAAE,wBAAwB;YACrC,eAAe,EAAE,eAAe;SACjC;QACD,sBAAsB,EAAE;YACtB,WAAW,EAAE,wBAAwB;YACrC,eAAe,EAAE,eAAe;YAChC,UAAU,EAAE,IAAI;SACjB;KACF;CACF,CAAC,CAAC"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.custom = void 0;
4
- const chains_1 = require("viem/chains");
5
- const config_js_1 = require("../../types/config.js");
6
- exports.custom = (0, config_js_1.createCustomConfig)({
7
- governance: {
8
- token: "WELL",
9
- chainIds: [chains_1.base.id, chains_1.optimism.id],
10
- proposalIdOffset: 79,
11
- snapshotEnsName: "moonwell-governance.eth",
12
- },
13
- wormhole: {
14
- chainId: 16,
15
- tokenBridge: { address: "0xB1731c586ca89a23809861c6103F0b96B3F57D92" },
16
- },
17
- socket: {
18
- gateway: { address: "0x3a23F943181408EAC424116Af7b7790c94Cb97a5" },
19
- },
20
- xWELL: {
21
- bridgeAdapter: { address: "0xb84543e036054E2cD5394A9D99fa701Eef666df4" },
22
- },
23
- });
24
- //# sourceMappingURL=custom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../../environments/definitions/moonbeam/custom.ts"],"names":[],"mappings":";;;AAAA,wCAA6C;AAC7C,qDAA2D;AAE9C,QAAA,MAAM,GAAG,IAAA,8BAAkB,EAAC;IACvC,UAAU,EAAE;QACV,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,CAAC,aAAI,CAAC,EAAE,EAAE,iBAAQ,CAAC,EAAE,CAAC;QAChC,gBAAgB,EAAE,EAAE;QACpB,eAAe,EAAE,yBAAyB;KAC3C;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,EAAE,OAAO,EAAE,4CAA4C,EAAE;KACvE;IACD,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,OAAO,EAAE,4CAA4C,EAAE;KACnE;IACD,KAAK,EAAE;QACL,aAAa,EAAE,EAAE,OAAO,EAAE,4CAA4C,EAAE;KACzE;CACF,CAAC,CAAC"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tokens = exports.markets = exports.createEnvironment = exports.moonbeam = void 0;
4
- const viem_1 = require("viem");
5
- const chains_1 = require("viem/chains");
6
- Object.defineProperty(exports, "moonbeam", { enumerable: true, get: function () { return chains_1.moonbeam; } });
7
- const lunar_indexer_helpers_js_1 = require("../../../common/lunar-indexer-helpers.js");
8
- const config_js_1 = require("../../types/config.js");
9
- const contracts_js_1 = require("./contracts.js");
10
- const core_markets_js_1 = require("./core-markets.js");
11
- Object.defineProperty(exports, "markets", { enumerable: true, get: function () { return core_markets_js_1.markets; } });
12
- const custom_js_1 = require("./custom.js");
13
- const tokens_js_1 = require("./tokens.js");
14
- Object.defineProperty(exports, "tokens", { enumerable: true, get: function () { return tokens_js_1.tokens; } });
15
- const createEnvironment = (rpcUrls, governanceIndexerUrl, lunarIndexerUrl) => (0, config_js_1.createEnvironmentConfig)({
16
- key: "moonbeam",
17
- name: "Moonbeam",
18
- chain: {
19
- ...chains_1.moonbeam,
20
- rpcUrls: {
21
- default: { http: rpcUrls || ["https://rpc.moonwell.fi/main/evm/1284"] },
22
- },
23
- },
24
- transport: rpcUrls
25
- ? (0, viem_1.fallback)(rpcUrls.map((url) => (0, viem_1.http)(url)))
26
- : (0, viem_1.http)("https://rpc.moonwell.fi/main/evm/1284"),
27
- lunarIndexerUrl: lunarIndexerUrl || lunar_indexer_helpers_js_1.DEFAULT_LUNAR_INDEXER_URL,
28
- governanceIndexerUrl: governanceIndexerUrl ||
29
- "https://lunar-services-worker.moonwell.workers.dev",
30
- tokens: tokens_js_1.tokens,
31
- markets: core_markets_js_1.markets,
32
- vaults: {},
33
- morphoMarkets: {},
34
- contracts: contracts_js_1.contracts,
35
- custom: custom_js_1.custom,
36
- });
37
- exports.createEnvironment = createEnvironment;
38
- //# sourceMappingURL=environment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../environments/definitions/moonbeam/environment.ts"],"names":[],"mappings":";;;AAAA,+BAAsC;AACtC,wCAAuC;AAqC9B,yFArCA,iBAAQ,OAqCA;AApCjB,uFAAqF;AACrF,qDAAgE;AAChE,iDAA2C;AAC3C,uDAA4C;AAiCN,wFAjC7B,yBAAO,OAiC6B;AAhC7C,2CAAqC;AACrC,2CAAqC;AA+BU,uFA/BtC,kBAAM,OA+BsC;AA7BrD,MAAM,iBAAiB,GAAG,CACxB,OAAkB,EAClB,oBAA6B,EAC7B,eAAwB,EACxB,EAAE,CACF,IAAA,mCAAuB,EAAC;IACtB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE;QACL,GAAG,iBAAQ;QACX,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC,uCAAuC,CAAC,EAAE;SACxE;KACF;IACD,SAAS,EAAE,OAAO;QAChB,CAAC,CAAC,IAAA,eAAQ,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,IAAA,WAAI,EAAC,uCAAuC,CAAC;IACjD,eAAe,EAAE,eAAe,IAAI,oDAAyB;IAC7D,oBAAoB,EAClB,oBAAoB;QACpB,oDAAoD;IACtD,MAAM,EAAN,kBAAM;IACN,OAAO,EAAP,yBAAO;IACP,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,EAAE;IACjB,SAAS,EAAT,wBAAS;IACT,MAAM,EAAN,kBAAM;CACP,CAAC,CAAC;AAEc,8CAAiB"}