tapimo 0.9.0 → 0.10.1
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.
- package/dist/ApiKey.d.ts +2 -1
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKeys.d.ts +4 -2
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +26 -1
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +4292 -3708
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +1 -0
- package/dist/App.js.map +1 -1
- package/dist/Webhooks.d.ts +21 -20
- package/dist/Webhooks.d.ts.map +1 -1
- package/dist/Webhooks.js +66 -23
- package/dist/Webhooks.js.map +1 -1
- package/dist/admin/App.d.ts +91 -84
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +26 -17
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +6 -0
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts +4 -2
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +168 -168
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.js +69 -69
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +26 -0
- package/dist/analytics/Analytics.js.map +1 -1
- package/dist/apps/Zones.d.ts +4280 -84
- package/dist/apps/Zones.d.ts.map +1 -1
- package/dist/apps/Zones.js +30 -10
- package/dist/apps/Zones.js.map +1 -1
- package/dist/apps/data/App.d.ts +5799 -4929
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/FxOracle.d.ts +4 -5
- package/dist/apps/data/FxOracle.d.ts.map +1 -1
- package/dist/apps/data/FxOracle.js +19 -4
- package/dist/apps/data/FxOracle.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +3391 -492
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +372 -29
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +853 -339
- package/dist/apps/data/routes/addresses.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.d.ts +10 -10
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +145 -83
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +123 -123
- package/dist/apps/data/routes/coingecko.d.ts +169 -169
- package/dist/apps/data/routes/earn.d.ts +455 -1
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +369 -45
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +114 -118
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts +24 -24
- package/dist/apps/data/routes/indexer.d.ts +35 -34
- package/dist/apps/data/routes/indexer.d.ts.map +1 -1
- package/dist/apps/data/routes/indexer.js +3 -2
- package/dist/apps/data/routes/indexer.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts.map +1 -1
- package/dist/apps/data/routes/receipts.js +68 -47
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/rpc.d.ts +31 -31
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +5 -1
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +12 -12
- package/dist/apps/data/routes/tokens.d.ts +461 -459
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +313 -305
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +25 -23
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +108 -86
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +618 -105
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +21 -21
- package/dist/apps/data/routes/valuation.d.ts.map +1 -1
- package/dist/apps/data/routes/valuation.js +2 -2
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/webhooks.d.ts +519 -868
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +642 -353
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +31 -31
- package/dist/apps/data/routes/zones.d.ts.map +1 -1
- package/dist/apps/data/routes/zones.js +4 -2
- package/dist/apps/data/routes/zones.js.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.js +1 -1
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/funding/routes/providers.d.ts +13 -13
- package/dist/apps/funding/routes/quotes.d.ts +89 -89
- package/dist/apps/funding/routes/transfers.d.ts +36 -36
- package/dist/apps/funding/routes/transfers.js +1 -1
- package/dist/apps/funding/routes/transfers.js.map +1 -1
- package/dist/apps/management/App.d.ts +11 -309
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +74 -74
- package/dist/apps/management/routes/billing.js +1 -1
- package/dist/apps/management/routes/billing.js.map +1 -1
- package/dist/apps/management/routes/faucet.d.ts +35 -35
- package/dist/apps/management/routes/faucet.js +2 -2
- package/dist/apps/management/routes/faucet.js.map +1 -1
- package/dist/apps/management/routes/invitations.d.ts +134 -134
- package/dist/apps/management/routes/invite-links.d.ts +80 -80
- package/dist/apps/management/routes/members.d.ts +69 -69
- package/dist/apps/management/routes/orgs.d.ts +98 -98
- package/dist/apps/management/routes/projects.d.ts +60 -60
- package/dist/apps/management/routes/usage.d.ts +72 -72
- package/dist/apps/management/routes/verified-token-requests.d.ts +83 -83
- package/dist/apps/management/routes/webhooks.d.ts +203 -618
- package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/mcp.d.ts.map +1 -1
- package/dist/apps/mcp.js +4 -1
- package/dist/apps/mcp.js.map +1 -1
- package/dist/apps/mpp/App.d.ts +56 -44
- package/dist/apps/mpp/App.d.ts.map +1 -1
- package/dist/apps/mpp/Mpp.d.ts +3 -0
- package/dist/apps/mpp/Mpp.d.ts.map +1 -1
- package/dist/apps/mpp/Mpp.js +3 -0
- package/dist/apps/mpp/Mpp.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Adapter.js +9 -2
- package/dist/apps/mpp/internal/Adapter.js.map +1 -1
- package/dist/db/Db.d.ts +4 -2
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +75 -15
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +19 -0
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +24 -0
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +4 -1
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/db/tables/webhookQueueEvents.d.ts +122 -0
- package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -0
- package/dist/db/tables/webhookQueueEvents.js +160 -0
- package/dist/db/tables/webhookQueueEvents.js.map +1 -0
- package/dist/db/tables/webhookSubscriptions.d.ts +58 -3
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +86 -3
- package/dist/db/tables/webhookSubscriptions.js.map +1 -1
- package/dist/internal/Auth.d.ts +3 -0
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +6 -4
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/MetricSink.d.ts +139 -3
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +144 -4
- package/dist/internal/MetricSink.js.map +1 -1
- package/dist/internal/RateLimit.d.ts +4 -6
- package/dist/internal/RateLimit.d.ts.map +1 -1
- package/dist/internal/RateLimit.js +15 -14
- package/dist/internal/RateLimit.js.map +1 -1
- package/dist/internal/Schema.js +1 -1
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/Store.d.ts +2 -1
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +57 -18
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts +1 -3
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +1 -3
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Value.d.ts +2 -0
- package/dist/internal/Value.d.ts.map +1 -1
- package/dist/internal/Value.js +25 -0
- package/dist/internal/Value.js.map +1 -1
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +2 -1
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/WebhookDestination.d.ts +2 -0
- package/dist/internal/WebhookDestination.d.ts.map +1 -1
- package/dist/internal/WebhookDestination.js +11 -0
- package/dist/internal/WebhookDestination.js.map +1 -1
- package/dist/internal/WebhookTransfer.d.ts +75 -0
- package/dist/internal/WebhookTransfer.d.ts.map +1 -0
- package/dist/internal/WebhookTransfer.js +299 -0
- package/dist/internal/WebhookTransfer.js.map +1 -0
- package/dist/internal/Webhooks.d.ts +176 -0
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +216 -20
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/funding/Provider.d.ts +4 -0
- package/dist/internal/funding/Provider.d.ts.map +1 -1
- package/dist/internal/funding/Provider.js +11 -7
- package/dist/internal/funding/Provider.js.map +1 -1
- package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
- package/dist/internal/funding/Reconciliation.js +128 -0
- package/dist/internal/funding/Reconciliation.js.map +1 -1
- package/dist/internal/funding/providers/relay.d.ts +6 -4
- package/dist/internal/funding/providers/relay.d.ts.map +1 -1
- package/dist/internal/funding/providers/relay.js +71 -9
- package/dist/internal/funding/providers/relay.js.map +1 -1
- package/package.json +4 -4
- package/src/ApiKeys.test.ts +20 -0
- package/src/ApiKeys.ts +28 -1
- package/src/App.test.ts +10 -8
- package/src/App.ts +1 -0
- package/src/Client.test-d.ts +61 -5
- package/src/Webhooks.bench.ts +714 -0
- package/src/Webhooks.memory.bench.ts +250 -0
- package/src/Webhooks.test.ts +77 -6
- package/src/Webhooks.ts +85 -29
- package/src/admin/apps/api-keys.test.ts +9 -0
- package/src/admin/apps/api-keys.ts +15 -0
- package/src/admin/ui/src/lib/query-client.ts +3 -2
- package/src/admin/ui/src/routes/api-keys.tsx +31 -9
- package/src/admin/ui.generated.ts +69 -69
- package/src/analytics/Analytics.test.ts +8 -0
- package/src/analytics/Analytics.ts +26 -0
- package/src/apps/Zones.test.ts +23 -5
- package/src/apps/Zones.ts +31 -10
- package/src/apps/composition.test.ts +1 -0
- package/src/apps/data/App.test.ts +2 -2
- package/src/apps/data/FxOracle.test.ts +18 -0
- package/src/apps/data/FxOracle.ts +28 -5
- package/src/apps/data/routes/activities.bench.ts +41 -0
- package/src/apps/data/routes/activities.test.ts +122 -2
- package/src/apps/data/routes/activities.ts +435 -32
- package/src/apps/data/routes/balances.bench.ts +21 -0
- package/src/apps/data/routes/balances.test.ts +119 -10
- package/src/apps/data/routes/balances.ts +164 -97
- package/src/apps/data/routes/blocks.bench.ts +34 -0
- package/src/apps/data/routes/blocks.test.ts +12 -6
- package/src/apps/data/routes/coingecko.bench.ts +53 -0
- package/src/apps/data/routes/earn.bench.ts +71 -0
- package/src/apps/data/routes/earn.test.ts +197 -0
- package/src/apps/data/routes/earn.ts +487 -45
- package/src/apps/data/routes/exchanges.bench.ts +85 -0
- package/src/apps/data/routes/exchanges.test.ts +7 -6
- package/src/apps/data/routes/exchanges.ts +124 -117
- package/src/apps/data/routes/fee-amm.bench.ts +13 -0
- package/src/apps/data/routes/indexer.bench.ts +8 -0
- package/src/apps/data/routes/indexer.test.ts +2 -1
- package/src/apps/data/routes/indexer.ts +3 -2
- package/src/apps/data/routes/receipts.bench.ts +39 -0
- package/src/apps/data/routes/receipts.test.ts +24 -7
- package/src/apps/data/routes/receipts.ts +67 -50
- package/src/apps/data/routes/rpc.bench.ts +14 -0
- package/src/apps/data/routes/rpc.test.ts +27 -0
- package/src/apps/data/routes/rpc.ts +5 -1
- package/src/apps/data/routes/tokenlist.bench.ts +3 -0
- package/src/apps/data/routes/tokens.bench.ts +76 -0
- package/src/apps/data/routes/tokens.test.ts +51 -0
- package/src/apps/data/routes/transactions.bench.ts +40 -0
- package/src/apps/data/routes/transactions.test.ts +42 -0
- package/src/apps/data/routes/transactions.ts +44 -39
- package/src/apps/data/routes/transfers.bench.ts +28 -0
- package/src/apps/data/routes/transfers.test.ts +402 -24
- package/src/apps/data/routes/transfers.ts +708 -101
- package/src/apps/data/routes/valuation.bench.ts +14 -0
- package/src/apps/data/routes/valuation.test.ts +26 -0
- package/src/apps/data/routes/valuation.ts +6 -2
- package/src/apps/data/routes/verified-tokens.bench.ts +8 -0
- package/src/apps/data/routes/webhooks.bench.ts +26 -0
- package/src/apps/data/routes/webhooks.scan.test.ts +326 -0
- package/src/apps/data/routes/webhooks.test.ts +466 -135
- package/src/apps/data/routes/webhooks.ts +820 -429
- package/src/apps/data/routes/zones.bench.ts +32 -0
- package/src/apps/data/routes/zones.test.ts +1 -1
- package/src/apps/data/routes/zones.ts +7 -2
- package/src/apps/funding/routes/chains.test.ts +1 -1
- package/src/apps/funding/routes/deposit-addresses.test.ts +1 -1
- package/src/apps/funding/routes/deposit-addresses.ts +1 -1
- package/src/apps/funding/routes/providers.test.ts +1 -1
- package/src/apps/funding/routes/quotes.test.ts +2 -2
- package/src/apps/funding/routes/transfers.test.ts +3 -6
- package/src/apps/funding/routes/transfers.ts +1 -1
- package/src/apps/management/routes/billing.ts +1 -1
- package/src/apps/management/routes/faucet.ts +2 -2
- package/src/apps/management/routes/me.test.ts +31 -0
- package/src/apps/mcp.ts +4 -1
- package/src/apps/mpp/Mpp.test.ts +13 -1
- package/src/apps/mpp/Mpp.ts +8 -0
- package/src/apps/mpp/internal/Adapter.ts +10 -2
- package/src/db/Db.test.ts +40 -6
- package/src/db/Db.ts +114 -19
- package/src/db/Schema.ts +32 -0
- package/src/db/tables/sponsoredTransactions.ts +9 -2
- package/src/db/tables/webhookQueueEvents.ts +285 -0
- package/src/db/tables/webhookSubscriptions.ts +131 -4
- package/src/internal/Auth.test.ts +61 -50
- package/src/internal/Auth.ts +9 -4
- package/src/internal/EarnVaults.test.ts +2 -2
- package/src/internal/MetricSink.test.ts +575 -0
- package/src/internal/MetricSink.ts +325 -10
- package/src/internal/RateLimit.test.ts +23 -18
- package/src/internal/RateLimit.ts +23 -15
- package/src/internal/Schema.ts +1 -1
- package/src/internal/Store.test.ts +99 -13
- package/src/internal/Store.ts +52 -17
- package/src/internal/Tidx.test.ts +4 -4
- package/src/internal/Tidx.ts +1 -3
- package/src/internal/Value.test.ts +25 -0
- package/src/internal/Value.ts +29 -0
- package/src/internal/Viem.test.ts +8 -0
- package/src/internal/Viem.ts +2 -1
- package/src/internal/WebhookDestination.test.ts +20 -0
- package/src/internal/WebhookDestination.ts +10 -0
- package/src/internal/WebhookTransfer.test.ts +89 -0
- package/src/internal/WebhookTransfer.ts +430 -0
- package/src/internal/Webhooks.test.ts +616 -0
- package/src/internal/Webhooks.ts +412 -24
- package/src/internal/funding/Provider.test.ts +48 -8
- package/src/internal/funding/Provider.ts +12 -7
- package/src/internal/funding/Reconciliation.local.test.ts +3 -1
- package/src/internal/funding/Reconciliation.test.ts +1240 -0
- package/src/internal/funding/Reconciliation.ts +136 -0
- package/src/internal/funding/SourceObservation.test.ts +1 -0
- package/src/internal/funding/providers/index.test.ts +73 -3
- package/src/internal/funding/providers/relay.test.ts +2 -9
- package/src/internal/funding/providers/relay.ts +72 -13
|
@@ -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',
|
|
@@ -1853,7 +2011,7 @@ export function addresses(options: addresses.Options = {}) {
|
|
|
1853
2011
|
const { address } = c.req.valid('param')
|
|
1854
2012
|
const query = c.req.valid('query')
|
|
1855
2013
|
|
|
1856
|
-
// Cursor pages carry current valuations and curated verification data.
|
|
2014
|
+
// Cursor pages can carry current valuations and curated verification data.
|
|
1857
2015
|
if (query.cursor !== undefined) Cache.setPolicy(c, Cache.policies.metadata)
|
|
1858
2016
|
|
|
1859
2017
|
try {
|
|
@@ -1884,7 +2042,7 @@ export function addresses(options: addresses.Options = {}) {
|
|
|
1884
2042
|
// Build immutable token and structured amount copies from RPC metadata.
|
|
1885
2043
|
const { items, rates } = await enrichTokens(c, {
|
|
1886
2044
|
chainId,
|
|
1887
|
-
denomination: query['valuation.currency']
|
|
2045
|
+
denomination: query['valuation.currency'],
|
|
1888
2046
|
include: query.include,
|
|
1889
2047
|
items: unenrichedItems,
|
|
1890
2048
|
oracle,
|
|
@@ -1964,7 +2122,7 @@ export function transactions(options: transactions.Options = {}) {
|
|
|
1964
2122
|
}),
|
|
1965
2123
|
Cache.response<App.Environment>({
|
|
1966
2124
|
// Default to no-store so a 404 does not mask the eventual mined result.
|
|
1967
|
-
// Successful responses use the metadata policy for
|
|
2125
|
+
// Successful responses use the metadata policy for optional valuations.
|
|
1968
2126
|
cacheControl: Cache.policies.noStore,
|
|
1969
2127
|
name: 'tempo-api:transactions:v1',
|
|
1970
2128
|
key: (c) => Cache.urlKey(c, schema.getTransactionActivities.Query),
|
|
@@ -2012,13 +2170,13 @@ export function transactions(options: transactions.Options = {}) {
|
|
|
2012
2170
|
status: 404,
|
|
2013
2171
|
})
|
|
2014
2172
|
|
|
2015
|
-
// Mined activity
|
|
2173
|
+
// Mined activity can carry current valuations and verification data.
|
|
2016
2174
|
Cache.setPolicy(c, Cache.policies.metadata)
|
|
2017
2175
|
|
|
2018
2176
|
// Build immutable token and structured amount copies from RPC metadata.
|
|
2019
2177
|
const { items, rates } = await enrichTokens(c, {
|
|
2020
2178
|
chainId,
|
|
2021
|
-
denomination: query['valuation.currency']
|
|
2179
|
+
denomination: query['valuation.currency'],
|
|
2022
2180
|
include: query.include,
|
|
2023
2181
|
items: unenrichedItems,
|
|
2024
2182
|
oracle,
|
|
@@ -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({
|
|
4352
|
+
return parseEventLogs({
|
|
4353
|
+
abi: [...Abis.abis, ...Abis.earnRouter, ...Abis.earnVault],
|
|
4354
|
+
logs: viemLogs,
|
|
4355
|
+
strict: false,
|
|
4356
|
+
})
|
|
3958
4357
|
}
|
|
3959
4358
|
|
|
3960
4359
|
/**
|
|
@@ -4088,27 +4487,27 @@ async function enrichTokens(
|
|
|
4088
4487
|
const { chainId, denomination, include, items, oracle } = options
|
|
4089
4488
|
const addresses = new Set<Address.Address>()
|
|
4090
4489
|
for (const item of items) collectTokens(item, addresses)
|
|
4091
|
-
|
|
4092
|
-
|
|
4490
|
+
const includeLogoUri = include.includes('token.logoUri')
|
|
4491
|
+
const includeVerified = include.includes('token.verified')
|
|
4492
|
+
// Curated data is needed only for requested valuation or token fields.
|
|
4093
4493
|
const snapshot =
|
|
4094
|
-
addresses.size > 0
|
|
4494
|
+
addresses.size > 0 && (denomination !== undefined || includeLogoUri || includeVerified)
|
|
4095
4495
|
? await VerifiedTokens.snapshot(c, chainId).catch(() => undefined)
|
|
4096
4496
|
: undefined
|
|
4097
|
-
const rates =
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4497
|
+
const rates = denomination
|
|
4498
|
+
? await Valuation.ratesFor(c, {
|
|
4499
|
+
currencies: snapshot
|
|
4500
|
+
? [...addresses].flatMap((address) => {
|
|
4501
|
+
const held = snapshot.byAddress.get(address)?.currency
|
|
4502
|
+
return held === undefined ? [] : [held]
|
|
4503
|
+
})
|
|
4504
|
+
: [],
|
|
4505
|
+
denomination,
|
|
4506
|
+
oracle,
|
|
4507
|
+
})
|
|
4508
|
+
: undefined
|
|
4107
4509
|
if (addresses.size === 0) return { items: items as Item[], rates }
|
|
4108
4510
|
|
|
4109
|
-
const includeLogoUri = include.includes('token.logoUri')
|
|
4110
|
-
const includeVerified = include.includes('token.verified')
|
|
4111
|
-
|
|
4112
4511
|
const resolved = await Timing.time(c, 'tokens', () =>
|
|
4113
4512
|
Promise.all(
|
|
4114
4513
|
[...addresses].map(async (address) => {
|
|
@@ -4145,7 +4544,7 @@ declare namespace enrichTokens {
|
|
|
4145
4544
|
type Options = {
|
|
4146
4545
|
chainId: z.output<typeof Schema.ChainId>
|
|
4147
4546
|
/** Currency the amount valuations are denominated in (uppercase). */
|
|
4148
|
-
denomination
|
|
4547
|
+
denomination?: string | undefined
|
|
4149
4548
|
include: readonly z.output<typeof schema.Include>[]
|
|
4150
4549
|
items: readonly UnenrichedItem[]
|
|
4151
4550
|
/** FX rate oracle backing amount valuation. */
|
|
@@ -4173,13 +4572,17 @@ function enrichItem(
|
|
|
4173
4572
|
currency: meta.currency,
|
|
4174
4573
|
decimals: meta.decimals,
|
|
4175
4574
|
}),
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
4575
|
+
...(valuation.denomination
|
|
4576
|
+
? {
|
|
4577
|
+
// Valued via the curated display currency, never the on-chain metadata.
|
|
4578
|
+
valuation: Valuation.valuationFor({
|
|
4579
|
+
amount: BigInt(t.amount),
|
|
4580
|
+
denomination: valuation.denomination,
|
|
4581
|
+
rates: valuation.rates,
|
|
4582
|
+
token: valuation.snapshot?.byAddress.get(t.address.toLowerCase()),
|
|
4583
|
+
}),
|
|
4584
|
+
}
|
|
4585
|
+
: {}),
|
|
4183
4586
|
}
|
|
4184
4587
|
data[key] = {
|
|
4185
4588
|
address: t.address,
|
|
@@ -4198,7 +4601,7 @@ declare namespace enrichItem {
|
|
|
4198
4601
|
/** Valuation inputs threaded from {@link enrichTokens}. */
|
|
4199
4602
|
type Valuation = {
|
|
4200
4603
|
/** Currency the amount valuations are denominated in (uppercase). */
|
|
4201
|
-
denomination
|
|
4604
|
+
denomination?: string | undefined
|
|
4202
4605
|
/** Oracle rate set, when loaded. */
|
|
4203
4606
|
rates: FxOracle.RateSet | undefined
|
|
4204
4607
|
/** Compiled verified-token snapshot, when available. */
|
|
@@ -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
|
+
})
|