tapimo 0.10.0 → 0.10.2

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 (295) hide show
  1. package/dist/ApiKey.d.ts +2 -1
  2. package/dist/ApiKey.d.ts.map +1 -1
  3. package/dist/ApiKeys.d.ts +4 -2
  4. package/dist/ApiKeys.d.ts.map +1 -1
  5. package/dist/ApiKeys.js +26 -1
  6. package/dist/ApiKeys.js.map +1 -1
  7. package/dist/App.d.ts +6007 -5003
  8. package/dist/App.d.ts.map +1 -1
  9. package/dist/App.js +1 -0
  10. package/dist/App.js.map +1 -1
  11. package/dist/Webhooks.d.ts +1 -1
  12. package/dist/Webhooks.d.ts.map +1 -1
  13. package/dist/Webhooks.js +6 -6
  14. package/dist/Webhooks.js.map +1 -1
  15. package/dist/admin/App.d.ts +91 -84
  16. package/dist/admin/App.d.ts.map +1 -1
  17. package/dist/admin/apps/api-keys.d.ts +22 -13
  18. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  19. package/dist/admin/apps/api-keys.js +6 -0
  20. package/dist/admin/apps/api-keys.js.map +1 -1
  21. package/dist/admin/apps/organizations.d.ts +4 -2
  22. package/dist/admin/apps/organizations.d.ts.map +1 -1
  23. package/dist/admin/ui.generated.d.ts +1 -1
  24. package/dist/admin/ui.generated.js +69 -69
  25. package/dist/admin/ui.generated.js.map +1 -1
  26. package/dist/analytics/Analytics.d.ts.map +1 -1
  27. package/dist/analytics/Analytics.js +232 -0
  28. package/dist/analytics/Analytics.js.map +1 -1
  29. package/dist/analytics/tables/requestEvents.d.ts +4 -0
  30. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  31. package/dist/analytics/tables/requestEvents.js +2 -0
  32. package/dist/analytics/tables/requestEvents.js.map +1 -1
  33. package/dist/apps/Zones.d.ts +4266 -82
  34. package/dist/apps/Zones.d.ts.map +1 -1
  35. package/dist/apps/Zones.js +27 -8
  36. package/dist/apps/Zones.js.map +1 -1
  37. package/dist/apps/data/App.d.ts +3467 -2696
  38. package/dist/apps/data/App.d.ts.map +1 -1
  39. package/dist/apps/data/App.js +2 -0
  40. package/dist/apps/data/App.js.map +1 -1
  41. package/dist/apps/data/routes/activities.d.ts +2999 -100
  42. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  43. package/dist/apps/data/routes/activities.js +340 -2
  44. package/dist/apps/data/routes/activities.js.map +1 -1
  45. package/dist/apps/data/routes/addresses.d.ts +514 -0
  46. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  47. package/dist/apps/data/routes/balances.d.ts +26 -26
  48. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  49. package/dist/apps/data/routes/balances.js +7 -3
  50. package/dist/apps/data/routes/balances.js.map +1 -1
  51. package/dist/apps/data/routes/blocks.d.ts +4 -4
  52. package/dist/apps/data/routes/earn.d.ts +75 -75
  53. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  54. package/dist/apps/data/routes/earn.js +65 -36
  55. package/dist/apps/data/routes/earn.js.map +1 -1
  56. package/dist/apps/data/routes/exchanges.d.ts +124 -120
  57. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  58. package/dist/apps/data/routes/exchanges.js +115 -77
  59. package/dist/apps/data/routes/exchanges.js.map +1 -1
  60. package/dist/apps/data/routes/fee-amm.d.ts +24 -24
  61. package/dist/apps/data/routes/indexer.d.ts +2 -1
  62. package/dist/apps/data/routes/indexer.d.ts.map +1 -1
  63. package/dist/apps/data/routes/indexer.js +3 -2
  64. package/dist/apps/data/routes/indexer.js.map +1 -1
  65. package/dist/apps/data/routes/receipts.d.ts +4 -3
  66. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  67. package/dist/apps/data/routes/receipts.js +15 -14
  68. package/dist/apps/data/routes/receipts.js.map +1 -1
  69. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  70. package/dist/apps/data/routes/rpc.js +5 -1
  71. package/dist/apps/data/routes/rpc.js.map +1 -1
  72. package/dist/apps/data/routes/tokenlist.d.ts +12 -12
  73. package/dist/apps/data/routes/tokens.d.ts +1 -1
  74. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  75. package/dist/apps/data/routes/tokens.js +4 -3
  76. package/dist/apps/data/routes/tokens.js.map +1 -1
  77. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  78. package/dist/apps/data/routes/transfers.js +25 -7
  79. package/dist/apps/data/routes/transfers.js.map +1 -1
  80. package/dist/apps/data/routes/verified-tokens.d.ts +37 -37
  81. package/dist/apps/data/routes/webhooks.d.ts +71 -1
  82. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  83. package/dist/apps/data/routes/webhooks.js +177 -23
  84. package/dist/apps/data/routes/webhooks.js.map +1 -1
  85. package/dist/apps/data/routes/zones.js +1 -1
  86. package/dist/apps/data/routes/zones.js.map +1 -1
  87. package/dist/apps/funding/App.d.ts +322 -89
  88. package/dist/apps/funding/App.d.ts.map +1 -1
  89. package/dist/apps/funding/routes/deposit-addresses.d.ts +375 -45
  90. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  91. package/dist/apps/funding/routes/deposit-addresses.js +208 -12
  92. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  93. package/dist/apps/funding/routes/transfers.d.ts +32 -32
  94. package/dist/apps/funding/routes/transfers.js +1 -1
  95. package/dist/apps/funding/routes/transfers.js.map +1 -1
  96. package/dist/apps/management/App.d.ts +418 -418
  97. package/dist/apps/management/routes/api-keys.d.ts +50 -50
  98. package/dist/apps/management/routes/billing.d.ts +72 -72
  99. package/dist/apps/management/routes/billing.js +1 -1
  100. package/dist/apps/management/routes/billing.js.map +1 -1
  101. package/dist/apps/management/routes/faucet.d.ts +8 -8
  102. package/dist/apps/management/routes/faucet.js +2 -2
  103. package/dist/apps/management/routes/faucet.js.map +1 -1
  104. package/dist/apps/management/routes/invite-links.d.ts +42 -42
  105. package/dist/apps/management/routes/me.d.ts +6 -6
  106. package/dist/apps/management/routes/members.d.ts +14 -14
  107. package/dist/apps/management/routes/projects.d.ts +40 -40
  108. package/dist/apps/management/routes/usage.d.ts +8 -8
  109. package/dist/apps/management/routes/webhooks.d.ts +49 -49
  110. package/dist/apps/mcp.d.ts.map +1 -1
  111. package/dist/apps/mcp.js +4 -1
  112. package/dist/apps/mcp.js.map +1 -1
  113. package/dist/db/Db.d.ts +2 -0
  114. package/dist/db/Db.d.ts.map +1 -1
  115. package/dist/db/Db.js +90 -0
  116. package/dist/db/Db.js.map +1 -1
  117. package/dist/db/Schema.d.ts +19 -0
  118. package/dist/db/Schema.d.ts.map +1 -1
  119. package/dist/db/Schema.js +24 -0
  120. package/dist/db/Schema.js.map +1 -1
  121. package/dist/db/tables/fundingDepositAddresses.d.ts +20 -0
  122. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -1
  123. package/dist/db/tables/fundingDepositAddresses.js +17 -0
  124. package/dist/db/tables/fundingDepositAddresses.js.map +1 -1
  125. package/dist/db/tables/fundingDeposits.d.ts +41 -0
  126. package/dist/db/tables/fundingDeposits.d.ts.map +1 -1
  127. package/dist/db/tables/fundingDeposits.js +69 -0
  128. package/dist/db/tables/fundingDeposits.js.map +1 -1
  129. package/dist/db/tables/webhookQueueEvents.d.ts +122 -0
  130. package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -0
  131. package/dist/db/tables/webhookQueueEvents.js +160 -0
  132. package/dist/db/tables/webhookQueueEvents.js.map +1 -0
  133. package/dist/db/tables/webhookSubscriptions.d.ts +2 -0
  134. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  135. package/dist/db/tables/webhookSubscriptions.js +10 -0
  136. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  137. package/dist/internal/Auth.d.ts +3 -26
  138. package/dist/internal/Auth.d.ts.map +1 -1
  139. package/dist/internal/Auth.js +6 -37
  140. package/dist/internal/Auth.js.map +1 -1
  141. package/dist/internal/Credential.d.ts +27 -0
  142. package/dist/internal/Credential.d.ts.map +1 -0
  143. package/dist/internal/Credential.js +34 -0
  144. package/dist/internal/Credential.js.map +1 -0
  145. package/dist/internal/EarnRates.js +11 -7
  146. package/dist/internal/EarnRates.js.map +1 -1
  147. package/dist/internal/Log.d.ts +8 -0
  148. package/dist/internal/Log.d.ts.map +1 -1
  149. package/dist/internal/Log.js +4 -0
  150. package/dist/internal/Log.js.map +1 -1
  151. package/dist/internal/MetricSink.d.ts +51 -0
  152. package/dist/internal/MetricSink.d.ts.map +1 -1
  153. package/dist/internal/MetricSink.js +54 -2
  154. package/dist/internal/MetricSink.js.map +1 -1
  155. package/dist/internal/RateLimit.d.ts +4 -6
  156. package/dist/internal/RateLimit.d.ts.map +1 -1
  157. package/dist/internal/RateLimit.js +15 -14
  158. package/dist/internal/RateLimit.js.map +1 -1
  159. package/dist/internal/Store.d.ts +2 -1
  160. package/dist/internal/Store.d.ts.map +1 -1
  161. package/dist/internal/Store.js +57 -18
  162. package/dist/internal/Store.js.map +1 -1
  163. package/dist/internal/Tidx.d.ts +4 -3
  164. package/dist/internal/Tidx.d.ts.map +1 -1
  165. package/dist/internal/Tidx.js +2 -2
  166. package/dist/internal/Tidx.js.map +1 -1
  167. package/dist/internal/Value.d.ts +2 -0
  168. package/dist/internal/Value.d.ts.map +1 -1
  169. package/dist/internal/Value.js +25 -0
  170. package/dist/internal/Value.js.map +1 -1
  171. package/dist/internal/Viem.d.ts +4 -3
  172. package/dist/internal/Viem.d.ts.map +1 -1
  173. package/dist/internal/Viem.js +3 -2
  174. package/dist/internal/Viem.js.map +1 -1
  175. package/dist/internal/WebhookTransfer.d.ts +20 -0
  176. package/dist/internal/WebhookTransfer.d.ts.map +1 -1
  177. package/dist/internal/WebhookTransfer.js +7 -4
  178. package/dist/internal/WebhookTransfer.js.map +1 -1
  179. package/dist/internal/Webhooks.d.ts +141 -0
  180. package/dist/internal/Webhooks.d.ts.map +1 -1
  181. package/dist/internal/Webhooks.js +139 -10
  182. package/dist/internal/Webhooks.js.map +1 -1
  183. package/dist/internal/funding/providers/relay.d.ts +3 -4
  184. package/dist/internal/funding/providers/relay.d.ts.map +1 -1
  185. package/dist/internal/funding/providers/relay.js +59 -8
  186. package/dist/internal/funding/providers/relay.js.map +1 -1
  187. package/dist/internal/index.d.ts +1 -0
  188. package/dist/internal/index.d.ts.map +1 -1
  189. package/dist/internal/index.js +1 -0
  190. package/dist/internal/index.js.map +1 -1
  191. package/package.json +3 -3
  192. package/src/ApiKeys.test.ts +20 -0
  193. package/src/ApiKeys.ts +28 -1
  194. package/src/App.test.ts +40 -8
  195. package/src/App.ts +1 -0
  196. package/src/Client.test-d.ts +34 -1
  197. package/src/Webhooks.ts +20 -18
  198. package/src/admin/apps/api-keys.test.ts +9 -0
  199. package/src/admin/apps/api-keys.ts +15 -0
  200. package/src/admin/ui/src/lib/query-client.ts +3 -2
  201. package/src/admin/ui/src/routes/api-keys.tsx +31 -9
  202. package/src/admin/ui.generated.ts +69 -69
  203. package/src/analytics/Analytics.test.ts +42 -0
  204. package/src/analytics/Analytics.ts +232 -0
  205. package/src/analytics/tables/requestEvents.ts +6 -0
  206. package/src/apps/Zones.test.ts +20 -3
  207. package/src/apps/Zones.ts +28 -8
  208. package/src/apps/composition.test.ts +2 -0
  209. package/src/apps/data/App.test.ts +2 -2
  210. package/src/apps/data/App.ts +2 -0
  211. package/src/apps/data/routes/activities.bench.ts +41 -0
  212. package/src/apps/data/routes/activities.test.ts +103 -2
  213. package/src/apps/data/routes/activities.ts +401 -2
  214. package/src/apps/data/routes/balances.bench.ts +21 -0
  215. package/src/apps/data/routes/balances.ts +7 -3
  216. package/src/apps/data/routes/blocks.bench.ts +34 -0
  217. package/src/apps/data/routes/coingecko.bench.ts +53 -0
  218. package/src/apps/data/routes/earn.bench.ts +71 -0
  219. package/src/apps/data/routes/earn.ts +66 -36
  220. package/src/apps/data/routes/exchanges.bench.ts +85 -0
  221. package/src/apps/data/routes/exchanges.test.ts +8 -3
  222. package/src/apps/data/routes/exchanges.ts +134 -82
  223. package/src/apps/data/routes/fee-amm.bench.ts +13 -0
  224. package/src/apps/data/routes/indexer.bench.ts +8 -0
  225. package/src/apps/data/routes/indexer.test.ts +2 -1
  226. package/src/apps/data/routes/indexer.ts +3 -2
  227. package/src/apps/data/routes/receipts.bench.ts +39 -0
  228. package/src/apps/data/routes/receipts.ts +16 -14
  229. package/src/apps/data/routes/rpc.bench.ts +14 -0
  230. package/src/apps/data/routes/rpc.test.ts +27 -0
  231. package/src/apps/data/routes/rpc.ts +5 -1
  232. package/src/apps/data/routes/tokenlist.bench.ts +3 -0
  233. package/src/apps/data/routes/tokens.bench.ts +76 -0
  234. package/src/apps/data/routes/tokens.ts +3 -2
  235. package/src/apps/data/routes/transactions.bench.ts +48 -0
  236. package/src/apps/data/routes/transfers.bench.ts +28 -0
  237. package/src/apps/data/routes/transfers.ts +36 -10
  238. package/src/apps/data/routes/valuation.bench.ts +14 -0
  239. package/src/apps/data/routes/verified-tokens.bench.ts +8 -0
  240. package/src/apps/data/routes/webhooks.bench.ts +26 -0
  241. package/src/apps/data/routes/webhooks.scan.test.ts +326 -0
  242. package/src/apps/data/routes/webhooks.test.ts +53 -6
  243. package/src/apps/data/routes/webhooks.ts +252 -24
  244. package/src/apps/data/routes/zones.bench.ts +32 -0
  245. package/src/apps/data/routes/zones.test.ts +1 -1
  246. package/src/apps/data/routes/zones.ts +1 -1
  247. package/src/apps/funding/routes/chains.test.ts +1 -1
  248. package/src/apps/funding/routes/deposit-addresses.test.ts +217 -3
  249. package/src/apps/funding/routes/deposit-addresses.ts +255 -19
  250. package/src/apps/funding/routes/providers.test.ts +1 -1
  251. package/src/apps/funding/routes/quotes.test.ts +1 -1
  252. package/src/apps/funding/routes/transfers.test.ts +20 -8
  253. package/src/apps/funding/routes/transfers.ts +1 -1
  254. package/src/apps/management/routes/billing.ts +1 -1
  255. package/src/apps/management/routes/faucet.ts +2 -2
  256. package/src/apps/management/routes/me.test.ts +31 -0
  257. package/src/apps/mcp.ts +4 -1
  258. package/src/db/Db.ts +117 -0
  259. package/src/db/Schema.ts +32 -0
  260. package/src/db/tables/fundingDepositAddresses.test.ts +28 -0
  261. package/src/db/tables/fundingDepositAddresses.ts +39 -0
  262. package/src/db/tables/fundingDeposits.test.ts +82 -0
  263. package/src/db/tables/fundingDeposits.ts +130 -0
  264. package/src/db/tables/webhookQueueEvents.ts +285 -0
  265. package/src/db/tables/webhookSubscriptions.ts +15 -0
  266. package/src/internal/Auth.test.ts +61 -98
  267. package/src/internal/Auth.ts +9 -63
  268. package/src/internal/Credential.test.ts +51 -0
  269. package/src/internal/Credential.ts +58 -0
  270. package/src/internal/EarnRates.ts +13 -7
  271. package/src/internal/EarnVaults.test.ts +2 -2
  272. package/src/internal/Log.test.ts +3 -1
  273. package/src/internal/Log.ts +14 -0
  274. package/src/internal/MetricSink.test.ts +108 -2
  275. package/src/internal/MetricSink.ts +112 -2
  276. package/src/internal/RateLimit.test.ts +23 -18
  277. package/src/internal/RateLimit.ts +23 -15
  278. package/src/internal/Store.test.ts +99 -13
  279. package/src/internal/Store.ts +52 -17
  280. package/src/internal/Tidx.test.ts +4 -4
  281. package/src/internal/Tidx.ts +5 -4
  282. package/src/internal/Value.test.ts +25 -0
  283. package/src/internal/Value.ts +29 -0
  284. package/src/internal/Viem.test.ts +4 -0
  285. package/src/internal/Viem.ts +6 -4
  286. package/src/internal/WebhookTransfer.test.ts +89 -0
  287. package/src/internal/WebhookTransfer.ts +11 -7
  288. package/src/internal/Webhooks.test.ts +488 -0
  289. package/src/internal/Webhooks.ts +291 -10
  290. package/src/internal/funding/Provider.test.ts +1 -1
  291. package/src/internal/funding/providers/index.test.ts +73 -3
  292. package/src/internal/funding/providers/relay.test.ts +1 -5
  293. package/src/internal/funding/providers/relay.ts +56 -12
  294. package/src/internal/index.test.ts +1 -0
  295. package/src/internal/index.ts +1 -0
@@ -248,6 +248,146 @@ export namespace schema {
248
248
 
249
249
  /** The classified activity item variants (discriminated by `type`). */
250
250
  export const items = [
251
+ z
252
+ .object({
253
+ ...base,
254
+ data: z.object({
255
+ assets: Schema.DecimalString,
256
+ caller: Schema.Address,
257
+ receiver: Schema.Address,
258
+ shares: Schema.DecimalString,
259
+ signer: Signer,
260
+ status: z.literal('completed'),
261
+ vault: Schema.Address,
262
+ }),
263
+ type: z.literal('assets-deposited'),
264
+ })
265
+ .check(z.meta({ title: 'Assets deposited' })),
266
+ z
267
+ .object({
268
+ ...base,
269
+ data: z.object({
270
+ caller: Schema.Address,
271
+ receivedEngineShares: Schema.DecimalString,
272
+ receiver: Schema.Address,
273
+ requestedVenueShares: Schema.DecimalString,
274
+ shares: Schema.DecimalString,
275
+ signer: Signer,
276
+ status: z.literal('completed'),
277
+ vault: Schema.Address,
278
+ }),
279
+ type: z.literal('shares-deposited'),
280
+ })
281
+ .check(z.meta({ title: 'Shares deposited' })),
282
+ z
283
+ .object({
284
+ ...base,
285
+ data: z.object({
286
+ assets: Schema.DecimalString,
287
+ caller: Schema.Address,
288
+ receiver: Schema.Address,
289
+ shares: Schema.DecimalString,
290
+ signer: Signer,
291
+ status: z.literal('completed'),
292
+ vault: Schema.Address,
293
+ }),
294
+ type: z.literal('shares-redeemed'),
295
+ })
296
+ .check(z.meta({ title: 'Shares redeemed' })),
297
+ z
298
+ .object({
299
+ ...base,
300
+ data: z.object({
301
+ assets: Schema.DecimalString,
302
+ caller: Schema.Address,
303
+ sharesBurned: Schema.DecimalString,
304
+ receiver: Schema.Address,
305
+ signer: Signer,
306
+ status: z.literal('completed'),
307
+ vault: Schema.Address,
308
+ }),
309
+ type: z.literal('assets-withdrawn'),
310
+ })
311
+ .check(z.meta({ title: 'Assets withdrawn' })),
312
+ z
313
+ .object({
314
+ ...base,
315
+ data: z.object({
316
+ receiver: Schema.Address,
317
+ requestId: Schema.Hash,
318
+ requester: Schema.Address,
319
+ shares: Schema.DecimalString,
320
+ signer: Signer,
321
+ status: z.literal('pending'),
322
+ vault: Schema.Address,
323
+ }),
324
+ type: z.literal('shares-redemption-requested'),
325
+ })
326
+ .check(z.meta({ title: 'Share redemption requested' })),
327
+ z
328
+ .object({
329
+ ...base,
330
+ data: z.object({
331
+ asset: Schema.Address,
332
+ assets: Schema.DecimalString,
333
+ receiver: Schema.Address,
334
+ requestId: Schema.Hash,
335
+ shares: Schema.DecimalString,
336
+ signer: Signer,
337
+ status: z.literal('completed'),
338
+ vault: Schema.Address,
339
+ }),
340
+ type: z.literal('shares-redemption-finalized'),
341
+ })
342
+ .check(z.meta({ title: 'Share redemption finalized' })),
343
+ z
344
+ .object({
345
+ ...base,
346
+ data: z.object({
347
+ receiver: Schema.Address,
348
+ requestId: Schema.Hash,
349
+ shares: Schema.DecimalString,
350
+ signer: Signer,
351
+ status: z.literal('cancelled'),
352
+ vault: Schema.Address,
353
+ }),
354
+ type: z.literal('shares-redemption-cancelled'),
355
+ })
356
+ .check(z.meta({ title: 'Share redemption cancelled' })),
357
+ z
358
+ .object({
359
+ ...base,
360
+ data: z.object({
361
+ actionId: Schema.Hash,
362
+ assets: Schema.DecimalString,
363
+ inputAmount: Schema.DecimalString,
364
+ inputToken: Schema.Address,
365
+ shares: Schema.DecimalString,
366
+ signer: Signer,
367
+ status: z.literal('completed'),
368
+ vault: Schema.Address,
369
+ zoneDepositHash: Schema.Hash,
370
+ }),
371
+ type: z.literal('private-assets-deposited'),
372
+ })
373
+ .check(z.meta({ title: 'Private assets deposited' })),
374
+ z
375
+ .object({
376
+ ...base,
377
+ data: z.object({
378
+ actionId: Schema.Hash,
379
+ assets: Schema.DecimalString,
380
+ outputAmount: Schema.DecimalString,
381
+ outputToken: Schema.Address,
382
+ shares: Schema.DecimalString,
383
+ signer: Signer,
384
+ status: z.literal('completed'),
385
+ vault: Schema.Address,
386
+ zoneDepositHash: Schema.Hash,
387
+ }),
388
+ type: z.literal('private-shares-redeemed'),
389
+ })
390
+ .check(z.meta({ title: 'Private shares redeemed' })),
251
391
  z
252
392
  .object({
253
393
  ...base,
@@ -1550,9 +1690,11 @@ type RawItem = {
1550
1690
  * OpenAPI schema titles. Used to stamp {@link Item.title} during {@link list}.
1551
1691
  */
1552
1692
  const titleByType: Record<Item['type'], string> = {
1553
- approval: 'Allowance approved',
1554
1693
  'access-key-created': 'Access key created',
1555
1694
  'access-key-revoked': 'Access key revoked',
1695
+ approval: 'Allowance approved',
1696
+ 'assets-deposited': 'Assets deposited',
1697
+ 'assets-withdrawn': 'Assets withdrawn',
1556
1698
  'blacklist-updated': 'Blacklist updated',
1557
1699
  burn: 'Token burned',
1558
1700
  'burn-blocked': 'Burn blocked',
@@ -1581,11 +1723,18 @@ const titleByType: Record<Item['type'], string> = {
1581
1723
  'pair-created': 'Trading pair created',
1582
1724
  'policy-admin-set': 'Policy admin set',
1583
1725
  'policy-created': 'Policy created',
1726
+ 'private-assets-deposited': 'Private assets deposited',
1727
+ 'private-shares-redeemed': 'Private shares redeemed',
1584
1728
  'reward-distributed': 'Reward distributed',
1585
1729
  'reward-recipient-set': 'Reward recipient set',
1586
1730
  'role-admin-set': 'Role admin set',
1587
1731
  'role-membership-set': 'Role membership set',
1588
1732
  'session-closed': 'Session closed',
1733
+ 'shares-deposited': 'Shares deposited',
1734
+ 'shares-redeemed': 'Shares redeemed',
1735
+ 'shares-redemption-cancelled': 'Share redemption cancelled',
1736
+ 'shares-redemption-finalized': 'Share redemption finalized',
1737
+ 'shares-redemption-requested': 'Share redemption requested',
1589
1738
  'spending-limit-updated': 'Spending limit updated',
1590
1739
  swap: 'Tokens swapped',
1591
1740
  'token-created': 'Token created',
@@ -1624,6 +1773,15 @@ const titleByEventName: Record<string, string> = {
1624
1773
  BlacklistUpdated: 'Blacklist updated',
1625
1774
  Burn: 'Token burned',
1626
1775
  BurnBlocked: 'Burn blocked',
1776
+ Deposited: 'Assets deposited',
1777
+ EarnDeposit: 'Private assets deposited',
1778
+ EarnRedeem: 'Private shares redeemed',
1779
+ RedeemCancelled: 'Share redemption cancelled',
1780
+ RedeemFinalized: 'Share redemption finalized',
1781
+ RedeemRequested: 'Share redemption requested',
1782
+ Redeemed: 'Shares redeemed',
1783
+ VenueSharesDeposited: 'Shares deposited',
1784
+ WithdrewExact: 'Assets withdrawn',
1627
1785
  ChannelClosed: 'Channel closed',
1628
1786
  ChannelOpened: 'Channel opened',
1629
1787
  CloseRequestCancelled: 'Channel close cancelled',
@@ -2697,6 +2855,243 @@ function classifyFromLogsCore(
2697
2855
  'amount' in e.args,
2698
2856
  )
2699
2857
 
2858
+ const privateDeposit = finalEvents.find((event) => event.eventName === 'EarnDeposit')
2859
+ if (privateDeposit) {
2860
+ const args = privateDeposit.args as {
2861
+ actionId: Hex.Hex
2862
+ earnShares: bigint
2863
+ earnVault: Address.Address
2864
+ inputAmount: bigint
2865
+ inputToken: Address.Address
2866
+ vaultAssets: bigint
2867
+ zoneDepositHash: Hex.Hex
2868
+ }
2869
+ return [
2870
+ {
2871
+ ...itemBase(logIndexOfEvent(privateDeposit)),
2872
+ data: {
2873
+ actionId: args.actionId,
2874
+ assets: args.vaultAssets.toString(),
2875
+ inputAmount: args.inputAmount.toString(),
2876
+ inputToken: args.inputToken.toLowerCase() as Address.Address,
2877
+ shares: args.earnShares.toString(),
2878
+ signer,
2879
+ status: 'completed',
2880
+ vault: args.earnVault.toLowerCase() as Address.Address,
2881
+ zoneDepositHash: args.zoneDepositHash,
2882
+ },
2883
+ type: 'private-assets-deposited',
2884
+ },
2885
+ ]
2886
+ }
2887
+
2888
+ const privateRedeem = finalEvents.find((event) => event.eventName === 'EarnRedeem')
2889
+ if (privateRedeem) {
2890
+ const args = privateRedeem.args as {
2891
+ actionId: Hex.Hex
2892
+ earnShares: bigint
2893
+ earnVault: Address.Address
2894
+ outputAmount: bigint
2895
+ outputToken: Address.Address
2896
+ vaultAssets: bigint
2897
+ zoneDepositHash: Hex.Hex
2898
+ }
2899
+ return [
2900
+ {
2901
+ ...itemBase(logIndexOfEvent(privateRedeem)),
2902
+ data: {
2903
+ actionId: args.actionId,
2904
+ assets: args.vaultAssets.toString(),
2905
+ outputAmount: args.outputAmount.toString(),
2906
+ outputToken: args.outputToken.toLowerCase() as Address.Address,
2907
+ shares: args.earnShares.toString(),
2908
+ signer,
2909
+ status: 'completed',
2910
+ vault: args.earnVault.toLowerCase() as Address.Address,
2911
+ zoneDepositHash: args.zoneDepositHash,
2912
+ },
2913
+ type: 'private-shares-redeemed',
2914
+ },
2915
+ ]
2916
+ }
2917
+
2918
+ const deposited = finalEvents.find((event) => event.eventName === 'Deposited')
2919
+ if (deposited) {
2920
+ const args = deposited.args as {
2921
+ assets: bigint
2922
+ caller: Address.Address
2923
+ earnShares: bigint
2924
+ receiver: Address.Address
2925
+ }
2926
+ return [
2927
+ {
2928
+ ...itemBase(logIndexOfEvent(deposited)),
2929
+ data: {
2930
+ assets: args.assets.toString(),
2931
+ caller: args.caller.toLowerCase() as Address.Address,
2932
+ receiver: args.receiver.toLowerCase() as Address.Address,
2933
+ shares: args.earnShares.toString(),
2934
+ signer,
2935
+ status: 'completed',
2936
+ vault: deposited.address.toLowerCase() as Address.Address,
2937
+ },
2938
+ type: 'assets-deposited',
2939
+ },
2940
+ ]
2941
+ }
2942
+
2943
+ const venueDeposit = finalEvents.find((event) => event.eventName === 'VenueSharesDeposited')
2944
+ if (venueDeposit) {
2945
+ const args = venueDeposit.args as {
2946
+ caller: Address.Address
2947
+ earnShares: bigint
2948
+ receivedEngineShares: bigint
2949
+ receiver: Address.Address
2950
+ requestedVenueShares: bigint
2951
+ }
2952
+ return [
2953
+ {
2954
+ ...itemBase(logIndexOfEvent(venueDeposit)),
2955
+ data: {
2956
+ caller: args.caller.toLowerCase() as Address.Address,
2957
+ receivedEngineShares: args.receivedEngineShares.toString(),
2958
+ receiver: args.receiver.toLowerCase() as Address.Address,
2959
+ requestedVenueShares: args.requestedVenueShares.toString(),
2960
+ shares: args.earnShares.toString(),
2961
+ signer,
2962
+ status: 'completed',
2963
+ vault: venueDeposit.address.toLowerCase() as Address.Address,
2964
+ },
2965
+ type: 'shares-deposited',
2966
+ },
2967
+ ]
2968
+ }
2969
+
2970
+ const redeemed = finalEvents.find((event) => event.eventName === 'Redeemed')
2971
+ if (redeemed) {
2972
+ const args = redeemed.args as {
2973
+ assets: bigint
2974
+ caller: Address.Address
2975
+ earnShares: bigint
2976
+ receiver: Address.Address
2977
+ }
2978
+ return [
2979
+ {
2980
+ ...itemBase(logIndexOfEvent(redeemed)),
2981
+ data: {
2982
+ assets: args.assets.toString(),
2983
+ caller: args.caller.toLowerCase() as Address.Address,
2984
+ receiver: args.receiver.toLowerCase() as Address.Address,
2985
+ shares: args.earnShares.toString(),
2986
+ signer,
2987
+ status: 'completed',
2988
+ vault: redeemed.address.toLowerCase() as Address.Address,
2989
+ },
2990
+ type: 'shares-redeemed',
2991
+ },
2992
+ ]
2993
+ }
2994
+
2995
+ const withdrew = finalEvents.find((event) => event.eventName === 'WithdrewExact')
2996
+ if (withdrew) {
2997
+ const args = withdrew.args as {
2998
+ assets: bigint
2999
+ caller: Address.Address
3000
+ earnSharesBurned: bigint
3001
+ receiver: Address.Address
3002
+ }
3003
+ return [
3004
+ {
3005
+ ...itemBase(logIndexOfEvent(withdrew)),
3006
+ data: {
3007
+ assets: args.assets.toString(),
3008
+ caller: args.caller.toLowerCase() as Address.Address,
3009
+ sharesBurned: args.earnSharesBurned.toString(),
3010
+ receiver: args.receiver.toLowerCase() as Address.Address,
3011
+ signer,
3012
+ status: 'completed',
3013
+ vault: withdrew.address.toLowerCase() as Address.Address,
3014
+ },
3015
+ type: 'assets-withdrawn',
3016
+ },
3017
+ ]
3018
+ }
3019
+
3020
+ const requested = finalEvents.find((event) => event.eventName === 'RedeemRequested')
3021
+ if (requested) {
3022
+ const args = requested.args as {
3023
+ earnShares: bigint
3024
+ receiver: Address.Address
3025
+ requestId: Hex.Hex
3026
+ requester: Address.Address
3027
+ }
3028
+ return [
3029
+ {
3030
+ ...itemBase(logIndexOfEvent(requested)),
3031
+ data: {
3032
+ receiver: args.receiver.toLowerCase() as Address.Address,
3033
+ requestId: args.requestId,
3034
+ requester: args.requester.toLowerCase() as Address.Address,
3035
+ shares: args.earnShares.toString(),
3036
+ signer,
3037
+ status: 'pending',
3038
+ vault: requested.address.toLowerCase() as Address.Address,
3039
+ },
3040
+ type: 'shares-redemption-requested',
3041
+ },
3042
+ ]
3043
+ }
3044
+
3045
+ const finalized = finalEvents.find((event) => event.eventName === 'RedeemFinalized')
3046
+ if (finalized) {
3047
+ const args = finalized.args as {
3048
+ asset: Address.Address
3049
+ assets: bigint
3050
+ earnShares: bigint
3051
+ receiver: Address.Address
3052
+ requestId: Hex.Hex
3053
+ }
3054
+ return [
3055
+ {
3056
+ ...itemBase(logIndexOfEvent(finalized)),
3057
+ data: {
3058
+ asset: args.asset.toLowerCase() as Address.Address,
3059
+ assets: args.assets.toString(),
3060
+ receiver: args.receiver.toLowerCase() as Address.Address,
3061
+ requestId: args.requestId,
3062
+ shares: args.earnShares.toString(),
3063
+ signer,
3064
+ status: 'completed',
3065
+ vault: finalized.address.toLowerCase() as Address.Address,
3066
+ },
3067
+ type: 'shares-redemption-finalized',
3068
+ },
3069
+ ]
3070
+ }
3071
+
3072
+ const cancelled = finalEvents.find((event) => event.eventName === 'RedeemCancelled')
3073
+ if (cancelled) {
3074
+ const args = cancelled.args as {
3075
+ earnShares: bigint
3076
+ receiver: Address.Address
3077
+ requestId: Hex.Hex
3078
+ }
3079
+ return [
3080
+ {
3081
+ ...itemBase(logIndexOfEvent(cancelled)),
3082
+ data: {
3083
+ receiver: args.receiver.toLowerCase() as Address.Address,
3084
+ requestId: args.requestId,
3085
+ shares: args.earnShares.toString(),
3086
+ signer,
3087
+ status: 'cancelled',
3088
+ vault: cancelled.address.toLowerCase() as Address.Address,
3089
+ },
3090
+ type: 'shares-redemption-cancelled',
3091
+ },
3092
+ ]
3093
+ }
3094
+
2700
3095
  // Swap: a transfer into the DEX paired with one out of the DEX.
2701
3096
  const toDex = transfers.find((e) =>
2702
3097
  Address.isEqual((e.args as { to: Address.Address }).to, Addresses.stablecoinDex),
@@ -3954,7 +4349,11 @@ function decodeRows(rows: readonly Row[]) {
3954
4349
  transactionHash: r.txHash as `0x${string}`,
3955
4350
  transactionIndex: r.txIdx,
3956
4351
  }))
3957
- return parseEventLogs({ abi: [...Abis.abis], logs: viemLogs, strict: false })
4352
+ return parseEventLogs({
4353
+ abi: [...Abis.abis, ...Abis.earnRouter, ...Abis.earnVault],
4354
+ logs: viemLogs,
4355
+ strict: false,
4356
+ })
3958
4357
  }
3959
4358
 
3960
4359
  /**
@@ -0,0 +1,21 @@
1
+ import * as QueryBench from '../../../../test/QueryBench.js'
2
+
3
+ const address = '0x68f94cfca22e5969c0553bbeab00a2acde88939b'
4
+
5
+ QueryBench.bench({
6
+ name: 'getAddressBalances',
7
+ path: `/v1/addresses/${address}/balances`,
8
+ queries: [
9
+ 'currency=USD',
10
+ 'feeEligible=true',
11
+ 'include=totalCount',
12
+ 'valuation.currency=USD',
13
+ 'verified=true',
14
+ ],
15
+ })
16
+
17
+ QueryBench.bench({
18
+ name: 'getAddressBalance',
19
+ path: `/v1/addresses/${address}/balances/${QueryBench.pathUsd}`,
20
+ queries: ['valuation.currency=USD'],
21
+ })
@@ -374,13 +374,15 @@ export function addresses(options: addresses.Options = {}) {
374
374
  Tokens.resolveToken(c, { address: token, chainId, include: [], snapshot }),
375
375
  ),
376
376
  )
377
+ const client = c.get('getClient')(chainId)
378
+ const caller = c.get('zones').has(chainId) ? address : undefined
377
379
  const [balance, feeTokens, snapshot, resolvedToken] = await Promise.all([
378
380
  Timing.time(c, 'balance_rpc', async () => {
379
- const result = await Actions.token.getBalance(c.get('getClient')(chainId), {
381
+ const call = Actions.token.getBalance.call(client, {
380
382
  account: address,
381
383
  token,
382
384
  })
383
- return result.amount
385
+ return client.readContract({ ...call, account: caller })
384
386
  }),
385
387
  FeeAmm.feeTokenSet(c, chainId).catch(() => undefined),
386
388
  snapshotPromise,
@@ -512,16 +514,18 @@ async function getAddressBalances(
512
514
  const correctedPromise = holdingsPromise.then(async (holdings) => {
513
515
  if (holdings.length === 0) return []
514
516
  const client = c.get('getClient')(chainId)
517
+ const caller = c.get('zones').has(chainId) ? address : undefined
515
518
  return Timing.time(c, 'balances_rpc', async () => {
516
519
  // Concurrent reads enter viem's shared batch window and become one
517
520
  // deployless multicall. A failed read fails the request rather than serving
518
521
  // a stale or partial balance page.
519
522
  const results = await Promise.all(
520
523
  holdings.map(async (holding) => {
521
- const { amount } = await Actions.token.getBalance(client, {
524
+ const call = Actions.token.getBalance.call(client, {
522
525
  account: address,
523
526
  token: holding.address,
524
527
  })
528
+ const amount = await client.readContract({ ...call, account: caller })
525
529
  return amount === 0n ? undefined : { address: holding.address, amount: amount.toString() }
526
530
  }),
527
531
  )
@@ -0,0 +1,34 @@
1
+ import * as QueryBench from '../../../../test/QueryBench.js'
2
+
3
+ const fixtures = {
4
+ 4217: { number: 34_335_551, timestamp: 1_786_485_830 },
5
+ 42431: { number: 30_469_074, timestamp: 1_786_485_831 },
6
+ } as const
7
+
8
+ QueryBench.bench({ name: 'getBlocks', path: '/v1/blocks' })
9
+
10
+ QueryBench.bench({
11
+ name: 'getBlock',
12
+ path: {
13
+ 4217: `/v1/blocks/${fixtures[4217].number}`,
14
+ 42431: `/v1/blocks/${fixtures[42431].number}`,
15
+ },
16
+ })
17
+
18
+ QueryBench.bench({
19
+ chainId: false,
20
+ name: 'getBlockByTimestamp',
21
+ path: {
22
+ 4217: `/chains/4217/blocks/by-timestamp?closest=before&timestamp=${fixtures[4217].timestamp}`,
23
+ 42431: `/chains/42431/blocks/by-timestamp?closest=before&timestamp=${fixtures[42431].timestamp}`,
24
+ },
25
+ })
26
+
27
+ QueryBench.bench({
28
+ chainId: false,
29
+ name: 'getBlockByTimestamp?closest=after',
30
+ path: {
31
+ 4217: `/chains/4217/blocks/by-timestamp?closest=after&timestamp=${fixtures[4217].timestamp}`,
32
+ 42431: `/chains/42431/blocks/by-timestamp?closest=after&timestamp=${fixtures[42431].timestamp}`,
33
+ },
34
+ })
@@ -0,0 +1,53 @@
1
+ import * as QueryBench from '../../../../test/QueryBench.js'
2
+
3
+ const pairId = {
4
+ 4217: '0xc91fa403390f4eaf7f555b1ee33f54408befc79c5665728a2ac7e7ffa39c42ef',
5
+ 42431: '0xb2b3f6d58ad8554d56200ebcd347ee2461a07276b764e0c0daf56b192bc7d341',
6
+ } as const
7
+
8
+ const block = { 4217: 34_335_551, 42431: 30_469_074 } as const
9
+
10
+ QueryBench.bench({
11
+ chainId: false,
12
+ name: 'coingeckoLatestBlock',
13
+ path: { 4217: '/gecko/4217/latest-block', 42431: '/gecko/42431/latest-block' },
14
+ })
15
+
16
+ QueryBench.bench({
17
+ chainId: false,
18
+ name: 'coingeckoAsset',
19
+ path: {
20
+ 4217: `/gecko/4217/assets/${QueryBench.pathUsd}`,
21
+ 42431: `/gecko/42431/assets/${QueryBench.pathUsd}`,
22
+ },
23
+ })
24
+
25
+ QueryBench.bench({
26
+ chainId: false,
27
+ name: 'coingeckoPairs',
28
+ path: { 4217: '/gecko/4217/pairs', 42431: '/gecko/42431/pairs' },
29
+ })
30
+
31
+ QueryBench.bench({
32
+ chainId: false,
33
+ name: 'coingeckoPair',
34
+ path: {
35
+ 4217: `/gecko/4217/pairs/${pairId[4217]}`,
36
+ 42431: `/gecko/42431/pairs/${pairId[42431]}`,
37
+ },
38
+ })
39
+
40
+ QueryBench.bench({
41
+ chainId: false,
42
+ name: 'coingeckoEvents',
43
+ path: { 4217: '/gecko/4217/events', 42431: '/gecko/42431/events' },
44
+ })
45
+
46
+ QueryBench.bench({
47
+ chainId: false,
48
+ name: 'coingeckoEvents?fromBlock&toBlock',
49
+ path: {
50
+ 4217: `/gecko/4217/events?fromBlock=${block[4217] - 100}&toBlock=${block[4217]}`,
51
+ 42431: `/gecko/42431/events?fromBlock=${block[42431] - 100}&toBlock=${block[42431]}`,
52
+ },
53
+ })
@@ -0,0 +1,71 @@
1
+ import * as QueryBench from '../../../../test/QueryBench.js'
2
+
3
+ const fixtures = {
4
+ 4217: {
5
+ address: '0xbe058e1c4df8a4366a387bf595b284246a93039e',
6
+ vault: '0xf06e5740e5c72f61a10cf8149fa145fee48e560e',
7
+ },
8
+ 42431: {
9
+ address: '0x68f94cfca22e5969c0553bbeab00a2acde88939b',
10
+ vault: '0xf4ae63687d6753a78e7f551d2eda1d0d31a5ea3a',
11
+ },
12
+ } as const
13
+
14
+ const vaultQueries = [
15
+ 'apy.window=1d',
16
+ 'include=access',
17
+ 'include=apy',
18
+ 'include=capabilities',
19
+ 'include=token.logoUri',
20
+ 'include=tvl',
21
+ 'include=zone',
22
+ ] as const
23
+
24
+ const collectionQueries = ['capability=deposit', ...vaultQueries] as const
25
+
26
+ QueryBench.bench({
27
+ name: 'getEarnVaults',
28
+ path: '/v1/earn/vaults',
29
+ queries: collectionQueries,
30
+ })
31
+
32
+ QueryBench.bench({
33
+ name: 'getVerifiedEarnVaults',
34
+ path: '/v1/earn/vaults/verified',
35
+ queries: collectionQueries,
36
+ })
37
+
38
+ QueryBench.bench({
39
+ name: 'getEarnAddressPositions',
40
+ path: {
41
+ 4217: `/v1/earn/addresses/${fixtures[4217].address}/positions`,
42
+ 42431: `/v1/earn/addresses/${fixtures[42431].address}/positions`,
43
+ },
44
+ queries: ['valuation.currency=USD', 'verified=true'],
45
+ })
46
+
47
+ QueryBench.bench({
48
+ name: 'getEarnVaultPosition',
49
+ path: {
50
+ 4217: `/v1/earn/vaults/${fixtures[4217].vault}/positions/${fixtures[4217].address}`,
51
+ 42431: `/v1/earn/vaults/${fixtures[42431].vault}/positions/${fixtures[42431].address}`,
52
+ },
53
+ })
54
+
55
+ QueryBench.bench({
56
+ name: 'getEarnVaultEarnings',
57
+ path: {
58
+ 4217: `/v1/earn/vaults/${fixtures[4217].vault}/earnings/${fixtures[4217].address}`,
59
+ 42431: `/v1/earn/vaults/${fixtures[42431].vault}/earnings/${fixtures[42431].address}`,
60
+ },
61
+ queries: ['period=30d', 'period=active'],
62
+ })
63
+
64
+ QueryBench.bench({
65
+ name: 'getEarnVault',
66
+ path: {
67
+ 4217: `/v1/earn/vaults/${fixtures[4217].vault}`,
68
+ 42431: `/v1/earn/vaults/${fixtures[42431].vault}`,
69
+ },
70
+ queries: vaultQueries,
71
+ })