tapimo 0.10.2 → 0.12.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 (386) hide show
  1. package/dist/App.d.ts +4896 -2166
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +2 -2
  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/Webhooks.d.ts +0 -75
  10. package/dist/Webhooks.d.ts.map +1 -1
  11. package/dist/Webhooks.js +1 -143
  12. package/dist/Webhooks.js.map +1 -1
  13. package/dist/admin/App.d.ts +127 -78
  14. package/dist/admin/App.d.ts.map +1 -1
  15. package/dist/admin/apps/earn-vaults.d.ts +115 -1
  16. package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
  17. package/dist/admin/apps/earn-vaults.js +59 -6
  18. package/dist/admin/apps/earn-vaults.js.map +1 -1
  19. package/dist/admin/apps/organizations.d.ts +3 -3
  20. package/dist/admin/apps/organizations.d.ts.map +1 -1
  21. package/dist/admin/apps/organizations.js +4 -2
  22. package/dist/admin/apps/organizations.js.map +1 -1
  23. package/dist/admin/apps/verified-tokens.d.ts +83 -83
  24. package/dist/admin/ui.generated.d.ts +1 -1
  25. package/dist/admin/ui.generated.d.ts.map +1 -1
  26. package/dist/admin/ui.generated.js +151 -151
  27. package/dist/admin/ui.generated.js.map +1 -1
  28. package/dist/apps/data/App.d.ts +5924 -4310
  29. package/dist/apps/data/App.d.ts.map +1 -1
  30. package/dist/apps/data/App.js +61 -9
  31. package/dist/apps/data/App.js.map +1 -1
  32. package/dist/apps/data/ZoneSelection.d.ts +62 -0
  33. package/dist/apps/data/ZoneSelection.d.ts.map +1 -0
  34. package/dist/apps/data/ZoneSelection.js +44 -0
  35. package/dist/apps/data/ZoneSelection.js.map +1 -0
  36. package/dist/apps/data/routes/activities.d.ts +2368 -5
  37. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  38. package/dist/apps/data/routes/activities.js +423 -114
  39. package/dist/apps/data/routes/activities.js.map +1 -1
  40. package/dist/apps/data/routes/addresses.d.ts +131 -0
  41. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  42. package/dist/apps/data/routes/balances.d.ts +25 -25
  43. package/dist/apps/data/routes/balances.js +1 -1
  44. package/dist/apps/data/routes/balances.js.map +1 -1
  45. package/dist/apps/data/routes/blocks.d.ts +1 -1
  46. package/dist/apps/data/routes/blocks.js +1 -1
  47. package/dist/apps/data/routes/blocks.js.map +1 -1
  48. package/dist/apps/data/routes/earn.d.ts +135 -10
  49. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  50. package/dist/apps/data/routes/earn.js +157 -25
  51. package/dist/apps/data/routes/earn.js.map +1 -1
  52. package/dist/apps/data/routes/exchanges.d.ts +829 -123
  53. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  54. package/dist/apps/data/routes/exchanges.js +16 -13
  55. package/dist/apps/data/routes/exchanges.js.map +1 -1
  56. package/dist/apps/data/routes/fee-amm.d.ts +26 -26
  57. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  58. package/dist/apps/data/routes/fee-amm.js +9 -11
  59. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  60. package/dist/apps/data/routes/receipts.d.ts +54 -54
  61. package/dist/apps/data/routes/receipts.js +1 -1
  62. package/dist/apps/data/routes/receipts.js.map +1 -1
  63. package/dist/apps/data/routes/rpc.js +24 -10
  64. package/dist/apps/data/routes/rpc.js.map +1 -1
  65. package/dist/apps/data/routes/tokenlist.d.ts +12 -12
  66. package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
  67. package/dist/apps/data/routes/tokenlist.js +16 -15
  68. package/dist/apps/data/routes/tokenlist.js.map +1 -1
  69. package/dist/apps/data/routes/tokens.d.ts +17 -3
  70. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  71. package/dist/apps/data/routes/tokens.js +34 -15
  72. package/dist/apps/data/routes/tokens.js.map +1 -1
  73. package/dist/apps/data/routes/transactions.d.ts +1 -1
  74. package/dist/apps/data/routes/transactions.js +1 -1
  75. package/dist/apps/data/routes/transactions.js.map +1 -1
  76. package/dist/apps/data/routes/transfers.d.ts +13 -13
  77. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  78. package/dist/apps/data/routes/transfers.js +7 -9
  79. package/dist/apps/data/routes/transfers.js.map +1 -1
  80. package/dist/apps/data/routes/valuation.d.ts +21 -21
  81. package/dist/apps/data/routes/verified-tokens.d.ts +5 -5
  82. package/dist/apps/data/routes/webhooks.d.ts +1011 -151
  83. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  84. package/dist/apps/data/routes/webhooks.js +126 -739
  85. package/dist/apps/data/routes/webhooks.js.map +1 -1
  86. package/dist/apps/data/routes/zones.d.ts +15 -15
  87. package/dist/apps/funding/App.d.ts +27 -27
  88. package/dist/apps/funding/routes/chains.d.ts.map +1 -1
  89. package/dist/apps/funding/routes/chains.js +5 -4
  90. package/dist/apps/funding/routes/chains.js.map +1 -1
  91. package/dist/apps/funding/routes/deposit-addresses.d.ts +18 -18
  92. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  93. package/dist/apps/funding/routes/deposit-addresses.js +8 -8
  94. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  95. package/dist/apps/funding/routes/providers.d.ts.map +1 -1
  96. package/dist/apps/funding/routes/providers.js +3 -2
  97. package/dist/apps/funding/routes/providers.js.map +1 -1
  98. package/dist/apps/funding/routes/quotes.d.ts.map +1 -1
  99. package/dist/apps/funding/routes/quotes.js +2 -2
  100. package/dist/apps/funding/routes/quotes.js.map +1 -1
  101. package/dist/apps/funding/routes/transfers.d.ts +33 -33
  102. package/dist/apps/management/App.d.ts +1433 -322
  103. package/dist/apps/management/App.d.ts.map +1 -1
  104. package/dist/apps/management/Billing.d.ts.map +1 -1
  105. package/dist/apps/management/Billing.js +19 -6
  106. package/dist/apps/management/Billing.js.map +1 -1
  107. package/dist/apps/management/routes/api-keys.d.ts +154 -94
  108. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  109. package/dist/apps/management/routes/api-keys.js +76 -30
  110. package/dist/apps/management/routes/api-keys.js.map +1 -1
  111. package/dist/apps/management/routes/billing.d.ts +103 -30
  112. package/dist/apps/management/routes/billing.d.ts.map +1 -1
  113. package/dist/apps/management/routes/billing.js +91 -32
  114. package/dist/apps/management/routes/billing.js.map +1 -1
  115. package/dist/apps/management/routes/faucet.d.ts +12 -12
  116. package/dist/apps/management/routes/faucet.d.ts.map +1 -1
  117. package/dist/apps/management/routes/faucet.js +23 -12
  118. package/dist/apps/management/routes/faucet.js.map +1 -1
  119. package/dist/apps/management/routes/invitations.d.ts +46 -13
  120. package/dist/apps/management/routes/invitations.d.ts.map +1 -1
  121. package/dist/apps/management/routes/invitations.js +79 -29
  122. package/dist/apps/management/routes/invitations.js.map +1 -1
  123. package/dist/apps/management/routes/invite-links.d.ts +128 -83
  124. package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
  125. package/dist/apps/management/routes/invite-links.js +100 -41
  126. package/dist/apps/management/routes/invite-links.js.map +1 -1
  127. package/dist/apps/management/routes/me.d.ts +5 -5
  128. package/dist/apps/management/routes/me.d.ts.map +1 -1
  129. package/dist/apps/management/routes/me.js +14 -10
  130. package/dist/apps/management/routes/me.js.map +1 -1
  131. package/dist/apps/management/routes/members.d.ts +68 -47
  132. package/dist/apps/management/routes/members.d.ts.map +1 -1
  133. package/dist/apps/management/routes/members.js +37 -18
  134. package/dist/apps/management/routes/members.js.map +1 -1
  135. package/dist/apps/management/routes/orgs.d.ts +48 -8
  136. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  137. package/dist/apps/management/routes/orgs.js +48 -19
  138. package/dist/apps/management/routes/orgs.js.map +1 -1
  139. package/dist/apps/management/routes/projects.d.ts +130 -68
  140. package/dist/apps/management/routes/projects.d.ts.map +1 -1
  141. package/dist/apps/management/routes/projects.js +72 -21
  142. package/dist/apps/management/routes/projects.js.map +1 -1
  143. package/dist/apps/management/routes/scopes.d.ts.map +1 -1
  144. package/dist/apps/management/routes/scopes.js +8 -5
  145. package/dist/apps/management/routes/scopes.js.map +1 -1
  146. package/dist/apps/management/routes/usage.d.ts +38 -38
  147. package/dist/apps/management/routes/usage.d.ts.map +1 -1
  148. package/dist/apps/management/routes/usage.js +41 -31
  149. package/dist/apps/management/routes/usage.js.map +1 -1
  150. package/dist/apps/management/routes/verified-token-requests.d.ts +34 -6
  151. package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
  152. package/dist/apps/management/routes/verified-token-requests.js +36 -17
  153. package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
  154. package/dist/apps/management/routes/webhooks.d.ts +1186 -197
  155. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  156. package/dist/apps/management/routes/webhooks.js +106 -38
  157. package/dist/apps/management/routes/webhooks.js.map +1 -1
  158. package/dist/apps/mpp/internal/Adapter.d.ts +1 -1
  159. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
  160. package/dist/apps/mpp/internal/Adapter.js +12 -0
  161. package/dist/apps/mpp/internal/Adapter.js.map +1 -1
  162. package/dist/db/Db.d.ts +2 -0
  163. package/dist/db/Db.d.ts.map +1 -1
  164. package/dist/db/Db.js +61 -0
  165. package/dist/db/Db.js.map +1 -1
  166. package/dist/db/Schema.d.ts +30 -2
  167. package/dist/db/Schema.d.ts.map +1 -1
  168. package/dist/db/Schema.js +28 -3
  169. package/dist/db/Schema.js.map +1 -1
  170. package/dist/db/tables/earnVaults.d.ts +5 -1
  171. package/dist/db/tables/earnVaults.d.ts.map +1 -1
  172. package/dist/db/tables/earnVaults.js +5 -0
  173. package/dist/db/tables/earnVaults.js.map +1 -1
  174. package/dist/db/tables/webhookDeliveries.d.ts.map +1 -1
  175. package/dist/db/tables/webhookDeliveries.js +10 -0
  176. package/dist/db/tables/webhookDeliveries.js.map +1 -1
  177. package/dist/db/tables/webhookQueueCompletions.d.ts +15 -0
  178. package/dist/db/tables/webhookQueueCompletions.d.ts.map +1 -0
  179. package/dist/db/tables/webhookQueueCompletions.js +32 -0
  180. package/dist/db/tables/webhookQueueCompletions.js.map +1 -0
  181. package/dist/db/tables/webhookQueueEvents.d.ts +16 -20
  182. package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
  183. package/dist/db/tables/webhookQueueEvents.js +68 -43
  184. package/dist/db/tables/webhookQueueEvents.js.map +1 -1
  185. package/dist/db/tables/webhookSubscriptions.d.ts +47 -72
  186. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  187. package/dist/db/tables/webhookSubscriptions.js +92 -105
  188. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  189. package/dist/internal/Auth.d.ts +8 -1
  190. package/dist/internal/Auth.d.ts.map +1 -1
  191. package/dist/internal/Auth.js +13 -3
  192. package/dist/internal/Auth.js.map +1 -1
  193. package/dist/internal/Cache.d.ts.map +1 -1
  194. package/dist/internal/Cache.js +11 -7
  195. package/dist/internal/Cache.js.map +1 -1
  196. package/dist/internal/EarnVaults.d.ts +41 -2
  197. package/dist/internal/EarnVaults.d.ts.map +1 -1
  198. package/dist/internal/EarnVaults.js +167 -0
  199. package/dist/internal/EarnVaults.js.map +1 -1
  200. package/dist/internal/MetricSink.d.ts +35 -125
  201. package/dist/internal/MetricSink.d.ts.map +1 -1
  202. package/dist/internal/MetricSink.js +50 -121
  203. package/dist/internal/MetricSink.js.map +1 -1
  204. package/dist/internal/OpenApi.d.ts +26 -22
  205. package/dist/internal/OpenApi.d.ts.map +1 -1
  206. package/dist/internal/OpenApi.js +128 -39
  207. package/dist/internal/OpenApi.js.map +1 -1
  208. package/dist/internal/Response.d.ts +13 -8
  209. package/dist/internal/Response.d.ts.map +1 -1
  210. package/dist/internal/Response.js +16 -5
  211. package/dist/internal/Response.js.map +1 -1
  212. package/dist/internal/Schema.d.ts +8 -8
  213. package/dist/internal/Schema.d.ts.map +1 -1
  214. package/dist/internal/Schema.js +10 -9
  215. package/dist/internal/Schema.js.map +1 -1
  216. package/dist/internal/Store.d.ts +15 -6
  217. package/dist/internal/Store.d.ts.map +1 -1
  218. package/dist/internal/Store.js +45 -15
  219. package/dist/internal/Store.js.map +1 -1
  220. package/dist/internal/Tidx.d.ts +2 -0
  221. package/dist/internal/Tidx.d.ts.map +1 -1
  222. package/dist/internal/Tidx.js +16 -4
  223. package/dist/internal/Tidx.js.map +1 -1
  224. package/dist/internal/WebhookTransfer.d.ts +1 -55
  225. package/dist/internal/WebhookTransfer.d.ts.map +1 -1
  226. package/dist/internal/WebhookTransfer.js +1 -239
  227. package/dist/internal/WebhookTransfer.js.map +1 -1
  228. package/dist/internal/Webhooks.d.ts +112 -56
  229. package/dist/internal/Webhooks.d.ts.map +1 -1
  230. package/dist/internal/Webhooks.js +124 -93
  231. package/dist/internal/Webhooks.js.map +1 -1
  232. package/dist/internal/funding/Deposit.d.ts +2 -2
  233. package/dist/internal/funding/Deposit.d.ts.map +1 -1
  234. package/dist/internal/funding/Deposit.js +9 -8
  235. package/dist/internal/funding/Deposit.js.map +1 -1
  236. package/dist/internal/funding/DepositAddress.d.ts +4 -4
  237. package/dist/internal/funding/DepositAddress.d.ts.map +1 -1
  238. package/dist/internal/funding/DepositAddress.js +9 -8
  239. package/dist/internal/funding/DepositAddress.js.map +1 -1
  240. package/dist/internal/funding/DepositWebhook.d.ts +25 -0
  241. package/dist/internal/funding/DepositWebhook.d.ts.map +1 -0
  242. package/dist/internal/funding/DepositWebhook.js +74 -0
  243. package/dist/internal/funding/DepositWebhook.js.map +1 -0
  244. package/dist/internal/funding/Provider.d.ts.map +1 -1
  245. package/dist/internal/funding/Provider.js +13 -12
  246. package/dist/internal/funding/Provider.js.map +1 -1
  247. package/dist/internal/funding/Reconciliation.d.ts +6 -0
  248. package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
  249. package/dist/internal/funding/Reconciliation.js +42 -10
  250. package/dist/internal/funding/Reconciliation.js.map +1 -1
  251. package/dist/internal/funding/index.d.ts +1 -0
  252. package/dist/internal/funding/index.d.ts.map +1 -1
  253. package/dist/internal/funding/index.js +1 -0
  254. package/dist/internal/funding/index.js.map +1 -1
  255. package/dist/internal/funding/providers/stargate.d.ts +19 -0
  256. package/dist/internal/funding/providers/stargate.d.ts.map +1 -0
  257. package/dist/internal/funding/providers/stargate.js +143 -0
  258. package/dist/internal/funding/providers/stargate.js.map +1 -0
  259. package/dist/internal/webhookDestinations/slack.d.ts.map +1 -1
  260. package/dist/internal/webhookDestinations/slack.js +16 -0
  261. package/dist/internal/webhookDestinations/slack.js.map +1 -1
  262. package/dist/providers/index.d.ts +7 -0
  263. package/dist/providers/index.d.ts.map +1 -1
  264. package/dist/providers/index.js +3 -0
  265. package/dist/providers/index.js.map +1 -1
  266. package/package.json +2 -2
  267. package/src/App.test.ts +48 -0
  268. package/src/App.ts +7 -2
  269. package/src/Assets.test.ts +18 -0
  270. package/src/Assets.ts +22 -0
  271. package/src/Client.test-d.ts +287 -17
  272. package/src/Webhooks.ts +1 -220
  273. package/src/admin/apps/earn-vaults.test.ts +143 -0
  274. package/src/admin/apps/earn-vaults.ts +83 -6
  275. package/src/admin/apps/organizations.ts +6 -2
  276. package/src/admin/ui/src/routes/api-keys.tsx +36 -0
  277. package/src/admin/ui.generated.ts +151 -189
  278. package/src/apps/data/App.test.ts +31 -0
  279. package/src/apps/data/App.ts +64 -10
  280. package/src/apps/data/ZoneSelection.test.ts +196 -0
  281. package/src/apps/data/ZoneSelection.ts +108 -0
  282. package/src/apps/data/routes/activities.test.ts +435 -12
  283. package/src/apps/data/routes/activities.ts +562 -125
  284. package/src/apps/data/routes/balances.ts +1 -1
  285. package/src/apps/data/routes/blocks.ts +1 -1
  286. package/src/apps/data/routes/earn.test.ts +183 -23
  287. package/src/apps/data/routes/earn.ts +225 -29
  288. package/src/apps/data/routes/earn.zone-access.test.ts +46 -0
  289. package/src/apps/data/routes/exchanges.test.ts +31 -1
  290. package/src/apps/data/routes/exchanges.ts +19 -15
  291. package/src/apps/data/routes/fee-amm.ts +18 -11
  292. package/src/apps/data/routes/receipts.ts +1 -1
  293. package/src/apps/data/routes/rpc.test.ts +75 -0
  294. package/src/apps/data/routes/rpc.ts +23 -9
  295. package/src/apps/data/routes/tokenlist.ts +21 -18
  296. package/src/apps/data/routes/tokens.test.ts +29 -0
  297. package/src/apps/data/routes/tokens.ts +38 -15
  298. package/src/apps/data/routes/transactions.ts +1 -1
  299. package/src/apps/data/routes/transfers.test.ts +3 -3
  300. package/src/apps/data/routes/transfers.ts +12 -9
  301. package/src/apps/data/routes/webhooks.test.ts +179 -1497
  302. package/src/apps/data/routes/webhooks.ts +156 -976
  303. package/src/apps/data/routes/zones.test.ts +19 -13
  304. package/src/apps/funding/routes/chains.test.ts +211 -7
  305. package/src/apps/funding/routes/chains.ts +19 -12
  306. package/src/apps/funding/routes/deposit-addresses.test.ts +394 -0
  307. package/src/apps/funding/routes/deposit-addresses.ts +84 -72
  308. package/src/apps/funding/routes/providers.ts +9 -5
  309. package/src/apps/funding/routes/quotes.test.ts +46 -0
  310. package/src/apps/funding/routes/quotes.ts +8 -5
  311. package/src/apps/funding/routes/transfers.test.ts +35 -32
  312. package/src/apps/management/Billing.test.ts +26 -0
  313. package/src/apps/management/Billing.ts +24 -7
  314. package/src/apps/management/routes/api-keys.test.ts +178 -0
  315. package/src/apps/management/routes/api-keys.ts +203 -144
  316. package/src/apps/management/routes/billing.test.ts +209 -0
  317. package/src/apps/management/routes/billing.ts +254 -177
  318. package/src/apps/management/routes/faucet.test.ts +39 -0
  319. package/src/apps/management/routes/faucet.ts +75 -41
  320. package/src/apps/management/routes/invitations.test.ts +216 -0
  321. package/src/apps/management/routes/invitations.ts +186 -109
  322. package/src/apps/management/routes/invite-links.test.ts +263 -1
  323. package/src/apps/management/routes/invite-links.ts +295 -214
  324. package/src/apps/management/routes/me.test.ts +49 -0
  325. package/src/apps/management/routes/me.ts +42 -32
  326. package/src/apps/management/routes/members.test.ts +124 -1
  327. package/src/apps/management/routes/members.ts +81 -51
  328. package/src/apps/management/routes/orgs.test.ts +176 -0
  329. package/src/apps/management/routes/orgs.ts +101 -59
  330. package/src/apps/management/routes/projects.test.ts +183 -0
  331. package/src/apps/management/routes/projects.ts +124 -60
  332. package/src/apps/management/routes/scopes.test.ts +44 -0
  333. package/src/apps/management/routes/scopes.ts +37 -28
  334. package/src/apps/management/routes/usage.test.ts +92 -0
  335. package/src/apps/management/routes/usage.ts +186 -151
  336. package/src/apps/management/routes/verified-token-requests.test.ts +114 -0
  337. package/src/apps/management/routes/verified-token-requests.ts +166 -133
  338. package/src/apps/management/routes/webhooks.test.ts +313 -1
  339. package/src/apps/management/routes/webhooks.ts +220 -71
  340. package/src/apps/mpp/internal/Adapter.ts +13 -1
  341. package/src/db/Db.test.ts +42 -5
  342. package/src/db/Db.ts +85 -0
  343. package/src/db/Schema.ts +41 -3
  344. package/src/db/tables/earnVaults.test.ts +22 -0
  345. package/src/db/tables/earnVaults.ts +11 -1
  346. package/src/db/tables/organizations.test.ts +5 -2
  347. package/src/db/tables/webhookDeliveries.ts +13 -0
  348. package/src/db/tables/webhookQueueCompletions.ts +55 -0
  349. package/src/db/tables/webhookQueueEvents.ts +97 -57
  350. package/src/db/tables/webhookSubscriptions.ts +134 -144
  351. package/src/internal/Auth.ts +23 -5
  352. package/src/internal/Cache.ts +14 -7
  353. package/src/internal/EarnVaults.capabilities.test.ts +33 -0
  354. package/src/internal/EarnVaults.test.ts +79 -0
  355. package/src/internal/EarnVaults.ts +277 -0
  356. package/src/internal/MetricSink.test.ts +41 -373
  357. package/src/internal/MetricSink.ts +92 -273
  358. package/src/internal/OpenApi.ts +165 -49
  359. package/src/internal/Response.test.ts +95 -0
  360. package/src/internal/Response.ts +40 -2
  361. package/src/internal/Schema.test.ts +34 -0
  362. package/src/internal/Schema.ts +20 -9
  363. package/src/internal/Store.test.ts +186 -0
  364. package/src/internal/Store.ts +57 -17
  365. package/src/internal/Tidx.test.ts +19 -0
  366. package/src/internal/Tidx.ts +16 -4
  367. package/src/internal/WebhookTransfer.ts +1 -351
  368. package/src/internal/Webhooks.test.ts +222 -145
  369. package/src/internal/Webhooks.ts +234 -135
  370. package/src/internal/funding/Deposit.ts +71 -64
  371. package/src/internal/funding/DepositAddress.ts +50 -43
  372. package/src/internal/funding/DepositWebhook.test.ts +131 -0
  373. package/src/internal/funding/DepositWebhook.ts +101 -0
  374. package/src/internal/funding/Provider.ts +164 -142
  375. package/src/internal/funding/Reconciliation.test.ts +14 -0
  376. package/src/internal/funding/Reconciliation.ts +161 -86
  377. package/src/internal/funding/index.test.ts +1 -0
  378. package/src/internal/funding/index.ts +1 -0
  379. package/src/internal/funding/providers/index.test.ts +185 -0
  380. package/src/internal/funding/providers/stargate.ts +184 -0
  381. package/src/internal/webhookDestinations/slack.ts +15 -0
  382. package/src/providers/index.test.ts +1 -0
  383. package/src/providers/index.ts +9 -0
  384. package/src/Webhooks.bench.ts +0 -714
  385. package/src/Webhooks.memory.bench.ts +0 -250
  386. package/src/Webhooks.test.ts +0 -146
@@ -19,28 +19,31 @@ export namespace schema {
19
19
  /** Schemas for the getRequestUsage operation. */
20
20
  export namespace getRequestUsage {
21
21
  /** Usage grouped by API key. */
22
- export const KeyBreakdown = z
23
- .object({
24
- apiKeyId: z
25
- .string()
26
- .check(
27
- z.describe('API key id (`key_…`).'),
28
- z.meta({ examples: ['key_1a2b3c4d5e6f7g8h9j0k1m2n'] }),
29
- ),
30
- averageDurationMs: z
31
- .number()
32
- .check(
33
- z.describe('Average request duration in milliseconds.'),
34
- z.meta({ examples: [12.3] }),
35
- ),
36
- errors: z
22
+ export const KeyBreakdown = OpenApi.component(
23
+ z
24
+ .object({
25
+ apiKeyId: z
26
+ .string()
27
+ .check(
28
+ z.describe('API key id (`key_…`).'),
29
+ z.meta({ examples: ['key_1a2b3c4d5e6f7g8h9j0k1m2n'] }),
30
+ ),
31
+ averageDurationMs: z
32
+ .number()
33
+ .check(
34
+ z.describe('Average request duration in milliseconds.'),
35
+ z.meta({ examples: [12.3] }),
36
+ ),
37
+ errors: z
37
38
  .number()
38
39
  .check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [3] })), // prettier-ignore
39
- requests: z
40
- .number()
41
- .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [120] })),
42
- })
43
- .check(z.describe('Usage grouped by API key.'))
40
+ requests: z
41
+ .number()
42
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [120] })),
43
+ })
44
+ .check(z.describe('Usage grouped by API key.')),
45
+ 'RequestUsageByKey',
46
+ )
44
47
 
45
48
  /** Path parameters addressing one organization's usage. */
46
49
  export const Params = z
@@ -86,147 +89,165 @@ export namespace schema {
86
89
  .check(z.describe('Query parameters for request usage.'))
87
90
 
88
91
  /** Usage grouped by route. */
89
- export const RouteBreakdown = z
90
- .object({
91
- averageDurationMs: z
92
- .number()
93
- .check(
94
- z.describe('Average request duration in milliseconds.'),
95
- z.meta({ examples: [18.2] }),
96
- ),
97
- errors: z
92
+ export const RouteBreakdown = OpenApi.component(
93
+ z
94
+ .object({
95
+ averageDurationMs: z
96
+ .number()
97
+ .check(
98
+ z.describe('Average request duration in milliseconds.'),
99
+ z.meta({ examples: [18.2] }),
100
+ ),
101
+ errors: z
98
102
  .number()
99
103
  .check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [2] })), // prettier-ignore
100
- requests: z
101
- .number()
102
- .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [80] })),
103
- route: z
104
- .string()
105
- .check(
106
- z.describe('Matched route pattern.'),
107
- z.meta({ examples: ['/v1/transactions/:hash'] }),
108
- ),
109
- })
110
- .check(z.describe('Usage grouped by route.'))
104
+ requests: z
105
+ .number()
106
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [80] })),
107
+ route: z
108
+ .string()
109
+ .check(
110
+ z.describe('Matched route pattern.'),
111
+ z.meta({ examples: ['/v1/transactions/:hash'] }),
112
+ ),
113
+ })
114
+ .check(z.describe('Usage grouped by route.')),
115
+ 'RequestUsageByRoute',
116
+ )
111
117
 
112
118
  /** One usage series point. */
113
- export const SeriesPoint = z
114
- .object({
115
- errors: z
119
+ export const SeriesPoint = OpenApi.component(
120
+ z
121
+ .object({
122
+ errors: z
116
123
  .number()
117
124
  .check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [1] })), // prettier-ignore
118
- requests: z
119
- .number()
120
- .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [40] })),
121
- time: z
122
- .string()
123
- .check(
124
- z.describe('Bucket start timestamp (ISO 8601).'),
125
- z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
126
- ),
127
- })
128
- .check(z.describe('One usage series point.'))
125
+ requests: z
126
+ .number()
127
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [40] })),
128
+ time: z.iso
129
+ .datetime()
130
+ .check(
131
+ z.describe('Bucket start timestamp (ISO 8601).'),
132
+ z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
133
+ ),
134
+ })
135
+ .check(z.describe('One usage series point.')),
136
+ 'RequestUsageSeriesPoint',
137
+ )
129
138
 
130
139
  /** Usage grouped by status code. */
131
- export const StatusBreakdown = z
132
- .object({
133
- requests: z
134
- .number()
135
- .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [100] })),
136
- status: z
137
- .number()
138
- .check(z.int(), z.describe('HTTP status code.'), z.meta({ examples: [200] })),
139
- })
140
- .check(z.describe('Usage grouped by status code.'))
140
+ export const StatusBreakdown = OpenApi.component(
141
+ z
142
+ .object({
143
+ requests: z
144
+ .number()
145
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [100] })),
146
+ status: z
147
+ .number()
148
+ .check(z.int(), z.describe('HTTP status code.'), z.meta({ examples: [200] })),
149
+ })
150
+ .check(z.describe('Usage grouped by status code.')),
151
+ 'RequestUsageByStatus',
152
+ )
141
153
 
142
154
  /** Overall usage totals. */
143
- export const Totals = z
144
- .object({
145
- averageDurationMs: z
146
- .number()
147
- .check(
148
- z.describe('Average request duration in milliseconds.'),
149
- z.meta({ examples: [15.6] }),
150
- ),
151
- errors: z
155
+ export const Totals = OpenApi.component(
156
+ z
157
+ .object({
158
+ averageDurationMs: z
159
+ .number()
160
+ .check(
161
+ z.describe('Average request duration in milliseconds.'),
162
+ z.meta({ examples: [15.6] }),
163
+ ),
164
+ errors: z
152
165
  .number()
153
166
  .check(z.int(), z.describe('Requests whose status was at least 400.'), z.meta({ examples: [5] })), // prettier-ignore
154
- requests: z
155
- .number()
156
- .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [200] })),
157
- })
158
- .check(z.describe('Overall usage totals.'))
167
+ requests: z
168
+ .number()
169
+ .check(z.int(), z.describe('Total requests.'), z.meta({ examples: [200] })),
170
+ })
171
+ .check(z.describe('Overall usage totals.')),
172
+ 'RequestUsageTotals',
173
+ )
159
174
 
160
175
  /** Request usage. */
161
- export const Response = Schema.describe(
162
- z.object({
163
- byKey: z.array(KeyBreakdown).check(z.describe('Usage grouped by API key.')),
164
- byRoute: z.array(RouteBreakdown).check(z.describe('Usage grouped by route.')),
165
- byStatus: z.array(StatusBreakdown).check(z.describe('Usage grouped by status code.')),
166
- from: z
167
- .string()
168
- .check(
169
- z.describe('Inclusive lower timestamp bound used for the read (ISO 8601).'),
170
- z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
171
- ),
172
- interval: z
173
- .enum(['day', 'hour'])
174
- .check(
175
- z.describe('Bucket size used for the time series.'),
176
- z.meta({ examples: ['day'] }),
177
- ),
178
- series: z.array(SeriesPoint).check(z.describe('Usage grouped into time buckets.')),
179
- to: z
180
- .string()
181
- .check(
182
- z.describe('Inclusive upper timestamp bound used for the read (ISO 8601).'),
183
- z.meta({ examples: ['2026-01-31T23:59:59.000Z'] }),
184
- ),
185
- totals: Totals,
186
- }),
187
- 'Request usage.',
176
+ export const Response = OpenApi.component(
177
+ Schema.describe(
178
+ z.object({
179
+ byKey: z.array(KeyBreakdown).check(z.describe('Usage grouped by API key.'), z.meta({ examples: [[]] })), // prettier-ignore
180
+ byRoute: z.array(RouteBreakdown).check(z.describe('Usage grouped by route.'), z.meta({ examples: [[]] })), // prettier-ignore
181
+ byStatus: z.array(StatusBreakdown).check(z.describe('Usage grouped by status code.'), z.meta({ examples: [[]] })), // prettier-ignore
182
+ from: z.iso
183
+ .datetime()
184
+ .check(
185
+ z.describe('Inclusive lower timestamp bound used for the read (ISO 8601).'),
186
+ z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
187
+ ),
188
+ interval: z
189
+ .enum(['day', 'hour'])
190
+ .check(
191
+ z.describe('Bucket size used for the time series.'),
192
+ z.meta({ examples: ['day'] }),
193
+ ),
194
+ series: z.array(SeriesPoint).check(z.describe('Usage grouped into time buckets.'), z.meta({ examples: [[]] })), // prettier-ignore
195
+ to: z.iso
196
+ .datetime()
197
+ .check(
198
+ z.describe('Inclusive upper timestamp bound used for the read (ISO 8601).'),
199
+ z.meta({ examples: ['2026-01-31T23:59:59.000Z'] }),
200
+ ),
201
+ totals: Totals,
202
+ }),
203
+ 'Request usage.',
204
+ ),
205
+ 'RequestUsage',
188
206
  )
189
207
  }
190
208
 
191
209
  /** Schemas for the getSponsorshipUsage operation. */
192
210
  export namespace getSponsorshipUsage {
193
211
  /** One time bucket of sponsorship usage. */
194
- export const Bucket = Schema.describe(
195
- z.object({
196
- count: z
197
- .number()
198
- .check(
199
- z.describe('Sponsored transactions recorded in the bucket, any status.'),
200
- z.meta({ examples: [42] }),
201
- ),
202
- failed: z
203
- .number()
204
- .check(
205
- z.describe('Sponsored transactions in the bucket whose status is `failed`.'),
206
- z.meta({ examples: [3] }),
207
- ),
208
- feeTotal: z
209
- .object({
210
- amount: z.string().check(
211
- z.describe('Committed fees as a decimal string: finalized fees plus in-flight fee caps; failed rows contribute zero.'), // prettier-ignore
212
- z.meta({ examples: ['12.34'] }),
212
+ export const Bucket = OpenApi.component(
213
+ Schema.describe(
214
+ z.object({
215
+ count: z
216
+ .number()
217
+ .check(
218
+ z.describe('Sponsored transactions recorded in the bucket, any status.'),
219
+ z.meta({ examples: [42] }),
213
220
  ),
214
- currency: z
215
- .enum(BillingSettings.currencies)
216
- .check(z.describe('Currency of the fee figure.'), z.meta({ examples: ['usd'] })),
217
- })
218
- .check(
219
- z.describe('Committed fees for the bucket.'),
220
- z.meta({ examples: [{ amount: '12.34', currency: 'usd' }] }),
221
- ),
222
- timestamp: z
223
- .string()
224
- .check(
225
- z.describe('Bucket start (ISO 8601), aligned to UTC calendar boundaries.'),
226
- z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
227
- ),
228
- }),
229
- 'One time bucket of sponsorship usage.',
221
+ failed: z
222
+ .number()
223
+ .check(
224
+ z.describe('Sponsored transactions in the bucket whose status is `failed`.'),
225
+ z.meta({ examples: [3] }),
226
+ ),
227
+ feeTotal: z
228
+ .object({
229
+ amount: z.string().check(
230
+ z.describe('Committed fees as a decimal string: finalized fees plus in-flight fee caps; failed rows contribute zero.'), // prettier-ignore
231
+ z.meta({ examples: ['12.34'] }),
232
+ ),
233
+ currency: z
234
+ .enum(BillingSettings.currencies)
235
+ .check(z.describe('Currency of the fee figure.'), z.meta({ examples: ['usd'] })),
236
+ })
237
+ .check(
238
+ z.describe('Committed fees for the bucket.'),
239
+ z.meta({ examples: [{ amount: '12.34', currency: 'usd' }] }),
240
+ ),
241
+ timestamp: z.iso
242
+ .datetime()
243
+ .check(
244
+ z.describe('Bucket start (ISO 8601), aligned to UTC calendar boundaries.'),
245
+ z.meta({ examples: ['2026-01-01T00:00:00.000Z'] }),
246
+ ),
247
+ }),
248
+ 'One time bucket of sponsorship usage.',
249
+ ),
250
+ 'SponsorshipUsageBucket',
230
251
  )
231
252
 
232
253
  /** Path parameters addressing one organization's usage. */
@@ -278,15 +299,19 @@ export namespace schema {
278
299
  .check(z.describe('Query parameters scoping the sponsorship usage series.'))
279
300
 
280
301
  /** Sponsorship usage bucketed over time. */
281
- export const Response = Schema.describe(
282
- z.object({
283
- data: z
284
- .array(Bucket)
285
- .check(
286
- z.describe('Time-ordered usage buckets; buckets with no sponsorships are omitted.'),
287
- ),
288
- }),
289
- 'Sponsorship usage bucketed over time.',
302
+ export const Response = OpenApi.component(
303
+ Schema.describe(
304
+ z.object({
305
+ data: z
306
+ .array(Bucket)
307
+ .check(
308
+ z.describe('Time-ordered usage buckets; buckets with no sponsorships are omitted.'),
309
+ z.meta({ examples: [[]] }),
310
+ ),
311
+ }),
312
+ 'Sponsorship usage bucketed over time.',
313
+ ),
314
+ 'SponsorshipUsage',
290
315
  )
291
316
  }
292
317
  }
@@ -310,7 +335,10 @@ export function usage() {
310
335
  operationId: 'getRequestUsage',
311
336
  responses: OpenApi.responses({
312
337
  errors: {
313
- 400: { codes: ['query_invalid'], description: 'Invalid query parameters.' },
338
+ 400: {
339
+ codes: ['param_invalid', 'query_invalid'],
340
+ description: 'Malformed API key, invalid path, or invalid query.',
341
+ },
314
342
  404: {
315
343
  codes: ['organization_not_found'],
316
344
  description: 'No accessible organization was found for this id.',
@@ -414,7 +442,14 @@ export function usage() {
414
442
  operationId: 'getSponsorshipUsage',
415
443
  responses: OpenApi.responses({
416
444
  errors: {
417
- 404: 'No accessible organization was found for this id.',
445
+ 400: {
446
+ codes: ['param_invalid', 'query_invalid'],
447
+ description: 'Malformed API key, invalid path, or invalid query.',
448
+ },
449
+ 404: {
450
+ codes: ['organization_not_found'],
451
+ description: 'No accessible organization was found for this id.',
452
+ },
418
453
  },
419
454
  success: {
420
455
  description: "The organization's sponsorship usage series.",
@@ -52,6 +52,120 @@ const token = {
52
52
  symbol: 'tUSD',
53
53
  } satisfies Partial<z.input<typeof schema.CreateBody>>
54
54
 
55
+ test('publishes generator-ready OpenAPI contracts', async () => {
56
+ const { app } = createApp()
57
+ const spec = await (await app.request('/openapi.json')).json()
58
+ const collection = spec.paths['/v1/orgs/{orgId}/verified-token-requests']
59
+ const detail = spec.paths['/v1/orgs/{orgId}/verified-token-requests/{requestId}'].delete
60
+
61
+ expect({
62
+ components: [
63
+ 'CancelVerifiedTokenRequestResponse',
64
+ 'CreateVerifiedTokenRequestInput',
65
+ 'VerifiedTokenRequest',
66
+ 'VerifiedTokenRequestList',
67
+ ].filter((name) => spec.components.schemas[name]),
68
+ create: {
69
+ errors: {
70
+ 400: collection.post.responses[400].content['application/json'].schema,
71
+ 404: collection.post.responses[404].content['application/json'].schema,
72
+ 409: collection.post.responses[409].content['application/json'].schema,
73
+ },
74
+ operationId: collection.post.operationId,
75
+ request: collection.post.requestBody.content['application/json'].schema,
76
+ response: collection.post.responses[200].content['application/json'].schema,
77
+ },
78
+ delete: {
79
+ errors: {
80
+ 400: detail.responses[400].content['application/json'].schema,
81
+ 404: detail.responses[404].content['application/json'].schema,
82
+ 409: detail.responses[409].content['application/json'].schema,
83
+ },
84
+ operationId: detail.operationId,
85
+ response: detail.responses[200].content['application/json'].schema,
86
+ },
87
+ list: {
88
+ errors: {
89
+ 400: collection.get.responses[400].content['application/json'].schema,
90
+ 404: collection.get.responses[404].content['application/json'].schema,
91
+ },
92
+ operationId: collection.get.operationId,
93
+ response: collection.get.responses[200].content['application/json'].schema,
94
+ },
95
+ timestamps: {
96
+ createdAt: spec.components.schemas.VerifiedTokenRequest.properties.createdAt.format,
97
+ reviewedAt:
98
+ spec.components.schemas.VerifiedTokenRequest.properties.reviewedAt.anyOf[0].format,
99
+ updatedAt: spec.components.schemas.VerifiedTokenRequest.properties.updatedAt.format,
100
+ },
101
+ }).toMatchInlineSnapshot(`
102
+ {
103
+ "components": [
104
+ "CancelVerifiedTokenRequestResponse",
105
+ "CreateVerifiedTokenRequestInput",
106
+ "VerifiedTokenRequest",
107
+ "VerifiedTokenRequestList",
108
+ ],
109
+ "create": {
110
+ "errors": {
111
+ "400": {
112
+ "$ref": "#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError",
113
+ },
114
+ "404": {
115
+ "$ref": "#/components/schemas/OrganizationNotFoundError",
116
+ },
117
+ "409": {
118
+ "$ref": "#/components/schemas/RequestLimitReachedOrRequestPendingExistsOrVerifiedSymbolExistsOrVerifiedTokenExistsError",
119
+ },
120
+ },
121
+ "operationId": "createVerifiedTokenRequest",
122
+ "request": {
123
+ "$ref": "#/components/schemas/CreateVerifiedTokenRequestInput",
124
+ },
125
+ "response": {
126
+ "$ref": "#/components/schemas/VerifiedTokenRequest",
127
+ },
128
+ },
129
+ "delete": {
130
+ "errors": {
131
+ "400": {
132
+ "$ref": "#/components/schemas/ApiKeyMalformedOrParamInvalidError",
133
+ },
134
+ "404": {
135
+ "$ref": "#/components/schemas/OrganizationNotFoundOrVerifiedTokenRequestNotFoundError",
136
+ },
137
+ "409": {
138
+ "$ref": "#/components/schemas/RequestNotPendingError",
139
+ },
140
+ },
141
+ "operationId": "cancelVerifiedTokenRequest",
142
+ "response": {
143
+ "$ref": "#/components/schemas/CancelVerifiedTokenRequestResponse",
144
+ },
145
+ },
146
+ "list": {
147
+ "errors": {
148
+ "400": {
149
+ "$ref": "#/components/schemas/ApiKeyMalformedOrParamInvalidError",
150
+ },
151
+ "404": {
152
+ "$ref": "#/components/schemas/OrganizationNotFoundError",
153
+ },
154
+ },
155
+ "operationId": "listVerifiedTokenRequests",
156
+ "response": {
157
+ "$ref": "#/components/schemas/VerifiedTokenRequestList",
158
+ },
159
+ },
160
+ "timestamps": {
161
+ "createdAt": "date-time",
162
+ "reviewedAt": "date-time",
163
+ "updatedAt": "date-time",
164
+ },
165
+ }
166
+ `)
167
+ })
168
+
55
169
  describe('POST /v1/orgs/:orgId/verified-token-requests', () => {
56
170
  test('members submit requests', async () => {
57
171
  const db = TestApp.database()