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
@@ -2,6 +2,7 @@ import { Address, Base58, Bytes, Hash, Value as core_Value } from 'ox'
2
2
  import * as z from 'zod/mini'
3
3
 
4
4
  import * as core_Provider from '../Provider.js'
5
+ import * as OpenApi from '../OpenApi.js'
5
6
  import * as Schema from '../Schema.js'
6
7
  import * as Value from '../Value.js'
7
8
  import * as Action from './Action.js'
@@ -42,85 +43,97 @@ export namespace schema {
42
43
  export const PositiveInteger = z.string().check(z.regex(/^(?=.*[1-9])\d+$/))
43
44
 
44
45
  /** Normalized chain reference passed to funding providers. */
45
- export const ChainRef = Schema.describe(
46
- z.object({
47
- addressFormat: z
48
- .enum(['base58', 'base58check', 'hex'])
49
- .check(
50
- z.describe('Address encoding used by accounts and token identifiers on this chain.'),
51
- z.meta({ examples: ['hex'] }),
52
- ),
53
- id: z.string().check(z.describe('CAIP-2 chain id.'), z.meta({ examples: ['eip155:8453'] })),
54
- kind: z
55
- .enum(['evm', 'solana', 'tron'])
56
- .check(
57
- z.describe('Chain execution family used for provider routing.'),
58
- z.meta({ examples: ['evm'] }),
59
- ),
60
- name: z
61
- .string()
62
- .check(z.describe('Human-readable chain name.'), z.meta({ examples: ['Base'] })),
63
- }),
64
- 'A normalized chain reference for funding quotes.',
46
+ export const ChainRef = OpenApi.component(
47
+ Schema.describe(
48
+ z.object({
49
+ addressFormat: z
50
+ .enum(['base58', 'base58check', 'hex'])
51
+ .check(
52
+ z.describe('Address encoding used by accounts and token identifiers on this chain.'),
53
+ z.meta({ examples: ['hex'] }),
54
+ ),
55
+ id: z.string().check(z.describe('CAIP-2 chain id.'), z.meta({ examples: ['eip155:8453'] })),
56
+ kind: z
57
+ .enum(['evm', 'solana', 'tron'])
58
+ .check(
59
+ z.describe('Chain execution family used for provider routing.'),
60
+ z.meta({ examples: ['evm'] }),
61
+ ),
62
+ name: z
63
+ .string()
64
+ .check(z.describe('Human-readable chain name.'), z.meta({ examples: ['Base'] })),
65
+ }),
66
+ 'A normalized chain reference for funding quotes.',
67
+ ),
68
+ 'FundingChain',
65
69
  )
66
70
 
67
71
  /** Normalized token reference passed to funding providers. */
68
- export const TokenRef = Schema.describe(
69
- z.object({
70
- address: z
71
- .string()
72
- .check(
73
- z.describe('Contract address, mint, or issuer address on the token chain.'),
74
- z.meta({ examples: ['0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'] }),
75
- ),
76
- currency: z
77
- .string()
78
- .check(
79
- z.describe('Monetary denomination represented by this token.'),
80
- z.meta({ examples: ['USD'] }),
81
- ),
82
- decimals: z
83
- .number()
84
- .check(
85
- z.int(),
86
- z.gte(0),
87
- z.describe('Number of decimal places this token uses.'),
88
- z.meta({ examples: [6] }),
89
- ),
90
- name: z
91
- .string()
92
- .check(z.describe('Human-readable token name.'), z.meta({ examples: ['USD Coin'] })),
93
- standard: z
94
- .string()
95
- .check(z.describe('Token standard on the token chain.'), z.meta({ examples: ['ERC-20'] })),
96
- symbol: z
97
- .string()
98
- .check(z.describe('Short token ticker symbol.'), z.meta({ examples: ['USDC'] })),
99
- tokenKey: z.string().check(
100
- z.describe('Stable Tempo token key scoped to the token chain.'),
101
- z.meta({
102
- examples: ['eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'],
103
- }),
104
- ),
105
- verified: z
106
- .boolean()
107
- .check(
108
- z.describe('Whether Tempo recognizes this token in its funding quote inventory.'),
109
- z.meta({ examples: [true] }),
72
+ export const TokenRef = OpenApi.component(
73
+ Schema.describe(
74
+ z.object({
75
+ address: z
76
+ .string()
77
+ .check(
78
+ z.describe('Contract address, mint, or issuer address on the token chain.'),
79
+ z.meta({ examples: ['0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'] }),
80
+ ),
81
+ currency: z
82
+ .string()
83
+ .check(
84
+ z.describe('Monetary denomination represented by this token.'),
85
+ z.meta({ examples: ['USD'] }),
86
+ ),
87
+ decimals: z
88
+ .number()
89
+ .check(
90
+ z.int(),
91
+ z.gte(0),
92
+ z.describe('Number of decimal places this token uses.'),
93
+ z.meta({ examples: [6] }),
94
+ ),
95
+ name: z
96
+ .string()
97
+ .check(z.describe('Human-readable token name.'), z.meta({ examples: ['USD Coin'] })),
98
+ standard: z
99
+ .string()
100
+ .check(
101
+ z.describe('Token standard on the token chain.'),
102
+ z.meta({ examples: ['ERC-20'] }),
103
+ ),
104
+ symbol: z
105
+ .string()
106
+ .check(z.describe('Short token ticker symbol.'), z.meta({ examples: ['USDC'] })),
107
+ tokenKey: z.string().check(
108
+ z.describe('Stable Tempo token key scoped to the token chain.'),
109
+ z.meta({
110
+ examples: ['eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'],
111
+ }),
110
112
  ),
111
- }),
112
- 'A normalized token reference for funding quotes.',
113
+ verified: z
114
+ .boolean()
115
+ .check(
116
+ z.describe('Whether Tempo recognizes this token in its funding quote inventory.'),
117
+ z.meta({ examples: [true] }),
118
+ ),
119
+ }),
120
+ 'A normalized token reference for funding quotes.',
121
+ ),
122
+ 'FundingToken',
113
123
  )
114
124
 
115
125
  /** Provider identity embedded in funding resources. */
116
- export const ProviderRef = Schema.describe(
117
- z.object({
118
- id: z.string().check(z.describe('Stable provider id.'), z.meta({ examples: ['relay'] })),
119
- name: z
120
- .string()
121
- .check(z.describe('Human-readable provider name.'), z.meta({ examples: ['Relay'] })),
122
- }),
123
- 'Provider metadata embedded in a funding quote.',
126
+ export const ProviderRef = OpenApi.component(
127
+ Schema.describe(
128
+ z.object({
129
+ id: z.string().check(z.describe('Stable provider id.'), z.meta({ examples: ['relay'] })),
130
+ name: z
131
+ .string()
132
+ .check(z.describe('Human-readable provider name.'), z.meta({ examples: ['Relay'] })),
133
+ }),
134
+ 'Provider metadata embedded in a funding quote.',
135
+ ),
136
+ 'FundingProvider',
124
137
  )
125
138
 
126
139
  /** Source amount unit accepted by a funding quote request. */
@@ -264,84 +277,93 @@ export namespace schema {
264
277
  })
265
278
 
266
279
  /** Quote quality signals exposed to funding API callers. */
267
- export const FundingQuoteQuality = Schema.describe(
268
- z.object({
269
- estimatedSeconds: z
270
- .optional(z.number().check(z.int(), z.nonnegative()))
271
- .check(
272
- z.describe('Estimated settlement time in seconds, when known.'),
273
- z.meta({ examples: [2] }),
274
- ),
275
- liquiditySource: z
276
- .string()
277
- .check(
278
- z.describe('Provider source for the live quote quality signal.'),
279
- z.meta({ examples: ['providerQuote'] }),
280
- ),
281
- sourceDetail: z
282
- .optional(z.string())
283
- .check(
284
- z.describe('Provider-specific source or endpoint detail for the quality signal.'),
285
- z.meta({ examples: ['providerEndpoint'] }),
286
- ),
287
- tier: z
288
- .enum(['liquid', 'thin'])
289
- .check(
290
- z.describe('Machine-readable quote quality tier for a successful quote.'),
291
- z.meta({ examples: ['liquid'] }),
292
- ),
293
- }),
294
- 'Machine-readable liquidity, fee, and source signals for a successful quote.',
280
+ export const FundingQuoteQuality = OpenApi.component(
281
+ Schema.describe(
282
+ z.object({
283
+ estimatedSeconds: z
284
+ .optional(z.number().check(z.int(), z.nonnegative()))
285
+ .check(
286
+ z.describe('Estimated settlement time in seconds, when known.'),
287
+ z.meta({ examples: [2] }),
288
+ ),
289
+ liquiditySource: z
290
+ .string()
291
+ .check(
292
+ z.describe('Provider source for the live quote quality signal.'),
293
+ z.meta({ examples: ['providerQuote'] }),
294
+ ),
295
+ sourceDetail: z
296
+ .optional(z.string())
297
+ .check(
298
+ z.describe('Provider-specific source or endpoint detail for the quality signal.'),
299
+ z.meta({ examples: ['providerEndpoint'] }),
300
+ ),
301
+ tier: z
302
+ .enum(['liquid', 'thin'])
303
+ .check(
304
+ z.describe('Machine-readable quote quality tier for a successful quote.'),
305
+ z.meta({ examples: ['liquid'] }),
306
+ ),
307
+ }),
308
+ 'Machine-readable liquidity, fee, and source signals for a successful quote.',
309
+ ),
310
+ 'FundingQuoteQuality',
295
311
  )
296
312
 
297
313
  /** Provider quote freshness data exposed to funding API callers. */
298
- export const QuoteDetails = Schema.describe(
299
- z.object({
300
- expiresAt: z
301
- .optional(z.iso.datetime())
302
- .check(
303
- z.describe('Timestamp after which the provider quote is no longer valid.'),
304
- z.meta({ examples: ['2026-01-01T00:01:00Z'] }),
305
- ),
306
- sampledAt: z.iso
307
- .datetime()
308
- .check(
309
- z.describe('Timestamp for the live quote request.'),
310
- z.meta({ examples: ['2026-01-01T00:00:00Z'] }),
311
- ),
312
- }),
313
- 'Freshness data for a provider funding quote.',
314
+ export const QuoteDetails = OpenApi.component(
315
+ Schema.describe(
316
+ z.object({
317
+ expiresAt: z
318
+ .optional(z.iso.datetime())
319
+ .check(
320
+ z.describe('Timestamp after which the provider quote is no longer valid.'),
321
+ z.meta({ examples: ['2026-01-01T00:01:00Z'] }),
322
+ ),
323
+ sampledAt: z.iso
324
+ .datetime()
325
+ .check(
326
+ z.describe('Timestamp for the live quote request.'),
327
+ z.meta({ examples: ['2026-01-01T00:00:00Z'] }),
328
+ ),
329
+ }),
330
+ 'Freshness data for a provider funding quote.',
331
+ ),
332
+ 'FundingQuoteDetails',
314
333
  )
315
334
 
316
335
  /** Successful normalized funding quote returned to callers. */
317
- export const FundingQuote = Schema.describe(
318
- z.object({
319
- destinationAmount: Schema.TokenAmount.check(z.describe('Expected destination amount.')),
320
- destinationAmountMin: z
321
- .optional(Schema.TokenAmount)
322
- .check(
323
- z.describe(
324
- 'Provider-derived minimum destination amount. Symbiosis and Squid quotes use a fixed 1% slippage tolerance.',
336
+ export const FundingQuote = OpenApi.component(
337
+ Schema.describe(
338
+ z.object({
339
+ destinationAmount: Schema.TokenAmount.check(z.describe('Expected destination amount.')),
340
+ destinationAmountMin: z
341
+ .optional(Schema.TokenAmount)
342
+ .check(
343
+ z.describe(
344
+ 'Provider-derived minimum destination amount. Symbiosis and Squid quotes use a fixed 1% slippage tolerance.',
345
+ ),
325
346
  ),
347
+ destinationChain: ChainRef.check(
348
+ z.describe('Destination chain, always Tempo mainnet in V1.'),
326
349
  ),
327
- destinationChain: ChainRef.check(
328
- z.describe('Destination chain, always Tempo mainnet in V1.'),
329
- ),
330
- destinationToken: TokenRef.check(z.describe('Tempo token expected from this quote.')),
331
- id: z
332
- .string()
333
- .check(
334
- z.describe('Stable deterministic funding quote id.'),
335
- z.meta({ examples: ['base-usdc-tempo-usdce-relay'] }),
336
- ),
337
- provider: ProviderRef,
338
- quality: FundingQuoteQuality,
339
- quote: QuoteDetails,
340
- sourceAmount: Schema.TokenAmount,
341
- sourceChain: ChainRef.check(z.describe('Chain where the caller currently holds funds.')),
342
- sourceToken: TokenRef.check(z.describe('Token the caller currently holds.')),
343
- }),
344
- 'One successful provider-specific funding quote.',
350
+ destinationToken: TokenRef.check(z.describe('Tempo token expected from this quote.')),
351
+ id: z
352
+ .string()
353
+ .check(
354
+ z.describe('Stable deterministic funding quote id.'),
355
+ z.meta({ examples: ['base-usdc-tempo-usdce-relay'] }),
356
+ ),
357
+ provider: ProviderRef,
358
+ quality: FundingQuoteQuality,
359
+ quote: QuoteDetails,
360
+ sourceAmount: Schema.TokenAmount,
361
+ sourceChain: ChainRef.check(z.describe('Chain where the caller currently holds funds.')),
362
+ sourceToken: TokenRef.check(z.describe('Token the caller currently holds.')),
363
+ }),
364
+ 'One successful provider-specific funding quote.',
365
+ ),
366
+ 'FundingQuote',
345
367
  )
346
368
  }
347
369
 
@@ -770,9 +770,11 @@ describe('createTracker', () => {
770
770
  ).requests[0]
771
771
  if (!request) throw new Error('Expected a Relay refund request.')
772
772
  const verifyTransfers = Evidence.createVerifier({ db })
773
+ const depositUpdateVersions: number[] = []
773
774
  const first = await Reconciliation.reconcileRequest(db, {
774
775
  address,
775
776
  metrics,
777
+ onDeposit: (deposit) => depositUpdateVersions.push(deposit.version),
776
778
  request,
777
779
  verifyTransfers,
778
780
  })
@@ -784,12 +786,14 @@ describe('createTracker', () => {
784
786
  const second = await Reconciliation.reconcileRequest(db, {
785
787
  address,
786
788
  metrics,
789
+ onDeposit: (deposit) => depositUpdateVersions.push(deposit.version),
787
790
  request,
788
791
  verifyTransfers,
789
792
  })
790
793
  const duplicate = await Reconciliation.reconcileRequest(db, {
791
794
  address,
792
795
  metrics,
796
+ onDeposit: (deposit) => depositUpdateVersions.push(deposit.version),
793
797
  request,
794
798
  verifyTransfers,
795
799
  })
@@ -797,6 +801,9 @@ describe('createTracker', () => {
797
801
  depositAddressId: address.id,
798
802
  sourceTransactionHash,
799
803
  })
804
+ if (!firstRecord || !record) throw new Error('Expected reconciled funding deposits.')
805
+
806
+ expect(depositUpdateVersions).toEqual([2, firstRecord.version, 4, record.version])
800
807
 
801
808
  expect({
802
809
  counts,
@@ -1944,9 +1951,14 @@ describe('createTracker', () => {
1944
1951
  routes: [],
1945
1952
  tokens: [],
1946
1953
  })
1954
+ const dispatchedEventIds: string[][] = []
1947
1955
  const tracker = Reconciliation.createTracker({
1948
1956
  db,
1949
1957
  dispatch: async () => undefined,
1958
+ dispatchDepositUpdates: async (references) => {
1959
+ dispatchedEventIds.push(references.map((reference) => reference.eventId))
1960
+ return references.length
1961
+ },
1950
1962
  providers: [Relay.relay({ apiKey: 'relay-api-key', baseUrl: server.url })],
1951
1963
  verifyTransfers: Evidence.createVerifier({ db }),
1952
1964
  })
@@ -1970,6 +1982,8 @@ describe('createTracker', () => {
1970
1982
  { limit: 10 },
1971
1983
  )
1972
1984
 
1985
+ expect(dispatchedEventIds).toEqual([])
1986
+
1973
1987
  expect({ failures, records: records.map(Deposit.toPublic) }).toMatchInlineSnapshot(
1974
1988
  {
1975
1989
  records: [