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,572 @@
1
+ import { type Context, Hono } from 'hono'
2
+ import * as z from 'zod/mini'
3
+
4
+ import * as Earn from '../../apps/data/routes/earn.js'
5
+ import * as Db from '../../db/Db.js'
6
+ import * as core_EarnVaults from '../../db/tables/earnVaults.js'
7
+ import * as Cursor from '../../internal/Cursor.js'
8
+ import * as EarnVaults from '../../internal/EarnVaults.js'
9
+ import * as OpenApi from '../../internal/OpenApi.js'
10
+ import * as Path from '../../internal/Path.js'
11
+ import * as Response from '../../internal/Response.js'
12
+ import * as Schema from '../../internal/Schema.js'
13
+ import * as VerifiedTokens from '../../internal/VerifiedTokens.js'
14
+ import * as Viem from '../../internal/Viem.js'
15
+ import type * as App from '../App.js'
16
+
17
+ /** Zod schemas owned by the admin verified-vault handler. */
18
+ export namespace schema {
19
+ /** One Earn vault, shared with the public detail API. */
20
+ export const Vault = Earn.schema.Vault
21
+
22
+ /** One registry-curated Earn vault, shared with the public verified list. */
23
+ export const VerifiedVault = Earn.schema.VerifiedVault
24
+
25
+ /** Schemas for the listVerifiedEarnVaults operation. */
26
+ export namespace listVerifiedEarnVaults {
27
+ /** Query parameters for verified Earn vaults, without the public rate window. */
28
+ export const Query = Earn.schema.getVerifiedEarnVaults.BaseQuery
29
+
30
+ /** Paginated verified Earn vaults. */
31
+ export const Response = Earn.schema.getVerifiedEarnVaults.Response
32
+ }
33
+
34
+ /** Schemas for the getVerifiedEarnVault operation. */
35
+ export namespace getVerifiedEarnVault {
36
+ /** Path parameters identifying one verified vault. */
37
+ export const Params = Earn.schema.getEarnVault.Params
38
+
39
+ /** Query parameters selecting the vault chain and included fields. */
40
+ export const Query = Earn.schema.getEarnVault.BaseQuery
41
+
42
+ /** One Earn vault resolved for registry management. */
43
+ export const Response = Vault
44
+ }
45
+
46
+ /** Schemas for the putVerifiedEarnVault operation. */
47
+ export namespace putVerifiedEarnVault {
48
+ /** Curated fields used to verify and store one Earn vault. */
49
+ export const Body = z
50
+ .strictObject({
51
+ chainId: Schema.ChainId,
52
+ description: z
53
+ .optional(
54
+ z.nullable(
55
+ z.string().check(
56
+ z.describe('Curated vault description.'),
57
+ z.meta({
58
+ examples: [
59
+ 'Bridge test PATHUSD deposited into the canonical synchronous Earn stack.',
60
+ ],
61
+ }),
62
+ ),
63
+ ),
64
+ )
65
+ .check(z.describe('Curated vault description, or null when absent.')),
66
+ label: z
67
+ .optional(
68
+ z
69
+ .string()
70
+ .check(
71
+ z.minLength(1),
72
+ z.describe('Curated vault label.'),
73
+ z.meta({ examples: ['btPATHUSD Earn'] }),
74
+ ),
75
+ )
76
+ .check(z.describe('Curated vault label, defaulting to the share-token name.')),
77
+ privateInputTokens: z
78
+ .optional(z.array(Schema.Address))
79
+ .check(z.describe('Tokens accepted for private deposits.')),
80
+ privateOutputTokens: z
81
+ .optional(z.array(Schema.Address))
82
+ .check(z.describe('Tokens supported for private redemptions.')),
83
+ slug: z
84
+ .optional(
85
+ z
86
+ .string()
87
+ .check(
88
+ z.minLength(1),
89
+ z.regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/),
90
+ z.describe('Stable curated vault slug.'),
91
+ z.meta({ examples: ['btpathusd-earn'] }),
92
+ ),
93
+ )
94
+ .check(z.describe('Custom vault slug, generated from the label when omitted.')),
95
+ vaultAddress: Schema.Address.check(
96
+ z.describe('Earn vault contract address.'),
97
+ z.meta({ examples: ['0xf4ae63687d6753a78e7f551d2eda1d0d31a5ea3a'] }),
98
+ ),
99
+ })
100
+ .check(z.describe('Curated fields used to verify and store one Earn vault.'))
101
+
102
+ /** The verified vault after the write. */
103
+ export const Response = VerifiedVault
104
+ }
105
+
106
+ /** Schemas for the deleteVerifiedEarnVault operation. */
107
+ export namespace deleteVerifiedEarnVault {
108
+ /** Path parameters identifying one verified vault. */
109
+ export const Params = Earn.schema.getEarnVault.Params
110
+
111
+ /** Query parameters selecting the vault chain. */
112
+ export const Query = z
113
+ .strictObject({ chainId: Schema.ChainId })
114
+ .check(z.describe('Query parameters selecting one verified Earn vault.'))
115
+ }
116
+ }
117
+
118
+ /** Admin routes for reading and managing verified Earn vaults. */
119
+ export function earnVaults() {
120
+ return new Hono<App.Environment>()
121
+ .get(
122
+ '/',
123
+ OpenApi.validate('query', schema.listVerifiedEarnVaults.Query, {
124
+ code: 'query_invalid',
125
+ message: 'Invalid query parameters',
126
+ }),
127
+ OpenApi.describeRoute({
128
+ operationId: 'listVerifiedEarnVaults',
129
+ responses: OpenApi.responses({
130
+ success: {
131
+ description: 'A page of verified Earn vaults.',
132
+ schema: schema.listVerifiedEarnVaults.Response,
133
+ },
134
+ }),
135
+ summary: 'List verified vaults',
136
+ tags: ['Earn Vaults'],
137
+ }),
138
+ async (c) => {
139
+ const query = c.req.valid('query')
140
+ try {
141
+ const chainId = query.chainId ?? Viem.defaultChainId
142
+ const data = await listVerifiedVaults(c, { ...query, chainId })
143
+ return c.json(Response.validated(schema.listVerifiedEarnVaults.Response, data), 200)
144
+ } catch (cause) {
145
+ return Response.upstream(c, cause)
146
+ }
147
+ },
148
+ )
149
+ .get(
150
+ '/:vaultId',
151
+ OpenApi.validate('param', schema.getVerifiedEarnVault.Params, {
152
+ code: 'vault_id_invalid',
153
+ message: 'Invalid vault id',
154
+ }),
155
+ OpenApi.validate('query', schema.getVerifiedEarnVault.Query, {
156
+ code: 'query_invalid',
157
+ message: 'Invalid query parameters',
158
+ }),
159
+ OpenApi.describeRoute({
160
+ operationId: 'getVerifiedEarnVault',
161
+ responses: OpenApi.responses({
162
+ errors: {
163
+ 404: {
164
+ codes: ['earn_vault_not_found'],
165
+ description: 'The verified vault was not found.',
166
+ },
167
+ },
168
+ success: {
169
+ description: 'One verified Earn vault.',
170
+ schema: schema.getVerifiedEarnVault.Response,
171
+ },
172
+ }),
173
+ summary: 'Get verified vault',
174
+ tags: ['Earn Vaults'],
175
+ }),
176
+ async (c) => {
177
+ const { vaultId } = c.req.valid('param')
178
+ const query = c.req.valid('query')
179
+ const chainId = query.chainId ?? Viem.defaultChainId
180
+ try {
181
+ const data = await getVault(c, {
182
+ chainId,
183
+ include: query.include,
184
+ vaultAddress: vaultId,
185
+ })
186
+ return c.json(Response.validated(schema.getVerifiedEarnVault.Response, data), 200)
187
+ } catch (cause) {
188
+ if (cause instanceof Earn.NotFoundError || Earn.isIncompatible(cause)) return notFound(c)
189
+ return Response.upstream(c, cause)
190
+ }
191
+ },
192
+ )
193
+ .put(
194
+ '/',
195
+ OpenApi.validate('json', schema.putVerifiedEarnVault.Body, {
196
+ code: 'body_invalid',
197
+ message: 'Invalid request body',
198
+ }),
199
+ OpenApi.describeRoute({
200
+ operationId: 'putVerifiedEarnVault',
201
+ responses: OpenApi.responses({
202
+ errors: {
203
+ 404: {
204
+ codes: ['earn_vault_not_found'],
205
+ description: 'The vault was not found on the selected chain.',
206
+ },
207
+ 409: {
208
+ codes: ['earn_vault_verification_failed'],
209
+ description: 'The contracts do not form a supported Earn vault.',
210
+ },
211
+ },
212
+ success: {
213
+ description: 'The verified Earn vault.',
214
+ schema: schema.putVerifiedEarnVault.Response,
215
+ },
216
+ }),
217
+ summary: 'Put verified vault',
218
+ tags: ['Earn Vaults'],
219
+ }),
220
+ async (c) => {
221
+ const input = c.req.valid('json')
222
+ const db = Db.get(c.get('db'))
223
+ const existing = await core_EarnVaults.get(db, {
224
+ chainId: input.chainId,
225
+ vaultAddress: input.vaultAddress,
226
+ })
227
+
228
+ try {
229
+ const discovery = await EarnVaults.resolve({
230
+ getClient: c.get('getClient'),
231
+ input: {
232
+ chainId: input.chainId,
233
+ vaultAddress: input.vaultAddress,
234
+ },
235
+ zones: c.get('zones'),
236
+ })
237
+ if (!discovery.engine.type)
238
+ return verificationFailed(c, 'The vault uses an unsupported engine type.')
239
+
240
+ const privateInputTokens = input.privateInputTokens ?? existing?.privateInputTokens ?? []
241
+ const privateOutputTokens =
242
+ input.privateOutputTokens ?? existing?.privateOutputTokens ?? []
243
+ const hasPrivateInputs = privateInputTokens.length > 0
244
+ const hasPrivateOutputs = privateOutputTokens.length > 0
245
+ if (hasPrivateInputs !== hasPrivateOutputs)
246
+ return verificationFailed(c, 'Private input and output tokens must both be configured.')
247
+ if (hasPrivateInputs && !discovery.capabilities.privateRouting)
248
+ return verificationFailed(c, 'The chain does not support private Earn routing.')
249
+
250
+ await core_EarnVaults.upsert(db, {
251
+ chainId: input.chainId,
252
+ description:
253
+ input.description === undefined ? (existing?.description ?? null) : input.description,
254
+ label: input.label ?? existing?.label ?? discovery.shareToken.name,
255
+ privateInputTokens,
256
+ privateOutputTokens,
257
+ ...(input.slug !== undefined ? { slug: input.slug } : {}),
258
+ vaultAddress: input.vaultAddress,
259
+ })
260
+ const data = await getVault(c, {
261
+ chainId: input.chainId,
262
+ include: ['access', 'capabilities', 'zone'],
263
+ vaultAddress: input.vaultAddress,
264
+ })
265
+ return c.json(Response.validated(schema.putVerifiedEarnVault.Response, data), 200)
266
+ } catch (cause) {
267
+ return mutationError(c, cause)
268
+ }
269
+ },
270
+ )
271
+ .delete(
272
+ '/:vaultId',
273
+ OpenApi.validate('param', schema.deleteVerifiedEarnVault.Params, {
274
+ code: 'vault_id_invalid',
275
+ message: 'Invalid vault id',
276
+ }),
277
+ OpenApi.validate('query', schema.deleteVerifiedEarnVault.Query, {
278
+ code: 'query_invalid',
279
+ message: 'Invalid query parameters',
280
+ }),
281
+ OpenApi.describeRoute({
282
+ operationId: 'deleteVerifiedEarnVault',
283
+ responses: {
284
+ 204: { description: 'The vault was removed from the verified registry.' },
285
+ 400: OpenApi.standardError(400, 'Invalid request.', [
286
+ 'query_invalid',
287
+ 'vault_id_invalid',
288
+ ]),
289
+ 401: OpenApi.standardError(401, 'Admin authentication required.'),
290
+ 404: OpenApi.standardError(404, 'Verified Earn vault not found.', [
291
+ 'earn_vault_not_found',
292
+ ]),
293
+ 429: OpenApi.standardError(429, 'Rate limited.'),
294
+ 500: OpenApi.standardError(500, 'Internal server error.'),
295
+ },
296
+ summary: 'Remove verified vault',
297
+ tags: ['Earn Vaults'],
298
+ }),
299
+ async (c) => {
300
+ const { vaultId } = c.req.valid('param')
301
+ const { chainId } = c.req.valid('query')
302
+ const record = await core_EarnVaults.remove(Db.get(c.get('db')), {
303
+ chainId,
304
+ vaultAddress: vaultId,
305
+ })
306
+ if (!record) return notFound(c)
307
+ return c.body(null, 204)
308
+ },
309
+ )
310
+ }
311
+
312
+ async function listVerifiedVaults(
313
+ c: Context<App.Environment>,
314
+ options: listVerifiedVaults.Options,
315
+ ) {
316
+ const db = Db.get(c.get('db'))
317
+ const [records, snapshot] = await Promise.all([
318
+ core_EarnVaults.list(db, { chainId: options.chainId }),
319
+ VerifiedTokens.read(db, options.chainId),
320
+ ])
321
+ const decoded = options.cursor ? Cursor.decode(options.cursor, ['address']) : undefined
322
+ const cursor = decoded?.[0]?.toString().toLowerCase()
323
+ const candidates = records.filter(
324
+ (record) => !cursor || record.vaultAddress.toLowerCase() > cursor,
325
+ )
326
+ const matches: listVerifiedVaults.Match[] = []
327
+
328
+ for (const record of candidates) {
329
+ const discovery = await resolveVault(c, {
330
+ chainId: options.chainId,
331
+ include: discoveryInclude(options),
332
+ vaultAddress: record.vaultAddress,
333
+ })
334
+ if (!Earn.matchesVaultFilters(discovery, options)) continue
335
+ matches.push({ discovery, record })
336
+ if (matches.length > options.limit) break
337
+ }
338
+
339
+ const page = matches.slice(0, options.limit)
340
+ const data = await Promise.all(
341
+ page.map((match) =>
342
+ serializeVault(c, {
343
+ ...match,
344
+ chainId: options.chainId,
345
+ include: options.include,
346
+ snapshot,
347
+ }),
348
+ ),
349
+ )
350
+ const last = matches[options.limit - 1]
351
+ return {
352
+ data,
353
+ nextCursor:
354
+ matches.length > options.limit && last ? Cursor.encode([last.record.vaultAddress]) : null,
355
+ }
356
+ }
357
+
358
+ declare namespace listVerifiedVaults {
359
+ type Match = {
360
+ /** Live onchain vault state. */
361
+ discovery: EarnVaults.Discovery
362
+ /** Curated registry row. */
363
+ record: core_EarnVaults.Record
364
+ }
365
+
366
+ type Options = z.output<typeof schema.listVerifiedEarnVaults.Query> & {
367
+ /** Parent chain containing the vaults. */
368
+ chainId: z.output<typeof Schema.ChainId>
369
+ }
370
+ }
371
+
372
+ async function getVault(c: Context<App.Environment>, options: getVault.Options) {
373
+ const db = Db.get(c.get('db'))
374
+ const record = await core_EarnVaults.get(db, options)
375
+ try {
376
+ const [discovery, snapshot] = await Promise.all([
377
+ resolveVault(c, {
378
+ ...options,
379
+ include: discoveryInclude({ capability: [], include: options.include }),
380
+ }),
381
+ VerifiedTokens.read(db, options.chainId),
382
+ ])
383
+ return serializeVault(c, { ...options, discovery, record, snapshot })
384
+ } catch (cause) {
385
+ if (Earn.isIncompatible(cause)) throw new Earn.NotFoundError()
386
+ throw cause
387
+ }
388
+ }
389
+
390
+ declare namespace getVault {
391
+ type Options = {
392
+ /** Parent chain containing the vault. */
393
+ chainId: z.output<typeof Schema.ChainId>
394
+ /** Optional embedded token fields. */
395
+ include: z.output<typeof schema.getVerifiedEarnVault.Query>['include']
396
+ /** Earn vault address. */
397
+ vaultAddress: z.output<typeof Schema.Address>
398
+ }
399
+ }
400
+
401
+ function resolveVault(c: Context<App.Environment>, options: resolveVault.Options) {
402
+ return EarnVaults.resolve({
403
+ getClient: c.get('getClient'),
404
+ include: options.include,
405
+ input: {
406
+ chainId: options.chainId,
407
+ vaultAddress: options.vaultAddress,
408
+ },
409
+ zones: c.get('zones'),
410
+ })
411
+ }
412
+
413
+ declare namespace resolveVault {
414
+ type Options = {
415
+ /** Parent chain containing the vault. */
416
+ chainId: z.output<typeof Schema.ChainId>
417
+ /** Onchain vault fields required by the request. */
418
+ include: readonly EarnVaults.resolve.Include[]
419
+ /** Earn vault address. */
420
+ vaultAddress: z.output<typeof Schema.Address>
421
+ }
422
+ }
423
+
424
+ async function serializeVault(
425
+ c: Context<App.Environment>,
426
+ options: serializeVault.Options,
427
+ ): Promise<z.output<typeof Earn.schema.Vault>> {
428
+ const [assetToken, shareToken] = await Promise.all([
429
+ serializeToken(c, { ...options, metadata: options.discovery.assetToken }),
430
+ serializeToken(c, { ...options, metadata: options.discovery.shareToken }),
431
+ ])
432
+ return Earn.serializeVault({
433
+ // Rate and valuation enrichment need indexer and FX access the admin app
434
+ // does not carry, so its query schema cannot select either field.
435
+ apy: null,
436
+ assetToken,
437
+ discovery: options.discovery,
438
+ include: options.include,
439
+ record: options.record,
440
+ shareToken,
441
+ tvl: null,
442
+ zones: c.get('zones'),
443
+ })
444
+ }
445
+
446
+ declare namespace serializeVault {
447
+ type Options = {
448
+ /** Parent chain containing the vault. */
449
+ chainId: z.output<typeof Schema.ChainId>
450
+ /** Live onchain vault state. */
451
+ discovery: EarnVaults.Discovery
452
+ /** Optional embedded token fields. */
453
+ include: z.output<typeof schema.getVerifiedEarnVault.Query>['include']
454
+ /** Curated registry row, when verified. */
455
+ record?: core_EarnVaults.Record | undefined
456
+ /** Verified-token snapshot, when configured. */
457
+ snapshot: VerifiedTokens.Snapshot | null
458
+ }
459
+ }
460
+
461
+ function discoveryInclude(
462
+ options: discoveryInclude.Options,
463
+ ): readonly EarnVaults.resolve.Include[] {
464
+ const includeCapabilities =
465
+ options.include.includes('capabilities') ||
466
+ options.include.includes('zone') ||
467
+ options.capability.length > 0
468
+ return [
469
+ ...(options.include.includes('access') ? (['access'] as const) : []),
470
+ ...(includeCapabilities ? (['capabilities'] as const) : []),
471
+ ]
472
+ }
473
+
474
+ declare namespace discoveryInclude {
475
+ type Options = Pick<
476
+ z.output<typeof schema.listVerifiedEarnVaults.Query>,
477
+ 'capability' | 'include'
478
+ >
479
+ }
480
+
481
+ async function serializeToken(
482
+ c: Context<App.Environment>,
483
+ options: serializeToken.Options,
484
+ ): Promise<z.output<typeof Earn.schema.Vault.shape.assetToken>> {
485
+ const address = Schema.Address.parse(options.metadata.address.toLowerCase())
486
+ const logoUri = options.include.includes('token.logoUri')
487
+ ? await resolveLogoUri(c, { address, chainId: options.chainId })
488
+ : undefined
489
+ return Response.validated(Earn.schema.Vault.shape.assetToken, {
490
+ address,
491
+ currency: options.metadata.currency,
492
+ decimals: options.metadata.decimals,
493
+ id: address,
494
+ logoUri,
495
+ name: options.metadata.name,
496
+ symbol: options.metadata.symbol,
497
+ verified: options.snapshot?.byAddress.has(address) ?? false,
498
+ })
499
+ }
500
+
501
+ declare namespace serializeToken {
502
+ type Options = {
503
+ /** Parent chain containing the token. */
504
+ chainId: z.output<typeof Schema.ChainId>
505
+ /** Optional embedded token fields. */
506
+ include: z.output<typeof schema.getVerifiedEarnVault.Query>['include']
507
+ /** Onchain token metadata. */
508
+ metadata: EarnVaults.Discovery['assetToken']
509
+ /** Verified-token snapshot, when configured. */
510
+ snapshot: VerifiedTokens.Snapshot | null
511
+ }
512
+ }
513
+
514
+ async function resolveLogoUri(
515
+ c: Context<App.Environment>,
516
+ options: resolveLogoUri.Options,
517
+ ): Promise<string | undefined> {
518
+ const asset = await c.get('assets')?.get(`${options.chainId}/icons/${options.address}`)
519
+ if (!asset) return undefined
520
+ const uri = new URL(
521
+ Path.join(c.get('basePath'), 'verified-tokens', options.address, 'logo'),
522
+ c.req.url,
523
+ )
524
+ uri.searchParams.set('chainId', String(options.chainId))
525
+ return uri.toString()
526
+ }
527
+
528
+ declare namespace resolveLogoUri {
529
+ type Options = {
530
+ /** Token address. */
531
+ address: z.output<typeof Schema.Address>
532
+ /** Parent chain containing the token. */
533
+ chainId: z.output<typeof Schema.ChainId>
534
+ }
535
+ }
536
+
537
+ function mutationError(c: Context<App.Environment>, cause: unknown) {
538
+ if (cause instanceof EarnVaults.InvalidRegistryError)
539
+ return Response.error(c, {
540
+ code: 'body_invalid',
541
+ details: [{ message: cause.message }],
542
+ message: 'Invalid verified Earn vault',
543
+ status: 400,
544
+ })
545
+ if (cause instanceof EarnVaults.VerificationError && cause.result.status === 'mismatch')
546
+ return Response.error(c, {
547
+ code: 'earn_vault_verification_failed',
548
+ details: cause.result.issues.map((issue) => ({ message: issue.message })),
549
+ message: 'Earn vault verification failed',
550
+ status: 409,
551
+ })
552
+ if (cause instanceof Earn.NotFoundError) return notFound(c)
553
+ if (cause instanceof EarnVaults.NotFoundError) return notFound(c, cause.message)
554
+ return Response.upstream(c, cause)
555
+ }
556
+
557
+ function notFound(c: Context<App.Environment>, message = 'Verified Earn vault not found') {
558
+ return Response.error(c, {
559
+ code: 'earn_vault_not_found',
560
+ message,
561
+ status: 404,
562
+ })
563
+ }
564
+
565
+ function verificationFailed(c: Context<App.Environment>, message: string) {
566
+ return Response.error(c, {
567
+ code: 'earn_vault_verification_failed',
568
+ details: [{ message }],
569
+ message: 'Earn vault verification failed',
570
+ status: 409,
571
+ })
572
+ }
@@ -19,6 +19,16 @@ describe('GET /scopes', () => {
19
19
  "scope": "data:read",
20
20
  "selfServe": true,
21
21
  },
22
+ {
23
+ "description": "Read organization funding transfers, deposit addresses, and deposits.",
24
+ "scope": "funding:read",
25
+ "selfServe": false,
26
+ },
27
+ {
28
+ "description": "Create funding transfers and register their source transactions.",
29
+ "scope": "funding:write",
30
+ "selfServe": false,
31
+ },
22
32
  {
23
33
  "description": "Run ad-hoc queries against the raw indexer passthrough.",
24
34
  "scope": "indexer:query",
@@ -35,7 +45,7 @@ describe('GET /scopes', () => {
35
45
  "selfServe": true,
36
46
  },
37
47
  {
38
- "description": "Validate and broadcast MPP payment credentials through the Tempo relay.",
48
+ "description": "Validate and broadcast MPP credentials through Tempo.",
39
49
  "scope": "mpp:write",
40
50
  "selfServe": true,
41
51
  },
@@ -64,6 +74,11 @@ describe('GET /scopes', () => {
64
74
  "scope": "zone:<chainId>:read",
65
75
  "selfServe": false,
66
76
  },
77
+ {
78
+ "description": "Broadcast signed transactions to one zone chain id.",
79
+ "scope": "zone:<chainId>:write",
80
+ "selfServe": false,
81
+ },
67
82
  ],
68
83
  }
69
84
  `)
@@ -23,8 +23,8 @@ const outFile = path.join(here, '..', 'ui.generated.ts')
23
23
  // Total gzipped budget for the whole UI; the React + TanStack + Regen baseline
24
24
  // is heavier than a hand-rolled SPA, so fail loudly before it bloats the
25
25
  // package. Raise deliberately (and revisit code-splitting) if it trips.
26
- // Raised from 405 KB for the early-access page.
27
- const maxGzipBytes = 415_000
26
+ // Raised from 415 KB for the structured Earn-vault editor.
27
+ const maxGzipBytes = 430_000
28
28
 
29
29
  const contentTypes: Record<string, string> = {
30
30
  '.css': 'text/css; charset=utf-8',