@moonwell-fi/moonwell-sdk 0.10.7 → 0.12.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 (166) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/actions/core/markets/common.js +26 -12
  3. package/_cjs/actions/core/markets/common.js.map +1 -1
  4. package/_cjs/actions/core/markets/getMarketSnapshots.js +173 -321
  5. package/_cjs/actions/core/markets/getMarketSnapshots.js.map +1 -1
  6. package/_cjs/actions/core/user-positions/getUserPositionSnapshots.js +31 -26
  7. package/_cjs/actions/core/user-positions/getUserPositionSnapshots.js.map +1 -1
  8. package/_cjs/actions/governance/getCirculatingSupplySnapshots.js +35 -29
  9. package/_cjs/actions/governance/getCirculatingSupplySnapshots.js.map +1 -1
  10. package/_cjs/actions/governance/getStakingSnapshots.js +16 -12
  11. package/_cjs/actions/governance/getStakingSnapshots.js.map +1 -1
  12. package/_cjs/actions/governance/proposals/common.js +247 -211
  13. package/_cjs/actions/governance/proposals/common.js.map +1 -1
  14. package/_cjs/actions/lunar-indexer-client.js +32 -0
  15. package/_cjs/actions/lunar-indexer-client.js.map +1 -1
  16. package/_cjs/actions/morpho/markets/common.js +26 -29
  17. package/_cjs/actions/morpho/markets/common.js.map +1 -1
  18. package/_cjs/actions/morpho/user-positions/getMorphoVaultUserPositionSnapshots.js +41 -56
  19. package/_cjs/actions/morpho/user-positions/getMorphoVaultUserPositionSnapshots.js.map +1 -1
  20. package/_cjs/actions/morpho/vaults/common.js +7 -4
  21. package/_cjs/actions/morpho/vaults/common.js.map +1 -1
  22. package/_cjs/actions/morpho/vaults/getMorphoVaultSnapshots.js +21 -78
  23. package/_cjs/actions/morpho/vaults/getMorphoVaultSnapshots.js.map +1 -1
  24. package/_cjs/actions/morpho/vaults/getMorphoVaultStakingSnapshots.js +13 -66
  25. package/_cjs/actions/morpho/vaults/getMorphoVaultStakingSnapshots.js.map +1 -1
  26. package/_cjs/client/createMoonwellClient.js +9 -3
  27. package/_cjs/client/createMoonwellClient.js.map +1 -1
  28. package/_cjs/environments/definitions/arbitrum/environment.js +1 -2
  29. package/_cjs/environments/definitions/arbitrum/environment.js.map +1 -1
  30. package/_cjs/environments/definitions/avalanche/environment.js +1 -2
  31. package/_cjs/environments/definitions/avalanche/environment.js.map +1 -1
  32. package/_cjs/environments/definitions/base/custom.js +0 -1
  33. package/_cjs/environments/definitions/base/custom.js.map +1 -1
  34. package/_cjs/environments/definitions/base/environment.js +1 -2
  35. package/_cjs/environments/definitions/base/environment.js.map +1 -1
  36. package/_cjs/environments/definitions/ethereum/environment.js +1 -2
  37. package/_cjs/environments/definitions/ethereum/environment.js.map +1 -1
  38. package/_cjs/environments/definitions/moonbeam/environment.js +1 -2
  39. package/_cjs/environments/definitions/moonbeam/environment.js.map +1 -1
  40. package/_cjs/environments/definitions/optimism/custom.js +0 -1
  41. package/_cjs/environments/definitions/optimism/custom.js.map +1 -1
  42. package/_cjs/environments/definitions/optimism/environment.js +1 -2
  43. package/_cjs/environments/definitions/optimism/environment.js.map +1 -1
  44. package/_cjs/environments/definitions/polygon/environment.js +1 -2
  45. package/_cjs/environments/definitions/polygon/environment.js.map +1 -1
  46. package/_cjs/environments/index.js +8 -8
  47. package/_cjs/environments/index.js.map +1 -1
  48. package/_cjs/environments/types/config.js +1 -0
  49. package/_cjs/environments/types/config.js.map +1 -1
  50. package/_cjs/errors/version.js +1 -1
  51. package/_esm/actions/core/markets/common.js +26 -13
  52. package/_esm/actions/core/markets/common.js.map +1 -1
  53. package/_esm/actions/core/markets/getMarketSnapshots.js +194 -346
  54. package/_esm/actions/core/markets/getMarketSnapshots.js.map +1 -1
  55. package/_esm/actions/core/user-positions/getUserPositionSnapshots.js +32 -29
  56. package/_esm/actions/core/user-positions/getUserPositionSnapshots.js.map +1 -1
  57. package/_esm/actions/governance/getCirculatingSupplySnapshots.js +35 -30
  58. package/_esm/actions/governance/getCirculatingSupplySnapshots.js.map +1 -1
  59. package/_esm/actions/governance/getStakingSnapshots.js +17 -13
  60. package/_esm/actions/governance/getStakingSnapshots.js.map +1 -1
  61. package/_esm/actions/governance/proposals/common.js +246 -216
  62. package/_esm/actions/governance/proposals/common.js.map +1 -1
  63. package/_esm/actions/lunar-indexer-client.js +35 -0
  64. package/_esm/actions/lunar-indexer-client.js.map +1 -1
  65. package/_esm/actions/morpho/markets/common.js +27 -34
  66. package/_esm/actions/morpho/markets/common.js.map +1 -1
  67. package/_esm/actions/morpho/user-positions/getMorphoVaultUserPositionSnapshots.js +42 -54
  68. package/_esm/actions/morpho/user-positions/getMorphoVaultUserPositionSnapshots.js.map +1 -1
  69. package/_esm/actions/morpho/vaults/common.js +7 -4
  70. package/_esm/actions/morpho/vaults/common.js.map +1 -1
  71. package/_esm/actions/morpho/vaults/getMorphoVaultSnapshots.js +24 -78
  72. package/_esm/actions/morpho/vaults/getMorphoVaultSnapshots.js.map +1 -1
  73. package/_esm/actions/morpho/vaults/getMorphoVaultStakingSnapshots.js +15 -65
  74. package/_esm/actions/morpho/vaults/getMorphoVaultStakingSnapshots.js.map +1 -1
  75. package/_esm/client/createMoonwellClient.js +9 -3
  76. package/_esm/client/createMoonwellClient.js.map +1 -1
  77. package/_esm/environments/definitions/arbitrum/environment.js +1 -2
  78. package/_esm/environments/definitions/arbitrum/environment.js.map +1 -1
  79. package/_esm/environments/definitions/avalanche/environment.js +1 -2
  80. package/_esm/environments/definitions/avalanche/environment.js.map +1 -1
  81. package/_esm/environments/definitions/base/custom.js +0 -1
  82. package/_esm/environments/definitions/base/custom.js.map +1 -1
  83. package/_esm/environments/definitions/base/environment.js +1 -2
  84. package/_esm/environments/definitions/base/environment.js.map +1 -1
  85. package/_esm/environments/definitions/ethereum/environment.js +1 -2
  86. package/_esm/environments/definitions/ethereum/environment.js.map +1 -1
  87. package/_esm/environments/definitions/moonbeam/environment.js +1 -2
  88. package/_esm/environments/definitions/moonbeam/environment.js.map +1 -1
  89. package/_esm/environments/definitions/optimism/custom.js +0 -1
  90. package/_esm/environments/definitions/optimism/custom.js.map +1 -1
  91. package/_esm/environments/definitions/optimism/environment.js +1 -2
  92. package/_esm/environments/definitions/optimism/environment.js.map +1 -1
  93. package/_esm/environments/definitions/polygon/environment.js +1 -2
  94. package/_esm/environments/definitions/polygon/environment.js.map +1 -1
  95. package/_esm/environments/index.js +8 -8
  96. package/_esm/environments/index.js.map +1 -1
  97. package/_esm/environments/types/config.js +1 -0
  98. package/_esm/environments/types/config.js.map +1 -1
  99. package/_esm/errors/version.js +1 -1
  100. package/_types/actions/core/markets/common.d.ts.map +1 -1
  101. package/_types/actions/core/markets/getMarketSnapshots.d.ts.map +1 -1
  102. package/_types/actions/core/user-positions/getUserPositionSnapshots.d.ts +0 -1
  103. package/_types/actions/core/user-positions/getUserPositionSnapshots.d.ts.map +1 -1
  104. package/_types/actions/governance/getCirculatingSupplySnapshots.d.ts.map +1 -1
  105. package/_types/actions/governance/getStakingSnapshots.d.ts.map +1 -1
  106. package/_types/actions/governance/proposals/common.d.ts +2 -8
  107. package/_types/actions/governance/proposals/common.d.ts.map +1 -1
  108. package/_types/actions/lunar-indexer-client.d.ts +26 -0
  109. package/_types/actions/lunar-indexer-client.d.ts.map +1 -1
  110. package/_types/actions/morpho/markets/common.d.ts.map +1 -1
  111. package/_types/actions/morpho/user-positions/getMorphoVaultUserPositionSnapshots.d.ts +9 -3
  112. package/_types/actions/morpho/user-positions/getMorphoVaultUserPositionSnapshots.d.ts.map +1 -1
  113. package/_types/actions/morpho/vaults/common.d.ts.map +1 -1
  114. package/_types/actions/morpho/vaults/getMorphoVaultSnapshots.d.ts.map +1 -1
  115. package/_types/actions/morpho/vaults/getMorphoVaultStakingSnapshots.d.ts.map +1 -1
  116. package/_types/client/createMoonwellClient.d.ts +4 -4
  117. package/_types/client/createMoonwellClient.d.ts.map +1 -1
  118. package/_types/environments/definitions/arbitrum/environment.d.ts +1 -1
  119. package/_types/environments/definitions/arbitrum/environment.d.ts.map +1 -1
  120. package/_types/environments/definitions/avalanche/environment.d.ts +1 -1
  121. package/_types/environments/definitions/avalanche/environment.d.ts.map +1 -1
  122. package/_types/environments/definitions/base/custom.d.ts +0 -1
  123. package/_types/environments/definitions/base/custom.d.ts.map +1 -1
  124. package/_types/environments/definitions/base/environment.d.ts +1 -1
  125. package/_types/environments/definitions/base/environment.d.ts.map +1 -1
  126. package/_types/environments/definitions/ethereum/environment.d.ts +1 -1
  127. package/_types/environments/definitions/ethereum/environment.d.ts.map +1 -1
  128. package/_types/environments/definitions/moonbeam/environment.d.ts +1 -1
  129. package/_types/environments/definitions/moonbeam/environment.d.ts.map +1 -1
  130. package/_types/environments/definitions/optimism/custom.d.ts +0 -1
  131. package/_types/environments/definitions/optimism/custom.d.ts.map +1 -1
  132. package/_types/environments/definitions/optimism/environment.d.ts +1 -2
  133. package/_types/environments/definitions/optimism/environment.d.ts.map +1 -1
  134. package/_types/environments/definitions/polygon/environment.d.ts +1 -1
  135. package/_types/environments/definitions/polygon/environment.d.ts.map +1 -1
  136. package/_types/environments/index.d.ts +0 -3
  137. package/_types/environments/index.d.ts.map +1 -1
  138. package/_types/environments/types/config.d.ts +10 -3
  139. package/_types/environments/types/config.d.ts.map +1 -1
  140. package/_types/errors/version.d.ts +1 -1
  141. package/actions/core/markets/common.ts +33 -18
  142. package/actions/core/markets/getMarketSnapshots.ts +261 -511
  143. package/actions/core/user-positions/getUserPositionSnapshots.ts +44 -46
  144. package/actions/governance/getCirculatingSupplySnapshots.ts +43 -35
  145. package/actions/governance/getStakingSnapshots.ts +32 -29
  146. package/actions/governance/proposals/common.ts +369 -330
  147. package/actions/lunar-indexer-client.ts +64 -0
  148. package/actions/morpho/markets/common.ts +32 -43
  149. package/actions/morpho/user-positions/getMorphoVaultUserPositionSnapshots.ts +76 -87
  150. package/actions/morpho/vaults/common.ts +7 -6
  151. package/actions/morpho/vaults/getMorphoVaultSnapshots.ts +36 -120
  152. package/actions/morpho/vaults/getMorphoVaultStakingSnapshots.ts +24 -111
  153. package/client/createMoonwellClient.ts +17 -5
  154. package/environments/definitions/arbitrum/environment.ts +0 -2
  155. package/environments/definitions/avalanche/environment.ts +0 -2
  156. package/environments/definitions/base/custom.ts +0 -1
  157. package/environments/definitions/base/environment.ts +0 -2
  158. package/environments/definitions/ethereum/environment.ts +0 -2
  159. package/environments/definitions/moonbeam/environment.ts +0 -2
  160. package/environments/definitions/optimism/custom.ts +0 -1
  161. package/environments/definitions/optimism/environment.ts +0 -2
  162. package/environments/definitions/polygon/environment.ts +0 -2
  163. package/environments/index.ts +6 -27
  164. package/environments/types/config.ts +11 -3
  165. package/errors/version.ts +1 -1
  166. package/package.json +1 -1
@@ -1,23 +1,20 @@
1
- import axios from "axios";
2
1
  import type { MoonwellClient } from "../../../client/createMoonwellClient.js";
3
2
  import {
4
3
  type SnapshotPeriod,
5
4
  applyGranularity,
6
5
  calculateTimeRange,
7
6
  getEnvironmentFromArgs,
8
- isStartOfDay,
9
7
  toApiGranularity,
10
8
  } from "../../../common/index.js";
11
9
  import type {
12
10
  MorphoVaultParameterType,
13
11
  NetworkParameterType,
14
12
  } from "../../../common/types.js";
15
- import type { Chain, Environment } from "../../../environments/index.js";
13
+ import type { Chain } from "../../../environments/index.js";
16
14
  import type { MorphoVaultStakingSnapshot } from "../../../types/morphoVault.js";
17
15
  import {
18
16
  DEFAULT_LUNAR_TIMEOUT_MS,
19
17
  createLunarIndexerClient,
20
- shouldFallback,
21
18
  } from "../../lunar-indexer-client.js";
22
19
  import { transformVaultStakingSnapshots } from "../../lunar-indexer-transformers.js";
23
20
 
@@ -56,37 +53,31 @@ export async function getMorphoVaultStakingSnapshots<
56
53
  } = args as GetMorphoVaultStakingSnapshotsParameters<environments, undefined>;
57
54
 
58
55
  const { lunarIndexerUrl } = environment;
59
- if (lunarIndexerUrl) {
60
- try {
61
- return await fetchVaultStakingSnapshotsFromLunar(
62
- vaultAddress,
63
- lunarIndexerUrl,
64
- environment.chainId,
65
- period,
66
- customStartTime,
67
- customEndTime,
68
- );
69
- } catch (error) {
70
- if (!shouldFallback(error)) {
71
- throw error;
72
- }
73
- console.debug(
74
- "[Lunar fallback] Falling back to Ponder for vault staking snapshots:",
75
- error,
76
- );
77
- }
56
+
57
+ if (!lunarIndexerUrl) {
58
+ return [];
78
59
  }
79
60
 
80
- const { startTime } = calculateTimeRange(
81
- period,
82
- customStartTime,
83
- customEndTime,
84
- );
85
- return fetchVaultStakingSnapshotsFromPonder(
86
- vaultAddress,
87
- environment,
88
- startTime,
89
- );
61
+ try {
62
+ return await fetchVaultStakingSnapshotsFromLunar(
63
+ vaultAddress,
64
+ lunarIndexerUrl,
65
+ environment.chainId,
66
+ period,
67
+ customStartTime,
68
+ customEndTime,
69
+ );
70
+ } catch (error) {
71
+ console.warn(
72
+ `[getMorphoVaultStakingSnapshots] Lunar Indexer failed for chain ${environment.chainId}:`,
73
+ error,
74
+ );
75
+ environment.onError?.(error, {
76
+ source: "morpho-vault-staking-snapshots",
77
+ chainId: environment.chainId,
78
+ });
79
+ return [];
80
+ }
90
81
  }
91
82
 
92
83
  async function fetchVaultStakingSnapshotsFromLunar(
@@ -131,81 +122,3 @@ async function fetchVaultStakingSnapshotsFromLunar(
131
122
  allSnapshots.sort((a, b) => a.timestamp - b.timestamp);
132
123
  return applyGranularity(allSnapshots, granularity);
133
124
  }
134
-
135
- interface VaultStakingData {
136
- totalStaked: number;
137
- totalStakedUSD: number;
138
- timestamp: number;
139
- }
140
-
141
- async function fetchVaultStakingSnapshotsFromPonder(
142
- vaultAddress: string,
143
- environment: Environment,
144
- startTime?: number,
145
- ): Promise<MorphoVaultStakingSnapshot[]> {
146
- const dailyData: VaultStakingData[] = [];
147
- let hasNextPage = true;
148
- let endCursor: string | undefined;
149
-
150
- while (hasNextPage) {
151
- const result = await axios.post<{
152
- data: {
153
- vaultStakingDailySnapshots: {
154
- items: VaultStakingData[];
155
- pageInfo: {
156
- hasNextPage: boolean;
157
- endCursor: string;
158
- };
159
- };
160
- };
161
- }>(environment.indexerUrl, {
162
- query: `
163
- query {
164
- vaultStakingDailySnapshots (
165
- limit: 365,
166
- orderBy: "timestamp"
167
- orderDirection: "desc"
168
- where: {vaultAddress: "${vaultAddress.toLowerCase()}", chainId: ${environment.chainId}}
169
- ${endCursor ? `after: "${endCursor}"` : ""}
170
- ) {
171
- items {
172
- totalStaked
173
- totalStakedUSD
174
- timestamp
175
- }
176
- pageInfo {
177
- hasNextPage
178
- endCursor
179
- }
180
- }
181
- }
182
- `,
183
- });
184
-
185
- if (result.data.data.vaultStakingDailySnapshots) {
186
- dailyData.push(
187
- ...result.data.data.vaultStakingDailySnapshots.items.filter(
188
- (f: { timestamp: number }) =>
189
- isStartOfDay(f.timestamp) &&
190
- (startTime === undefined || f.timestamp >= startTime),
191
- ),
192
- );
193
- hasNextPage =
194
- result.data.data.vaultStakingDailySnapshots.pageInfo.hasNextPage;
195
- endCursor =
196
- result.data.data.vaultStakingDailySnapshots.pageInfo.endCursor;
197
- }
198
- }
199
-
200
- if (dailyData.length > 0) {
201
- return dailyData.map((point: VaultStakingData) => ({
202
- vaultAddress: vaultAddress.toLowerCase(),
203
- chainId: environment.chainId,
204
- timestamp: point.timestamp * 1000,
205
- totalStaked: Number(point.totalStaked),
206
- totalStakedUsd: Number(point.totalStakedUSD),
207
- }));
208
- } else {
209
- return [];
210
- }
211
- }
@@ -77,12 +77,15 @@ export type NetworksConfig<networks> = {} extends networks
77
77
 
78
78
  export const createMoonwellClient = <const networks>(config: {
79
79
  networks: NetworksConfig<Narrow<networks>>;
80
+ onError?: (
81
+ error: unknown,
82
+ context: { source: string; chainId: number },
83
+ ) => void;
80
84
  }) => {
81
- const environments = Object.keys(config.networks).reduce((prev, curr) => {
82
- const key = curr as SupportedChains;
83
- const networkConfig = (config.networks as NetworksConfig<SupportedChains>)[
84
- key
85
- ]!;
85
+ const environments = Object.entries(
86
+ config.networks as NetworksConfig<SupportedChains>,
87
+ ).reduce((prev, [curr, networkConfig]) => {
88
+ if (!networkConfig) return prev;
86
89
  return {
87
90
  ...prev,
88
91
  [curr]: createEnvironment({
@@ -143,6 +146,15 @@ export const createMoonwellClient = <const networks>(config: {
143
146
  }
144
147
  >;
145
148
 
149
+ if (config.onError) {
150
+ const onError = config.onError;
151
+ for (const env of Object.values(
152
+ environments as Record<string, Environment>,
153
+ )) {
154
+ env.onError = onError;
155
+ }
156
+ }
157
+
146
158
  const client = {
147
159
  environments,
148
160
  };
@@ -8,7 +8,6 @@ import { tokens } from "./tokens.js";
8
8
 
9
9
  const createEnvironment = (
10
10
  rpcUrls?: string[],
11
- indexerUrl?: string,
12
11
  governanceIndexerUrl?: string,
13
12
  ): Environment<typeof tokens, {}, {}, {}, {}> =>
14
13
  createEnvironmentConfig({
@@ -25,7 +24,6 @@ const createEnvironment = (
25
24
  transport: rpcUrls
26
25
  ? fallback(rpcUrls.map((url) => http(url)))
27
26
  : http("https://rpc.moonwell.fi/main/evm/42161"),
28
- indexerUrl: indexerUrl || "https://ponder.moonwell.fi",
29
27
  governanceIndexerUrl:
30
28
  governanceIndexerUrl ||
31
29
  "https://lunar-services-worker.moonwell.workers.dev",
@@ -8,7 +8,6 @@ import { tokens } from "./tokens.js";
8
8
 
9
9
  const createEnvironment = (
10
10
  rpcUrls?: string[],
11
- indexerUrl?: string,
12
11
  governanceIndexerUrl?: string,
13
12
  ): Environment<typeof tokens, {}, {}, {}, {}> =>
14
13
  createEnvironmentConfig({
@@ -25,7 +24,6 @@ const createEnvironment = (
25
24
  transport: rpcUrls
26
25
  ? fallback(rpcUrls.map((url) => http(url)))
27
26
  : http("https://rpc.moonwell.fi/main/evm/43114"),
28
- indexerUrl: indexerUrl || "https://ponder.moonwell.fi",
29
27
  governanceIndexerUrl:
30
28
  governanceIndexerUrl ||
31
29
  "https://lunar-services-worker.moonwell.workers.dev",
@@ -5,7 +5,6 @@ export const custom = createCustomConfig({
5
5
  minimalDeployment: false,
6
6
  apiUrl: "https://api.morpho.org/graphql",
7
7
  rewardsApiUrl: "https://rewards.morpho.org",
8
- lunarIndexerUrl: "https://lunar-services-worker.moonwell.workers.dev",
9
8
  },
10
9
  governance: {
11
10
  token: "WELL",
@@ -15,7 +15,6 @@ const base = defineChain({ ...baseChain, testnet: false });
15
15
 
16
16
  const createEnvironment = (
17
17
  rpcUrls?: string[],
18
- indexerUrl?: string,
19
18
  governanceIndexerUrl?: string,
20
19
  lunarIndexerUrl?: string,
21
20
  ): Environment<
@@ -37,7 +36,6 @@ const createEnvironment = (
37
36
  transport: rpcUrls
38
37
  ? fallback(rpcUrls.map((url) => http(url)))
39
38
  : http("https://rpc.moonwell.fi/main/evm/8453"),
40
- indexerUrl: indexerUrl || "https://ponder.moonwell.fi",
41
39
  governanceIndexerUrl:
42
40
  governanceIndexerUrl ||
43
41
  "https://lunar-services-worker.moonwell.workers.dev",
@@ -8,7 +8,6 @@ import { tokens } from "./tokens.js";
8
8
 
9
9
  const createEnvironment = (
10
10
  rpcUrls?: string[],
11
- indexerUrl?: string,
12
11
  governanceIndexerUrl?: string,
13
12
  ): Environment<typeof tokens, {}, {}, {}, {}> =>
14
13
  createEnvironmentConfig({
@@ -23,7 +22,6 @@ const createEnvironment = (
23
22
  transport: rpcUrls
24
23
  ? fallback(rpcUrls.map((url) => http(url)))
25
24
  : http("https://rpc.moonwell.fi/main/evm/1"),
26
- indexerUrl: indexerUrl || "https://ponder.moonwell.fi",
27
25
  governanceIndexerUrl:
28
26
  governanceIndexerUrl ||
29
27
  "https://lunar-services-worker.moonwell.workers.dev",
@@ -8,7 +8,6 @@ import { tokens } from "./tokens.js";
8
8
 
9
9
  const createEnvironment = (
10
10
  rpcUrls?: string[],
11
- indexerUrl?: string,
12
11
  governanceIndexerUrl?: string,
13
12
  lunarIndexerUrl?: string,
14
13
  ) =>
@@ -24,7 +23,6 @@ const createEnvironment = (
24
23
  transport: rpcUrls
25
24
  ? fallback(rpcUrls.map((url) => http(url)))
26
25
  : http("https://rpc.moonwell.fi/main/evm/1284"),
27
- indexerUrl: indexerUrl || "https://ponder.moonwell.fi",
28
26
  lunarIndexerUrl:
29
27
  lunarIndexerUrl || "https://lunar-services-worker.moonwell.workers.dev",
30
28
  governanceIndexerUrl:
@@ -5,7 +5,6 @@ export const custom = createCustomConfig({
5
5
  minimalDeployment: true,
6
6
  apiUrl: "https://api.morpho.org/graphql",
7
7
  rewardsApiUrl: "https://rewards.morpho.org",
8
- lunarIndexerUrl: "https://lunar-services-worker.moonwell.workers.dev",
9
8
  },
10
9
  governance: {
11
10
  token: "WELL",
@@ -11,7 +11,6 @@ const optimism = defineChain({ ...optimismChain, testnet: false });
11
11
 
12
12
  const createEnvironment = (
13
13
  rpcUrls?: string[],
14
- indexerUrl?: string,
15
14
  governanceIndexerUrl?: string,
16
15
  lunarIndexerUrl?: string,
17
16
  ) =>
@@ -27,7 +26,6 @@ const createEnvironment = (
27
26
  transport: rpcUrls
28
27
  ? fallback(rpcUrls.map((url) => http(url)))
29
28
  : http("https://rpc.moonwell.fi/main/evm/10"),
30
- indexerUrl: indexerUrl || "https://ponder.moonwell.fi",
31
29
  lunarIndexerUrl:
32
30
  lunarIndexerUrl || "https://lunar-services-worker.moonwell.workers.dev",
33
31
  governanceIndexerUrl:
@@ -8,7 +8,6 @@ import { tokens } from "./tokens.js";
8
8
 
9
9
  const createEnvironment = (
10
10
  rpcUrls?: string[],
11
- indexerUrl?: string,
12
11
  governanceIndexerUrl?: string,
13
12
  ): Environment<typeof tokens, {}, {}, {}, {}> =>
14
13
  createEnvironmentConfig({
@@ -23,7 +22,6 @@ const createEnvironment = (
23
22
  transport: rpcUrls
24
23
  ? fallback(rpcUrls.map((url) => http(url)))
25
24
  : http("https://rpc.moonwell.fi/main/evm/137"),
26
- indexerUrl: indexerUrl || "https://ponder.moonwell.fi",
27
25
  governanceIndexerUrl:
28
26
  governanceIndexerUrl ||
29
27
  "https://lunar-services-worker.moonwell.workers.dev",
@@ -147,49 +147,28 @@ export type GetEnvironment<chain> = chain extends typeof base
147
147
  export const createEnvironment = <const chain extends Chain>(config: {
148
148
  chain: chain;
149
149
  rpcUrls?: string[] | undefined;
150
- indexerUrl?: string;
151
150
  }): GetEnvironment<chain> => {
152
151
  switch (config.chain.id) {
153
152
  case base.id:
154
- return createBaseEnvironment(
155
- config.rpcUrls,
156
- config.indexerUrl,
157
- ) as GetEnvironment<chain>;
153
+ return createBaseEnvironment(config.rpcUrls) as GetEnvironment<chain>;
158
154
  case moonbeam.id:
159
- return createMoonbeamEnvironment(
160
- config.rpcUrls,
161
- config.indexerUrl,
162
- ) as GetEnvironment<chain>;
155
+ return createMoonbeamEnvironment(config.rpcUrls) as GetEnvironment<chain>;
163
156
  case moonriver.id:
164
157
  return createMoonriverEnvironment(
165
158
  config.rpcUrls,
166
- config.indexerUrl,
167
159
  ) as GetEnvironment<chain>;
168
160
  case optimism.id:
169
- return createOptimismEnvironment(
170
- config.rpcUrls,
171
- config.indexerUrl,
172
- ) as GetEnvironment<chain>;
161
+ return createOptimismEnvironment(config.rpcUrls) as GetEnvironment<chain>;
173
162
  case ethereum.id:
174
- return createEthereumEnvironment(
175
- config.rpcUrls,
176
- config.indexerUrl,
177
- ) as GetEnvironment<chain>;
163
+ return createEthereumEnvironment(config.rpcUrls) as GetEnvironment<chain>;
178
164
  case avalanche.id:
179
165
  return createAvalancheEnvironment(
180
166
  config.rpcUrls,
181
- config.indexerUrl,
182
167
  ) as GetEnvironment<chain>;
183
168
  case arbitrum.id:
184
- return createArbitrumEnvironment(
185
- config.rpcUrls,
186
- config.indexerUrl,
187
- ) as GetEnvironment<chain>;
169
+ return createArbitrumEnvironment(config.rpcUrls) as GetEnvironment<chain>;
188
170
  case polygon.id:
189
- return createPolygonEnvironment(
190
- config.rpcUrls,
191
- config.indexerUrl,
192
- ) as GetEnvironment<chain>;
171
+ return createPolygonEnvironment(config.rpcUrls) as GetEnvironment<chain>;
193
172
  default:
194
173
  throw new Error("Unsupported chainId");
195
174
  }
@@ -141,7 +141,6 @@ export type CustomConfigType = {
141
141
  minimalDeployment?: boolean;
142
142
  apiUrl?: string; // For api.morpho.org/graphql
143
143
  rewardsApiUrl?: string; // For rewards.morpho.org
144
- lunarIndexerUrl?: string; // For lunar-services vault endpoints
145
144
  };
146
145
  governance?: {
147
146
  token: GovernanceToken;
@@ -229,9 +228,13 @@ export const createEnvironmentConfig = <
229
228
  name: string;
230
229
  chain: Chain;
231
230
  transport: Transport;
232
- indexerUrl: string;
231
+ indexerUrl?: string;
233
232
  governanceIndexerUrl: string;
234
233
  lunarIndexerUrl?: string;
234
+ onError?: (
235
+ error: unknown,
236
+ context: { source: string; chainId: number },
237
+ ) => void;
235
238
  tokens: TokensConfig<tokens>;
236
239
  markets: MarketsConfig<markets, tokens>;
237
240
  vaults: VaultsConfig<vaults, tokens>;
@@ -496,6 +499,7 @@ export const createEnvironmentConfig = <
496
499
  indexerUrl: config.indexerUrl,
497
500
  governanceIndexerUrl: config.governanceIndexerUrl,
498
501
  lunarIndexerUrl: config.lunarIndexerUrl,
502
+ onError: config.onError,
499
503
  tokens: tokenContracts,
500
504
  markets: marketContracts,
501
505
  vaults: vaultsContracts,
@@ -531,9 +535,13 @@ export type Environment<
531
535
  name: string;
532
536
  chainId: number;
533
537
  chain: Chain;
534
- indexerUrl: string;
538
+ indexerUrl?: string;
535
539
  governanceIndexerUrl: string;
536
540
  lunarIndexerUrl?: string;
541
+ onError?: (
542
+ error: unknown,
543
+ context: { source: string; chainId: number },
544
+ ) => void;
537
545
  tokens: {
538
546
  [name in keyof tokens]: TokenContractReturnType;
539
547
  };
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '0.10.7'
1
+ export const version = '0.12.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.10.7",
4
+ "version": "0.12.0",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",