@stake-dao/reader 0.1.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 (182) hide show
  1. package/dist/esm/batches/curveStrats.js +163 -0
  2. package/dist/esm/batches/curveStrats.js.map +1 -0
  3. package/dist/esm/batches/index.js +4 -0
  4. package/dist/esm/batches/index.js.map +1 -0
  5. package/dist/esm/batches/sdtGaugeRewards.js +22 -0
  6. package/dist/esm/batches/sdtGaugeRewards.js.map +1 -0
  7. package/dist/esm/batches/tokenData.js +22 -0
  8. package/dist/esm/batches/tokenData.js.map +1 -0
  9. package/dist/esm/batches/types.js +2 -0
  10. package/dist/esm/batches/types.js.map +1 -0
  11. package/dist/esm/endpoints.js +3 -0
  12. package/dist/esm/endpoints.js.map +1 -0
  13. package/dist/esm/index.js +8 -0
  14. package/dist/esm/index.js.map +1 -0
  15. package/dist/esm/number.js +45 -0
  16. package/dist/esm/number.js.map +1 -0
  17. package/dist/esm/prices.js +70 -0
  18. package/dist/esm/prices.js.map +1 -0
  19. package/dist/esm/sdt/sdt.js +92 -0
  20. package/dist/esm/sdt/sdt.js.map +1 -0
  21. package/dist/esm/sdt/veSdtAlternativeYields.js +19 -0
  22. package/dist/esm/sdt/veSdtAlternativeYields.js.map +1 -0
  23. package/dist/esm/strategies/curve/build.js +123 -0
  24. package/dist/esm/strategies/curve/build.js.map +1 -0
  25. package/dist/esm/strategies/curve/endpoints.js +6 -0
  26. package/dist/esm/strategies/curve/endpoints.js.map +1 -0
  27. package/dist/esm/strategies/curve/fetch/curveApiData/abi.js +80 -0
  28. package/dist/esm/strategies/curve/fetch/curveApiData/abi.js.map +1 -0
  29. package/dist/esm/strategies/curve/fetch/curveApiData/bytecode.js +24 -0
  30. package/dist/esm/strategies/curve/fetch/curveApiData/bytecode.js.map +1 -0
  31. package/dist/esm/strategies/curve/fetch/curveApiData/config.js +47 -0
  32. package/dist/esm/strategies/curve/fetch/curveApiData/config.js.map +1 -0
  33. package/dist/esm/strategies/curve/fetch/curveApiData/getCurveApiData.js +172 -0
  34. package/dist/esm/strategies/curve/fetch/curveApiData/getCurveApiData.js.map +1 -0
  35. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.js +33 -0
  36. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.js.map +1 -0
  37. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js +36 -0
  38. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js.map +1 -0
  39. package/dist/esm/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.js +26 -0
  40. package/dist/esm/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.js.map +1 -0
  41. package/dist/esm/strategies/curve/fetch/curveApiData/getRegistries.js +20 -0
  42. package/dist/esm/strategies/curve/fetch/curveApiData/getRegistries.js.map +1 -0
  43. package/dist/esm/strategies/curve/fetch/getAprBreakdown.js +73 -0
  44. package/dist/esm/strategies/curve/fetch/getAprBreakdown.js.map +1 -0
  45. package/dist/esm/strategies/curve/fetch/getCvxApr.js +33 -0
  46. package/dist/esm/strategies/curve/fetch/getCvxApr.js.map +1 -0
  47. package/dist/esm/strategies/curve/fetch/getOnlyboostData.js +63 -0
  48. package/dist/esm/strategies/curve/fetch/getOnlyboostData.js.map +1 -0
  49. package/dist/esm/strategies/curve/fetch/getStratsWithApr.js +88 -0
  50. package/dist/esm/strategies/curve/fetch/getStratsWithApr.js.map +1 -0
  51. package/dist/esm/strategies/curve/fetch/index.js +209 -0
  52. package/dist/esm/strategies/curve/fetch/index.js.map +1 -0
  53. package/dist/esm/strategies/curve/fetch/types.js +2 -0
  54. package/dist/esm/strategies/curve/fetch/types.js.map +1 -0
  55. package/dist/esm/strategies/curve/httpCalls.js +80 -0
  56. package/dist/esm/strategies/curve/httpCalls.js.map +1 -0
  57. package/dist/esm/strategies/curve/onChainCalls.js +28 -0
  58. package/dist/esm/strategies/curve/onChainCalls.js.map +1 -0
  59. package/dist/esm/strategies/types.js +2 -0
  60. package/dist/esm/strategies/types.js.map +1 -0
  61. package/dist/esm/strategies/utils/boost.js +30 -0
  62. package/dist/esm/strategies/utils/boost.js.map +1 -0
  63. package/dist/esm/strategies/utils/decodeEtherscanFactoryEvent.js +40 -0
  64. package/dist/esm/strategies/utils/decodeEtherscanFactoryEvent.js.map +1 -0
  65. package/dist/esm/strategies/utils/index.js +7 -0
  66. package/dist/esm/strategies/utils/index.js.map +1 -0
  67. package/dist/esm/strategies/utils/promise.js +10 -0
  68. package/dist/esm/strategies/utils/promise.js.map +1 -0
  69. package/dist/esm/strategies/utils/sdt.js +112 -0
  70. package/dist/esm/strategies/utils/sdt.js.map +1 -0
  71. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  72. package/dist/esm/utils.js +113 -0
  73. package/dist/esm/utils.js.map +1 -0
  74. package/dist/types/batches/curveStrats.d.ts +4 -0
  75. package/dist/types/batches/curveStrats.d.ts.map +1 -0
  76. package/dist/types/batches/index.d.ts +4 -0
  77. package/dist/types/batches/index.d.ts.map +1 -0
  78. package/dist/types/batches/sdtGaugeRewards.d.ts +4 -0
  79. package/dist/types/batches/sdtGaugeRewards.d.ts.map +1 -0
  80. package/dist/types/batches/tokenData.d.ts +4 -0
  81. package/dist/types/batches/tokenData.d.ts.map +1 -0
  82. package/dist/types/batches/types.d.ts +15 -0
  83. package/dist/types/batches/types.d.ts.map +1 -0
  84. package/dist/types/endpoints.d.ts +3 -0
  85. package/dist/types/endpoints.d.ts.map +1 -0
  86. package/dist/types/index.d.ts +8 -0
  87. package/dist/types/index.d.ts.map +1 -0
  88. package/dist/types/number.d.ts +6 -0
  89. package/dist/types/number.d.ts.map +1 -0
  90. package/dist/types/prices.d.ts +10 -0
  91. package/dist/types/prices.d.ts.map +1 -0
  92. package/dist/types/sdt/sdt.d.ts +31 -0
  93. package/dist/types/sdt/sdt.d.ts.map +1 -0
  94. package/dist/types/sdt/veSdtAlternativeYields.d.ts +19 -0
  95. package/dist/types/sdt/veSdtAlternativeYields.d.ts.map +1 -0
  96. package/dist/types/strategies/curve/build.d.ts +37 -0
  97. package/dist/types/strategies/curve/build.d.ts.map +1 -0
  98. package/dist/types/strategies/curve/endpoints.d.ts +6 -0
  99. package/dist/types/strategies/curve/endpoints.d.ts.map +1 -0
  100. package/dist/types/strategies/curve/fetch/curveApiData/abi.d.ts +49 -0
  101. package/dist/types/strategies/curve/fetch/curveApiData/abi.d.ts.map +1 -0
  102. package/dist/types/strategies/curve/fetch/curveApiData/bytecode.d.ts +8 -0
  103. package/dist/types/strategies/curve/fetch/curveApiData/bytecode.d.ts.map +1 -0
  104. package/dist/types/strategies/curve/fetch/curveApiData/config.d.ts +34 -0
  105. package/dist/types/strategies/curve/fetch/curveApiData/config.d.ts.map +1 -0
  106. package/dist/types/strategies/curve/fetch/curveApiData/getCurveApiData.d.ts +3 -0
  107. package/dist/types/strategies/curve/fetch/curveApiData/getCurveApiData.d.ts.map +1 -0
  108. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.d.ts +2 -0
  109. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.d.ts.map +1 -0
  110. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesWeights.d.ts +11 -0
  111. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesWeights.d.ts.map +1 -0
  112. package/dist/types/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.d.ts +2 -0
  113. package/dist/types/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.d.ts.map +1 -0
  114. package/dist/types/strategies/curve/fetch/curveApiData/getRegistries.d.ts +5 -0
  115. package/dist/types/strategies/curve/fetch/curveApiData/getRegistries.d.ts.map +1 -0
  116. package/dist/types/strategies/curve/fetch/getAprBreakdown.d.ts +17 -0
  117. package/dist/types/strategies/curve/fetch/getAprBreakdown.d.ts.map +1 -0
  118. package/dist/types/strategies/curve/fetch/getCvxApr.d.ts +3 -0
  119. package/dist/types/strategies/curve/fetch/getCvxApr.d.ts.map +1 -0
  120. package/dist/types/strategies/curve/fetch/getOnlyboostData.d.ts +4 -0
  121. package/dist/types/strategies/curve/fetch/getOnlyboostData.d.ts.map +1 -0
  122. package/dist/types/strategies/curve/fetch/getStratsWithApr.d.ts +9 -0
  123. package/dist/types/strategies/curve/fetch/getStratsWithApr.d.ts.map +1 -0
  124. package/dist/types/strategies/curve/fetch/index.d.ts +10 -0
  125. package/dist/types/strategies/curve/fetch/index.d.ts.map +1 -0
  126. package/dist/types/strategies/curve/fetch/types.d.ts +11 -0
  127. package/dist/types/strategies/curve/fetch/types.d.ts.map +1 -0
  128. package/dist/types/strategies/curve/httpCalls.d.ts +18 -0
  129. package/dist/types/strategies/curve/httpCalls.d.ts.map +1 -0
  130. package/dist/types/strategies/curve/onChainCalls.d.ts +2 -0
  131. package/dist/types/strategies/curve/onChainCalls.d.ts.map +1 -0
  132. package/dist/types/strategies/types.d.ts +130 -0
  133. package/dist/types/strategies/types.d.ts.map +1 -0
  134. package/dist/types/strategies/utils/boost.d.ts +2 -0
  135. package/dist/types/strategies/utils/boost.d.ts.map +1 -0
  136. package/dist/types/strategies/utils/decodeEtherscanFactoryEvent.d.ts +4 -0
  137. package/dist/types/strategies/utils/decodeEtherscanFactoryEvent.d.ts.map +1 -0
  138. package/dist/types/strategies/utils/index.d.ts +6 -0
  139. package/dist/types/strategies/utils/index.d.ts.map +1 -0
  140. package/dist/types/strategies/utils/promise.d.ts +2 -0
  141. package/dist/types/strategies/utils/promise.d.ts.map +1 -0
  142. package/dist/types/strategies/utils/sdt.d.ts +16 -0
  143. package/dist/types/strategies/utils/sdt.d.ts.map +1 -0
  144. package/dist/types/utils.d.ts +33 -0
  145. package/dist/types/utils.d.ts.map +1 -0
  146. package/package.json +54 -0
  147. package/src/batches/curveStrats.ts +166 -0
  148. package/src/batches/index.ts +3 -0
  149. package/src/batches/sdtGaugeRewards.ts +26 -0
  150. package/src/batches/tokenData.ts +26 -0
  151. package/src/batches/types.ts +14 -0
  152. package/src/endpoints.ts +2 -0
  153. package/src/index.ts +7 -0
  154. package/src/number.ts +51 -0
  155. package/src/prices.ts +86 -0
  156. package/src/sdt/sdt.ts +110 -0
  157. package/src/sdt/veSdtAlternativeYields.ts +19 -0
  158. package/src/strategies/curve/build.ts +187 -0
  159. package/src/strategies/curve/endpoints.ts +21 -0
  160. package/src/strategies/curve/fetch/curveApiData/abi.ts +81 -0
  161. package/src/strategies/curve/fetch/curveApiData/bytecode.ts +43 -0
  162. package/src/strategies/curve/fetch/curveApiData/config.ts +56 -0
  163. package/src/strategies/curve/fetch/curveApiData/getCurveApiData.ts +207 -0
  164. package/src/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.ts +41 -0
  165. package/src/strategies/curve/fetch/curveApiData/getGaugesWeights.ts +52 -0
  166. package/src/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.ts +36 -0
  167. package/src/strategies/curve/fetch/curveApiData/getRegistries.ts +25 -0
  168. package/src/strategies/curve/fetch/getAprBreakdown.ts +98 -0
  169. package/src/strategies/curve/fetch/getCvxApr.ts +49 -0
  170. package/src/strategies/curve/fetch/getOnlyboostData.ts +100 -0
  171. package/src/strategies/curve/fetch/getStratsWithApr.ts +118 -0
  172. package/src/strategies/curve/fetch/index.ts +276 -0
  173. package/src/strategies/curve/fetch/types.ts +11 -0
  174. package/src/strategies/curve/httpCalls.ts +117 -0
  175. package/src/strategies/curve/onChainCalls.ts +36 -0
  176. package/src/strategies/types.ts +137 -0
  177. package/src/strategies/utils/boost.ts +41 -0
  178. package/src/strategies/utils/decodeEtherscanFactoryEvent.ts +42 -0
  179. package/src/strategies/utils/index.ts +8 -0
  180. package/src/strategies/utils/promise.ts +10 -0
  181. package/src/strategies/utils/sdt.ts +206 -0
  182. package/src/utils.ts +171 -0
@@ -0,0 +1,172 @@
1
+ import { ONE_YEAR, tokenWithId } from '@stake-dao/constants';
2
+ import { chunk, uniqBy } from 'lodash-es';
3
+ import { encodeAbiParameters, formatEther, formatUnits, parseAbiParameters, zeroAddress } from 'viem';
4
+ import { mainnet } from 'viem/chains';
5
+ import { LLAMA_API_URL } from '../../../../endpoints.js';
6
+ import { getLlamaTokenPrefix, getPricesFromCurve } from '../../../../prices.js';
7
+ import { batchJsonRpc, equalTlc } from '../../../../utils.js';
8
+ import { handlePromise } from '../../../utils/promise.js';
9
+ import { getCurveDataGaugesOutputTypeAbi } from './abi.js';
10
+ import { gaugesBytecode } from './bytecode.js';
11
+ import { BROKEN_GAUGES, CUSTOM_GAUGES, GAUGES_CHUNK_SIZE, TOKENS_CHUNK_SIZE } from './config.js';
12
+ import { getGaugesFromRegistry } from './getGaugesFromRegistry.js';
13
+ import { getPoolsFromRegistries } from './getPoolsFromRegistries.ts.js';
14
+ import { getRegistries } from './getRegistries.js';
15
+ export const fetchCurveBase = async (rpc, chainId, gaugesWeights) => {
16
+ const { lendingCallsStartIndex, poolCounts } = await getRegistries(rpc, chainId);
17
+ const promises = await handlePromise([
18
+ getPricesFromCurve(chainId),
19
+ getPoolsFromRegistries(rpc, lendingCallsStartIndex, poolCounts),
20
+ ...(chainId === mainnet.id ? [] : [getGaugesFromRegistry(chainId, 'https://eth.public-rpc.com')]),
21
+ ], 'getCurveApiData');
22
+ const curvePrices = promises[0].data;
23
+ const pools = promises[1];
24
+ const gaugesFromPools = chainId === mainnet.id ? [] : promises[2];
25
+ if (chainId === mainnet.id) {
26
+ for (const p of pools) {
27
+ if (p.gauge !== zeroAddress && !BROKEN_GAUGES[chainId].includes(p.gauge)) {
28
+ gaugesFromPools.push(p.gauge);
29
+ }
30
+ }
31
+ }
32
+ else {
33
+ for (let i = 0; i < gaugesFromPools.length; i++) {
34
+ const p = gaugesFromPools[i];
35
+ if (p === zeroAddress || BROKEN_GAUGES[chainId].includes(p)) {
36
+ gaugesFromPools.splice(i, 1);
37
+ }
38
+ }
39
+ }
40
+ for (const lpToken of Object.keys(CUSTOM_GAUGES[chainId]))
41
+ gaugesFromPools.push(CUSTOM_GAUGES[chainId][lpToken]);
42
+ const gaugesFromPoolsChunks = chunk(gaugesFromPools, GAUGES_CHUNK_SIZE[chainId]);
43
+ const gaugesCalls = gaugesFromPoolsChunks.map((gauges) => {
44
+ const inputParams = [gauges];
45
+ const inputData = encodeAbiParameters(parseAbiParameters(['address[] gauges']), inputParams);
46
+ return gaugesBytecode[chainId].concat(inputData.slice(2));
47
+ });
48
+ const gauges = await batchJsonRpc({
49
+ rpc,
50
+ calls: gaugesCalls,
51
+ outputTypeAbi: getCurveDataGaugesOutputTypeAbi,
52
+ parse: false,
53
+ callsKey: 'Fetch Curve Gauges',
54
+ });
55
+ const tokens = uniqBy(pools.flatMap((p) => p.coins), 'coinAddress');
56
+ const extraRewards = uniqBy(gauges.flatMap((g) => g.rewards.map((r) => r.token)), 'tokenAddress');
57
+ const tokensChunks = chunk([...tokens, ...extraRewards], TOKENS_CHUNK_SIZE);
58
+ const tokensCallsPromises = tokensChunks.map(async (tc) => {
59
+ const httpArgs = tc
60
+ // biome-ignore lint/complexity/useLiteralKeys: type error with loadash-es
61
+ .map((t) => `${getLlamaTokenPrefix(chainId)}:${t['coinAddress'] ? t['coinAddress'] : t['tokenAddress']}`)
62
+ .toString();
63
+ const httpRequest = await fetch(`${LLAMA_API_URL}/prices/current/${httpArgs}`);
64
+ const httpResponse = await httpRequest.json();
65
+ return httpResponse.coins;
66
+ });
67
+ const parsedPrices = [];
68
+ for (const results of await Promise.allSettled(tokensCallsPromises)) {
69
+ if (results.status === 'fulfilled') {
70
+ for (const key of Object.keys(results.value)) {
71
+ const tokenData = results.value[key];
72
+ parsedPrices.push({
73
+ address: key.replace(`${getLlamaTokenPrefix(chainId)}:`, ''),
74
+ symbol: tokenData.symbol,
75
+ price: tokenData.price,
76
+ });
77
+ }
78
+ }
79
+ }
80
+ const crv = parsedPrices.find((p) => equalTlc(p.address, tokenWithId('crv', chainId)?.address));
81
+ const augmentedPools = pools.map((p, index) => {
82
+ const poolTypeIndex = poolCounts.filter((i) => i.sumCount - 1 < index).length;
83
+ const poolType = poolCounts[poolTypeIndex].id;
84
+ const isLending = poolCounts[poolTypeIndex].isLending;
85
+ const coinsWithUsdBalance = p.coins.map((c) => {
86
+ let coinUsdPrice = parsedPrices.find((price) => equalTlc(price.address, c.coinAddress))?.price || undefined;
87
+ coinUsdPrice =
88
+ typeof coinUsdPrice === 'undefined'
89
+ ? curvePrices.find((price) => equalTlc(price.address, c.coinAddress))?.usd_price || undefined
90
+ : coinUsdPrice;
91
+ const coinBalance = formatUnits(c.balance, Number(c.decimals));
92
+ return {
93
+ ...c,
94
+ decimals: Number(c.decimals),
95
+ balance: coinBalance,
96
+ usdBalance: coinUsdPrice ? Number(coinBalance) * coinUsdPrice : 0,
97
+ };
98
+ });
99
+ const usdTotal = coinsWithUsdBalance.reduce((total, x) => (total += x.usdBalance), 0);
100
+ const lpPriceInUsd = p.totalSupply > BigInt(0) ? usdTotal / Number(formatEther(p.totalSupply)) : 0;
101
+ let gaugeFromPool = CUSTOM_GAUGES[p.lp] ? CUSTOM_GAUGES[p.lp] : p.gauge;
102
+ const gaugeData = gauges.find((g) => equalTlc(g.gauge, gaugeFromPool) || equalTlc(g.lpToken, p.lp));
103
+ gaugeFromPool = gaugeData ? gaugeData.gauge : gaugeFromPool;
104
+ const gaugeWeightData = gaugesWeights.find((g) => equalTlc(g.gauge, gaugeFromPool));
105
+ let minCrvApr = 0;
106
+ let maxCrvApr = 0;
107
+ let extraRewards = [];
108
+ const active = gaugeData && gaugeWeightData && !gaugeData.isKilled;
109
+ if (active) {
110
+ const inflationRate = Number(formatEther(gaugeData.inflationRate));
111
+ const relativeWeight = Number(formatEther(BigInt(gaugeWeightData.relativeWeight)));
112
+ const workingSupply = Number(formatEther(gaugeData.workingSupply));
113
+ if (lpPriceInUsd && lpPriceInUsd > 0 && workingSupply > 0) {
114
+ minCrvApr =
115
+ inflationRate * relativeWeight * ONE_YEAR / workingSupply * 0.4 * (crv?.price || 0) / lpPriceInUsd *
116
+ 100;
117
+ maxCrvApr = minCrvApr * 2.5;
118
+ }
119
+ if (Number(p.id) === 20) {
120
+ console.log(inflationRate, relativeWeight, workingSupply, lpPriceInUsd, crv?.price, minCrvApr);
121
+ }
122
+ extraRewards = gaugeData.rewards.map((r) => {
123
+ const periodFinish = Number(r.periodFinish);
124
+ const now = Math.floor(Date.now() / 1000);
125
+ const isFinished = now > periodFinish;
126
+ let apr = 0;
127
+ if (!isFinished) {
128
+ const rewardPrice = parsedPrices.find((price) => equalTlc(price.address, r.token.tokenAddress));
129
+ apr =
130
+ rewardPrice && usdTotal > 0
131
+ ? ((Number(formatUnits(r.rate * BigInt(ONE_YEAR), Number(r.token.decimals))) * rewardPrice.price) /
132
+ usdTotal) *
133
+ 100
134
+ : 0;
135
+ }
136
+ return {
137
+ distributor: r.distributor,
138
+ periodFinish,
139
+ rate: formatUnits(r.rate, Number(r.token.decimals)),
140
+ token: { ...r.token, decimals: Number(r.token.decimals) },
141
+ apr,
142
+ };
143
+ });
144
+ }
145
+ return {
146
+ id: formatUnits(p.id, 0),
147
+ poolType,
148
+ ...(p.isMetapool && { isMetapool: p.isMetapool }),
149
+ isLending,
150
+ lp: p.lp,
151
+ pool: p.pool,
152
+ totalSupply: formatEther(p.totalSupply),
153
+ coins: coinsWithUsdBalance,
154
+ underlyingCoins: p.underlyingCoins,
155
+ usdTotal,
156
+ lpPriceInUsd,
157
+ crvApr: [minCrvApr, maxCrvApr],
158
+ gauge: gaugeData
159
+ ? {
160
+ address: gaugeData.gauge,
161
+ isKilled: gaugeData.isKilled,
162
+ inflationRate: formatUnits(gaugeData.inflationRate, 0),
163
+ relativeWeight: gaugeWeightData?.relativeWeight || '0',
164
+ workingSupply: formatUnits(gaugeData.workingSupply, 0),
165
+ extraRewards,
166
+ }
167
+ : undefined,
168
+ };
169
+ });
170
+ return augmentedPools;
171
+ };
172
+ //# sourceMappingURL=getCurveApiData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCurveApiData.js","sourceRoot":"","sources":["../../../../../../src/strategies/curve/fetch/curveApiData/getCurveApiData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,GAAW,EAAE,OAAe,EAAE,aAA4B,EAAE,EAAE;IACjG,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAEhF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAClC;QACE,kBAAkB,CAAC,OAAO,CAAC;QAC3B,sBAAsB,CAAC,GAAG,EAAE,sBAAsB,EAAE,UAAU,CAAC;QAC/D,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC,CAAC;KAClG,EACD,iBAAiB,CAClB,CAAA;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,eAAe,GAAa,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAE3E,IAAI,OAAO,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzE,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,KAAK,WAAW,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAAE,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IAEhH,MAAM,qBAAqB,GAAG,KAAK,CAAC,eAAe,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;IAChF,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,CAAA;QAE5B,MAAM,SAAS,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CAAQ,EAAE,WAAW,CAAC,CAAA;QACnG,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,GAAG;QACH,KAAK,EAAE,WAAW;QAClB,aAAa,EAAE,+BAA+B;QAC9C,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,oBAAoB;KAC/B,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,CACnB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAC7B,aAAa,CACd,CAAA;IAED,MAAM,YAAY,GAAG,MAAM,CACzB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EACpD,cAAc,CACf,CAAA;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAA;IAE3E,MAAM,mBAAmB,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACxD,MAAM,QAAQ,GAAG,EAAE;YACjB,0EAA0E;aACzE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;aACxG,QAAQ,EAAE,CAAA;QACb,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,mBAAmB,QAAQ,EAAE,CAAC,CAAA;QAC9E,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAA;QAC7C,OAAO,YAAY,CAAC,KAAK,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,MAAM,YAAY,GAAyD,EAAE,CAAA;IAC7E,KAAK,MAAM,OAAO,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACpE,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACpC,YAAY,CAAC,IAAI,CAAC;oBAChB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;oBAC5D,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,KAAK,EAAE,SAAS,CAAC,KAAK;iBACvB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,OAAiB,CAAC,CAAC,CAAA;IAEzG,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC5C,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;QAC7E,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAA;QAE7C,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,SAAS,CAAA;QAErD,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5C,IAAI,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,CAAA;YAC3G,YAAY;gBACV,OAAO,YAAY,KAAK,WAAW;oBACjC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,IAAI,SAAS;oBAC7F,CAAC,CAAC,YAAY,CAAA;YAElB,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;YAC9D,OAAO;gBACL,GAAG,CAAC;gBACJ,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC5B,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;aAClE,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;QAC7F,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAElG,IAAI,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACvE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAEnG,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAA;QAC3D,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAA;QAEnF,IAAI,SAAS,GAAW,CAAC,CAAA;QACzB,IAAI,SAAS,GAAW,CAAC,CAAA;QACzB,IAAI,YAAY,GAAG,EAAE,CAAA;QACrB,MAAM,MAAM,GAAG,SAAS,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAA;QAElE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;YAClE,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;YAClF,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;YAElE,IAAI,YAAY,IAAI,YAAY,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBAC1D,SAAS;oBACP,aAAa,GAAG,cAAc,GAAG,QAAQ,GAAG,aAAa,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,YAAY;wBAClG,GAAG,CAAA;gBACL,SAAS,GAAG,SAAS,GAAG,GAAG,CAAA;YAC7B,CAAC;YAED,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;YAChG,CAAC;YAED,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACzC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;gBAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;gBACzC,MAAM,UAAU,GAAG,GAAG,GAAG,YAAY,CAAA;gBAErC,IAAI,GAAG,GAAG,CAAC,CAAA;gBAEX,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;oBAE/F,GAAG;wBACD,WAAW,IAAI,QAAQ,GAAG,CAAC;4BACzB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;gCAC7F,QAAQ,CAAC;gCACX,GAAG;4BACL,CAAC,CAAC,CAAC,CAAA;gBACT,CAAC;gBAED,OAAO;oBACL,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,YAAY;oBACZ,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACnD,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;oBACzD,GAAG;iBACJ,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO;YACL,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,QAAQ;YACR,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;YACjD,SAAS;YACT,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;YACvC,KAAK,EAAE,mBAAmB;YAC1B,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,QAAQ;YACR,YAAY;YACZ,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAC9B,KAAK,EAAE,SAAS;gBACd,CAAC,CAAC;oBACE,OAAO,EAAE,SAAS,CAAC,KAAK;oBACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;oBACtD,cAAc,EAAE,eAAe,EAAE,cAAc,IAAI,GAAG;oBACtD,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;oBACtD,YAAY;iBACb;gBACH,CAAC,CAAC,SAAS;SACd,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { contracts } from '@stake-dao/constants';
2
+ import { range } from 'lodash-es';
3
+ import { decodeAbiParameters, encodeAbiParameters, parseAbiParameters } from 'viem';
4
+ import { batchJsonRpc, rpcCall } from '../../../../utils.js';
5
+ import { gaugesRegistryBytecode } from './bytecode.js';
6
+ import { GAUGES_REGISTRY_CHUNK_SIZE } from './config.js';
7
+ export const getGaugesFromRegistry = async (chainId, rpc) => {
8
+ const nGaugesRequest = await rpcCall(rpc, [
9
+ {
10
+ to: contracts.curveGaugeRegistry[1],
11
+ data: `0x38f31214${encodeAbiParameters(parseAbiParameters(['uint256 chainId']), [chainId]).slice(2)}`,
12
+ },
13
+ ]);
14
+ const nGauges = Number(decodeAbiParameters([{ type: 'uint256', name: 'n_gauges' }], nGaugesRequest[0].result));
15
+ const gaugesRegistryCalls = range(0, nGauges, GAUGES_REGISTRY_CHUNK_SIZE).map((skip) => {
16
+ const inputParams = [
17
+ chainId,
18
+ skip,
19
+ skip + GAUGES_REGISTRY_CHUNK_SIZE > nGauges ? nGauges : skip + GAUGES_REGISTRY_CHUNK_SIZE,
20
+ ];
21
+ const inputData = encodeAbiParameters(parseAbiParameters(['uint256 chainId, uint256 skip, uint256 limit']), inputParams);
22
+ return gaugesRegistryBytecode.concat(inputData.slice(2));
23
+ });
24
+ const gaugesFromRegistry = await batchJsonRpc({
25
+ rpc,
26
+ calls: gaugesRegistryCalls,
27
+ outputTypeAbi: [{ type: 'address[]', name: 'returnData' }],
28
+ parse: false,
29
+ callsKey: 'Fetch Curve Gauges Weights',
30
+ });
31
+ return gaugesFromRegistry;
32
+ };
33
+ //# sourceMappingURL=getGaugesFromRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGaugesFromRegistry.js","sourceRoot":"","sources":["../../../../../../src/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACnF,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,OAAe,EAAE,GAAW,EAAqB,EAAE;IAC7F,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;QACxC;YACE,EAAE,EAAE,SAAS,CAAC,kBAAmB,CAAC,CAAC,CAAE;YACrC,IAAI,EAAE,aAAa,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;SAC7G;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9G,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrF,MAAM,WAAW,GAAG;YAClB,OAAO;YACP,IAAI;YACJ,IAAI,GAAG,0BAA0B,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,0BAA0B;SAC1F,CAAA;QAED,MAAM,SAAS,GAAG,mBAAmB,CACnC,kBAAkB,CAAC,CAAC,8CAA8C,CAAC,CAAQ,EAC3E,WAAW,CACZ,CAAA;QACD,OAAO,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,MAAM,YAAY,CAAC;QAC5C,GAAG;QACH,KAAK,EAAE,mBAAmB;QAC1B,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAC1D,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,4BAA4B;KACvC,CAAC,CAAA;IAEF,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { contracts } from '@stake-dao/constants';
2
+ import { range } from 'lodash-es';
3
+ import { decodeAbiParameters, encodeAbiParameters, formatUnits, parseAbiParameters } from 'viem';
4
+ import { batchJsonRpc, rpcCall } from '../../../../utils.js';
5
+ import { getCurveDataGaugesWeightsOutputTypeAbi } from './abi.js';
6
+ import { gaugesWeightBytecode } from './bytecode.js';
7
+ import { GAUGES_WEIGHTS_CHUNK_SIZE } from './config.js';
8
+ export const getGaugesWeights = async (rpc) => {
9
+ const nGaugesRequest = await rpcCall(rpc, [{ to: contracts.curveGaugeController[1], data: '0xe93841d0' }]);
10
+ const nGauges = Number(decodeAbiParameters([{ type: 'uint256', name: 'n_gauges' }], nGaugesRequest[0].result));
11
+ const gaugesWeightsCalls = range(0, nGauges, GAUGES_WEIGHTS_CHUNK_SIZE).map((skip) => {
12
+ const inputParams = [
13
+ nGauges,
14
+ skip,
15
+ skip + GAUGES_WEIGHTS_CHUNK_SIZE > nGauges ? nGauges : skip + GAUGES_WEIGHTS_CHUNK_SIZE,
16
+ ];
17
+ const inputData = encodeAbiParameters(parseAbiParameters(['uint256 maxLength, uint256 skip, uint256 limit']), inputParams);
18
+ return gaugesWeightBytecode.concat(inputData.slice(2));
19
+ });
20
+ const gaugesWeights = await batchJsonRpc({
21
+ rpc,
22
+ calls: gaugesWeightsCalls,
23
+ outputTypeAbi: getCurveDataGaugesWeightsOutputTypeAbi,
24
+ parse: false,
25
+ callsKey: 'Fetch Curve Gauges Weights',
26
+ });
27
+ return {
28
+ gaugesCount: nGauges,
29
+ gauges: gaugesWeights.map((gw) => ({
30
+ gauge: gw.gauge,
31
+ relativeWeight: formatUnits(gw.relativeWeight, 0),
32
+ futureRelativeWeight: formatUnits(gw.futureRelativeWeight, 0),
33
+ })),
34
+ };
35
+ };
36
+ //# sourceMappingURL=getGaugesWeights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGaugesWeights.js","sourceRoot":"","sources":["../../../../../../src/strategies/curve/fetch/curveApiData/getGaugesWeights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAChG,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,sCAAsC,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAUvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAA8B,EAAE;IAChF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,oBAAqB,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;IAE5G,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9G,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnF,MAAM,WAAW,GAAG;YAClB,OAAO;YACP,IAAI;YACJ,IAAI,GAAG,yBAAyB,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,yBAAyB;SACxF,CAAA;QAED,MAAM,SAAS,GAAG,mBAAmB,CACnC,kBAAkB,CAAC,CAAC,gDAAgD,CAAC,CAAQ,EAC7E,WAAW,CACZ,CAAA;QACD,OAAO,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC;QACvC,GAAG;QACH,KAAK,EAAE,kBAAkB;QACzB,aAAa,EAAE,sCAAsC;QACrD,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,4BAA4B;KACvC,CAAC,CAAA;IAEF,OAAO;QACL,WAAW,EAAE,OAAO;QACpB,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;YACjD,oBAAoB,EAAE,WAAW,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC;SAC9D,CAAC,CAAC;KACJ,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { range } from 'lodash-es';
2
+ import { encodeAbiParameters, parseAbiParameters } from 'viem';
3
+ import { batchJsonRpc } from '../../../../utils.js';
4
+ import { getCurveDataPoolsOutputTypeAbi } from './abi.js';
5
+ import { curveApiDataBytecodes } from './bytecode.js';
6
+ import { CHUNK_SIZE } from './config.js';
7
+ export const getPoolsFromRegistries = async (rpc, lendingCallsStartIndex, poolCounts) => {
8
+ const registriesCalls = poolCounts.flatMap((registry) => range(0, registry.poolCount, CHUNK_SIZE).map((skip) => {
9
+ const inputParams = [
10
+ registry.address,
11
+ skip,
12
+ skip + CHUNK_SIZE > registry.poolCount ? registry.poolCount : skip + CHUNK_SIZE,
13
+ ];
14
+ const inputData = encodeAbiParameters(parseAbiParameters(['address _registry, uint256 skip, uint256 limit']), inputParams);
15
+ return curveApiDataBytecodes[registry.bytecodeIndex]?.concat(inputData.slice(2));
16
+ }));
17
+ const pools = await batchJsonRpc({
18
+ rpc,
19
+ calls: registriesCalls,
20
+ outputTypeAbi: Array.from({ length: registriesCalls.length }, (_el, index) => getCurveDataPoolsOutputTypeAbi(index >= lendingCallsStartIndex)),
21
+ parse: false,
22
+ callsKey: 'Fetch Curve Apis Data',
23
+ });
24
+ return pools;
25
+ };
26
+ //# sourceMappingURL=getPoolsFromRegistries.ts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPoolsFromRegistries.ts.js","sourceRoot":"","sources":["../../../../../../src/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,8BAA8B,EAAE,MAAM,UAAU,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,GAAW,EAAE,sBAA8B,EAAE,UAAe,EAAE,EAAE;IAC3G,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtD,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACpD,MAAM,WAAW,GAAG;YAClB,QAAQ,CAAC,OAAO;YAChB,IAAI;YACJ,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU;SAChF,CAAA;QAED,MAAM,SAAS,GAAG,mBAAmB,CACnC,kBAAkB,CAAC,CAAC,gDAAgD,CAAC,CAAQ,EAC7E,WAAW,CACZ,CAAA;QACD,OAAO,qBAAqB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAClF,CAAC,CAAC,CACH,CAAA;IAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC;QAC/B,GAAG;QACH,KAAK,EAAE,eAAe;QACtB,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAC3E,8BAA8B,CAAC,KAAK,IAAI,sBAAsB,CAAC,CAChE;QACD,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,uBAAuB;KAClC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { decodeAbiParameters } from 'viem';
2
+ import { rpcCall } from '../../../../utils.js';
3
+ import { CHUNK_SIZE, lendingStartIndex, registries } from './config.js';
4
+ export const getRegistries = async (rpc, chainId) => {
5
+ const poolCountsRequest = await rpcCall(rpc, registries[chainId].map((registry) => ({
6
+ to: registry.address,
7
+ data: registry.isLending ? '0xfd775c78' : '0x956aae3a',
8
+ })));
9
+ let totalPoolCount = 0;
10
+ let lendingCallsStartIndex = 0;
11
+ const poolCounts = poolCountsRequest.map((res, index) => {
12
+ const poolCount = Number(decodeAbiParameters([{ type: 'uint256', name: 'poolCount' }], res.result));
13
+ if (lendingStartIndex[chainId] > index)
14
+ lendingCallsStartIndex += Math.ceil(poolCount / CHUNK_SIZE);
15
+ totalPoolCount += poolCount;
16
+ return { ...registries[chainId][index], poolCount, sumCount: totalPoolCount };
17
+ });
18
+ return { lendingCallsStartIndex, poolCounts };
19
+ };
20
+ //# sourceMappingURL=getRegistries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getRegistries.js","sourceRoot":"","sources":["../../../../../../src/strategies/curve/fetch/curveApiData/getRegistries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvE,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,OAAe,EAAE,EAAE;IAClE,MAAM,iBAAiB,GAAG,MAAM,OAAO,CACrC,GAAG,EACH,UAAU,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACtC,EAAE,EAAE,QAAQ,CAAC,OAAO;QACpB,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;KACvD,CAAC,CAAC,CACJ,CAAA;IAED,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,sBAAsB,GAAG,CAAC,CAAA;IAE9B,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,SAAS,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACnG,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,KAAK;YAAE,sBAAsB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,CAAA;QACnG,cAAc,IAAI,SAAS,CAAA;QAC3B,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAA;IAChF,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAA;AAC/C,CAAC,CAAA"}
@@ -0,0 +1,73 @@
1
+ import { getBreakdownLabel, isProtocolToken } from '../../../utils.js';
2
+ export const getAprBreakdown = (strat, rewardsData, boost, cvxApr, sdtApr) => {
3
+ // Base Rewards
4
+ // Trading Fees for LP
5
+ // Supply APY for lending
6
+ const baseReward = {
7
+ label: `${strat.isLending ? 'Lending' : 'Trading Fees'} (APY)`,
8
+ value: [strat?.tradingApy || 0],
9
+ };
10
+ // Current streaming APRs from the Stake DAO gauge
11
+ const currentAprBreakdown = rewardsData.map((r) => {
12
+ const value = r.token.symbol === 'SDT' ? [sdtApr.sdtMinApr, sdtApr.sdtMaxApr] : [r.apr * 100];
13
+ return {
14
+ label: getBreakdownLabel(strat, r, false, boost, sdtApr),
15
+ value,
16
+ };
17
+ });
18
+ // Projected CRV APR
19
+ const projectedCrvApr = strat ? boost * strat.minApr : 0;
20
+ // Projected CVX APR
21
+ const projectedCvxApr = { label: 'CVX APR', value: [cvxApr] };
22
+ // Format SDT and CRV rewards APR for breakdown
23
+ const projectedAprBreakdown = rewardsData
24
+ .map((r) => {
25
+ const value = r.token.symbol === 'SDT'
26
+ ? [sdtApr.sdtFuturMinApr, sdtApr.sdtFuturMaxApr]
27
+ : isProtocolToken(strat.protocol, r.token.symbol)
28
+ ? [projectedCrvApr]
29
+ : [0];
30
+ return {
31
+ label: getBreakdownLabel(strat, r, true, boost, sdtApr),
32
+ value,
33
+ };
34
+ })
35
+ .filter((r) => r.value[0] > 0);
36
+ // Get extra rewards APR from current streaming APR breakdown
37
+ let extraTokensAprBreakdown = currentAprBreakdown.filter((x) => ![...projectedAprBreakdown, projectedCvxApr].find((y) => y.label.startsWith(x.label)) &&
38
+ !x.label.startsWith('SDT'));
39
+ // Remove extra rewards already present in gaugesProjectedApr
40
+ if (strat?.gaugesProjectedApr) {
41
+ extraTokensAprBreakdown = extraTokensAprBreakdown.filter((x) => !strat.gaugesProjectedApr.find((z) => x.label === `${z.symbol} APR`));
42
+ }
43
+ // Compute total current APR
44
+ const currentTotal = baseReward.value[0] + currentAprBreakdown.reduce((total, curr) => total + curr.value[0], 0);
45
+ // Compute total projected APR
46
+ const projectedTotal = baseReward.value[0] +
47
+ projectedAprBreakdown.reduce((total, curr) => total + curr.value[0], 0) +
48
+ cvxApr +
49
+ (strat.gaugesProjectedApr ? strat.gaugesProjectedApr.reduce((total, y) => total + y.apr, 0) : 0) +
50
+ extraTokensAprBreakdown.reduce((total, y) => total + y.value[0], 0);
51
+ return {
52
+ current: {
53
+ total: currentTotal,
54
+ details: [baseReward, ...currentAprBreakdown].filter((r) => r.value[0] || -1 > 0),
55
+ },
56
+ projected: {
57
+ total: projectedTotal,
58
+ details: [
59
+ baseReward,
60
+ ...projectedAprBreakdown,
61
+ ...(strat?.gaugesProjectedApr
62
+ ? strat.gaugesProjectedApr.map((r) => ({
63
+ label: `${r.symbol} APR`,
64
+ value: [r.apr],
65
+ }))
66
+ : []),
67
+ ...extraTokensAprBreakdown,
68
+ projectedCvxApr,
69
+ ].filter((r) => r.value[0] > 0),
70
+ },
71
+ };
72
+ };
73
+ //# sourceMappingURL=getAprBreakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAprBreakdown.js","sourceRoot":"","sources":["../../../../../src/strategies/curve/fetch/getAprBreakdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { formatUnits, parseUnits } from 'viem';
2
+ import { Zero } from '../../utils/index.js';
3
+ const CVX_CLIFF_SIZE = parseUnits('100000', 18); // new cliff every 100,000 tokens
4
+ const CVX_CLIFF_COUNT = BigInt(1000); // 1,000 cliffs
5
+ const CVX_MAX_SUPPLY = parseUnits('100000000', 18); // 100 mil max supply
6
+ export const getCvxMintAmount = (crvEarned, _cvxTotalSupply) => {
7
+ // First get total supply
8
+ const cvxTotalSupply = parseUnits(_cvxTotalSupply, 0);
9
+ // Get current cliff
10
+ const currentCliff = cvxTotalSupply / CVX_CLIFF_SIZE;
11
+ // If current cliff is under the max
12
+ if (currentCliff < CVX_CLIFF_COUNT) {
13
+ // Get remaining cliffs
14
+ const remaining = CVX_CLIFF_COUNT - currentCliff;
15
+ // Multiply ratio of remaining cliffs to total cliffs against amount CRV received
16
+ let cvxEarned = (crvEarned * remaining) / CVX_CLIFF_COUNT;
17
+ // Double check we have not gone over the max supply
18
+ const amountTillMax = CVX_MAX_SUPPLY - cvxTotalSupply;
19
+ if (cvxEarned > amountTillMax) {
20
+ cvxEarned = amountTillMax;
21
+ }
22
+ return cvxEarned;
23
+ }
24
+ return Zero;
25
+ };
26
+ export const getCvxApr = (convexTvlInUsd, tvlInUsd, crvApr, cvxTotalSupply, cvxPrice) => {
27
+ const weeklyCrvEarn = (convexTvlInUsd * (crvApr / 100)) / 52;
28
+ const weeklyCrvEarnBI = parseUnits(weeklyCrvEarn.toString(), 18);
29
+ const weeklyCvxMint = getCvxMintAmount(weeklyCrvEarnBI, cvxTotalSupply);
30
+ const yearlyCvxMint = Number(formatUnits(weeklyCvxMint, 18)) * 52;
31
+ return ((yearlyCvxMint * cvxPrice) / tvlInUsd) * 100;
32
+ };
33
+ //# sourceMappingURL=getCvxApr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCvxApr.js","sourceRoot":"","sources":["../../../../../src/strategies/curve/fetch/getCvxApr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA,CAAC,iCAAiC;AACjF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,eAAe;AACpD,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA,CAAC,qBAAqB;AAExE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,eAAuB,EAAE,EAAE;IAC7E,yBAAyB;IACzB,MAAM,cAAc,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;IAErD,oBAAoB;IACpB,MAAM,YAAY,GAAG,cAAc,GAAG,cAAc,CAAA;IAEpD,oCAAoC;IACpC,IAAI,YAAY,GAAG,eAAe,EAAE,CAAC;QACnC,uBAAuB;QACvB,MAAM,SAAS,GAAG,eAAe,GAAG,YAAY,CAAA;QAEhD,iFAAiF;QACjF,IAAI,SAAS,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,eAAe,CAAA;QAEzD,oDAAoD;QACpD,MAAM,aAAa,GAAG,cAAc,GAAG,cAAc,CAAA;QACrD,IAAI,SAAS,GAAG,aAAa,EAAE,CAAC;YAC9B,SAAS,GAAG,aAAa,CAAA;QAC3B,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,cAAsB,EACtB,QAAgB,EAChB,MAAc,EACd,cAAsB,EACtB,QAAgB,EAChB,EAAE;IACF,MAAM,aAAa,GAAG,CAAC,cAAc,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;IAC5D,MAAM,eAAe,GAAG,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;IAEhE,MAAM,aAAa,GAAG,gBAAgB,CAAC,eAAe,EAAE,cAAc,CAAC,CAAA;IACvE,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;IAEjE,OAAO,CAAC,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAA;AACtD,CAAC,CAAA"}
@@ -0,0 +1,63 @@
1
+ import { formatUnits } from 'viem';
2
+ import { projectWorkingBalance } from '../../../utils.js';
3
+ import { getBoost } from '../../utils/boost.js';
4
+ const getOnlyboostData = (data, stakeDaoVeBoost, convexVeBoost, veCrvTotalSupply, curveGaugeTotalSupply, strategyHoldings, workingBalance, baseTotalSupply, lpPriceInUsd) => {
5
+ const active = data.active;
6
+ const convexImpl = data.convexImpl;
7
+ const totalSupply = formatUnits(active ? data.totalSupply : baseTotalSupply, 0);
8
+ // Current
9
+ const stakeDaoSupply = formatUnits(data.stakeDaoSupply, 0);
10
+ const convexSupply = formatUnits(data.convexSupply, 0);
11
+ const stakeDaoTvl = Number(formatUnits(data.stakeDaoSupply, 18)) * lpPriceInUsd;
12
+ const convexTvl = Number(formatUnits(data.convexSupply, 18)) * lpPriceInUsd;
13
+ const stakeDaoShare = Number(stakeDaoSupply) / Number(totalSupply);
14
+ const convexShare = Number(convexSupply) / Number(totalSupply);
15
+ const stakeDaoBoost = getBoost('curve', strategyHoldings, workingBalance);
16
+ const convexBoost = getBoost('curve', data.convexStrategyHoldings, data.convexWorkingBalance);
17
+ // Optimal
18
+ const stakeDaoOptSupply = formatUnits(data.stakeDaoOptSupply, 0);
19
+ const convexOptSupply = formatUnits(data.convexOptSupply, 0);
20
+ const stakeDaoOptShare = Number(stakeDaoOptSupply) / Number(totalSupply);
21
+ const convexOptShare = Number(convexOptSupply) / Number(totalSupply);
22
+ const stakeDaoOptStrategyHoldings = strategyHoldings - data.stakeDaoSupply + data.stakeDaoOptSupply;
23
+ const convexOptStrategyHoldings = data.convexStrategyHoldings - data.convexSupply + data.convexOptSupply;
24
+ const stakeDaoOptWorkingBalance = projectWorkingBalance(BigInt(stakeDaoVeBoost), BigInt(veCrvTotalSupply), stakeDaoOptStrategyHoldings, curveGaugeTotalSupply);
25
+ const convexOptWorkingBalance = projectWorkingBalance(BigInt(convexVeBoost), BigInt(veCrvTotalSupply), convexOptStrategyHoldings, curveGaugeTotalSupply);
26
+ const stakeDaoOptBoost = getBoost('curve', stakeDaoOptStrategyHoldings, stakeDaoOptWorkingBalance);
27
+ const convexOptBoost = getBoost('curve', convexOptStrategyHoldings, convexOptWorkingBalance);
28
+ const boost = Number(totalSupply) > 0 ? stakeDaoBoost * stakeDaoShare + convexBoost * convexShare : 2.5;
29
+ const optimalBoost = Number(totalSupply) > 0 ? stakeDaoOptBoost * stakeDaoOptShare + convexOptBoost * convexOptShare : 2.5;
30
+ return {
31
+ active,
32
+ implementations: [{ key: 'convex', address: convexImpl }],
33
+ totalSupply,
34
+ boost,
35
+ optimalBoost,
36
+ stakeDao: {
37
+ tvl: stakeDaoTvl,
38
+ supply: stakeDaoSupply,
39
+ boost: stakeDaoBoost,
40
+ optimal: {
41
+ supply: stakeDaoOptSupply,
42
+ boost: stakeDaoOptBoost,
43
+ share: stakeDaoOptShare,
44
+ },
45
+ },
46
+ convex: {
47
+ tvl: convexTvl,
48
+ supply: convexSupply,
49
+ boost: convexBoost,
50
+ optimal: {
51
+ supply: convexOptSupply,
52
+ boost: convexOptBoost,
53
+ share: convexOptShare,
54
+ },
55
+ claimable: data.claimableData.map((c) => ({
56
+ token: c.token,
57
+ claimable: formatUnits(c.claimable, 0),
58
+ })),
59
+ },
60
+ };
61
+ };
62
+ export default getOnlyboostData;
63
+ //# sourceMappingURL=getOnlyboostData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOnlyboostData.js","sourceRoot":"","sources":["../../../../../src/strategies/curve/fetch/getOnlyboostData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { formatUnits, parseAbi } from 'viem';
2
+ import { ONE_YEAR, STRAT_FEES, contract, tokenWithId } from '@stake-dao/constants';
3
+ import { equalTlc, multicall } from '../../../utils.js';
4
+ export const getCurveStratsWithApr = (chainId, curveStrats, apisData) => {
5
+ const curveStratsDataCalls = [];
6
+ const strats = curveStrats.filter((s) => s.key && s.chainId === chainId && !s.isLending);
7
+ const curveStratsWithApr = strats.map((s) => {
8
+ const curveApiData = apisData.curveApiData.find((el) => equalTlc(el.lp, s.lpToken.address));
9
+ const subgraphData = apisData.curveSubgraphData.find((el) => curveApiData && el.address === curveApiData.pool);
10
+ const gaugesProjectedApr = curveApiData?.gauge
11
+ ? curveApiData.gauge.extraRewards.map((extra) => ({
12
+ symbol: extra.token.symbol,
13
+ apr: extra.apr,
14
+ }))
15
+ : [];
16
+ const convexPool = s.chainId === 1
17
+ ? apisData.convexPools.find((pool) => pool.lpTokenAddress.toLowerCase() === s.lpToken.address.toLowerCase())
18
+ : undefined;
19
+ curveStratsDataCalls.push({
20
+ vault: s.vault,
21
+ token: s.lpToken.address,
22
+ liquidityGauge: s.gaugeAddress,
23
+ sdtLiquidityGauge: s.sdGauge,
24
+ });
25
+ return {
26
+ ...s,
27
+ name: (s.isMetapool ? s.underlyingCoins : s.coins)
28
+ .reduce((res, current) => `${res}/${current.symbol}`, '')
29
+ .slice(1),
30
+ tradingApy: subgraphData?.latestWeeklyApy || 0,
31
+ gaugesProjectedApr,
32
+ minApr: curveApiData?.crvApr ? curveApiData.crvApr[0] * ((100 - STRAT_FEES) / 100) : 0,
33
+ maxApr: curveApiData?.crvApr ? curveApiData.crvApr[1] * ((100 - STRAT_FEES) / 100) : 0,
34
+ lpPriceInUsd: curveApiData.lpPriceInUsd,
35
+ convexPool: convexPool ? convexPool.convexPoolData : undefined,
36
+ };
37
+ });
38
+ return { curveStratsWithApr, curveStratsDataCalls };
39
+ };
40
+ export const getCurveLendingWithApr = async (provider, chainId, curveStrats, apisData) => {
41
+ const curveLendingDataCalls = [];
42
+ const strats = curveStrats.filter((s) => s.key && s.chainId === chainId && s.isLending);
43
+ const gaugesData = await multicall(provider, strats.flatMap((s) => [
44
+ { address: s.gaugeAddress, name: 'inflation_rate' },
45
+ { address: s.gaugeAddress, name: 'working_supply' },
46
+ { address: contract('curveGaugeController', chainId), name: 'gauge_relative_weight', params: [s.gaugeAddress] },
47
+ ]), parseAbi([
48
+ 'function inflation_rate() external view returns (uint256)',
49
+ 'function working_supply() external view returns (uint256)',
50
+ 'function gauge_relative_weight(address gauge) external view returns (uint256)',
51
+ ]));
52
+ const triCrvPool = apisData.curveApiData.find((el) => equalTlc(el.lp, '0x4eBdF703948ddCEA3B11f675B4D1Fba9d2414A14'));
53
+ const triCrvPoolCrvData = triCrvPool.coins.find((c) => equalTlc(c.coinAddress, tokenWithId('crv')?.address));
54
+ const crvPriceInUsd = triCrvPoolCrvData.usdBalance / Number(triCrvPoolCrvData.balance);
55
+ const curveLendingWithApr = strats.map((s) => {
56
+ const curveApiData = apisData.curveApiData.find((el) => equalTlc(el.lp, s.lpToken.address));
57
+ const convexPool = s.chainId === 1
58
+ ? apisData.convexLendingVaults.find((pool) => pool.address.toLowerCase() === s.lpToken.address.toLowerCase())
59
+ : undefined;
60
+ const lpPriceInUsd = curveApiData?.lpPriceInUsd || 0;
61
+ curveLendingDataCalls.push({
62
+ vault: s.vault,
63
+ token: s.lpToken.address,
64
+ liquidityGauge: s.gaugeAddress,
65
+ sdtLiquidityGauge: s.sdGauge,
66
+ });
67
+ const inflationRate = Number(formatUnits(gaugesData.shift().result, 18));
68
+ const workingSupply = Number(formatUnits(gaugesData.shift().result, 18));
69
+ const gaugeRelativeWeight = Number(formatUnits(gaugesData.shift().result, 18));
70
+ const crvBaseApr = ((((inflationRate * gaugeRelativeWeight * ONE_YEAR) / workingSupply) * 0.4 * crvPriceInUsd) / lpPriceInUsd) * 100;
71
+ const gaugesProjectedApr = undefined;
72
+ const minApr = crvBaseApr * ((100 - STRAT_FEES) / 100);
73
+ const maxApr = crvBaseApr * 2.5 * ((100 - STRAT_FEES) / 100);
74
+ return {
75
+ ...s,
76
+ name: s.coins[0].symbol,
77
+ // subname: curveApiData?.assets ? `${curveApiData.assets.collateral.symbol} collateral` : '',
78
+ // tradingApy: curveApiData?.rates ? curveApiData.rates.lendApyPcent : 0,
79
+ gaugesProjectedApr,
80
+ minApr,
81
+ maxApr,
82
+ lpPriceInUsd,
83
+ convexPool: convexPool ? convexPool.convexPoolData : undefined,
84
+ };
85
+ });
86
+ return { curveLendingWithApr, curveLendingDataCalls };
87
+ };
88
+ //# sourceMappingURL=getStratsWithApr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStratsWithApr.js","sourceRoot":"","sources":["../../../../../src/strategies/curve/fetch/getStratsWithApr.ts"],"names":[],"mappings":"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"}