tapimo 0.7.1 → 0.7.2

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 (681) hide show
  1. package/dist/ApiKeys.d.ts +24 -7
  2. package/dist/ApiKeys.d.ts.map +1 -1
  3. package/dist/ApiKeys.js +17 -5
  4. package/dist/ApiKeys.js.map +1 -1
  5. package/dist/App.d.ts +12104 -7861
  6. package/dist/App.d.ts.map +1 -1
  7. package/dist/App.js +191 -128
  8. package/dist/App.js.map +1 -1
  9. package/dist/Assets.d.ts +10 -0
  10. package/dist/Assets.d.ts.map +1 -1
  11. package/dist/Assets.js +17 -4
  12. package/dist/Assets.js.map +1 -1
  13. package/dist/Scope.d.ts +19 -8
  14. package/dist/Scope.d.ts.map +1 -1
  15. package/dist/Scope.js +25 -9
  16. package/dist/Scope.js.map +1 -1
  17. package/dist/Webhooks.d.ts +1 -1
  18. package/dist/admin/App.d.ts +601 -20
  19. package/dist/admin/App.d.ts.map +1 -1
  20. package/dist/admin/App.js +12 -2
  21. package/dist/admin/App.js.map +1 -1
  22. package/dist/admin/apps/api-keys.d.ts +94 -11
  23. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  24. package/dist/admin/apps/api-keys.js +141 -32
  25. package/dist/admin/apps/api-keys.js.map +1 -1
  26. package/dist/admin/apps/earn-vaults.d.ts +1069 -0
  27. package/dist/admin/apps/earn-vaults.d.ts.map +1 -0
  28. package/dist/admin/apps/earn-vaults.js +409 -0
  29. package/dist/admin/apps/earn-vaults.js.map +1 -0
  30. package/dist/admin/apps/verified-tokens.d.ts +166 -166
  31. package/dist/admin/ui.generated.d.ts +1 -1
  32. package/dist/admin/ui.generated.d.ts.map +1 -1
  33. package/dist/admin/ui.generated.js +99 -43
  34. package/dist/admin/ui.generated.js.map +1 -1
  35. package/dist/analytics/Analytics.d.ts +2 -0
  36. package/dist/analytics/Analytics.d.ts.map +1 -1
  37. package/dist/analytics/Analytics.js +18 -2
  38. package/dist/analytics/Analytics.js.map +1 -1
  39. package/dist/analytics/tables/requestEvents.d.ts +22 -1
  40. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  41. package/dist/analytics/tables/requestEvents.js +59 -39
  42. package/dist/analytics/tables/requestEvents.js.map +1 -1
  43. package/dist/apps/Zones.d.ts +8335 -0
  44. package/dist/apps/Zones.d.ts.map +1 -0
  45. package/dist/apps/Zones.js +38 -0
  46. package/dist/apps/Zones.js.map +1 -0
  47. package/dist/apps/data/App.d.ts +12125 -7913
  48. package/dist/apps/data/App.d.ts.map +1 -1
  49. package/dist/apps/data/App.js +91 -19
  50. package/dist/apps/data/App.js.map +1 -1
  51. package/dist/apps/data/FxOracle.d.ts +1 -1
  52. package/dist/apps/data/FxOracle.d.ts.map +1 -1
  53. package/dist/apps/data/index.d.ts +0 -1
  54. package/dist/apps/data/index.d.ts.map +1 -1
  55. package/dist/apps/data/index.js +0 -1
  56. package/dist/apps/data/index.js.map +1 -1
  57. package/dist/apps/data/routes/activities.d.ts +32 -32
  58. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  59. package/dist/apps/data/routes/activities.js +130 -65
  60. package/dist/apps/data/routes/activities.js.map +1 -1
  61. package/dist/apps/data/routes/addresses.d.ts +312 -312
  62. package/dist/apps/data/routes/balances.d.ts +18 -18
  63. package/dist/apps/data/routes/balances.js +5 -5
  64. package/dist/apps/data/routes/balances.js.map +1 -1
  65. package/dist/apps/data/routes/coingecko.d.ts +176 -176
  66. package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
  67. package/dist/apps/data/routes/coingecko.js +62 -35
  68. package/dist/apps/data/routes/coingecko.js.map +1 -1
  69. package/dist/apps/data/routes/earn.d.ts +2144 -0
  70. package/dist/apps/data/routes/earn.d.ts.map +1 -0
  71. package/dist/apps/data/routes/earn.js +947 -0
  72. package/dist/apps/data/routes/earn.js.map +1 -0
  73. package/dist/apps/data/routes/exchanges.d.ts +1625 -718
  74. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  75. package/dist/apps/data/routes/exchanges.js +656 -193
  76. package/dist/apps/data/routes/exchanges.js.map +1 -1
  77. package/dist/apps/data/routes/fee-amm.d.ts +108 -108
  78. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  79. package/dist/apps/data/routes/fee-amm.js +59 -8
  80. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  81. package/dist/apps/data/routes/funding.d.ts +4092 -387
  82. package/dist/apps/data/routes/funding.d.ts.map +1 -1
  83. package/dist/apps/data/routes/funding.js +1403 -256
  84. package/dist/apps/data/routes/funding.js.map +1 -1
  85. package/dist/apps/data/routes/indexer.d.ts +30 -30
  86. package/dist/apps/data/routes/indexer.d.ts.map +1 -1
  87. package/dist/apps/data/routes/indexer.js +19 -2
  88. package/dist/apps/data/routes/indexer.js.map +1 -1
  89. package/dist/apps/data/routes/receipts.d.ts +263 -263
  90. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  91. package/dist/apps/data/routes/receipts.js +11 -11
  92. package/dist/apps/data/routes/receipts.js.map +1 -1
  93. package/dist/apps/data/routes/rpc.d.ts +5 -5
  94. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  95. package/dist/apps/data/routes/rpc.js +211 -22
  96. package/dist/apps/data/routes/rpc.js.map +1 -1
  97. package/dist/apps/data/routes/tokenlist.d.ts +36 -36
  98. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  99. package/dist/apps/data/routes/tokenlist.js +39 -8
  100. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  101. package/dist/apps/data/routes/tokens.d.ts +114 -86
  102. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  103. package/dist/apps/data/routes/tokens.js +194 -91
  104. package/dist/apps/data/routes/tokens.js.map +1 -1
  105. package/dist/apps/data/routes/transactions.d.ts +53 -53
  106. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  107. package/dist/apps/data/routes/transactions.js +78 -39
  108. package/dist/apps/data/routes/transactions.js.map +1 -1
  109. package/dist/apps/data/routes/transfers.d.ts +76 -27
  110. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  111. package/dist/apps/data/routes/transfers.js +165 -67
  112. package/dist/apps/data/routes/transfers.js.map +1 -1
  113. package/dist/apps/data/routes/valuation.d.ts +42 -42
  114. package/dist/apps/data/routes/valuation.js +2 -2
  115. package/dist/apps/data/routes/valuation.js.map +1 -1
  116. package/dist/apps/data/routes/webhooks.d.ts +369 -367
  117. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  118. package/dist/apps/data/routes/webhooks.js +161 -59
  119. package/dist/apps/data/routes/webhooks.js.map +1 -1
  120. package/dist/apps/data/routes/zones.d.ts +281 -0
  121. package/dist/apps/data/routes/zones.d.ts.map +1 -0
  122. package/dist/apps/data/routes/zones.js +252 -0
  123. package/dist/apps/data/routes/zones.js.map +1 -0
  124. package/dist/apps/docs/reference.js +6 -5
  125. package/dist/apps/docs/reference.js.map +1 -1
  126. package/dist/apps/index.d.ts +2 -1
  127. package/dist/apps/index.d.ts.map +1 -1
  128. package/dist/apps/index.js +2 -1
  129. package/dist/apps/index.js.map +1 -1
  130. package/dist/apps/management/App.d.ts +670 -670
  131. package/dist/apps/management/Billing.d.ts +8 -0
  132. package/dist/apps/management/Billing.d.ts.map +1 -1
  133. package/dist/apps/management/Billing.js +12 -0
  134. package/dist/apps/management/Billing.js.map +1 -1
  135. package/dist/apps/management/Error.d.ts +12 -0
  136. package/dist/apps/management/Error.d.ts.map +1 -0
  137. package/dist/apps/management/Error.js +10 -0
  138. package/dist/apps/management/Error.js.map +1 -0
  139. package/dist/apps/management/routes/api-keys.d.ts +5 -5
  140. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  141. package/dist/apps/management/routes/api-keys.js +2 -8
  142. package/dist/apps/management/routes/api-keys.js.map +1 -1
  143. package/dist/apps/management/routes/billing.d.ts +119 -119
  144. package/dist/apps/management/routes/faucet.d.ts +2 -2
  145. package/dist/apps/management/routes/invitations.d.ts +62 -62
  146. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  147. package/dist/apps/management/routes/invitations.js +4 -10
  148. package/dist/apps/management/routes/invitations.js.map +1 -1
  149. package/dist/apps/management/routes/invite-links.d.ts +30 -30
  150. package/dist/apps/management/routes/me.d.ts +6 -6
  151. package/dist/apps/management/routes/members.d.ts +2 -2
  152. package/dist/apps/management/routes/orgs.d.ts +48 -48
  153. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  154. package/dist/apps/management/routes/orgs.js +2 -8
  155. package/dist/apps/management/routes/orgs.js.map +1 -1
  156. package/dist/apps/management/routes/projects.d.ts +9 -9
  157. package/dist/apps/management/routes/scopes.js +2 -2
  158. package/dist/apps/management/routes/scopes.js.map +1 -1
  159. package/dist/apps/management/routes/verified-token-requests.d.ts +36 -36
  160. package/dist/apps/management/routes/webhooks.d.ts +50 -50
  161. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  162. package/dist/apps/management/routes/webhooks.js +15 -3
  163. package/dist/apps/management/routes/webhooks.js.map +1 -1
  164. package/dist/apps/mpp/App.d.ts +55 -56
  165. package/dist/apps/mpp/App.d.ts.map +1 -1
  166. package/dist/apps/mpp/App.js +192 -27
  167. package/dist/apps/mpp/App.js.map +1 -1
  168. package/dist/apps/mpp/Mpp.d.ts +0 -20
  169. package/dist/apps/mpp/Mpp.d.ts.map +1 -1
  170. package/dist/apps/mpp/Mpp.js +0 -24
  171. package/dist/apps/mpp/Mpp.js.map +1 -1
  172. package/dist/apps/mpp/internal/Adapter.d.ts +40 -0
  173. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -0
  174. package/dist/apps/mpp/internal/Adapter.js +66 -0
  175. package/dist/apps/mpp/internal/Adapter.js.map +1 -0
  176. package/dist/apps/mpp/internal/Error.d.ts +4 -0
  177. package/dist/apps/mpp/internal/Error.d.ts.map +1 -0
  178. package/dist/apps/mpp/internal/Error.js +41 -0
  179. package/dist/apps/mpp/internal/Error.js.map +1 -0
  180. package/dist/apps/mpp/internal/Idempotency.d.ts +33 -0
  181. package/dist/apps/mpp/internal/Idempotency.d.ts.map +1 -0
  182. package/dist/apps/mpp/internal/Idempotency.js +28 -0
  183. package/dist/apps/mpp/internal/Idempotency.js.map +1 -0
  184. package/dist/apps/mpp/internal/Policy.d.ts +46 -0
  185. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -0
  186. package/dist/apps/mpp/internal/Policy.js +57 -0
  187. package/dist/apps/mpp/internal/Policy.js.map +1 -0
  188. package/dist/apps/mpp/internal/ScreenManager.d.ts +27 -0
  189. package/dist/apps/mpp/internal/ScreenManager.d.ts.map +1 -0
  190. package/dist/apps/mpp/internal/ScreenManager.js +18 -0
  191. package/dist/apps/mpp/internal/ScreenManager.js.map +1 -0
  192. package/dist/apps/mpp/internal/Screening.d.ts +35 -0
  193. package/dist/apps/mpp/internal/Screening.d.ts.map +1 -0
  194. package/dist/apps/mpp/internal/Screening.js +20 -0
  195. package/dist/apps/mpp/internal/Screening.js.map +1 -0
  196. package/dist/apps/mpp/internal/Sponsorship.d.ts +36 -0
  197. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -0
  198. package/dist/apps/mpp/internal/Sponsorship.js +103 -0
  199. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -0
  200. package/dist/apps/mpp/internal/Utils.d.ts +7 -0
  201. package/dist/apps/mpp/internal/Utils.d.ts.map +1 -0
  202. package/dist/apps/mpp/internal/Utils.js +24 -0
  203. package/dist/apps/mpp/internal/Utils.js.map +1 -0
  204. package/dist/apps/relay/App.js +183 -23
  205. package/dist/apps/relay/App.js.map +1 -1
  206. package/dist/apps/relay/Sponsorships.d.ts +4 -0
  207. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  208. package/dist/apps/relay/Sponsorships.js +15 -6
  209. package/dist/apps/relay/Sponsorships.js.map +1 -1
  210. package/dist/db/Db.d.ts +20 -0
  211. package/dist/db/Db.d.ts.map +1 -1
  212. package/dist/db/Db.js +342 -0
  213. package/dist/db/Db.js.map +1 -1
  214. package/dist/db/Schema.d.ts +921 -1
  215. package/dist/db/Schema.d.ts.map +1 -1
  216. package/dist/db/Schema.js +269 -1
  217. package/dist/db/Schema.js.map +1 -1
  218. package/dist/db/tables/earnVaults.d.ts +68 -0
  219. package/dist/db/tables/earnVaults.d.ts.map +1 -0
  220. package/dist/db/tables/earnVaults.js +72 -0
  221. package/dist/db/tables/earnVaults.js.map +1 -0
  222. package/dist/db/tables/fundingCatalog.d.ts +56 -0
  223. package/dist/db/tables/fundingCatalog.d.ts.map +1 -0
  224. package/dist/db/tables/fundingCatalog.js +85 -0
  225. package/dist/db/tables/fundingCatalog.js.map +1 -0
  226. package/dist/db/tables/fundingDepositAddresses.d.ts +159 -0
  227. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
  228. package/dist/db/tables/fundingDepositAddresses.js +206 -0
  229. package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
  230. package/dist/db/tables/fundingDeposits.d.ts +115 -0
  231. package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
  232. package/dist/db/tables/fundingDeposits.js +100 -0
  233. package/dist/db/tables/fundingDeposits.js.map +1 -0
  234. package/dist/db/tables/fundingIdempotency.d.ts +91 -0
  235. package/dist/db/tables/fundingIdempotency.d.ts.map +1 -0
  236. package/dist/db/tables/fundingIdempotency.js +103 -0
  237. package/dist/db/tables/fundingIdempotency.js.map +1 -0
  238. package/dist/db/tables/fundingTransferEvents.d.ts +12 -0
  239. package/dist/db/tables/fundingTransferEvents.d.ts.map +1 -0
  240. package/dist/db/tables/fundingTransferEvents.js +18 -0
  241. package/dist/db/tables/fundingTransferEvents.js.map +1 -0
  242. package/dist/db/tables/fundingTransferTransactions.d.ts +15 -0
  243. package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -0
  244. package/dist/db/tables/fundingTransferTransactions.js +27 -0
  245. package/dist/db/tables/fundingTransferTransactions.js.map +1 -0
  246. package/dist/db/tables/fundingTransfers.d.ts +82 -0
  247. package/dist/db/tables/fundingTransfers.d.ts.map +1 -0
  248. package/dist/db/tables/fundingTransfers.js +89 -0
  249. package/dist/db/tables/fundingTransfers.js.map +1 -0
  250. package/dist/db/tables/organizations.d.ts +8 -0
  251. package/dist/db/tables/organizations.d.ts.map +1 -1
  252. package/dist/db/tables/organizations.js +16 -0
  253. package/dist/db/tables/organizations.js.map +1 -1
  254. package/dist/db/tables/projects.d.ts +8 -0
  255. package/dist/db/tables/projects.d.ts.map +1 -1
  256. package/dist/db/tables/projects.js +16 -0
  257. package/dist/db/tables/projects.js.map +1 -1
  258. package/dist/db/tables/requestUsage.d.ts +13 -0
  259. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  260. package/dist/db/tables/requestUsage.js +16 -0
  261. package/dist/db/tables/requestUsage.js.map +1 -1
  262. package/dist/db/tables/sponsoredTransactions.d.ts +2 -2
  263. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  264. package/dist/db/tables/sponsoredTransactions.js +1 -1
  265. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  266. package/dist/db/tables/users.d.ts +8 -0
  267. package/dist/db/tables/users.d.ts.map +1 -1
  268. package/dist/db/tables/users.js +16 -0
  269. package/dist/db/tables/users.js.map +1 -1
  270. package/dist/db/tables/verifiedTokens.d.ts +14 -7
  271. package/dist/db/tables/verifiedTokens.d.ts.map +1 -1
  272. package/dist/db/tables/verifiedTokens.js +9 -7
  273. package/dist/db/tables/verifiedTokens.js.map +1 -1
  274. package/dist/db/tables/webhookSubscriptions.d.ts +31 -1
  275. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  276. package/dist/db/tables/webhookSubscriptions.js +24 -3
  277. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  278. package/dist/handlers/relay.js +108 -108
  279. package/dist/handlers/relay.js.map +1 -1
  280. package/dist/internal/Auth.d.ts +26 -0
  281. package/dist/internal/Auth.d.ts.map +1 -1
  282. package/dist/internal/Auth.js +35 -2
  283. package/dist/internal/Auth.js.map +1 -1
  284. package/dist/internal/Cache.d.ts.map +1 -1
  285. package/dist/internal/Cache.js +16 -10
  286. package/dist/internal/Cache.js.map +1 -1
  287. package/dist/internal/Cursor.js +1 -1
  288. package/dist/internal/Cursor.js.map +1 -1
  289. package/dist/internal/EarnRates.d.ts +89 -0
  290. package/dist/internal/EarnRates.d.ts.map +1 -0
  291. package/dist/internal/EarnRates.js +266 -0
  292. package/dist/internal/EarnRates.js.map +1 -0
  293. package/dist/internal/EarnVaults.d.ts +171 -0
  294. package/dist/internal/EarnVaults.d.ts.map +1 -0
  295. package/dist/internal/EarnVaults.js +547 -0
  296. package/dist/internal/EarnVaults.js.map +1 -0
  297. package/dist/internal/EdgeCache.d.ts +8 -1
  298. package/dist/internal/EdgeCache.d.ts.map +1 -1
  299. package/dist/internal/EdgeCache.js +33 -7
  300. package/dist/internal/EdgeCache.js.map +1 -1
  301. package/dist/internal/Id.d.ts +11 -0
  302. package/dist/internal/Id.d.ts.map +1 -1
  303. package/dist/internal/Id.js +13 -0
  304. package/dist/internal/Id.js.map +1 -1
  305. package/dist/internal/Idempotency.d.ts +83 -0
  306. package/dist/internal/Idempotency.d.ts.map +1 -0
  307. package/dist/internal/Idempotency.js +113 -0
  308. package/dist/internal/Idempotency.js.map +1 -0
  309. package/dist/internal/Log.d.ts +64 -9
  310. package/dist/internal/Log.d.ts.map +1 -1
  311. package/dist/internal/Log.js +29 -7
  312. package/dist/internal/Log.js.map +1 -1
  313. package/dist/internal/MetricSink.d.ts.map +1 -1
  314. package/dist/internal/MetricSink.js +47 -1
  315. package/dist/internal/MetricSink.js.map +1 -1
  316. package/dist/internal/OpenApi.d.ts +1 -1
  317. package/dist/internal/OpenApi.d.ts.map +1 -1
  318. package/dist/internal/OpenApi.js +3 -0
  319. package/dist/internal/OpenApi.js.map +1 -1
  320. package/dist/internal/Provider.d.ts +14 -0
  321. package/dist/internal/Provider.d.ts.map +1 -0
  322. package/dist/internal/Provider.js +5 -0
  323. package/dist/internal/Provider.js.map +1 -0
  324. package/dist/internal/Schema.d.ts +6 -1
  325. package/dist/internal/Schema.d.ts.map +1 -1
  326. package/dist/internal/Schema.js +20 -11
  327. package/dist/internal/Schema.js.map +1 -1
  328. package/dist/internal/Store.d.ts +6 -0
  329. package/dist/internal/Store.d.ts.map +1 -1
  330. package/dist/internal/Store.js +35 -0
  331. package/dist/internal/Store.js.map +1 -1
  332. package/dist/internal/Tidx.d.ts +43 -24
  333. package/dist/internal/Tidx.d.ts.map +1 -1
  334. package/dist/internal/Tidx.js +79 -11
  335. package/dist/internal/Tidx.js.map +1 -1
  336. package/dist/internal/Viem.d.ts +82 -65
  337. package/dist/internal/Viem.d.ts.map +1 -1
  338. package/dist/internal/Viem.js +83 -12
  339. package/dist/internal/Viem.js.map +1 -1
  340. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  341. package/dist/internal/WebhookDestination.js +34 -28
  342. package/dist/internal/WebhookDestination.js.map +1 -1
  343. package/dist/internal/Webhooks.d.ts +9 -0
  344. package/dist/internal/Webhooks.d.ts.map +1 -1
  345. package/dist/internal/Webhooks.js +15 -10
  346. package/dist/internal/Webhooks.js.map +1 -1
  347. package/dist/internal/exchange/Provider.d.ts +219 -0
  348. package/dist/internal/exchange/Provider.d.ts.map +1 -0
  349. package/dist/internal/exchange/Provider.js +117 -0
  350. package/dist/internal/exchange/Provider.js.map +1 -0
  351. package/dist/internal/exchange/index.d.ts +2 -0
  352. package/dist/internal/exchange/index.d.ts.map +1 -0
  353. package/dist/internal/exchange/index.js +2 -0
  354. package/dist/internal/exchange/index.js.map +1 -0
  355. package/dist/internal/exchange/providers/uniswap.d.ts +57 -0
  356. package/dist/internal/exchange/providers/uniswap.d.ts.map +1 -0
  357. package/dist/internal/exchange/providers/uniswap.js +553 -0
  358. package/dist/internal/exchange/providers/uniswap.js.map +1 -0
  359. package/dist/internal/funding/Action.d.ts +55 -0
  360. package/dist/internal/funding/Action.d.ts.map +1 -0
  361. package/dist/internal/funding/Action.js +74 -0
  362. package/dist/internal/funding/Action.js.map +1 -0
  363. package/dist/internal/funding/Catalog.d.ts +107 -0
  364. package/dist/internal/funding/Catalog.d.ts.map +1 -0
  365. package/dist/internal/funding/Catalog.js +270 -0
  366. package/dist/internal/funding/Catalog.js.map +1 -0
  367. package/dist/internal/funding/Chain.d.ts +76 -0
  368. package/dist/internal/funding/Chain.d.ts.map +1 -0
  369. package/dist/internal/funding/Chain.js +38 -0
  370. package/dist/internal/funding/Chain.js.map +1 -0
  371. package/dist/internal/funding/Deposit.d.ts +366 -0
  372. package/dist/internal/funding/Deposit.d.ts.map +1 -0
  373. package/dist/internal/funding/Deposit.js +286 -0
  374. package/dist/internal/funding/Deposit.js.map +1 -0
  375. package/dist/internal/funding/DepositAddress.d.ts +345 -0
  376. package/dist/internal/funding/DepositAddress.d.ts.map +1 -0
  377. package/dist/internal/funding/DepositAddress.js +189 -0
  378. package/dist/internal/funding/DepositAddress.js.map +1 -0
  379. package/dist/internal/funding/Evidence.d.ts +52 -0
  380. package/dist/internal/funding/Evidence.d.ts.map +1 -0
  381. package/dist/internal/funding/Evidence.js +314 -0
  382. package/dist/internal/funding/Evidence.js.map +1 -0
  383. package/dist/internal/funding/Provider.d.ts +1186 -0
  384. package/dist/internal/funding/Provider.d.ts.map +1 -0
  385. package/dist/internal/funding/Provider.js +1081 -0
  386. package/dist/internal/funding/Provider.js.map +1 -0
  387. package/dist/internal/funding/Reconciliation.d.ts +113 -0
  388. package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
  389. package/dist/internal/funding/Reconciliation.js +676 -0
  390. package/dist/internal/funding/Reconciliation.js.map +1 -0
  391. package/dist/internal/funding/Route.d.ts +21 -0
  392. package/dist/internal/funding/Route.d.ts.map +1 -0
  393. package/dist/internal/funding/Route.js +5 -0
  394. package/dist/internal/funding/Route.js.map +1 -0
  395. package/dist/internal/funding/Subsidy.d.ts +113 -0
  396. package/dist/internal/funding/Subsidy.d.ts.map +1 -0
  397. package/dist/internal/funding/Subsidy.js +138 -0
  398. package/dist/internal/funding/Subsidy.js.map +1 -0
  399. package/dist/internal/funding/Token.d.ts +41 -0
  400. package/dist/internal/funding/Token.d.ts.map +1 -0
  401. package/dist/internal/funding/Token.js +22 -0
  402. package/dist/internal/funding/Token.js.map +1 -0
  403. package/dist/internal/funding/Transfer.d.ts +643 -0
  404. package/dist/internal/funding/Transfer.d.ts.map +1 -0
  405. package/dist/internal/funding/Transfer.js +332 -0
  406. package/dist/internal/funding/Transfer.js.map +1 -0
  407. package/dist/internal/funding/index.d.ts +13 -0
  408. package/dist/internal/funding/index.d.ts.map +1 -0
  409. package/dist/internal/funding/index.js +13 -0
  410. package/dist/internal/funding/index.js.map +1 -0
  411. package/dist/internal/funding/providers/across.d.ts +21 -0
  412. package/dist/internal/funding/providers/across.d.ts.map +1 -0
  413. package/dist/internal/funding/providers/across.js +117 -0
  414. package/dist/internal/funding/providers/across.js.map +1 -0
  415. package/dist/internal/funding/providers/relay.d.ts +46 -0
  416. package/dist/internal/funding/providers/relay.d.ts.map +1 -0
  417. package/dist/internal/funding/providers/relay.js +464 -0
  418. package/dist/internal/funding/providers/relay.js.map +1 -0
  419. package/dist/internal/funding/providers/rhino.d.ts +15 -0
  420. package/dist/internal/funding/providers/rhino.d.ts.map +1 -0
  421. package/dist/internal/funding/providers/rhino.js +116 -0
  422. package/dist/internal/funding/providers/rhino.js.map +1 -0
  423. package/dist/internal/funding/providers/squid.d.ts +19 -0
  424. package/dist/internal/funding/providers/squid.d.ts.map +1 -0
  425. package/dist/internal/funding/providers/squid.js +120 -0
  426. package/dist/internal/funding/providers/squid.js.map +1 -0
  427. package/dist/internal/funding/providers/symbiosis.d.ts +20 -0
  428. package/dist/internal/funding/providers/symbiosis.d.ts.map +1 -0
  429. package/dist/internal/funding/providers/symbiosis.js +176 -0
  430. package/dist/internal/funding/providers/symbiosis.js.map +1 -0
  431. package/dist/internal/index.d.ts +5 -1
  432. package/dist/internal/index.d.ts.map +1 -1
  433. package/dist/internal/index.js +5 -1
  434. package/dist/internal/index.js.map +1 -1
  435. package/dist/internal/webhookDestinations/url.js +61 -57
  436. package/dist/internal/webhookDestinations/url.js.map +1 -1
  437. package/dist/providers/index.d.ts +43 -0
  438. package/dist/providers/index.d.ts.map +1 -0
  439. package/dist/providers/index.js +19 -0
  440. package/dist/providers/index.js.map +1 -0
  441. package/package.json +9 -4
  442. package/src/ApiKeys.test.ts +11 -7
  443. package/src/ApiKeys.ts +37 -9
  444. package/src/App.test.ts +85 -10
  445. package/src/App.ts +224 -137
  446. package/src/Assets.ts +29 -4
  447. package/src/Client.test-d.ts +650 -30
  448. package/src/Scope.test.ts +19 -0
  449. package/src/Scope.ts +28 -11
  450. package/src/Webhooks.test.ts +25 -0
  451. package/src/Webhooks.ts +1 -1
  452. package/src/admin/App.test.ts +9 -2
  453. package/src/admin/App.ts +32 -9
  454. package/src/admin/apps/api-keys.test.ts +167 -23
  455. package/src/admin/apps/api-keys.ts +166 -28
  456. package/src/admin/apps/earn-vaults.test.ts +338 -0
  457. package/src/admin/apps/earn-vaults.ts +572 -0
  458. package/src/admin/apps/scopes.test.ts +16 -1
  459. package/src/admin/ui/plugin.ts +2 -2
  460. package/src/admin/ui/src/components/EarnVaultForm.tsx +137 -0
  461. package/src/admin/ui/src/components/MobileProfile.tsx +2 -2
  462. package/src/admin/ui/src/components/Page.tsx +1 -1
  463. package/src/admin/ui/src/components/ThemeToggle.tsx +1 -1
  464. package/src/admin/ui/src/lib/api-keys.ts +37 -7
  465. package/src/admin/ui/src/lib/client.ts +1 -1
  466. package/src/admin/ui/src/lib/config.ts +1 -1
  467. package/src/admin/ui/src/lib/early-access.ts +8 -9
  468. package/src/admin/ui/src/lib/earn-vaults.ts +207 -0
  469. package/src/admin/ui/src/lib/format.ts +13 -0
  470. package/src/admin/ui/src/lib/organizations.test.ts +14 -4
  471. package/src/admin/ui/src/lib/organizations.ts +7 -1
  472. package/src/admin/ui/src/lib/response.ts +22 -0
  473. package/src/admin/ui/src/lib/scopes.test.ts +19 -11
  474. package/src/admin/ui/src/lib/scopes.ts +28 -7
  475. package/src/admin/ui/src/lib/verified-tokens.ts +10 -9
  476. package/src/admin/ui/src/routeTree.gen.ts +70 -7
  477. package/src/admin/ui/src/router.tsx +2 -2
  478. package/src/admin/ui/src/routes/__root.tsx +9 -8
  479. package/src/admin/ui/src/routes/api-keys.tsx +475 -64
  480. package/src/admin/ui/src/routes/early-access.tsx +5 -12
  481. package/src/admin/ui/src/routes/earn.vaults.tsx +348 -0
  482. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +154 -0
  483. package/src/admin/ui/src/routes/earn.vaults_.new.tsx +190 -0
  484. package/src/admin/ui/src/routes/organizations.tsx +4 -7
  485. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +56 -54
  486. package/src/admin/ui/src/routes/verified-tokens.tsx +4 -4
  487. package/src/admin/ui/vite.config.ts +4 -1
  488. package/src/admin/ui.generated.ts +113 -43
  489. package/src/analytics/Analytics.test.ts +69 -10
  490. package/src/analytics/Analytics.ts +20 -1
  491. package/src/analytics/tables/requestEvents.ts +79 -37
  492. package/src/apps/Zones.test.ts +33 -0
  493. package/src/apps/Zones.ts +40 -0
  494. package/src/apps/composition.test.ts +84 -1
  495. package/src/apps/data/App.test.ts +28 -11
  496. package/src/apps/data/App.ts +96 -33
  497. package/src/apps/data/FxOracle.ts +1 -1
  498. package/src/apps/data/index.ts +0 -1
  499. package/src/apps/data/routes/activities.test.ts +82 -6
  500. package/src/apps/data/routes/activities.ts +131 -71
  501. package/src/apps/data/routes/balances.test.ts +50 -37
  502. package/src/apps/data/routes/balances.ts +5 -5
  503. package/src/apps/data/routes/blocks.test.ts +2 -0
  504. package/src/apps/data/routes/coingecko.test.ts +22 -0
  505. package/src/apps/data/routes/coingecko.ts +84 -48
  506. package/src/apps/data/routes/earn.test.ts +1108 -0
  507. package/src/apps/data/routes/earn.ts +1391 -0
  508. package/src/apps/data/routes/exchanges.test.ts +82 -33
  509. package/src/apps/data/routes/exchanges.ts +842 -227
  510. package/src/apps/data/routes/fee-amm.test.ts +4 -6
  511. package/src/apps/data/routes/fee-amm.ts +69 -12
  512. package/src/apps/data/routes/funding.test.ts +2712 -221
  513. package/src/apps/data/routes/funding.ts +1604 -387
  514. package/src/apps/data/routes/indexer.test.ts +43 -34
  515. package/src/apps/data/routes/indexer.ts +19 -2
  516. package/src/apps/data/routes/receipts.test.ts +5 -3
  517. package/src/apps/data/routes/receipts.ts +13 -11
  518. package/src/apps/data/routes/rpc.test.ts +446 -28
  519. package/src/apps/data/routes/rpc.ts +243 -25
  520. package/src/apps/data/routes/tokenlist.ts +72 -19
  521. package/src/apps/data/routes/tokens.ts +258 -86
  522. package/src/apps/data/routes/transactions.test.ts +2 -0
  523. package/src/apps/data/routes/transactions.ts +77 -42
  524. package/src/apps/data/routes/transfers.test.ts +166 -4
  525. package/src/apps/data/routes/transfers.ts +216 -78
  526. package/src/apps/data/routes/valuation.test.ts +62 -9
  527. package/src/apps/data/routes/valuation.ts +2 -2
  528. package/src/apps/data/routes/webhooks.test.ts +386 -43
  529. package/src/apps/data/routes/webhooks.ts +172 -71
  530. package/src/apps/data/routes/zones.test.ts +473 -0
  531. package/src/apps/data/routes/zones.ts +338 -0
  532. package/src/apps/docs/reference.ts +8 -6
  533. package/src/apps/index.ts +2 -1
  534. package/src/apps/management/Billing.test.ts +29 -0
  535. package/src/apps/management/Billing.ts +23 -0
  536. package/src/apps/management/Error.ts +12 -0
  537. package/src/apps/management/routes/api-keys.test.ts +5 -3
  538. package/src/apps/management/routes/api-keys.ts +2 -9
  539. package/src/apps/management/routes/invitations.ts +4 -11
  540. package/src/apps/management/routes/orgs.ts +2 -9
  541. package/src/apps/management/routes/scopes.test.ts +7 -2
  542. package/src/apps/management/routes/scopes.ts +2 -2
  543. package/src/apps/management/routes/webhooks.test.ts +6 -1
  544. package/src/apps/management/routes/webhooks.ts +15 -3
  545. package/src/apps/mpp/App.ts +276 -29
  546. package/src/apps/mpp/Mpp.test.ts +631 -26
  547. package/src/apps/mpp/Mpp.ts +0 -42
  548. package/src/apps/mpp/internal/Adapter.ts +108 -3
  549. package/src/apps/mpp/internal/Error.test.ts +33 -0
  550. package/src/apps/mpp/internal/Error.ts +44 -6
  551. package/src/apps/mpp/internal/Idempotency.test.ts +213 -0
  552. package/src/apps/mpp/internal/Idempotency.ts +59 -5
  553. package/src/apps/mpp/internal/Policy.test.ts +122 -0
  554. package/src/apps/mpp/internal/Policy.ts +98 -0
  555. package/src/apps/mpp/internal/ScreenManager.test.ts +68 -0
  556. package/src/apps/mpp/internal/ScreenManager.ts +41 -0
  557. package/src/apps/mpp/internal/Screening.ts +40 -3
  558. package/src/apps/mpp/internal/Sponsorship.ts +144 -0
  559. package/src/apps/mpp/internal/Utils.ts +30 -0
  560. package/src/apps/relay/App.test.ts +493 -62
  561. package/src/apps/relay/App.ts +233 -23
  562. package/src/apps/relay/Sponsorships.test.ts +49 -0
  563. package/src/apps/relay/Sponsorships.ts +18 -6
  564. package/src/db/Db.ts +439 -0
  565. package/src/db/Schema.ts +325 -2
  566. package/src/db/tables/earnVaults.test.ts +185 -0
  567. package/src/db/tables/earnVaults.ts +151 -0
  568. package/src/db/tables/fundingCatalog.test.ts +108 -0
  569. package/src/db/tables/fundingCatalog.ts +157 -0
  570. package/src/db/tables/fundingDepositAddresses.test.ts +580 -0
  571. package/src/db/tables/fundingDepositAddresses.ts +376 -0
  572. package/src/db/tables/fundingDeposits.test.ts +261 -0
  573. package/src/db/tables/fundingDeposits.ts +229 -0
  574. package/src/db/tables/fundingIdempotency.test.ts +182 -0
  575. package/src/db/tables/fundingIdempotency.ts +180 -0
  576. package/src/db/tables/fundingTransferEvents.ts +28 -0
  577. package/src/db/tables/fundingTransferTransactions.test.ts +69 -0
  578. package/src/db/tables/fundingTransferTransactions.ts +37 -0
  579. package/src/db/tables/fundingTransfers.test.ts +89 -0
  580. package/src/db/tables/fundingTransfers.ts +153 -0
  581. package/src/db/tables/organizations.ts +16 -0
  582. package/src/db/tables/projects.ts +16 -0
  583. package/src/db/tables/requestUsage.ts +23 -0
  584. package/src/db/tables/sponsoredTransactions.test.ts +11 -0
  585. package/src/db/tables/sponsoredTransactions.ts +3 -3
  586. package/src/db/tables/users.ts +16 -0
  587. package/src/db/tables/verifiedTokens.ts +19 -14
  588. package/src/db/tables/webhookSubscriptions.ts +58 -3
  589. package/src/handlers/relay.test.ts +2 -0
  590. package/src/handlers/relay.ts +95 -99
  591. package/src/internal/Auth.test.ts +48 -0
  592. package/src/internal/Auth.ts +61 -2
  593. package/src/internal/Cache.ts +13 -9
  594. package/src/internal/Cursor.test.ts +2 -2
  595. package/src/internal/Cursor.ts +1 -1
  596. package/src/internal/EarnRates.test.ts +125 -0
  597. package/src/internal/EarnRates.ts +409 -0
  598. package/src/internal/EarnVaults.test.ts +195 -0
  599. package/src/internal/EarnVaults.ts +876 -0
  600. package/src/internal/EdgeCache.test.ts +19 -0
  601. package/src/internal/EdgeCache.ts +35 -5
  602. package/src/internal/Id.ts +14 -0
  603. package/src/internal/Idempotency.test.ts +109 -0
  604. package/src/internal/Idempotency.ts +237 -0
  605. package/src/internal/Log.test-d.ts +41 -8
  606. package/src/internal/Log.test.ts +189 -8
  607. package/src/internal/Log.ts +124 -17
  608. package/src/internal/MetricSink.test.ts +244 -4
  609. package/src/internal/MetricSink.ts +51 -1
  610. package/src/internal/OpenApi.ts +3 -0
  611. package/src/internal/Provider.test.ts +17 -0
  612. package/src/internal/Provider.ts +17 -0
  613. package/src/internal/Schema.ts +27 -17
  614. package/src/internal/Store.test.ts +25 -0
  615. package/src/internal/Store.ts +46 -0
  616. package/src/internal/Tidx.local.test.ts +78 -3
  617. package/src/internal/Tidx.test.ts +212 -18
  618. package/src/internal/Tidx.ts +112 -32
  619. package/src/internal/VerifiedTokens.test.ts +15 -0
  620. package/src/internal/Viem.test.ts +170 -17
  621. package/src/internal/Viem.ts +111 -28
  622. package/src/internal/WebhookDestination.ts +25 -23
  623. package/src/internal/Webhooks.test.ts +59 -0
  624. package/src/internal/Webhooks.ts +34 -10
  625. package/src/internal/exchange/Provider.test.ts +216 -0
  626. package/src/internal/exchange/Provider.ts +326 -0
  627. package/src/internal/exchange/index.test.ts +6 -0
  628. package/src/internal/exchange/index.ts +1 -0
  629. package/src/internal/exchange/providers/uniswap.test.ts +122 -0
  630. package/src/internal/exchange/providers/uniswap.ts +682 -0
  631. package/src/internal/funding/Action.test.ts +138 -0
  632. package/src/internal/funding/Action.ts +117 -0
  633. package/src/internal/funding/Catalog.test.ts +311 -0
  634. package/src/internal/funding/Catalog.ts +347 -0
  635. package/src/internal/funding/Chain.test.ts +79 -0
  636. package/src/internal/funding/Chain.ts +120 -0
  637. package/src/internal/funding/Deposit.test.ts +26 -0
  638. package/src/internal/funding/Deposit.ts +453 -0
  639. package/src/internal/funding/DepositAddress.test.ts +18 -0
  640. package/src/internal/funding/DepositAddress.ts +312 -0
  641. package/src/internal/funding/Evidence.test.ts +297 -0
  642. package/src/internal/funding/Evidence.ts +430 -0
  643. package/src/internal/funding/Provider.test.ts +1328 -0
  644. package/src/internal/funding/Provider.ts +1796 -0
  645. package/src/internal/funding/Reconciliation.local.test.ts +504 -0
  646. package/src/internal/funding/Reconciliation.test.ts +2020 -0
  647. package/src/internal/funding/Reconciliation.ts +930 -0
  648. package/src/internal/funding/Route.test.ts +66 -0
  649. package/src/internal/funding/Route.ts +29 -0
  650. package/src/internal/funding/Subsidy.local.test.ts +152 -0
  651. package/src/internal/funding/Subsidy.test.ts +75 -0
  652. package/src/internal/funding/Subsidy.ts +260 -0
  653. package/src/internal/funding/Token.test.ts +47 -0
  654. package/src/internal/funding/Token.ts +59 -0
  655. package/src/internal/funding/Transfer.test.ts +369 -0
  656. package/src/internal/funding/Transfer.ts +522 -0
  657. package/src/internal/funding/index.test.ts +20 -0
  658. package/src/internal/funding/index.ts +12 -0
  659. package/src/internal/funding/providers/across.ts +149 -0
  660. package/src/{apps/data/FundingQuoteProviders.test.ts → internal/funding/providers/index.test.ts} +178 -157
  661. package/src/internal/funding/providers/relay.test.ts +474 -0
  662. package/src/internal/funding/providers/relay.ts +559 -0
  663. package/src/internal/funding/providers/rhino.ts +139 -0
  664. package/src/internal/funding/providers/squid.ts +151 -0
  665. package/src/internal/funding/providers/symbiosis.ts +221 -0
  666. package/src/internal/index.test.ts +5 -1
  667. package/src/internal/index.ts +5 -1
  668. package/src/internal/webhookDestinations/url.ts +49 -45
  669. package/src/providers/index.test.ts +14 -0
  670. package/src/providers/index.ts +54 -0
  671. package/dist/apps/data/FundingQuoteProviders.d.ts +0 -174
  672. package/dist/apps/data/FundingQuoteProviders.d.ts.map +0 -1
  673. package/dist/apps/data/FundingQuoteProviders.js +0 -775
  674. package/dist/apps/data/FundingQuoteProviders.js.map +0 -1
  675. package/dist/internal/FundingQuotes.d.ts +0 -864
  676. package/dist/internal/FundingQuotes.d.ts.map +0 -1
  677. package/dist/internal/FundingQuotes.js +0 -672
  678. package/dist/internal/FundingQuotes.js.map +0 -1
  679. package/src/apps/data/FundingQuoteProviders.ts +0 -1043
  680. package/src/internal/FundingQuotes.test.ts +0 -456
  681. package/src/internal/FundingQuotes.ts +0 -944
@@ -0,0 +1,266 @@
1
+ import * as z from 'zod/mini';
2
+ import * as Schema from './Schema.js';
3
+ import * as Store from './Store.js';
4
+ import * as Ttl from './Ttl.js';
5
+ import * as Value from './Value.js';
6
+ const migratedSignature = 'event EngineMigrated(address indexed oldEngine,address indexed newEngine,uint256 oldEngineShares,uint256 assetsMoved,uint256 newEngineShares,uint256 totalEarnShares,uint256 anchorEngineShares,uint256 anchorEarnShares)';
7
+ /** Identifier of the rate calculation, versioned so a change is visible to callers. */
8
+ const methodology = 'share-price-growth-annualized:v1';
9
+ /** Width of the UTC bucket every measurement is anchored to. */
10
+ const bucketWidth = Ttl.minutes(15);
11
+ /** Withheld from the anchor so an unconfirmed head block cannot move a boundary. */
12
+ const confirmationDelay = Ttl.seconds(30);
13
+ /** Default window, used when the caller does not select one. */
14
+ const defaultWindow = '7d';
15
+ /**
16
+ * Selectable measurement windows. A closed set bounds both the rate cache and
17
+ * the historical read volume: every distinct window is its own cache entry and
18
+ * its own pair of boundary reads.
19
+ */
20
+ const windows = ['1h', '1d', '7d', '30d'];
21
+ /** Length of every selectable window in whole hours. */
22
+ const windowHours = {
23
+ '1h': 1,
24
+ '1d': 24,
25
+ '7d': 24 * 7,
26
+ '30d': 24 * 30,
27
+ };
28
+ /** Longest selectable window, which also bounds the migration scan. */
29
+ const maxWindowHours = Math.max(...Object.values(windowHours));
30
+ /**
31
+ * Row cap on the migration scan. Engine migrations are rare, so a scan that
32
+ * fills the cap cannot be trusted to be complete and resets every window.
33
+ */
34
+ const migrationScanLimit = 500;
35
+ /** Decimal places of the returned ratio, matching the API's value precision. */
36
+ const netPrecision = 6;
37
+ /** `Number.toFixed` switches to exponential notation here, which the ratio contract forbids. */
38
+ const netCeiling = 1e21;
39
+ /**
40
+ * Shares quoted at both boundaries. Large so the assets-per-share ratio is not
41
+ * quantized by asset base units; the amount cancels in the ratio.
42
+ */
43
+ const quotedShares = 10n ** 18n;
44
+ const secondsPerYear = 365 * 24 * 60 * 60;
45
+ /** Zod schemas owned by the Earn rate resolver. */
46
+ export var schema;
47
+ (function (schema) {
48
+ /** Annualized share-price growth over one measurement window. */
49
+ schema.Apy = z
50
+ .strictObject({
51
+ asOf: z.iso
52
+ .datetime()
53
+ .check(z.describe('UTC instant the rate was measured to, rounded to a 15-minute bucket.'), z.meta({ examples: ['2026-07-21T09:00:00.000Z'] })),
54
+ methodology: z
55
+ .literal(methodology)
56
+ .check(z.describe('Identifier of the calculation that produced this rate.'), z.meta({ examples: [methodology] })),
57
+ net: z
58
+ .string()
59
+ .check(z.regex(/^-?\d+(\.\d+)?$/), z.describe('Annualized fee-aware share-price growth, as a decimal ratio.'), z.meta({ examples: ['0.041200'] })),
60
+ window: z
61
+ .enum(windows)
62
+ .check(z.describe('Window this rate covers.'), z.meta({ examples: [defaultWindow] })),
63
+ })
64
+ .check(z.describe('Annualized share-price growth over one measurement window.'));
65
+ /**
66
+ * Measurement window selected by a request. Stays absent when omitted so a
67
+ * caller who never asked for a rate is distinguishable from one who selected
68
+ * the default window.
69
+ */
70
+ schema.Window = z
71
+ .optional(z.enum(windows))
72
+ .check(z.describe('Rate measurement window. Selecting a window includes `apy`, which measures `7d` on its own.'), z.meta({ examples: [defaultWindow] }));
73
+ })(schema || (schema = {}));
74
+ /** Returns the confirmed 15-minute UTC bucket rates are measured to. */
75
+ export function asOf() {
76
+ const anchor = Math.floor((Date.now() - confirmationDelay) / bucketWidth) * bucketWidth;
77
+ return new Date(anchor).toISOString();
78
+ }
79
+ /**
80
+ * Resolves the annualized rate of every vault on a page, keyed by lowercase
81
+ * vault address. A vault maps to `null` when its rate cannot be measured.
82
+ */
83
+ export async function resolve(options) {
84
+ const { chainId, store } = options;
85
+ const window = options.window ?? defaultWindow;
86
+ const vaults = [...new Set(options.vaults.map((vault) => Schema.Address.parse(vault)))];
87
+ if (vaults.length === 0)
88
+ return new Map();
89
+ const measuredAt = asOf();
90
+ let pending;
91
+ // Boundary blocks, the migration scan, and both quote batches load once per
92
+ // page, and only when a vault misses its cached rate. Rate enrichment never
93
+ // fails a page, so an unreadable window leaves every vault unmeasured.
94
+ const measure = () => (pending ??= measurePage({ ...options, measuredAt, vaults, window }).catch(() => undefined));
95
+ const entries = await Promise.all(vaults.map(async (vault) => {
96
+ const apy = await Store.memoize(async () => {
97
+ const measured = await measure();
98
+ const net = measured?.rates.get(vault);
99
+ if (net === undefined || measured === undefined)
100
+ return null;
101
+ // Labelled with the boundaries' own instant: cached boundaries can
102
+ // predate this request's bucket, and the label must match the prices.
103
+ return { asOf: measured.measuredAt, methodology, net, window };
104
+ }, {
105
+ // Keyed without the bucket so the entry is revisited and lazily
106
+ // evicted; `fx:v1:<oracle>` sets the same stable-key precedent. The
107
+ // cached value keeps the `asOf` it was measured at.
108
+ key: `earn-apy:v1:${chainId}:${vault}:${window}`,
109
+ store,
110
+ ttl: bucketWidth,
111
+ });
112
+ return [vault, apy];
113
+ }));
114
+ return new Map(entries);
115
+ }
116
+ /**
117
+ * Annualizes share-price growth between two measured boundaries. Returns `null`
118
+ * for a degenerate window, a zero starting price, or growth too extreme to
119
+ * express as a decimal ratio.
120
+ */
121
+ export function annualize(options) {
122
+ const { end, start } = options;
123
+ const elapsed = end.timestamp - start.timestamp;
124
+ if (elapsed <= 0 || start.price <= 0n)
125
+ return null;
126
+ const net = (Number(end.price) / Number(start.price)) ** (secondsPerYear / elapsed) - 1;
127
+ if (!Number.isFinite(net) || Math.abs(net) >= netCeiling)
128
+ return null;
129
+ return net.toFixed(netPrecision);
130
+ }
131
+ async function measurePage(options) {
132
+ const endAt = Date.parse(options.measuredAt);
133
+ const boundaries = await boundaryBlocks({
134
+ ...options,
135
+ endAt,
136
+ startAt: endAt - windowHours[options.window] * Ttl.hour(1),
137
+ });
138
+ if (!boundaries)
139
+ return undefined;
140
+ const { end, measuredAt, start } = boundaries;
141
+ const client = options.getClient(options.chainId);
142
+ const quote = (blockNumber, vault) => client.earn.getRedeemQuote({ blockNumber, shareAmount: quotedShares, vault }).then((price) => price, () => undefined);
143
+ const rates = new Map();
144
+ await Promise.all(options.vaults.map(async (vault) => {
145
+ // Concurrent quotes collapse into one deployless multicall per block.
146
+ const [startPrice, endPrice] = await Promise.all([
147
+ quote(start.number, vault),
148
+ quote(end.number, vault),
149
+ ]);
150
+ if (startPrice === undefined || endPrice === undefined)
151
+ return;
152
+ const net = annualize({
153
+ end: { price: endPrice, timestamp: end.timestamp },
154
+ start: { price: startPrice, timestamp: start.timestamp },
155
+ });
156
+ if (net !== null)
157
+ rates.set(vault, net);
158
+ }));
159
+ if (rates.size === 0)
160
+ return { measuredAt, rates };
161
+ // A migration inside the window bridges two different yield engines, so the
162
+ // window resets instead of reporting growth across the swap. Scanned only
163
+ // once a rate exists for it to invalidate.
164
+ const migrations = await recentMigrations(options);
165
+ if (!migrations)
166
+ return undefined;
167
+ for (const { blockNumber, vault } of migrations)
168
+ if (blockNumber > start.number && blockNumber <= end.number)
169
+ rates.delete(vault);
170
+ return { measuredAt, rates };
171
+ }
172
+ /**
173
+ * Resolves the last indexed block at or before each end of the window. Returns
174
+ * undefined when either boundary is missing, both land on one block, or the
175
+ * indexer lags a boundary.
176
+ */
177
+ async function boundaryBlocks(options) {
178
+ const { chainId, endAt, startAt, window } = options;
179
+ const endInstant = new Date(endAt).toISOString();
180
+ const startInstant = new Date(startAt).toISOString();
181
+ const measured = await Store.memoize(async () => {
182
+ // `blocks` indexes every block, empty ones included, so the last row at or
183
+ // before an instant is the exact boundary. Both boundaries share one
184
+ // request because the indexer sheds load by request count, not rows read.
185
+ const result = await options.getTidx(chainId).fetch({
186
+ chainId,
187
+ query: `
188
+ (SELECT num, timestamp FROM blocks WHERE timestamp <= '${endInstant}' ORDER BY num DESC LIMIT 1)
189
+ UNION ALL
190
+ (SELECT num, timestamp FROM blocks WHERE timestamp <= '${startInstant}' ORDER BY num DESC LIMIT 1)
191
+ `,
192
+ });
193
+ const rows = result.rows.flatMap((row) => {
194
+ const number = Value.toIntegerString(row['num']);
195
+ const timestamp = Value.toIsoDateTime(row['timestamp']);
196
+ return number === undefined || timestamp === undefined
197
+ ? []
198
+ : [{ number, timestamp: Math.floor(Date.parse(timestamp) / 1000) }];
199
+ });
200
+ // The instants travel with the rows so a hit from an earlier bucket is
201
+ // judged, and labelled, against the instants it was resolved for.
202
+ return { endAt, rows, startAt };
203
+ }, {
204
+ key: `earn-apy:v1:${chainId}:blocks:${window}`,
205
+ store: options.store,
206
+ ttl: bucketWidth,
207
+ });
208
+ // The window start precedes indexed history whenever a boundary is missing;
209
+ // the newer boundary always resolves once the older one does.
210
+ const [end, start] = [...measured.rows].sort((a, b) => BigInt(a.number) < BigInt(b.number) ? 1 : -1);
211
+ if (!end || !start || end.number === start.number)
212
+ return undefined;
213
+ // A boundary further behind its instant than one bucket means the indexer is
214
+ // lagging, and the measured elapsed time would not match the window.
215
+ if (measured.endAt - end.timestamp * 1000 > bucketWidth)
216
+ return undefined;
217
+ if (measured.startAt - start.timestamp * 1000 > bucketWidth)
218
+ return undefined;
219
+ return {
220
+ end: { number: BigInt(end.number), timestamp: end.timestamp },
221
+ measuredAt: new Date(measured.endAt).toISOString(),
222
+ start: { number: BigInt(start.number), timestamp: start.timestamp },
223
+ };
224
+ }
225
+ /**
226
+ * Engine migrations indexed over the longest selectable window, so one scan
227
+ * serves every window and page anchored to the same instant. Returns undefined
228
+ * when the scan filled its row cap and a migration may be missing.
229
+ */
230
+ async function recentMigrations(options) {
231
+ const { chainId, measuredAt } = options;
232
+ // One bucket of slack because this scan and the boundaries expire
233
+ // independently; scanning further back only resets more windows.
234
+ const since = new Date(Date.parse(measuredAt) - maxWindowHours * Ttl.hour(1) - bucketWidth).toISOString();
235
+ const migrations = await Store.memoize(async () => {
236
+ // The emitting `address` is the vault; page and window filtering happens
237
+ // on the scanned rows so this stays one query per anchor.
238
+ const result = await options.getTidx(chainId).fetch({
239
+ chainId,
240
+ query: `
241
+ SELECT address, block_num
242
+ FROM EngineMigrated
243
+ WHERE block_timestamp > '${since}' AND block_timestamp <= '${measuredAt}'
244
+ ORDER BY block_num DESC
245
+ LIMIT ${migrationScanLimit + 1}
246
+ `,
247
+ signatures: [migratedSignature],
248
+ });
249
+ const rows = result.rows;
250
+ if (rows.length > migrationScanLimit)
251
+ return null;
252
+ return rows.flatMap((row) => {
253
+ const blockNumber = Value.toIntegerString(row['block_num']);
254
+ const vault = Value.toText(row['address']);
255
+ return blockNumber && vault ? [{ blockNumber, vault: vault.toLowerCase() }] : [];
256
+ });
257
+ }, {
258
+ key: `earn-apy:v1:${chainId}:migrations`,
259
+ store: options.store,
260
+ ttl: bucketWidth,
261
+ });
262
+ if (!migrations)
263
+ return undefined;
264
+ return migrations.map(({ blockNumber, vault }) => ({ blockNumber: BigInt(blockNumber), vault }));
265
+ }
266
+ //# sourceMappingURL=EarnRates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EarnRates.js","sourceRoot":"","sources":["../../src/internal/EarnRates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAGnC,MAAM,iBAAiB,GACrB,2NAA2N,CAAA;AAE7N,uFAAuF;AACvF,MAAM,WAAW,GAAG,kCAA2C,CAAA;AAE/D,gEAAgE;AAChE,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAEnC,oFAAoF;AACpF,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;AAEzC,gEAAgE;AAChE,MAAM,aAAa,GAAG,IAAI,CAAA;AAE1B;;;;GAIG;AACH,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAU,CAAA;AAElD,wDAAwD;AACxD,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,EAAE,GAAG,EAAE;CAC2B,CAAA;AAE3C,uEAAuE;AACvE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;AAE9D;;;GAGG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAE9B,gFAAgF;AAChF,MAAM,YAAY,GAAG,CAAC,CAAA;AAEtB,gGAAgG;AAChG,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB;;;GAGG;AACH,MAAM,YAAY,GAAG,GAAG,IAAI,GAAG,CAAA;AAE/B,MAAM,cAAc,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAEzC,mDAAmD;AACnD,MAAM,KAAW,MAAM,CA0CtB;AA1CD,WAAiB,MAAM;IACrB,iEAAiE;IACpD,UAAG,GAAG,CAAC;SACjB,YAAY,CAAC;QACZ,IAAI,EAAE,CAAC,CAAC,GAAG;aACR,QAAQ,EAAE;aACV,KAAK,CACJ,CAAC,CAAC,QAAQ,CAAC,sEAAsE,CAAC,EAClF,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CACnD;QACH,WAAW,EAAE,CAAC;aACX,OAAO,CAAC,WAAW,CAAC;aACpB,KAAK,CACJ,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC,EACpE,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CACpC;QACH,GAAG,EAAE,CAAC;aACH,MAAM,EAAE;aACR,KAAK,CACJ,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAC1B,CAAC,CAAC,QAAQ,CAAC,8DAA8D,CAAC,EAC1E,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CACnC;QACH,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,OAAO,CAAC;aACb,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;KACxF,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC,CAAC,CAAA;IAElF;;;;OAIG;IACU,aAAM,GAAG,CAAC;SACpB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACzB,KAAK,CACJ,CAAC,CAAC,QAAQ,CACR,6FAA6F,CAC9F,EACD,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CACtC,CAAA;AACL,CAAC,EA1CgB,MAAM,KAAN,MAAM,QA0CtB;AAQD,wEAAwE;AACxE,MAAM,UAAU,IAAI;IAClB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC,GAAG,WAAW,CAAC,GAAG,WAAW,CAAA;IACvF,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAwB;IACpD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAA;IAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACvF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAA;IAEzC,MAAM,UAAU,GAAG,IAAI,EAAE,CAAA;IACzB,IAAI,OAAqD,CAAA;IACzD,4EAA4E;IAC5E,4EAA4E;IAC5E,uEAAuE;IACvE,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,CAAC,OAAO,KAAK,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAE9F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAC7B,KAAK,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAA;YAChC,MAAM,GAAG,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACtC,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAA;YAC5D,mEAAmE;YACnE,sEAAsE;YACtE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;QAChE,CAAC,EACD;YACE,gEAAgE;YAChE,oEAAoE;YACpE,oDAAoD;YACpD,GAAG,EAAE,eAAe,OAAO,IAAI,KAAK,IAAI,MAAM,EAAE;YAChD,KAAK;YACL,GAAG,EAAE,WAAW;SACjB,CACF,CAAA;QACD,OAAO,CAAC,KAAK,EAAE,GAAG,CAAU,CAAA;IAC9B,CAAC,CAAC,CACH,CAAA;IACD,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC;AAoBD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAA0B;IAClD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;IAC/C,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE;QAAE,OAAO,IAAI,CAAA;IAClD,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACvF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU;QAAE,OAAO,IAAI,CAAA;IACrE,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;AAClC,CAAC;AAqCD,KAAK,UAAU,WAAW,CAAC,OAA4B;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC;QACtC,GAAG,OAAO;QACV,KAAK;QACL,OAAO,EAAE,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3D,CAAC,CAAA;IACF,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAA;IACjC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;IAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACjD,MAAM,KAAK,GAAG,CAAC,WAAmB,EAAE,KAAc,EAAE,EAAE,CACpD,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAChF,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAChB,GAAG,EAAE,CAAC,SAAS,CAChB,CAAA;IAEH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACjC,sEAAsE;QACtE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;SACzB,CAAC,CAAA;QACF,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAM;QAC9D,MAAM,GAAG,GAAG,SAAS,CAAC;YACpB,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE;YAClD,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;SACzD,CAAC,CAAA;QACF,IAAI,GAAG,KAAK,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACzC,CAAC,CAAC,CACH,CAAA;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IAElD,4EAA4E;IAC5E,0EAA0E;IAC1E,2CAA2C;IAC3C,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAClD,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAA;IACjC,KAAK,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,UAAU;QAC7C,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,IAAI,GAAG,CAAC,MAAM;YAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAClF,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;AAC9B,CAAC;AAiBD;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAAC,OAA+B;IAC3D,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACnD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;IAChD,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAClC,KAAK,IAAI,EAAE;QACT,2EAA2E;QAC3E,qEAAqE;QACrE,0EAA0E;QAC1E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;YAClD,OAAO;YACP,KAAK,EAAE;mEACoD,UAAU;;mEAEV,YAAY;SAC5D;SACZ,CAAC,CAAA;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;YAChD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;YACvD,OAAO,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS;gBACpD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;QACvE,CAAC,CAAC,CAAA;QACF,uEAAuE;QACvE,kEAAkE;QAClE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IACjC,CAAC,EACD;QACE,GAAG,EAAE,eAAe,OAAO,WAAW,MAAM,EAAE;QAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,WAAW;KACjB,CACF,CAAA;IAED,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACpD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAA;IACD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IACnE,6EAA6E;IAC7E,qEAAqE;IACrE,IAAI,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW;QAAE,OAAO,SAAS,CAAA;IACzE,IAAI,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,WAAW;QAAE,OAAO,SAAS,CAAA;IAC7E,OAAO;QACL,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE;QAC7D,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;QAClD,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;KACpE,CAAA;AACH,CAAC;AAaD;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAC7B,OAAiC;IAEjC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IACvC,kEAAkE;IAClE,iEAAiE;IACjE,MAAM,KAAK,GAAG,IAAI,IAAI,CACpB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CACpE,CAAC,WAAW,EAAE,CAAA;IACf,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,CACpC,KAAK,IAAI,EAAE;QACT,yEAAyE;QACzE,0DAA0D;QAC1D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;YAClD,OAAO;YACP,KAAK,EAAE;;;qCAGsB,KAAK,6BAA6B,UAAU;;kBAE/D,kBAAkB,GAAG,CAAC;SACrB;YACX,UAAU,EAAE,CAAC,iBAAiB,CAAC;SAChC,CAAC,CAAA;QACF,MAAM,IAAI,GAAuC,MAAM,CAAC,IAAI,CAAA;QAC5D,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB;YAAE,OAAO,IAAI,CAAA;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;YAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;YAC1C,OAAO,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAClF,CAAC,CAAC,CAAA;IACJ,CAAC,EACD;QACE,GAAG,EAAE,eAAe,OAAO,aAAa;QACxC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,WAAW;KACjB,CACF,CAAA;IACD,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAA;IACjC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;AAClG,CAAC"}
@@ -0,0 +1,171 @@
1
+ import type { Chain } from 'viem';
2
+ import * as z from 'zod/mini';
3
+ import * as Viem from './Viem.js';
4
+ /** Zod schemas owned by the Earn vault resolver. */
5
+ export declare namespace schema {
6
+ /** Schema selecting one onchain Earn vault. */
7
+ const ResolveInput: z.ZodMiniObject<{
8
+ chainId: z.ZodMiniPipe<z.ZodMiniUnion<readonly [z.ZodMiniPipe<z.ZodMiniEnum<{
9
+ mainnet: "mainnet";
10
+ testnet: "testnet";
11
+ }>, z.ZodMiniTransform<4217 | 42431, "mainnet" | "testnet">>, z.ZodMiniNumber<unknown>]>, z.ZodMiniNumber<number>>;
12
+ vaultAddress: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
13
+ }, z.core.$strict>;
14
+ /** Schema for live state resolved from one Earn vault. */
15
+ const Discovery: z.ZodMiniObject<{
16
+ access: z.ZodMiniOptional<z.ZodMiniObject<{
17
+ status: z.ZodMiniEnum<{
18
+ allowlisted: "allowlisted";
19
+ open: "open";
20
+ }>;
21
+ }, z.core.$strict>>;
22
+ assetToken: z.ZodMiniObject<{
23
+ address: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
24
+ currency: z.ZodMiniString<string>;
25
+ decimals: z.ZodMiniNumber<number>;
26
+ name: z.ZodMiniString<string>;
27
+ symbol: z.ZodMiniString<string>;
28
+ }, z.core.$strict>;
29
+ capabilities: z.ZodMiniOptional<z.ZodMiniObject<{
30
+ asyncRedeem: z.ZodMiniBoolean<boolean>;
31
+ boundedRedeem: z.ZodMiniBoolean<boolean>;
32
+ deposit: z.ZodMiniBoolean<boolean>;
33
+ exactWithdraw: z.ZodMiniBoolean<boolean>;
34
+ inKindDeposit: z.ZodMiniBoolean<boolean>;
35
+ privateRouting: z.ZodMiniBoolean<boolean>;
36
+ redeem: z.ZodMiniBoolean<boolean>;
37
+ routerSwaps: z.ZodMiniBoolean<boolean>;
38
+ }, z.core.$strict>>;
39
+ chainId: z.ZodMiniPipe<z.ZodMiniUnion<readonly [z.ZodMiniPipe<z.ZodMiniEnum<{
40
+ mainnet: "mainnet";
41
+ testnet: "testnet";
42
+ }>, z.ZodMiniTransform<4217 | 42431, "mainnet" | "testnet">>, z.ZodMiniNumber<unknown>]>, z.ZodMiniNumber<number>>;
43
+ engine: z.ZodMiniObject<{
44
+ address: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
45
+ type: z.ZodMiniNullable<z.ZodMiniEnum<{
46
+ erc4626: "erc4626";
47
+ veda: "veda";
48
+ }>>;
49
+ venue: z.ZodMiniNullable<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
50
+ }, z.core.$strict>;
51
+ instantLiquidity: z.ZodMiniNullable<z.ZodMiniString<string>>;
52
+ sharePrice: z.ZodMiniNullable<z.ZodMiniString<string>>;
53
+ shareToken: z.ZodMiniObject<{
54
+ address: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
55
+ currency: z.ZodMiniString<string>;
56
+ decimals: z.ZodMiniNumber<number>;
57
+ name: z.ZodMiniString<string>;
58
+ symbol: z.ZodMiniString<string>;
59
+ }, z.core.$strict>;
60
+ state: z.ZodMiniObject<{
61
+ depositsPaused: z.ZodMiniBoolean<boolean>;
62
+ engineShares: z.ZodMiniString<string>;
63
+ feesActive: z.ZodMiniBoolean<boolean>;
64
+ isAccountingAligned: z.ZodMiniBoolean<boolean>;
65
+ openRedeemRequestCount: z.ZodMiniNumber<number>;
66
+ totalAssets: z.ZodMiniString<string>;
67
+ totalEarnShares: z.ZodMiniString<string>;
68
+ }, z.core.$strict>;
69
+ vaultAddress: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
70
+ }, z.core.$strict>;
71
+ }
72
+ /** Live state resolved from an Earn vault. */
73
+ export type Discovery = z.output<typeof schema.Discovery>;
74
+ /** Onchain identity of an Earn vault. */
75
+ export type ResolveInput = z.output<typeof schema.ResolveInput>;
76
+ /** Stable code describing an onchain verification issue. */
77
+ export type VerificationIssueCode = 'chain-mismatch' | 'engine-asset-mismatch' | 'policy-unsupported' | 'read-failed';
78
+ /** One onchain verification issue. */
79
+ export type VerificationIssue = {
80
+ /** Observed value, when available. */
81
+ actual?: string | undefined;
82
+ /** Stable machine-readable issue code. */
83
+ code: VerificationIssueCode;
84
+ /** Expected value, when available. */
85
+ expected?: string | undefined;
86
+ /** Human-readable issue detail. */
87
+ message: string;
88
+ };
89
+ /** Token and vault state observed during verification. */
90
+ export type VerificationSnapshot = {
91
+ /** Asset token observed onchain. */
92
+ assetToken?: Discovery['assetToken'] | undefined;
93
+ /** Whether vault supply matches its engine backing. */
94
+ isSynced?: boolean | undefined;
95
+ /** Share token observed onchain. */
96
+ shareToken?: Discovery['shareToken'] | undefined;
97
+ };
98
+ type VerificationMismatch = {
99
+ /** Issues found while reading the deployment. */
100
+ issues: readonly VerificationIssue[];
101
+ /** Token and vault state observed during verification. */
102
+ snapshot: VerificationSnapshot;
103
+ /** Indicates that onchain state is incompatible. */
104
+ status: 'mismatch';
105
+ };
106
+ type VerificationUnavailable = {
107
+ /** Issue that prevented verification. */
108
+ issues: readonly VerificationIssue[];
109
+ /** Indicates that verification could not complete. */
110
+ status: 'unavailable';
111
+ };
112
+ type VerificationFailure = VerificationMismatch | VerificationUnavailable;
113
+ /** Resolves one Earn vault from its onchain identity. */
114
+ export declare function resolve(options: resolve.ProjectedOptions): Promise<Discovery>;
115
+ /** Resolves every optional Earn vault field. */
116
+ export declare function resolve(options: resolve.Options): Promise<resolve.CompleteDiscovery>;
117
+ export declare namespace resolve {
118
+ /** Fully resolved Earn vault state. */
119
+ type CompleteDiscovery = Discovery & {
120
+ /** Vault share-token access. */
121
+ access: NonNullable<Discovery['access']>;
122
+ /** Actions supported by the vault. */
123
+ capabilities: NonNullable<Discovery['capabilities']>;
124
+ };
125
+ /** Optional onchain fields to resolve. */
126
+ type Include = 'access' | 'capabilities';
127
+ /** Options for resolving one Earn vault. */
128
+ type Options = {
129
+ /** Resolves the onchain client used to read the vault. */
130
+ getClient: Viem.GetClient;
131
+ /** Chain and vault identity to resolve. */
132
+ input: unknown;
133
+ /** Private zones available to Earn routers. */
134
+ zones: readonly Chain[];
135
+ };
136
+ /** Options for resolving selected optional fields. */
137
+ type ProjectedOptions = Options & {
138
+ /** Optional onchain fields to resolve. */
139
+ include: readonly Include[];
140
+ };
141
+ }
142
+ /** Infers the supported engine type from its capability fingerprint. */
143
+ export declare function classifyEngineType(options: classifyEngineType.Options): classifyEngineType.ReturnType;
144
+ export declare namespace classifyEngineType {
145
+ /** Capability fingerprint used to classify an engine. */
146
+ type Options = {
147
+ /** Whether queued redemptions are supported. */
148
+ asyncRedeem: boolean;
149
+ /** Whether venue-share deposits are supported. */
150
+ inKindDeposit: boolean;
151
+ };
152
+ /** Supported engine type, or null for an unknown fingerprint. */
153
+ type ReturnType = 'erc4626' | 'veda' | null;
154
+ }
155
+ /** Thrown when an Earn resolver value fails schema validation. */
156
+ export declare class InvalidRegistryError extends Error {
157
+ name: string;
158
+ }
159
+ /** Thrown when a requested Earn vault does not exist. */
160
+ export declare class NotFoundError extends Error {
161
+ name: string;
162
+ }
163
+ /** Thrown when onchain verification rejects an Earn vault. */
164
+ export declare class VerificationError extends Error {
165
+ /** Failed verification result. */
166
+ result: VerificationFailure;
167
+ constructor(result: VerificationFailure);
168
+ name: string;
169
+ }
170
+ export {};
171
+ //# sourceMappingURL=EarnVaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EarnVaults.d.ts","sourceRoot":"","sources":["../../src/internal/EarnVaults.ts"],"names":[],"mappings":"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"}