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
@@ -5,32 +5,18 @@ import type * as App from '../../../App.js';
5
5
  import * as Response from '../../../internal/Response.js';
6
6
  import * as Schema from '../../../internal/Schema.js';
7
7
  import type * as Tidx from '../../../internal/Tidx.js';
8
+ import * as Valuation from './valuation.js';
8
9
  export declare const signature = "event Transfer(address indexed from, address indexed to, uint256 value)";
9
10
  /** Zod schemas owned by the transfer handlers. */
10
11
  export declare namespace schema {
11
- /**
12
- * The token moved by a transfer: its contract address and the transferred
13
- * amount, plus the trimmed token reference spread in when requested via
14
- * `include=token`. Reference fields are absent on the base (no-`include`)
15
- * response and best-effort when requested (a row whose metadata is
16
- * unavailable keeps just `address`/`amount`). Shared by every per-row
17
- * transfer response across the API.
18
- *
19
- * The optional metadata fields are inlined here (rather than spread from
20
- * `Tokens.schema.Token` via `z.partial`) so this module avoids referencing
21
- * the `tokens` schema namespace at module-init time — `transfers` and
22
- * `tokens` import each other for runtime helpers (`Transfers.query`,
23
- * `Tokens.resolveToken`), and the schema-evaluation back-edge would
24
- * otherwise deadlock the namespace.
25
- */
12
+ /** A transfer token reference with RPC metadata. Inlined to avoid the `transfers`/`tokens` module cycle. */
26
13
  const SourceToken: z.ZodMiniObject<{
27
14
  address: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
28
- amount: z.ZodMiniString<string>;
29
- currency: z.ZodMiniOptional<z.ZodMiniString<string>>;
30
- decimals: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
15
+ currency: z.ZodMiniString<string>;
16
+ decimals: z.ZodMiniNumber<number>;
31
17
  logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
32
- name: z.ZodMiniOptional<z.ZodMiniString<string>>;
33
- symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
18
+ name: z.ZodMiniString<string>;
19
+ symbol: z.ZodMiniString<string>;
34
20
  verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
35
21
  }, z.core.$strip>;
36
22
  /**
@@ -55,19 +41,20 @@ export declare namespace schema {
55
41
  const Include: z.ZodMiniEnum<{
56
42
  crossToken: "crossToken";
57
43
  memo: "memo";
58
- token: "token";
44
+ "token.logoUri": "token.logoUri";
45
+ "token.verified": "token.verified";
59
46
  totalCount: "totalCount";
60
47
  }>;
61
48
  /**
62
49
  * Parses a comma-separated `include` query value into a list of optional
63
- * resources to embed. Extra lookups (token metadata, the `TransferWithMemo`
64
- * memo/attribution decode, the capped total count) each run only when their
65
- * resource is requested, keeping the base transfer page fast.
50
+ * resources to embed. Extra lookups run only when their resource is
51
+ * requested, keeping the base transfer page fast.
66
52
  */
67
53
  const includeQuery: z.ZodMiniPipe<z.ZodMiniPipe<z.ZodMiniOptional<z.ZodMiniUnknown>, z.ZodMiniTransform<string[], unknown>>, z.ZodMiniArray<z.ZodMiniEnum<{
68
54
  crossToken: "crossToken";
69
55
  memo: "memo";
70
- token: "token";
56
+ "token.logoUri": "token.logoUri";
57
+ "token.verified": "token.verified";
71
58
  totalCount: "totalCount";
72
59
  }>>>;
73
60
  /**
@@ -88,10 +75,12 @@ export declare namespace schema {
88
75
  testnet: "testnet";
89
76
  }>, z.ZodMiniTransform<4217 | 42431, "mainnet" | "testnet">>, z.ZodMiniNumber<unknown>]>, z.ZodMiniNumber<number>>>;
90
77
  cursor: z.ZodMiniOptional<z.ZodMiniString<string>>;
78
+ denomination: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniString<string>, z.ZodMiniTransform<string, string>>>;
91
79
  include: z.ZodMiniPipe<z.ZodMiniPipe<z.ZodMiniOptional<z.ZodMiniUnknown>, z.ZodMiniTransform<string[], unknown>>, z.ZodMiniArray<z.ZodMiniEnum<{
92
80
  crossToken: "crossToken";
93
81
  memo: "memo";
94
- token: "token";
82
+ "token.logoUri": "token.logoUri";
83
+ "token.verified": "token.verified";
95
84
  totalCount: "totalCount";
96
85
  }>>>;
97
86
  limit: z.ZodMiniDefault<z.ZodMiniNumber<unknown>>;
@@ -111,14 +100,23 @@ export declare namespace schema {
111
100
  const Transfer: z.ZodMiniObject<{
112
101
  attribution: z.ZodMiniOptional<z.ZodMiniString<string>>;
113
102
  blockNumber: z.ZodMiniNumber<number>;
103
+ destinationAmount: z.ZodMiniOptional<z.ZodMiniObject<{
104
+ baseUnits: z.ZodMiniString<string>;
105
+ currency: z.ZodMiniString<string>;
106
+ decimals: z.ZodMiniNumber<number>;
107
+ formatted: z.ZodMiniString<string>;
108
+ valuation: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniObject<{
109
+ amount: z.ZodMiniString<string>;
110
+ currency: z.ZodMiniString<string>;
111
+ }, z.core.$strip>>>;
112
+ }, z.core.$strip>>;
114
113
  destinationToken: z.ZodMiniOptional<z.ZodMiniObject<{
115
114
  address: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
116
- amount: z.ZodMiniString<string>;
117
- currency: z.ZodMiniOptional<z.ZodMiniString<string>>;
118
- decimals: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
115
+ currency: z.ZodMiniString<string>;
116
+ decimals: z.ZodMiniNumber<number>;
119
117
  logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
120
- name: z.ZodMiniOptional<z.ZodMiniString<string>>;
121
- symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
118
+ name: z.ZodMiniString<string>;
119
+ symbol: z.ZodMiniString<string>;
122
120
  verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
123
121
  }, z.core.$strip>>;
124
122
  id: z.ZodMiniString<string>;
@@ -126,32 +124,60 @@ export declare namespace schema {
126
124
  memo: z.ZodMiniOptional<z.ZodMiniString<string>>;
127
125
  recipient: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
128
126
  sender: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
127
+ sourceAmount: z.ZodMiniObject<{
128
+ baseUnits: z.ZodMiniString<string>;
129
+ currency: z.ZodMiniString<string>;
130
+ decimals: z.ZodMiniNumber<number>;
131
+ formatted: z.ZodMiniString<string>;
132
+ valuation: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniObject<{
133
+ amount: z.ZodMiniString<string>;
134
+ currency: z.ZodMiniString<string>;
135
+ }, z.core.$strip>>>;
136
+ }, z.core.$strip>;
129
137
  sourceToken: z.ZodMiniObject<{
130
138
  address: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
131
- amount: z.ZodMiniString<string>;
132
- currency: z.ZodMiniOptional<z.ZodMiniString<string>>;
133
- decimals: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
139
+ currency: z.ZodMiniString<string>;
140
+ decimals: z.ZodMiniNumber<number>;
134
141
  logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
135
- name: z.ZodMiniOptional<z.ZodMiniString<string>>;
136
- symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
142
+ name: z.ZodMiniString<string>;
143
+ symbol: z.ZodMiniString<string>;
137
144
  verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
138
145
  }, z.core.$strip>;
139
146
  timestamp: z.ZodMiniISODateTime;
140
147
  transactionHash: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
141
148
  }, z.core.$strip>;
149
+ /** Page-level resources: opt-in counts plus valuation rate provenance. */
150
+ const Meta: z.ZodMiniObject<{
151
+ pricing: z.ZodMiniOptional<z.ZodMiniObject<{
152
+ asOf: z.ZodMiniISODateTime;
153
+ basis: z.ZodMiniLiteral<"nominal">;
154
+ source: z.ZodMiniString<string>;
155
+ }, z.core.$strip>>;
156
+ totalCount: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
157
+ totalCountCapped: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
158
+ }, z.core.$strip>;
142
159
  /** Page of TIP-20 token transfers across the chain, ordered by block then log index. */
143
160
  const Response: z.ZodMiniObject<{
144
161
  data: z.ZodMiniArray<z.ZodMiniObject<{
145
162
  attribution: z.ZodMiniOptional<z.ZodMiniString<string>>;
146
163
  blockNumber: z.ZodMiniNumber<number>;
164
+ destinationAmount: z.ZodMiniOptional<z.ZodMiniObject<{
165
+ baseUnits: z.ZodMiniString<string>;
166
+ currency: z.ZodMiniString<string>;
167
+ decimals: z.ZodMiniNumber<number>;
168
+ formatted: z.ZodMiniString<string>;
169
+ valuation: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniObject<{
170
+ amount: z.ZodMiniString<string>;
171
+ currency: z.ZodMiniString<string>;
172
+ }, z.core.$strip>>>;
173
+ }, z.core.$strip>>;
147
174
  destinationToken: z.ZodMiniOptional<z.ZodMiniObject<{
148
175
  address: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
149
- amount: z.ZodMiniString<string>;
150
- currency: z.ZodMiniOptional<z.ZodMiniString<string>>;
151
- decimals: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
176
+ currency: z.ZodMiniString<string>;
177
+ decimals: z.ZodMiniNumber<number>;
152
178
  logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
153
- name: z.ZodMiniOptional<z.ZodMiniString<string>>;
154
- symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
179
+ name: z.ZodMiniString<string>;
180
+ symbol: z.ZodMiniString<string>;
155
181
  verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
156
182
  }, z.core.$strip>>;
157
183
  id: z.ZodMiniString<string>;
@@ -159,29 +185,43 @@ export declare namespace schema {
159
185
  memo: z.ZodMiniOptional<z.ZodMiniString<string>>;
160
186
  recipient: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
161
187
  sender: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
188
+ sourceAmount: z.ZodMiniObject<{
189
+ baseUnits: z.ZodMiniString<string>;
190
+ currency: z.ZodMiniString<string>;
191
+ decimals: z.ZodMiniNumber<number>;
192
+ formatted: z.ZodMiniString<string>;
193
+ valuation: z.ZodMiniOptional<z.ZodMiniNullable<z.ZodMiniObject<{
194
+ amount: z.ZodMiniString<string>;
195
+ currency: z.ZodMiniString<string>;
196
+ }, z.core.$strip>>>;
197
+ }, z.core.$strip>;
162
198
  sourceToken: z.ZodMiniObject<{
163
199
  address: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
164
- amount: z.ZodMiniString<string>;
165
- currency: z.ZodMiniOptional<z.ZodMiniString<string>>;
166
- decimals: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
200
+ currency: z.ZodMiniString<string>;
201
+ decimals: z.ZodMiniNumber<number>;
167
202
  logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
168
- name: z.ZodMiniOptional<z.ZodMiniString<string>>;
169
- symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
203
+ name: z.ZodMiniString<string>;
204
+ symbol: z.ZodMiniString<string>;
170
205
  verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
171
206
  }, z.core.$strip>;
172
207
  timestamp: z.ZodMiniISODateTime;
173
208
  transactionHash: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
174
209
  }, z.core.$strip>>;
175
210
  meta: z.ZodMiniOptional<z.ZodMiniObject<{
176
- totalCountCapped: z.ZodMiniBoolean<boolean>;
177
- totalCount: z.ZodMiniNumber<number>;
211
+ pricing: z.ZodMiniOptional<z.ZodMiniObject<{
212
+ asOf: z.ZodMiniISODateTime;
213
+ basis: z.ZodMiniLiteral<"nominal">;
214
+ source: z.ZodMiniString<string>;
215
+ }, z.core.$strip>>;
216
+ totalCount: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
217
+ totalCountCapped: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
178
218
  }, z.core.$strip>>;
179
219
  nextCursor: z.ZodMiniNullable<z.ZodMiniString<string>>;
180
220
  }, z.core.$strip>;
181
221
  }
182
222
  }
183
223
  /** Creates transfer handlers. */
184
- export declare function transfers(): import("hono/hono-base").HonoBase<App.Environment, {
224
+ export declare function transfers(options?: transfers.Options): import("hono/hono-base").HonoBase<App.Environment, {
185
225
  "/v1/transfers": {
186
226
  $get: {
187
227
  output: null;
@@ -197,6 +237,7 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
197
237
  'blockNumber.to'?: string | string[];
198
238
  chainId?: string | string[];
199
239
  cursor?: string | string[];
240
+ denomination?: string | string[];
200
241
  include?: string | string[];
201
242
  limit?: string | string[];
202
243
  order?: string | string[];
@@ -208,14 +249,14 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
208
249
  } | {
209
250
  output: {
210
251
  error: {
211
- code: "api_key_malformed";
252
+ code: "upstream_error";
212
253
  details?: readonly Response.error.Detail[] | undefined;
213
254
  message: string;
214
255
  };
215
256
  requestId: string;
216
257
  };
217
258
  outputFormat: "json";
218
- status: 400;
259
+ status: 502;
219
260
  input: {
220
261
  query?: {
221
262
  recipient?: string | string[];
@@ -226,6 +267,7 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
226
267
  'blockNumber.to'?: string | string[];
227
268
  chainId?: string | string[];
228
269
  cursor?: string | string[];
270
+ denomination?: string | string[];
229
271
  include?: string | string[];
230
272
  limit?: string | string[];
231
273
  order?: string | string[];
@@ -237,14 +279,14 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
237
279
  } | {
238
280
  output: {
239
281
  error: {
240
- code: "api_key_invalid" | "api_key_missing";
282
+ code: "api_key_malformed";
241
283
  details?: readonly Response.error.Detail[] | undefined;
242
284
  message: string;
243
285
  };
244
286
  requestId: string;
245
287
  };
246
288
  outputFormat: "json";
247
- status: 401;
289
+ status: 400;
248
290
  input: {
249
291
  query?: {
250
292
  recipient?: string | string[];
@@ -255,6 +297,7 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
255
297
  'blockNumber.to'?: string | string[];
256
298
  chainId?: string | string[];
257
299
  cursor?: string | string[];
300
+ denomination?: string | string[];
258
301
  include?: string | string[];
259
302
  limit?: string | string[];
260
303
  order?: string | string[];
@@ -266,14 +309,14 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
266
309
  } | {
267
310
  output: {
268
311
  error: {
269
- code: "api_key_forbidden";
312
+ code: "api_key_invalid" | "api_key_missing";
270
313
  details?: readonly Response.error.Detail[] | undefined;
271
314
  message: string;
272
315
  };
273
316
  requestId: string;
274
317
  };
275
318
  outputFormat: "json";
276
- status: 403;
319
+ status: 401;
277
320
  input: {
278
321
  query?: {
279
322
  recipient?: string | string[];
@@ -284,6 +327,7 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
284
327
  'blockNumber.to'?: string | string[];
285
328
  chainId?: string | string[];
286
329
  cursor?: string | string[];
330
+ denomination?: string | string[];
287
331
  include?: string | string[];
288
332
  limit?: string | string[];
289
333
  order?: string | string[];
@@ -295,14 +339,14 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
295
339
  } | {
296
340
  output: {
297
341
  error: {
298
- code: "payment_required" | "rate_limit_exceeded";
342
+ code: "api_key_forbidden";
299
343
  details?: readonly Response.error.Detail[] | undefined;
300
344
  message: string;
301
345
  };
302
346
  requestId: string;
303
347
  };
304
348
  outputFormat: "json";
305
- status: 429;
349
+ status: 403;
306
350
  input: {
307
351
  query?: {
308
352
  recipient?: string | string[];
@@ -313,6 +357,7 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
313
357
  'blockNumber.to'?: string | string[];
314
358
  chainId?: string | string[];
315
359
  cursor?: string | string[];
360
+ denomination?: string | string[];
316
361
  include?: string | string[];
317
362
  limit?: string | string[];
318
363
  order?: string | string[];
@@ -324,14 +369,14 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
324
369
  } | {
325
370
  output: {
326
371
  error: {
327
- code: "query_invalid";
372
+ code: "payment_required" | "rate_limit_exceeded";
328
373
  details?: readonly Response.error.Detail[] | undefined;
329
374
  message: string;
330
375
  };
331
376
  requestId: string;
332
377
  };
333
378
  outputFormat: "json";
334
- status: 400;
379
+ status: 429;
335
380
  input: {
336
381
  query?: {
337
382
  recipient?: string | string[];
@@ -342,6 +387,7 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
342
387
  'blockNumber.to'?: string | string[];
343
388
  chainId?: string | string[];
344
389
  cursor?: string | string[];
390
+ denomination?: string | string[];
345
391
  include?: string | string[];
346
392
  limit?: string | string[];
347
393
  order?: string | string[];
@@ -353,14 +399,14 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
353
399
  } | {
354
400
  output: {
355
401
  error: {
356
- code: "upstream_error";
402
+ code: "query_invalid";
357
403
  details?: readonly Response.error.Detail[] | undefined;
358
404
  message: string;
359
405
  };
360
406
  requestId: string;
361
407
  };
362
408
  outputFormat: "json";
363
- status: 502;
409
+ status: 400;
364
410
  input: {
365
411
  query?: {
366
412
  recipient?: string | string[];
@@ -371,6 +417,7 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
371
417
  'blockNumber.to'?: string | string[];
372
418
  chainId?: string | string[];
373
419
  cursor?: string | string[];
420
+ denomination?: string | string[];
374
421
  include?: string | string[];
375
422
  limit?: string | string[];
376
423
  order?: string | string[];
@@ -384,14 +431,23 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
384
431
  data: {
385
432
  attribution?: string | undefined;
386
433
  blockNumber: number;
434
+ destinationAmount?: {
435
+ baseUnits: string;
436
+ currency: string;
437
+ decimals: number;
438
+ formatted: string;
439
+ valuation?: {
440
+ amount: string;
441
+ currency: string;
442
+ } | null | undefined;
443
+ } | undefined;
387
444
  destinationToken?: {
388
445
  address: `0x${string}`;
389
- amount: string;
390
- currency?: string | undefined;
391
- decimals?: number | undefined;
446
+ currency: string;
447
+ decimals: number;
392
448
  logoUri?: string | undefined;
393
- name?: string | undefined;
394
- symbol?: string | undefined;
449
+ name: string;
450
+ symbol: string;
395
451
  verified?: boolean | undefined;
396
452
  } | undefined;
397
453
  id: string;
@@ -399,22 +455,36 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
399
455
  memo?: string | undefined;
400
456
  recipient: `0x${string}`;
401
457
  sender: `0x${string}`;
458
+ sourceAmount: {
459
+ baseUnits: string;
460
+ currency: string;
461
+ decimals: number;
462
+ formatted: string;
463
+ valuation?: {
464
+ amount: string;
465
+ currency: string;
466
+ } | null | undefined;
467
+ };
402
468
  sourceToken: {
403
469
  address: `0x${string}`;
404
- amount: string;
405
- currency?: string | undefined;
406
- decimals?: number | undefined;
470
+ currency: string;
471
+ decimals: number;
407
472
  logoUri?: string | undefined;
408
- name?: string | undefined;
409
- symbol?: string | undefined;
473
+ name: string;
474
+ symbol: string;
410
475
  verified?: boolean | undefined;
411
476
  };
412
477
  timestamp: string;
413
478
  transactionHash: `0x${string}`;
414
479
  }[];
415
480
  meta?: {
416
- totalCountCapped: boolean;
417
- totalCount: number;
481
+ pricing?: {
482
+ asOf: string;
483
+ basis: "nominal";
484
+ source: string;
485
+ } | undefined;
486
+ totalCount?: number | undefined;
487
+ totalCountCapped?: boolean | undefined;
418
488
  } | undefined;
419
489
  nextCursor: string | null;
420
490
  };
@@ -430,6 +500,7 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
430
500
  'blockNumber.to'?: string | string[];
431
501
  chainId?: string | string[];
432
502
  cursor?: string | string[];
503
+ denomination?: string | string[];
433
504
  include?: string | string[];
434
505
  limit?: string | string[];
435
506
  order?: string | string[];
@@ -441,17 +512,22 @@ export declare function transfers(): import("hono/hono-base").HonoBase<App.Envir
441
512
  };
442
513
  };
443
514
  }, "/", "/v1/transfers">;
515
+ export declare namespace transfers {
516
+ /** Options for the transfer handlers. */
517
+ type Options = {
518
+ /** FX configuration backing leg valuation. */
519
+ fx?: Valuation.addresses.Fx | undefined;
520
+ };
521
+ }
444
522
  /**
445
523
  * Shared TIP-20 `Transfer` page query. Used by `GET /transfers` and the
446
- * webhook poller. Builds the signature-decoded `Transfer` CTE query, applies
524
+ * webhook poller. Builds signature-decoded `Transfer` CTE queries, applies
447
525
  * opaque keyset pagination on `(block_num, log_idx)`, and decodes rows into a
448
526
  * strongly-typed intermediate shape that each caller maps to its own public
449
527
  * response.
450
528
  *
451
- * `eitherSide` (the subject address must appear on _either_ side of the
452
- * transfer) is exposed alongside the one-sided `sender`/`recipient` filters
453
- * because composing it with the keyset cursor pre-WHERE in SQL is awkward at
454
- * the call site; the helper takes the knob directly.
529
+ * `eitherSide` is exposed alongside one-sided `sender`/`recipient` filters
530
+ * because it requires two upstream scans. The helper owns their ordered merge.
455
531
  *
456
532
  * Memoization lives inside the helper under one canonical `transfers:v1:…`
457
533
  * key derived from every filter — so equivalent filter combinations share a
@@ -537,7 +613,7 @@ export declare namespace scan {
537
613
  declare function filterClauses(options: filterClauses.Options): string[];
538
614
  declare namespace filterClauses {
539
615
  /** The non-pagination filter fields of {@link scan.Options}. */
540
- type Options = Pick<scan.Options, 'eitherSide' | 'fromBlock' | 'fromTimestamp' | 'recipient' | 'sender' | 'toBlock' | 'toTimestamp' | 'token'>;
616
+ type Options = Pick<scan.Options, 'fromBlock' | 'fromTimestamp' | 'recipient' | 'sender' | 'toBlock' | 'toTimestamp' | 'token'>;
541
617
  }
542
618
  /**
543
619
  * Capped total-row count for the `Transfer` feed, sharing {@link query}'s
@@ -561,12 +637,12 @@ export declare namespace count {
561
637
  /**
562
638
  * Context-free core of {@link count}: counts token-scoped rows from
563
639
  * `token_transfers`, otherwise the decoded `Transfer` CTE. The capped inner
564
- * scan bounds work; the SQL aggregate runs on ClickHouse.
640
+ * scan bounds work while preserving each source's established query engine.
565
641
  */
566
642
  export declare function countScan(deps: scan.Deps, options: countScan.Options): Promise<count.Result>;
567
643
  export declare namespace countScan {
568
644
  /** Options for {@link countScan}: the shared filters plus the target chain. */
569
- type Options = filterClauses.Options & Pick<scan.Options, 'chainId'> & {
645
+ type Options = filterClauses.Options & Pick<scan.Options, 'chainId' | 'eitherSide'> & {
570
646
  /** Count folded cross-token transfers instead of raw `Transfer` logs. */
571
647
  crossToken?: boolean | undefined;
572
648
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["../../../../src/apps/data/routes/transfers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["../../../../src/apps/data/routes/transfers.ts"],"names":[],"mappings":"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"}