tapimo 0.12.0 → 0.14.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 (398) hide show
  1. package/dist/App.d.ts +11333 -9563
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +39 -3
  4. package/dist/App.js.map +1 -1
  5. package/dist/Scope.d.ts +2 -0
  6. package/dist/Scope.d.ts.map +1 -1
  7. package/dist/Scope.js +17 -0
  8. package/dist/Scope.js.map +1 -1
  9. package/dist/Webhooks.js +2 -2
  10. package/dist/Webhooks.js.map +1 -1
  11. package/dist/admin/App.d.ts +1064 -924
  12. package/dist/admin/App.d.ts.map +1 -1
  13. package/dist/admin/apps/api-keys.d.ts +80 -0
  14. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  15. package/dist/admin/apps/api-keys.js +54 -0
  16. package/dist/admin/apps/api-keys.js.map +1 -1
  17. package/dist/admin/apps/earn-vaults.d.ts +63 -15
  18. package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
  19. package/dist/admin/apps/earn-vaults.js +2 -1
  20. package/dist/admin/apps/earn-vaults.js.map +1 -1
  21. package/dist/admin/apps/organizations.d.ts +92 -3
  22. package/dist/admin/apps/organizations.d.ts.map +1 -1
  23. package/dist/admin/apps/organizations.js +69 -7
  24. package/dist/admin/apps/organizations.js.map +1 -1
  25. package/dist/admin/apps/verified-tokens.d.ts +7 -7
  26. package/dist/admin/ui.generated.d.ts +1 -1
  27. package/dist/admin/ui.generated.d.ts.map +1 -1
  28. package/dist/admin/ui.generated.js +151 -151
  29. package/dist/admin/ui.generated.js.map +1 -1
  30. package/dist/apps/Zones.d.ts +28 -28
  31. package/dist/apps/Zones.js +7 -7
  32. package/dist/apps/data/App.d.ts +2909 -2523
  33. package/dist/apps/data/App.d.ts.map +1 -1
  34. package/dist/apps/data/App.js +26 -21
  35. package/dist/apps/data/App.js.map +1 -1
  36. package/dist/apps/data/ZoneSelection.d.ts +8 -8
  37. package/dist/apps/data/ZoneSelection.d.ts.map +1 -1
  38. package/dist/apps/data/ZoneSelection.js +1 -1
  39. package/dist/apps/data/ZoneSelection.js.map +1 -1
  40. package/dist/apps/data/routes/activities.d.ts +588 -584
  41. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  42. package/dist/apps/data/routes/activities.js +1561 -1239
  43. package/dist/apps/data/routes/activities.js.map +1 -1
  44. package/dist/apps/data/routes/addresses.d.ts +22 -22
  45. package/dist/apps/data/routes/balances.d.ts +26 -26
  46. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  47. package/dist/apps/data/routes/balances.js +43 -16
  48. package/dist/apps/data/routes/balances.js.map +1 -1
  49. package/dist/apps/data/routes/blocks.d.ts +44 -44
  50. package/dist/apps/data/routes/blocks.d.ts.map +1 -1
  51. package/dist/apps/data/routes/blocks.js +21 -11
  52. package/dist/apps/data/routes/blocks.js.map +1 -1
  53. package/dist/apps/data/routes/coingecko.d.ts +3 -3
  54. package/dist/apps/data/routes/earn.d.ts +201 -25
  55. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  56. package/dist/apps/data/routes/earn.js +434 -75
  57. package/dist/apps/data/routes/earn.js.map +1 -1
  58. package/dist/apps/data/routes/exchanges.d.ts +160 -145
  59. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  60. package/dist/apps/data/routes/exchanges.js +180 -114
  61. package/dist/apps/data/routes/exchanges.js.map +1 -1
  62. package/dist/apps/data/routes/fee-amm.d.ts +2 -2
  63. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  64. package/dist/apps/data/routes/fee-amm.js +18 -19
  65. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  66. package/dist/apps/data/routes/receipts.d.ts +155 -55
  67. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  68. package/dist/apps/data/routes/receipts.js +28 -10
  69. package/dist/apps/data/routes/receipts.js.map +1 -1
  70. package/dist/apps/data/routes/tokenlist.d.ts +13 -13
  71. package/dist/apps/data/routes/tokens.d.ts +5 -5
  72. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  73. package/dist/apps/data/routes/tokens.js +51 -20
  74. package/dist/apps/data/routes/tokens.js.map +1 -1
  75. package/dist/apps/data/routes/transactions.d.ts +7 -2
  76. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  77. package/dist/apps/data/routes/transactions.js +37 -17
  78. package/dist/apps/data/routes/transactions.js.map +1 -1
  79. package/dist/apps/data/routes/transfers.d.ts +13 -13
  80. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  81. package/dist/apps/data/routes/transfers.js +18 -12
  82. package/dist/apps/data/routes/transfers.js.map +1 -1
  83. package/dist/apps/data/routes/valuation.d.ts +31 -31
  84. package/dist/apps/data/routes/valuation.d.ts.map +1 -1
  85. package/dist/apps/data/routes/valuation.js +12 -7
  86. package/dist/apps/data/routes/valuation.js.map +1 -1
  87. package/dist/apps/data/routes/verified-tokens.d.ts +8 -8
  88. package/dist/apps/data/routes/webhooks.d.ts +816 -113
  89. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  90. package/dist/apps/data/routes/webhooks.js +47 -5
  91. package/dist/apps/data/routes/webhooks.js.map +1 -1
  92. package/dist/apps/data/routes/zones.d.ts +14 -14
  93. package/dist/apps/data/routes/zones.js +1 -1
  94. package/dist/apps/funding/App.d.ts +466 -44
  95. package/dist/apps/funding/App.d.ts.map +1 -1
  96. package/dist/apps/funding/App.js +1 -1
  97. package/dist/apps/funding/App.js.map +1 -1
  98. package/dist/apps/funding/routes/deposit-addresses.d.ts +17 -17
  99. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  100. package/dist/apps/funding/routes/deposit-addresses.js +17 -12
  101. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  102. package/dist/apps/funding/routes/transfers.d.ts +650 -57
  103. package/dist/apps/funding/routes/transfers.d.ts.map +1 -1
  104. package/dist/apps/funding/routes/transfers.js +238 -24
  105. package/dist/apps/funding/routes/transfers.js.map +1 -1
  106. package/dist/apps/management/App.d.ts +5120 -4152
  107. package/dist/apps/management/App.d.ts.map +1 -1
  108. package/dist/apps/management/Billing.d.ts +1 -1
  109. package/dist/apps/management/Billing.d.ts.map +1 -1
  110. package/dist/apps/management/Billing.js +17 -1
  111. package/dist/apps/management/Billing.js.map +1 -1
  112. package/dist/apps/management/routes/api-keys.d.ts +632 -81
  113. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  114. package/dist/apps/management/routes/api-keys.js +236 -4
  115. package/dist/apps/management/routes/api-keys.js.map +1 -1
  116. package/dist/apps/management/routes/billing.d.ts +76 -76
  117. package/dist/apps/management/routes/faucet.d.ts +6 -6
  118. package/dist/apps/management/routes/invitations.d.ts +24 -24
  119. package/dist/apps/management/routes/invite-links.d.ts +4 -4
  120. package/dist/apps/management/routes/members.d.ts +16 -16
  121. package/dist/apps/management/routes/orgs.d.ts +20 -20
  122. package/dist/apps/management/routes/projects.d.ts +4 -4
  123. package/dist/apps/management/routes/usage.d.ts +8 -8
  124. package/dist/apps/management/routes/verified-token-requests.d.ts +17 -17
  125. package/dist/apps/management/routes/webhooks.d.ts +675 -25
  126. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  127. package/dist/apps/management/routes/webhooks.js +21 -21
  128. package/dist/apps/management/routes/webhooks.js.map +1 -1
  129. package/dist/apps/relay/App.d.ts.map +1 -1
  130. package/dist/apps/relay/App.js +115 -23
  131. package/dist/apps/relay/App.js.map +1 -1
  132. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  133. package/dist/apps/relay/Sponsorships.js +27 -1
  134. package/dist/apps/relay/Sponsorships.js.map +1 -1
  135. package/dist/db/Db.d.ts.map +1 -1
  136. package/dist/db/Db.js +34 -1
  137. package/dist/db/Db.js.map +1 -1
  138. package/dist/db/Schema.d.ts +11 -5
  139. package/dist/db/Schema.d.ts.map +1 -1
  140. package/dist/db/Schema.js +21 -3
  141. package/dist/db/Schema.js.map +1 -1
  142. package/dist/db/tables/fundingCatalog.d.ts +4 -2
  143. package/dist/db/tables/fundingCatalog.d.ts.map +1 -1
  144. package/dist/db/tables/fundingCatalog.js +5 -1
  145. package/dist/db/tables/fundingCatalog.js.map +1 -1
  146. package/dist/db/tables/fundingTransferTransactions.d.ts +38 -0
  147. package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -1
  148. package/dist/db/tables/fundingTransferTransactions.js +44 -3
  149. package/dist/db/tables/fundingTransferTransactions.js.map +1 -1
  150. package/dist/db/tables/fundingTransfers.d.ts +17 -0
  151. package/dist/db/tables/fundingTransfers.d.ts.map +1 -1
  152. package/dist/db/tables/fundingTransfers.js +21 -0
  153. package/dist/db/tables/fundingTransfers.js.map +1 -1
  154. package/dist/db/tables/organizations.d.ts +24 -0
  155. package/dist/db/tables/organizations.d.ts.map +1 -1
  156. package/dist/db/tables/organizations.js +27 -0
  157. package/dist/db/tables/organizations.js.map +1 -1
  158. package/dist/db/tables/projects.d.ts +25 -1
  159. package/dist/db/tables/projects.d.ts.map +1 -1
  160. package/dist/db/tables/projects.js +26 -0
  161. package/dist/db/tables/projects.js.map +1 -1
  162. package/dist/db/tables/sponsoredTransactions.d.ts +44 -0
  163. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  164. package/dist/db/tables/sponsoredTransactions.js +146 -13
  165. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  166. package/dist/db/tables/webhookSubscriptions.d.ts +10 -6
  167. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  168. package/dist/db/tables/webhookSubscriptions.js +9 -6
  169. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  170. package/dist/handlers/internal/utils.d.ts.map +1 -1
  171. package/dist/handlers/internal/utils.js +9 -0
  172. package/dist/handlers/internal/utils.js.map +1 -1
  173. package/dist/internal/Auth.d.ts +3 -1
  174. package/dist/internal/Auth.d.ts.map +1 -1
  175. package/dist/internal/Auth.js +6 -3
  176. package/dist/internal/Auth.js.map +1 -1
  177. package/dist/internal/EarnVaults.d.ts +3 -3
  178. package/dist/internal/EarnVaults.js +5 -5
  179. package/dist/internal/EarnVaults.js.map +1 -1
  180. package/dist/internal/Fetch.d.ts +23 -0
  181. package/dist/internal/Fetch.d.ts.map +1 -0
  182. package/dist/internal/Fetch.js +26 -0
  183. package/dist/internal/Fetch.js.map +1 -0
  184. package/dist/internal/Log.d.ts +4 -2
  185. package/dist/internal/Log.d.ts.map +1 -1
  186. package/dist/internal/Log.js +16 -3
  187. package/dist/internal/Log.js.map +1 -1
  188. package/dist/internal/OpenApi.d.ts +5 -3
  189. package/dist/internal/OpenApi.d.ts.map +1 -1
  190. package/dist/internal/OpenApi.js +13 -3
  191. package/dist/internal/OpenApi.js.map +1 -1
  192. package/dist/internal/Response.d.ts +1 -1
  193. package/dist/internal/Response.d.ts.map +1 -1
  194. package/dist/internal/Schema.d.ts +6 -3
  195. package/dist/internal/Schema.d.ts.map +1 -1
  196. package/dist/internal/Schema.js +8 -2
  197. package/dist/internal/Schema.js.map +1 -1
  198. package/dist/internal/Store.d.ts +16 -3
  199. package/dist/internal/Store.d.ts.map +1 -1
  200. package/dist/internal/Store.js +82 -16
  201. package/dist/internal/Store.js.map +1 -1
  202. package/dist/internal/Tidx.d.ts.map +1 -1
  203. package/dist/internal/Tidx.js +7 -2
  204. package/dist/internal/Tidx.js.map +1 -1
  205. package/dist/internal/Timeout.d.ts +36 -0
  206. package/dist/internal/Timeout.d.ts.map +1 -0
  207. package/dist/internal/Timeout.js +37 -0
  208. package/dist/internal/Timeout.js.map +1 -0
  209. package/dist/internal/Timing.d.ts +9 -0
  210. package/dist/internal/Timing.d.ts.map +1 -1
  211. package/dist/internal/Timing.js +7 -0
  212. package/dist/internal/Timing.js.map +1 -1
  213. package/dist/internal/Viem.d.ts +16 -1
  214. package/dist/internal/Viem.d.ts.map +1 -1
  215. package/dist/internal/Viem.js +12 -2
  216. package/dist/internal/Viem.js.map +1 -1
  217. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  218. package/dist/internal/WebhookDestination.js +3 -0
  219. package/dist/internal/WebhookDestination.js.map +1 -1
  220. package/dist/internal/funding/Action.d.ts +9 -0
  221. package/dist/internal/funding/Action.d.ts.map +1 -1
  222. package/dist/internal/funding/Action.js +16 -8
  223. package/dist/internal/funding/Action.js.map +1 -1
  224. package/dist/internal/funding/Catalog.d.ts +9 -2
  225. package/dist/internal/funding/Catalog.d.ts.map +1 -1
  226. package/dist/internal/funding/Catalog.js +19 -8
  227. package/dist/internal/funding/Catalog.js.map +1 -1
  228. package/dist/internal/funding/DepositWebhook.d.ts.map +1 -1
  229. package/dist/internal/funding/DepositWebhook.js +2 -1
  230. package/dist/internal/funding/DepositWebhook.js.map +1 -1
  231. package/dist/internal/funding/Evidence.d.ts.map +1 -1
  232. package/dist/internal/funding/Evidence.js +2 -10
  233. package/dist/internal/funding/Evidence.js.map +1 -1
  234. package/dist/internal/funding/Provider.d.ts +108 -13
  235. package/dist/internal/funding/Provider.d.ts.map +1 -1
  236. package/dist/internal/funding/Provider.js +34 -8
  237. package/dist/internal/funding/Provider.js.map +1 -1
  238. package/dist/internal/funding/SourceObservation.d.ts.map +1 -1
  239. package/dist/internal/funding/SourceObservation.js +5 -7
  240. package/dist/internal/funding/SourceObservation.js.map +1 -1
  241. package/dist/internal/funding/Transfer.d.ts +114 -18
  242. package/dist/internal/funding/Transfer.d.ts.map +1 -1
  243. package/dist/internal/funding/Transfer.js +185 -55
  244. package/dist/internal/funding/Transfer.js.map +1 -1
  245. package/dist/internal/funding/TransferReconciliation.d.ts +52 -0
  246. package/dist/internal/funding/TransferReconciliation.d.ts.map +1 -0
  247. package/dist/internal/funding/TransferReconciliation.js +192 -0
  248. package/dist/internal/funding/TransferReconciliation.js.map +1 -0
  249. package/dist/internal/funding/TransferWebhook.d.ts +21 -0
  250. package/dist/internal/funding/TransferWebhook.d.ts.map +1 -0
  251. package/dist/internal/funding/TransferWebhook.js +43 -0
  252. package/dist/internal/funding/TransferWebhook.js.map +1 -0
  253. package/dist/internal/funding/index.d.ts +1 -0
  254. package/dist/internal/funding/index.d.ts.map +1 -1
  255. package/dist/internal/funding/index.js +1 -0
  256. package/dist/internal/funding/index.js.map +1 -1
  257. package/dist/internal/funding/providers/relay.d.ts.map +1 -1
  258. package/dist/internal/funding/providers/relay.js +3 -12
  259. package/dist/internal/funding/providers/relay.js.map +1 -1
  260. package/dist/internal/funding/providers/stargate.d.ts +127 -9
  261. package/dist/internal/funding/providers/stargate.d.ts.map +1 -1
  262. package/dist/internal/funding/providers/stargate.js +548 -112
  263. package/dist/internal/funding/providers/stargate.js.map +1 -1
  264. package/dist/internal/index.d.ts +1 -0
  265. package/dist/internal/index.d.ts.map +1 -1
  266. package/dist/internal/index.js +1 -0
  267. package/dist/internal/index.js.map +1 -1
  268. package/dist/internal/webhookDestinations/slack.d.ts.map +1 -1
  269. package/dist/internal/webhookDestinations/slack.js +16 -0
  270. package/dist/internal/webhookDestinations/slack.js.map +1 -1
  271. package/package.json +2 -2
  272. package/src/App.test.ts +100 -0
  273. package/src/App.ts +43 -3
  274. package/src/Client.test-d.ts +129 -2
  275. package/src/Scope.test.ts +20 -0
  276. package/src/Scope.ts +16 -0
  277. package/src/Webhooks.ts +2 -2
  278. package/src/admin/apps/api-keys.test.ts +75 -0
  279. package/src/admin/apps/api-keys.ts +64 -0
  280. package/src/admin/apps/earn-vaults.test.ts +1 -1
  281. package/src/admin/apps/earn-vaults.ts +2 -1
  282. package/src/admin/apps/organizations.test.ts +53 -1
  283. package/src/admin/apps/organizations.ts +90 -5
  284. package/src/admin/ui/src/lib/api-keys.ts +19 -0
  285. package/src/admin/ui/src/lib/organizations.test.ts +112 -1
  286. package/src/admin/ui/src/lib/organizations.ts +55 -0
  287. package/src/admin/ui/src/routes/api-keys.tsx +89 -2
  288. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +116 -0
  289. package/src/admin/ui.generated.ts +189 -151
  290. package/src/apps/Zones.test.ts +7 -7
  291. package/src/apps/Zones.ts +7 -7
  292. package/src/apps/composition.test.ts +2 -1
  293. package/src/apps/data/App.test.ts +41 -0
  294. package/src/apps/data/App.ts +30 -21
  295. package/src/apps/data/ZoneSelection.test.ts +2 -2
  296. package/src/apps/data/ZoneSelection.ts +8 -8
  297. package/src/apps/data/routes/activities.test.ts +1526 -12
  298. package/src/apps/data/routes/activities.ts +1774 -1356
  299. package/src/apps/data/routes/balances.ts +133 -97
  300. package/src/apps/data/routes/blocks.test.ts +533 -0
  301. package/src/apps/data/routes/blocks.ts +35 -16
  302. package/src/apps/data/routes/earn.test.ts +373 -16
  303. package/src/apps/data/routes/earn.ts +548 -79
  304. package/src/apps/data/routes/earn.zone-access.test.ts +6 -6
  305. package/src/apps/data/routes/exchanges.test.ts +740 -15
  306. package/src/apps/data/routes/exchanges.ts +954 -753
  307. package/src/apps/data/routes/fee-amm.ts +17 -18
  308. package/src/apps/data/routes/receipts.ts +47 -16
  309. package/src/apps/data/routes/tokens.test.ts +578 -0
  310. package/src/apps/data/routes/tokens.ts +283 -225
  311. package/src/apps/data/routes/transactions.ts +68 -29
  312. package/src/apps/data/routes/transfers.test.ts +421 -0
  313. package/src/apps/data/routes/transfers.ts +45 -27
  314. package/src/apps/data/routes/valuation.ts +94 -78
  315. package/src/apps/data/routes/webhooks.test.ts +21 -5
  316. package/src/apps/data/routes/webhooks.ts +63 -8
  317. package/src/apps/data/routes/zones.test.ts +2 -2
  318. package/src/apps/data/routes/zones.ts +1 -1
  319. package/src/apps/funding/App.ts +12 -2
  320. package/src/apps/funding/routes/deposit-addresses.test.ts +29 -7
  321. package/src/apps/funding/routes/deposit-addresses.ts +19 -14
  322. package/src/apps/funding/routes/quotes.test.ts +5 -9
  323. package/src/apps/funding/routes/transfers.test.ts +901 -23
  324. package/src/apps/funding/routes/transfers.ts +347 -64
  325. package/src/apps/management/Billing.ts +18 -5
  326. package/src/apps/management/routes/api-keys.test.ts +220 -0
  327. package/src/apps/management/routes/api-keys.ts +280 -3
  328. package/src/apps/management/routes/webhooks.test.ts +3 -3
  329. package/src/apps/management/routes/webhooks.ts +24 -25
  330. package/src/apps/relay/App.test.ts +212 -1
  331. package/src/apps/relay/App.ts +158 -29
  332. package/src/apps/relay/Sponsorships.ts +24 -1
  333. package/src/db/Db.ts +48 -1
  334. package/src/db/Schema.ts +22 -4
  335. package/src/db/tables/earnVaults.test.ts +9 -9
  336. package/src/db/tables/fundingCatalog.test.ts +16 -2
  337. package/src/db/tables/fundingCatalog.ts +9 -3
  338. package/src/db/tables/fundingTransferTransactions.test.ts +43 -0
  339. package/src/db/tables/fundingTransferTransactions.ts +79 -3
  340. package/src/db/tables/fundingTransfers.test.ts +26 -0
  341. package/src/db/tables/fundingTransfers.ts +36 -0
  342. package/src/db/tables/organizations.test.ts +41 -0
  343. package/src/db/tables/organizations.ts +49 -0
  344. package/src/db/tables/projects.test.ts +55 -0
  345. package/src/db/tables/projects.ts +46 -1
  346. package/src/db/tables/sponsoredTransactions.test.ts +338 -0
  347. package/src/db/tables/sponsoredTransactions.ts +197 -13
  348. package/src/db/tables/webhookSubscriptions.ts +18 -11
  349. package/src/handlers/internal/utils.test.ts +53 -0
  350. package/src/handlers/internal/utils.ts +15 -0
  351. package/src/internal/Auth.ts +12 -4
  352. package/src/internal/EarnVaults.capabilities.test.ts +2 -2
  353. package/src/internal/EarnVaults.test.ts +1 -1
  354. package/src/internal/EarnVaults.ts +5 -5
  355. package/src/internal/Fetch.test.ts +46 -0
  356. package/src/internal/Fetch.ts +56 -0
  357. package/src/internal/Log.test-d.ts +2 -0
  358. package/src/internal/Log.test.ts +21 -0
  359. package/src/internal/Log.ts +22 -5
  360. package/src/internal/OpenApi.ts +14 -4
  361. package/src/internal/Response.ts +1 -1
  362. package/src/internal/Schema.test.ts +2 -0
  363. package/src/internal/Schema.ts +12 -2
  364. package/src/internal/Store.test.ts +178 -0
  365. package/src/internal/Store.ts +104 -18
  366. package/src/internal/Tidx.test.ts +2 -1
  367. package/src/internal/Tidx.ts +7 -2
  368. package/src/internal/Timeout.test.ts +35 -0
  369. package/src/internal/Timeout.ts +73 -0
  370. package/src/internal/Timing.ts +16 -0
  371. package/src/internal/Viem.ts +39 -3
  372. package/src/internal/WebhookDestination.ts +3 -0
  373. package/src/internal/Webhooks.test.ts +45 -0
  374. package/src/internal/funding/Action.test.ts +41 -1
  375. package/src/internal/funding/Action.ts +69 -41
  376. package/src/internal/funding/Catalog.test.ts +34 -0
  377. package/src/internal/funding/Catalog.ts +28 -11
  378. package/src/internal/funding/DepositWebhook.ts +2 -1
  379. package/src/internal/funding/Evidence.ts +2 -13
  380. package/src/internal/funding/Provider.test.ts +73 -0
  381. package/src/internal/funding/Provider.ts +125 -28
  382. package/src/internal/funding/SourceObservation.ts +5 -9
  383. package/src/internal/funding/Transfer.test.ts +155 -0
  384. package/src/internal/funding/Transfer.ts +387 -147
  385. package/src/internal/funding/TransferReconciliation.test.ts +147 -0
  386. package/src/internal/funding/TransferReconciliation.ts +264 -0
  387. package/src/internal/funding/TransferWebhook.test.ts +128 -0
  388. package/src/internal/funding/TransferWebhook.ts +67 -0
  389. package/src/internal/funding/index.test.ts +1 -0
  390. package/src/internal/funding/index.ts +1 -0
  391. package/src/internal/funding/providers/index.test.ts +4 -167
  392. package/src/internal/funding/providers/relay.test.ts +2 -2
  393. package/src/internal/funding/providers/relay.ts +3 -15
  394. package/src/internal/funding/providers/stargate.test.ts +328 -0
  395. package/src/internal/funding/providers/stargate.ts +807 -135
  396. package/src/internal/index.test.ts +1 -0
  397. package/src/internal/index.ts +1 -0
  398. package/src/internal/webhookDestinations/slack.ts +15 -0
@@ -5,11 +5,11 @@ describe('chains', () => {
5
5
  expect(Zones.chains).toMatchObject([
6
6
  {
7
7
  contracts: {
8
- messenger: { address: '0x2fB7Aba18510622cd88F5f45B3AC0E7Dd70606a5' },
9
- portal: { address: '0x5765e8B9003054e479df44D12D3dEeaADEfa8b7c' },
10
- verifier: { address: '0xfa16b9C6A356a096F0e7ceF0135C393A81d4a355' },
8
+ messenger: { address: '0x5A4d000000000000000000000000000000000000' },
9
+ portal: { address: '0x5Ad0000000000000000000000000000000000003' },
10
+ verifier: { address: '0x5a56000000000000000000000000000000000000' },
11
11
  },
12
- id: 1_424_310_001,
12
+ id: 1_424_310_003,
13
13
  name: 'zone-moderato-internal',
14
14
  rpcUrls: {
15
15
  default: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
@@ -20,9 +20,9 @@ describe('chains', () => {
20
20
  },
21
21
  {
22
22
  contracts: {
23
- messenger: { address: '0x171699d2B5211414C23E5Cd306d05046b78FdD16' },
24
- portal: { address: '0xe5208b9604972CA6a2E1EF656a9d2bDF2e530B9A' },
25
- verifier: { address: '0x3E7C1cC9C049052eb061116A4Ee7a7C281fa1F30' },
23
+ messenger: { address: '0x5A4d000000000000000000000000000000000000' },
24
+ portal: { address: '0x5ad0000000000000000000000000000000000001' },
25
+ verifier: { address: '0x5a56000000000000000000000000000000000000' },
26
26
  },
27
27
  id: 421_700_001,
28
28
  name: 'zone-mainnet-internal',
package/src/apps/Zones.ts CHANGED
@@ -6,11 +6,11 @@ export const zoneModeratoInternal = defineChain({
6
6
  ...tempoTestnet,
7
7
  contracts: {
8
8
  ...tempoTestnet.contracts,
9
- messenger: { address: '0x2fB7Aba18510622cd88F5f45B3AC0E7Dd70606a5' },
10
- portal: { address: '0x5765e8B9003054e479df44D12D3dEeaADEfa8b7c' },
11
- verifier: { address: '0xfa16b9C6A356a096F0e7ceF0135C393A81d4a355' },
9
+ messenger: { address: '0x5A4d000000000000000000000000000000000000' },
10
+ portal: { address: '0x5Ad0000000000000000000000000000000000003' },
11
+ verifier: { address: '0x5a56000000000000000000000000000000000000' },
12
12
  },
13
- id: 1_424_310_001,
13
+ id: 1_424_310_003,
14
14
  name: 'zone-moderato-internal',
15
15
  rpcUrls: {
16
16
  default: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
@@ -25,9 +25,9 @@ export const zoneMainnetInternal = defineChain({
25
25
  ...tempo,
26
26
  contracts: {
27
27
  ...tempo.contracts,
28
- messenger: { address: '0x171699d2B5211414C23E5Cd306d05046b78FdD16' },
29
- portal: { address: '0xe5208b9604972CA6a2E1EF656a9d2bDF2e530B9A' },
30
- verifier: { address: '0x3E7C1cC9C049052eb061116A4Ee7a7C281fa1F30' },
28
+ messenger: { address: '0x5A4d000000000000000000000000000000000000' },
29
+ portal: { address: '0x5ad0000000000000000000000000000000000001' },
30
+ verifier: { address: '0x5a56000000000000000000000000000000000000' },
31
31
  },
32
32
  id: 421_700_001,
33
33
  name: 'zone-mainnet-internal',
@@ -197,7 +197,7 @@ describe('data()', () => {
197
197
  42431,
198
198
  421700001,
199
199
  421700006,
200
- 1424310001,
200
+ 1424310003,
201
201
  ],
202
202
  }
203
203
  `)
@@ -309,6 +309,7 @@ describe('funding()', () => {
309
309
  '/v1/funding/transfers/vault',
310
310
  '/v1/funding/transfers/zone',
311
311
  '/v1/funding/transfers/{id}',
312
+ '/v1/funding/transfers/{id}/source-transactions',
312
313
  ].sort(),
313
314
  )
314
315
  expect(Object.keys(spec.paths).some((path) => path.startsWith('/v1/tokens'))).toBe(false)
@@ -183,11 +183,20 @@ describe('MPP session management', () => {
183
183
  })
184
184
 
185
185
  describe('zone chain gate', () => {
186
+ const legacyModerato = 1_424_310_001
187
+ const moderato = 1_424_310_003
186
188
  /** A consumer-supplied zone chain id (the API never derives these). */
187
189
  const zone = 421_700_001
188
190
  /** A second zone, isolating per-zone grants. */
189
191
  const zoneB = 4_217_000_002
190
192
 
193
+ const legacyModeratoReader = {
194
+ id: 'key_legacy_moderato',
195
+ orgId: 'org_test',
196
+ scopes: ['data:read', 'indexer:query', `zone:${legacyModerato}:read`],
197
+ token: 'secret_legacy_moderato',
198
+ } satisfies TestApp.kvStore.Key
199
+
191
200
  function zoneOptions(chainId: number) {
192
201
  return TestApp.zone({
193
202
  chainId,
@@ -292,6 +301,38 @@ describe('zone chain gate', () => {
292
301
  expect(response.status).toBe(200)
293
302
  })
294
303
 
304
+ test('the legacy Moderato id and read scope route to current upstreams', async () => {
305
+ const fetch = vi
306
+ .spyOn(globalThis, 'fetch')
307
+ .mockResolvedValueOnce(Response.json({ id: 1, jsonrpc: '2.0', result: '0x54e89ac3' }))
308
+ .mockResolvedValueOnce(Response.json({ columns: [], ok: true, row_count: 0, rows: [] }))
309
+ try {
310
+ const app = TestApp.create({
311
+ auth: { keys: [legacyModeratoReader] },
312
+ rpc: { url: (chainId) => `https://${chainId}.rpc.test` },
313
+ tidx: { baseUrl: (chainId) => `https://${chainId}.tidx.test` },
314
+ zones: true,
315
+ })
316
+ const rpc = await app.request(`/rpc/${legacyModerato}`, {
317
+ body: JSON.stringify({ id: 1, jsonrpc: '2.0', method: 'eth_chainId' }),
318
+ headers: as(legacyModeratoReader).headers,
319
+ method: 'POST',
320
+ })
321
+ const tidx = await app.request(
322
+ `/v1/indexer/query?chainId=${legacyModerato}&sql=select%201`,
323
+ as(legacyModeratoReader),
324
+ )
325
+ const tidxUpstream = new URL((fetch.mock.calls[1]![0] as Request).url)
326
+
327
+ expect([rpc.status, tidx.status]).toEqual([200, 200])
328
+ expect((fetch.mock.calls[0]![0] as Request).url).toBe(`https://${moderato}.rpc.test/`)
329
+ expect(tidxUpstream.origin).toBe(`https://${moderato}.tidx.test`)
330
+ expect(tidxUpstream.searchParams.get('chainId')).toBe(String(moderato))
331
+ } finally {
332
+ fetch.mockRestore()
333
+ }
334
+ })
335
+
295
336
  test('a Zone write scope reads Zone data', async () => {
296
337
  const response = await zoneApp().request(`/v1/tokenlist?chainId=${zone}`, as(zoneWriter))
297
338
  expect(response.status).toBe(200)
@@ -23,7 +23,7 @@ import { transactions as transactionActivities } from './routes/activities.js'
23
23
  import { addresses } from './routes/addresses.js'
24
24
  import { blocks, blocksByTimestampCompat } from './routes/blocks.js'
25
25
  import { coingecko } from './routes/coingecko.js'
26
- import { earn } from './routes/earn.js'
26
+ import * as Earn from './routes/earn.js'
27
27
  import { exchanges } from './routes/exchanges.js'
28
28
  import { feeAmm } from './routes/fee-amm.js'
29
29
  import { indexer } from './routes/indexer.js'
@@ -60,7 +60,7 @@ export function data(options: data.Options = {}) {
60
60
 
61
61
  const getTidx = Tidx.createGetClient({ tidx })
62
62
  const addresses_routes = addresses({ fx: options.fx })
63
- const earn_routes = earn({ fx: options.fx })
63
+ const earn_routes = Earn.earn({ fx: options.fx })
64
64
  const indexer_routes = indexer()
65
65
  const transactionActivities_routes = transactionActivities({ fx: options.fx })
66
66
  const indexerRouteHandlers = new Set(indexer_routes.routes.map((route) => route.handler))
@@ -130,6 +130,30 @@ export function data(options: data.Options = {}) {
130
130
  const rpc_config = c.get('rpc')
131
131
  const tidx_config = c.get('tidx')
132
132
  const zones = c.get('zones')
133
+ const query = Earn.schema.getEarnVaultPosition.Query.safeParse(
134
+ Object.fromEntries(
135
+ Object.entries(c.req.queries()).map(([key, values]) => [
136
+ key,
137
+ values.length === 1 ? values[0] : values,
138
+ ]),
139
+ ),
140
+ )
141
+ const requiresTidx = selection.rpcOnly && query.success && query.data.asOf !== undefined
142
+ // Raw passthroughs and current RPC-only reads need RPC. Historical
143
+ // position reads and composed data routes require both upstreams.
144
+ const narrowedChainIds = new Set(
145
+ [...supportedChainIds].filter((chainId) => {
146
+ const context = { chainId, principal, zone: zones.get(chainId) }
147
+ const hasRpc = Viem.resolveRpc(rpc_config, context).url !== undefined
148
+ const hasTidx = Tidx.resolve(tidx_config, context).baseUrl !== undefined
149
+ if (selection.rpc || (selection.rpcOnly && !requiresTidx)) return hasRpc
150
+ if (selection.indexer) return hasTidx
151
+ return hasRpc && hasTidx
152
+ }),
153
+ )
154
+ c.set('supportedChainIds', narrowedChainIds)
155
+ if (!narrowedChainIds.has(selection.chainId))
156
+ return Response.unsupportedChainId(c, selection.chainId, narrowedChainIds)
133
157
  if (selection.inferredZones) {
134
158
  if (principal?.type !== 'api_key')
135
159
  return Response.error(c, {
@@ -150,25 +174,10 @@ export function data(options: data.Options = {}) {
150
174
  message: 'The API key has no readable configured Zones.',
151
175
  status: 403,
152
176
  })
153
- c.set('supportedChainIds', new Set(zoneChainIds))
177
+ c.set('supportedChainIds', new Set([selection.chainId, ...zoneChainIds]))
154
178
  c.set('zoneChainIds', zoneChainIds)
155
179
  return next()
156
180
  }
157
- // Raw passthroughs and RPC-only reads need only RPC; composed data routes
158
- // require both upstreams to avoid falling through to unrelated defaults.
159
- const narrowedChainIds = new Set(
160
- [...supportedChainIds].filter((chainId) => {
161
- const context = { chainId, principal, zone: zones.get(chainId) }
162
- const hasRpc = Viem.resolveRpc(rpc_config, context).url !== undefined
163
- const hasTidx = Tidx.resolve(tidx_config, context).baseUrl !== undefined
164
- if (selection.rpc || selection.rpcOnly) return hasRpc
165
- if (selection.indexer) return hasTidx
166
- return hasRpc && hasTidx
167
- }),
168
- )
169
- c.set('supportedChainIds', narrowedChainIds)
170
- if (!narrowedChainIds.has(selection.chainId))
171
- return Response.unsupportedChainId(c, selection.chainId, narrowedChainIds)
172
181
  c.set('chainId', selection.chainId)
173
182
  return next()
174
183
  })
@@ -201,8 +210,8 @@ export function data(options: data.Options = {}) {
201
210
  return Response.error(c, {
202
211
  code: 'api_key_forbidden',
203
212
  message: selection.rpc
204
- ? `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`, or pass a Zone token via \`X-Authorization-Token\`.`
205
- : `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`.`,
213
+ ? `Chain ID ${chainId} is a Zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`, or pass a Zone token via \`X-Authorization-Token\`.`
214
+ : `Chain ID ${chainId} is a Zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`.`,
206
215
  status: 403,
207
216
  })
208
217
 
@@ -500,7 +509,7 @@ function webhooksBlock() {
500
509
  'tempo-event-id',
501
510
  'A unique, stable id for this event (`evt_…`). The same event may be delivered more than once, so use this id to skip duplicates.',
502
511
  ),
503
- header('tempo-event-type', 'What happened: `token:transfer`, `transaction:included`, `log:emitted`, `block:created`, `funding:deposit.updated`, or `ping`.'), // prettier-ignore
512
+ header('tempo-event-type', 'What happened: `token:transfer`, `transaction:included`, `log:emitted`, `block:created`, `funding:deposit.updated`, `funding:transfer.updated`, or `ping`.'), // prettier-ignore
504
513
  ],
505
514
  requestBody: {
506
515
  content: { 'application/json': { schema: envelope } },
@@ -138,7 +138,7 @@ describe('readableChainIds', () => {
138
138
  })
139
139
 
140
140
  describe('uniqueMatch', () => {
141
- test('selects one match after every Zone completes', () => {
141
+ test('selects one match after every chain completes', () => {
142
142
  expect(
143
143
  ZoneSelection.uniqueMatch([
144
144
  { chainId: 1, value: null },
@@ -159,7 +159,7 @@ describe('uniqueMatch', () => {
159
159
  ).toStrictEqual({ kind: 'ambiguous' })
160
160
  })
161
161
 
162
- test('fails the selection when any Zone lookup fails', () => {
162
+ test('fails the selection when any chain lookup fails', () => {
163
163
  const cause = new Error('unavailable')
164
164
  expect(
165
165
  ZoneSelection.uniqueMatch([
@@ -48,7 +48,7 @@ export declare namespace readableChainIds {
48
48
  }
49
49
  }
50
50
 
51
- /** Resolves receipt probes without treating partial upstream results as complete. */
51
+ /** Resolves chain receipt probes without treating partial upstream results as complete. */
52
52
  export function uniqueMatch<const value>(
53
53
  probes: readonly uniqueMatch.Probe<value>[],
54
54
  ): uniqueMatch.Result<value> {
@@ -66,25 +66,25 @@ export function uniqueMatch<const value>(
66
66
  }
67
67
 
68
68
  export declare namespace uniqueMatch {
69
- /** One completed Zone lookup. */
69
+ /** One completed chain lookup. */
70
70
  type Probe<value> =
71
71
  | {
72
- /** Zone that completed the lookup. */
72
+ /** Chain that completed the lookup. */
73
73
  chainId: number
74
- /** Matching value, or null when the Zone did not contain the resource. */
74
+ /** Matching value, or null when the chain did not contain the resource. */
75
75
  value: value | null
76
76
  }
77
77
  | {
78
- /** Upstream failure from this Zone. */
78
+ /** Upstream failure from this chain. */
79
79
  cause: unknown
80
- /** Zone that failed the lookup. */
80
+ /** Chain that failed the lookup. */
81
81
  chainId: number
82
82
  }
83
83
 
84
- /** Unique-match decision across every requested Zone. */
84
+ /** Unique-match decision across every requested chain. */
85
85
  type Result<value> =
86
86
  | {
87
- /** Zone containing the unique match. */
87
+ /** Chain containing the unique match. */
88
88
  chainId: number
89
89
  /** Unique match result. */
90
90
  kind: 'selected'