tapimo 0.5.3 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/dist/App.d.ts +15830 -7220
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +9 -1
  4. package/dist/App.js.map +1 -1
  5. package/dist/Scope.d.ts +4 -0
  6. package/dist/Scope.d.ts.map +1 -1
  7. package/dist/Scope.js +5 -0
  8. package/dist/Scope.js.map +1 -1
  9. package/dist/admin/App.d.ts +1011 -412
  10. package/dist/admin/App.d.ts.map +1 -1
  11. package/dist/admin/App.js +4 -0
  12. package/dist/admin/App.js.map +1 -1
  13. package/dist/admin/apps/api-keys.d.ts +2 -1
  14. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  15. package/dist/admin/apps/early-access.d.ts +148 -0
  16. package/dist/admin/apps/early-access.d.ts.map +1 -0
  17. package/dist/admin/apps/early-access.js +133 -0
  18. package/dist/admin/apps/early-access.js.map +1 -0
  19. package/dist/admin/apps/organizations.d.ts +124 -1
  20. package/dist/admin/apps/organizations.d.ts.map +1 -1
  21. package/dist/admin/apps/organizations.js +97 -6
  22. package/dist/admin/apps/organizations.js.map +1 -1
  23. package/dist/admin/apps/verified-tokens.d.ts +526 -1
  24. package/dist/admin/apps/verified-tokens.d.ts.map +1 -1
  25. package/dist/admin/apps/verified-tokens.js +214 -1
  26. package/dist/admin/apps/verified-tokens.js.map +1 -1
  27. package/dist/admin/ui.generated.d.ts +1 -1
  28. package/dist/admin/ui.generated.d.ts.map +1 -1
  29. package/dist/admin/ui.generated.js +95 -75
  30. package/dist/admin/ui.generated.js.map +1 -1
  31. package/dist/analytics/Analytics.d.ts.map +1 -1
  32. package/dist/analytics/Analytics.js +20 -0
  33. package/dist/analytics/Analytics.js.map +1 -1
  34. package/dist/analytics/tables/requestEvents.d.ts +18 -0
  35. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  36. package/dist/analytics/tables/requestEvents.js +36 -7
  37. package/dist/analytics/tables/requestEvents.js.map +1 -1
  38. package/dist/apps/data/App.d.ts +6260 -4924
  39. package/dist/apps/data/App.d.ts.map +1 -1
  40. package/dist/apps/data/App.js +11 -6
  41. package/dist/apps/data/App.js.map +1 -1
  42. package/dist/apps/data/FundingQuoteProviders.d.ts +34 -1
  43. package/dist/apps/data/FundingQuoteProviders.d.ts.map +1 -1
  44. package/dist/apps/data/FundingQuoteProviders.js +194 -16
  45. package/dist/apps/data/FundingQuoteProviders.js.map +1 -1
  46. package/dist/apps/data/FxOracle.d.ts +71 -0
  47. package/dist/apps/data/FxOracle.d.ts.map +1 -0
  48. package/dist/apps/data/FxOracle.js +97 -0
  49. package/dist/apps/data/FxOracle.js.map +1 -0
  50. package/dist/apps/data/index.d.ts +1 -0
  51. package/dist/apps/data/index.d.ts.map +1 -1
  52. package/dist/apps/data/index.js +1 -0
  53. package/dist/apps/data/index.js.map +1 -1
  54. package/dist/apps/data/routes/activities.d.ts +3599 -1382
  55. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  56. package/dist/apps/data/routes/activities.js +250 -88
  57. package/dist/apps/data/routes/activities.js.map +1 -1
  58. package/dist/apps/data/routes/addresses.d.ts +872 -251
  59. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  60. package/dist/apps/data/routes/addresses.js +11 -9
  61. package/dist/apps/data/routes/addresses.js.map +1 -1
  62. package/dist/apps/data/routes/balances.d.ts +77 -26
  63. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  64. package/dist/apps/data/routes/balances.js +88 -45
  65. package/dist/apps/data/routes/balances.js.map +1 -1
  66. package/dist/apps/data/routes/blocks.d.ts +39 -39
  67. package/dist/apps/data/routes/coingecko.d.ts +54 -54
  68. package/dist/apps/data/routes/exchanges.d.ts +856 -105
  69. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  70. package/dist/apps/data/routes/exchanges.js +518 -76
  71. package/dist/apps/data/routes/exchanges.js.map +1 -1
  72. package/dist/apps/data/routes/fee-amm.d.ts +81 -67
  73. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  74. package/dist/apps/data/routes/fee-amm.js +76 -91
  75. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  76. package/dist/apps/data/routes/funding.d.ts +80 -36
  77. package/dist/apps/data/routes/funding.d.ts.map +1 -1
  78. package/dist/apps/data/routes/funding.js +65 -31
  79. package/dist/apps/data/routes/funding.js.map +1 -1
  80. package/dist/apps/data/routes/receipts.d.ts +392 -315
  81. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  82. package/dist/apps/data/routes/receipts.js +152 -77
  83. package/dist/apps/data/routes/receipts.js.map +1 -1
  84. package/dist/apps/data/routes/tokens.d.ts +167 -174
  85. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  86. package/dist/apps/data/routes/tokens.js +15 -13
  87. package/dist/apps/data/routes/tokens.js.map +1 -1
  88. package/dist/apps/data/routes/transactions.d.ts +277 -536
  89. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  90. package/dist/apps/data/routes/transactions.js +96 -77
  91. package/dist/apps/data/routes/transactions.js.map +1 -1
  92. package/dist/apps/data/routes/transfers.d.ts +157 -81
  93. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  94. package/dist/apps/data/routes/transfers.js +272 -130
  95. package/dist/apps/data/routes/transfers.js.map +1 -1
  96. package/dist/apps/data/routes/valuation.d.ts +307 -0
  97. package/dist/apps/data/routes/valuation.d.ts.map +1 -0
  98. package/dist/apps/data/routes/valuation.js +292 -0
  99. package/dist/apps/data/routes/valuation.js.map +1 -0
  100. package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
  101. package/dist/apps/data/routes/verified-tokens.d.ts.map +1 -1
  102. package/dist/apps/data/routes/verified-tokens.js +7 -5
  103. package/dist/apps/data/routes/verified-tokens.js.map +1 -1
  104. package/dist/apps/data/routes/webhooks.d.ts +103 -123
  105. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  106. package/dist/apps/data/routes/webhooks.js +124 -25
  107. package/dist/apps/data/routes/webhooks.js.map +1 -1
  108. package/dist/apps/index.d.ts +2 -1
  109. package/dist/apps/index.d.ts.map +1 -1
  110. package/dist/apps/index.js +2 -1
  111. package/dist/apps/index.js.map +1 -1
  112. package/dist/apps/management/App.d.ts +8554 -1692
  113. package/dist/apps/management/App.d.ts.map +1 -1
  114. package/dist/apps/management/App.js +12 -1
  115. package/dist/apps/management/App.js.map +1 -1
  116. package/dist/apps/management/routes/api-keys.d.ts +7 -0
  117. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  118. package/dist/apps/management/routes/api-keys.js +17 -3
  119. package/dist/apps/management/routes/api-keys.js.map +1 -1
  120. package/dist/apps/management/routes/billing.d.ts +157 -162
  121. package/dist/apps/management/routes/billing.d.ts.map +1 -1
  122. package/dist/apps/management/routes/billing.js +31 -23
  123. package/dist/apps/management/routes/billing.js.map +1 -1
  124. package/dist/apps/management/routes/faucet.d.ts +232 -0
  125. package/dist/apps/management/routes/faucet.d.ts.map +1 -0
  126. package/dist/apps/management/routes/faucet.js +154 -0
  127. package/dist/apps/management/routes/faucet.js.map +1 -0
  128. package/dist/apps/management/routes/invitations.d.ts +60 -60
  129. package/dist/apps/management/routes/invite-links.d.ts +49 -20
  130. package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
  131. package/dist/apps/management/routes/invite-links.js +26 -1
  132. package/dist/apps/management/routes/invite-links.js.map +1 -1
  133. package/dist/apps/management/routes/me.d.ts +6 -6
  134. package/dist/apps/management/routes/members.d.ts +6 -6
  135. package/dist/apps/management/routes/orgs.d.ts +42 -42
  136. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  137. package/dist/apps/management/routes/orgs.js +5 -0
  138. package/dist/apps/management/routes/orgs.js.map +1 -1
  139. package/dist/apps/management/routes/projects.d.ts +44 -44
  140. package/dist/apps/management/routes/usage.d.ts +3 -0
  141. package/dist/apps/management/routes/usage.d.ts.map +1 -1
  142. package/dist/apps/management/routes/usage.js +4 -0
  143. package/dist/apps/management/routes/usage.js.map +1 -1
  144. package/dist/apps/management/routes/verified-token-requests.d.ts +697 -0
  145. package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -0
  146. package/dist/apps/management/routes/verified-token-requests.js +271 -0
  147. package/dist/apps/management/routes/verified-token-requests.js.map +1 -0
  148. package/dist/apps/management/routes/webhooks.d.ts +6977 -0
  149. package/dist/apps/management/routes/webhooks.d.ts.map +1 -0
  150. package/dist/apps/management/routes/webhooks.js +573 -0
  151. package/dist/apps/management/routes/webhooks.js.map +1 -0
  152. package/dist/apps/mpp/App.d.ts +363 -0
  153. package/dist/apps/mpp/App.d.ts.map +1 -0
  154. package/dist/apps/mpp/App.js +72 -0
  155. package/dist/apps/mpp/App.js.map +1 -0
  156. package/dist/apps/mpp/Mpp.d.ts +178 -0
  157. package/dist/apps/mpp/Mpp.d.ts.map +1 -0
  158. package/dist/apps/mpp/Mpp.js +183 -0
  159. package/dist/apps/mpp/Mpp.js.map +1 -0
  160. package/dist/apps/mpp/index.d.ts +3 -0
  161. package/dist/apps/mpp/index.d.ts.map +1 -0
  162. package/dist/apps/mpp/index.js +3 -0
  163. package/dist/apps/mpp/index.js.map +1 -0
  164. package/dist/apps/relay/App.d.ts.map +1 -1
  165. package/dist/apps/relay/App.js +56 -9
  166. package/dist/apps/relay/App.js.map +1 -1
  167. package/dist/db/Db.d.ts +6 -0
  168. package/dist/db/Db.d.ts.map +1 -1
  169. package/dist/db/Db.js +110 -0
  170. package/dist/db/Db.js.map +1 -1
  171. package/dist/db/Schema.d.ts +53 -0
  172. package/dist/db/Schema.d.ts.map +1 -1
  173. package/dist/db/Schema.js +56 -0
  174. package/dist/db/Schema.js.map +1 -1
  175. package/dist/db/tables/earlyAccess.d.ts +50 -0
  176. package/dist/db/tables/earlyAccess.d.ts.map +1 -0
  177. package/dist/db/tables/earlyAccess.js +63 -0
  178. package/dist/db/tables/earlyAccess.js.map +1 -0
  179. package/dist/db/tables/enabledBillingSources.d.ts +73 -0
  180. package/dist/db/tables/enabledBillingSources.d.ts.map +1 -0
  181. package/dist/db/tables/enabledBillingSources.js +69 -0
  182. package/dist/db/tables/enabledBillingSources.js.map +1 -0
  183. package/dist/db/tables/invitations.d.ts.map +1 -1
  184. package/dist/db/tables/invitations.js +3 -0
  185. package/dist/db/tables/invitations.js.map +1 -1
  186. package/dist/db/tables/inviteLinks.d.ts +10 -2
  187. package/dist/db/tables/inviteLinks.d.ts.map +1 -1
  188. package/dist/db/tables/inviteLinks.js +10 -1
  189. package/dist/db/tables/inviteLinks.js.map +1 -1
  190. package/dist/db/tables/organizations.d.ts +5 -2
  191. package/dist/db/tables/organizations.d.ts.map +1 -1
  192. package/dist/db/tables/organizations.js +13 -2
  193. package/dist/db/tables/organizations.js.map +1 -1
  194. package/dist/db/tables/sponsoredTransactions.d.ts +2 -0
  195. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  196. package/dist/db/tables/sponsoredTransactions.js +2 -0
  197. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  198. package/dist/db/tables/verifiedTokenRequests.d.ts +94 -0
  199. package/dist/db/tables/verifiedTokenRequests.d.ts.map +1 -0
  200. package/dist/db/tables/verifiedTokenRequests.js +120 -0
  201. package/dist/db/tables/verifiedTokenRequests.js.map +1 -0
  202. package/dist/db/tables/webhookSubscriptions.d.ts +14 -0
  203. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  204. package/dist/db/tables/webhookSubscriptions.js +16 -0
  205. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  206. package/dist/handlers/internal/utils.d.ts +1 -16
  207. package/dist/handlers/internal/utils.d.ts.map +1 -1
  208. package/dist/handlers/internal/utils.js +17 -6
  209. package/dist/handlers/internal/utils.js.map +1 -1
  210. package/dist/handlers/relay.d.ts.map +1 -1
  211. package/dist/handlers/relay.js +37 -5
  212. package/dist/handlers/relay.js.map +1 -1
  213. package/dist/internal/Auth.d.ts +11 -2
  214. package/dist/internal/Auth.d.ts.map +1 -1
  215. package/dist/internal/Auth.js +14 -47
  216. package/dist/internal/Auth.js.map +1 -1
  217. package/dist/internal/FundingQuotes.d.ts +147 -47
  218. package/dist/internal/FundingQuotes.d.ts.map +1 -1
  219. package/dist/internal/FundingQuotes.js +119 -33
  220. package/dist/internal/FundingQuotes.js.map +1 -1
  221. package/dist/internal/Log.d.ts +37 -5
  222. package/dist/internal/Log.d.ts.map +1 -1
  223. package/dist/internal/Log.js +52 -3
  224. package/dist/internal/Log.js.map +1 -1
  225. package/dist/internal/MetricSink.d.ts.map +1 -1
  226. package/dist/internal/MetricSink.js +24 -0
  227. package/dist/internal/MetricSink.js.map +1 -1
  228. package/dist/internal/OpenApi.d.ts +2 -2
  229. package/dist/internal/OpenApi.d.ts.map +1 -1
  230. package/dist/internal/OpenApi.js +3 -0
  231. package/dist/internal/OpenApi.js.map +1 -1
  232. package/dist/internal/Response.d.ts +2 -2
  233. package/dist/internal/Response.d.ts.map +1 -1
  234. package/dist/internal/Response.js +12 -4
  235. package/dist/internal/Response.js.map +1 -1
  236. package/dist/internal/Schema.d.ts +14 -5
  237. package/dist/internal/Schema.d.ts.map +1 -1
  238. package/dist/internal/Schema.js +23 -5
  239. package/dist/internal/Schema.js.map +1 -1
  240. package/dist/internal/Value.d.ts +18 -0
  241. package/dist/internal/Value.d.ts.map +1 -1
  242. package/dist/internal/Value.js +11 -1
  243. package/dist/internal/Value.js.map +1 -1
  244. package/dist/internal/VerifiedTokens.d.ts.map +1 -1
  245. package/dist/internal/VerifiedTokens.js +10 -1
  246. package/dist/internal/VerifiedTokens.js.map +1 -1
  247. package/dist/internal/Webhooks.d.ts +24 -3
  248. package/dist/internal/Webhooks.d.ts.map +1 -1
  249. package/dist/internal/Webhooks.js +34 -8
  250. package/dist/internal/Webhooks.js.map +1 -1
  251. package/package.json +7 -2
  252. package/src/App.test.ts +9 -4
  253. package/src/App.ts +23 -3
  254. package/src/Client.test-d.ts +733 -20
  255. package/src/Scope.ts +5 -0
  256. package/src/admin/App.test.ts +4 -0
  257. package/src/admin/App.ts +4 -0
  258. package/src/admin/apps/early-access.test.ts +125 -0
  259. package/src/admin/apps/early-access.ts +176 -0
  260. package/src/admin/apps/organizations.test.ts +86 -2
  261. package/src/admin/apps/organizations.ts +155 -31
  262. package/src/admin/apps/scopes.test.ts +5 -0
  263. package/src/admin/apps/verified-tokens.test.ts +201 -0
  264. package/src/admin/apps/verified-tokens.ts +532 -286
  265. package/src/admin/ui/plugin.ts +2 -1
  266. package/src/admin/ui/src/lib/early-access.ts +63 -0
  267. package/src/admin/ui/src/lib/organizations.test.ts +81 -1
  268. package/src/admin/ui/src/lib/organizations.ts +92 -0
  269. package/src/admin/ui/src/lib/verified-tokens.ts +79 -0
  270. package/src/admin/ui/src/routeTree.gen.ts +33 -2
  271. package/src/admin/ui/src/routes/__root.tsx +2 -1
  272. package/src/admin/ui/src/routes/api-keys.tsx +1 -1
  273. package/src/admin/ui/src/routes/early-access.tsx +162 -0
  274. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +103 -0
  275. package/src/admin/ui/src/routes/verified-tokens.tsx +230 -19
  276. package/src/admin/ui.generated.ts +95 -94
  277. package/src/analytics/Analytics.test.ts +83 -0
  278. package/src/analytics/Analytics.ts +20 -0
  279. package/src/analytics/tables/requestEvents.ts +60 -7
  280. package/src/apps/composition.test.ts +11 -2
  281. package/src/apps/data/App.test.ts +1 -1
  282. package/src/apps/data/App.ts +22 -14
  283. package/src/apps/data/FundingQuoteProviders.test.ts +297 -4
  284. package/src/apps/data/FundingQuoteProviders.ts +255 -29
  285. package/src/apps/data/FxOracle.test.ts +118 -0
  286. package/src/apps/data/FxOracle.ts +153 -0
  287. package/src/apps/data/index.ts +1 -0
  288. package/src/apps/data/routes/activities.test.ts +177 -3
  289. package/src/apps/data/routes/activities.ts +441 -132
  290. package/src/apps/data/routes/addresses.ts +19 -9
  291. package/src/apps/data/routes/balances.test.ts +148 -11
  292. package/src/apps/data/routes/balances.ts +140 -51
  293. package/src/apps/data/routes/exchanges.test.ts +544 -9
  294. package/src/apps/data/routes/exchanges.ts +690 -103
  295. package/src/apps/data/routes/fee-amm.test.ts +47 -23
  296. package/src/apps/data/routes/fee-amm.ts +98 -119
  297. package/src/apps/data/routes/funding.test.ts +113 -8
  298. package/src/apps/data/routes/funding.ts +77 -51
  299. package/src/apps/data/routes/receipts.test.ts +129 -23
  300. package/src/apps/data/routes/receipts.ts +205 -100
  301. package/src/apps/data/routes/tokens.test.ts +43 -0
  302. package/src/apps/data/routes/tokens.ts +28 -13
  303. package/src/apps/data/routes/transactions.test.ts +72 -19
  304. package/src/apps/data/routes/transactions.ts +162 -92
  305. package/src/apps/data/routes/transfers.test.ts +341 -31
  306. package/src/apps/data/routes/transfers.ts +358 -158
  307. package/src/apps/data/routes/valuation.test.ts +437 -0
  308. package/src/apps/data/routes/valuation.ts +423 -0
  309. package/src/apps/data/routes/verified-tokens.ts +14 -2
  310. package/src/apps/data/routes/webhooks.test.ts +56 -8
  311. package/src/apps/data/routes/webhooks.ts +144 -27
  312. package/src/apps/index.ts +2 -1
  313. package/src/apps/management/App.ts +13 -0
  314. package/src/apps/management/routes/api-keys.test.ts +14 -0
  315. package/src/apps/management/routes/api-keys.ts +27 -3
  316. package/src/apps/management/routes/billing.test.ts +152 -20
  317. package/src/apps/management/routes/billing.ts +34 -18
  318. package/src/apps/management/routes/faucet.test.ts +87 -0
  319. package/src/apps/management/routes/faucet.ts +201 -0
  320. package/src/apps/management/routes/invite-links.test.ts +117 -0
  321. package/src/apps/management/routes/invite-links.ts +43 -1
  322. package/src/apps/management/routes/me.test.ts +9 -99
  323. package/src/apps/management/routes/orgs.test.ts +45 -2
  324. package/src/apps/management/routes/orgs.ts +6 -0
  325. package/src/apps/management/routes/scopes.test.ts +1 -0
  326. package/src/apps/management/routes/usage.test.ts +6 -0
  327. package/src/apps/management/routes/usage.ts +7 -0
  328. package/src/apps/management/routes/verified-token-requests.test.ts +377 -0
  329. package/src/apps/management/routes/verified-token-requests.ts +397 -0
  330. package/src/apps/management/routes/webhooks.test.ts +426 -0
  331. package/src/apps/management/routes/webhooks.ts +672 -0
  332. package/src/apps/mpp/App.ts +86 -0
  333. package/src/apps/mpp/Mpp.test.ts +193 -0
  334. package/src/apps/mpp/Mpp.ts +353 -0
  335. package/src/apps/mpp/index.ts +2 -0
  336. package/src/apps/mpp/internal/Adapter.ts +11 -0
  337. package/src/apps/mpp/internal/Error.ts +9 -0
  338. package/src/apps/mpp/internal/Idempotency.ts +7 -0
  339. package/src/apps/mpp/internal/Screening.ts +10 -0
  340. package/src/apps/relay/App.test.ts +88 -6
  341. package/src/apps/relay/App.ts +61 -9
  342. package/src/db/Db.test.ts +19 -0
  343. package/src/db/Db.ts +125 -0
  344. package/src/db/Schema.ts +68 -0
  345. package/src/db/tables/earlyAccess.ts +86 -0
  346. package/src/db/tables/enabledBillingSources.test.ts +303 -0
  347. package/src/db/tables/enabledBillingSources.ts +118 -0
  348. package/src/db/tables/invitations.ts +3 -0
  349. package/src/db/tables/inviteLinks.ts +22 -3
  350. package/src/db/tables/organizations.test.ts +103 -0
  351. package/src/db/tables/organizations.ts +18 -2
  352. package/src/db/tables/sponsoredTransactions.ts +4 -0
  353. package/src/db/tables/verifiedTokenRequests.test.ts +200 -0
  354. package/src/db/tables/verifiedTokenRequests.ts +182 -0
  355. package/src/db/tables/webhookSubscriptions.ts +31 -0
  356. package/src/handlers/internal/utils.ts +22 -6
  357. package/src/handlers/relay.errors.test.ts +153 -0
  358. package/src/handlers/relay.ts +42 -7
  359. package/src/internal/Auth.test.ts +3 -3
  360. package/src/internal/Auth.ts +15 -47
  361. package/src/internal/FundingQuotes.test.ts +161 -6
  362. package/src/internal/FundingQuotes.ts +141 -39
  363. package/src/internal/Log.test-d.ts +21 -0
  364. package/src/internal/Log.test.ts +141 -0
  365. package/src/internal/Log.ts +93 -6
  366. package/src/internal/MetricSink.test.ts +215 -0
  367. package/src/internal/MetricSink.ts +24 -0
  368. package/src/internal/OpenApi.ts +3 -0
  369. package/src/internal/Response.test.ts +28 -0
  370. package/src/internal/Response.ts +12 -4
  371. package/src/internal/Schema.ts +50 -5
  372. package/src/internal/Value.test.ts +20 -0
  373. package/src/internal/Value.ts +24 -1
  374. package/src/internal/VerifiedTokens.ts +9 -1
  375. package/src/internal/Webhooks.test.ts +140 -0
  376. package/src/internal/Webhooks.ts +53 -9
@@ -0,0 +1,292 @@
1
+ import { Hono } from 'hono';
2
+ import { Value as core_Value } from 'ox';
3
+ import { BaseError, ContractFunctionRevertedError, ContractFunctionZeroDataError } from 'viem';
4
+ import { Actions } from 'viem/tempo';
5
+ import * as z from 'zod/mini';
6
+ import * as Auth from '../../../internal/Auth.js';
7
+ import * as Cache from '../../../internal/Cache.js';
8
+ import * as OpenApi from '../../../internal/OpenApi.js';
9
+ import * as Response from '../../../internal/Response.js';
10
+ import * as Schema from '../../../internal/Schema.js';
11
+ import * as Store from '../../../internal/Store.js';
12
+ import * as Timing from '../../../internal/Timing.js';
13
+ import * as VerifiedTokens from '../../../internal/VerifiedTokens.js';
14
+ import * as FxOracle from '../FxOracle.js';
15
+ // How many balance reads to fan out per batch. Concurrent reads in one
16
+ // macrotask collapse into a single deployless multicall; small chunks keep
17
+ // each call under the Tempo RPC's per-call size limit.
18
+ const tokenReadChunkSize = 20;
19
+ /** Zod schemas owned by the valuation handlers. */
20
+ export var schema;
21
+ (function (schema) {
22
+ /** A holding's nominal value in the requested denomination. */
23
+ schema.Value = z
24
+ .object({
25
+ amount: z
26
+ .string()
27
+ .check(z.regex(/^\d+(\.\d+)?$/), z.describe('The holding’s nominal value, as a decimal string in `currency`.'), z.meta({ examples: ['1.50'] })),
28
+ currency: z
29
+ .string()
30
+ .check(z.describe('The denomination currency of this value.'), z.meta({ examples: ['USD'] })),
31
+ })
32
+ .check(z.describe('The holding’s nominal value in the requested denomination.'));
33
+ /** Rate provenance for a converted valuation. */
34
+ schema.Pricing = z
35
+ .object({
36
+ asOf: z.iso
37
+ .datetime()
38
+ .check(z.describe('Publication date of the rate set as an ISO 8601 timestamp.'), z.meta({ examples: ['2026-07-20T00:00:00.000Z'] })),
39
+ basis: z
40
+ .literal('nominal')
41
+ .check(z.describe('Valuation basis: one token unit counts as one unit of its display currency.'), z.meta({ examples: ['nominal'] })),
42
+ source: z
43
+ .string()
44
+ .check(z.describe('FX rate oracle that supplied the conversion rates.'), z.meta({ examples: ['ecb'] })),
45
+ })
46
+ .check(z.describe('Rate provenance for a converted valuation.'));
47
+ /** Schemas for the getAddressValuation operation. */
48
+ let getAddressValuation;
49
+ (function (getAddressValuation) {
50
+ /** Path parameters for address valuation requests. */
51
+ getAddressValuation.Params = z
52
+ .object({
53
+ address: Schema.Address.check(z.describe('The account address whose holdings you want to value.')),
54
+ })
55
+ .check(z.describe('Path parameters for valuing an account’s verified holdings.'));
56
+ /** Query parameters for address valuation requests. */
57
+ getAddressValuation.Query = z
58
+ .strictObject({
59
+ chainId: Schema.ChainIdQuery,
60
+ denomination: Schema.Denomination,
61
+ })
62
+ .check(z.describe('Query parameters for valuing an account’s verified holdings.'));
63
+ /** The nominal valuation of an account's verified holdings. */
64
+ getAddressValuation.Response = z
65
+ .object({
66
+ address: Schema.Address.check(z.describe('The account address this valuation covers.')),
67
+ amount: z
68
+ .string()
69
+ .check(z.regex(/^\d+(\.\d+)?$/), z.describe('The total value of the account’s verified holdings, as a decimal string in `currency`.'), z.meta({ examples: ['160.50'] })),
70
+ currency: z
71
+ .string()
72
+ .check(z.describe('The denomination currency of `amount`.'), z.meta({ examples: ['USD'] })),
73
+ id: z
74
+ .string()
75
+ .check(z.describe('A stable resource ID for this valuation, equal to the account address.'), z.meta({ examples: ['0xbe058e1c4df8a4366a387bf595b284246a93039e'] })),
76
+ pricing: z
77
+ .nullable(schema.Pricing)
78
+ .check(z.describe('Rate provenance, or `null` when every valued holding was already denominated in `currency`.')),
79
+ unpriced: z
80
+ .array(z.string())
81
+ .check(z.describe('Display currencies excluded from `amount` because the FX oracle has no rate for them.'), z.meta({ examples: [['BTC']] })),
82
+ })
83
+ .check(z.describe('The nominal valuation of an account’s verified token holdings.'));
84
+ })(getAddressValuation = schema.getAddressValuation || (schema.getAddressValuation = {}));
85
+ })(schema || (schema = {}));
86
+ /**
87
+ * Creates address-scoped valuation handlers, mounted under the `/addresses`
88
+ * composer. Exposes `GET /:address/valuation`, the holdings valuation.
89
+ */
90
+ export function addresses(options = {}) {
91
+ const oracle = options.fx?.oracle ?? FxOracle.ecb();
92
+ return new Hono().get('/v1/addresses/:address/valuation', Auth.policy({ apiKey: { scopes: ['data:read'] }, mpp: true, public: true }), OpenApi.validate('param', schema.getAddressValuation.Params, {
93
+ code: 'address_invalid',
94
+ message: 'Invalid account address',
95
+ }), OpenApi.validate('query', schema.getAddressValuation.Query, {
96
+ code: 'query_invalid',
97
+ message: 'Invalid query parameters',
98
+ }), OpenApi.describeRoute({
99
+ description: 'Values every verified TIP-20 token an account holds as one unit of its display currency, converts each currency into the requested denomination using the configured FX rates, and returns the total.',
100
+ operationId: 'getAddressValuation',
101
+ responses: OpenApi.responses({
102
+ errors: { 502: 'Could not read balances or exchange rates from an upstream service.' },
103
+ success: {
104
+ description: 'The valuation of this account’s verified holdings.',
105
+ schema: schema.getAddressValuation.Response,
106
+ },
107
+ }),
108
+ summary: 'Get address valuation',
109
+ tags: ['Balances'],
110
+ }), Cache.response({
111
+ cacheControl: Cache.policies.noStore,
112
+ name: 'tempo-api:addresses:v1',
113
+ key: (c) => Cache.urlKey(c, schema.getAddressValuation.Query),
114
+ }), async (c) => {
115
+ if (Auth.narrowAccess)
116
+ return Auth.paidAccessError(c);
117
+ if (OpenApi.narrowValidation)
118
+ return OpenApi.validationError(c, {
119
+ code: 'address_invalid',
120
+ message: 'Invalid request parameters',
121
+ });
122
+ if (OpenApi.narrowValidation)
123
+ return OpenApi.validationError(c, {
124
+ code: 'query_invalid',
125
+ message: 'Invalid request parameters',
126
+ });
127
+ const { address } = c.req.valid('param');
128
+ const query = c.req.valid('query');
129
+ try {
130
+ const valuation = await getAddressValuation(c, {
131
+ address,
132
+ chainId: query.chainId ?? c.get('chainId'),
133
+ denomination: query.denomination ?? 'USD',
134
+ oracle,
135
+ });
136
+ return c.json(Response.validated(schema.getAddressValuation.Response, valuation), 200);
137
+ }
138
+ catch (cause) {
139
+ if (cause instanceof UnsupportedDenominationError)
140
+ return Response.error(c, { code: 'query_invalid', message: cause.message, status: 400 });
141
+ return Response.upstream(c, cause);
142
+ }
143
+ });
144
+ }
145
+ async function getAddressValuation(c, options) {
146
+ const { address, chainId, denomination, oracle } = options;
147
+ const [set, ratesCause] = await rateSet(c, oracle).then((set) => [set, undefined], (cause) => [undefined, cause]);
148
+ if (set && denomination !== set.base && set.rates[denomination] === undefined)
149
+ throw new UnsupportedDenominationError(denomination, oracle.name);
150
+ const snapshot = await VerifiedTokens.snapshot(c, chainId);
151
+ const holdings = await Timing.time(c, 'valuation_balances', async () => {
152
+ const client = c.get('getClient')(chainId);
153
+ if (snapshot.list.length === 0)
154
+ return [];
155
+ // Pin every chunk to one chain-state snapshot.
156
+ const blockNumber = await client.getBlockNumber({ cacheTime: 0 });
157
+ const rows = [];
158
+ for (let index = 0; index < snapshot.list.length; index += tokenReadChunkSize) {
159
+ const group = snapshot.list.slice(index, index + tokenReadChunkSize);
160
+ // Concurrent reads enter viem's shared batch window and become one
161
+ // deployless multicall. A failed read fails the request rather than
162
+ // serving a partial total.
163
+ const results = await Promise.all(group.map(async (token) => {
164
+ try {
165
+ const { amount } = await Actions.token.getBalance(client, {
166
+ account: address,
167
+ blockNumber,
168
+ decimals: token.decimals,
169
+ token: token.address,
170
+ });
171
+ return amount === 0n ? undefined : { amount, token };
172
+ }
173
+ catch (error) {
174
+ // A verified token that is undeployed (zero data) or uninitialized
175
+ // on this chain cannot be held; count it as an empty holding
176
+ // rather than failing the valuation.
177
+ const empty = error instanceof BaseError &&
178
+ error.walk((cause) => cause instanceof ContractFunctionZeroDataError ||
179
+ (cause instanceof ContractFunctionRevertedError &&
180
+ cause.data?.errorName === 'Uninitialized'));
181
+ if (empty)
182
+ return undefined;
183
+ throw error;
184
+ }
185
+ }));
186
+ rows.push(...results.filter((row) => row !== undefined));
187
+ }
188
+ return rows;
189
+ });
190
+ const groups = new Map();
191
+ for (const { amount, token } of holdings) {
192
+ const group = groups.get(token.currency.toLowerCase()) ?? { currency: token.currency, sum: 0n };
193
+ group.sum +=
194
+ token.decimals <= FxOracle.precision
195
+ ? amount * 10n ** BigInt(FxOracle.precision - token.decimals)
196
+ : amount / 10n ** BigInt(token.decimals - FxOracle.precision);
197
+ groups.set(token.currency.toLowerCase(), group);
198
+ }
199
+ let total = 0n;
200
+ const unpriced = [];
201
+ let pricing = null;
202
+ const pending = [...groups.values()].filter((group) => group.currency.toUpperCase() !== denomination);
203
+ for (const group of groups.values())
204
+ if (group.currency.toUpperCase() === denomination)
205
+ total += group.sum;
206
+ if (pending.length > 0) {
207
+ if (!set)
208
+ throw ratesCause;
209
+ for (const group of pending) {
210
+ const rate = FxOracle.rate(set, { from: group.currency.toUpperCase(), to: denomination });
211
+ if (rate === undefined)
212
+ unpriced.push(group.currency);
213
+ else
214
+ total += (group.sum * rate) / 10n ** BigInt(FxOracle.precision);
215
+ }
216
+ pricing = { asOf: set.asOf, basis: 'nominal', source: oracle.name };
217
+ }
218
+ unpriced.sort();
219
+ return {
220
+ address,
221
+ // Floor to 6 dp, the TIP-20 native precision; same-currency sums stay exact.
222
+ amount: core_Value.format(total / 10n ** BigInt(FxOracle.precision - 6), 6),
223
+ currency: denomination,
224
+ id: address,
225
+ pricing,
226
+ unpriced,
227
+ };
228
+ }
229
+ /** Loads the oracle's rate set through the request's store cache. */
230
+ export function rateSet(c, oracle) {
231
+ return Timing.time(c, 'valuation_rates', () => Store.memoize(() => oracle.rates(), {
232
+ key: `fx:v1:${oracle.name}`,
233
+ store: c.get('store'),
234
+ ttl: oracle.ttl,
235
+ }));
236
+ }
237
+ /**
238
+ * Loads rates best-effort to validate the denomination and value a page.
239
+ * Returns `undefined` when unavailable or unnecessary; a known unsupported denomination still throws.
240
+ */
241
+ export async function ratesFor(c, options) {
242
+ const { denomination, oracle } = options;
243
+ const rates = await rateSet(c, oracle).catch(() => undefined);
244
+ if (!rates)
245
+ return undefined;
246
+ if (denomination !== rates.base && rates.rates[denomination] === undefined)
247
+ throw new UnsupportedDenominationError(denomination, oracle.name);
248
+ const conversion = [...options.currencies].some((currency) => currency.toUpperCase() !== denomination);
249
+ if (!conversion)
250
+ return undefined;
251
+ return rates;
252
+ }
253
+ /** Builds the `pricing` provenance block for a consulted rate set. */
254
+ export function pricing(rates, oracle) {
255
+ return { asOf: rates.asOf, basis: 'nominal', source: oracle.name };
256
+ }
257
+ /**
258
+ * Values one holding in the requested denomination via its curated display
259
+ * currency. Returns `null` when the token is unverified, its currency has no
260
+ * rate, or the rate set is unavailable.
261
+ */
262
+ export function valuationFor(options) {
263
+ const { amount, denomination, rates, token } = options;
264
+ if (!token)
265
+ return null;
266
+ const rate = (() => {
267
+ if (token.currency.toUpperCase() === denomination)
268
+ return 10n ** BigInt(FxOracle.precision);
269
+ if (!rates)
270
+ return undefined;
271
+ return FxOracle.rate(rates, { from: token.currency.toUpperCase(), to: denomination });
272
+ })();
273
+ if (rate === undefined)
274
+ return null;
275
+ // Normalize to the shared 18-dp scale, convert, then floor to 6 dp.
276
+ const scaled = token.decimals <= FxOracle.precision
277
+ ? amount * 10n ** BigInt(FxOracle.precision - token.decimals)
278
+ : amount / 10n ** BigInt(token.decimals - FxOracle.precision);
279
+ const value = (scaled * rate) / 10n ** BigInt(FxOracle.precision);
280
+ return {
281
+ amount: core_Value.format(value / 10n ** BigInt(FxOracle.precision - 6), 6),
282
+ currency: denomination,
283
+ };
284
+ }
285
+ /** Thrown when the requested denomination is not priced by the FX oracle. */
286
+ export class UnsupportedDenominationError extends Error {
287
+ name = 'Valuation.UnsupportedDenominationError';
288
+ constructor(denomination, oracle) {
289
+ super(`Denomination "${denomination}" is not priced by the "${oracle}" FX oracle`);
290
+ }
291
+ }
292
+ //# sourceMappingURL=valuation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"valuation.js","sourceRoot":"","sources":["../../../../src/apps/data/routes/valuation.ts"],"names":[],"mappings":"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"}
@@ -101,14 +101,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
101
101
  } | {
102
102
  output: {
103
103
  error: {
104
- code: "api_key_malformed";
104
+ code: "upstream_error";
105
105
  details?: readonly Response.error.Detail[] | undefined;
106
106
  message: string;
107
107
  };
108
108
  requestId: string;
109
109
  };
110
110
  outputFormat: "json";
111
- status: 400;
111
+ status: 502;
112
112
  input: {
113
113
  query?: {
114
114
  chainId?: string | string[];
@@ -118,14 +118,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
118
118
  } | {
119
119
  output: {
120
120
  error: {
121
- code: "api_key_invalid" | "api_key_missing";
121
+ code: "api_key_malformed";
122
122
  details?: readonly Response.error.Detail[] | undefined;
123
123
  message: string;
124
124
  };
125
125
  requestId: string;
126
126
  };
127
127
  outputFormat: "json";
128
- status: 401;
128
+ status: 400;
129
129
  input: {
130
130
  query?: {
131
131
  chainId?: string | string[];
@@ -135,14 +135,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
135
135
  } | {
136
136
  output: {
137
137
  error: {
138
- code: "api_key_forbidden";
138
+ code: "api_key_invalid" | "api_key_missing";
139
139
  details?: readonly Response.error.Detail[] | undefined;
140
140
  message: string;
141
141
  };
142
142
  requestId: string;
143
143
  };
144
144
  outputFormat: "json";
145
- status: 403;
145
+ status: 401;
146
146
  input: {
147
147
  query?: {
148
148
  chainId?: string | string[];
@@ -152,14 +152,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
152
152
  } | {
153
153
  output: {
154
154
  error: {
155
- code: "payment_required" | "rate_limit_exceeded";
155
+ code: "api_key_forbidden";
156
156
  details?: readonly Response.error.Detail[] | undefined;
157
157
  message: string;
158
158
  };
159
159
  requestId: string;
160
160
  };
161
161
  outputFormat: "json";
162
- status: 429;
162
+ status: 403;
163
163
  input: {
164
164
  query?: {
165
165
  chainId?: string | string[];
@@ -169,14 +169,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
169
169
  } | {
170
170
  output: {
171
171
  error: {
172
- code: "query_invalid";
172
+ code: "payment_required" | "rate_limit_exceeded";
173
173
  details?: readonly Response.error.Detail[] | undefined;
174
174
  message: string;
175
175
  };
176
176
  requestId: string;
177
177
  };
178
178
  outputFormat: "json";
179
- status: 400;
179
+ status: 429;
180
180
  input: {
181
181
  query?: {
182
182
  chainId?: string | string[];
@@ -186,14 +186,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
186
186
  } | {
187
187
  output: {
188
188
  error: {
189
- code: "upstream_error";
189
+ code: "query_invalid";
190
190
  details?: readonly Response.error.Detail[] | undefined;
191
191
  message: string;
192
192
  };
193
193
  requestId: string;
194
194
  };
195
195
  outputFormat: "json";
196
- status: 502;
196
+ status: 400;
197
197
  input: {
198
198
  query?: {
199
199
  chainId?: string | string[];
@@ -236,14 +236,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
236
236
  } | {
237
237
  output: {
238
238
  error: {
239
- code: "api_key_malformed";
239
+ code: "upstream_error";
240
240
  details?: readonly Response.error.Detail[] | undefined;
241
241
  message: string;
242
242
  };
243
243
  requestId: string;
244
244
  };
245
245
  outputFormat: "json";
246
- status: 400;
246
+ status: 502;
247
247
  input: {
248
248
  query?: {
249
249
  chainId?: string | string[];
@@ -252,14 +252,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
252
252
  } | {
253
253
  output: {
254
254
  error: {
255
- code: "api_key_invalid" | "api_key_missing";
255
+ code: "api_key_malformed";
256
256
  details?: readonly Response.error.Detail[] | undefined;
257
257
  message: string;
258
258
  };
259
259
  requestId: string;
260
260
  };
261
261
  outputFormat: "json";
262
- status: 401;
262
+ status: 400;
263
263
  input: {
264
264
  query?: {
265
265
  chainId?: string | string[];
@@ -268,14 +268,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
268
268
  } | {
269
269
  output: {
270
270
  error: {
271
- code: "api_key_forbidden";
271
+ code: "api_key_invalid" | "api_key_missing";
272
272
  details?: readonly Response.error.Detail[] | undefined;
273
273
  message: string;
274
274
  };
275
275
  requestId: string;
276
276
  };
277
277
  outputFormat: "json";
278
- status: 403;
278
+ status: 401;
279
279
  input: {
280
280
  query?: {
281
281
  chainId?: string | string[];
@@ -284,14 +284,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
284
284
  } | {
285
285
  output: {
286
286
  error: {
287
- code: "payment_required" | "rate_limit_exceeded";
287
+ code: "api_key_forbidden";
288
288
  details?: readonly Response.error.Detail[] | undefined;
289
289
  message: string;
290
290
  };
291
291
  requestId: string;
292
292
  };
293
293
  outputFormat: "json";
294
- status: 429;
294
+ status: 403;
295
295
  input: {
296
296
  query?: {
297
297
  chainId?: string | string[];
@@ -300,14 +300,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
300
300
  } | {
301
301
  output: {
302
302
  error: {
303
- code: "query_invalid";
303
+ code: "payment_required" | "rate_limit_exceeded";
304
304
  details?: readonly Response.error.Detail[] | undefined;
305
305
  message: string;
306
306
  };
307
307
  requestId: string;
308
308
  };
309
309
  outputFormat: "json";
310
- status: 400;
310
+ status: 429;
311
311
  input: {
312
312
  query?: {
313
313
  chainId?: string | string[];
@@ -316,14 +316,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
316
316
  } | {
317
317
  output: {
318
318
  error: {
319
- code: "upstream_error";
319
+ code: "query_invalid";
320
320
  details?: readonly Response.error.Detail[] | undefined;
321
321
  message: string;
322
322
  };
323
323
  requestId: string;
324
324
  };
325
325
  outputFormat: "json";
326
- status: 502;
326
+ status: 400;
327
327
  input: {
328
328
  query?: {
329
329
  chainId?: string | string[];
@@ -360,14 +360,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
360
360
  } | {
361
361
  output: {
362
362
  error: {
363
- code: "api_key_malformed";
363
+ code: "upstream_error";
364
364
  details?: readonly Response.error.Detail[] | undefined;
365
365
  message: string;
366
366
  };
367
367
  requestId: string;
368
368
  };
369
369
  outputFormat: "json";
370
- status: 400;
370
+ status: 502;
371
371
  input: {
372
372
  param: {
373
373
  address: `0x${string}`;
@@ -380,14 +380,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
380
380
  } | {
381
381
  output: {
382
382
  error: {
383
- code: "api_key_invalid" | "api_key_missing";
383
+ code: "api_key_malformed";
384
384
  details?: readonly Response.error.Detail[] | undefined;
385
385
  message: string;
386
386
  };
387
387
  requestId: string;
388
388
  };
389
389
  outputFormat: "json";
390
- status: 401;
390
+ status: 400;
391
391
  input: {
392
392
  param: {
393
393
  address: `0x${string}`;
@@ -400,14 +400,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
400
400
  } | {
401
401
  output: {
402
402
  error: {
403
- code: "api_key_forbidden";
403
+ code: "api_key_invalid" | "api_key_missing";
404
404
  details?: readonly Response.error.Detail[] | undefined;
405
405
  message: string;
406
406
  };
407
407
  requestId: string;
408
408
  };
409
409
  outputFormat: "json";
410
- status: 403;
410
+ status: 401;
411
411
  input: {
412
412
  param: {
413
413
  address: `0x${string}`;
@@ -420,14 +420,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
420
420
  } | {
421
421
  output: {
422
422
  error: {
423
- code: "payment_required" | "rate_limit_exceeded";
423
+ code: "api_key_forbidden";
424
424
  details?: readonly Response.error.Detail[] | undefined;
425
425
  message: string;
426
426
  };
427
427
  requestId: string;
428
428
  };
429
429
  outputFormat: "json";
430
- status: 429;
430
+ status: 403;
431
431
  input: {
432
432
  param: {
433
433
  address: `0x${string}`;
@@ -440,14 +440,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
440
440
  } | {
441
441
  output: {
442
442
  error: {
443
- code: "query_invalid";
443
+ code: "payment_required" | "rate_limit_exceeded";
444
444
  details?: readonly Response.error.Detail[] | undefined;
445
445
  message: string;
446
446
  };
447
447
  requestId: string;
448
448
  };
449
449
  outputFormat: "json";
450
- status: 400;
450
+ status: 429;
451
451
  input: {
452
452
  param: {
453
453
  address: `0x${string}`;
@@ -460,14 +460,14 @@ export declare function verifiedTokens(): import("hono/hono-base").HonoBase<App.
460
460
  } | {
461
461
  output: {
462
462
  error: {
463
- code: "upstream_error";
463
+ code: "query_invalid";
464
464
  details?: readonly Response.error.Detail[] | undefined;
465
465
  message: string;
466
466
  };
467
467
  requestId: string;
468
468
  };
469
469
  outputFormat: "json";
470
- status: 502;
470
+ status: 400;
471
471
  input: {
472
472
  param: {
473
473
  address: `0x${string}`;
@@ -1 +1 @@
1
- {"version":3,"file":"verified-tokens.d.ts","sourceRoot":"","sources":["../../../../src/apps/data/routes/verified-tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAA;AAI3C,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AAIzD,yDAAyD;AACzD,yBAAiB,MAAM,CAAC;IAkCtB;;;;OAIG;IACI,MAAM,KAAK;;;;;;;qBAUjB,CAAA;IAED;;;OAGG;IACI,MAAM,KAAK;;;;;;;;qBAOjB,CAAA;IAED,0DAA0D;IACnD,MAAM,MAAM;;qBAIuD,CAAA;IAE1E,oDAAoD;IACpD,UAAiB,kBAAkB,CAAC;QAClC,oDAAoD;QAC7C,MAAM,KAAK;;;;;;0BAQmD,CAAA;QAErE,qDAAqD;QAC9C,MAAM,QAAQ;;;;;;;;;;yBAGpB,CAAA;KACF;IAED,4DAA4D;IAC5D,UAAiB,0BAA0B,CAAC;QAC1C,mEAAmE;QAC5D,MAAM,KAAK;;;;;0BAEsE,CAAA;QAExF,sEAAsE;QAC/D,MAAM,QAAQ;;yBASpB,CAAA;KACF;IAED,kDAAkD;IAClD,UAAiB,gBAAgB,CAAC;QAChC,oDAAoD;QAC7C,MAAM,KAAK;;;;;0BAEyD,CAAA;KAC5E;CACF;AAED;;;;GAIG;AACH,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAqJ7B"}
1
+ {"version":3,"file":"verified-tokens.d.ts","sourceRoot":"","sources":["../../../../src/apps/data/routes/verified-tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,KAAK,GAAG,MAAM,iBAAiB,CAAA;AAI3C,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AAIzD,yDAAyD;AACzD,yBAAiB,MAAM,CAAC;IA8CtB;;;;OAIG;IACI,MAAM,KAAK;;;;;;;qBAUjB,CAAA;IAED;;;OAGG;IACI,MAAM,KAAK;;;;;;;;qBAOjB,CAAA;IAED,0DAA0D;IACnD,MAAM,MAAM;;qBAIuD,CAAA;IAE1E,oDAAoD;IACpD,UAAiB,kBAAkB,CAAC;QAClC,oDAAoD;QAC7C,MAAM,KAAK;;;;;;0BAQmD,CAAA;QAErE,qDAAqD;QAC9C,MAAM,QAAQ;;;;;;;;;;yBAGpB,CAAA;KACF;IAED,4DAA4D;IAC5D,UAAiB,0BAA0B,CAAC;QAC1C,mEAAmE;QAC5D,MAAM,KAAK;;;;;0BAEsE,CAAA;QAExF,sEAAsE;QAC/D,MAAM,QAAQ;;yBASpB,CAAA;KACF;IAED,kDAAkD;IAClD,UAAiB,gBAAgB,CAAC;QAChC,oDAAoD;QAC7C,MAAM,KAAK;;;;;0BAEyD,CAAA;KAC5E;CACF;AAED;;;;GAIG;AACH,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAqJ7B"}
@@ -14,17 +14,19 @@ export var schema;
14
14
  const fields = {
15
15
  currency: z
16
16
  .string()
17
- .check(z.minLength(1), z.describe('The currency label for this token, such as `USD` for USD-denominated stablecoins.')),
17
+ .check(z.minLength(1), z.describe('The currency label for this token, such as `USD` for USD-denominated stablecoins.'), z.meta({ examples: ['USD'] })),
18
18
  decimals: z
19
19
  .number()
20
- .check(z.int(), z.gte(0), z.lte(255), z.describe('The number of decimal places the token uses; Tempo stablecoins typically use 6.')),
20
+ .check(z.int(), z.gte(0), z.lte(255), z.describe('The number of decimal places the token uses; Tempo stablecoins typically use 6.'), z.meta({ examples: [6] })),
21
21
  logoUri: z
22
22
  .optional(z.url({ protocol: /^https$/ }))
23
- .check(z.describe('The curated HTTPS URL for this token’s logo image, when one is set.')),
24
- name: z.string().check(z.minLength(1), z.describe('The token’s human-readable name.')),
23
+ .check(z.describe('The curated HTTPS URL for this token’s logo image, when one is set.'), z.meta({ examples: ['https://assets.tempo.xyz/icons/usdc.svg'] })),
24
+ name: z
25
+ .string()
26
+ .check(z.minLength(1), z.describe('The token’s human-readable name.'), z.meta({ examples: ['USD Coin'] })),
25
27
  symbol: z
26
28
  .string()
27
- .check(z.minLength(1), z.describe('The short ticker symbol wallets and apps show for this token.')),
29
+ .check(z.minLength(1), z.describe('The short ticker symbol wallets and apps show for this token.'), z.meta({ examples: ['USDC'] })),
28
30
  };
29
31
  /**
30
32
  * Verified-token write/input fields, without the server-derived `id`. Reused