@stake-dao/reader 0.1.3 → 0.2.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 (286) hide show
  1. package/dist/esm/bytecodes/index.js +16 -0
  2. package/dist/esm/bytecodes/index.js.map +1 -0
  3. package/dist/esm/bytecodes/strategies/batches/batchBalancerStrats.js +68 -0
  4. package/dist/esm/bytecodes/strategies/batches/batchBalancerStrats.js.map +1 -0
  5. package/dist/esm/{batches/curveStrats.js → bytecodes/strategies/batches/batchCurveStrats.js} +3 -3
  6. package/dist/esm/bytecodes/strategies/batches/batchCurveStrats.js.map +1 -0
  7. package/dist/esm/bytecodes/strategies/batches/batchPancakeSwapErc20Strats.js +61 -0
  8. package/dist/esm/bytecodes/strategies/batches/batchPancakeSwapErc20Strats.js.map +1 -0
  9. package/dist/esm/bytecodes/strategies/batches/batchPancakeSwapPositions.js +44 -0
  10. package/dist/esm/bytecodes/strategies/batches/batchPancakeSwapPositions.js.map +1 -0
  11. package/dist/esm/bytecodes/strategies/batches/batchPancakeswapStrats.js +48 -0
  12. package/dist/esm/bytecodes/strategies/batches/batchPancakeswapStrats.js.map +1 -0
  13. package/dist/esm/bytecodes/strategies/batches/batchPendleStrats.js +63 -0
  14. package/dist/esm/bytecodes/strategies/batches/batchPendleStrats.js.map +1 -0
  15. package/dist/esm/bytecodes/strategies/builds/buildBalancerStrats.js +54 -0
  16. package/dist/esm/bytecodes/strategies/builds/buildBalancerStrats.js.map +1 -0
  17. package/dist/esm/bytecodes/strategies/builds/buildPancakeSwapErc20Strats.js +64 -0
  18. package/dist/esm/bytecodes/strategies/builds/buildPancakeSwapErc20Strats.js.map +1 -0
  19. package/dist/esm/bytecodes/strategies/builds/buildPancakeSwapStrats.js +51 -0
  20. package/dist/esm/bytecodes/strategies/builds/buildPancakeSwapStrats.js.map +1 -0
  21. package/dist/esm/bytecodes/strategies/builds/buildPancakeswapNotDeployedErc20Strats.js +54 -0
  22. package/dist/esm/bytecodes/strategies/builds/buildPancakeswapNotDeployedErc20Strats.js.map +1 -0
  23. package/dist/esm/bytecodes/strategies/builds/buildPendleStrats.js +39 -0
  24. package/dist/esm/bytecodes/strategies/builds/buildPendleStrats.js.map +1 -0
  25. package/dist/esm/{batches → bytecodes/strategies/builds}/buildYearnStrats.js +2 -2
  26. package/dist/esm/bytecodes/strategies/builds/buildYearnStrats.js.map +1 -0
  27. package/dist/esm/bytecodes/strategies/fetchYearnGauges.js.map +1 -0
  28. package/dist/esm/{batches → bytecodes/strategies}/sdtGaugeRewards.js +1 -1
  29. package/dist/esm/bytecodes/strategies/sdtGaugeRewards.js.map +1 -0
  30. package/dist/esm/bytecodes/tokenData.js.map +1 -0
  31. package/dist/esm/{batches → bytecodes}/types.js.map +1 -1
  32. package/dist/esm/endpoints.js +1 -0
  33. package/dist/esm/endpoints.js.map +1 -1
  34. package/dist/esm/index.js +33 -5
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/lockers/utils/endpoints.js +1 -1
  37. package/dist/esm/lockers/utils/endpoints.js.map +1 -1
  38. package/dist/esm/prices.js +39 -3
  39. package/dist/esm/prices.js.map +1 -1
  40. package/dist/esm/strategies/balancer/build.js +51 -0
  41. package/dist/esm/strategies/balancer/build.js.map +1 -0
  42. package/dist/esm/strategies/balancer/endpoints.js +27 -0
  43. package/dist/esm/strategies/balancer/endpoints.js.map +1 -0
  44. package/dist/esm/strategies/balancer/fetch.js +190 -0
  45. package/dist/esm/strategies/balancer/fetch.js.map +1 -0
  46. package/dist/esm/strategies/curve/build.js +4 -3
  47. package/dist/esm/strategies/curve/build.js.map +1 -1
  48. package/dist/esm/strategies/curve/fetch/curveApiData/bytecode.js +0 -1
  49. package/dist/esm/strategies/curve/fetch/curveApiData/bytecode.js.map +1 -1
  50. package/dist/esm/strategies/curve/fetch/curveApiData/getCurveApiData.js +3 -2
  51. package/dist/esm/strategies/curve/fetch/curveApiData/getCurveApiData.js.map +1 -1
  52. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.js +3 -2
  53. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.js.map +1 -1
  54. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js +2 -1
  55. package/dist/esm/strategies/curve/fetch/curveApiData/getGaugesWeights.js.map +1 -1
  56. package/dist/esm/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.js +2 -1
  57. package/dist/esm/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.js.map +1 -1
  58. package/dist/esm/strategies/curve/fetch/index.js +22 -4
  59. package/dist/esm/strategies/curve/fetch/index.js.map +1 -1
  60. package/dist/esm/strategies/curve/httpCalls.js +3 -3
  61. package/dist/esm/strategies/curve/httpCalls.js.map +1 -1
  62. package/dist/esm/strategies/curve/onChainCalls.js +3 -2
  63. package/dist/esm/strategies/curve/onChainCalls.js.map +1 -1
  64. package/dist/esm/strategies/pancakeswap/abis/PancakeSwapMasterchef.json +1575 -0
  65. package/dist/esm/strategies/pancakeswap/build.js +48 -0
  66. package/dist/esm/strategies/pancakeswap/build.js.map +1 -0
  67. package/dist/esm/strategies/pancakeswap/buildErc20.js +63 -0
  68. package/dist/esm/strategies/pancakeswap/buildErc20.js.map +1 -0
  69. package/dist/esm/strategies/pancakeswap/config.js +7 -0
  70. package/dist/esm/strategies/pancakeswap/config.js.map +1 -0
  71. package/dist/esm/strategies/pancakeswap/endpoints.js +10 -0
  72. package/dist/esm/strategies/pancakeswap/endpoints.js.map +1 -0
  73. package/dist/esm/strategies/pancakeswap/fetch/getPancakeApisData.js +24 -0
  74. package/dist/esm/strategies/pancakeswap/fetch/getPancakeApisData.js.map +1 -0
  75. package/dist/esm/strategies/pancakeswap/fetch/getPancakeErc20Vaults.js +134 -0
  76. package/dist/esm/strategies/pancakeswap/fetch/getPancakeErc20Vaults.js.map +1 -0
  77. package/dist/esm/strategies/pancakeswap/fetch/getPancakeNotDeployed.js +102 -0
  78. package/dist/esm/strategies/pancakeswap/fetch/getPancakeNotDeployed.js.map +1 -0
  79. package/dist/esm/strategies/pancakeswap/fetch/getPancakeV3Vaults.js +142 -0
  80. package/dist/esm/strategies/pancakeswap/fetch/getPancakeV3Vaults.js.map +1 -0
  81. package/dist/esm/strategies/pancakeswap/fetch/index.js +25 -0
  82. package/dist/esm/strategies/pancakeswap/fetch/index.js.map +1 -0
  83. package/dist/esm/strategies/pancakeswap/fetch/pancakePositions.js +87 -0
  84. package/dist/esm/strategies/pancakeswap/fetch/pancakePositions.js.map +1 -0
  85. package/dist/esm/strategies/pancakeswap/fetch/pancakeswapMath.js +199 -0
  86. package/dist/esm/strategies/pancakeswap/fetch/pancakeswapMath.js.map +1 -0
  87. package/dist/esm/strategies/pendle/abis/MulticallPendleStratsAbi.json +103 -0
  88. package/dist/esm/strategies/pendle/build.js +70 -0
  89. package/dist/esm/strategies/pendle/build.js.map +1 -0
  90. package/dist/esm/strategies/pendle/fetch.js +267 -0
  91. package/dist/esm/strategies/pendle/fetch.js.map +1 -0
  92. package/dist/esm/strategies/pendle/getPendleApiData.js +15 -0
  93. package/dist/esm/strategies/pendle/getPendleApiData.js.map +1 -0
  94. package/dist/esm/strategies/pendle/pendlePoints.js +71 -0
  95. package/dist/esm/strategies/pendle/pendlePoints.js.map +1 -0
  96. package/dist/esm/strategies/utils/getAprBreakdown.js +9 -9
  97. package/dist/esm/strategies/utils/getAprBreakdown.js.map +1 -1
  98. package/dist/esm/strategies/utils/index.js +10 -1
  99. package/dist/esm/strategies/utils/index.js.map +1 -1
  100. package/dist/esm/strategies/yearn/build.js +5 -4
  101. package/dist/esm/strategies/yearn/build.js.map +1 -1
  102. package/dist/esm/strategies/yearn/fetch/fetchAllYearnGauges.js +3 -2
  103. package/dist/esm/strategies/yearn/fetch/fetchAllYearnGauges.js.map +1 -1
  104. package/dist/esm/strategies/yearn/fetch/index.js +1 -1
  105. package/dist/esm/strategies/yearn/fetch/index.js.map +1 -1
  106. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  107. package/dist/esm/utils.js +1 -1
  108. package/dist/esm/utils.js.map +1 -1
  109. package/dist/types/bytecodes/index.d.ts +16 -0
  110. package/dist/types/bytecodes/index.d.ts.map +1 -0
  111. package/dist/types/bytecodes/strategies/batches/batchBalancerStrats.d.ts +4 -0
  112. package/dist/types/bytecodes/strategies/batches/batchBalancerStrats.d.ts.map +1 -0
  113. package/dist/types/bytecodes/strategies/batches/batchCurveStrats.d.ts +4 -0
  114. package/dist/types/bytecodes/strategies/batches/batchCurveStrats.d.ts.map +1 -0
  115. package/dist/types/bytecodes/strategies/batches/batchPancakeSwapErc20Strats.d.ts +4 -0
  116. package/dist/types/bytecodes/strategies/batches/batchPancakeSwapErc20Strats.d.ts.map +1 -0
  117. package/dist/types/bytecodes/strategies/batches/batchPancakeSwapPositions.d.ts +4 -0
  118. package/dist/types/bytecodes/strategies/batches/batchPancakeSwapPositions.d.ts.map +1 -0
  119. package/dist/types/bytecodes/strategies/batches/batchPancakeswapStrats.d.ts +4 -0
  120. package/dist/types/bytecodes/strategies/batches/batchPancakeswapStrats.d.ts.map +1 -0
  121. package/dist/types/bytecodes/strategies/batches/batchPendleStrats.d.ts +4 -0
  122. package/dist/types/bytecodes/strategies/batches/batchPendleStrats.d.ts.map +1 -0
  123. package/dist/types/bytecodes/strategies/builds/buildBalancerStrats.d.ts +4 -0
  124. package/dist/types/bytecodes/strategies/builds/buildBalancerStrats.d.ts.map +1 -0
  125. package/dist/types/bytecodes/strategies/builds/buildPancakeSwapErc20Strats.d.ts +4 -0
  126. package/dist/types/bytecodes/strategies/builds/buildPancakeSwapErc20Strats.d.ts.map +1 -0
  127. package/dist/types/bytecodes/strategies/builds/buildPancakeSwapStrats.d.ts +4 -0
  128. package/dist/types/bytecodes/strategies/builds/buildPancakeSwapStrats.d.ts.map +1 -0
  129. package/dist/types/bytecodes/strategies/builds/buildPancakeswapNotDeployedErc20Strats.d.ts +4 -0
  130. package/dist/types/bytecodes/strategies/builds/buildPancakeswapNotDeployedErc20Strats.d.ts.map +1 -0
  131. package/dist/types/bytecodes/strategies/builds/buildPendleStrats.d.ts +4 -0
  132. package/dist/types/bytecodes/strategies/builds/buildPendleStrats.d.ts.map +1 -0
  133. package/dist/types/bytecodes/strategies/builds/buildYearnStrats.d.ts +4 -0
  134. package/dist/types/bytecodes/strategies/builds/buildYearnStrats.d.ts.map +1 -0
  135. package/dist/types/bytecodes/strategies/fetchYearnGauges.d.ts +4 -0
  136. package/dist/types/bytecodes/strategies/fetchYearnGauges.d.ts.map +1 -0
  137. package/dist/types/bytecodes/strategies/sdtGaugeRewards.d.ts +4 -0
  138. package/dist/types/bytecodes/strategies/sdtGaugeRewards.d.ts.map +1 -0
  139. package/dist/types/bytecodes/tokenData.d.ts.map +1 -0
  140. package/dist/types/bytecodes/types.d.ts.map +1 -0
  141. package/dist/types/endpoints.d.ts +1 -0
  142. package/dist/types/endpoints.d.ts.map +1 -1
  143. package/dist/types/index.d.ts +15 -5
  144. package/dist/types/index.d.ts.map +1 -1
  145. package/dist/types/lockers/utils/endpoints.d.ts +1 -1
  146. package/dist/types/lockers/utils/endpoints.d.ts.map +1 -1
  147. package/dist/types/prices.d.ts +8 -1
  148. package/dist/types/prices.d.ts.map +1 -1
  149. package/dist/types/strategies/balancer/build.d.ts +21 -0
  150. package/dist/types/strategies/balancer/build.d.ts.map +1 -0
  151. package/dist/types/strategies/balancer/endpoints.d.ts +3 -0
  152. package/dist/types/strategies/balancer/endpoints.d.ts.map +1 -0
  153. package/dist/types/strategies/balancer/fetch.d.ts +11 -0
  154. package/dist/types/strategies/balancer/fetch.d.ts.map +1 -0
  155. package/dist/types/strategies/curve/build.d.ts.map +1 -1
  156. package/dist/types/strategies/curve/fetch/curveApiData/bytecode.d.ts.map +1 -1
  157. package/dist/types/strategies/curve/fetch/curveApiData/getCurveApiData.d.ts +1 -1
  158. package/dist/types/strategies/curve/fetch/curveApiData/getCurveApiData.d.ts.map +1 -1
  159. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.d.ts.map +1 -1
  160. package/dist/types/strategies/curve/fetch/curveApiData/getGaugesWeights.d.ts.map +1 -1
  161. package/dist/types/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.d.ts.map +1 -1
  162. package/dist/types/strategies/curve/fetch/index.d.ts +15 -2
  163. package/dist/types/strategies/curve/fetch/index.d.ts.map +1 -1
  164. package/dist/types/strategies/curve/onChainCalls.d.ts.map +1 -1
  165. package/dist/types/strategies/pancakeswap/build.d.ts +2 -0
  166. package/dist/types/strategies/pancakeswap/build.d.ts.map +1 -0
  167. package/dist/types/strategies/pancakeswap/buildErc20.d.ts +7 -0
  168. package/dist/types/strategies/pancakeswap/buildErc20.d.ts.map +1 -0
  169. package/dist/types/strategies/pancakeswap/config.d.ts +7 -0
  170. package/dist/types/strategies/pancakeswap/config.d.ts.map +1 -0
  171. package/dist/types/strategies/pancakeswap/endpoints.d.ts +8 -0
  172. package/dist/types/strategies/pancakeswap/endpoints.d.ts.map +1 -0
  173. package/dist/types/strategies/pancakeswap/fetch/getPancakeApisData.d.ts +10 -0
  174. package/dist/types/strategies/pancakeswap/fetch/getPancakeApisData.d.ts.map +1 -0
  175. package/dist/types/strategies/pancakeswap/fetch/getPancakeErc20Vaults.d.ts +44 -0
  176. package/dist/types/strategies/pancakeswap/fetch/getPancakeErc20Vaults.d.ts.map +1 -0
  177. package/dist/types/strategies/pancakeswap/fetch/getPancakeNotDeployed.d.ts +3 -0
  178. package/dist/types/strategies/pancakeswap/fetch/getPancakeNotDeployed.d.ts.map +1 -0
  179. package/dist/types/strategies/pancakeswap/fetch/getPancakeV3Vaults.d.ts +7 -0
  180. package/dist/types/strategies/pancakeswap/fetch/getPancakeV3Vaults.d.ts.map +1 -0
  181. package/dist/types/strategies/pancakeswap/fetch/index.d.ts +17 -0
  182. package/dist/types/strategies/pancakeswap/fetch/index.d.ts.map +1 -0
  183. package/dist/types/strategies/pancakeswap/fetch/pancakePositions.d.ts +11 -0
  184. package/dist/types/strategies/pancakeswap/fetch/pancakePositions.d.ts.map +1 -0
  185. package/dist/types/strategies/pancakeswap/fetch/pancakeswapMath.d.ts +33 -0
  186. package/dist/types/strategies/pancakeswap/fetch/pancakeswapMath.d.ts.map +1 -0
  187. package/dist/types/strategies/pendle/build.d.ts +42 -0
  188. package/dist/types/strategies/pendle/build.d.ts.map +1 -0
  189. package/dist/types/strategies/pendle/fetch.d.ts +60 -0
  190. package/dist/types/strategies/pendle/fetch.d.ts.map +1 -0
  191. package/dist/types/strategies/pendle/getPendleApiData.d.ts +3 -0
  192. package/dist/types/strategies/pendle/getPendleApiData.d.ts.map +1 -0
  193. package/dist/types/strategies/pendle/pendlePoints.d.ts +80 -0
  194. package/dist/types/strategies/pendle/pendlePoints.d.ts.map +1 -0
  195. package/dist/types/strategies/types.d.ts +17 -3
  196. package/dist/types/strategies/types.d.ts.map +1 -1
  197. package/dist/types/strategies/utils/getAprBreakdown.d.ts +1 -4
  198. package/dist/types/strategies/utils/getAprBreakdown.d.ts.map +1 -1
  199. package/dist/types/strategies/utils/index.d.ts +2 -0
  200. package/dist/types/strategies/utils/index.d.ts.map +1 -1
  201. package/dist/types/strategies/yearn/build.d.ts.map +1 -1
  202. package/dist/types/strategies/yearn/fetch/fetchAllYearnGauges.d.ts.map +1 -1
  203. package/dist/types/strategies/yearn/fetch/index.d.ts +13 -2
  204. package/dist/types/strategies/yearn/fetch/index.d.ts.map +1 -1
  205. package/dist/types/utils.d.ts.map +1 -1
  206. package/package.json +3 -2
  207. package/src/bytecodes/index.ts +18 -0
  208. package/src/bytecodes/strategies/batches/batchBalancerStrats.ts +70 -0
  209. package/src/{batches/curveStrats.ts → bytecodes/strategies/batches/batchCurveStrats.ts} +3 -3
  210. package/src/bytecodes/strategies/batches/batchPancakeSwapErc20Strats.ts +67 -0
  211. package/src/bytecodes/strategies/batches/batchPancakeSwapPositions.ts +50 -0
  212. package/src/bytecodes/strategies/batches/batchPancakeswapStrats.ts +54 -0
  213. package/src/bytecodes/strategies/batches/batchPendleStrats.ts +65 -0
  214. package/src/bytecodes/strategies/builds/buildBalancerStrats.ts +56 -0
  215. package/src/bytecodes/strategies/builds/buildPancakeSwapErc20Strats.ts +70 -0
  216. package/src/bytecodes/strategies/builds/buildPancakeSwapStrats.ts +57 -0
  217. package/src/bytecodes/strategies/builds/buildPancakeswapNotDeployedErc20Strats.ts +60 -0
  218. package/src/bytecodes/strategies/builds/buildPendleStrats.ts +41 -0
  219. package/src/{batches → bytecodes/strategies/builds}/buildYearnStrats.ts +3 -3
  220. package/src/{batches → bytecodes/strategies}/fetchYearnGauges.ts +1 -1
  221. package/src/{batches → bytecodes/strategies}/sdtGaugeRewards.ts +2 -2
  222. package/src/endpoints.ts +2 -0
  223. package/src/index.ts +43 -5
  224. package/src/lockers/utils/endpoints.ts +2 -1
  225. package/src/prices.ts +57 -6
  226. package/src/strategies/balancer/build.ts +66 -0
  227. package/src/strategies/balancer/endpoints.ts +27 -0
  228. package/src/strategies/balancer/fetch.ts +266 -0
  229. package/src/strategies/curve/build.ts +4 -3
  230. package/src/strategies/curve/fetch/curveApiData/bytecode.ts +0 -1
  231. package/src/strategies/curve/fetch/curveApiData/getCurveApiData.ts +3 -2
  232. package/src/strategies/curve/fetch/curveApiData/getGaugesFromRegistry.ts +6 -2
  233. package/src/strategies/curve/fetch/curveApiData/getGaugesWeights.ts +2 -1
  234. package/src/strategies/curve/fetch/curveApiData/getPoolsFromRegistries.ts.ts +2 -1
  235. package/src/strategies/curve/fetch/index.ts +53 -15
  236. package/src/strategies/curve/httpCalls.ts +3 -3
  237. package/src/strategies/curve/onChainCalls.ts +3 -2
  238. package/src/strategies/pancakeswap/build.ts +57 -0
  239. package/src/strategies/pancakeswap/buildErc20.ts +73 -0
  240. package/src/strategies/pancakeswap/config.ts +7 -0
  241. package/src/strategies/pancakeswap/endpoints.ts +12 -0
  242. package/src/strategies/pancakeswap/fetch/getPancakeApisData.ts +32 -0
  243. package/src/strategies/pancakeswap/fetch/getPancakeErc20Vaults.ts +184 -0
  244. package/src/strategies/pancakeswap/fetch/getPancakeNotDeployed.ts +132 -0
  245. package/src/strategies/pancakeswap/fetch/getPancakeV3Vaults.ts +191 -0
  246. package/src/strategies/pancakeswap/fetch/index.ts +50 -0
  247. package/src/strategies/pancakeswap/fetch/pancakePositions.ts +147 -0
  248. package/src/strategies/pancakeswap/fetch/pancakeswapMath.ts +305 -0
  249. package/src/strategies/pendle/build.ts +93 -0
  250. package/src/strategies/pendle/fetch.ts +348 -0
  251. package/src/strategies/pendle/getPendleApiData.ts +20 -0
  252. package/src/strategies/pendle/pendlePoints.ts +71 -0
  253. package/src/strategies/types.ts +20 -3
  254. package/src/strategies/utils/getAprBreakdown.ts +9 -9
  255. package/src/strategies/utils/index.ts +14 -1
  256. package/src/strategies/yearn/build.ts +5 -4
  257. package/src/strategies/yearn/fetch/fetchAllYearnGauges.ts +3 -2
  258. package/src/strategies/yearn/fetch/index.ts +22 -11
  259. package/src/utils.ts +1 -1
  260. package/dist/esm/batches/buildYearnStrats.js.map +0 -1
  261. package/dist/esm/batches/curveStrats.js.map +0 -1
  262. package/dist/esm/batches/fetchYearnGauges.js.map +0 -1
  263. package/dist/esm/batches/index.js +0 -6
  264. package/dist/esm/batches/index.js.map +0 -1
  265. package/dist/esm/batches/sdtGaugeRewards.js.map +0 -1
  266. package/dist/esm/batches/tokenData.js.map +0 -1
  267. package/dist/types/batches/buildYearnStrats.d.ts +0 -4
  268. package/dist/types/batches/buildYearnStrats.d.ts.map +0 -1
  269. package/dist/types/batches/curveStrats.d.ts +0 -4
  270. package/dist/types/batches/curveStrats.d.ts.map +0 -1
  271. package/dist/types/batches/fetchYearnGauges.d.ts +0 -4
  272. package/dist/types/batches/fetchYearnGauges.d.ts.map +0 -1
  273. package/dist/types/batches/index.d.ts +0 -6
  274. package/dist/types/batches/index.d.ts.map +0 -1
  275. package/dist/types/batches/sdtGaugeRewards.d.ts +0 -4
  276. package/dist/types/batches/sdtGaugeRewards.d.ts.map +0 -1
  277. package/dist/types/batches/tokenData.d.ts.map +0 -1
  278. package/dist/types/batches/types.d.ts.map +0 -1
  279. package/src/batches/index.ts +0 -5
  280. /package/dist/esm/{batches → bytecodes/strategies}/fetchYearnGauges.js +0 -0
  281. /package/dist/esm/{batches → bytecodes}/tokenData.js +0 -0
  282. /package/dist/esm/{batches → bytecodes}/types.js +0 -0
  283. /package/dist/types/{batches → bytecodes}/tokenData.d.ts +0 -0
  284. /package/dist/types/{batches → bytecodes}/types.d.ts +0 -0
  285. /package/src/{batches → bytecodes}/tokenData.ts +0 -0
  286. /package/src/{batches → bytecodes}/types.ts +0 -0
@@ -0,0 +1,48 @@
1
+ import { decodeAbiParameters, encodeAbiParameters, parseAbiParameters, zeroAddress } from 'viem';
2
+ import { contracts, tokenWithId } from '@stake-dao/constants';
3
+ import { range } from 'lodash-es';
4
+ import { buildPancakeSwapStrats } from '../../bytecodes/index.js';
5
+ import { batchJsonRpc, rpcCall } from '../../utils.js';
6
+ import { concatBytecode } from '../utils/index.js';
7
+ import { PCS_POOLS_CHUNK_SIZE } from './config.js';
8
+ export const buildPancakeSwapStrategies = async (rpc, chainId) => {
9
+ const cake = tokenWithId('cake', chainId);
10
+ const cakeReward = { name: cake.name, symbol: cake.symbol, address: cake.address, decimals: cake.decimals };
11
+ const nPoolsRequest = await rpcCall(rpc, [{ to: contracts.pancakeMasterchef[chainId], data: '0x081e3eda' }]); // poolLength()
12
+ const nPools = Number(decodeAbiParameters([{ type: 'uint256', name: 'n_gauges' }], nPoolsRequest[0].result));
13
+ const poolsCalls = range(0, nPools, PCS_POOLS_CHUNK_SIZE).map((skip) => {
14
+ const inputParams = [
15
+ contracts.pancakeMasterchef[chainId],
16
+ skip,
17
+ skip + PCS_POOLS_CHUNK_SIZE > nPools ? nPools : skip + PCS_POOLS_CHUNK_SIZE,
18
+ ];
19
+ const inputData = encodeAbiParameters(parseAbiParameters(buildPancakeSwapStrats.inputType[chainId]), inputParams);
20
+ return concatBytecode(buildPancakeSwapStrats.bytecode[chainId], inputData);
21
+ });
22
+ const pools = await batchJsonRpc({
23
+ rpc,
24
+ calls: poolsCalls,
25
+ outputTypeAbi: buildPancakeSwapStrats.outputTypeHr[chainId],
26
+ callsKey: `Fetch PancakeSwap Pools From Masterchef on chain ${chainId}`,
27
+ });
28
+ return pools
29
+ .filter((d) => d.pool !== zeroAddress)
30
+ .map((data) => {
31
+ return {
32
+ key: `${chainId}-${data.id}`,
33
+ poolId: Number(data.id),
34
+ protocol: 'pancakeswap',
35
+ chainId,
36
+ pool: data.pool,
37
+ fee: data.fee,
38
+ coins: data.coins.map((c) => ({
39
+ name: c._name,
40
+ symbol: c._symbol,
41
+ address: c._address,
42
+ decimals: Number(c._decimals),
43
+ })),
44
+ rewards: [cakeReward],
45
+ };
46
+ });
47
+ };
48
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../src/strategies/pancakeswap/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { chunk } from 'lodash-es';
2
+ import { encodeAbiParameters, parseAbiParameters } from 'viem';
3
+ import { buildPancakeSwapErc20Strats } from '../../bytecodes/index.js';
4
+ import { batchJsonRpc } from '../../utils.js';
5
+ import { bytes32ToString, concatBytecode } from '../utils/index.js';
6
+ import { BROKEN_VAULT, PCS_POOLS_ERC20_CHUNK_SIZE } from './config.js';
7
+ export const buildPancakeSwapErc20Strategies = async (stratsList, rpc, chainId) => {
8
+ const inputArgsChunks = chunk(stratsList, PCS_POOLS_ERC20_CHUNK_SIZE);
9
+ const poolsCalls = inputArgsChunks.map((poolsArgs) => {
10
+ const inputData = encodeAbiParameters(parseAbiParameters(buildPancakeSwapErc20Strats.inputType[chainId]), [
11
+ poolsArgs,
12
+ ]);
13
+ return concatBytecode(buildPancakeSwapErc20Strats.bytecode[chainId], inputData);
14
+ });
15
+ const pools = await batchJsonRpc({
16
+ rpc,
17
+ calls: poolsCalls,
18
+ outputTypeAbi: buildPancakeSwapErc20Strats.outputTypeHr[chainId],
19
+ callsKey: `Fetch PancakeSwap Erc20 Pools From Masterchef on chain ${chainId}`,
20
+ });
21
+ return pools
22
+ .map((data) => {
23
+ const coins = data.coins.map((c) => ({
24
+ name: bytes32ToString(c._name),
25
+ symbol: bytes32ToString(c._symbol),
26
+ address: c._address,
27
+ decimals: Number(c._decimals),
28
+ }));
29
+ const lpName = bytes32ToString(data.lpToken._name);
30
+ const isStable = lpName.includes('StableSwap');
31
+ const isMetapool = coins.some((c) => c.name.includes(' LPs'));
32
+ const lpSymbol = `${coins.map((c) => c.symbol).join('-')} ${isStable ? 'Stable LP' : 'LP'}`;
33
+ if (!BROKEN_VAULT[chainId].includes(data.vault)) {
34
+ return {
35
+ key: `${data.manager.toLowerCase()}-${coins.map((c) => c.symbol.toLowerCase()).join('-')}`,
36
+ protocol: 'pancakeswap',
37
+ chainId,
38
+ isMetapool,
39
+ isStable,
40
+ manager: data.manager,
41
+ pool: data.pool,
42
+ gaugeAddress: data.gauge,
43
+ vault: data.vault,
44
+ lpToken: {
45
+ name: lpName,
46
+ symbol: lpSymbol,
47
+ address: data.lpToken._address,
48
+ decimals: Number(data.lpToken._decimals),
49
+ },
50
+ coins,
51
+ rewards: data.rewards.map((r) => ({
52
+ name: r._name,
53
+ symbol: r._symbol,
54
+ address: r._address,
55
+ decimals: Number(r._decimals),
56
+ })),
57
+ };
58
+ }
59
+ return undefined;
60
+ })
61
+ .filter(Boolean);
62
+ };
63
+ //# sourceMappingURL=buildErc20.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildErc20.js","sourceRoot":"","sources":["../../../../src/strategies/pancakeswap/buildErc20.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export const PCS_POOLS_CHUNK_SIZE = 30;
2
+ export const PCS_POOLS_ERC20_CHUNK_SIZE = 10;
3
+ export const PCS_POOLS_NOT_DEPLOYED_CHUNK_SIZE = 10;
4
+ export const BROKEN_VAULT = {
5
+ 56: ['0xBf94E99cAF355BdEb3Fbb172449EC6E933E7B3Ec'],
6
+ };
7
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/strategies/pancakeswap/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAA;AACtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAA;AAC5C,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,CAAA;AAEnD,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,EAAE,EAAE,CAAC,4CAA4C,CAAC;CACnD,CAAA"}
@@ -0,0 +1,10 @@
1
+ export const CHAINS_DENOMINATOR = {
2
+ 1: 'ethereum',
3
+ 56: 'bsc',
4
+ 42161: 'arbitrum',
5
+ };
6
+ export const PANCAKESWAP_FEE_URL = (version, chainId) => {
7
+ return `https://explorer-api.pancakeswap.com/cached/pools/apr/${version}/${CHAINS_DENOMINATOR[chainId]}/farms-lp`;
8
+ };
9
+ export const MANAGER_FEES_ENDPOINT = 'https://raw.githubusercontent.com/stake-dao/votemarket-data/main/tvls/pancakeManagersFees.json';
10
+ //# sourceMappingURL=endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../../../src/strategies/pancakeswap/endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,CAAC,EAAE,UAAU;IACb,EAAE,EAAE,KAAK;IACT,KAAK,EAAE,UAAU;CAClB,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,EAAE;IACtE,OAAO,yDAAyD,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAA;AACnH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAChC,gGAAgG,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { bsc } from 'viem/chains';
2
+ import { MANAGER_FEES_ENDPOINT, PANCAKESWAP_FEE_URL } from '../endpoints.js';
3
+ export const getPancakeSwapManagerFeesAPR = async (chainId) => {
4
+ if (chainId !== bsc.id)
5
+ return {};
6
+ const data = await (await fetch(MANAGER_FEES_ENDPOINT)).json();
7
+ const res = {};
8
+ for (const d of data) {
9
+ res[d.lpAddress.toLowerCase()] = {
10
+ token0: d.token0,
11
+ token1: d.token1,
12
+ };
13
+ }
14
+ return res;
15
+ };
16
+ export const getPancakeSwapFeesAPR = async (chainId) => {
17
+ const [v2TradingFees, stableTradingFees, v3TradingFees] = await Promise.all([
18
+ (await fetch(PANCAKESWAP_FEE_URL('v2', chainId))).json(),
19
+ (await fetch(PANCAKESWAP_FEE_URL('stable', chainId))).json(),
20
+ (await fetch(PANCAKESWAP_FEE_URL('v3', chainId))).json(),
21
+ ]);
22
+ return { ...v2TradingFees, ...stableTradingFees, ...v3TradingFees };
23
+ };
24
+ //# sourceMappingURL=getPancakeApisData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPancakeApisData.js","sourceRoot":"","sources":["../../../../../src/strategies/pancakeswap/fetch/getPancakeApisData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAM5E,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,OAAe,EAA+B,EAAE;IACjG,IAAI,OAAO,KAAK,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,CAAA;IAEjC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC9D,MAAM,GAAG,GAAuB,EAAE,CAAA;IAElC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG;YAC/B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAA;IACH,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IAC7D,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1E,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QACxD,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAC5D,CAAC,MAAM,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;KACzD,CAAC,CAAA;IAEF,OAAO,EAAE,GAAG,aAAa,EAAE,GAAG,iBAAiB,EAAE,GAAG,aAAa,EAAE,CAAA;AACrE,CAAC,CAAA"}
@@ -0,0 +1,134 @@
1
+ import { encodeAbiParameters, formatUnits, parseAbiParameters } from 'viem';
2
+ import { batchPancakeSwapErc20Strats } from '../../../bytecodes/index.js';
3
+ import { buildPancakeSwapErc20Strategies } from '../buildErc20.js';
4
+ import { ONE_YEAR, STRAT_FEES, contracts, pancakeswapErc20Strats, tokenWithId } from '@stake-dao/constants';
5
+ import { concatBytecode, decodeNewFactoryEvent } from '../../../index.js';
6
+ import { mergePrices } from '../../../prices.js';
7
+ import { batchJsonRpc, equalTlc } from '../../../utils.js';
8
+ import { getAprBreakdown } from '../../utils/getAprBreakdown.js';
9
+ export const getPancakeErc20Vaults = async (rpc, chainId, basePrices, feesApr, managerFees, events) => {
10
+ const oldVaultsAndLp = pancakeswapErc20Strats.strats[chainId];
11
+ const newVaultsAndLp = decodeNewFactoryEvent(events).map((e) => ({ vault: e.vault, lpToken: e.lpToken }));
12
+ const vaultsAndLp = oldVaultsAndLp.concat(newVaultsAndLp);
13
+ const poolsErc20 = vaultsAndLp.length > 0
14
+ ? await buildPancakeSwapErc20Strategies(oldVaultsAndLp.concat(newVaultsAndLp), rpc, chainId)
15
+ : [];
16
+ if (poolsErc20.length > 0) {
17
+ const poolsErc20Info = poolsErc20.map((p) => ({ lp: p.lpToken.address, wrapper: p.gaugeAddress, vault: p.vault }));
18
+ const pricesToFetch = poolsErc20
19
+ .flatMap((p) => p.coins.map((c) => {
20
+ const coinPrice = basePrices.find((bp) => equalTlc(bp.address, c.address))?.usdPrice || 0;
21
+ return coinPrice === 0 ? { address: c.address, symbol: c.symbol } : undefined;
22
+ }))
23
+ .filter(Boolean);
24
+ const prices = await mergePrices(basePrices, pricesToFetch, chainId);
25
+ const cake = tokenWithId('cake', chainId);
26
+ const cakePriceUsd = prices.find((p) => equalTlc(p.address, cake.address))?.usdPrice || 0;
27
+ const poolsErc20InputData = encodeAbiParameters(parseAbiParameters(batchPancakeSwapErc20Strats.inputType[chainId]), [contracts.cakeLocker[chainId], poolsErc20Info]);
28
+ const poolsErc20Calls = concatBytecode(batchPancakeSwapErc20Strats.bytecode[chainId], poolsErc20InputData);
29
+ const decodedPromiseErc20 = await batchJsonRpc({
30
+ rpc,
31
+ calls: [poolsErc20Calls],
32
+ outputTypeAbi: batchPancakeSwapErc20Strats.outputTypeHr[chainId],
33
+ callsKey: `fetchPancakeSwapErc20-poolsInfo chainId ${chainId}`,
34
+ });
35
+ const parsedStratsErc20 = poolsErc20.map((strat, index) => {
36
+ const stratParsedData = decodedPromiseErc20[0].stratsData[index];
37
+ const token0PriceInUsd = prices.find((p) => equalTlc(p.address, strat.coins[0].address))?.usdPrice || 0;
38
+ const token1PriceInUsd = prices.find((p) => equalTlc(p.address, strat.coins[1].address))?.usdPrice || 0;
39
+ const lpPriceInUsd = Number(formatUnits(stratParsedData.token0PerShare, strat.coins[0].decimals)) * token0PriceInUsd +
40
+ Number(formatUnits(stratParsedData.token1PerShare, strat.coins[1].decimals)) * token1PriceInUsd;
41
+ const totalSupply = formatUnits(stratParsedData.sharesDeposited, 18);
42
+ const tvl = lpPriceInUsd * Number(totalSupply);
43
+ const tvlTotal = lpPriceInUsd * Number(formatUnits(stratParsedData.sharesTotalSupply, 18));
44
+ let tradingApy = Number(feesApr[strat.lpToken.address.toLowerCase()]?.apr7d || 0);
45
+ if (!tradingApy && managerFees[strat.pool.toLowerCase()]) {
46
+ const feesData = managerFees[strat.pool.toLowerCase()];
47
+ tradingApy = feesData
48
+ ? ((Number(formatUnits(feesData.token0, strat.coins[0].decimals)) * token0PriceInUsd +
49
+ Number(formatUnits(feesData.token1, strat.coins[1].decimals)) * token1PriceInUsd) /
50
+ tvlTotal) *
51
+ 365 *
52
+ 100
53
+ : 0;
54
+ }
55
+ const boost = Number(formatUnits(stratParsedData.boost, 0)) / Number(formatUnits(stratParsedData.boostPrecision, 0)) ||
56
+ (strat.manager === 'pancakeswap' ? 2.5 : 3); // Pancake max boost is 2.5, managers farm is 3
57
+ const rewardPerYear = cakePriceUsd * Number(formatUnits(stratParsedData.rewardPerSecond, 18)) * ONE_YEAR;
58
+ const farmApr = tvl > 0
59
+ ? ((rewardPerYear *
60
+ (Number(formatUnits(stratParsedData.boostedSharesDeposited, 0)) /
61
+ Number(formatUnits(stratParsedData.boostedSharesTotalSupply, 0)))) /
62
+ tvl) *
63
+ ((100 - STRAT_FEES + 0.5) / 100)
64
+ : (rewardPerYear / tvlTotal) * boost;
65
+ const rewardsData = stratParsedData.sdRewardsData.map((r, index) => {
66
+ const rewardToken = strat.rewards[index];
67
+ const rewardPrice = prices.find((p) => equalTlc(p.symbol, rewardToken.symbol));
68
+ const periodFinish = Number(formatUnits(r.period_finish, 0));
69
+ const streaming = periodFinish > Math.floor(Date.now() / 1000);
70
+ const rewardApr = streaming && rewardPrice && tvl > 0
71
+ ? (Number(formatUnits(r.rate * BigInt(ONE_YEAR), 18)) * rewardPrice.usdPrice) /
72
+ tvl /
73
+ (equalTlc(rewardToken.symbol, 'SDT') ? 2.5 : 1)
74
+ : 0;
75
+ return {
76
+ token: rewardToken,
77
+ price: rewardPrice ? rewardPrice.usdPrice : 0,
78
+ apr: rewardApr * 100,
79
+ streaming,
80
+ periodFinish,
81
+ rate: formatUnits(r.rate, 0),
82
+ lastUpdate: formatUnits(r.last_update, 0),
83
+ claimablePendingRewards: rewardToken.symbol === 'CAKE' ? formatUnits(stratParsedData.claimablePendingRewards, 0) : '0',
84
+ };
85
+ });
86
+ const apr = getAprBreakdown({ ...strat, minApr: (farmApr / boost) * 100, tradingApy }, rewardsData, boost, undefined);
87
+ const name = strat.coins.reduce((res, current) => `${res}/${current.symbol}`, '').slice(1);
88
+ const subname = strat.manager === 'pancakeswap' ? (strat.lpToken.symbol.includes('Stable LP') ? 'Stable' : 'v2') : strat.manager;
89
+ const version = strat.manager === 'pancakeswap'
90
+ ? strat.lpToken.symbol.includes('Stable LP')
91
+ ? 'stable'
92
+ : '2'
93
+ : strat.manager.toLowerCase();
94
+ const sdGauge = {
95
+ address: strat.sdGauge,
96
+ totalSupply: formatUnits(stratParsedData.sharesDeposited, 0),
97
+ relativeWeight: '0',
98
+ weight: '0',
99
+ futureWeight: '0',
100
+ workingSupply: '0',
101
+ };
102
+ return {
103
+ key: strat.key,
104
+ name,
105
+ subname,
106
+ protocol: strat.protocol,
107
+ version,
108
+ chainId: strat.chainId,
109
+ isMetapool: strat.isMetapool,
110
+ isStable: strat.isStable,
111
+ vault: strat.vault,
112
+ lpToken: strat.lpToken,
113
+ gaugeAddress: strat.gaugeAddress,
114
+ pool: strat.pool,
115
+ manager: strat.manager,
116
+ coins: strat.coins,
117
+ sdGauge,
118
+ lpPriceInUsd,
119
+ tvl,
120
+ apr: { ...apr, boost },
121
+ rewards: rewardsData,
122
+ // Base APR data
123
+ tradingApy,
124
+ minApr: (farmApr / boost) * 100,
125
+ maxApr: (farmApr / boost) * (strat.manager === 'pancakeswap' ? 2.5 : 3) * 100,
126
+ // Raw data
127
+ totalSupply: formatUnits(stratParsedData.sharesDeposited, 0),
128
+ };
129
+ });
130
+ return parsedStratsErc20;
131
+ }
132
+ return [];
133
+ };
134
+ //# sourceMappingURL=getPancakeErc20Vaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPancakeErc20Vaults.js","sourceRoot":"","sources":["../../../../../src/strategies/pancakeswap/fetch/getPancakeErc20Vaults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { ONE_YEAR, STRAT_FEES, contracts, tokenWithId } from '@stake-dao/constants';
2
+ import { decodeAbiParameters, encodeAbiParameters, formatUnits, parseAbiParameters, zeroAddress } from 'viem';
3
+ import { range } from 'lodash-es';
4
+ import { buildPancakeswapNotDeployedErc20Strats } from '../../../bytecodes/index.js';
5
+ import { bytes32ToString, concatBytecode } from '../../../index.js';
6
+ import { mergePrices } from '../../../prices.js';
7
+ import { batchJsonRpc, equalTlc, rpcCall } from '../../../utils.js';
8
+ import { PCS_POOLS_NOT_DEPLOYED_CHUNK_SIZE } from '../config.js';
9
+ export const getPancakeNotDeployed = async (rpc, chainId, basePrices, feesApr, managerFees, deployedLp) => {
10
+ const poolLengthRequest = await rpcCall(rpc, [{ to: contracts.pancakeFarmBooster[chainId], data: '0x081e3eda' }]); // poolLength()
11
+ const poolLength = Number(decodeAbiParameters([{ type: 'uint256', name: 'n_gauges' }], poolLengthRequest[0].result)) + 1;
12
+ const notDeployedCalls = range(1, poolLength, PCS_POOLS_NOT_DEPLOYED_CHUNK_SIZE).map((skip) => {
13
+ const inputParams = [
14
+ contracts.pancakeFarmBooster[chainId],
15
+ skip,
16
+ skip + PCS_POOLS_NOT_DEPLOYED_CHUNK_SIZE > poolLength ? poolLength : skip + PCS_POOLS_NOT_DEPLOYED_CHUNK_SIZE,
17
+ ];
18
+ const inputData = encodeAbiParameters(parseAbiParameters(buildPancakeswapNotDeployedErc20Strats.inputType[chainId]), inputParams);
19
+ return concatBytecode(buildPancakeswapNotDeployedErc20Strats.bytecode[chainId], inputData);
20
+ });
21
+ const notDeployedData = await batchJsonRpc({
22
+ rpc,
23
+ calls: notDeployedCalls,
24
+ outputTypeAbi: buildPancakeswapNotDeployedErc20Strats.outputTypeHr[chainId],
25
+ callsKey: `fetchPancakeSwap-notDeployed chainId ${chainId}`,
26
+ });
27
+ const pricesToFetch = notDeployedData
28
+ .flatMap((d) => {
29
+ if (d.lpToken._address === zeroAddress || deployedLp.includes(d.lpToken._address))
30
+ return undefined;
31
+ return d.coins.map((c) => {
32
+ const coinPrice = basePrices.find((bp) => equalTlc(bp.address, c._address))?.usdPrice || 0;
33
+ return coinPrice === 0 ? { address: c._address, symbol: bytes32ToString(c._symbol) } : undefined;
34
+ });
35
+ })
36
+ .filter(Boolean);
37
+ const prices = await mergePrices(basePrices, pricesToFetch, chainId);
38
+ const cake = tokenWithId('cake', chainId);
39
+ const cakeReward = { name: cake.name, symbol: cake.symbol, address: cake.address, decimals: cake.decimals };
40
+ const cakePriceUsd = prices.find((p) => equalTlc(p.address, cake.address))?.usdPrice || 0;
41
+ // TODO type
42
+ const notDeployed = notDeployedData
43
+ .map((d) => {
44
+ if (d.lpToken._address === zeroAddress || deployedLp.includes(d.lpToken._address))
45
+ return undefined;
46
+ const coins = d.coins.map((c) => ({
47
+ name: bytes32ToString(c._name),
48
+ symbol: bytes32ToString(c._symbol),
49
+ address: c._address,
50
+ decimals: Number(c._decimals),
51
+ }));
52
+ const lpName = bytes32ToString(d.lpToken._name);
53
+ const isStable = lpName.includes('StableSwap');
54
+ const isMetapool = coins.some((c) => c.name.includes(' LPs'));
55
+ const lpSymbol = `${coins.map((c) => c.symbol).join('-')} ${isStable ? 'Stable LP' : 'LP'}`;
56
+ const lpToken = {
57
+ name: lpName,
58
+ symbol: lpSymbol,
59
+ address: d.lpToken._address,
60
+ decimals: Number(d.lpToken._decimals),
61
+ };
62
+ const token0PriceInUsd = prices.find((p) => equalTlc(p.address, coins[0].address))?.usdPrice || 0;
63
+ const token1PriceInUsd = prices.find((p) => equalTlc(p.address, coins[1].address))?.usdPrice || 0;
64
+ const lpPriceInUsd = Number(formatUnits(d.token0PerShare, coins[0].decimals)) * token0PriceInUsd +
65
+ Number(formatUnits(d.token1PerShare, coins[1].decimals)) * token1PriceInUsd;
66
+ const tvl = lpPriceInUsd * Number(formatUnits(d.sharesTotalSupply, 18));
67
+ let tradingApy = Number(feesApr[lpToken.address.toLowerCase()]?.apr7d || 0);
68
+ if (!tradingApy && managerFees[d.pool.toLowerCase()]) {
69
+ const feesData = managerFees[d.pool.toLowerCase()];
70
+ tradingApy = feesData
71
+ ? ((Number(formatUnits(feesData.token0, coins[0].decimals)) * token0PriceInUsd +
72
+ Number(formatUnits(feesData.token1, coins[1].decimals)) * token1PriceInUsd) /
73
+ tvl) *
74
+ 365 *
75
+ 100
76
+ : 0;
77
+ }
78
+ const boost = d.manager === 'pancakeswap' ? 2.5 : 3; // Pancake max boost is 2.5, managers farm is 3
79
+ const rewardPerYear = cakePriceUsd * Number(formatUnits(d.rewardPerSecond, 18)) * ONE_YEAR;
80
+ const stakedTvl = lpPriceInUsd * Number(formatUnits(d.stakedInGauge, 18));
81
+ const minApr = (rewardPerYear / (stakedTvl > 0 ? stakedTvl : tvl)) * ((100 - STRAT_FEES + 0.5) / 100);
82
+ const maxApr = minApr * boost;
83
+ return {
84
+ key: `${d.manager.toLowerCase()}-${coins.map((c) => c.symbol.toLowerCase()).join('-')}`,
85
+ protocol: 'pancakeswap',
86
+ chainId,
87
+ isMetapool,
88
+ isStable,
89
+ manager: d.manager,
90
+ pool: d.pool,
91
+ gaugeAddress: d.gagaugeAddressuge,
92
+ lpToken,
93
+ coins,
94
+ minApr,
95
+ maxApr,
96
+ rewards: [cakeReward],
97
+ };
98
+ })
99
+ .filter(Boolean);
100
+ return notDeployed;
101
+ };
102
+ //# sourceMappingURL=getPancakeNotDeployed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPancakeNotDeployed.js","sourceRoot":"","sources":["../../../../../src/strategies/pancakeswap/fetch/getPancakeNotDeployed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import { chunk } from 'lodash-es';
2
+ import { encodeAbiParameters, formatUnits, parseAbiParameters } from 'viem';
3
+ import { batchPancakeSwapPositions, batchPancakeSwapStrats } from '../../../bytecodes/index.js';
4
+ import { getFarmApr } from './pancakeswapMath.js';
5
+ import { STRAT_FEES, contracts, tokenWithId } from '@stake-dao/constants';
6
+ import { buildPancakeSwapStrategies, concatBytecode } from '../../../index.js';
7
+ import { mergePrices } from '../../../prices.js';
8
+ import { batchJsonRpc, equalTlc } from '../../../utils.js';
9
+ import { getAprBreakdown } from '../../utils/getAprBreakdown.js';
10
+ import { computePositionData } from './pancakePositions.js';
11
+ // NOTE: Need to include mainnet SDT price and sdCAKE in prices args
12
+ export const getPancakeV3Vaults = async (rpc, chainId, basePrices, feesApr, stakedTVLS) => {
13
+ const pools = await buildPancakeSwapStrategies(rpc, chainId);
14
+ const poolInfos = pools.map((p) => ({ pid: p.poolId, pool: p.pool }));
15
+ const poolInfosInputArgsChunks = chunk(poolInfos, 20);
16
+ const poolInfosCalls = poolInfosInputArgsChunks.map((inputArgs) => {
17
+ const inputData = encodeAbiParameters(parseAbiParameters(batchPancakeSwapStrats.inputType[chainId]), [
18
+ contracts.pancakeMasterchef[chainId],
19
+ inputArgs,
20
+ ]);
21
+ return concatBytecode(batchPancakeSwapStrats.bytecode[chainId], inputData);
22
+ });
23
+ const decodedPromise = await batchJsonRpc({
24
+ rpc,
25
+ calls: poolInfosCalls,
26
+ outputTypeAbi: batchPancakeSwapStrats.outputTypeHr[chainId],
27
+ callsKey: `fetchPancakeSwap-poolsInfo chainId ${chainId}`,
28
+ });
29
+ const positionsInputData = encodeAbiParameters(parseAbiParameters(batchPancakeSwapPositions.inputType[chainId]), [contracts.pancakeMasterchef[chainId], contracts.cakeStrategy[chainId], contracts.cakeLocker[chainId]]);
30
+ const positionsCalls = concatBytecode(batchPancakeSwapPositions.bytecode[chainId], positionsInputData);
31
+ const positionsData = await batchJsonRpc({
32
+ rpc,
33
+ calls: [positionsCalls],
34
+ outputTypeAbi: batchPancakeSwapPositions.outputTypeHr[chainId],
35
+ callsKey: `fetchPancakeSwap-positions chainId ${chainId}`,
36
+ });
37
+ const pricesToFetch = pools
38
+ .flatMap((p) => p.coins.map((c) => {
39
+ const coinPrice = basePrices.find((bp) => equalTlc(bp.address, c.address))?.usdPrice || 0;
40
+ return coinPrice === 0 ? { address: c.address, symbol: c.symbol } : undefined;
41
+ }))
42
+ .filter(Boolean);
43
+ const prices = await mergePrices(basePrices, pricesToFetch, chainId);
44
+ const cake = tokenWithId('cake', chainId);
45
+ const cakePriceUsd = prices.find((p) => equalTlc(p.address, cake.address))?.usdPrice || 0;
46
+ const global = {
47
+ totalAllocPoint: '0',
48
+ inflationRate: '0',
49
+ fees: {
50
+ veSdt: 0,
51
+ perf: 0,
52
+ accumulator: 0,
53
+ claimer: 0,
54
+ },
55
+ };
56
+ // TODO stratsData type
57
+ let stratsData = [];
58
+ decodedPromise.forEach((d, index) => {
59
+ if (index === 0) {
60
+ global.totalAllocPoint = formatUnits(d.totalAllocPoint, 0);
61
+ global.inflationRate = formatUnits(d.inflationRate, 30);
62
+ }
63
+ for (const stratData of d.pancakeSwapStratsData) {
64
+ const stratParsedData = {
65
+ poolId: Number(stratData.id),
66
+ allocPoint: Number(stratData.allocPoint),
67
+ tick: stratData.tick,
68
+ sqrtPriceX96: stratData.sqrtPriceX96.toString(),
69
+ totalLiquidity: stratData.totalLiquidity.toString(),
70
+ totalBoostLiquidity: stratData.totalBoostLiquidity.toString(),
71
+ poolLiquidity: stratData.poolLiquidity.toString(),
72
+ };
73
+ const strat = pools.find((p) => p.poolId === stratParsedData.poolId);
74
+ const token0PriceInUsd = prices.find((p) => equalTlc(p.address, strat.coins[0].address))?.usdPrice || 0;
75
+ const token1PriceInUsd = prices.find((p) => equalTlc(p.address, strat.coins[1].address))?.usdPrice || 0;
76
+ let tvl = 0;
77
+ let boost = 2;
78
+ const poolPositionData = positionsData.filter((p) => Number(p.pid) === strat.poolId);
79
+ const fees24H = ((feesApr[strat.pool.toLowerCase()]?.volumeUSD24h || 0) * strat.fee) / 10000;
80
+ const positions = poolPositionData.map((p) => {
81
+ const computedPositionData = computePositionData(strat, p, stratParsedData, fees24H, prices, token0PriceInUsd, token1PriceInUsd, global.totalAllocPoint, global.inflationRate);
82
+ tvl += computedPositionData.tvlToAdd;
83
+ boost = computedPositionData.boost;
84
+ return computedPositionData.positionData;
85
+ });
86
+ const protocolTvlData = stakedTVLS[strat.pool];
87
+ const protocolTvl = protocolTvlData
88
+ ? Number(protocolTvlData.token0) * token0PriceInUsd + Number(protocolTvlData.token1) * token1PriceInUsd
89
+ : 0;
90
+ const farmApr = getFarmApr({
91
+ tvlUsd: protocolTvl,
92
+ cakePriceUsd,
93
+ cakePerSecond: Number(global.inflationRate),
94
+ poolWeight: stratParsedData.allocPoint / Number(global.totalAllocPoint),
95
+ }) *
96
+ ((100 - STRAT_FEES + 0.5) / 100); // +0.5 because no harvest fee on v3 pools
97
+ const rewards = [
98
+ {
99
+ token: strat.rewards[0],
100
+ apr: farmApr * boost,
101
+ price: cakePriceUsd,
102
+ streaming: true,
103
+ periodFinish: 0,
104
+ rate: '0',
105
+ lastUpdate: '0',
106
+ claimablePendingRewards: '0',
107
+ },
108
+ ];
109
+ const tradingApy = Number(feesApr[strat.pool.toLowerCase()]?.apr7d || 0);
110
+ const apr = getAprBreakdown({ ...strat, tradingApy }, rewards, boost, undefined);
111
+ const parsedData = {
112
+ key: strat.key,
113
+ name: strat.coins.reduce((res, current) => `${res}/${current.symbol}`, '').slice(1),
114
+ subname: 'v3',
115
+ protocol: strat.protocol,
116
+ version: '3',
117
+ chainId: strat.chainId,
118
+ pool: strat.pool,
119
+ fee: strat.fee,
120
+ coins: strat.coins,
121
+ coinsPrice: [token0PriceInUsd, token1PriceInUsd],
122
+ tvl,
123
+ apr: { ...apr, boost },
124
+ rewards,
125
+ // Positions
126
+ positions,
127
+ // Base APR data
128
+ tradingApy,
129
+ gaugesProjectedApr: strat.gaugesProjectedApr,
130
+ minApr: farmApr,
131
+ maxApr: farmApr * 2,
132
+ // Raw data
133
+ tick: Number(stratParsedData.tick),
134
+ sqrtPriceX96: stratParsedData.sqrtPriceX96.toString(),
135
+ allocPoint: stratParsedData.allocPoint,
136
+ };
137
+ stratsData = stratsData.concat(parsedData);
138
+ }
139
+ });
140
+ return { global, stratsData };
141
+ };
142
+ //# sourceMappingURL=getPancakeV3Vaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPancakeV3Vaults.js","sourceRoot":"","sources":["../../../../../src/strategies/pancakeswap/fetch/getPancakeV3Vaults.ts"],"names":[],"mappings":"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"}