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
@@ -473,7 +473,7 @@ describe('requests', () => {
473
473
  })
474
474
 
475
475
  describe('webhooks', () => {
476
- test('records recovery, poll-cycle, poll-stage, and failed-tick telemetry with bounded tags', () => {
476
+ test('records scan pipeline blocks, backlog, and finality lag', () => {
477
477
  const events: MetricEvent[] = []
478
478
  const metrics = Metrics.from({
479
479
  count(name, value, tags) {
@@ -483,205 +483,67 @@ describe('webhooks', () => {
483
483
  gauge(name, value, tags) {
484
484
  events.push({ name, tags, type: 'gauge', value })
485
485
  },
486
- histogram(name, value, tags) {
487
- events.push({ name, tags, type: 'histogram', value })
488
- },
486
+ histogram() {},
489
487
  })
490
488
  const sink = MetricSink.webhooks(metrics)
491
489
 
492
- sink.record({
493
- chainId: 4217,
494
- dequeuedAt: 1_300,
495
- enqueuedAt: 1_100,
496
- trigger: 'alarm',
497
- type: 'webhook:head-recovery',
498
- })
499
- sink.record({
500
- chainId: 4217,
501
- lagBlocks: 2,
502
- type: 'webhook:head-progress',
503
- })
504
- sink.record({
505
- chainId: 4217,
506
- delayMs: 200,
507
- trigger: 'direct',
508
- type: 'webhook:poll-start',
509
- })
510
- sink.record({
511
- chainId: 4217,
512
- outcome: 'ok',
513
- requestedBoundaryAdvanceBlocks: 10,
514
- trigger: 'direct',
515
- type: 'webhook:poll-cycle',
516
- })
517
- sink.record({
518
- chainId: 4217,
519
- failure: 'remote',
520
- stage: 'finish',
521
- trigger: 'direct',
522
- type: 'webhook:poll-failure',
523
- })
524
- sink.record({
525
- chainId: 4217,
526
- durationMs: 42,
527
- eventType: 'token:transfer',
528
- outcome: 'ok',
529
- stage: 'scan',
530
- type: 'webhook:poll',
531
- })
532
- sink.record({
533
- cursorLagBlocks: 7,
534
- meta: { chainId: 4217, durationMs: 50, outcome: 'error' },
535
- result: undefined,
536
- type: 'webhook:tick',
537
- })
490
+ sink.record({ chainId: 42431, deferred: false, matches: 3, origin: 'socket', outcome: 'dispatched', type: 'webhook:scan-block', workMs: 12 }) // prettier-ignore
491
+ sink.record({ chainId: 42431, deferred: true, matches: 0, origin: 'poll', outcome: 'deferred', type: 'webhook:scan-block', workMs: 3 }) // prettier-ignore
492
+ sink.record({ chainId: 42431, oldestPendingAgeMs: 5_000, pendingCount: 2, type: 'webhook:scan-backlog', watermarkLagBlocks: 7 }) // prettier-ignore
493
+ sink.record({ chainId: 42431, lagBlocks: 1, type: 'webhook:scan-finality' })
538
494
 
539
- expect(events).toMatchInlineSnapshot(`
540
- [
541
- {
542
- "name": "webhook_head_recovery_queue_count",
543
- "tags": {
544
- "chain_id": "4217",
545
- "trigger": "alarm",
546
- },
547
- "type": "count",
548
- "value": 1,
549
- },
550
- {
551
- "name": "webhook_head_recovery_queue_wait_ms",
552
- "tags": {
553
- "chain_id": "4217",
554
- "trigger": "alarm",
555
- },
556
- "type": "histogram",
557
- "value": 200,
558
- },
559
- {
560
- "name": "webhook_head_progress_lag_blocks",
561
- "tags": {
562
- "chain_id": "4217",
563
- },
564
- "type": "gauge",
565
- "value": 2,
566
- },
567
- {
568
- "name": "webhook_poll_start_count",
569
- "tags": {
570
- "chain_id": "4217",
571
- "trigger": "direct",
572
- },
573
- "type": "count",
574
- "value": 1,
575
- },
576
- {
577
- "name": "webhook_poll_start_delay_ms",
578
- "tags": {
579
- "chain_id": "4217",
580
- "trigger": "direct",
581
- },
582
- "type": "histogram",
583
- "value": 200,
584
- },
585
- {
586
- "name": "webhook_poll_cycle_count",
587
- "tags": {
588
- "chain_id": "4217",
589
- "outcome": "ok",
590
- "trigger": "direct",
591
- },
592
- "type": "count",
593
- "value": 1,
594
- },
595
- {
596
- "name": "webhook_poll_requested_boundary_advance_blocks",
597
- "tags": {
598
- "chain_id": "4217",
599
- "outcome": "ok",
600
- "trigger": "direct",
601
- },
602
- "type": "histogram",
603
- "value": 10,
604
- },
605
- {
606
- "name": "webhook_poll_failure_count",
607
- "tags": {
608
- "chain_id": "4217",
609
- "failure": "remote",
610
- "stage": "finish",
611
- "trigger": "direct",
612
- },
613
- "type": "count",
614
- "value": 1,
615
- },
616
- {
617
- "name": "webhook_poller_stage_duration_ms",
618
- "tags": {
619
- "chain_id": "4217",
620
- "event_type": "token:transfer",
621
- "outcome": "ok",
622
- "stage": "scan",
623
- },
624
- "type": "histogram",
625
- "value": 42,
626
- },
627
- {
628
- "name": "webhook_poller_tick_count",
629
- "tags": {
630
- "chain_id": "4217",
631
- "outcome": "error",
632
- },
633
- "type": "count",
634
- "value": 1,
635
- },
636
- {
637
- "name": "webhook_poller_tick_duration_ms",
638
- "tags": {
639
- "chain_id": "4217",
640
- "outcome": "error",
641
- },
642
- "type": "histogram",
643
- "value": 50,
644
- },
645
- {
646
- "name": "webhook_subscription_cursor_lag_blocks",
647
- "tags": {
648
- "chain_id": "4217",
649
- },
650
- "type": "gauge",
651
- "value": 7,
652
- },
653
- ]
654
- `)
495
+ expect(events.map(({ name, tags, value }) => `${name}=${value} ${JSON.stringify(tags)}`))
496
+ .toMatchInlineSnapshot(`
497
+ [
498
+ "webhook_scan_block_count=1 {"chain_id":"42431","origin":"socket","outcome":"dispatched"}",
499
+ "webhook_scan_match_count=3 {"chain_id":"42431","origin":"socket","outcome":"dispatched"}",
500
+ "webhook_scan_block_count=1 {"chain_id":"42431","origin":"poll","outcome":"deferred"}",
501
+ "webhook_scan_pending_count=2 {"chain_id":"42431"}",
502
+ "webhook_scan_oldest_pending_age_ms=5000 {"chain_id":"42431"}",
503
+ "webhook_scan_watermark_lag_blocks=7 {"chain_id":"42431"}",
504
+ "webhook_scan_finality_lag_blocks=1 {"chain_id":"42431"}",
505
+ ]
506
+ `)
655
507
  })
656
508
 
657
- test('records scan pipeline blocks, backlog, and finality lag', () => {
509
+ test('records scan timing spans and per-step attribution', () => {
658
510
  const events: MetricEvent[] = []
659
511
  const metrics = Metrics.from({
660
512
  count(name, value, tags) {
661
513
  events.push({ name, tags, type: 'count', value })
662
514
  },
663
515
  flush() {},
664
- gauge(name, value, tags) {
665
- events.push({ name, tags, type: 'gauge', value })
516
+ gauge() {},
517
+ histogram(name, value, tags) {
518
+ events.push({ name, tags, type: 'histogram', value })
666
519
  },
667
- histogram() {},
668
520
  })
669
521
  const sink = MetricSink.webhooks(metrics)
670
522
 
671
- sink.record({ chainId: 42431, matches: 3, origin: 'socket', outcome: 'dispatched', type: 'webhook:scan-block' }) // prettier-ignore
672
- sink.record({ chainId: 42431, matches: 0, origin: 'poll', outcome: 'deferred', type: 'webhook:scan-block' }) // prettier-ignore
673
- sink.record({ chainId: 42431, oldestPendingAgeMs: 5_000, pendingCount: 2, type: 'webhook:scan-backlog' }) // prettier-ignore
674
- sink.record({ chainId: 42431, lagBlocks: 1, type: 'webhook:scan-finality' })
523
+ sink.record({ chainId: 42431, deferred: false, matches: 1, observationLagMs: 600, origin: 'socket', outcome: 'dispatched', queueWaitMs: 900, scanLagMs: 1_500, type: 'webhook:scan-block', workMs: 400 }) // prettier-ignore
524
+ // A replay carries no observation, so only the block-derived spans exist.
525
+ sink.record({ chainId: 42431, deferred: false, matches: 0, origin: 'replay', outcome: 'empty', scanLagMs: 30_000_000, type: 'webhook:scan-block', workMs: 250 }) // prettier-ignore
526
+ // Batch totals: the count is what makes 180ms across two calls readable
527
+ // as a per-invocation mean rather than a slow single read.
528
+ sink.record({ chainId: 42431, count: 2, durationMs: 180, step: 'finalized_rpc', type: 'webhook:scan-step' }) // prettier-ignore
529
+ sink.record({ chainId: 42431, count: 1, durationMs: 95, step: 'subscription_read', type: 'webhook:scan-step' }) // prettier-ignore
675
530
 
676
531
  expect(events.map(({ name, tags, value }) => `${name}=${value} ${JSON.stringify(tags)}`))
677
532
  .toMatchInlineSnapshot(`
678
533
  [
679
534
  "webhook_scan_block_count=1 {"chain_id":"42431","origin":"socket","outcome":"dispatched"}",
680
- "webhook_scan_match_count=3 {"chain_id":"42431","origin":"socket","outcome":"dispatched"}",
681
- "webhook_scan_block_count=1 {"chain_id":"42431","origin":"poll","outcome":"deferred"}",
682
- "webhook_scan_pending_count=2 {"chain_id":"42431"}",
683
- "webhook_scan_oldest_pending_age_ms=5000 {"chain_id":"42431"}",
684
- "webhook_scan_finality_lag_blocks=1 {"chain_id":"42431"}",
535
+ "webhook_scan_match_count=1 {"chain_id":"42431","origin":"socket","outcome":"dispatched"}",
536
+ "webhook_scan_work_ms=400 {"chain_id":"42431","origin":"socket","outcome":"dispatched"}",
537
+ "webhook_scan_queue_wait_ms=900 {"chain_id":"42431","origin":"socket","outcome":"dispatched","deferred":"false"}",
538
+ "webhook_scan_observation_lag_ms=600 {"chain_id":"42431","origin":"socket"}",
539
+ "webhook_scan_lag_ms=1500 {"chain_id":"42431"}",
540
+ "webhook_scan_block_count=1 {"chain_id":"42431","origin":"replay","outcome":"empty"}",
541
+ "webhook_scan_work_ms=250 {"chain_id":"42431","origin":"replay","outcome":"empty"}",
542
+ "webhook_scan_lag_ms=30000000 {"chain_id":"42431"}",
543
+ "webhook_scan_step_duration_ms=180 {"chain_id":"42431","step":"finalized_rpc"}",
544
+ "webhook_scan_step_count=2 {"chain_id":"42431","step":"finalized_rpc"}",
545
+ "webhook_scan_step_duration_ms=95 {"chain_id":"42431","step":"subscription_read"}",
546
+ "webhook_scan_step_count=1 {"chain_id":"42431","step":"subscription_read"}",
685
547
  ]
686
548
  `)
687
549
  })
@@ -741,200 +603,6 @@ describe('webhooks', () => {
741
603
  `)
742
604
  })
743
605
 
744
- test('records scan boundaries with bounded workload dimensions', () => {
745
- const events: MetricEvent[] = []
746
- const metrics = Metrics.from({
747
- count(name, value, tags) {
748
- events.push({ name, tags, type: 'count', value })
749
- },
750
- flush() {},
751
- gauge() {},
752
- histogram(name, value, tags) {
753
- events.push({ name, tags, type: 'histogram', value })
754
- },
755
- })
756
- const sink = MetricSink.webhooks(metrics)
757
-
758
- sink.record({
759
- chainId: 4217,
760
- concurrency: 8,
761
- eventType: 'log:emitted',
762
- maxWindowBlocks: 1_000,
763
- phase: 'start',
764
- rpcMethod: 'eth_getLogs',
765
- subscriptionCount: 8,
766
- subscriptionLimit: 256,
767
- totalWindowBlocks: 8_000,
768
- type: 'webhook:poll-scan',
769
- })
770
- sink.record({
771
- chainId: 4217,
772
- concurrency: 8,
773
- durationMs: 250,
774
- eventType: 'log:emitted',
775
- failedSubscriptions: 1,
776
- matchedItems: 700,
777
- maxWindowBlocks: 1_000,
778
- outcome: 'error',
779
- phase: 'complete',
780
- rpcMethod: 'eth_getLogs',
781
- subscriptionCount: 8,
782
- subscriptionLimit: 256,
783
- totalWindowBlocks: 8_000,
784
- type: 'webhook:poll-scan',
785
- })
786
-
787
- expect(events.map(({ name, tags, value }) => ({ name, tags, value }))).toMatchInlineSnapshot(`
788
- [
789
- {
790
- "name": "webhook_poller_scan_checkpoint_count",
791
- "tags": {
792
- "chain_id": "4217",
793
- "event_type": "log:emitted",
794
- "phase": "start",
795
- },
796
- "value": 1,
797
- },
798
- {
799
- "name": "webhook_poller_scan_concurrency",
800
- "tags": {
801
- "chain_id": "4217",
802
- "event_type": "log:emitted",
803
- "phase": "start",
804
- },
805
- "value": 8,
806
- },
807
- {
808
- "name": "webhook_poller_scan_subscription_count",
809
- "tags": {
810
- "chain_id": "4217",
811
- "event_type": "log:emitted",
812
- "phase": "start",
813
- },
814
- "value": 8,
815
- },
816
- {
817
- "name": "webhook_poller_scan_subscription_limit",
818
- "tags": {
819
- "chain_id": "4217",
820
- "event_type": "log:emitted",
821
- "phase": "start",
822
- },
823
- "value": 256,
824
- },
825
- {
826
- "name": "webhook_poller_scan_max_window_blocks",
827
- "tags": {
828
- "chain_id": "4217",
829
- "event_type": "log:emitted",
830
- "phase": "start",
831
- },
832
- "value": 1000,
833
- },
834
- {
835
- "name": "webhook_poller_scan_total_window_blocks",
836
- "tags": {
837
- "chain_id": "4217",
838
- "event_type": "log:emitted",
839
- "phase": "start",
840
- },
841
- "value": 8000,
842
- },
843
- {
844
- "name": "webhook_poller_scan_checkpoint_count",
845
- "tags": {
846
- "chain_id": "4217",
847
- "event_type": "log:emitted",
848
- "phase": "complete",
849
- },
850
- "value": 1,
851
- },
852
- {
853
- "name": "webhook_poller_scan_concurrency",
854
- "tags": {
855
- "chain_id": "4217",
856
- "event_type": "log:emitted",
857
- "phase": "complete",
858
- },
859
- "value": 8,
860
- },
861
- {
862
- "name": "webhook_poller_scan_subscription_count",
863
- "tags": {
864
- "chain_id": "4217",
865
- "event_type": "log:emitted",
866
- "phase": "complete",
867
- },
868
- "value": 8,
869
- },
870
- {
871
- "name": "webhook_poller_scan_subscription_limit",
872
- "tags": {
873
- "chain_id": "4217",
874
- "event_type": "log:emitted",
875
- "phase": "complete",
876
- },
877
- "value": 256,
878
- },
879
- {
880
- "name": "webhook_poller_scan_max_window_blocks",
881
- "tags": {
882
- "chain_id": "4217",
883
- "event_type": "log:emitted",
884
- "phase": "complete",
885
- },
886
- "value": 1000,
887
- },
888
- {
889
- "name": "webhook_poller_scan_total_window_blocks",
890
- "tags": {
891
- "chain_id": "4217",
892
- "event_type": "log:emitted",
893
- "phase": "complete",
894
- },
895
- "value": 8000,
896
- },
897
- {
898
- "name": "webhook_poller_scan_duration_ms",
899
- "tags": {
900
- "chain_id": "4217",
901
- "event_type": "log:emitted",
902
- "phase": "complete",
903
- },
904
- "value": 250,
905
- },
906
- {
907
- "name": "webhook_poller_scan_failed_subscription_count",
908
- "tags": {
909
- "chain_id": "4217",
910
- "event_type": "log:emitted",
911
- "phase": "complete",
912
- },
913
- "value": 1,
914
- },
915
- {
916
- "name": "webhook_poller_scan_matched_item_count",
917
- "tags": {
918
- "chain_id": "4217",
919
- "event_type": "log:emitted",
920
- "phase": "complete",
921
- },
922
- "value": 700,
923
- },
924
- {
925
- "name": "webhook_poller_rpc_scan_count",
926
- "tags": {
927
- "chain_id": "4217",
928
- "event_type": "log:emitted",
929
- "outcome": "error",
930
- "rpc_method": "eth_getLogs",
931
- },
932
- "value": 1,
933
- },
934
- ]
935
- `)
936
- })
937
-
938
606
  test('records delivery stages without subscription identity', () => {
939
607
  const events: MetricEvent[] = []
940
608
  const metrics = Metrics.from({