@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,7 +1,7 @@
1
1
  import axios from "axios";
2
- import { Amount, applyGranularity, calculateTimeRange, getEnvironmentFromArgs, isStartOfDay, toApiGranularity, } from "../../../common/index.js";
2
+ import { applyGranularity, calculateTimeRange, getEnvironmentFromArgs, isStartOfDay, toApiGranularity, } from "../../../common/index.js";
3
3
  import { buildMarketId } from "../../../common/lunar-indexer-helpers.js";
4
- import { DEFAULT_LUNAR_TIMEOUT_MS, createLunarIndexerClient, shouldFallback, } from "../../lunar-indexer-client.js";
4
+ import { DEFAULT_LUNAR_TIMEOUT_MS, createLunarIndexerClient, } from "../../lunar-indexer-client.js";
5
5
  import { transformMarketSnapshots } from "../../lunar-indexer-transformers.js";
6
6
  import { fetchMarketSnapshotsFromIndexer, transformIsolatedMarketSnapshotFromIndexer, } from "../../morpho/markets/lunarIndexerTransform.js";
7
7
  /**
@@ -33,9 +33,7 @@ export async function getMarketSnapshots(client, args) {
33
33
  return trimLeadingEmptySnapshots(snapshots);
34
34
  }
35
35
  const snapshots = await fetchIsolatedMarketSnapshots(args.marketId, environment, args.period, args.startTime, args.endTime);
36
- // Isolated markets can receive snapshots from multiple code paths (lunar indexer,
37
- // Morpho Blue API, subgraph, or a mix). Apply a final sanity check to ensure
38
- // totalSupply is always in loan token units.
36
+ // Apply a final sanity check to ensure totalSupply is always in loan token units.
39
37
  //
40
38
  // Some markets (e.g. USDC/ETH where collateral=USDC, loan=WETH) normalize
41
39
  // totalSupply to collateral units — skip the check for those because
@@ -71,61 +69,36 @@ export async function getMarketSnapshots(client, args) {
71
69
  return trimLeadingEmptySnapshots(result);
72
70
  }
73
71
  async function fetchCoreMarketSnapshots(marketAddress, environment, period, startTime, endTime) {
74
- if (environment.lunarIndexerUrl) {
72
+ if (!environment.lunarIndexerUrl) {
73
+ if (!environment.indexerUrl)
74
+ return [];
75
75
  try {
76
- const result = await fetchCoreMarketSnapshotsFromLunar(marketAddress, environment, period, startTime, endTime);
77
- return result;
76
+ return await fetchCoreMarketSnapshotsFromPonder(marketAddress, environment);
78
77
  }
79
78
  catch (error) {
80
- if (!shouldFallback(error)) {
81
- throw error;
82
- }
83
- console.debug("[Lunar fallback] Falling back to Ponder for snapshots:", error);
79
+ console.warn(`[getMarketSnapshots] Ponder failed for chain ${environment.chainId}:`, error);
80
+ environment.onError?.(error, {
81
+ source: "market-snapshots-ponder",
82
+ chainId: environment.chainId,
83
+ });
84
+ return [];
84
85
  }
85
86
  }
86
- const result = await fetchCoreMarketSnapshotsFromPonder(marketAddress, environment);
87
- return result;
88
- }
89
- async function fetchCoreMarketSnapshotsFromLunar(marketAddress, environment, period, customStartTime, customEndTime) {
90
- if (!environment.lunarIndexerUrl) {
91
- throw new Error("Lunar Indexer URL not configured");
87
+ try {
88
+ return await fetchCoreMarketSnapshotsFromLunar(marketAddress, environment, period, startTime, endTime);
92
89
  }
93
- const client = createLunarIndexerClient({
94
- baseUrl: environment.lunarIndexerUrl,
95
- timeout: DEFAULT_LUNAR_TIMEOUT_MS,
96
- });
97
- const marketId = buildMarketId(environment.chainId, marketAddress);
98
- const { startTime, endTime, granularity } = calculateTimeRange(period, customStartTime, customEndTime);
99
- const allSnapshots = [];
100
- let cursor = null;
101
- const MAX_PAGES = 100;
102
- let page = 0;
103
- do {
104
- const response = await client.getMarketSnapshots(marketId, {
105
- limit: 1000,
106
- ...(cursor && { cursor }),
107
- granularity: toApiGranularity(granularity),
108
- startTime,
109
- endTime,
90
+ catch (error) {
91
+ console.warn(`[getMarketSnapshots] Lunar Indexer failed for chain ${environment.chainId}:`, error);
92
+ environment.onError?.(error, {
93
+ source: "market-snapshots",
94
+ chainId: environment.chainId,
110
95
  });
111
- const transformed = transformMarketSnapshots(response.results, environment.chainId);
112
- allSnapshots.push(...transformed);
113
- cursor = response.nextCursor;
114
- page++;
115
- } while (cursor !== null && page < MAX_PAGES);
116
- allSnapshots.sort((a, b) => a.timestamp - b.timestamp);
117
- return applyGranularity(allSnapshots, granularity).map((snapshot) => {
118
- const supplied = snapshot.totalSupply;
119
- const suppliedUsd = snapshot.totalSupplyUsd;
120
- const price = supplied > 0 ? suppliedUsd / supplied : 0;
121
- return {
122
- ...snapshot,
123
- collateralTokenPrice: price,
124
- loanTokenPrice: price,
125
- };
126
- });
96
+ return [];
97
+ }
127
98
  }
128
99
  async function fetchCoreMarketSnapshotsFromPonder(marketAddress, environment) {
100
+ if (!environment.indexerUrl)
101
+ return [];
129
102
  const dailyData = [];
130
103
  let hasNextPage = true;
131
104
  let endCursor;
@@ -163,57 +136,73 @@ async function fetchCoreMarketSnapshotsFromPonder(marketAddress, environment) {
163
136
  hasNextPage = result.data.data.marketDailySnapshots.pageInfo.hasNextPage;
164
137
  endCursor = result.data.data.marketDailySnapshots.pageInfo.endCursor;
165
138
  }
166
- if (dailyData.length > 0) {
167
- return dailyData.map((point) => {
168
- const supplied = Number(point.totalSupplies);
169
- const borrow = Number(point.totalBorrows);
170
- const borrowUsd = Number(point.totalBorrowsUSD);
171
- const suppliedUsd = Number(point.totalSuppliesUSD);
172
- const liquidity = Math.max(point.totalLiquidity, 0);
173
- const liquidityUsd = Math.max(point.totalLiquidityUSD, 0);
174
- const price = suppliedUsd / supplied;
175
- const result = {
176
- marketId: marketAddress.toLowerCase(),
177
- chainId: environment.chainId,
178
- timestamp: point.timestamp * 1000,
179
- totalSupply: supplied,
180
- totalSupplyUsd: suppliedUsd,
181
- totalBorrows: borrow,
182
- totalBorrowsUsd: borrowUsd,
183
- totalLiquidity: liquidity,
184
- totalLiquidityUsd: liquidityUsd,
185
- totalReallocatableLiquidity: 0,
186
- totalReallocatableLiquidityUsd: 0,
187
- baseSupplyApy: point.baseSupplyApy,
188
- baseBorrowApy: point.baseBorrowApy,
189
- collateralTokenPrice: price,
190
- loanTokenPrice: price,
191
- };
192
- return result;
193
- });
194
- }
195
- else {
139
+ if (dailyData.length === 0)
196
140
  return [];
197
- }
141
+ return dailyData.map((point) => {
142
+ const supplied = Number(point.totalSupplies);
143
+ const borrow = Number(point.totalBorrows);
144
+ const borrowUsd = Number(point.totalBorrowsUSD);
145
+ const suppliedUsd = Number(point.totalSuppliesUSD);
146
+ const liquidity = Math.max(point.totalLiquidity, 0);
147
+ const liquidityUsd = Math.max(point.totalLiquidityUSD, 0);
148
+ const price = suppliedUsd / supplied;
149
+ return {
150
+ marketId: marketAddress.toLowerCase(),
151
+ chainId: environment.chainId,
152
+ timestamp: point.timestamp * 1000,
153
+ totalSupply: supplied,
154
+ totalSupplyUsd: suppliedUsd,
155
+ totalBorrows: borrow,
156
+ totalBorrowsUsd: borrowUsd,
157
+ totalLiquidity: liquidity,
158
+ totalLiquidityUsd: liquidityUsd,
159
+ totalReallocatableLiquidity: 0,
160
+ totalReallocatableLiquidityUsd: 0,
161
+ baseSupplyApy: point.baseSupplyApy,
162
+ baseBorrowApy: point.baseBorrowApy,
163
+ collateralTokenPrice: price,
164
+ loanTokenPrice: price,
165
+ };
166
+ });
198
167
  }
199
- async function fetchMorphoGraphQL(environment, query, operationName, variables) {
200
- try {
201
- const url = environment.custom.morpho?.apiUrl || "https://api.morpho.org/graphql";
202
- const response = await axios.post(url, { query: query, operationName, variables }, { timeout: 5000 });
203
- if (response.status !== 200 || response.data.errors) {
204
- if (typeof window !== "undefined") {
205
- console.debug(`[Morpho GraphQL Market Snapshots] Non-200 (${response.statusText}) or errors:`, response.data.errors);
206
- }
207
- return undefined;
208
- }
209
- return response.data.data;
210
- }
211
- catch (error) {
212
- if (typeof window !== "undefined") {
213
- console.debug("[Morpho GraphQL Market Snapshots] Error fetching data:", error);
214
- }
215
- return undefined;
168
+ async function fetchCoreMarketSnapshotsFromLunar(marketAddress, environment, period, customStartTime, customEndTime) {
169
+ if (!environment.lunarIndexerUrl) {
170
+ throw new Error("Lunar Indexer URL not configured");
216
171
  }
172
+ const client = createLunarIndexerClient({
173
+ baseUrl: environment.lunarIndexerUrl,
174
+ timeout: DEFAULT_LUNAR_TIMEOUT_MS,
175
+ });
176
+ const marketId = buildMarketId(environment.chainId, marketAddress);
177
+ const { startTime, endTime, granularity } = calculateTimeRange(period, customStartTime, customEndTime);
178
+ const allSnapshots = [];
179
+ let cursor = null;
180
+ const MAX_PAGES = 100;
181
+ let page = 0;
182
+ do {
183
+ const response = await client.getMarketSnapshots(marketId, {
184
+ limit: 1000,
185
+ ...(cursor && { cursor }),
186
+ granularity: toApiGranularity(granularity),
187
+ startTime,
188
+ endTime,
189
+ });
190
+ const transformed = transformMarketSnapshots(response.results, environment.chainId);
191
+ allSnapshots.push(...transformed);
192
+ cursor = response.nextCursor;
193
+ page++;
194
+ } while (cursor !== null && page < MAX_PAGES);
195
+ allSnapshots.sort((a, b) => a.timestamp - b.timestamp);
196
+ return applyGranularity(allSnapshots, granularity).map((snapshot) => {
197
+ const supplied = snapshot.totalSupply;
198
+ const suppliedUsd = snapshot.totalSupplyUsd;
199
+ const price = supplied > 0 ? suppliedUsd / supplied : 0;
200
+ return {
201
+ ...snapshot,
202
+ collateralTokenPrice: price,
203
+ loanTokenPrice: price,
204
+ };
205
+ });
217
206
  }
218
207
  // Fetches a timestamp-ms → WELL price map from the WELL market in the indexer.
219
208
  // Used to correct stkWELL snapshots where the indexer stored collateralTokenPrice = 0.
@@ -245,258 +234,117 @@ async function fetchWellPricesByTimestamp(lunarIndexerUrl, chainId, wellMarketCo
245
234
  }
246
235
  export async function fetchIsolatedMarketSnapshots(marketAddress, environment, period, customStartTime, customEndTime) {
247
236
  const lunarIndexerUrl = environment.lunarIndexerUrl;
248
- if (lunarIndexerUrl) {
249
- try {
250
- const { startTime } = calculateTimeRange(period, customStartTime, customEndTime);
251
- // The USDC/ETH market (collateral = USDC, loan = WETH) needs normalization:
252
- // the indexer returns totalSupplyAssets in WETH units but the chart needs
253
- // USDC-equivalent units (totalSupplyAssetsUsd / collateralTokenPrice).
254
- const marketConfig = Object.values(environment.config.morphoMarkets).find((m) => m.id.toLowerCase() === marketAddress.toLowerCase());
255
- const loanSymbol = marketConfig
256
- ? environment.config.tokens[marketConfig.loanToken]?.symbol
257
- : undefined;
258
- const collateralSymbol = marketConfig
259
- ? environment.config.tokens[marketConfig.collateralToken]?.symbol
260
- : undefined;
261
- const normalizeToCollateral = loanSymbol === "ETH" && collateralSymbol === "USDC";
262
- // stkWELL is not priced by the indexer (same oracle as WELL but unrecognized).
263
- // Fetch the WELL market snapshots concurrently and use their prices to correct
264
- // any stkWELL snapshots where collateralTokenPrice is 0.
265
- const isStkWellMarket = collateralSymbol === "stkWELL";
266
- const wellMarketConfig = isStkWellMarket
267
- ? Object.values(environment.config.morphoMarkets).find((m) => m.collateralToken === "WELL" || m.loanToken === "WELL")
268
- : undefined;
269
- const wellPricesPromise = wellMarketConfig
270
- ? fetchWellPricesByTimestamp(lunarIndexerUrl, environment.chainId, wellMarketConfig, startTime)
271
- : Promise.resolve(new Map());
272
- const allSnapshots = [];
273
- let cursor;
274
- const MAX_PAGES = 100;
275
- let page = 0;
276
- do {
277
- const response = await fetchMarketSnapshotsFromIndexer(lunarIndexerUrl, environment.chainId, marketAddress, {
278
- startTime,
279
- granularity: "1d",
280
- limit: 1000,
281
- ...(cursor && { cursor }),
282
- });
283
- allSnapshots.push(...response.results
284
- .filter((s) => isStartOfDay(s.timestamp))
285
- .map((s) => transformIsolatedMarketSnapshotFromIndexer(s, {
286
- normalizeToCollateral,
287
- })));
288
- cursor = response.nextCursor ?? undefined;
289
- page++;
290
- } while (cursor !== undefined && page < MAX_PAGES);
291
- // Sanity check for non-normalized markets: detect when totalSupplyAssets was
292
- // stored in collateral units instead of loan token units (an indexer bug seen on
293
- // the stkWELL/USDC market). When this happens, totalSupplyUsd / totalSupply is
294
- // close to collateralTokenPrice rather than loanTokenPrice. Recover the correct
295
- // loan-token amount from the USD value instead of discarding the data point.
296
- // We skip normalized markets (e.g. USDC/ETH where totalSupply is already in
297
- // collateral units after normalization) to avoid false corrections.
298
- const sanitizedSnapshots = normalizeToCollateral
299
- ? allSnapshots
300
- : allSnapshots.map((snapshot) => {
301
- if (snapshot.totalSupply === 0 || snapshot.loanTokenPrice === 0)
302
- return snapshot;
303
- const impliedLoanPrice = snapshot.totalSupplyUsd / snapshot.totalSupply;
304
- if (impliedLoanPrice < snapshot.loanTokenPrice * 0.1) {
305
- return {
306
- ...snapshot,
307
- totalSupply: snapshot.totalSupplyUsd / snapshot.loanTokenPrice,
308
- totalLiquidity: snapshot.totalLiquidityUsd / snapshot.loanTokenPrice,
309
- };
310
- }
311
- return snapshot;
312
- });
313
- if (isStkWellMarket) {
314
- const wellPriceByTimestampMs = await wellPricesPromise;
315
- return sanitizedSnapshots.map((snapshot) => {
316
- // Resolve the collateral (stkWELL) price: use indexed price when available,
317
- // fall back to the WELL market price fetched concurrently.
318
- let collateralTokenPrice = snapshot.collateralTokenPrice;
319
- if (collateralTokenPrice === 0) {
320
- const wellPrice = wellPriceByTimestampMs.get(snapshot.timestamp);
321
- if (wellPrice)
322
- collateralTokenPrice = wellPrice;
323
- }
324
- // The lunar indexer stores totalSupplyAssets in loan-token (USDC) units.
325
- // All fallback paths (BlueAPI, subgraph) convert to collateral (stkWELL) units:
326
- // totalSupply = totalSupplyUsd / collateralTokenPrice
327
- // Apply the same conversion here so the chart axis is consistent.
328
- const totalSupply = collateralTokenPrice > 0
329
- ? snapshot.totalSupplyUsd / collateralTokenPrice
330
- : snapshot.totalSupply;
331
- const totalLiquidity = collateralTokenPrice > 0
332
- ? snapshot.totalLiquidityUsd / collateralTokenPrice
333
- : snapshot.totalLiquidity;
334
- const totalReallocatableLiquidity = collateralTokenPrice > 0
335
- ? snapshot.totalReallocatableLiquidityUsd / collateralTokenPrice
336
- : snapshot.totalReallocatableLiquidity;
337
- return {
338
- ...snapshot,
339
- collateralTokenPrice,
340
- totalSupply,
341
- totalLiquidity,
342
- totalReallocatableLiquidity,
343
- };
344
- });
345
- }
346
- return sanitizedSnapshots;
347
- }
348
- catch (error) {
349
- if (!shouldFallback(error)) {
350
- throw error;
351
- }
352
- console.debug("[Lunar fallback] Falling back for isolated market snapshots:", error);
353
- }
237
+ if (!lunarIndexerUrl) {
238
+ return [];
354
239
  }
355
- return fetchIsolatedMarketSnapshotsFromBlueApi(marketAddress, environment, period, customStartTime, customEndTime);
356
- }
357
- async function fetchIsolatedMarketSnapshotsFromBlueApi(marketAddress, environment, period, customStartTime, customEndTime) {
358
- const marketConfig = Object.values(environment.config.morphoMarkets).find((market) => market.id.toLowerCase() === marketAddress.toLowerCase());
359
- const isStkWellMarket = marketConfig &&
360
- environment.config.tokens[marketConfig.collateralToken]?.symbol ===
361
- "stkWELL";
362
- // If stkWELL market, fetch WELL price from subgraph. stkWELL and WELL have the same price
363
- let wellPrice = null;
364
- if (isStkWellMarket) {
365
- const wellMarketConfig = Object.values(environment.config.morphoMarkets).find((market) => market.collateralToken === "WELL" || market.loanToken === "WELL");
366
- if (wellMarketConfig) {
367
- const wellQuery = `
368
- query getWellPrice {
369
- wellMarket: marketByUniqueKey(
370
- chainId: ${environment.chainId}
371
- uniqueKey: "${wellMarketConfig.id.toLowerCase()}"
372
- ) {
373
- loanAsset {
374
- priceUsd
375
- }
376
- collateralAsset {
377
- priceUsd
378
- }
379
- }
380
- }`;
381
- const wellResult = await fetchMorphoGraphQL(environment, wellQuery, "getWellPrice");
382
- if (wellResult?.wellMarket) {
383
- wellPrice =
384
- wellMarketConfig.collateralToken === "WELL"
385
- ? wellResult.wellMarket.collateralAsset.priceUsd
386
- : wellResult.wellMarket.loanAsset.priceUsd;
387
- }
388
- }
240
+ try {
241
+ return await fetchIsolatedMarketSnapshotsFromLunar(marketAddress, environment, lunarIndexerUrl, period, customStartTime, customEndTime);
389
242
  }
390
- const operationName = "getMarketTotalTimeseries";
243
+ catch (error) {
244
+ console.warn(`[getMarketSnapshots] Lunar Indexer failed for chain ${environment.chainId}:`, error);
245
+ environment.onError?.(error, {
246
+ source: "market-snapshots",
247
+ chainId: environment.chainId,
248
+ });
249
+ return [];
250
+ }
251
+ }
252
+ async function fetchIsolatedMarketSnapshotsFromLunar(marketAddress, environment, lunarIndexerUrl, period, customStartTime, customEndTime) {
391
253
  const { startTime } = calculateTimeRange(period, customStartTime, customEndTime);
392
- const variables = {
393
- options: {
394
- startTimestamp: startTime,
395
- interval: "DAY",
396
- },
397
- };
398
- const query = `
399
- query getMarketTotalTimeseries($options: TimeseriesOptions) {
400
- marketTotalTimeseries: marketByUniqueKey(
401
- chainId: ${environment.chainId}
402
- uniqueKey: "${marketAddress.toLowerCase()}"
403
- ) {
404
- uniqueKey
405
- loanAsset {
406
- priceUsd
407
- decimals
408
- }
409
- collateralAsset {
410
- priceUsd
411
- decimals
412
- }
413
- historicalState {
414
- supplyApy(options: $options) {
415
- x
416
- y
417
- }
418
- borrowApy(options: $options) {
419
- x
420
- y
421
- }
422
- borrowAssets(options: $options) {
423
- x
424
- y
425
- }
426
- borrowAssetsUsd(options: $options) {
427
- x
428
- y
429
- }
430
- supplyAssets(options: $options) {
431
- x
432
- y
433
- }
434
- supplyAssetsUsd(options: $options) {
435
- x
436
- y
437
- }
438
- liquidityAssets(options: $options) {
439
- x
440
- y
441
- }
442
- liquidityAssetsUsd(options: $options) {
443
- x
444
- y
445
- }
446
- }
447
- }
448
- }`;
449
- const result = await fetchMorphoGraphQL(environment, query, operationName, variables);
450
- if (result) {
451
- try {
452
- const markets = result.marketTotalTimeseries.historicalState.borrowAssets.map((borrowAssets, index) => {
453
- const loanDecimals = result.marketTotalTimeseries.loanAsset.decimals;
454
- const borrowAssetsUsd = result.marketTotalTimeseries.historicalState.borrowAssetsUsd[index];
455
- const supplyAssets = result.marketTotalTimeseries.historicalState.supplyAssets[index];
456
- const supplyAssetsUsd = result.marketTotalTimeseries.historicalState.supplyAssetsUsd[index];
457
- const liquidityAssets = result.marketTotalTimeseries.historicalState.liquidityAssets[index];
458
- const liquidityAssetsUsd = result.marketTotalTimeseries.historicalState.liquidityAssetsUsd[index];
459
- const supplyApy = result.marketTotalTimeseries.historicalState.supplyApy[index];
460
- const borrowApy = result.marketTotalTimeseries.historicalState.borrowApy[index];
461
- let collateralTokenPrice = result.marketTotalTimeseries.collateralAsset.priceUsd;
462
- const loanTokenPrice = result.marketTotalTimeseries.loanAsset.priceUsd;
463
- if (isStkWellMarket && wellPrice !== null) {
464
- collateralTokenPrice = wellPrice;
465
- }
466
- const totalSupply = (new Amount(BigInt(supplyAssets.y), Number(loanDecimals)).value *
467
- loanTokenPrice) /
468
- collateralTokenPrice;
469
- const totalBorrows = new Amount(BigInt(borrowAssets.y), Number(loanDecimals)).value;
470
- const totalLiquidity = (new Amount(BigInt(liquidityAssets.y), Number(loanDecimals))
471
- .value *
472
- loanTokenPrice) /
473
- collateralTokenPrice;
254
+ // The USDC/ETH market (collateral = USDC, loan = WETH) needs normalization:
255
+ // the indexer returns totalSupplyAssets in WETH units but the chart needs
256
+ // USDC-equivalent units (totalSupplyAssetsUsd / collateralTokenPrice).
257
+ const marketConfig = Object.values(environment.config.morphoMarkets).find((m) => m.id.toLowerCase() === marketAddress.toLowerCase());
258
+ const loanSymbol = marketConfig
259
+ ? environment.config.tokens[marketConfig.loanToken]?.symbol
260
+ : undefined;
261
+ const collateralSymbol = marketConfig
262
+ ? environment.config.tokens[marketConfig.collateralToken]?.symbol
263
+ : undefined;
264
+ const normalizeToCollateral = loanSymbol === "ETH" && collateralSymbol === "USDC";
265
+ // stkWELL is not priced by the indexer (same oracle as WELL but unrecognized).
266
+ // Fetch the WELL market snapshots concurrently and use their prices to correct
267
+ // any stkWELL snapshots where collateralTokenPrice is 0.
268
+ const isStkWellMarket = collateralSymbol === "stkWELL";
269
+ const wellMarketConfig = isStkWellMarket
270
+ ? Object.values(environment.config.morphoMarkets).find((m) => m.collateralToken === "WELL" || m.loanToken === "WELL")
271
+ : undefined;
272
+ const wellPricesPromise = wellMarketConfig
273
+ ? fetchWellPricesByTimestamp(lunarIndexerUrl, environment.chainId, wellMarketConfig, startTime)
274
+ : Promise.resolve(new Map());
275
+ const allSnapshots = [];
276
+ let cursor;
277
+ const MAX_PAGES = 100;
278
+ let page = 0;
279
+ do {
280
+ const response = await fetchMarketSnapshotsFromIndexer(lunarIndexerUrl, environment.chainId, marketAddress, {
281
+ startTime,
282
+ granularity: "1d",
283
+ limit: 1000,
284
+ ...(cursor && { cursor }),
285
+ });
286
+ allSnapshots.push(...response.results
287
+ .filter((s) => isStartOfDay(s.timestamp))
288
+ .map((s) => transformIsolatedMarketSnapshotFromIndexer(s, {
289
+ normalizeToCollateral,
290
+ })));
291
+ cursor = response.nextCursor ?? undefined;
292
+ page++;
293
+ } while (cursor !== undefined && page < MAX_PAGES);
294
+ // Sanity check for non-normalized markets: detect when totalSupplyAssets was
295
+ // stored in collateral units instead of loan token units (an indexer bug seen on
296
+ // the stkWELL/USDC market). When this happens, totalSupplyUsd / totalSupply is
297
+ // close to collateralTokenPrice rather than loanTokenPrice. Recover the correct
298
+ // loan-token amount from the USD value instead of discarding the data point.
299
+ // We skip normalized markets (e.g. USDC/ETH where totalSupply is already in
300
+ // collateral units after normalization) to avoid false corrections.
301
+ const sanitizedSnapshots = normalizeToCollateral
302
+ ? allSnapshots
303
+ : allSnapshots.map((snapshot) => {
304
+ if (snapshot.totalSupply === 0 || snapshot.loanTokenPrice === 0)
305
+ return snapshot;
306
+ const impliedLoanPrice = snapshot.totalSupplyUsd / snapshot.totalSupply;
307
+ if (impliedLoanPrice < snapshot.loanTokenPrice * 0.1) {
474
308
  return {
475
- chainId: environment.chainId,
476
- timestamp: borrowAssets.x * 1000,
477
- marketId: marketAddress.toLowerCase(),
478
- totalBorrows,
479
- totalBorrowsUsd: Number(borrowAssetsUsd.y),
480
- totalSupply,
481
- totalSupplyUsd: Number(supplyAssetsUsd.y),
482
- totalLiquidity,
483
- totalLiquidityUsd: Number(liquidityAssetsUsd.y),
484
- totalReallocatableLiquidity: 0,
485
- totalReallocatableLiquidityUsd: 0,
486
- baseSupplyApy: supplyApy.y,
487
- baseBorrowApy: borrowApy.y,
488
- loanTokenPrice,
489
- collateralTokenPrice,
309
+ ...snapshot,
310
+ totalSupply: snapshot.totalSupplyUsd / snapshot.loanTokenPrice,
311
+ totalLiquidity: snapshot.totalLiquidityUsd / snapshot.loanTokenPrice,
490
312
  };
491
- });
492
- return markets;
493
- }
494
- catch (ex) {
495
- return [];
496
- }
497
- }
498
- else {
499
- return [];
313
+ }
314
+ return snapshot;
315
+ });
316
+ if (isStkWellMarket) {
317
+ const wellPriceByTimestampMs = await wellPricesPromise;
318
+ return sanitizedSnapshots.map((snapshot) => {
319
+ // Resolve the collateral (stkWELL) price: use indexed price when available,
320
+ // fall back to the WELL market price fetched concurrently.
321
+ let collateralTokenPrice = snapshot.collateralTokenPrice;
322
+ if (collateralTokenPrice === 0) {
323
+ const wellPrice = wellPriceByTimestampMs.get(snapshot.timestamp);
324
+ if (wellPrice)
325
+ collateralTokenPrice = wellPrice;
326
+ }
327
+ // The lunar indexer stores totalSupplyAssets in loan-token (USDC) units.
328
+ // Convert to collateral (stkWELL) units for a consistent chart axis:
329
+ // totalSupply = totalSupplyUsd / collateralTokenPrice
330
+ const totalSupply = collateralTokenPrice > 0
331
+ ? snapshot.totalSupplyUsd / collateralTokenPrice
332
+ : snapshot.totalSupply;
333
+ const totalLiquidity = collateralTokenPrice > 0
334
+ ? snapshot.totalLiquidityUsd / collateralTokenPrice
335
+ : snapshot.totalLiquidity;
336
+ const totalReallocatableLiquidity = collateralTokenPrice > 0
337
+ ? snapshot.totalReallocatableLiquidityUsd / collateralTokenPrice
338
+ : snapshot.totalReallocatableLiquidity;
339
+ return {
340
+ ...snapshot,
341
+ collateralTokenPrice,
342
+ totalSupply,
343
+ totalLiquidity,
344
+ totalReallocatableLiquidity,
345
+ };
346
+ });
500
347
  }
348
+ return sanitizedSnapshots;
501
349
  }
502
350
  //# sourceMappingURL=getMarketSnapshots.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMarketSnapshots.js","sourceRoot":"","sources":["../../../../actions/core/markets/getMarketSnapshots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getMarketSnapshots.js","sourceRoot":"","sources":["../../../../actions/core/markets/getMarketSnapshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAIzE,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EACL,+BAA+B,EAC/B,0CAA0C,GAC3C,MAAM,+CAA+C,CAAC;AAgBvD;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAA2B;IAE3B,IAAI,oBAAoB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IACE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;YACzC,CAAC,CAAC,SAAS,GAAG,oBAAoB,EAClC,CAAC;YACD,oBAAoB,GAAG,CAAC,CAAC,SAAS,CAAC;QACrC,CAAC;IACH,CAAC;IACD,IAAI,oBAAoB,KAAK,MAAM,CAAC,iBAAiB;QAAE,OAAO,EAAE,CAAC;IACjE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,oBAAoB,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAItC,MAAsB,EACtB,IAAyD;IAEzD,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC9C,IAAI,CAAC,QAAQ,EACb,WAAW,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,CACb,CAAC;QACF,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAClD,IAAI,CAAC,QAAQ,EACb,WAAW,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,CACb,CAAC;IAEF,kFAAkF;IAClF,EAAE;IACF,0EAA0E;IAC1E,qEAAqE;IACrE,4EAA4E;IAC5E,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CACvE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAC1D,CAAC;IACF,MAAM,UAAU,GAAG,YAAY;QAC7B,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM;QAC3D,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,gBAAgB,GAAG,YAAY;QACnC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,MAAM;QACjE,CAAC,CAAC,SAAS,CAAC;IACd,2EAA2E;IAC3E,gEAAgE;IAChE,4EAA4E;IAC5E,6EAA6E;IAC7E,MAAM,kBAAkB,GACtB,CAAC,UAAU,KAAK,KAAK,IAAI,gBAAgB,KAAK,MAAM,CAAC;QACrD,gBAAgB,KAAK,SAAS,CAAC;IAEjC,MAAM,MAAM,GAAG,kBAAkB;QAC/B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzB,IAAI,QAAQ,CAAC,WAAW,KAAK,CAAC,IAAI,QAAQ,CAAC,cAAc,KAAK,CAAC;gBAC7D,OAAO,QAAQ,CAAC;YAClB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC;YACxE,IAAI,gBAAgB,GAAG,QAAQ,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;gBACrD,OAAO;oBACL,GAAG,QAAQ;oBACX,WAAW,EAAE,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc;oBAC9D,cAAc,EACZ,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,cAAc;iBACvD,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IAEP,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,aAAqB,EACrB,WAAwB,EACxB,MAAmC,EACnC,SAAkB,EAClB,OAAgB;IAEhB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,OAAO,MAAM,kCAAkC,CAC7C,aAAa,EACb,WAAW,CACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CACV,gDAAgD,WAAW,CAAC,OAAO,GAAG,EACtE,KAAK,CACN,CAAC;YACF,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;gBAC3B,MAAM,EAAE,yBAAyB;gBACjC,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,iCAAiC,CAC5C,aAAa,EACb,WAAW,EACX,MAAM,EACN,SAAS,EACT,OAAO,CACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,uDAAuD,WAAW,CAAC,OAAO,GAAG,EAC7E,KAAK,CACN,CAAC;QACF,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;YAC3B,MAAM,EAAE,kBAAkB;YAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kCAAkC,CAC/C,aAAqB,EACrB,WAAwB;IAExB,IAAI,CAAC,WAAW,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAcvC,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,SAA6B,CAAC;IAElC,OAAO,WAAW,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAO5B,WAAW,CAAC,UAAU,EAAE;YACzB,KAAK,EAAE;;;;;;wCAM2B,aAAa,CAAC,WAAW,EAAE,eAAe,WAAW,CAAC,OAAO;gBACrF,SAAS,CAAC,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;SAmB/C;SACJ,CAAC,CAAC;QAEH,SAAS,CAAC,IAAI,CACZ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CACnD,CAAC,CAAwB,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CACxD,CACF,CAAC;QACF,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzE,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,SAAS,CAAC;IACvE,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,WAAW,GAAG,QAAQ,CAAC;QAErC,OAAO;YACL,QAAQ,EAAE,aAAa,CAAC,WAAW,EAAE;YACrC,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;YACjC,WAAW,EAAE,QAAQ;YACrB,cAAc,EAAE,WAAW;YAC3B,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,SAAS;YAC1B,cAAc,EAAE,SAAS;YACzB,iBAAiB,EAAE,YAAY;YAC/B,2BAA2B,EAAE,CAAC;YAC9B,8BAA8B,EAAE,CAAC;YACjC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,oBAAoB,EAAE,KAAK;YAC3B,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,iCAAiC,CAC9C,aAAqB,EACrB,WAAwB,EACxB,MAAmC,EACnC,eAAwB,EACxB,aAAsB;IAEtB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACtC,OAAO,EAAE,WAAW,CAAC,eAAe;QACpC,OAAO,EAAE,wBAAwB;KAClC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAC5D,MAAM,EACN,eAAe,EACf,aAAa,CACd,CAAC;IAEF,MAAM,YAAY,GAAqB,EAAE,CAAC;IAC1C,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,GAAG,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE;YACzD,KAAK,EAAE,IAAI;YACX,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;YACzB,WAAW,EAAE,gBAAgB,CAAC,WAAW,CAAC;YAC1C,SAAS;YACT,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,wBAAwB,CAC1C,QAAQ,CAAC,OAAO,EAChB,WAAW,CAAC,OAAO,CACpB,CAAC;QAEF,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAElC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC7B,IAAI,EAAE,CAAC;IACT,CAAC,QAAQ,MAAM,KAAK,IAAI,IAAI,IAAI,GAAG,SAAS,EAAE;IAE9C,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACvD,OAAO,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;QACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC;QAC5C,MAAM,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,OAAO;YACL,GAAG,QAAQ;YACX,oBAAoB,EAAE,KAAK;YAC3B,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,uFAAuF;AACvF,KAAK,UAAU,0BAA0B,CACvC,eAAuB,EACvB,OAAe,EACf,gBAA4E,EAC5E,SAAiB;IAEjB,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,KAAK,MAAM,CAAC;IACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,IAAI,MAA0B,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,GAAG,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,+BAA+B,CACpD,eAAe,EACf,OAAO,EACP,gBAAgB,CAAC,EAAE,EACnB;YACE,SAAS;YACT,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;SAC1B,CACF,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAC7B,gBAAgB;gBACd,CAAC,CAAC,QAAQ,CAAC,oBAAoB;gBAC/B,CAAC,CAAC,QAAQ,CAAC,cAAc,CAC5B,CAAC;YACF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,MAAM,GAAG,QAAQ,CAAC,UAAU,IAAI,SAAS,CAAC;QAC1C,IAAI,EAAE,CAAC;IACT,CAAC,QAAQ,MAAM,KAAK,SAAS,IAAI,IAAI,GAAG,SAAS,EAAE;IAEnD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,aAAqB,EACrB,WAAwB,EACxB,MAAmC,EACnC,eAAwB,EACxB,aAAsB;IAEtB,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;IAEpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,qCAAqC,CAChD,aAAa,EACb,WAAW,EACX,eAAe,EACf,MAAM,EACN,eAAe,EACf,aAAa,CACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,uDAAuD,WAAW,CAAC,OAAO,GAAG,EAC7E,KAAK,CACN,CAAC;QACF,WAAW,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;YAC3B,MAAM,EAAE,kBAAkB;YAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qCAAqC,CAClD,aAAqB,EACrB,WAAwB,EACxB,eAAuB,EACvB,MAAmC,EACnC,eAAwB,EACxB,aAAsB;IAEtB,MAAM,EAAE,SAAS,EAAE,GAAG,kBAAkB,CACtC,MAAM,EACN,eAAe,EACf,aAAa,CACd,CAAC;IAEF,4EAA4E;IAC5E,0EAA0E;IAC1E,uEAAuE;IACvE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CACvE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CAC1D,CAAC;IACF,MAAM,UAAU,GAAG,YAAY;QAC7B,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM;QAC3D,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,gBAAgB,GAAG,YAAY;QACnC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,MAAM;QACjE,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,qBAAqB,GACzB,UAAU,KAAK,KAAK,IAAI,gBAAgB,KAAK,MAAM,CAAC;IAEtD,+EAA+E;IAC/E,+EAA+E;IAC/E,yDAAyD;IACzD,MAAM,eAAe,GAAG,gBAAgB,KAAK,SAAS,CAAC;IACvD,MAAM,gBAAgB,GAAG,eAAe;QACtC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,CAC9D;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,iBAAiB,GAAG,gBAAgB;QACxC,CAAC,CAAC,0BAA0B,CACxB,eAAe,EACf,WAAW,CAAC,OAAO,EACnB,gBAAgB,EAChB,SAAS,CACV;QACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAqB,EAAE,CAAC;IAC1C,IAAI,MAA0B,CAAC;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC;IACtB,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,GAAG,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,+BAA+B,CACpD,eAAe,EACf,WAAW,CAAC,OAAO,EACnB,aAAa,EACb;YACE,SAAS;YACT,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,CAAC;SAC1B,CACF,CAAC;QAEF,YAAY,CAAC,IAAI,CACf,GAAG,QAAQ,CAAC,OAAO;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;aACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,0CAA0C,CAAC,CAAC,EAAE;YAC5C,qBAAqB;SACtB,CAAC,CACH,CACJ,CAAC;QAEF,MAAM,GAAG,QAAQ,CAAC,UAAU,IAAI,SAAS,CAAC;QAC1C,IAAI,EAAE,CAAC;IACT,CAAC,QAAQ,MAAM,KAAK,SAAS,IAAI,IAAI,GAAG,SAAS,EAAE;IAEnD,6EAA6E;IAC7E,iFAAiF;IACjF,+EAA+E;IAC/E,gFAAgF;IAChF,6EAA6E;IAC7E,4EAA4E;IAC5E,oEAAoE;IACpE,MAAM,kBAAkB,GAAG,qBAAqB;QAC9C,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC5B,IAAI,QAAQ,CAAC,WAAW,KAAK,CAAC,IAAI,QAAQ,CAAC,cAAc,KAAK,CAAC;gBAC7D,OAAO,QAAQ,CAAC;YAClB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC;YACxE,IAAI,gBAAgB,GAAG,QAAQ,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC;gBACrD,OAAO;oBACL,GAAG,QAAQ;oBACX,WAAW,EAAE,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC,cAAc;oBAC9D,cAAc,EACZ,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,cAAc;iBACvD,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IAEP,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,sBAAsB,GAAG,MAAM,iBAAiB,CAAC;QACvD,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzC,4EAA4E;YAC5E,2DAA2D;YAC3D,IAAI,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;YACzD,IAAI,oBAAoB,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACjE,IAAI,SAAS;oBAAE,oBAAoB,GAAG,SAAS,CAAC;YAClD,CAAC;YAED,yEAAyE;YACzE,qEAAqE;YACrE,wDAAwD;YACxD,MAAM,WAAW,GACf,oBAAoB,GAAG,CAAC;gBACtB,CAAC,CAAC,QAAQ,CAAC,cAAc,GAAG,oBAAoB;gBAChD,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC3B,MAAM,cAAc,GAClB,oBAAoB,GAAG,CAAC;gBACtB,CAAC,CAAC,QAAQ,CAAC,iBAAiB,GAAG,oBAAoB;gBACnD,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC9B,MAAM,2BAA2B,GAC/B,oBAAoB,GAAG,CAAC;gBACtB,CAAC,CAAC,QAAQ,CAAC,8BAA8B,GAAG,oBAAoB;gBAChE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAE3C,OAAO;gBACL,GAAG,QAAQ;gBACX,oBAAoB;gBACpB,WAAW;gBACX,cAAc;gBACd,2BAA2B;aAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}