tapimo 0.0.0 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/ApiKey.d.ts +65 -0
  4. package/dist/ApiKey.d.ts.map +1 -0
  5. package/dist/ApiKey.js +105 -0
  6. package/dist/ApiKey.js.map +1 -0
  7. package/dist/ApiKeySource.d.ts +166 -0
  8. package/dist/ApiKeySource.d.ts.map +1 -0
  9. package/dist/ApiKeySource.js +234 -0
  10. package/dist/ApiKeySource.js.map +1 -0
  11. package/dist/App.d.ts +19317 -0
  12. package/dist/App.d.ts.map +1 -0
  13. package/dist/App.js +612 -0
  14. package/dist/App.js.map +1 -0
  15. package/dist/Assets.d.ts +44 -0
  16. package/dist/Assets.d.ts.map +1 -0
  17. package/dist/Assets.js +23 -0
  18. package/dist/Assets.js.map +1 -0
  19. package/dist/Auth.d.ts +2 -0
  20. package/dist/Auth.d.ts.map +1 -0
  21. package/dist/Auth.js +2 -0
  22. package/dist/Auth.js.map +1 -0
  23. package/dist/Cli.d.ts +21 -0
  24. package/dist/Cli.d.ts.map +1 -0
  25. package/dist/Cli.js +13 -0
  26. package/dist/Cli.js.map +1 -0
  27. package/dist/Client.d.ts +20 -0
  28. package/dist/Client.d.ts.map +1 -0
  29. package/dist/Client.js +24 -0
  30. package/dist/Client.js.map +1 -0
  31. package/dist/Metrics.d.ts +70 -0
  32. package/dist/Metrics.d.ts.map +1 -0
  33. package/dist/Metrics.js +91 -0
  34. package/dist/Metrics.js.map +1 -0
  35. package/dist/Scope.d.ts +35 -0
  36. package/dist/Scope.d.ts.map +1 -0
  37. package/dist/Scope.js +38 -0
  38. package/dist/Scope.js.map +1 -0
  39. package/dist/Webhooks.d.ts +79 -0
  40. package/dist/Webhooks.d.ts.map +1 -0
  41. package/dist/Webhooks.js +107 -0
  42. package/dist/Webhooks.js.map +1 -0
  43. package/dist/admin/Access.d.ts +41 -0
  44. package/dist/admin/Access.d.ts.map +1 -0
  45. package/dist/admin/Access.js +75 -0
  46. package/dist/admin/Access.js.map +1 -0
  47. package/dist/admin/App.d.ts +1221 -0
  48. package/dist/admin/App.d.ts.map +1 -0
  49. package/dist/admin/App.js +113 -0
  50. package/dist/admin/App.js.map +1 -0
  51. package/dist/admin/apps/api-keys.d.ts +209 -0
  52. package/dist/admin/apps/api-keys.d.ts.map +1 -0
  53. package/dist/admin/apps/api-keys.js +129 -0
  54. package/dist/admin/apps/api-keys.js.map +1 -0
  55. package/dist/admin/apps/scopes.d.ts +46 -0
  56. package/dist/admin/apps/scopes.d.ts.map +1 -0
  57. package/dist/admin/apps/scopes.js +41 -0
  58. package/dist/admin/apps/scopes.js.map +1 -0
  59. package/dist/admin/apps/verified-tokens.d.ts +1206 -0
  60. package/dist/admin/apps/verified-tokens.d.ts.map +1 -0
  61. package/dist/admin/apps/verified-tokens.js +485 -0
  62. package/dist/admin/apps/verified-tokens.js.map +1 -0
  63. package/dist/admin/index.d.ts +3 -0
  64. package/dist/admin/index.d.ts.map +1 -0
  65. package/dist/admin/index.js +3 -0
  66. package/dist/admin/index.js.map +1 -0
  67. package/dist/admin/ui.generated.d.ts +11 -0
  68. package/dist/admin/ui.generated.d.ts.map +1 -0
  69. package/dist/admin/ui.generated.js +43 -0
  70. package/dist/admin/ui.generated.js.map +1 -0
  71. package/dist/apps/activities.d.ts +18725 -0
  72. package/dist/apps/activities.d.ts.map +1 -0
  73. package/dist/apps/activities.js +3138 -0
  74. package/dist/apps/activities.js.map +1 -0
  75. package/dist/apps/addresses.d.ts +3662 -0
  76. package/dist/apps/addresses.d.ts.map +1 -0
  77. package/dist/apps/addresses.js +22 -0
  78. package/dist/apps/addresses.js.map +1 -0
  79. package/dist/apps/balances.d.ts +342 -0
  80. package/dist/apps/balances.d.ts.map +1 -0
  81. package/dist/apps/balances.js +393 -0
  82. package/dist/apps/balances.js.map +1 -0
  83. package/dist/apps/blocks.d.ts +931 -0
  84. package/dist/apps/blocks.d.ts.map +1 -0
  85. package/dist/apps/blocks.js +689 -0
  86. package/dist/apps/blocks.js.map +1 -0
  87. package/dist/apps/coingecko.d.ts +1053 -0
  88. package/dist/apps/coingecko.d.ts.map +1 -0
  89. package/dist/apps/coingecko.js +1015 -0
  90. package/dist/apps/coingecko.js.map +1 -0
  91. package/dist/apps/exchanges.d.ts +3000 -0
  92. package/dist/apps/exchanges.d.ts.map +1 -0
  93. package/dist/apps/exchanges.js +3570 -0
  94. package/dist/apps/exchanges.js.map +1 -0
  95. package/dist/apps/fee-amm.d.ts +640 -0
  96. package/dist/apps/fee-amm.d.ts.map +1 -0
  97. package/dist/apps/fee-amm.js +815 -0
  98. package/dist/apps/fee-amm.js.map +1 -0
  99. package/dist/apps/indexer.d.ts +116 -0
  100. package/dist/apps/indexer.d.ts.map +1 -0
  101. package/dist/apps/indexer.js +270 -0
  102. package/dist/apps/indexer.js.map +1 -0
  103. package/dist/apps/receipts.d.ts +1438 -0
  104. package/dist/apps/receipts.d.ts.map +1 -0
  105. package/dist/apps/receipts.js +874 -0
  106. package/dist/apps/receipts.js.map +1 -0
  107. package/dist/apps/rpc.d.ts +173 -0
  108. package/dist/apps/rpc.d.ts.map +1 -0
  109. package/dist/apps/rpc.js +191 -0
  110. package/dist/apps/rpc.js.map +1 -0
  111. package/dist/apps/tokenlist.d.ts +192 -0
  112. package/dist/apps/tokenlist.d.ts.map +1 -0
  113. package/dist/apps/tokenlist.js +153 -0
  114. package/dist/apps/tokenlist.js.map +1 -0
  115. package/dist/apps/tokens.d.ts +2246 -0
  116. package/dist/apps/tokens.d.ts.map +1 -0
  117. package/dist/apps/tokens.js +1789 -0
  118. package/dist/apps/tokens.js.map +1 -0
  119. package/dist/apps/transactions.d.ts +2327 -0
  120. package/dist/apps/transactions.d.ts.map +1 -0
  121. package/dist/apps/transactions.js +975 -0
  122. package/dist/apps/transactions.js.map +1 -0
  123. package/dist/apps/transfers.d.ts +589 -0
  124. package/dist/apps/transfers.d.ts.map +1 -0
  125. package/dist/apps/transfers.js +769 -0
  126. package/dist/apps/transfers.js.map +1 -0
  127. package/dist/apps/verified-tokens.d.ts +544 -0
  128. package/dist/apps/verified-tokens.d.ts.map +1 -0
  129. package/dist/apps/verified-tokens.js +234 -0
  130. package/dist/apps/verified-tokens.js.map +1 -0
  131. package/dist/apps/webhooks.d.ts +7684 -0
  132. package/dist/apps/webhooks.d.ts.map +1 -0
  133. package/dist/apps/webhooks.js +2112 -0
  134. package/dist/apps/webhooks.js.map +1 -0
  135. package/dist/cloudflare.d.ts +32 -0
  136. package/dist/cloudflare.d.ts.map +1 -0
  137. package/dist/cloudflare.js +45 -0
  138. package/dist/cloudflare.js.map +1 -0
  139. package/dist/index.d.ts +16 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +16 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/internal/Auth.d.ts +298 -0
  144. package/dist/internal/Auth.d.ts.map +1 -0
  145. package/dist/internal/Auth.js +618 -0
  146. package/dist/internal/Auth.js.map +1 -0
  147. package/dist/internal/Cache.d.ts +74 -0
  148. package/dist/internal/Cache.d.ts.map +1 -0
  149. package/dist/internal/Cache.js +215 -0
  150. package/dist/internal/Cache.js.map +1 -0
  151. package/dist/internal/Cursor.d.ts +79 -0
  152. package/dist/internal/Cursor.d.ts.map +1 -0
  153. package/dist/internal/Cursor.js +116 -0
  154. package/dist/internal/Cursor.js.map +1 -0
  155. package/dist/internal/EdgeCache.d.ts +59 -0
  156. package/dist/internal/EdgeCache.d.ts.map +1 -0
  157. package/dist/internal/EdgeCache.js +174 -0
  158. package/dist/internal/EdgeCache.js.map +1 -0
  159. package/dist/internal/Log.d.ts +104 -0
  160. package/dist/internal/Log.d.ts.map +1 -0
  161. package/dist/internal/Log.js +118 -0
  162. package/dist/internal/Log.js.map +1 -0
  163. package/dist/internal/MetricSink.d.ts +65 -0
  164. package/dist/internal/MetricSink.d.ts.map +1 -0
  165. package/dist/internal/MetricSink.js +146 -0
  166. package/dist/internal/MetricSink.js.map +1 -0
  167. package/dist/internal/Mpp.d.ts +71 -0
  168. package/dist/internal/Mpp.d.ts.map +1 -0
  169. package/dist/internal/Mpp.js +105 -0
  170. package/dist/internal/Mpp.js.map +1 -0
  171. package/dist/internal/OpenApi.d.ts +313 -0
  172. package/dist/internal/OpenApi.d.ts.map +1 -0
  173. package/dist/internal/OpenApi.fonts.d.ts +2 -0
  174. package/dist/internal/OpenApi.fonts.d.ts.map +1 -0
  175. package/dist/internal/OpenApi.fonts.js +39 -0
  176. package/dist/internal/OpenApi.fonts.js.map +1 -0
  177. package/dist/internal/OpenApi.js +335 -0
  178. package/dist/internal/OpenApi.js.map +1 -0
  179. package/dist/internal/OpenApi.logo.d.ts +6 -0
  180. package/dist/internal/OpenApi.logo.d.ts.map +1 -0
  181. package/dist/internal/OpenApi.logo.js +19 -0
  182. package/dist/internal/OpenApi.logo.js.map +1 -0
  183. package/dist/internal/Path.d.ts +5 -0
  184. package/dist/internal/Path.d.ts.map +1 -0
  185. package/dist/internal/Path.js +16 -0
  186. package/dist/internal/Path.js.map +1 -0
  187. package/dist/internal/RateLimit.d.ts +60 -0
  188. package/dist/internal/RateLimit.d.ts.map +1 -0
  189. package/dist/internal/RateLimit.js +48 -0
  190. package/dist/internal/RateLimit.js.map +1 -0
  191. package/dist/internal/Response.d.ts +132 -0
  192. package/dist/internal/Response.d.ts.map +1 -0
  193. package/dist/internal/Response.js +72 -0
  194. package/dist/internal/Response.js.map +1 -0
  195. package/dist/internal/Schema.d.ts +257 -0
  196. package/dist/internal/Schema.d.ts.map +1 -0
  197. package/dist/internal/Schema.js +360 -0
  198. package/dist/internal/Schema.js.map +1 -0
  199. package/dist/internal/Store.d.ts +204 -0
  200. package/dist/internal/Store.d.ts.map +1 -0
  201. package/dist/internal/Store.js +291 -0
  202. package/dist/internal/Store.js.map +1 -0
  203. package/dist/internal/Tidx.d.ts +120 -0
  204. package/dist/internal/Tidx.d.ts.map +1 -0
  205. package/dist/internal/Tidx.js +156 -0
  206. package/dist/internal/Tidx.js.map +1 -0
  207. package/dist/internal/Timing.d.ts +22 -0
  208. package/dist/internal/Timing.d.ts.map +1 -0
  209. package/dist/internal/Timing.js +32 -0
  210. package/dist/internal/Timing.js.map +1 -0
  211. package/dist/internal/Ttl.d.ts +25 -0
  212. package/dist/internal/Ttl.d.ts.map +1 -0
  213. package/dist/internal/Ttl.js +49 -0
  214. package/dist/internal/Ttl.js.map +1 -0
  215. package/dist/internal/Value.d.ts +47 -0
  216. package/dist/internal/Value.d.ts.map +1 -0
  217. package/dist/internal/Value.js +122 -0
  218. package/dist/internal/Value.js.map +1 -0
  219. package/dist/internal/VerifiedTokens.d.ts +228 -0
  220. package/dist/internal/VerifiedTokens.d.ts.map +1 -0
  221. package/dist/internal/VerifiedTokens.js +450 -0
  222. package/dist/internal/VerifiedTokens.js.map +1 -0
  223. package/dist/internal/Viem.d.ts +2082 -0
  224. package/dist/internal/Viem.d.ts.map +1 -0
  225. package/dist/internal/Viem.js +63 -0
  226. package/dist/internal/Viem.js.map +1 -0
  227. package/dist/internal/WebhookDestination.d.ts +198 -0
  228. package/dist/internal/WebhookDestination.d.ts.map +1 -0
  229. package/dist/internal/WebhookDestination.js +170 -0
  230. package/dist/internal/WebhookDestination.js.map +1 -0
  231. package/dist/internal/Webhooks.d.ts +433 -0
  232. package/dist/internal/Webhooks.d.ts.map +1 -0
  233. package/dist/internal/Webhooks.js +489 -0
  234. package/dist/internal/Webhooks.js.map +1 -0
  235. package/dist/internal/webhookDestinations/betterStack.d.ts +26 -0
  236. package/dist/internal/webhookDestinations/betterStack.d.ts.map +1 -0
  237. package/dist/internal/webhookDestinations/betterStack.js +76 -0
  238. package/dist/internal/webhookDestinations/betterStack.js.map +1 -0
  239. package/dist/internal/webhookDestinations/slack.d.ts +59 -0
  240. package/dist/internal/webhookDestinations/slack.d.ts.map +1 -0
  241. package/dist/internal/webhookDestinations/slack.js +422 -0
  242. package/dist/internal/webhookDestinations/slack.js.map +1 -0
  243. package/dist/internal/webhookDestinations/url.d.ts +17 -0
  244. package/dist/internal/webhookDestinations/url.d.ts.map +1 -0
  245. package/dist/internal/webhookDestinations/url.js +130 -0
  246. package/dist/internal/webhookDestinations/url.js.map +1 -0
  247. package/dist/openrpc.json +5302 -0
  248. package/package.json +46 -4
  249. package/seeds/31318/icons/0x20c0000000000000000000000000000000000000.svg +1 -0
  250. package/seeds/31318/icons/0x20c0000000000000000000000000000000000001.svg +1 -0
  251. package/seeds/31318/icons/0x20c0000000000000000000000000000000000002.svg +1 -0
  252. package/seeds/31318/icons/0x20c0000000000000000000000000000000000003.svg +1 -0
  253. package/seeds/31318/verified-tokens.json +30 -0
  254. package/seeds/4217/icons/0x20c0000000000000000000000000000000000000.svg +25 -0
  255. package/seeds/4217/icons/0x20c000000000000000000000048c8f36df1c9a4a.svg +1 -0
  256. package/seeds/4217/icons/0x20c0000000000000000000000520792dcccccccc.svg +1 -0
  257. package/seeds/4217/icons/0x20c0000000000000000000000a6da882d075a4c3.svg +4 -0
  258. package/seeds/4217/icons/0x20c000000000000000000000111111111e910f0f.svg +30 -0
  259. package/seeds/4217/icons/0x20c00000000000000000000014f22ca97301eb73.svg +1 -0
  260. package/seeds/4217/icons/0x20c0000000000000000000001621e21f71cf12fb.svg +1 -0
  261. package/seeds/4217/icons/0x20c0000000000000000000002f52d5cc21a3207b.svg +1 -0
  262. package/seeds/4217/icons/0x20c0000000000000000000003158081efd85bfc2.svg +11 -0
  263. package/seeds/4217/icons/0x20c0000000000000000000003554d28269e0f3c2.svg +1 -0
  264. package/seeds/4217/icons/0x20c000000000000000000000383a23bacb546ab9.svg +1 -0
  265. package/seeds/4217/icons/0x20c00000000000000000000042109aef2f8b28e1.png +0 -0
  266. package/seeds/4217/icons/0x20c0000000000000000000005c0bac7cef389a11.svg +1 -0
  267. package/seeds/4217/icons/0x20c0000000000000000000006fd9a167923ba194.png +0 -0
  268. package/seeds/4217/icons/0x20c0000000000000000000007f7ba549dd0251b9.svg +1 -0
  269. package/seeds/4217/icons/0x20c0000000000000000000008191667423f70e67.svg +5 -0
  270. package/seeds/4217/icons/0x20c0000000000000000000008ee4fcff88888888.svg +1 -0
  271. package/seeds/4217/icons/0x20c0000000000000000000009a4a4b17e0dc6651.svg +1 -0
  272. package/seeds/4217/icons/0x20c000000000000000000000ab02d39df30bd17e.svg +1 -0
  273. package/seeds/4217/icons/0x20c000000000000000000000ae247a1130450f09.svg +1 -0
  274. package/seeds/4217/icons/0x20c000000000000000000000aeed2ec36a54d0e5.svg +1 -0
  275. package/seeds/4217/icons/0x20c000000000000000000000b9537d11c60e8b50.svg +1 -0
  276. package/seeds/4217/icons/0x20c000000000000000000000bd95bfb69fbe6ce3.svg +1 -0
  277. package/seeds/4217/icons/0x20c000000000000000000000c412ec89d0c08be5.svg +1 -0
  278. package/seeds/4217/icons/0x20c000000000000000000000f047dd7018e50367.png +0 -0
  279. package/seeds/4217/verified-tokens.json +177 -0
  280. package/seeds/42431/icons/0x20c0000000000000000000000000000000000000.svg +25 -0
  281. package/seeds/42431/icons/0x20c0000000000000000000000000000000000001.svg +1 -0
  282. package/seeds/42431/icons/0x20c0000000000000000000000000000000000002.svg +1 -0
  283. package/seeds/42431/icons/0x20c0000000000000000000000000000000000003.svg +1 -0
  284. package/seeds/42431/icons/0x20c0000000000000000000009e8d7eb59b783726.svg +1 -0
  285. package/seeds/42431/icons/0x20c000000000000000000000d72572838bbee59c.svg +1 -0
  286. package/seeds/42431/verified-tokens.json +44 -0
  287. package/seeds/openrpc/README.md +27 -0
  288. package/seeds/openrpc/execution-apis.json +8989 -0
  289. package/src/ApiKey.test.ts +91 -0
  290. package/src/ApiKey.ts +122 -0
  291. package/src/ApiKeySource.test-d.ts +11 -0
  292. package/src/ApiKeySource.test.ts +295 -0
  293. package/src/ApiKeySource.ts +303 -0
  294. package/src/App.test-d.ts +38 -0
  295. package/src/App.test.ts +65927 -0
  296. package/src/App.ts +855 -0
  297. package/src/Assets.ts +58 -0
  298. package/src/Auth.ts +1 -0
  299. package/src/Cli.test.ts +81 -0
  300. package/src/Cli.ts +38 -0
  301. package/src/Client.test-d.ts +1438 -0
  302. package/src/Client.test.ts +134 -0
  303. package/src/Client.ts +45 -0
  304. package/src/Metrics.ts +154 -0
  305. package/src/Scope.ts +50 -0
  306. package/src/Webhooks.test.ts +49 -0
  307. package/src/Webhooks.ts +172 -0
  308. package/src/admin/Access.test.ts +130 -0
  309. package/src/admin/Access.ts +87 -0
  310. package/src/admin/App.test.ts +225 -0
  311. package/src/admin/App.ts +216 -0
  312. package/src/admin/apps/api-keys.test.ts +156 -0
  313. package/src/admin/apps/api-keys.ts +157 -0
  314. package/src/admin/apps/scopes.test.ts +52 -0
  315. package/src/admin/apps/scopes.ts +47 -0
  316. package/src/admin/apps/verified-tokens.test.ts +415 -0
  317. package/src/admin/apps/verified-tokens.ts +566 -0
  318. package/src/admin/index.ts +2 -0
  319. package/src/admin/ui/plugin.ts +135 -0
  320. package/src/admin/ui/src/components/Checkbox.tsx +22 -0
  321. package/src/admin/ui/src/components/Dialog.tsx +32 -0
  322. package/src/admin/ui/src/components/MobileProfile.tsx +31 -0
  323. package/src/admin/ui/src/components/Page.tsx +53 -0
  324. package/src/admin/ui/src/components/TempoLogo.tsx +37 -0
  325. package/src/admin/ui/src/fonts/Pilat-Demi.woff2 +0 -0
  326. package/src/admin/ui/src/fonts/Pilat-Regular.woff2 +0 -0
  327. package/src/admin/ui/src/lib/api-keys.ts +63 -0
  328. package/src/admin/ui/src/lib/client.ts +15 -0
  329. package/src/admin/ui/src/lib/config.ts +57 -0
  330. package/src/admin/ui/src/lib/query-client.ts +26 -0
  331. package/src/admin/ui/src/lib/scopes.ts +25 -0
  332. package/src/admin/ui/src/lib/verified-tokens.ts +89 -0
  333. package/src/admin/ui/src/lib/wagmi.ts +18 -0
  334. package/src/admin/ui/src/routeTree.gen.ts +104 -0
  335. package/src/admin/ui/src/router.tsx +25 -0
  336. package/src/admin/ui/src/routes/__root.tsx +219 -0
  337. package/src/admin/ui/src/routes/api-keys.tsx +329 -0
  338. package/src/admin/ui/src/routes/index.tsx +7 -0
  339. package/src/admin/ui/src/routes/verified-tokens.tsx +331 -0
  340. package/src/admin/ui/src/styles.css +20 -0
  341. package/src/admin/ui/tsconfig.json +16 -0
  342. package/src/admin/ui/vite.config.ts +29 -0
  343. package/src/admin/ui.generated.ts +60 -0
  344. package/src/apps/activities.test.ts +1020 -0
  345. package/src/apps/activities.ts +3934 -0
  346. package/src/apps/addresses.ts +24 -0
  347. package/src/apps/balances.test.ts +274 -0
  348. package/src/apps/balances.ts +533 -0
  349. package/src/apps/blocks.test.ts +385 -0
  350. package/src/apps/blocks.ts +896 -0
  351. package/src/apps/coingecko.test.ts +218 -0
  352. package/src/apps/coingecko.ts +1383 -0
  353. package/src/apps/exchanges.test.ts +958 -0
  354. package/src/apps/exchanges.ts +4773 -0
  355. package/src/apps/fee-amm.test.ts +321 -0
  356. package/src/apps/fee-amm.ts +1121 -0
  357. package/src/apps/indexer.test.ts +153 -0
  358. package/src/apps/indexer.ts +330 -0
  359. package/src/apps/receipts.test.ts +285 -0
  360. package/src/apps/receipts.ts +1193 -0
  361. package/src/apps/rpc.test.ts +302 -0
  362. package/src/apps/rpc.ts +222 -0
  363. package/src/apps/tokenlist.test.ts +80 -0
  364. package/src/apps/tokenlist.ts +207 -0
  365. package/src/apps/tokens.test.ts +1062 -0
  366. package/src/apps/tokens.ts +2292 -0
  367. package/src/apps/transactions.test.ts +408 -0
  368. package/src/apps/transactions.ts +1363 -0
  369. package/src/apps/transfers.test.ts +371 -0
  370. package/src/apps/transfers.ts +1116 -0
  371. package/src/apps/verified-tokens.test.ts +114 -0
  372. package/src/apps/verified-tokens.ts +295 -0
  373. package/src/apps/webhooks.test.ts +1937 -0
  374. package/src/apps/webhooks.ts +2926 -0
  375. package/src/cloudflare.ts +55 -0
  376. package/src/index.ts +15 -0
  377. package/src/internal/Auth.test.ts +980 -0
  378. package/src/internal/Auth.ts +1012 -0
  379. package/src/internal/Cache.test.ts +240 -0
  380. package/src/internal/Cache.ts +262 -0
  381. package/src/internal/Cursor.test.ts +100 -0
  382. package/src/internal/Cursor.ts +149 -0
  383. package/src/internal/EdgeCache.test.ts +234 -0
  384. package/src/internal/EdgeCache.ts +224 -0
  385. package/src/internal/Errors.ts +14 -0
  386. package/src/internal/Log.test.ts +244 -0
  387. package/src/internal/Log.ts +216 -0
  388. package/src/internal/MetricSink.ts +220 -0
  389. package/src/internal/Mpp.test.ts +64 -0
  390. package/src/internal/Mpp.ts +141 -0
  391. package/src/internal/OpenApi.fonts.ts +38 -0
  392. package/src/internal/OpenApi.logo.ts +18 -0
  393. package/src/internal/OpenApi.ts +488 -0
  394. package/src/internal/Path.test.ts +14 -0
  395. package/src/internal/Path.ts +15 -0
  396. package/src/internal/RateLimit.test.ts +93 -0
  397. package/src/internal/RateLimit.ts +93 -0
  398. package/src/internal/Response.ts +131 -0
  399. package/src/internal/Schema.test.ts +34 -0
  400. package/src/internal/Schema.ts +523 -0
  401. package/src/internal/Store.test.ts +545 -0
  402. package/src/internal/Store.ts +526 -0
  403. package/src/internal/Tidx.local.test.ts +33 -0
  404. package/src/internal/Tidx.test.ts +294 -0
  405. package/src/internal/Tidx.ts +238 -0
  406. package/src/internal/Timing.test.ts +22 -0
  407. package/src/internal/Timing.ts +62 -0
  408. package/src/internal/Ttl.test.ts +18 -0
  409. package/src/internal/Ttl.ts +59 -0
  410. package/src/internal/Value.ts +114 -0
  411. package/src/internal/VerifiedTokens.test.ts +333 -0
  412. package/src/internal/VerifiedTokens.ts +645 -0
  413. package/src/internal/Viem.test.ts +115 -0
  414. package/src/internal/Viem.ts +165 -0
  415. package/src/internal/WebhookDestination.test.ts +648 -0
  416. package/src/internal/WebhookDestination.ts +331 -0
  417. package/src/internal/Webhooks.test.ts +668 -0
  418. package/src/internal/Webhooks.ts +940 -0
  419. package/src/internal/webhookDestinations/betterStack.ts +91 -0
  420. package/src/internal/webhookDestinations/slack.ts +496 -0
  421. package/src/internal/webhookDestinations/url.ts +128 -0
  422. package/src/openrpc.json +5302 -0
@@ -0,0 +1,589 @@
1
+ import { type Context } from 'hono';
2
+ import { Hex } from 'ox';
3
+ import * as z from 'zod/mini';
4
+ import type * as App from '../App.js';
5
+ import * as Response from '../internal/Response.js';
6
+ import * as Schema from '../internal/Schema.js';
7
+ import type * as Tidx from '../internal/Tidx.js';
8
+ export declare const signature = "event Transfer(address indexed from, address indexed to, uint256 value)";
9
+ /** Zod schemas owned by the transfer handlers. */
10
+ 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
+ */
26
+ const SourceToken: z.ZodMiniObject<{
27
+ 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>>;
31
+ logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
32
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
33
+ symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
34
+ verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
35
+ }, z.core.$strip>;
36
+ /**
37
+ * Filter predicates shared verbatim by the `GET /transfers` list query
38
+ * ({@link getTransfers.Query}, which spreads `Predicates.shape`) and `transfer`
39
+ * webhook subscriptions (`Webhooks.schema.TransferFilters`), so the two never
40
+ * drift. Read-only concerns (pagination, windowing, ordering, `include`,
41
+ * `chainId`) are *not* here — they live only on the list query and have no
42
+ * meaning for an open-ended subscription. Consumers that need different
43
+ * per-field docs (e.g. the list query's mutually-exclusive `address`) override
44
+ * that one field.
45
+ */
46
+ const Predicates: z.ZodMiniObject<{
47
+ address: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
48
+ recipient: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
49
+ sender: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
50
+ token: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
51
+ }, z.core.$strip>;
52
+ /** Schemas for the getTransfers (list) operation. */
53
+ namespace getTransfers {
54
+ /** Optional related resources that callers opt into via `include`. */
55
+ const Include: z.ZodMiniEnum<{
56
+ crossToken: "crossToken";
57
+ memo: "memo";
58
+ token: "token";
59
+ totalCount: "totalCount";
60
+ }>;
61
+ /**
62
+ * 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.
66
+ */
67
+ const includeQuery: z.ZodMiniPipe<z.ZodMiniPipe<z.ZodMiniOptional<z.ZodMiniUnknown>, z.ZodMiniTransform<string[], unknown>>, z.ZodMiniArray<z.ZodMiniEnum<{
68
+ crossToken: "crossToken";
69
+ memo: "memo";
70
+ token: "token";
71
+ totalCount: "totalCount";
72
+ }>>>;
73
+ /**
74
+ * Query parameters for top-level transfer list requests. `address` is a
75
+ * convenience for "either side" — passing it alongside an explicit
76
+ * `sender` or `recipient` is rejected as ambiguous (the helper would have
77
+ * to AND/OR them in a non-obvious way).
78
+ */
79
+ const Query: z.ZodMiniObject<{
80
+ recipient: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
81
+ sender: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
82
+ token: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
83
+ address: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>>;
84
+ 'blockNumber.from': z.ZodMiniOptional<z.ZodMiniNumber<unknown>>;
85
+ 'blockNumber.to': z.ZodMiniOptional<z.ZodMiniNumber<unknown>>;
86
+ chainId: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniUnion<readonly [z.ZodMiniPipe<z.ZodMiniEnum<{
87
+ mainnet: "mainnet";
88
+ testnet: "testnet";
89
+ }>, z.ZodMiniTransform<4217 | 42431, "mainnet" | "testnet">>, z.ZodMiniNumber<unknown>]>, z.ZodMiniNumber<number>>>;
90
+ cursor: z.ZodMiniOptional<z.ZodMiniString<string>>;
91
+ include: z.ZodMiniPipe<z.ZodMiniPipe<z.ZodMiniOptional<z.ZodMiniUnknown>, z.ZodMiniTransform<string[], unknown>>, z.ZodMiniArray<z.ZodMiniEnum<{
92
+ crossToken: "crossToken";
93
+ memo: "memo";
94
+ token: "token";
95
+ totalCount: "totalCount";
96
+ }>>>;
97
+ limit: z.ZodMiniDefault<z.ZodMiniNumber<unknown>>;
98
+ order: z.ZodMiniDefault<z.ZodMiniEnum<{
99
+ asc: "asc";
100
+ desc: "desc";
101
+ }>>;
102
+ page: z.ZodMiniOptional<z.ZodMiniNumber<unknown>>;
103
+ 'timestamp.from': z.ZodMiniOptional<z.ZodMiniISODateTime>;
104
+ 'timestamp.to': z.ZodMiniOptional<z.ZodMiniISODateTime>;
105
+ }, z.core.$strict>;
106
+ /**
107
+ * A single transfer row. The token contract is carried per-row via
108
+ * `sourceToken.address` because `/transfers` is unscoped and rows can span
109
+ * multiple contracts.
110
+ */
111
+ const Transfer: z.ZodMiniObject<{
112
+ attribution: z.ZodMiniOptional<z.ZodMiniString<string>>;
113
+ blockNumber: z.ZodMiniNumber<number>;
114
+ destinationToken: z.ZodMiniOptional<z.ZodMiniObject<{
115
+ 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>>;
119
+ logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
120
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
121
+ symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
122
+ verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
123
+ }, z.core.$strip>>;
124
+ id: z.ZodMiniString<string>;
125
+ logIndex: z.ZodMiniNumber<number>;
126
+ memo: z.ZodMiniOptional<z.ZodMiniString<string>>;
127
+ recipient: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
128
+ sender: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
129
+ sourceToken: z.ZodMiniObject<{
130
+ 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>>;
134
+ logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
135
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
136
+ symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
137
+ verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
138
+ }, z.core.$strip>;
139
+ timestamp: z.ZodMiniISODateTime;
140
+ transactionHash: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
141
+ }, z.core.$strip>;
142
+ /** Page of TIP-20 token transfers across the chain, ordered by block then log index. */
143
+ const Response: z.ZodMiniObject<{
144
+ data: z.ZodMiniArray<z.ZodMiniObject<{
145
+ attribution: z.ZodMiniOptional<z.ZodMiniString<string>>;
146
+ blockNumber: z.ZodMiniNumber<number>;
147
+ destinationToken: z.ZodMiniOptional<z.ZodMiniObject<{
148
+ 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>>;
152
+ logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
153
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
154
+ symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
155
+ verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
156
+ }, z.core.$strip>>;
157
+ id: z.ZodMiniString<string>;
158
+ logIndex: z.ZodMiniNumber<number>;
159
+ memo: z.ZodMiniOptional<z.ZodMiniString<string>>;
160
+ recipient: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
161
+ sender: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
162
+ sourceToken: z.ZodMiniObject<{
163
+ 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>>;
167
+ logoUri: z.ZodMiniOptional<z.ZodMiniString<string>>;
168
+ name: z.ZodMiniOptional<z.ZodMiniString<string>>;
169
+ symbol: z.ZodMiniOptional<z.ZodMiniString<string>>;
170
+ verified: z.ZodMiniOptional<z.ZodMiniBoolean<boolean>>;
171
+ }, z.core.$strip>;
172
+ timestamp: z.ZodMiniISODateTime;
173
+ transactionHash: z.ZodMiniPipe<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniTransform<`0x${string}`, `0x${string}`>>;
174
+ }, z.core.$strip>>;
175
+ meta: z.ZodMiniOptional<z.ZodMiniObject<{
176
+ totalCountCapped: z.ZodMiniBoolean<boolean>;
177
+ totalCount: z.ZodMiniNumber<number>;
178
+ }, z.core.$strip>>;
179
+ nextCursor: z.ZodMiniNullable<z.ZodMiniString<string>>;
180
+ }, z.core.$strip>;
181
+ }
182
+ }
183
+ /** Creates transfer handlers. */
184
+ export declare function transfers(): import("hono/hono-base").HonoBase<App.Environment, {
185
+ "/": {
186
+ $get: {
187
+ output: null;
188
+ outputFormat: "body";
189
+ status: 402;
190
+ input: {
191
+ query?: {
192
+ recipient?: string | string[];
193
+ sender?: string | string[];
194
+ token?: string | string[];
195
+ address?: string | string[];
196
+ 'blockNumber.from'?: string | string[];
197
+ 'blockNumber.to'?: string | string[];
198
+ chainId?: string | string[];
199
+ cursor?: string | string[];
200
+ include?: string | string[];
201
+ limit?: string | string[];
202
+ order?: string | string[];
203
+ page?: string | string[];
204
+ 'timestamp.from'?: string | string[];
205
+ 'timestamp.to'?: string | string[];
206
+ } | undefined;
207
+ };
208
+ } | {
209
+ output: {
210
+ error: {
211
+ code: "api_key_malformed";
212
+ details?: readonly Response.error.Detail[] | undefined;
213
+ message: string;
214
+ };
215
+ requestId: string;
216
+ };
217
+ outputFormat: "json";
218
+ status: 400;
219
+ input: {
220
+ query?: {
221
+ recipient?: string | string[];
222
+ sender?: string | string[];
223
+ token?: string | string[];
224
+ address?: string | string[];
225
+ 'blockNumber.from'?: string | string[];
226
+ 'blockNumber.to'?: string | string[];
227
+ chainId?: string | string[];
228
+ cursor?: string | string[];
229
+ include?: string | string[];
230
+ limit?: string | string[];
231
+ order?: string | string[];
232
+ page?: string | string[];
233
+ 'timestamp.from'?: string | string[];
234
+ 'timestamp.to'?: string | string[];
235
+ } | undefined;
236
+ };
237
+ } | {
238
+ output: {
239
+ error: {
240
+ code: "api_key_invalid" | "api_key_missing";
241
+ details?: readonly Response.error.Detail[] | undefined;
242
+ message: string;
243
+ };
244
+ requestId: string;
245
+ };
246
+ outputFormat: "json";
247
+ status: 401;
248
+ input: {
249
+ query?: {
250
+ recipient?: string | string[];
251
+ sender?: string | string[];
252
+ token?: string | string[];
253
+ address?: string | string[];
254
+ 'blockNumber.from'?: string | string[];
255
+ 'blockNumber.to'?: string | string[];
256
+ chainId?: string | string[];
257
+ cursor?: string | string[];
258
+ include?: string | string[];
259
+ limit?: string | string[];
260
+ order?: string | string[];
261
+ page?: string | string[];
262
+ 'timestamp.from'?: string | string[];
263
+ 'timestamp.to'?: string | string[];
264
+ } | undefined;
265
+ };
266
+ } | {
267
+ output: {
268
+ error: {
269
+ code: "api_key_forbidden";
270
+ details?: readonly Response.error.Detail[] | undefined;
271
+ message: string;
272
+ };
273
+ requestId: string;
274
+ };
275
+ outputFormat: "json";
276
+ status: 403;
277
+ input: {
278
+ query?: {
279
+ recipient?: string | string[];
280
+ sender?: string | string[];
281
+ token?: string | string[];
282
+ address?: string | string[];
283
+ 'blockNumber.from'?: string | string[];
284
+ 'blockNumber.to'?: string | string[];
285
+ chainId?: string | string[];
286
+ cursor?: string | string[];
287
+ include?: string | string[];
288
+ limit?: string | string[];
289
+ order?: string | string[];
290
+ page?: string | string[];
291
+ 'timestamp.from'?: string | string[];
292
+ 'timestamp.to'?: string | string[];
293
+ } | undefined;
294
+ };
295
+ } | {
296
+ output: {
297
+ error: {
298
+ code: "payment_required" | "rate_limit_exceeded";
299
+ details?: readonly Response.error.Detail[] | undefined;
300
+ message: string;
301
+ };
302
+ requestId: string;
303
+ };
304
+ outputFormat: "json";
305
+ status: 429;
306
+ input: {
307
+ query?: {
308
+ recipient?: string | string[];
309
+ sender?: string | string[];
310
+ token?: string | string[];
311
+ address?: string | string[];
312
+ 'blockNumber.from'?: string | string[];
313
+ 'blockNumber.to'?: string | string[];
314
+ chainId?: string | string[];
315
+ cursor?: string | string[];
316
+ include?: string | string[];
317
+ limit?: string | string[];
318
+ order?: string | string[];
319
+ page?: string | string[];
320
+ 'timestamp.from'?: string | string[];
321
+ 'timestamp.to'?: string | string[];
322
+ } | undefined;
323
+ };
324
+ } | {
325
+ output: {
326
+ error: {
327
+ code: "query_invalid";
328
+ details?: readonly Response.error.Detail[] | undefined;
329
+ message: string;
330
+ };
331
+ requestId: string;
332
+ };
333
+ outputFormat: "json";
334
+ status: 400;
335
+ input: {
336
+ query?: {
337
+ recipient?: string | string[];
338
+ sender?: string | string[];
339
+ token?: string | string[];
340
+ address?: string | string[];
341
+ 'blockNumber.from'?: string | string[];
342
+ 'blockNumber.to'?: string | string[];
343
+ chainId?: string | string[];
344
+ cursor?: string | string[];
345
+ include?: string | string[];
346
+ limit?: string | string[];
347
+ order?: string | string[];
348
+ page?: string | string[];
349
+ 'timestamp.from'?: string | string[];
350
+ 'timestamp.to'?: string | string[];
351
+ } | undefined;
352
+ };
353
+ } | {
354
+ output: {
355
+ error: {
356
+ code: "upstream_error";
357
+ details?: readonly Response.error.Detail[] | undefined;
358
+ message: string;
359
+ };
360
+ requestId: string;
361
+ };
362
+ outputFormat: "json";
363
+ status: 502;
364
+ input: {
365
+ query?: {
366
+ recipient?: string | string[];
367
+ sender?: string | string[];
368
+ token?: string | string[];
369
+ address?: string | string[];
370
+ 'blockNumber.from'?: string | string[];
371
+ 'blockNumber.to'?: string | string[];
372
+ chainId?: string | string[];
373
+ cursor?: string | string[];
374
+ include?: string | string[];
375
+ limit?: string | string[];
376
+ order?: string | string[];
377
+ page?: string | string[];
378
+ 'timestamp.from'?: string | string[];
379
+ 'timestamp.to'?: string | string[];
380
+ } | undefined;
381
+ };
382
+ } | {
383
+ output: {
384
+ data: {
385
+ attribution?: string | undefined;
386
+ blockNumber: number;
387
+ destinationToken?: {
388
+ address: `0x${string}`;
389
+ amount: string;
390
+ currency?: string | undefined;
391
+ decimals?: number | undefined;
392
+ logoUri?: string | undefined;
393
+ name?: string | undefined;
394
+ symbol?: string | undefined;
395
+ verified?: boolean | undefined;
396
+ } | undefined;
397
+ id: string;
398
+ logIndex: number;
399
+ memo?: string | undefined;
400
+ recipient: `0x${string}`;
401
+ sender: `0x${string}`;
402
+ sourceToken: {
403
+ address: `0x${string}`;
404
+ amount: string;
405
+ currency?: string | undefined;
406
+ decimals?: number | undefined;
407
+ logoUri?: string | undefined;
408
+ name?: string | undefined;
409
+ symbol?: string | undefined;
410
+ verified?: boolean | undefined;
411
+ };
412
+ timestamp: string;
413
+ transactionHash: `0x${string}`;
414
+ }[];
415
+ meta?: {
416
+ totalCountCapped: boolean;
417
+ totalCount: number;
418
+ } | undefined;
419
+ nextCursor: string | null;
420
+ };
421
+ outputFormat: "json";
422
+ status: 200;
423
+ input: {
424
+ query?: {
425
+ recipient?: string | string[];
426
+ sender?: string | string[];
427
+ token?: string | string[];
428
+ address?: string | string[];
429
+ 'blockNumber.from'?: string | string[];
430
+ 'blockNumber.to'?: string | string[];
431
+ chainId?: string | string[];
432
+ cursor?: string | string[];
433
+ include?: string | string[];
434
+ limit?: string | string[];
435
+ order?: string | string[];
436
+ page?: string | string[];
437
+ 'timestamp.from'?: string | string[];
438
+ 'timestamp.to'?: string | string[];
439
+ } | undefined;
440
+ };
441
+ };
442
+ };
443
+ }, "/", "/">;
444
+ /**
445
+ * Shared TIP-20 `Transfer` page query. Used by `GET /transfers` and the
446
+ * webhook poller. Builds the signature-decoded `Transfer` CTE query, applies
447
+ * opaque keyset pagination on `(block_num, log_idx)`, and decodes rows into a
448
+ * strongly-typed intermediate shape that each caller maps to its own public
449
+ * response.
450
+ *
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.
455
+ *
456
+ * Memoization lives inside the helper under one canonical `transfers:v1:…`
457
+ * key derived from every filter — so equivalent filter combinations share a
458
+ * single cache entry. Callers supply only a `timing` label for Server-Timing.
459
+ */
460
+ export declare function query(c: Context<App.Environment>, options: query.Options): Promise<{
461
+ data: query.Row[];
462
+ nextCursor: string | null;
463
+ }>;
464
+ export declare namespace query {
465
+ /** Options for the shared TIP-20 `Transfer` page query. */
466
+ type Options = {
467
+ chainId: z.output<typeof Schema.ChainId>;
468
+ /** Opaque keyset cursor anchoring the page; omit for the head page. */
469
+ cursor?: string | undefined;
470
+ /** Restrict to rows where this address appears on either side. */
471
+ eitherSide?: z.output<typeof Schema.Address> | undefined;
472
+ fromBlock?: number | undefined;
473
+ fromTimestamp?: string | undefined;
474
+ limit: number;
475
+ /** 1-indexed page number (positional pagination; exclusive with `cursor`). */
476
+ page?: number | undefined;
477
+ order: 'asc' | 'desc';
478
+ recipient?: z.output<typeof Schema.Address> | undefined;
479
+ sender?: z.output<typeof Schema.Address> | undefined;
480
+ /** Server-Timing label for the caller's surface. */
481
+ timing: string;
482
+ toBlock?: number | undefined;
483
+ toTimestamp?: string | undefined;
484
+ /** Restrict to a single TIP-20 token contract. */
485
+ token?: z.output<typeof Schema.Address> | undefined;
486
+ };
487
+ /** A decoded `Transfer` row before per-surface shaping. */
488
+ type Row = {
489
+ /** Token contract that emitted the event. */
490
+ address: z.output<typeof Schema.Address>;
491
+ amount: string;
492
+ blockNumber: number;
493
+ logIndex: number;
494
+ recipient: z.output<typeof Schema.Address>;
495
+ sender: z.output<typeof Schema.Address>;
496
+ timestamp: string;
497
+ transactionHash: z.output<typeof Schema.Hash>;
498
+ };
499
+ type Page = {
500
+ data: readonly Row[];
501
+ nextCursor: string | null;
502
+ };
503
+ }
504
+ /**
505
+ * Context-free core of {@link query}: builds the signature-decoded `Transfer`
506
+ * CTE query, applies keyset pagination on `(block_num, log_idx)`, and decodes
507
+ * rows. Used by the Hono routes (via {@link query}, which adds Server-Timing +
508
+ * memoization) and by the webhook poller (uncached, ascending, per-row cursors).
509
+ */
510
+ export declare function scan(deps: scan.Deps, options: scan.Options): Promise<scan.Page>;
511
+ export declare namespace scan {
512
+ /** Dependencies for {@link scan}. */
513
+ type Deps = {
514
+ /** TIDX query client for the target chain. */
515
+ tidx: Tidx.Client;
516
+ };
517
+ /** Options for {@link scan} (everything {@link query.Options} has except `timing`). */
518
+ type Options = Omit<query.Options, 'timing'>;
519
+ /** A decoded `Transfer` row plus its `(block_num, log_idx)` cursor. */
520
+ type Item = {
521
+ /** Keyset position of the row. */
522
+ cursor: readonly [blockNumber: number, logIndex: number];
523
+ /** The decoded row before per-surface shaping. */
524
+ data: query.Row;
525
+ };
526
+ /** A page of scanned `Transfer` rows. */
527
+ type Page = {
528
+ hasMore: boolean;
529
+ items: readonly Item[];
530
+ limit: number;
531
+ nextCursor: string | null;
532
+ };
533
+ }
534
+ /**
535
+ * Builds the shared `WHERE` filter clauses for the `Transfer` feed: contract /
536
+ * subject / sender / recipient / block / timestamp predicates. Shared verbatim
537
+ * by the page query ({@link scan}) and the capped count ({@link countScan}) so a
538
+ * `totalCount` always matches the page it annotates; the keyset cursor clause is
539
+ * page-only and added by {@link scan} on top of these.
540
+ */
541
+ declare function filterClauses(options: filterClauses.Options): string[];
542
+ declare namespace filterClauses {
543
+ /** The non-pagination filter fields of {@link scan.Options}. */
544
+ type Options = Pick<scan.Options, 'eitherSide' | 'fromBlock' | 'fromTimestamp' | 'recipient' | 'sender' | 'toBlock' | 'toTimestamp' | 'token'>;
545
+ }
546
+ /**
547
+ * Capped total-row count for the `Transfer` feed, sharing {@link query}'s
548
+ * filters (minus pagination) so the count matches the page it annotates. Timed
549
+ * and memoized like {@link query}; the result feeds `meta.totalCount`/`totalCountCapped`
550
+ * when a caller opts in via `include=totalCount`.
551
+ */
552
+ export declare function count(c: Context<App.Environment>, options: count.Options): Promise<count.Result>;
553
+ export declare namespace count {
554
+ /** Options for the capped `Transfer` count: {@link query}'s filters plus `timing`. */
555
+ type Options = Pick<query.Options, 'chainId' | 'eitherSide' | 'fromBlock' | 'fromTimestamp' | 'recipient' | 'sender' | 'timing' | 'toBlock' | 'toTimestamp' | 'token'> & {
556
+ /** Count folded cross-token transfers instead of raw `Transfer` logs. */
557
+ crossToken?: boolean | undefined;
558
+ };
559
+ /** A capped count result: `totalCountCapped` is `true` when the count hit `Schema.countCap`. */
560
+ type Result = {
561
+ totalCountCapped: boolean;
562
+ totalCount: number;
563
+ };
564
+ }
565
+ /**
566
+ * Context-free core of {@link count}: runs a capped `count(*)` over the
567
+ * signature-decoded `Transfer` CTE under the shared {@link filterClauses}. The
568
+ * inner `LIMIT Schema.countCap` bounds the scan so the aggregate can't exceed
569
+ * the indexer's execution budget on the 10⁹-plus row table (an unbounded count
570
+ * there blows the 5s `max_execution_time`); a result equal to the cap is a
571
+ * lower bound, surfaced as `totalCountCapped: true`.
572
+ */
573
+ export declare function countScan(deps: scan.Deps, options: countScan.Options): Promise<count.Result>;
574
+ export declare namespace countScan {
575
+ /** Options for {@link countScan}: the shared filters plus the target chain. */
576
+ type Options = filterClauses.Options & Pick<scan.Options, 'chainId'> & {
577
+ /** Count folded cross-token transfers instead of raw `Transfer` logs. */
578
+ crossToken?: boolean | undefined;
579
+ };
580
+ }
581
+ /**
582
+ * Attempts to decode a bytes32 memo into a human-readable string. MPP
583
+ * attribution memos encode a service fingerprint, not text — they are
584
+ * suppressed from the display memo (and resolved to `attribution` instead).
585
+ * Shared with the activity feed's transfer entries.
586
+ */
587
+ export declare function memoToString(memo: Hex.Hex): string | undefined;
588
+ export {};
589
+ //# sourceMappingURL=transfers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfers.d.ts","sourceRoot":"","sources":["../../src/apps/transfers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,OAAO,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAW,GAAG,EAAE,MAAM,IAAI,CAAA;AAEjC,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,OAAO,KAAK,KAAK,GAAG,MAAM,WAAW,CAAA;AAMrC,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAE/C,OAAO,KAAK,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAUhD,eAAO,MAAM,SAAS,4EAA4E,CAAA;AASlG,kDAAkD;AAClD,yBAAiB,MAAM,CAAC;IACtB;;;;;;;;;;;;;;OAcG;IACI,MAAM,WAAW;;;;;;;;;qBAwDrB,CAAA;IAEH;;;;;;;;;OASG;IACI,MAAM,UAAU;;;;;qBAerB,CAAA;IAEF,qDAAqD;IACrD,UAAiB,YAAY,CAAC;QAC5B,sEAAsE;QAC/D,MAAM,OAAO;;;;;UAE2E,CAAA;QAE/F;;;;;WAKG;QACI,MAAM,YAAY;;;;;YAGxB,CAAA;QAED;;;;;WAKG;QACI,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;0BAgCyD,CAAA;QAE3E;;;;WAIG;QACI,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAoElB,CAAA;QAEH,wFAAwF;QACjF,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAW2D,CAAA;KACjF;CACF;AAED,iCAAiC;AACjC,wBAAgB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAsMxB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO;;;GAsBxE;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,2DAA2D;IAC3D,KAAK,OAAO,GAAG;QACb,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;QACxC,uEAAuE;QACvE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,kEAAkE;QAClE,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;QACxD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAClC,KAAK,EAAE,MAAM,CAAA;QACb,8EAA8E;QAC9E,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;QACrB,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;QACvD,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;QACpD,oDAAoD;QACpD,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAChC,kDAAkD;QAClD,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAA;KACpD,CAAA;IACD,2DAA2D;IAC3D,KAAK,GAAG,GAAG;QACT,6CAA6C;QAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;QACvC,SAAS,EAAE,MAAM,CAAA;QACjB,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAA;KAC9C,CAAA;IACD,KAAK,IAAI,GAAG;QACV,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;QACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAC1B,CAAA;CACF;AAED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CA0FrF;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,qCAAqC;IACrC,KAAK,IAAI,GAAG;QACV,8CAA8C;QAC9C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAA;KAClB,CAAA;IACD,uFAAuF;IACvF,KAAK,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC5C,uEAAuE;IACvE,KAAK,IAAI,GAAG;QACV,kCAAkC;QAClC,MAAM,EAAE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QACxD,kDAAkD;QAClD,IAAI,EAAE,KAAK,CAAC,GAAG,CAAA;KAChB,CAAA;IACD,yCAAyC;IACzC,KAAK,IAAI,GAAG;QACV,OAAO,EAAE,OAAO,CAAA;QAChB,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;QACtB,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAC1B,CAAA;CACF;AAED;;;;;;GAMG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO,GAAG,MAAM,EAAE,CAa/D;AAED,OAAO,WAAW,aAAa,CAAC;IAC9B,gEAAgE;IAChE,KAAK,OAAO,GAAG,IAAI,CACjB,IAAI,CAAC,OAAO,EACV,YAAY,GACZ,WAAW,GACX,eAAe,GACf,WAAW,GACX,QAAQ,GACR,SAAS,GACT,aAAa,GACb,OAAO,CACV,CAAA;CACF;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAYhG;AAED,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC;IAC7B,sFAAsF;IACtF,KAAK,OAAO,GAAG,IAAI,CACjB,KAAK,CAAC,OAAO,EACX,SAAS,GACT,YAAY,GACZ,WAAW,GACX,eAAe,GACf,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,aAAa,GACb,OAAO,CACV,GAAG;QACF,yEAAyE;QACzE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KACjC,CAAA;IACD,gGAAgG;IAChG,KAAK,MAAM,GAAG;QAAE,gBAAgB,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAChE;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,SAAS,CAAC,OAAO,GACzB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CA+CvB;AAED,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,+EAA+E;IAC/E,KAAK,OAAO,GAAG,aAAa,CAAC,OAAO,GAClC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG;QAC9B,yEAAyE;QACzE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KACjC,CAAA;CACJ;AA+PD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,GAAG,SAAS,CAS9D"}