@1delta/margin-fetcher 0.0.265 → 0.0.266

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 (346) hide show
  1. package/dist/ccip-XQNAHYUN.js +5 -0
  2. package/dist/{ccip-SQXTDOS7.js.map → ccip-XQNAHYUN.js.map} +1 -1
  3. package/dist/{chunk-KQ6K6D2V.js → chunk-H6U3H7VY.js} +4 -4
  4. package/dist/{chunk-KQ6K6D2V.js.map → chunk-H6U3H7VY.js.map} +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +8151 -316
  8. package/dist/index.js.map +1 -1
  9. package/dist/vaults/classification.d.ts +78 -0
  10. package/dist/vaults/classification.d.ts.map +1 -0
  11. package/dist/vaults/euler-earn/types.d.ts +2 -1
  12. package/dist/vaults/euler-earn/types.d.ts.map +1 -1
  13. package/dist/vaults/fetchVaultsAll.d.ts +25 -1
  14. package/dist/vaults/fetchVaultsAll.d.ts.map +1 -1
  15. package/dist/vaults/fluid/types.d.ts +2 -1
  16. package/dist/vaults/fluid/types.d.ts.map +1 -1
  17. package/dist/vaults/gearbox/types.d.ts +2 -1
  18. package/dist/vaults/gearbox/types.d.ts.map +1 -1
  19. package/dist/vaults/gmx/abis.d.ts +590 -0
  20. package/dist/vaults/gmx/abis.d.ts.map +1 -0
  21. package/dist/vaults/gmx/api.d.ts +54 -0
  22. package/dist/vaults/gmx/api.d.ts.map +1 -0
  23. package/dist/vaults/gmx/contracts.d.ts +20 -0
  24. package/dist/vaults/gmx/contracts.d.ts.map +1 -0
  25. package/dist/vaults/gmx/fetchPublic.d.ts +21 -0
  26. package/dist/vaults/gmx/fetchPublic.d.ts.map +1 -0
  27. package/dist/vaults/gmx/fetchUser.d.ts +19 -0
  28. package/dist/vaults/gmx/fetchUser.d.ts.map +1 -0
  29. package/dist/vaults/gmx/index.d.ts +9 -0
  30. package/dist/vaults/gmx/index.d.ts.map +1 -0
  31. package/dist/vaults/gmx/keys.d.ts +25 -0
  32. package/dist/vaults/gmx/keys.d.ts.map +1 -0
  33. package/dist/vaults/gmx/pricing.d.ts +52 -0
  34. package/dist/vaults/gmx/pricing.d.ts.map +1 -0
  35. package/dist/vaults/gmx/registry.d.ts +13 -0
  36. package/dist/vaults/gmx/registry.d.ts.map +1 -0
  37. package/dist/vaults/gmx/types.d.ts +155 -0
  38. package/dist/vaults/gmx/types.d.ts.map +1 -0
  39. package/dist/vaults/hypercore/fetchPublic.d.ts +13 -0
  40. package/dist/vaults/hypercore/fetchPublic.d.ts.map +1 -0
  41. package/dist/vaults/hypercore/fetchUser.d.ts +18 -0
  42. package/dist/vaults/hypercore/fetchUser.d.ts.map +1 -0
  43. package/dist/vaults/hypercore/index.d.ts +5 -0
  44. package/dist/vaults/hypercore/index.d.ts.map +1 -0
  45. package/dist/vaults/hypercore/registry.d.ts +19 -0
  46. package/dist/vaults/hypercore/registry.d.ts.map +1 -0
  47. package/dist/vaults/hypercore/types.d.ts +80 -0
  48. package/dist/vaults/hypercore/types.d.ts.map +1 -0
  49. package/dist/vaults/index.d.ts +8 -0
  50. package/dist/vaults/index.d.ts.map +1 -1
  51. package/dist/vaults/interfaceKind.d.ts +33 -0
  52. package/dist/vaults/interfaceKind.d.ts.map +1 -0
  53. package/dist/vaults/lagoon/api.d.ts +67 -0
  54. package/dist/vaults/lagoon/api.d.ts.map +1 -0
  55. package/dist/vaults/lagoon/fetchPublic.d.ts +19 -0
  56. package/dist/vaults/lagoon/fetchPublic.d.ts.map +1 -0
  57. package/dist/vaults/lagoon/index.d.ts +4 -0
  58. package/dist/vaults/lagoon/index.d.ts.map +1 -0
  59. package/dist/vaults/lagoon/types.d.ts +104 -0
  60. package/dist/vaults/lagoon/types.d.ts.map +1 -0
  61. package/dist/vaults/lookup.d.ts +20 -0
  62. package/dist/vaults/lookup.d.ts.map +1 -1
  63. package/dist/vaults/lst/abis/ankr.d.ts +14 -0
  64. package/dist/vaults/lst/abis/ankr.d.ts.map +1 -0
  65. package/dist/vaults/lst/abis/beets.d.ts +21 -0
  66. package/dist/vaults/lst/abis/beets.d.ts.map +1 -0
  67. package/dist/vaults/lst/abis/benqi.d.ts +25 -0
  68. package/dist/vaults/lst/abis/benqi.d.ts.map +1 -0
  69. package/dist/vaults/lst/abis/dinero.d.ts +16 -0
  70. package/dist/vaults/lst/abis/dinero.d.ts.map +1 -0
  71. package/dist/vaults/lst/abis/etherfi.d.ts +21 -0
  72. package/dist/vaults/lst/abis/etherfi.d.ts.map +1 -0
  73. package/dist/vaults/lst/abis/hyperbeat.d.ts +17 -0
  74. package/dist/vaults/lst/abis/hyperbeat.d.ts.map +1 -0
  75. package/dist/vaults/lst/abis/index.d.ts +30 -0
  76. package/dist/vaults/lst/abis/index.d.ts.map +1 -0
  77. package/dist/vaults/lst/abis/kelp.d.ts +11 -0
  78. package/dist/vaults/lst/abis/kelp.d.ts.map +1 -0
  79. package/dist/vaults/lst/abis/kinetiq.d.ts +16 -0
  80. package/dist/vaults/lst/abis/kinetiq.d.ts.map +1 -0
  81. package/dist/vaults/lst/abis/lair.d.ts +25 -0
  82. package/dist/vaults/lst/abis/lair.d.ts.map +1 -0
  83. package/dist/vaults/lst/abis/lido.d.ts +11 -0
  84. package/dist/vaults/lst/abis/lido.d.ts.map +1 -0
  85. package/dist/vaults/lst/abis/lista.d.ts +28 -0
  86. package/dist/vaults/lst/abis/lista.d.ts.map +1 -0
  87. package/dist/vaults/lst/abis/mantle.d.ts +15 -0
  88. package/dist/vaults/lst/abis/mantle.d.ts.map +1 -0
  89. package/dist/vaults/lst/abis/renzo.d.ts +17 -0
  90. package/dist/vaults/lst/abis/renzo.d.ts.map +1 -0
  91. package/dist/vaults/lst/abis/rocketpool.d.ts +29 -0
  92. package/dist/vaults/lst/abis/rocketpool.d.ts.map +1 -0
  93. package/dist/vaults/lst/abis/shared.d.ts +57 -0
  94. package/dist/vaults/lst/abis/shared.d.ts.map +1 -0
  95. package/dist/vaults/lst/abis/stader.d.ts +34 -0
  96. package/dist/vaults/lst/abis/stader.d.ts.map +1 -0
  97. package/dist/vaults/lst/abis/stakewise.d.ts +16 -0
  98. package/dist/vaults/lst/abis/stakewise.d.ts.map +1 -0
  99. package/dist/vaults/lst/abis/stcelo.d.ts +17 -0
  100. package/dist/vaults/lst/abis/stcelo.d.ts.map +1 -0
  101. package/dist/vaults/lst/abis/swell.d.ts +13 -0
  102. package/dist/vaults/lst/abis/swell.d.ts.map +1 -0
  103. package/dist/vaults/lst/abis/valantis.d.ts +13 -0
  104. package/dist/vaults/lst/abis/valantis.d.ts.map +1 -0
  105. package/dist/vaults/lst/abis/veda.d.ts +14 -0
  106. package/dist/vaults/lst/abis/veda.d.ts.map +1 -0
  107. package/dist/vaults/lst/fetchPublic.d.ts +25 -0
  108. package/dist/vaults/lst/fetchPublic.d.ts.map +1 -0
  109. package/dist/vaults/lst/index.d.ts +5 -0
  110. package/dist/vaults/lst/index.d.ts.map +1 -0
  111. package/dist/vaults/lst/readers/ankr.d.ts +16 -0
  112. package/dist/vaults/lst/readers/ankr.d.ts.map +1 -0
  113. package/dist/vaults/lst/readers/beets.d.ts +16 -0
  114. package/dist/vaults/lst/readers/beets.d.ts.map +1 -0
  115. package/dist/vaults/lst/readers/benqi.d.ts +16 -0
  116. package/dist/vaults/lst/readers/benqi.d.ts.map +1 -0
  117. package/dist/vaults/lst/readers/bgtWrapper.d.ts +14 -0
  118. package/dist/vaults/lst/readers/bgtWrapper.d.ts.map +1 -0
  119. package/dist/vaults/lst/readers/dinero.d.ts +14 -0
  120. package/dist/vaults/lst/readers/dinero.d.ts.map +1 -0
  121. package/dist/vaults/lst/readers/erc4626.d.ts +23 -0
  122. package/dist/vaults/lst/readers/erc4626.d.ts.map +1 -0
  123. package/dist/vaults/lst/readers/etherfi.d.ts +15 -0
  124. package/dist/vaults/lst/readers/etherfi.d.ts.map +1 -0
  125. package/dist/vaults/lst/readers/hyperbeat.d.ts +17 -0
  126. package/dist/vaults/lst/readers/hyperbeat.d.ts.map +1 -0
  127. package/dist/vaults/lst/readers/index.d.ts +22 -0
  128. package/dist/vaults/lst/readers/index.d.ts.map +1 -0
  129. package/dist/vaults/lst/readers/kelp.d.ts +13 -0
  130. package/dist/vaults/lst/readers/kelp.d.ts.map +1 -0
  131. package/dist/vaults/lst/readers/kinetiq.d.ts +17 -0
  132. package/dist/vaults/lst/readers/kinetiq.d.ts.map +1 -0
  133. package/dist/vaults/lst/readers/lair.d.ts +16 -0
  134. package/dist/vaults/lst/readers/lair.d.ts.map +1 -0
  135. package/dist/vaults/lst/readers/lido.d.ts +12 -0
  136. package/dist/vaults/lst/readers/lido.d.ts.map +1 -0
  137. package/dist/vaults/lst/readers/lista.d.ts +17 -0
  138. package/dist/vaults/lst/readers/lista.d.ts.map +1 -0
  139. package/dist/vaults/lst/readers/mantle.d.ts +14 -0
  140. package/dist/vaults/lst/readers/mantle.d.ts.map +1 -0
  141. package/dist/vaults/lst/readers/offChain.d.ts +11 -0
  142. package/dist/vaults/lst/readers/offChain.d.ts.map +1 -0
  143. package/dist/vaults/lst/readers/renzo.d.ts +19 -0
  144. package/dist/vaults/lst/readers/renzo.d.ts.map +1 -0
  145. package/dist/vaults/lst/readers/rocketpool.d.ts +17 -0
  146. package/dist/vaults/lst/readers/rocketpool.d.ts.map +1 -0
  147. package/dist/vaults/lst/readers/shared.d.ts +65 -0
  148. package/dist/vaults/lst/readers/shared.d.ts.map +1 -0
  149. package/dist/vaults/lst/readers/stader.d.ts +34 -0
  150. package/dist/vaults/lst/readers/stader.d.ts.map +1 -0
  151. package/dist/vaults/lst/readers/stakewise.d.ts +14 -0
  152. package/dist/vaults/lst/readers/stakewise.d.ts.map +1 -0
  153. package/dist/vaults/lst/readers/stcelo.d.ts +15 -0
  154. package/dist/vaults/lst/readers/stcelo.d.ts.map +1 -0
  155. package/dist/vaults/lst/readers/swell.d.ts +13 -0
  156. package/dist/vaults/lst/readers/swell.d.ts.map +1 -0
  157. package/dist/vaults/lst/readers/valantis.d.ts +15 -0
  158. package/dist/vaults/lst/readers/valantis.d.ts.map +1 -0
  159. package/dist/vaults/lst/readers/veda.d.ts +19 -0
  160. package/dist/vaults/lst/readers/veda.d.ts.map +1 -0
  161. package/dist/vaults/lst/registry.d.ts +125 -0
  162. package/dist/vaults/lst/registry.d.ts.map +1 -0
  163. package/dist/vaults/lst/types.d.ts +124 -0
  164. package/dist/vaults/lst/types.d.ts.map +1 -0
  165. package/dist/vaults/lst/withdrawals/abis/beets.d.ts +51 -0
  166. package/dist/vaults/lst/withdrawals/abis/beets.d.ts.map +1 -0
  167. package/dist/vaults/lst/withdrawals/abis/behype.d.ts +52 -0
  168. package/dist/vaults/lst/withdrawals/abis/behype.d.ts.map +1 -0
  169. package/dist/vaults/lst/withdrawals/abis/benqi.d.ts +55 -0
  170. package/dist/vaults/lst/withdrawals/abis/benqi.d.ts.map +1 -0
  171. package/dist/vaults/lst/withdrawals/abis/berapaw.d.ts +33 -0
  172. package/dist/vaults/lst/withdrawals/abis/berapaw.d.ts.map +1 -0
  173. package/dist/vaults/lst/withdrawals/abis/erc7540.d.ts +50 -0
  174. package/dist/vaults/lst/withdrawals/abis/erc7540.d.ts.map +1 -0
  175. package/dist/vaults/lst/withdrawals/abis/ethena.d.ts +25 -0
  176. package/dist/vaults/lst/withdrawals/abis/ethena.d.ts.map +1 -0
  177. package/dist/vaults/lst/withdrawals/abis/etherfi.d.ts +70 -0
  178. package/dist/vaults/lst/withdrawals/abis/etherfi.d.ts.map +1 -0
  179. package/dist/vaults/lst/withdrawals/abis/ibera.d.ts +52 -0
  180. package/dist/vaults/lst/withdrawals/abis/ibera.d.ts.map +1 -0
  181. package/dist/vaults/lst/withdrawals/abis/index.d.ts +24 -0
  182. package/dist/vaults/lst/withdrawals/abis/index.d.ts.map +1 -0
  183. package/dist/vaults/lst/withdrawals/abis/kelp.d.ts +46 -0
  184. package/dist/vaults/lst/withdrawals/abis/kelp.d.ts.map +1 -0
  185. package/dist/vaults/lst/withdrawals/abis/kinetiq.d.ts +59 -0
  186. package/dist/vaults/lst/withdrawals/abis/kinetiq.d.ts.map +1 -0
  187. package/dist/vaults/lst/withdrawals/abis/lido.d.ts +53 -0
  188. package/dist/vaults/lst/withdrawals/abis/lido.d.ts.map +1 -0
  189. package/dist/vaults/lst/withdrawals/abis/lista.d.ts +47 -0
  190. package/dist/vaults/lst/withdrawals/abis/lista.d.ts.map +1 -0
  191. package/dist/vaults/lst/withdrawals/abis/mantle.d.ts +54 -0
  192. package/dist/vaults/lst/withdrawals/abis/mantle.d.ts.map +1 -0
  193. package/dist/vaults/lst/withdrawals/abis/primestaking.d.ts +57 -0
  194. package/dist/vaults/lst/withdrawals/abis/primestaking.d.ts.map +1 -0
  195. package/dist/vaults/lst/withdrawals/abis/puffer.d.ts +48 -0
  196. package/dist/vaults/lst/withdrawals/abis/puffer.d.ts.map +1 -0
  197. package/dist/vaults/lst/withdrawals/abis/renzo.d.ts +50 -0
  198. package/dist/vaults/lst/withdrawals/abis/renzo.d.ts.map +1 -0
  199. package/dist/vaults/lst/withdrawals/abis/staderEthx.d.ts +48 -0
  200. package/dist/vaults/lst/withdrawals/abis/staderEthx.d.ts.map +1 -0
  201. package/dist/vaults/lst/withdrawals/abis/staderMaticx.d.ts +50 -0
  202. package/dist/vaults/lst/withdrawals/abis/staderMaticx.d.ts.map +1 -0
  203. package/dist/vaults/lst/withdrawals/abis/stakewise.d.ts +47 -0
  204. package/dist/vaults/lst/withdrawals/abis/stakewise.d.ts.map +1 -0
  205. package/dist/vaults/lst/withdrawals/abis/stcelo.d.ts +24 -0
  206. package/dist/vaults/lst/withdrawals/abis/stcelo.d.ts.map +1 -0
  207. package/dist/vaults/lst/withdrawals/abis/swell.d.ts +66 -0
  208. package/dist/vaults/lst/withdrawals/abis/swell.d.ts.map +1 -0
  209. package/dist/vaults/lst/withdrawals/abis/trufin.d.ts +43 -0
  210. package/dist/vaults/lst/withdrawals/abis/trufin.d.ts.map +1 -0
  211. package/dist/vaults/lst/withdrawals/abis/valantis.d.ts +46 -0
  212. package/dist/vaults/lst/withdrawals/abis/valantis.d.ts.map +1 -0
  213. package/dist/vaults/lst/withdrawals/abis/yieldnest.d.ts +65 -0
  214. package/dist/vaults/lst/withdrawals/abis/yieldnest.d.ts.map +1 -0
  215. package/dist/vaults/lst/withdrawals/fetchPublic.d.ts +53 -0
  216. package/dist/vaults/lst/withdrawals/fetchPublic.d.ts.map +1 -0
  217. package/dist/vaults/lst/withdrawals/index.d.ts +5 -0
  218. package/dist/vaults/lst/withdrawals/index.d.ts.map +1 -0
  219. package/dist/vaults/lst/withdrawals/readers/beets.d.ts +13 -0
  220. package/dist/vaults/lst/withdrawals/readers/beets.d.ts.map +1 -0
  221. package/dist/vaults/lst/withdrawals/readers/behype.d.ts +15 -0
  222. package/dist/vaults/lst/withdrawals/readers/behype.d.ts.map +1 -0
  223. package/dist/vaults/lst/withdrawals/readers/benqi.d.ts +15 -0
  224. package/dist/vaults/lst/withdrawals/readers/benqi.d.ts.map +1 -0
  225. package/dist/vaults/lst/withdrawals/readers/berapaw.d.ts +13 -0
  226. package/dist/vaults/lst/withdrawals/readers/berapaw.d.ts.map +1 -0
  227. package/dist/vaults/lst/withdrawals/readers/empty.d.ts +21 -0
  228. package/dist/vaults/lst/withdrawals/readers/empty.d.ts.map +1 -0
  229. package/dist/vaults/lst/withdrawals/readers/erc7540.d.ts +22 -0
  230. package/dist/vaults/lst/withdrawals/readers/erc7540.d.ts.map +1 -0
  231. package/dist/vaults/lst/withdrawals/readers/ethenaCooldown.d.ts +13 -0
  232. package/dist/vaults/lst/withdrawals/readers/ethenaCooldown.d.ts.map +1 -0
  233. package/dist/vaults/lst/withdrawals/readers/etherfi.d.ts +13 -0
  234. package/dist/vaults/lst/withdrawals/readers/etherfi.d.ts.map +1 -0
  235. package/dist/vaults/lst/withdrawals/readers/ibera.d.ts +3 -0
  236. package/dist/vaults/lst/withdrawals/readers/ibera.d.ts.map +1 -0
  237. package/dist/vaults/lst/withdrawals/readers/index.d.ts +7 -0
  238. package/dist/vaults/lst/withdrawals/readers/index.d.ts.map +1 -0
  239. package/dist/vaults/lst/withdrawals/readers/kelp.d.ts +21 -0
  240. package/dist/vaults/lst/withdrawals/readers/kelp.d.ts.map +1 -0
  241. package/dist/vaults/lst/withdrawals/readers/kinetiq.d.ts +13 -0
  242. package/dist/vaults/lst/withdrawals/readers/kinetiq.d.ts.map +1 -0
  243. package/dist/vaults/lst/withdrawals/readers/lair.d.ts +23 -0
  244. package/dist/vaults/lst/withdrawals/readers/lair.d.ts.map +1 -0
  245. package/dist/vaults/lst/withdrawals/readers/lido.d.ts +16 -0
  246. package/dist/vaults/lst/withdrawals/readers/lido.d.ts.map +1 -0
  247. package/dist/vaults/lst/withdrawals/readers/lista.d.ts +18 -0
  248. package/dist/vaults/lst/withdrawals/readers/lista.d.ts.map +1 -0
  249. package/dist/vaults/lst/withdrawals/readers/mantle.d.ts +18 -0
  250. package/dist/vaults/lst/withdrawals/readers/mantle.d.ts.map +1 -0
  251. package/dist/vaults/lst/withdrawals/readers/primestaking.d.ts +3 -0
  252. package/dist/vaults/lst/withdrawals/readers/primestaking.d.ts.map +1 -0
  253. package/dist/vaults/lst/withdrawals/readers/puffer.d.ts +17 -0
  254. package/dist/vaults/lst/withdrawals/readers/puffer.d.ts.map +1 -0
  255. package/dist/vaults/lst/withdrawals/readers/renzo.d.ts +16 -0
  256. package/dist/vaults/lst/withdrawals/readers/renzo.d.ts.map +1 -0
  257. package/dist/vaults/lst/withdrawals/readers/shared.d.ts +56 -0
  258. package/dist/vaults/lst/withdrawals/readers/shared.d.ts.map +1 -0
  259. package/dist/vaults/lst/withdrawals/readers/staderEthx.d.ts +15 -0
  260. package/dist/vaults/lst/withdrawals/readers/staderEthx.d.ts.map +1 -0
  261. package/dist/vaults/lst/withdrawals/readers/staderMaticx.d.ts +18 -0
  262. package/dist/vaults/lst/withdrawals/readers/staderMaticx.d.ts.map +1 -0
  263. package/dist/vaults/lst/withdrawals/readers/stakewise.d.ts +26 -0
  264. package/dist/vaults/lst/withdrawals/readers/stakewise.d.ts.map +1 -0
  265. package/dist/vaults/lst/withdrawals/readers/stcelo.d.ts +16 -0
  266. package/dist/vaults/lst/withdrawals/readers/stcelo.d.ts.map +1 -0
  267. package/dist/vaults/lst/withdrawals/readers/swell.d.ts +18 -0
  268. package/dist/vaults/lst/withdrawals/readers/swell.d.ts.map +1 -0
  269. package/dist/vaults/lst/withdrawals/readers/trufin.d.ts +19 -0
  270. package/dist/vaults/lst/withdrawals/readers/trufin.d.ts.map +1 -0
  271. package/dist/vaults/lst/withdrawals/readers/valantis.d.ts +11 -0
  272. package/dist/vaults/lst/withdrawals/readers/valantis.d.ts.map +1 -0
  273. package/dist/vaults/lst/withdrawals/readers/yieldnest.d.ts +11 -0
  274. package/dist/vaults/lst/withdrawals/readers/yieldnest.d.ts.map +1 -0
  275. package/dist/vaults/lst/withdrawals/registry.d.ts +46 -0
  276. package/dist/vaults/lst/withdrawals/registry.d.ts.map +1 -0
  277. package/dist/vaults/lst/withdrawals/types.d.ts +74 -0
  278. package/dist/vaults/lst/withdrawals/types.d.ts.map +1 -0
  279. package/dist/vaults/lst/yieldBinding.d.ts +26 -0
  280. package/dist/vaults/lst/yieldBinding.d.ts.map +1 -0
  281. package/dist/vaults/morpho/types.d.ts +2 -1
  282. package/dist/vaults/morpho/types.d.ts.map +1 -1
  283. package/dist/vaults/savings/abis/index.d.ts +12 -0
  284. package/dist/vaults/savings/abis/index.d.ts.map +1 -0
  285. package/dist/vaults/savings/abis/shared.d.ts +33 -0
  286. package/dist/vaults/savings/abis/shared.d.ts.map +1 -0
  287. package/dist/vaults/savings/fetchPublic.d.ts +22 -0
  288. package/dist/vaults/savings/fetchPublic.d.ts.map +1 -0
  289. package/dist/vaults/savings/index.d.ts +4 -0
  290. package/dist/vaults/savings/index.d.ts.map +1 -0
  291. package/dist/vaults/savings/readers/erc4626.d.ts +25 -0
  292. package/dist/vaults/savings/readers/erc4626.d.ts.map +1 -0
  293. package/dist/vaults/savings/readers/index.d.ts +16 -0
  294. package/dist/vaults/savings/readers/index.d.ts.map +1 -0
  295. package/dist/vaults/savings/readers/shared.d.ts +44 -0
  296. package/dist/vaults/savings/readers/shared.d.ts.map +1 -0
  297. package/dist/vaults/savings/registry.d.ts +69 -0
  298. package/dist/vaults/savings/registry.d.ts.map +1 -0
  299. package/dist/vaults/savings/types.d.ts +111 -0
  300. package/dist/vaults/savings/types.d.ts.map +1 -0
  301. package/dist/vaults/savings/yieldBinding.d.ts +19 -0
  302. package/dist/vaults/savings/yieldBinding.d.ts.map +1 -0
  303. package/dist/vaults/silo/types.d.ts +2 -1
  304. package/dist/vaults/silo/types.d.ts.map +1 -1
  305. package/dist/vaults/yield/annualize.d.ts +62 -0
  306. package/dist/vaults/yield/annualize.d.ts.map +1 -0
  307. package/dist/vaults/yield/index.d.ts +3 -0
  308. package/dist/vaults/yield/index.d.ts.map +1 -0
  309. package/dist/vaults/yield/sharePrice.d.ts +21 -0
  310. package/dist/vaults/yield/sharePrice.d.ts.map +1 -0
  311. package/dist/yields/intrinsic/fetchers/ankr.d.ts +3 -0
  312. package/dist/yields/intrinsic/fetchers/ankr.d.ts.map +1 -0
  313. package/dist/yields/intrinsic/fetchers/berapaw.d.ts +3 -0
  314. package/dist/yields/intrinsic/fetchers/berapaw.d.ts.map +1 -0
  315. package/dist/yields/intrinsic/fetchers/defillama.d.ts +2 -0
  316. package/dist/yields/intrinsic/fetchers/defillama.d.ts.map +1 -0
  317. package/dist/yields/intrinsic/fetchers/dinero.d.ts +3 -0
  318. package/dist/yields/intrinsic/fetchers/dinero.d.ts.map +1 -0
  319. package/dist/yields/intrinsic/fetchers/etherfi.d.ts +1 -0
  320. package/dist/yields/intrinsic/fetchers/etherfi.d.ts.map +1 -1
  321. package/dist/yields/intrinsic/fetchers/infrared.d.ts +4 -0
  322. package/dist/yields/intrinsic/fetchers/infrared.d.ts.map +1 -0
  323. package/dist/yields/intrinsic/fetchers/kinetiq.d.ts +3 -0
  324. package/dist/yields/intrinsic/fetchers/kinetiq.d.ts.map +1 -0
  325. package/dist/yields/intrinsic/fetchers/lair.d.ts +3 -0
  326. package/dist/yields/intrinsic/fetchers/lair.d.ts.map +1 -0
  327. package/dist/yields/intrinsic/fetchers/lista.d.ts +3 -0
  328. package/dist/yields/intrinsic/fetchers/lista.d.ts.map +1 -0
  329. package/dist/yields/intrinsic/fetchers/lombard.d.ts +3 -0
  330. package/dist/yields/intrinsic/fetchers/lombard.d.ts.map +1 -0
  331. package/dist/yields/intrinsic/fetchers/primestaking.d.ts +3 -0
  332. package/dist/yields/intrinsic/fetchers/primestaking.d.ts.map +1 -0
  333. package/dist/yields/intrinsic/fetchers/solv.d.ts +3 -0
  334. package/dist/yields/intrinsic/fetchers/solv.d.ts.map +1 -0
  335. package/dist/yields/intrinsic/fetchers/stcelo.d.ts +3 -0
  336. package/dist/yields/intrinsic/fetchers/stcelo.d.ts.map +1 -0
  337. package/dist/yields/intrinsic/fetchers/swBTC.d.ts +3 -0
  338. package/dist/yields/intrinsic/fetchers/swBTC.d.ts.map +1 -0
  339. package/dist/yields/intrinsic/fetchers/trufin.d.ts +1 -0
  340. package/dist/yields/intrinsic/fetchers/trufin.d.ts.map +1 -1
  341. package/dist/yields/intrinsic/fetchers/valantis.d.ts +3 -0
  342. package/dist/yields/intrinsic/fetchers/valantis.d.ts.map +1 -0
  343. package/dist/yields/intrinsic/fetchers/yieldnest.d.ts.map +1 -1
  344. package/dist/yields/intrinsic/index.d.ts.map +1 -1
  345. package/package.json +5 -5
  346. package/dist/ccip-SQXTDOS7.js +0 -5
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Normalised shape for a single pending withdrawal request, uniform
3
+ * across all LST protocols regardless of underlying mechanism
4
+ * (fixed-cooldown vs queue-finalization vs ERC-7540).
5
+ *
6
+ * Consumers (UI, worker-api) treat the list as a single bucket;
7
+ * protocol-specific fields like `queuePosition` are populated when
8
+ * available and ignored otherwise.
9
+ *
10
+ * See [../LST_WITHDRAWAL_QUEUES.md](../LST_WITHDRAWAL_QUEUES.md) for
11
+ * the per-protocol enumeration ABI and the
12
+ * [GAPS.md](../../GAPS.md) section A for the design intent.
13
+ */
14
+ export interface LstWithdrawalRequest {
15
+ /** LST share-token address the request was made against. */
16
+ lst: string;
17
+ /** Brand label — `Lido`, `EtherFi`, `Renzo`, … */
18
+ brand: string;
19
+ /** Symbol — `wstETH`, `weETH`, `ezETH`, … */
20
+ symbol: string;
21
+ /** Protocol-native request identifier (NFT tokenId, queue index,
22
+ * ERC-7540 requestId, …). Encoded as a string for cross-protocol
23
+ * uniformity. */
24
+ requestId: string;
25
+ /** Raw underlying amount the request will return on claim. Wei-like
26
+ * integer string. Some protocols only know this at claim time
27
+ * (queue-finalization with floating finalization rate) — those
28
+ * surface the **expected** amount at request time. */
29
+ amountUnderlying: string;
30
+ /** Status discriminator. */
31
+ status: LstWithdrawalStatus;
32
+ /** Unix seconds when the request becomes claimable. Set for
33
+ * fixed-cooldown protocols where the deadline is deterministic.
34
+ * Unset for queue-finalization protocols (use `queuePosition` +
35
+ * `etaSeconds` instead) and ERC-7540 (use `status` directly). */
36
+ readyAt?: number;
37
+ /** Unix seconds when the claim window closes. Currently only used
38
+ * by sAVAX (15-day cooldown + 2-day claim window). After this
39
+ * timestamp the request transitions to `expired` and the unlock
40
+ * is forfeited unless admin recovery is triggered. */
41
+ expiresAt?: number;
42
+ /** Position in the protocol's queue, relative to the finalization
43
+ * frontier. Set for queue-finalization protocols. Positive values
44
+ * mean "still pending"; zero or negative means "finalized". */
45
+ queuePosition?: number;
46
+ /** Off-chain estimate of seconds-to-claim. Only set when the
47
+ * orchestrator received a finalization-rate sample (TODO: not
48
+ * yet wired). Frontier-based protocols can show this when
49
+ * available. */
50
+ etaSeconds?: number;
51
+ }
52
+ /** Status discriminator for a withdrawal request. */
53
+ export type LstWithdrawalStatus =
54
+ /** Submitted; not yet claimable. */
55
+ 'pending'
56
+ /** Ready to claim now. */
57
+ | 'claimable'
58
+ /** Already claimed (typically pruned from the list — kept for
59
+ * protocols that surface historical entries via the same getter). */
60
+ | 'claimed'
61
+ /** Window expired without being claimed. Only meaningful for
62
+ * sAVAX-style protocols with a finite claim window. */
63
+ | 'expired';
64
+ /** Withdrawal-reader implementation kind — drives which enumeration
65
+ * function the user is queried against. */
66
+ export type LstWithdrawalReaderKind = 'lidoQueue' | 'etherfiNft' | 'yieldNestNft' | 'staderEthxQueue' | 'staderMaticXQueue' | 'renzoQueue' | 'kelpQueue' | 'benqiSavaxQueue' | 'beetsStSQueue' | 'hyperbeatBeHype7540' | 'erc7540' | 'ethenaCooldown' | 'swellNft' | 'stakeWiseSubgraph' | 'mantleCallerSuppliedIds' | 'pufferCallerSuppliedIds' | 'trufinCallerSuppliedIds' | 'lairCallerSuppliedIds' | 'stceloAccountQueue' | 'kinetiqQueue' | 'beHypeQueue' | 'valantisBurnQueue' | 'listaQueue' | 'iberaQueue' | 'primeStakingQueue' | 'berapawRedeemQueue' | 'eventsOnly' | 'noQueue' | 'unverified';
67
+ /** Map keyed by lowercased LST share-token address. The orchestrator
68
+ * fetches all LSTs on a chain in parallel and returns this map
69
+ * (possibly with empty arrays for LSTs the user has no requests
70
+ * against). */
71
+ export type LstWithdrawalRequestsByLst = {
72
+ [lstAddress: string]: LstWithdrawalRequest[];
73
+ };
74
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/vaults/lst/withdrawals/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,GAAG,EAAE,MAAM,CAAA;IACX,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd;;sBAEkB;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB;;;2DAGuD;IACvD,gBAAgB,EAAE,MAAM,CAAA;IACxB,4BAA4B;IAC5B,MAAM,EAAE,mBAAmB,CAAA;IAC3B;;;sEAGkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;2DAGuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;oEAEgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;qBAGiB;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qDAAqD;AACrD,MAAM,MAAM,mBAAmB;AAC7B,oCAAoC;AAClC,SAAS;AACX,0BAA0B;GACxB,WAAW;AACb;sEACsE;GACpE,SAAS;AACX;wDACwD;GACtD,SAAS,CAAA;AAEb;4CAC4C;AAC5C,MAAM,MAAM,uBAAuB,GAC/B,WAAW,GACX,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,eAAe,GACf,qBAAqB,GACrB,SAAS,GACT,gBAAgB,GAChB,UAAU,GACV,mBAAmB,GACnB,yBAAyB,GACzB,yBAAyB,GACzB,yBAAyB,GACzB,uBAAuB,GACvB,oBAAoB,GACpB,cAAc,GACd,aAAa,GACb,mBAAmB,GACnB,YAAY,GACZ,YAAY,GACZ,mBAAmB,GACnB,oBAAoB,GACpB,YAAY,GACZ,SAAS,GACT,YAAY,CAAA;AAEhB;;;gBAGgB;AAChB,MAAM,MAAM,0BAA0B,GAAG;IACvC,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAA;CAC7C,CAAA"}
@@ -0,0 +1,26 @@
1
+ import type { LstRegistryEntry } from './registry';
2
+ /**
3
+ * Runs every yield source referenced by an LST registry slice and
4
+ * returns a flat `address → apr%` map.
5
+ *
6
+ * Two pieces of complexity wrapped here:
7
+ *
8
+ * 1. **Dedup** — many registry entries can point at the same
9
+ * `YieldFetcher` instance (today only one does, but the wstETH /
10
+ * weETH composition pattern lights this up). We collect unique
11
+ * fetcher refs, run each `safeFetch` once, and reuse the result
12
+ * when reading per-entry keys.
13
+ *
14
+ * 2. **weETH special case** — `createWeethFetcher` needs a wstETH
15
+ * promise as input because EtherFi's APR is `wstETH APR + LRT2
16
+ * bonus`. We compute it here using the same wstETH result we
17
+ * already fetched (or a fresh one) — the registry can't pre-bind
18
+ * it cleanly because `wstethFetcher` is a `YieldFetcher` not a
19
+ * `Promise`.
20
+ *
21
+ * Returns `{ [shareAddressLowercase]: aprPercent }`. Missing keys
22
+ * become `0` downstream — never `undefined` — so the parser doesn't
23
+ * have to branch.
24
+ */
25
+ export declare const resolveYieldApr: (entries: LstRegistryEntry[]) => Promise<Record<string, number>>;
26
+ //# sourceMappingURL=yieldBinding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yieldBinding.d.ts","sourceRoot":"","sources":["../../../src/vaults/lst/yieldBinding.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,gBAAgB,EAAE,KAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoDhC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { GenericCurrency } from '../../types/general';
2
+ import type { VaultClassificationFields } from '../classification';
2
3
  /** Curator metadata as surfaced by the Morpho API. */
3
4
  export interface VaultCuratorMeta {
4
5
  /** Curator slug, e.g. `gauntlet`, `kpk`, `steakhouse`. */
@@ -25,7 +26,7 @@ export interface VaultCuratorMeta {
25
26
  * than underlying — differs from Fluid/Gearbox where one vault per
26
27
  * underlying is the norm.
27
28
  */
28
- export interface MorphoVault {
29
+ export interface MorphoVault extends VaultClassificationFields {
29
30
  /** MetaMorpho vault (share token) contract address, lowercased. */
30
31
  address: string;
31
32
  /** Lowercased underlying ERC20 address. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vaults/morpho/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAA;IACV,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;IACd;;mDAE+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ;uEACmE;IACnE,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAEhB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAA;IAEnB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAA;IAEnB,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB;iEAC6D;IAC7D,WAAW,EAAE,OAAO,CAAA;IAEpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;8EAE0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;kCAC8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;kBAEc;IACd,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAE7B,oEAAoE;IACpE,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAA;IAEtB;;;;;4EAKwE;IACxE,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,yCAAyC;IACzC,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAAA;CACpC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vaults/morpho/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAElE,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAA;IACV,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAY,SAAQ,yBAAyB;IAC5D,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;IACd;;mDAE+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ;uEACmE;IACnE,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAEhB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAA;IAEnB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAA;IAEnB,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB;iEAC6D;IAC7D,WAAW,EAAE,OAAO,CAAA;IAEpB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;8EAE0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;kCAC8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;kBAEc;IACd,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAE7B,oEAAoE;IACpE,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAA;IAEtB;;;;;4EAKwE;IACxE,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,yCAAyC;IACzC,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAAA;CACpC,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Minimal ABI fragments for ERC-4626 savings vaults. Only the read
3
+ * surface we actually call is included.
4
+ *
5
+ * Every savings entry today uses the same generic ERC-4626 reader so
6
+ * a single `shared.ts` is sufficient. When a future entry needs a
7
+ * custom getter (e.g. a `floorPrice()` for a bond-shaped vault),
8
+ * add a per-protocol file (`abis/<protocol>.ts`) following the LST
9
+ * provider's pattern in [../../lst/abis/](../../lst/abis/).
10
+ */
11
+ export * from './shared';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vaults/savings/abis/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,cAAc,UAAU,CAAA"}
@@ -0,0 +1,33 @@
1
+ /** Standard ERC-20 `totalSupply()`. */
2
+ export declare const TotalSupplyAbi: readonly [{
3
+ readonly name: "totalSupply";
4
+ readonly type: "function";
5
+ readonly stateMutability: "view";
6
+ readonly inputs: readonly [];
7
+ readonly outputs: readonly [{
8
+ readonly type: "uint256";
9
+ }];
10
+ }];
11
+ /** ERC-4626 read surface — `totalAssets()` + `convertToAssets(uint256)`. */
12
+ export declare const Erc4626ReadAbi: readonly [{
13
+ readonly name: "totalAssets";
14
+ readonly type: "function";
15
+ readonly stateMutability: "view";
16
+ readonly inputs: readonly [];
17
+ readonly outputs: readonly [{
18
+ readonly type: "uint256";
19
+ }];
20
+ }, {
21
+ readonly name: "convertToAssets";
22
+ readonly type: "function";
23
+ readonly stateMutability: "view";
24
+ readonly inputs: readonly [{
25
+ readonly type: "uint256";
26
+ readonly name: "shares";
27
+ }];
28
+ readonly outputs: readonly [{
29
+ readonly type: "uint256";
30
+ readonly name: "assets";
31
+ }];
32
+ }];
33
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/vaults/savings/abis/shared.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,eAAO,MAAM,cAAc;;;;;;;;EAQjB,CAAA;AAEV,4EAA4E;AAC5E,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;EAejB,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { MulticallRetryFunction, GenericTokenList } from '../../types';
2
+ import type { SavingsVaults } from './types';
3
+ /**
4
+ * One-shot fetcher for all savings vaults on a chain.
5
+ *
6
+ * Two parallel I/O legs that both feed the same output map:
7
+ *
8
+ * 1. **On-chain leg** — every reader's calls (3 per entry:
9
+ * `totalAssets`, `totalSupply`, `convertToAssets(10**decimals)`)
10
+ * are concatenated into a single `multicallRetry` payload. The
11
+ * response is sliced back into per-entry chunks and parsed;
12
+ * per-entry failures are silently dropped.
13
+ *
14
+ * 2. **APR leg** — `resolveYieldApr` dedups the registry's
15
+ * `YieldFetcher` refs and runs each once.
16
+ *
17
+ * Returns `{}` when the chain has no registry entries.
18
+ */
19
+ export declare const fetchSavingsVaults: (chainId: string, multicallRetry: MulticallRetryFunction, prices?: {
20
+ [asset: string]: number;
21
+ }, tokenList?: GenericTokenList) => Promise<SavingsVaults>;
22
+ //# sourceMappingURL=fetchPublic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchPublic.d.ts","sourceRoot":"","sources":["../../../src/vaults/savings/fetchPublic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAKtE,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,SAAS,CAAA;AAI1D;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,GAC7B,SAAS,MAAM,EACf,gBAAgB,sBAAsB,EACtC,SAAQ;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EACxC,YAAW,gBAAqB,KAC/B,OAAO,CAAC,aAAa,CAyGvB,CAAA"}
@@ -0,0 +1,4 @@
1
+ export { fetchSavingsVaults } from './fetchPublic';
2
+ export type { SavingsVault, SavingsVaults, SavingsWithdrawalMode, } from './types';
3
+ export { SAVINGS_REGISTRY, getSavingsRegistry, type SavingsRegistryEntry, } from './registry';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/vaults/savings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,qBAAqB,GACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,oBAAoB,GAC1B,MAAM,YAAY,CAAA"}
@@ -0,0 +1,25 @@
1
+ import type { SavingsRegistryEntry } from '../registry';
2
+ import { type SavingsReader } from './shared';
3
+ /**
4
+ * Generic ERC-4626 reader — three calls per entry:
5
+ * 1. `totalAssets()`
6
+ * 2. `totalSupply()`
7
+ * 3. `convertToAssets(10**shareDecimals)`
8
+ *
9
+ * The third gives `assets per 1 share` in **raw underlying units**.
10
+ * To normalise to a 1e18-scaled "underlying per share" rate, we
11
+ * divide by `10**underlyingDecimals`.
12
+ *
13
+ * For vaults where share and underlying decimals match (the
14
+ * ERC-4626 convention) this collapses to `convertToAssets(1e18) *
15
+ * 1e18 / 1e18`. For yUSD (18-d shares over 6-d USDC) it correctly
16
+ * scales 1e6 → 1e18.
17
+ *
18
+ * Every savings entry today uses this reader. When a future entry
19
+ * diverges (rebasing-via-wrapper for srUSD, bond floor for USD0++,
20
+ * oracle-priced for RWA), add a sibling reader file under `readers/`
21
+ * mirroring [../../lst/readers/](../../lst/readers/) and extend the
22
+ * dispatch in [./index.ts](./index.ts).
23
+ */
24
+ export declare const readerErc4626: (entry: SavingsRegistryEntry) => SavingsReader;
25
+ //# sourceMappingURL=erc4626.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc4626.d.ts","sourceRoot":"","sources":["../../../../src/vaults/savings/readers/erc4626.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,UAAU,CAAA;AAEhE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,oBAAoB,KAAG,aAiC3D,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { SavingsRegistryEntry } from '../registry';
2
+ import type { SavingsReader } from './shared';
3
+ export type { SavingsCall, SavingsOnChainState, SavingsReader } from './shared';
4
+ export { ONE_E18, toBigInt } from './shared';
5
+ /**
6
+ * Dispatch a registry entry to its reader.
7
+ *
8
+ * Today every savings entry uses the generic ERC-4626 reader. When a
9
+ * future entry needs a custom shape (e.g. wrapped-rebasing for srUSD,
10
+ * `floorPrice()` for USD0++, oracle-priced for RWA), add a
11
+ * `reader` discriminant to {@link SavingsRegistryEntry} and a case
12
+ * here — same pattern as
13
+ * [../../lst/readers/index.ts](../../lst/readers/index.ts).
14
+ */
15
+ export declare const buildReader: (entry: SavingsRegistryEntry) => SavingsReader;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/vaults/savings/readers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAE5C;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,oBAAoB,KAAG,aACpC,CAAA"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Shared types and helpers for savings-vault readers.
3
+ *
4
+ * Mirrors [../../lst/readers/shared.ts](../../lst/readers/shared.ts)
5
+ * so cross-provider tooling (orchestrator slicing, parser shape) stays
6
+ * uniform.
7
+ */
8
+ /** 10**18 — scaling factor for normalised exchange rates. */
9
+ export declare const ONE_E18: bigint;
10
+ /** One multicall item — `{ address, name, params }` matched against
11
+ * a parallel ABI array, identical to every other vault provider. */
12
+ export interface SavingsCall {
13
+ address: string;
14
+ name: string;
15
+ params: readonly unknown[];
16
+ }
17
+ /** What a reader produces after consuming its multicall slice. */
18
+ export interface SavingsOnChainState {
19
+ /** Total underlying held, raw. */
20
+ totalAssets: bigint;
21
+ /** Total shares minted, raw. */
22
+ totalSupply: bigint;
23
+ /** 1e18-scaled exchange rate: 1 share → X underlying.
24
+ * Normalised regardless of share decimals. */
25
+ exchangeRate: bigint;
26
+ }
27
+ /** A self-contained slice of the multicall payload plus a parser
28
+ * that consumes exactly `calls.length` results. */
29
+ export interface SavingsReader {
30
+ calls: SavingsCall[];
31
+ /** ABI per call slot. `any[]` to accept `as const` fragments without
32
+ * per-call casting — the downstream multicall API is `any`-typed. */
33
+ abis: any[];
34
+ /** Returns `undefined` on parse failure so the orchestrator can
35
+ * skip the entry without poisoning the batch. */
36
+ parse: (slice: unknown[]) => SavingsOnChainState | undefined;
37
+ }
38
+ /**
39
+ * Safely coerce a multicall return cell to `bigint`. Failures surface
40
+ * as `undefined` so the parser can bail on the whole entry without
41
+ * poisoning the batch.
42
+ */
43
+ export declare const toBigInt: (v: unknown) => bigint | undefined;
44
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/vaults/savings/readers/shared.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,OAAO,QAAa,CAAA;AAEjC;qEACqE;AACrE,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;CAC3B;AAED,kEAAkE;AAClE,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAA;IACnB;mDAC+C;IAC/C,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;oDACoD;AACpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB;0EACsE;IAEtE,IAAI,EAAE,GAAG,EAAE,CAAA;IACX;sDACkD;IAClD,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,mBAAmB,GAAG,SAAS,CAAA;CAC7D;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,MAAM,GAAG,SAgB9C,CAAA"}
@@ -0,0 +1,69 @@
1
+ import type { YieldFetcher } from '../../yields/types';
2
+ import type { SavingsWithdrawalMode } from './types';
3
+ /**
4
+ * Static registry entry for a savings vault.
5
+ *
6
+ * Per-chain entries live in {@link SAVINGS_REGISTRY}. Each pins the
7
+ * on-chain identity (address, decimals), brand metadata, the
8
+ * withdrawal mechanism (drives UX), and a pointer to the existing
9
+ * intrinsic-yield fetcher whose APR is surfaced as `supplyRate`.
10
+ *
11
+ * No `reader` discriminant — every savings entry uses the same
12
+ * generic ERC-4626 reader. If a future entry diverges (e.g.
13
+ * rebasing-via-wrapper for srUSD), add a kind here and extend
14
+ * [`readers/`](./readers/).
15
+ */
16
+ export interface SavingsRegistryEntry {
17
+ /** Share-token contract address, lowercased. */
18
+ address: string;
19
+ /** Underlying ERC-20 address, lowercased. */
20
+ underlying: string;
21
+ /** Share-token symbol — usually the on-chain `symbol()`. */
22
+ symbol: string;
23
+ /** Brand label (`Ethena`, `Sky`, `Maker`, …). */
24
+ brand: string;
25
+ /** Share decimals. Most are 18; Maple syrup* are 6. */
26
+ decimals: number;
27
+ /** Underlying ERC-20 decimals. Defaults to `decimals` when absent
28
+ * — every ERC-4626 vault except a handful keep share/underlying
29
+ * decimals aligned. yUSD breaks this (18-decimal shares over
30
+ * 6-decimal USDC) so it must set this explicitly. */
31
+ underlyingDecimals?: number;
32
+ /** True if the share token rebases. False for nearly every
33
+ * savings vault — the rebase lives on the underlying. */
34
+ isRebasing: boolean;
35
+ /** Whether deposits are permissionless. */
36
+ isMintable: boolean;
37
+ /** Mint entry — undefined ⇒ share token itself (ERC-4626
38
+ * `deposit/mint`). */
39
+ mintContract?: string;
40
+ /** Withdrawal mechanism. */
41
+ withdrawalMode: SavingsWithdrawalMode;
42
+ /** Fixed cooldown in seconds for `fixed-cooldown` mode. Pinned
43
+ * here; read on-chain if the precise governance-current value is
44
+ * needed. */
45
+ withdrawalCooldownSeconds?: number;
46
+ /** Existing intrinsic-yield fetcher whose APR is surfaced as
47
+ * `supplyRate`. Optional — `sDAI` for example has no dedicated
48
+ * fetcher today; entry still works, `supplyRate` defaults to 0. */
49
+ yieldFetcher?: YieldFetcher;
50
+ /** Key inside the yield fetcher's `YieldResult` to read. Yield
51
+ * fetchers return maps keyed by symbol or by a free-text label;
52
+ * this is the exact key. */
53
+ yieldKey?: string;
54
+ }
55
+ /**
56
+ * Per-chain savings-vault allowlist. Assembled at module load from
57
+ * single-chain entries plus the expanded `MULTI_CHAIN_GROUPS`.
58
+ *
59
+ * See [TIMELOCKS_AND_CHAINS.md](./TIMELOCKS_AND_CHAINS.md) for the
60
+ * verification notes and
61
+ * [../lst/EXPANSION_PLAN.md](../lst/EXPANSION_PLAN.md) for the
62
+ * rollout order.
63
+ */
64
+ export declare const SAVINGS_REGISTRY: {
65
+ [chainId: string]: SavingsRegistryEntry[];
66
+ };
67
+ /** Returns the registry entries for a chain, or `[]` when unsupported. */
68
+ export declare const getSavingsRegistry: (chainId: string) => SavingsRegistryEntry[];
69
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/vaults/savings/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAgBtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,oBAAoB;IACnC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAA;IAChB;;;0DAGsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;8DAC0D;IAC1D,UAAU,EAAE,OAAO,CAAA;IACnB,2CAA2C;IAC3C,UAAU,EAAE,OAAO,CAAA;IACnB;2BACuB;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,cAAc,EAAE,qBAAqB,CAAA;IACrC;;kBAEc;IACd,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC;;wEAEoE;IACpE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;iCAE6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AA2UD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAAA;CAapE,CAAA;AAEN,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,oBAAoB,EACxC,CAAA"}
@@ -0,0 +1,111 @@
1
+ import { GenericCurrency } from '../../types/general';
2
+ import type { VaultClassificationFields } from '../classification';
3
+ /**
4
+ * Withdrawal mode for a savings vault. Drives UX: instant for plain
5
+ * ERC-4626 wrappers, fixed-cooldown for Ethena-style sUSDe, queued for
6
+ * Maple syrup pools, etc.
7
+ *
8
+ * Identical enumeration to `LstWithdrawalMode` from `vaults/lst/` —
9
+ * kept separate so the two providers can evolve independently without
10
+ * one provider's withdrawal taxonomy creep affecting the other.
11
+ */
12
+ export type SavingsWithdrawalMode = 'instant' | 'fixed-cooldown' | 'queued' | 'request-based' | 'fee-or-queued';
13
+ /**
14
+ * Parsed savings-vault entry.
15
+ *
16
+ * Models ERC-4626 yield wrappers — sUSDe, sUSDS, sDAI, stUSD, sUSDF,
17
+ * siUSD, savUSD, syrupUSDC/USDT, wstUSR, yUSD, yoETH, … — under a
18
+ * uniform shape. Structurally compatible with
19
+ * [`buildVaultLookup`](../lookup.ts) (same load-bearing fields as
20
+ * `LstShareToken`, `FluidFToken`, `EulerEarnVault`).
21
+ *
22
+ * Most entries are real ERC-4626 (asset-keyed share token with
23
+ * `convertToAssets` / `totalAssets`). A few wrap a rebasing
24
+ * underlying (wstUSR, wsrUSD); those are still 4626 on the wrapper
25
+ * but their `asset()` returns a rebasing token, which downstream
26
+ * `priceUsd` math should be aware of.
27
+ */
28
+ export interface SavingsVault extends VaultClassificationFields {
29
+ /** Share-token contract address, lowercased. */
30
+ address: string;
31
+ /** Underlying ERC-20 address, lowercased. */
32
+ underlying: string;
33
+ /** Share-token symbol, e.g. `sUSDe`, `sUSDS`, `sDAI`. */
34
+ symbol: string;
35
+ /** Share-token name as returned by `name()`, or a falsy-safe
36
+ * fallback `${brand} ${symbol}`. */
37
+ name: string;
38
+ /** Cross-provider UI label — `${brand} ${symbol}`
39
+ * (e.g. `Ethena sUSDe`, `Sky sUSDS`). Always non-empty. */
40
+ displayName: string;
41
+ /** Brand label — `Ethena`, `Sky`, `Maker`, `Angle`, `Falcon`, … */
42
+ brand: string;
43
+ /** Alias for `brand` to match `curatorName` on the other providers'
44
+ * vault types — keeps cross-provider UI code uniform. */
45
+ curatorName: string;
46
+ /** Share decimals (most are 18; Maple syrup* are 6). */
47
+ decimals: number;
48
+ /** Total underlying held, raw integer (wei-like) as string. From
49
+ * `totalAssets()`. */
50
+ totalAssets: string;
51
+ /** Total shares minted, raw integer as string. */
52
+ totalSupply: string;
53
+ /** Raw `convertToShares(10**decimals)` — 1 underlying → X shares. */
54
+ convertToShares: string;
55
+ /** Raw `convertToAssets(10**decimals)` — 1 share → X underlying. */
56
+ convertToAssets: string;
57
+ /** 1e18-scaled exchange rate: 1 share → X underlying. Derived from
58
+ * `convertToAssets(10**decimals)` regardless of share decimals. */
59
+ exchangeRate: string;
60
+ /** Supply APR in percent (e.g. `7.42` = 7.42 %). Sourced from the
61
+ * matching intrinsic-yield fetcher. */
62
+ supplyRate: number;
63
+ /** Extra rewards APR in percent — usually 0; populated when the
64
+ * protocol layers a separate reward stream on top. */
65
+ rewardsRate: number;
66
+ /** Sum of `supplyRate + rewardsRate` — what a depositor actually
67
+ * earns. */
68
+ depositRate: number;
69
+ /** Always true for this provider — every entry is ERC-4626. Kept
70
+ * for API parity with `LstShareToken.isErc4626`. */
71
+ isErc4626: true;
72
+ /** Whether the share token itself rebases. False for nearly every
73
+ * savings vault (they're the non-rebasing wrapper); rebasing
74
+ * surfaces sit on the underlying (e.g. USDe inside sUSDe). */
75
+ isRebasing: boolean;
76
+ /** Whether deposits are permissionless on-chain. False for entries
77
+ * whose mint surface is allowlist-gated. */
78
+ isMintable: boolean;
79
+ /** Mint entry — usually equals `address` (deposit on the share
80
+ * token directly via ERC-4626 `deposit`/`mint`). May differ for
81
+ * protocols with a dedicated minter / zap contract. */
82
+ mintContract?: string;
83
+ /** Withdrawal mechanism. */
84
+ withdrawalMode: SavingsWithdrawalMode;
85
+ /** Fixed cooldown in seconds for `fixed-cooldown` mode. Some
86
+ * protocols (Ethena, Avant) expose this on-chain via
87
+ * `cooldownDuration()`. Static value here pinned in the registry —
88
+ * re-read on-chain if you need the precise governance-current
89
+ * value. */
90
+ withdrawalCooldownSeconds?: number;
91
+ /** Hydrated asset metadata from the provided token list, if any. */
92
+ asset?: GenericCurrency;
93
+ /** USD price of one underlying unit, if prices were supplied. */
94
+ priceUsd?: number;
95
+ /** Human-formatted total assets (`totalAssets / 10**decimals`). */
96
+ totalAssetsFormatted: number;
97
+ /** Human-formatted total assets in USD. */
98
+ totalAssetsUsd: number;
99
+ }
100
+ /**
101
+ * Full parsed payload: per-share-token-address map.
102
+ *
103
+ * Keyed by lowercased share-token address (parity with Morpho / Silo
104
+ * / Euler-Earn / LST). Many savings vaults share the same underlying
105
+ * (sUSDS and sDAI both wrap stable-ish ERC-20s, syrupUSDC wraps USDC,
106
+ * etc.) so per-share-address keying is the only sensible choice.
107
+ */
108
+ export type SavingsVaults = {
109
+ [shareAddress: string]: SavingsVault;
110
+ };
111
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vaults/savings/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAElE;;;;;;;;GAQG;AACH,MAAM,MAAM,qBAAqB,GAC7B,SAAS,GACT,gBAAgB,GAChB,QAAQ,GACR,eAAe,GACf,eAAe,CAAA;AAEnB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,YAAa,SAAQ,yBAAyB;IAC7D,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAA;IACd;yCACqC;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ;gEAC4D;IAC5D,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAA;IACb;8DAC0D;IAC1D,WAAW,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAA;IAEhB;2BACuB;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAA;IACvB,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAA;IACvB;wEACoE;IACpE,YAAY,EAAE,MAAM,CAAA;IAEpB;4CACwC;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB;2DACuD;IACvD,WAAW,EAAE,MAAM,CAAA;IACnB;iBACa;IACb,WAAW,EAAE,MAAM,CAAA;IAEnB;yDACqD;IACrD,SAAS,EAAE,IAAI,CAAA;IACf;;mEAE+D;IAC/D,UAAU,EAAE,OAAO,CAAA;IACnB;iDAC6C;IAC7C,UAAU,EAAE,OAAO,CAAA;IAEnB;;4DAEwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4BAA4B;IAC5B,cAAc,EAAE,qBAAqB,CAAA;IACrC;;;;iBAIa;IACb,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAElC,oEAAoE;IACpE,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAA;CACrC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { SavingsRegistryEntry } from './registry';
2
+ /**
3
+ * Runs every yield source referenced by a savings-registry slice and
4
+ * returns a flat `address → apr%` map.
5
+ *
6
+ * Dedups by `YieldFetcher` reference — protocols whose fetcher
7
+ * returns multiple keys (Angle stUSD + stEUR, Sky sUSDS + stUSDS,
8
+ * Maple syrupUSDC + syrupUSDT) only invoke the upstream once.
9
+ *
10
+ * Mirrors the `lst/yieldBinding.ts` pattern. No protocol-specific
11
+ * composition needed for this provider — every savings entry's APR is
12
+ * a direct fetcher-key lookup.
13
+ *
14
+ * Returns `{ [shareAddressLowercase]: aprPercent }`. Missing keys
15
+ * become `0` downstream — never `undefined` — so the parser doesn't
16
+ * have to branch.
17
+ */
18
+ export declare const resolveYieldApr: (entries: SavingsRegistryEntry[]) => Promise<Record<string, number>>;
19
+ //# sourceMappingURL=yieldBinding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yieldBinding.d.ts","sourceRoot":"","sources":["../../../src/vaults/savings/yieldBinding.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,eAAe,GAC1B,SAAS,oBAAoB,EAAE,KAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBhC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { GenericCurrency } from '../../types/general';
2
+ import type { VaultClassificationFields } from '../classification';
2
3
  /**
3
4
  * Parsed Silo vault entry.
4
5
  *
@@ -13,7 +14,7 @@ import { GenericCurrency } from '../../types/general';
13
14
  * share an underlying (different curators / strategies), so the map is
14
15
  * keyed by vault address like `MorphoVaults`.
15
16
  */
16
- export interface SiloVault {
17
+ export interface SiloVault extends VaultClassificationFields {
17
18
  /** Vault (share-token) contract address, lowercased. */
18
19
  address: string;
19
20
  /** Lowercased underlying ERC20 address. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vaults/silo/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAS;IACxB,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd;gCAC4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ;;;kDAG8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,eAAe,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;IACrC,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAA;IAElB;;mFAE+E;IAC/E,WAAW,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAA;IAEnB;4EACwE;IACxE,UAAU,EAAE,MAAM,CAAA;IAClB;iFAC6E;IAC7E,SAAS,EAAE,MAAM,CAAA;IACjB;iEAC6D;IAC7D,WAAW,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAA;IAEnB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAA;IACX,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;4EAGwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,oBAAoB,EAAE,MAAM,CAAA;IAC5B;iCAC6B;IAC7B,cAAc,EAAE,MAAM,CAAA;IAEtB;;;kDAG8C;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,kDAAkD;AAClD,MAAM,MAAM,UAAU,GAAG;IACvB,yCAAyC;IACzC,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vaults/silo/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAElE;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAU,SAAQ,yBAAyB;IAC1D,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;IACd;gCAC4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ;;;kDAG8C;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,eAAe,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;IACrC,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAA;IAElB;;mFAE+E;IAC/E,WAAW,EAAE,MAAM,CAAA;IACnB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAA;IAEnB;4EACwE;IACxE,UAAU,EAAE,MAAM,CAAA;IAClB;iFAC6E;IAC7E,SAAS,EAAE,MAAM,CAAA;IACjB;iEAC6D;IAC7D,WAAW,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAA;IAEnB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAA;IACX,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;4EAGwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kEAAkE;IAClE,oBAAoB,EAAE,MAAM,CAAA;IAC5B;iCAC6B;IAC7B,cAAc,EAAE,MAAM,CAAA;IAEtB;;;kDAG8C;IAC9C,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,kDAAkD;AAClD,MAAM,MAAM,UAAU,GAAG;IACvB,yCAAyC;IACzC,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC,CAAA"}
@@ -0,0 +1,62 @@
1
+ /** One recorded share-price sample for a vault. */
2
+ export interface VaultYieldSnapshot {
3
+ /** Unix seconds when the sample was taken. */
4
+ t: number;
5
+ /** Raw `convertToAssets(1e18)` share price at `t`, as a string. */
6
+ p: string;
7
+ }
8
+ /** Per-vault time series, keyed by lowercased address. */
9
+ export type VaultYieldSeries = {
10
+ [address: string]: VaultYieldSnapshot[];
11
+ };
12
+ export interface VaultAprResult {
13
+ /** Annualised realised return from share-price growth (e.g. 0.043 = 4.3%). */
14
+ apr: number;
15
+ /** Share price at the latest sample. */
16
+ sharePriceNow: string;
17
+ /** Share price at the lookback sample used. */
18
+ sharePriceThen: string;
19
+ /** Seconds between the two samples used. */
20
+ windowSeconds: number;
21
+ /** Number of samples in the series. */
22
+ samples: number;
23
+ }
24
+ export interface AppendSnapshotOptions {
25
+ /** Max ring length — oldest samples drop off. Default 90. */
26
+ maxPoints?: number;
27
+ /** Skip the append if the last sample is newer than this. Default 0
28
+ * (always append). Gates the ring to a sane cadence regardless of how
29
+ * often the recorder fires. */
30
+ minIntervalSeconds?: number;
31
+ }
32
+ /**
33
+ * Append a sample to a vault's ring buffer, dropping the oldest beyond
34
+ * `maxPoints` and skipping samples that arrive sooner than
35
+ * `minIntervalSeconds` after the last one. Pure — returns a new array.
36
+ */
37
+ export declare const appendSnapshot: (points: VaultYieldSnapshot[], snap: VaultYieldSnapshot, options?: AppendSnapshotOptions) => VaultYieldSnapshot[];
38
+ export interface ComputeVaultAprOptions {
39
+ /** Target lookback window. Default 7. The sample closest to
40
+ * `now − windowDays` (and strictly before `now`) is used as the base. */
41
+ windowDays?: number;
42
+ /** Require at least this much elapsed between the two samples, else
43
+ * return `undefined` (a window too short makes the annualised figure
44
+ * meaningless). Default 1 hour. */
45
+ minWindowSeconds?: number;
46
+ }
47
+ /**
48
+ * Annualise a vault's realised return from its recorded share-price
49
+ * series:
50
+ *
51
+ * apr = (priceNow / priceThen − 1) × (yearSeconds / elapsedSeconds)
52
+ *
53
+ * `priceNow` is the latest sample; `priceThen` is the sample closest to
54
+ * `now − windowDays`. The ratio is computed in bigint (scaled by 1e18)
55
+ * to preserve the small per-day growth that double precision would lose
56
+ * on ~1e18-scale prices.
57
+ *
58
+ * Returns `undefined` when there aren't two usable samples or the window
59
+ * is shorter than `minWindowSeconds`.
60
+ */
61
+ export declare const computeVaultApr: (points: VaultYieldSnapshot[], options?: ComputeVaultAprOptions) => VaultAprResult | undefined;
62
+ //# sourceMappingURL=annualize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annualize.d.ts","sourceRoot":"","sources":["../../../src/vaults/yield/annualize.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,CAAC,EAAE,MAAM,CAAA;IACT,mEAAmE;IACnE,CAAC,EAAE,MAAM,CAAA;CACV;AAED,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAA;CAAE,CAAA;AAE1E,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAA;IACX,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAA;IACrB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAA;CAChB;AAKD,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;oCAEgC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,kBAAkB,EAAE,EAC5B,MAAM,kBAAkB,EACxB,UAAU,qBAAqB,KAC9B,kBAAkB,EAOpB,CAAA;AAED,MAAM,WAAW,sBAAsB;IACrC;8EAC0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;wCAEoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,kBAAkB,EAAE,EAC5B,UAAU,sBAAsB,KAC/B,cAAc,GAAG,SAoCnB,CAAA"}