tapimo 0.11.0 → 0.13.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 (443) hide show
  1. package/dist/App.d.ts +6396 -4575
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +39 -4
  4. package/dist/App.js.map +1 -1
  5. package/dist/Assets.d.ts +15 -0
  6. package/dist/Assets.d.ts.map +1 -1
  7. package/dist/Assets.js +7 -0
  8. package/dist/Assets.js.map +1 -1
  9. package/dist/Scope.d.ts +2 -0
  10. package/dist/Scope.d.ts.map +1 -1
  11. package/dist/Scope.js +17 -0
  12. package/dist/Scope.js.map +1 -1
  13. package/dist/admin/App.d.ts +176 -78
  14. package/dist/admin/App.d.ts.map +1 -1
  15. package/dist/admin/apps/api-keys.d.ts +84 -4
  16. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  17. package/dist/admin/apps/api-keys.js +54 -0
  18. package/dist/admin/apps/api-keys.js.map +1 -1
  19. package/dist/admin/apps/earn-vaults.d.ts +123 -9
  20. package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
  21. package/dist/admin/apps/earn-vaults.js +60 -7
  22. package/dist/admin/apps/earn-vaults.js.map +1 -1
  23. package/dist/admin/apps/organizations.d.ts.map +1 -1
  24. package/dist/admin/apps/organizations.js +4 -2
  25. package/dist/admin/apps/organizations.js.map +1 -1
  26. package/dist/admin/apps/verified-tokens.d.ts +90 -90
  27. package/dist/admin/ui.generated.d.ts +1 -1
  28. package/dist/admin/ui.generated.js +71 -71
  29. package/dist/admin/ui.generated.js.map +1 -1
  30. package/dist/apps/Zones.d.ts +16 -16
  31. package/dist/apps/Zones.js +4 -4
  32. package/dist/apps/data/App.d.ts +1699 -749
  33. package/dist/apps/data/App.d.ts.map +1 -1
  34. package/dist/apps/data/App.js +58 -9
  35. package/dist/apps/data/App.js.map +1 -1
  36. package/dist/apps/data/ZoneSelection.d.ts +62 -0
  37. package/dist/apps/data/ZoneSelection.d.ts.map +1 -0
  38. package/dist/apps/data/ZoneSelection.js +44 -0
  39. package/dist/apps/data/ZoneSelection.js.map +1 -0
  40. package/dist/apps/data/routes/activities.d.ts +2417 -50
  41. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  42. package/dist/apps/data/routes/activities.js +1896 -1293
  43. package/dist/apps/data/routes/activities.js.map +1 -1
  44. package/dist/apps/data/routes/addresses.d.ts +471 -340
  45. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  46. package/dist/apps/data/routes/balances.d.ts +12 -12
  47. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  48. package/dist/apps/data/routes/balances.js +44 -17
  49. package/dist/apps/data/routes/balances.js.map +1 -1
  50. package/dist/apps/data/routes/blocks.d.ts +42 -42
  51. package/dist/apps/data/routes/blocks.d.ts.map +1 -1
  52. package/dist/apps/data/routes/blocks.js +22 -12
  53. package/dist/apps/data/routes/blocks.js.map +1 -1
  54. package/dist/apps/data/routes/coingecko.d.ts +179 -179
  55. package/dist/apps/data/routes/earn.d.ts +144 -19
  56. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  57. package/dist/apps/data/routes/earn.js +160 -28
  58. package/dist/apps/data/routes/earn.js.map +1 -1
  59. package/dist/apps/data/routes/exchanges.d.ts +719 -13
  60. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  61. package/dist/apps/data/routes/exchanges.js +16 -13
  62. package/dist/apps/data/routes/exchanges.js.map +1 -1
  63. package/dist/apps/data/routes/fee-amm.d.ts +2 -2
  64. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  65. package/dist/apps/data/routes/fee-amm.js +9 -11
  66. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  67. package/dist/apps/data/routes/indexer.d.ts +34 -34
  68. package/dist/apps/data/routes/receipts.d.ts +363 -263
  69. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  70. package/dist/apps/data/routes/receipts.js +29 -11
  71. package/dist/apps/data/routes/receipts.js.map +1 -1
  72. package/dist/apps/data/routes/rpc.js +24 -10
  73. package/dist/apps/data/routes/rpc.js.map +1 -1
  74. package/dist/apps/data/routes/tokenlist.d.ts +13 -13
  75. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  76. package/dist/apps/data/routes/tokenlist.js +16 -15
  77. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  78. package/dist/apps/data/routes/tokens.d.ts +112 -98
  79. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  80. package/dist/apps/data/routes/tokens.js +85 -35
  81. package/dist/apps/data/routes/tokens.js.map +1 -1
  82. package/dist/apps/data/routes/transactions.d.ts +7 -2
  83. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  84. package/dist/apps/data/routes/transactions.js +38 -18
  85. package/dist/apps/data/routes/transactions.js.map +1 -1
  86. package/dist/apps/data/routes/transfers.d.ts +1 -1
  87. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  88. package/dist/apps/data/routes/transfers.js +25 -21
  89. package/dist/apps/data/routes/transfers.js.map +1 -1
  90. package/dist/apps/data/routes/valuation.d.ts +1 -1
  91. package/dist/apps/data/routes/valuation.d.ts.map +1 -1
  92. package/dist/apps/data/routes/valuation.js +12 -7
  93. package/dist/apps/data/routes/valuation.js.map +1 -1
  94. package/dist/apps/data/routes/verified-tokens.d.ts +3 -3
  95. package/dist/apps/data/routes/webhooks.d.ts +15 -15
  96. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  97. package/dist/apps/data/routes/webhooks.js +2 -2
  98. package/dist/apps/data/routes/webhooks.js.map +1 -1
  99. package/dist/apps/data/routes/zones.d.ts +32 -32
  100. package/dist/apps/data/routes/zones.js +1 -1
  101. package/dist/apps/funding/App.d.ts +38 -27
  102. package/dist/apps/funding/App.d.ts.map +1 -1
  103. package/dist/apps/funding/routes/chains.d.ts.map +1 -1
  104. package/dist/apps/funding/routes/chains.js +5 -4
  105. package/dist/apps/funding/routes/chains.js.map +1 -1
  106. package/dist/apps/funding/routes/deposit-addresses.d.ts +16 -16
  107. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  108. package/dist/apps/funding/routes/deposit-addresses.js +24 -19
  109. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  110. package/dist/apps/funding/routes/providers.d.ts +13 -13
  111. package/dist/apps/funding/routes/providers.d.ts.map +1 -1
  112. package/dist/apps/funding/routes/providers.js +3 -2
  113. package/dist/apps/funding/routes/providers.js.map +1 -1
  114. package/dist/apps/funding/routes/quotes.d.ts.map +1 -1
  115. package/dist/apps/funding/routes/quotes.js +2 -2
  116. package/dist/apps/funding/routes/quotes.js.map +1 -1
  117. package/dist/apps/funding/routes/transfers.d.ts +60 -48
  118. package/dist/apps/funding/routes/transfers.d.ts.map +1 -1
  119. package/dist/apps/funding/routes/transfers.js +27 -19
  120. package/dist/apps/funding/routes/transfers.js.map +1 -1
  121. package/dist/apps/management/App.d.ts +4558 -3700
  122. package/dist/apps/management/App.d.ts.map +1 -1
  123. package/dist/apps/management/Billing.d.ts.map +1 -1
  124. package/dist/apps/management/Billing.js +19 -6
  125. package/dist/apps/management/Billing.js.map +1 -1
  126. package/dist/apps/management/routes/api-keys.d.ts +786 -175
  127. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  128. package/dist/apps/management/routes/api-keys.js +312 -34
  129. package/dist/apps/management/routes/api-keys.js.map +1 -1
  130. package/dist/apps/management/routes/billing.d.ts +103 -30
  131. package/dist/apps/management/routes/billing.d.ts.map +1 -1
  132. package/dist/apps/management/routes/billing.js +91 -32
  133. package/dist/apps/management/routes/billing.js.map +1 -1
  134. package/dist/apps/management/routes/faucet.d.ts +35 -35
  135. package/dist/apps/management/routes/faucet.d.ts.map +1 -1
  136. package/dist/apps/management/routes/faucet.js +23 -12
  137. package/dist/apps/management/routes/faucet.js.map +1 -1
  138. package/dist/apps/management/routes/invitations.d.ts +46 -13
  139. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  140. package/dist/apps/management/routes/invitations.js +79 -29
  141. package/dist/apps/management/routes/invitations.js.map +1 -1
  142. package/dist/apps/management/routes/invite-links.d.ts +120 -75
  143. package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
  144. package/dist/apps/management/routes/invite-links.js +100 -41
  145. package/dist/apps/management/routes/invite-links.js.map +1 -1
  146. package/dist/apps/management/routes/me.d.ts +5 -5
  147. package/dist/apps/management/routes/me.d.ts.map +1 -1
  148. package/dist/apps/management/routes/me.js +14 -10
  149. package/dist/apps/management/routes/me.js.map +1 -1
  150. package/dist/apps/management/routes/members.d.ts +99 -78
  151. package/dist/apps/management/routes/members.d.ts.map +1 -1
  152. package/dist/apps/management/routes/members.js +37 -18
  153. package/dist/apps/management/routes/members.js.map +1 -1
  154. package/dist/apps/management/routes/orgs.d.ts +48 -8
  155. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  156. package/dist/apps/management/routes/orgs.js +48 -19
  157. package/dist/apps/management/routes/orgs.js.map +1 -1
  158. package/dist/apps/management/routes/projects.d.ts +108 -46
  159. package/dist/apps/management/routes/projects.d.ts.map +1 -1
  160. package/dist/apps/management/routes/projects.js +72 -21
  161. package/dist/apps/management/routes/projects.js.map +1 -1
  162. package/dist/apps/management/routes/scopes.d.ts.map +1 -1
  163. package/dist/apps/management/routes/scopes.js +8 -5
  164. package/dist/apps/management/routes/scopes.js.map +1 -1
  165. package/dist/apps/management/routes/usage.d.ts +82 -82
  166. package/dist/apps/management/routes/usage.d.ts.map +1 -1
  167. package/dist/apps/management/routes/usage.js +41 -31
  168. package/dist/apps/management/routes/usage.js.map +1 -1
  169. package/dist/apps/management/routes/verified-token-requests.d.ts +35 -7
  170. package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
  171. package/dist/apps/management/routes/verified-token-requests.js +36 -17
  172. package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
  173. package/dist/apps/management/routes/webhooks.d.ts +200 -183
  174. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  175. package/dist/apps/management/routes/webhooks.js +80 -35
  176. package/dist/apps/management/routes/webhooks.js.map +1 -1
  177. package/dist/apps/mpp/internal/Adapter.d.ts +1 -1
  178. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
  179. package/dist/apps/mpp/internal/Adapter.js +12 -0
  180. package/dist/apps/mpp/internal/Adapter.js.map +1 -1
  181. package/dist/db/Db.d.ts +2 -0
  182. package/dist/db/Db.d.ts.map +1 -1
  183. package/dist/db/Db.js +52 -1
  184. package/dist/db/Db.js.map +1 -1
  185. package/dist/db/Schema.d.ts +26 -3
  186. package/dist/db/Schema.d.ts.map +1 -1
  187. package/dist/db/Schema.js +24 -5
  188. package/dist/db/Schema.js.map +1 -1
  189. package/dist/db/tables/earnVaults.d.ts +5 -1
  190. package/dist/db/tables/earnVaults.d.ts.map +1 -1
  191. package/dist/db/tables/earnVaults.js +5 -0
  192. package/dist/db/tables/earnVaults.js.map +1 -1
  193. package/dist/db/tables/fundingCatalog.d.ts +4 -2
  194. package/dist/db/tables/fundingCatalog.d.ts.map +1 -1
  195. package/dist/db/tables/fundingCatalog.js +5 -1
  196. package/dist/db/tables/fundingCatalog.js.map +1 -1
  197. package/dist/db/tables/webhookDeliveries.d.ts.map +1 -1
  198. package/dist/db/tables/webhookDeliveries.js +10 -0
  199. package/dist/db/tables/webhookDeliveries.js.map +1 -1
  200. package/dist/db/tables/webhookQueueCompletions.d.ts +15 -0
  201. package/dist/db/tables/webhookQueueCompletions.d.ts.map +1 -0
  202. package/dist/db/tables/webhookQueueCompletions.js +32 -0
  203. package/dist/db/tables/webhookQueueCompletions.js.map +1 -0
  204. package/dist/db/tables/webhookQueueEvents.d.ts +14 -20
  205. package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
  206. package/dist/db/tables/webhookQueueEvents.js +68 -47
  207. package/dist/db/tables/webhookQueueEvents.js.map +1 -1
  208. package/dist/db/tables/webhookSubscriptions.d.ts +16 -5
  209. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  210. package/dist/db/tables/webhookSubscriptions.js +29 -5
  211. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  212. package/dist/handlers/internal/utils.d.ts.map +1 -1
  213. package/dist/handlers/internal/utils.js +9 -0
  214. package/dist/handlers/internal/utils.js.map +1 -1
  215. package/dist/internal/Auth.d.ts +11 -2
  216. package/dist/internal/Auth.d.ts.map +1 -1
  217. package/dist/internal/Auth.js +19 -6
  218. package/dist/internal/Auth.js.map +1 -1
  219. package/dist/internal/Cache.d.ts.map +1 -1
  220. package/dist/internal/Cache.js +11 -7
  221. package/dist/internal/Cache.js.map +1 -1
  222. package/dist/internal/EarnVaults.d.ts +43 -4
  223. package/dist/internal/EarnVaults.d.ts.map +1 -1
  224. package/dist/internal/EarnVaults.js +167 -0
  225. package/dist/internal/EarnVaults.js.map +1 -1
  226. package/dist/internal/Fetch.d.ts +23 -0
  227. package/dist/internal/Fetch.d.ts.map +1 -0
  228. package/dist/internal/Fetch.js +26 -0
  229. package/dist/internal/Fetch.js.map +1 -0
  230. package/dist/internal/Log.d.ts +3 -1
  231. package/dist/internal/Log.d.ts.map +1 -1
  232. package/dist/internal/Log.js +16 -3
  233. package/dist/internal/Log.js.map +1 -1
  234. package/dist/internal/OpenApi.d.ts +30 -24
  235. package/dist/internal/OpenApi.d.ts.map +1 -1
  236. package/dist/internal/OpenApi.js +140 -41
  237. package/dist/internal/OpenApi.js.map +1 -1
  238. package/dist/internal/Response.d.ts +14 -9
  239. package/dist/internal/Response.d.ts.map +1 -1
  240. package/dist/internal/Response.js +16 -5
  241. package/dist/internal/Response.js.map +1 -1
  242. package/dist/internal/Schema.d.ts +11 -10
  243. package/dist/internal/Schema.d.ts.map +1 -1
  244. package/dist/internal/Schema.js +14 -9
  245. package/dist/internal/Schema.js.map +1 -1
  246. package/dist/internal/Store.d.ts +28 -6
  247. package/dist/internal/Store.d.ts.map +1 -1
  248. package/dist/internal/Store.js +121 -25
  249. package/dist/internal/Store.js.map +1 -1
  250. package/dist/internal/Tidx.d.ts +2 -0
  251. package/dist/internal/Tidx.d.ts.map +1 -1
  252. package/dist/internal/Tidx.js +23 -6
  253. package/dist/internal/Tidx.js.map +1 -1
  254. package/dist/internal/Timeout.d.ts +36 -0
  255. package/dist/internal/Timeout.d.ts.map +1 -0
  256. package/dist/internal/Timeout.js +37 -0
  257. package/dist/internal/Timeout.js.map +1 -0
  258. package/dist/internal/Timing.d.ts +9 -0
  259. package/dist/internal/Timing.d.ts.map +1 -1
  260. package/dist/internal/Timing.js +7 -0
  261. package/dist/internal/Timing.js.map +1 -1
  262. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  263. package/dist/internal/WebhookDestination.js +3 -0
  264. package/dist/internal/WebhookDestination.js.map +1 -1
  265. package/dist/internal/Webhooks.d.ts +29 -12
  266. package/dist/internal/Webhooks.d.ts.map +1 -1
  267. package/dist/internal/Webhooks.js +37 -20
  268. package/dist/internal/Webhooks.js.map +1 -1
  269. package/dist/internal/funding/Action.d.ts +9 -0
  270. package/dist/internal/funding/Action.d.ts.map +1 -1
  271. package/dist/internal/funding/Action.js +16 -8
  272. package/dist/internal/funding/Action.js.map +1 -1
  273. package/dist/internal/funding/Catalog.d.ts +9 -2
  274. package/dist/internal/funding/Catalog.d.ts.map +1 -1
  275. package/dist/internal/funding/Catalog.js +19 -8
  276. package/dist/internal/funding/Catalog.js.map +1 -1
  277. package/dist/internal/funding/Deposit.d.ts +2 -2
  278. package/dist/internal/funding/Deposit.d.ts.map +1 -1
  279. package/dist/internal/funding/Deposit.js +9 -8
  280. package/dist/internal/funding/Deposit.js.map +1 -1
  281. package/dist/internal/funding/DepositAddress.d.ts +4 -4
  282. package/dist/internal/funding/DepositAddress.d.ts.map +1 -1
  283. package/dist/internal/funding/DepositAddress.js +9 -8
  284. package/dist/internal/funding/DepositAddress.js.map +1 -1
  285. package/dist/internal/funding/Provider.d.ts +68 -13
  286. package/dist/internal/funding/Provider.d.ts.map +1 -1
  287. package/dist/internal/funding/Provider.js +42 -20
  288. package/dist/internal/funding/Provider.js.map +1 -1
  289. package/dist/internal/funding/Transfer.d.ts +13 -12
  290. package/dist/internal/funding/Transfer.d.ts.map +1 -1
  291. package/dist/internal/funding/Transfer.js +23 -21
  292. package/dist/internal/funding/Transfer.js.map +1 -1
  293. package/dist/internal/funding/providers/stargate.d.ts +38 -0
  294. package/dist/internal/funding/providers/stargate.d.ts.map +1 -0
  295. package/dist/internal/funding/providers/stargate.js +277 -0
  296. package/dist/internal/funding/providers/stargate.js.map +1 -0
  297. package/dist/internal/index.d.ts +1 -0
  298. package/dist/internal/index.d.ts.map +1 -1
  299. package/dist/internal/index.js +1 -0
  300. package/dist/internal/index.js.map +1 -1
  301. package/dist/providers/index.d.ts +7 -0
  302. package/dist/providers/index.d.ts.map +1 -1
  303. package/dist/providers/index.js +3 -0
  304. package/dist/providers/index.js.map +1 -1
  305. package/package.json +3 -3
  306. package/src/App.test.ts +148 -0
  307. package/src/App.ts +45 -4
  308. package/src/Assets.test.ts +18 -0
  309. package/src/Assets.ts +22 -0
  310. package/src/Client.test-d.ts +311 -16
  311. package/src/Scope.test.ts +20 -0
  312. package/src/Scope.ts +16 -0
  313. package/src/admin/apps/api-keys.test.ts +75 -0
  314. package/src/admin/apps/api-keys.ts +64 -0
  315. package/src/admin/apps/earn-vaults.test.ts +143 -0
  316. package/src/admin/apps/earn-vaults.ts +84 -7
  317. package/src/admin/apps/organizations.ts +6 -2
  318. package/src/admin/ui/src/lib/api-keys.ts +19 -0
  319. package/src/admin/ui/src/routes/api-keys.tsx +125 -2
  320. package/src/admin/ui.generated.ts +71 -71
  321. package/src/apps/Zones.test.ts +4 -4
  322. package/src/apps/Zones.ts +4 -4
  323. package/src/apps/composition.test.ts +1 -1
  324. package/src/apps/data/App.test.ts +72 -0
  325. package/src/apps/data/App.ts +58 -10
  326. package/src/apps/data/ZoneSelection.test.ts +196 -0
  327. package/src/apps/data/ZoneSelection.ts +108 -0
  328. package/src/apps/data/routes/activities.test.ts +1843 -2
  329. package/src/apps/data/routes/activities.ts +2211 -1388
  330. package/src/apps/data/routes/balances.ts +134 -98
  331. package/src/apps/data/routes/blocks.test.ts +533 -0
  332. package/src/apps/data/routes/blocks.ts +36 -17
  333. package/src/apps/data/routes/earn.test.ts +187 -25
  334. package/src/apps/data/routes/earn.ts +228 -32
  335. package/src/apps/data/routes/earn.zone-access.test.ts +46 -0
  336. package/src/apps/data/routes/exchanges.test.ts +31 -1
  337. package/src/apps/data/routes/exchanges.ts +19 -15
  338. package/src/apps/data/routes/fee-amm.ts +18 -11
  339. package/src/apps/data/routes/receipts.ts +48 -17
  340. package/src/apps/data/routes/rpc.test.ts +75 -0
  341. package/src/apps/data/routes/rpc.ts +23 -9
  342. package/src/apps/data/routes/tokenlist.ts +21 -18
  343. package/src/apps/data/routes/tokens.test.ts +607 -0
  344. package/src/apps/data/routes/tokens.ts +312 -231
  345. package/src/apps/data/routes/transactions.ts +69 -30
  346. package/src/apps/data/routes/transfers.test.ts +424 -3
  347. package/src/apps/data/routes/transfers.ts +57 -36
  348. package/src/apps/data/routes/valuation.ts +94 -78
  349. package/src/apps/data/routes/webhooks.ts +6 -2
  350. package/src/apps/data/routes/zones.test.ts +21 -15
  351. package/src/apps/data/routes/zones.ts +1 -1
  352. package/src/apps/funding/routes/chains.test.ts +211 -7
  353. package/src/apps/funding/routes/chains.ts +19 -12
  354. package/src/apps/funding/routes/deposit-addresses.test.ts +416 -0
  355. package/src/apps/funding/routes/deposit-addresses.ts +101 -84
  356. package/src/apps/funding/routes/providers.ts +9 -5
  357. package/src/apps/funding/routes/quotes.test.ts +42 -0
  358. package/src/apps/funding/routes/quotes.ts +8 -5
  359. package/src/apps/funding/routes/transfers.test.ts +430 -40
  360. package/src/apps/funding/routes/transfers.ts +76 -59
  361. package/src/apps/management/Billing.test.ts +26 -0
  362. package/src/apps/management/Billing.ts +24 -7
  363. package/src/apps/management/routes/api-keys.test.ts +398 -0
  364. package/src/apps/management/routes/api-keys.ts +481 -145
  365. package/src/apps/management/routes/billing.test.ts +209 -0
  366. package/src/apps/management/routes/billing.ts +254 -177
  367. package/src/apps/management/routes/faucet.test.ts +39 -0
  368. package/src/apps/management/routes/faucet.ts +75 -41
  369. package/src/apps/management/routes/invitations.test.ts +216 -0
  370. package/src/apps/management/routes/invitations.ts +186 -109
  371. package/src/apps/management/routes/invite-links.test.ts +263 -1
  372. package/src/apps/management/routes/invite-links.ts +295 -214
  373. package/src/apps/management/routes/me.test.ts +49 -0
  374. package/src/apps/management/routes/me.ts +42 -32
  375. package/src/apps/management/routes/members.test.ts +124 -1
  376. package/src/apps/management/routes/members.ts +81 -51
  377. package/src/apps/management/routes/orgs.test.ts +176 -0
  378. package/src/apps/management/routes/orgs.ts +101 -59
  379. package/src/apps/management/routes/projects.test.ts +183 -0
  380. package/src/apps/management/routes/projects.ts +124 -60
  381. package/src/apps/management/routes/scopes.test.ts +44 -0
  382. package/src/apps/management/routes/scopes.ts +37 -28
  383. package/src/apps/management/routes/usage.test.ts +92 -0
  384. package/src/apps/management/routes/usage.ts +186 -151
  385. package/src/apps/management/routes/verified-token-requests.test.ts +114 -0
  386. package/src/apps/management/routes/verified-token-requests.ts +166 -133
  387. package/src/apps/management/routes/webhooks.test.ts +234 -0
  388. package/src/apps/management/routes/webhooks.ts +191 -78
  389. package/src/apps/mpp/internal/Adapter.ts +13 -1
  390. package/src/db/Db.test.ts +41 -0
  391. package/src/db/Db.ts +75 -1
  392. package/src/db/Schema.ts +33 -5
  393. package/src/db/tables/earnVaults.test.ts +22 -0
  394. package/src/db/tables/earnVaults.ts +11 -1
  395. package/src/db/tables/fundingCatalog.test.ts +16 -2
  396. package/src/db/tables/fundingCatalog.ts +9 -3
  397. package/src/db/tables/webhookDeliveries.ts +13 -0
  398. package/src/db/tables/webhookQueueCompletions.ts +55 -0
  399. package/src/db/tables/webhookQueueEvents.ts +95 -61
  400. package/src/db/tables/webhookSubscriptions.ts +45 -6
  401. package/src/handlers/internal/utils.test.ts +53 -0
  402. package/src/handlers/internal/utils.ts +15 -0
  403. package/src/internal/Auth.ts +35 -9
  404. package/src/internal/Cache.ts +14 -7
  405. package/src/internal/EarnVaults.capabilities.test.ts +33 -0
  406. package/src/internal/EarnVaults.test.ts +79 -0
  407. package/src/internal/EarnVaults.ts +277 -0
  408. package/src/internal/Fetch.test.ts +46 -0
  409. package/src/internal/Fetch.ts +56 -0
  410. package/src/internal/Log.test.ts +21 -0
  411. package/src/internal/Log.ts +20 -5
  412. package/src/internal/OpenApi.ts +177 -51
  413. package/src/internal/Response.test.ts +95 -0
  414. package/src/internal/Response.ts +41 -3
  415. package/src/internal/Schema.test.ts +18 -0
  416. package/src/internal/Schema.ts +19 -9
  417. package/src/internal/Store.test.ts +364 -0
  418. package/src/internal/Store.ts +153 -27
  419. package/src/internal/Tidx.test.ts +21 -1
  420. package/src/internal/Tidx.ts +23 -6
  421. package/src/internal/Timeout.test.ts +35 -0
  422. package/src/internal/Timeout.ts +73 -0
  423. package/src/internal/Timing.ts +16 -0
  424. package/src/internal/WebhookDestination.ts +3 -0
  425. package/src/internal/Webhooks.test.ts +122 -8
  426. package/src/internal/Webhooks.ts +59 -29
  427. package/src/internal/funding/Action.test.ts +41 -1
  428. package/src/internal/funding/Action.ts +69 -41
  429. package/src/internal/funding/Catalog.test.ts +34 -0
  430. package/src/internal/funding/Catalog.ts +28 -11
  431. package/src/internal/funding/Deposit.ts +71 -64
  432. package/src/internal/funding/DepositAddress.ts +50 -43
  433. package/src/internal/funding/Provider.test.ts +73 -0
  434. package/src/internal/funding/Provider.ts +246 -170
  435. package/src/internal/funding/Transfer.ts +133 -110
  436. package/src/internal/funding/providers/index.test.ts +22 -0
  437. package/src/internal/funding/providers/relay.test.ts +2 -2
  438. package/src/internal/funding/providers/stargate.test.ts +163 -0
  439. package/src/internal/funding/providers/stargate.ts +409 -0
  440. package/src/internal/index.test.ts +1 -0
  441. package/src/internal/index.ts +1 -0
  442. package/src/providers/index.test.ts +1 -0
  443. package/src/providers/index.ts +9 -0
@@ -62,32 +62,39 @@ export namespace schema {
62
62
  */
63
63
  export const PoolToken = Schema.describe(
64
64
  z.object({
65
- address: Schema.TokenAddress.check(
65
+ address: Schema.tokenAddress(Tokens.tokenExample.address).check(
66
66
  z.describe('TIP-20 token contract address used by this fee pool.'),
67
67
  ),
68
68
  currency: z
69
69
  .optional(z.string())
70
70
  .check(
71
71
  z.describe('Display currency for the token, when available.'),
72
- z.meta({ examples: ['USD'] }),
72
+ z.meta({ examples: [Tokens.tokenExample.currency] }),
73
73
  ),
74
74
  decimals: z
75
75
  .optional(z.number().check(z.int(), z.nonnegative()))
76
- .check(z.describe('Number of decimal places the token uses.'), z.meta({ examples: [6] })),
76
+ .check(
77
+ z.describe('Number of decimal places the token uses.'),
78
+ z.meta({ examples: [Tokens.tokenExample.decimals] }),
79
+ ),
77
80
  logoUri: z.optional(z.string()).check(
78
- z.describe('URL for the token logo SVG, when available.'),
81
+ z.describe('URL for the token logo image, when available.'),
79
82
  z.meta({
80
- examples: [
81
- 'https://api.tempo.xyz/data/4217/icons/0x20c0000000000000000000008f5425160ebe5525.svg',
82
- ],
83
+ examples: [Tokens.tokenExample.logoUri],
83
84
  }),
84
85
  ),
85
86
  name: z
86
87
  .optional(z.string())
87
- .check(z.describe('Human-readable token name.'), z.meta({ examples: ['USD Coin'] })),
88
+ .check(
89
+ z.describe('Human-readable token name.'),
90
+ z.meta({ examples: [Tokens.tokenExample.name] }),
91
+ ),
88
92
  symbol: z
89
93
  .optional(z.string())
90
- .check(z.describe('Short token ticker symbol.'), z.meta({ examples: ['USDC'] })),
94
+ .check(
95
+ z.describe('Short token ticker symbol.'),
96
+ z.meta({ examples: [Tokens.tokenExample.symbol] }),
97
+ ),
91
98
  verified: z
92
99
  .optional(z.boolean())
93
100
  .check(
@@ -403,7 +410,7 @@ export function feeAmm() {
403
410
  200,
404
411
  )
405
412
  } catch (cause) {
406
- return Response.upstream(c, cause)
413
+ return Response.upstream(c, cause, { page: query.page })
407
414
  }
408
415
  },
409
416
  )
@@ -498,7 +505,7 @@ export function feeAmm() {
498
505
  200,
499
506
  )
500
507
  } catch (cause) {
501
- return Response.upstream(c, cause)
508
+ return Response.upstream(c, cause, { page: query.page })
502
509
  }
503
510
  },
504
511
  )
@@ -85,6 +85,8 @@ export namespace schema {
85
85
  })
86
86
  .check(z.describe('One event log emitted by a contract during transaction execution.'))
87
87
 
88
+ const rpcLog = OpenApi.component(Log, 'RpcTransactionLog')
89
+
88
90
  /** The verbatim JSON-RPC payloads, surfaced under each resource's `rpc` field. */
89
91
  export namespace Rpc {
90
92
  // TODO(ox/zod): replace with the zod schema for `ox/tempo`'s
@@ -145,7 +147,7 @@ export namespace schema {
145
147
  ),
146
148
  gasUsed: Schema.Quantity.check(z.describe('Gas actually used to execute the transaction.')),
147
149
  logs: z
148
- .array(Log)
150
+ .array(rpcLog)
149
151
  .check(z.describe('Event logs emitted by contracts while this transaction executed.')),
150
152
  logsBloom: z
151
153
  .optional(Schema.Hex)
@@ -186,6 +188,8 @@ export namespace schema {
186
188
  .check(z.describe('The transaction receipt exactly as returned by JSON-RPC.'))
187
189
  }
188
190
 
191
+ const rpcReceipt = OpenApi.component(Rpc.Receipt, 'RpcTransactionReceipt')
192
+
189
193
  /** Receipt metadata containing valuation provenance and the verbatim JSON-RPC receipt. */
190
194
  export const ReceiptMeta = z
191
195
  .object({
@@ -196,10 +200,12 @@ export namespace schema {
196
200
  'Rate provenance for the fee valuation. Present when conversion rates were consulted.',
197
201
  ),
198
202
  ),
199
- rpc: Rpc.Receipt.check(z.describe('The original JSON-RPC receipt payload.')),
203
+ rpc: rpcReceipt.check(z.describe('The original JSON-RPC receipt payload.')),
200
204
  })
201
205
  .check(z.describe('Metadata for this receipt, including valuation and the JSON-RPC payload.'))
202
206
 
207
+ const receiptMeta = OpenApi.component(ReceiptMeta, 'TransactionReceiptMeta')
208
+
203
209
  /** The fee charged to the fee payer, carrying its value in the requested denomination. */
204
210
  export const FeeAmount = z
205
211
  .extend(Schema.TokenAmount, {
@@ -215,6 +221,8 @@ export namespace schema {
215
221
  z.describe('The fee charged to the fee payer, with its value in the requested denomination.'),
216
222
  )
217
223
 
224
+ const receiptFeeAmount = OpenApi.component(FeeAmount, 'TransactionReceiptFeeAmount')
225
+
218
226
  /**
219
227
  * A humanized transaction receipt: decoded `status`/`type`, plain-number gas
220
228
  * and block fields, a structured fee amount, and a decimal-string gas price.
@@ -255,7 +263,9 @@ export namespace schema {
255
263
  effectiveGasPrice: Schema.DecimalString.check(
256
264
  z.describe('Effective gas price paid for this transaction, in attodollars per gas.'),
257
265
  ),
258
- feeAmount: FeeAmount.check(z.describe('Fee charged to the fee payer, denominated in USD.')),
266
+ feeAmount: receiptFeeAmount.check(
267
+ z.describe('Fee charged to the fee payer, denominated in USD.'),
268
+ ),
259
269
  feePayer: z
260
270
  .optional(Schema.Address)
261
271
  .check(z.describe('The address that paid the transaction fee.')),
@@ -278,11 +288,11 @@ export namespace schema {
278
288
  z.describe('Stable resource ID for this API response; it is the transaction hash.'),
279
289
  ),
280
290
  logs: z
281
- .array(Log)
291
+ .array(rpcLog)
282
292
  .check(
283
293
  z.describe('Event logs emitted by this transaction, returned in JSON-RPC log format.'),
284
294
  ),
285
- meta: ReceiptMeta.check(
295
+ meta: receiptMeta.check(
286
296
  z.describe(
287
297
  'Receipt metadata containing valuation rate provenance and the JSON-RPC payload.',
288
298
  ),
@@ -330,6 +340,9 @@ export namespace schema {
330
340
  ),
331
341
  )
332
342
 
343
+ /** Humanized transaction receipt shared by detail, list, and transaction includes. */
344
+ export const TransactionReceipt = OpenApi.component(Receipt, 'TransactionReceipt')
345
+
333
346
  /** Schemas for the getReceipt operation. */
334
347
  export namespace getReceipt {
335
348
  /** Path parameters for receipt requests. */
@@ -368,7 +381,7 @@ export namespace schema {
368
381
  .check(z.describe('Query parameters for looking up a receipt.'))
369
382
 
370
383
  /** A humanized receipt, with the verbatim JSON-RPC payload under `meta.rpc`. */
371
- export const Response = Receipt
384
+ export const Response = TransactionReceipt
372
385
  }
373
386
 
374
387
  /** Schemas for the getReceipts (list) operation. */
@@ -453,15 +466,22 @@ export namespace schema {
453
466
  })
454
467
  .check(z.describe('Page-level resources attached to this response.'))
455
468
 
456
- export const Response = z
457
- .object({
458
- data: z.array(getReceipt.Response).check(z.describe('Receipts on this page.')),
459
- meta: z
460
- .optional(Meta)
461
- .check(z.describe('Page-level resources: opt-in counts and valuation rate provenance.')),
462
- nextCursor: Schema.NextCursor,
463
- })
464
- .check(z.describe('A page of receipts ordered by block number and transaction position.'))
469
+ const meta = OpenApi.component(Meta, 'TransactionReceiptListMeta')
470
+
471
+ export const Response = OpenApi.component(
472
+ z
473
+ .object({
474
+ data: z.array(getReceipt.Response).check(z.describe('Receipts on this page.')),
475
+ meta: z
476
+ .optional(meta)
477
+ .check(
478
+ z.describe('Page-level resources: opt-in counts and valuation rate provenance.'),
479
+ ),
480
+ nextCursor: Schema.NextCursor,
481
+ })
482
+ .check(z.describe('A page of receipts ordered by block number and transaction position.')),
483
+ 'TransactionReceiptList',
484
+ )
465
485
  }
466
486
  }
467
487
 
@@ -481,7 +501,10 @@ export function receipts(options: receipts.Options = {}) {
481
501
  'List transaction receipts across Tempo, with filters for addresses, blocks, timestamps, fees, and status.',
482
502
  operationId: 'getReceipts',
483
503
  responses: OpenApi.responses({
484
- errors: { 502: 'Could not read receipt or token data from an upstream service.' },
504
+ errors: {
505
+ 400: { codes: ['chain_id_invalid', 'chain_id_unsupported', 'query_invalid'] },
506
+ 502: 'Could not read receipt or token data from an upstream service.',
507
+ },
485
508
  success: {
486
509
  description: 'A page of transaction receipts.',
487
510
  schema: schema.getReceipts.Response,
@@ -594,7 +617,7 @@ export function receipts(options: receipts.Options = {}) {
594
617
  } catch (cause) {
595
618
  if (cause instanceof Valuation.UnsupportedDenominationError)
596
619
  return Response.error(c, { code: 'query_invalid', message: cause.message, status: 400 })
597
- return Response.upstream(c, cause)
620
+ return Response.upstream(c, cause, { page: query.page })
598
621
  }
599
622
  },
600
623
  )
@@ -614,6 +637,14 @@ export function receipts(options: receipts.Options = {}) {
614
637
  operationId: 'getReceipt',
615
638
  responses: OpenApi.responses({
616
639
  errors: {
640
+ 400: {
641
+ codes: [
642
+ 'chain_id_invalid',
643
+ 'chain_id_unsupported',
644
+ 'query_invalid',
645
+ 'transaction_invalid',
646
+ ],
647
+ },
617
648
  404: {
618
649
  description: 'No receipt was found for that transaction hash.',
619
650
  codes: ['receipt_not_found'],
@@ -286,6 +286,81 @@ describe('POST /rpc', () => {
286
286
  },
287
287
  )
288
288
 
289
+ test('keeps RPC method-filter responses out of upstream alerts', async () => {
290
+ const entries: Log.Entry[] = []
291
+ const body = {
292
+ error: { code: -32_601, message: 'method not allowed: tempo_sponsor' },
293
+ id: null,
294
+ jsonrpc: '2.0',
295
+ }
296
+ const server = await Relay.createServer(
297
+ RequestListener.fromFetchHandler(() => Response.json(body, { status: 403 })),
298
+ )
299
+
300
+ try {
301
+ const app = TestApp.create({
302
+ auth: false,
303
+ logger: (entry) => void entries.push(entry),
304
+ rpc: { url: server.url },
305
+ })
306
+ const response = await app.fetch(
307
+ new Request('http://tempo-api.test/rpc', {
308
+ body: JSON.stringify({ id: 1, jsonrpc: '2.0', method: 'tempo_sponsor' }),
309
+ method: 'POST',
310
+ }),
311
+ )
312
+
313
+ expect(response.status).toBe(403)
314
+ expect(await response.json()).toEqual(body)
315
+ expect(entries[0]?.provider).toBeUndefined()
316
+ } finally {
317
+ await server.closeAsync()
318
+ }
319
+ })
320
+
321
+ test('attributes RPC authorization responses to the upstream', async () => {
322
+ const entries: Log.Entry[] = []
323
+ const server = await Relay.createServer(
324
+ RequestListener.fromFetchHandler(() =>
325
+ Response.json(
326
+ {
327
+ error: { code: -32_001, message: 'unauthorized: invalid credentials' },
328
+ id: null,
329
+ jsonrpc: '2.0',
330
+ },
331
+ { status: 403 },
332
+ ),
333
+ ),
334
+ )
335
+
336
+ try {
337
+ const app = TestApp.create({
338
+ auth: false,
339
+ logger: (entry) => void entries.push(entry),
340
+ rpc: { url: server.url },
341
+ })
342
+ const response = await app.fetch(
343
+ new Request('http://tempo-api.test/rpc', {
344
+ body: JSON.stringify({ id: 1, jsonrpc: '2.0', method: 'eth_chainId' }),
345
+ method: 'POST',
346
+ }),
347
+ )
348
+
349
+ expect(response.status).toBe(403)
350
+ expect(entries[0]).toMatchObject({
351
+ provider: {
352
+ chainId: runtime.chainId,
353
+ failure: 'http',
354
+ id: 'rpc',
355
+ operation: 'request',
356
+ status: 403,
357
+ },
358
+ })
359
+ } finally {
360
+ await server.closeAsync()
361
+ }
362
+ })
363
+
289
364
  test('attributes RPC transport failures to the upstream', async () => {
290
365
  const entries: Log.Entry[] = []
291
366
  const server = await Relay.createServer(
@@ -411,14 +411,14 @@ async function passthrough(
411
411
 
412
412
  try {
413
413
  const response = await fetch(new Request(upstream, init))
414
- let body = response.body
414
+ // Malformed requests and public Zone authentication failures are caused
415
+ // by caller input, not by the RPC provider.
416
+ if (!response.ok && !(await isCallerRpcFailure(response, usePublicZoneUrl)))
417
+ c.set('providerFailure', rpcProviderFailure(response, alertChainId))
415
418
 
416
- if (!response.ok) {
417
- // Malformed requests and public Zone authentication failures are caused
418
- // by caller input, not by the RPC provider.
419
- if (!isCallerRpcFailure(response.status, usePublicZoneUrl))
420
- c.set('providerFailure', rpcProviderFailure(response, alertChainId))
421
- } else if (response.status === 200) {
419
+ // `Response.clone()` replaces the body stream, so capture it after classifying errors.
420
+ let body = response.body
421
+ if (response.status === 200) {
422
422
  const inspection = await inspectRpcResponse(response)
423
423
  body = inspection.body
424
424
  if (inspection.result?.ok === false && !(inspection.result.empty && options.notificationOnly))
@@ -455,14 +455,28 @@ async function passthrough(
455
455
  }
456
456
  }
457
457
 
458
- function isCallerRpcFailure(status: number, usePublicZoneUrl: boolean) {
459
- return (
458
+ async function isCallerRpcFailure(response: globalThis.Response, usePublicZoneUrl: boolean) {
459
+ const { status } = response
460
+ if (
460
461
  status === 400 ||
461
462
  status === 413 ||
462
463
  status === 415 ||
463
464
  status === 422 ||
464
465
  (usePublicZoneUrl && (status === 401 || status === 403))
465
466
  )
467
+ return true
468
+ if (status !== 403) return false
469
+
470
+ // Orchestra returns HTTP 403 with JSON-RPC -32601 when its method filter
471
+ // rejects caller input. Other 403s, including RPC auth failures, stay upstream failures.
472
+ const body = await response
473
+ .clone()
474
+ .json()
475
+ .catch(() => undefined)
476
+ const parsed = schema.ResponseBody.safeParse(body)
477
+ if (!parsed.success) return false
478
+ const responses = Array.isArray(parsed.data) ? parsed.data : [parsed.data]
479
+ return responses.every((response) => response.error?.code === -32_601)
466
480
  }
467
481
 
468
482
  declare namespace passthrough {
@@ -11,7 +11,7 @@ import * as Schema from '../../../internal/Schema.js'
11
11
  import * as Timing from '../../../internal/Timing.js'
12
12
  import * as VerifiedTokens from '../../../internal/VerifiedTokens.js'
13
13
  import * as Viem from '../../../internal/Viem.js'
14
- import { getTokenLogo } from './tokens.js'
14
+ import * as Tokens from './tokens.js'
15
15
 
16
16
  /** Zod schemas owned by the tokenlist resource. */
17
17
  export namespace schema {
@@ -26,15 +26,20 @@ export namespace schema {
26
26
  z.describe('The Tempo chain ID where this token lives.'),
27
27
  z.meta({ examples: [4217] }),
28
28
  ),
29
- address: Schema.Address.check(z.describe('The TIP-20 token contract address on Tempo.')),
29
+ address: Schema.tokenAddress(Tokens.tokenExample.address).check(
30
+ z.describe('The TIP-20 token contract address on Tempo.'),
31
+ ),
30
32
  name: z
31
33
  .string()
32
- .check(z.describe('The token’s human-readable name.'), z.meta({ examples: ['USD Coin'] })),
34
+ .check(
35
+ z.describe('The token’s human-readable name.'),
36
+ z.meta({ examples: [Tokens.tokenExample.name] }),
37
+ ),
33
38
  symbol: z
34
39
  .string()
35
40
  .check(
36
41
  z.describe('The short ticker symbol wallets and apps show for this token.'),
37
- z.meta({ examples: ['USDC'] }),
42
+ z.meta({ examples: [Tokens.tokenExample.symbol] }),
38
43
  ),
39
44
  decimals: z
40
45
  .number()
@@ -45,14 +50,12 @@ export namespace schema {
45
50
  z.describe(
46
51
  'The number of decimal places the token uses; Tempo stablecoins typically use 6.',
47
52
  ),
48
- z.meta({ examples: [6] }),
53
+ z.meta({ examples: [Tokens.tokenExample.decimals] }),
49
54
  ),
50
55
  logoURI: z.optional(z.string()).check(
51
56
  z.describe('The curated HTTPS URL for this token’s logo image, when one is set.'),
52
57
  z.meta({
53
- examples: [
54
- 'https://api.tempo.xyz/data/4217/icons/0x20c0000000000000000000008f5425160ebe5525.svg',
55
- ],
58
+ examples: [Tokens.tokenExample.logoUri],
56
59
  }),
57
60
  ),
58
61
  })
@@ -145,13 +148,12 @@ export function tokenlist() {
145
148
  version: { major: 1, minor: 0, patch: 2 },
146
149
  tokens: [
147
150
  {
148
- chainId: 4217,
149
- address: '0x20c0000000000000000000000000000000000000',
150
- name: 'pathUSD',
151
- symbol: 'pathUSD',
152
- decimals: 6,
153
- logoURI:
154
- 'https://api.tempo.xyz/assets/4217/tokens/0x20c0000000000000000000000000000000000000/logo',
151
+ address: Tokens.tokenExample.address,
152
+ chainId: Tokens.tokenExampleChainId,
153
+ decimals: Tokens.tokenExample.decimals,
154
+ logoURI: Tokens.tokenExample.logoUri,
155
+ name: Tokens.tokenExample.name,
156
+ symbol: Tokens.tokenExample.symbol,
155
157
  },
156
158
  ],
157
159
  },
@@ -239,9 +241,10 @@ async function getTokenLogos(
239
241
  async (token) =>
240
242
  [
241
243
  token.address,
242
- await getTokenLogo(c, { address: token.address, chainId: options.chainId }).catch(
243
- () => undefined,
244
- ),
244
+ await Tokens.getTokenLogo(c, {
245
+ address: token.address,
246
+ chainId: options.chainId,
247
+ }).catch(() => undefined),
245
248
  ] as const,
246
249
  ),
247
250
  )