tapimo 0.10.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 +3346 -2575
- 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.map +1 -1
- package/dist/Webhooks.js +5 -5
- 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/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 +4266 -82
- package/dist/apps/Zones.d.ts.map +1 -1
- package/dist/apps/Zones.js +27 -8
- package/dist/apps/Zones.js.map +1 -1
- package/dist/apps/data/App.d.ts +3467 -2696
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +2999 -100
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +340 -2
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +850 -336
- package/dist/apps/data/routes/addresses.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.d.ts +26 -26
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +11 -3
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +4 -4
- package/dist/apps/data/routes/coingecko.d.ts +176 -176
- package/dist/apps/data/routes/earn.d.ts +75 -75
- package/dist/apps/data/routes/earn.js +2 -2
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts +120 -120
- 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/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/transactions.d.ts +281 -281
- package/dist/apps/data/routes/verified-tokens.d.ts +37 -37
- package/dist/apps/data/routes/webhooks.d.ts +418 -364
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +161 -14
- 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.js +1 -1
- package/dist/apps/data/routes/zones.js.map +1 -1
- package/dist/apps/funding/App.d.ts +96 -96
- package/dist/apps/funding/routes/deposit-addresses.d.ts +52 -52
- 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/transfers.d.ts +32 -32
- 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 +418 -418
- package/dist/apps/management/routes/api-keys.d.ts +50 -50
- package/dist/apps/management/routes/billing.d.ts +72 -72
- 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 +37 -37
- package/dist/apps/management/routes/faucet.js +2 -2
- package/dist/apps/management/routes/faucet.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts +42 -42
- package/dist/apps/management/routes/me.d.ts +6 -6
- package/dist/apps/management/routes/members.d.ts +75 -75
- package/dist/apps/management/routes/projects.d.ts +40 -40
- package/dist/apps/management/routes/usage.d.ts +76 -76
- package/dist/apps/management/routes/webhooks.d.ts +49 -49
- 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/db/Db.d.ts +2 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +58 -0
- 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/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 +2 -0
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +10 -0
- 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 +27 -0
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +29 -2
- 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/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/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/WebhookTransfer.d.ts +20 -0
- package/dist/internal/WebhookTransfer.d.ts.map +1 -1
- package/dist/internal/WebhookTransfer.js +7 -4
- package/dist/internal/WebhookTransfer.js.map +1 -1
- package/dist/internal/Webhooks.d.ts +139 -0
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +129 -7
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/funding/providers/relay.d.ts +3 -4
- package/dist/internal/funding/providers/relay.d.ts.map +1 -1
- package/dist/internal/funding/providers/relay.js +59 -8
- package/dist/internal/funding/providers/relay.js.map +1 -1
- package/package.json +3 -3
- 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 +1 -0
- package/src/Webhooks.ts +19 -17
- 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 +20 -3
- package/src/apps/Zones.ts +28 -8
- package/src/apps/composition.test.ts +1 -0
- package/src/apps/data/App.test.ts +2 -2
- package/src/apps/data/routes/activities.bench.ts +41 -0
- package/src/apps/data/routes/activities.test.ts +103 -2
- package/src/apps/data/routes/activities.ts +401 -2
- package/src/apps/data/routes/balances.bench.ts +21 -0
- package/src/apps/data/routes/balances.ts +11 -3
- package/src/apps/data/routes/blocks.bench.ts +34 -0
- 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.ts +2 -2
- package/src/apps/data/routes/exchanges.bench.ts +85 -0
- 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/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/transactions.bench.ts +40 -0
- package/src/apps/data/routes/transfers.bench.ts +28 -0
- package/src/apps/data/routes/valuation.bench.ts +14 -0
- 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 +53 -6
- package/src/apps/data/routes/webhooks.ts +221 -14
- 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 +1 -1
- 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 +1 -1
- 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/db/Db.ts +81 -0
- package/src/db/Schema.ts +32 -0
- package/src/db/tables/webhookQueueEvents.ts +285 -0
- package/src/db/tables/webhookSubscriptions.ts +15 -0
- 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 +58 -1
- package/src/internal/MetricSink.ts +60 -2
- package/src/internal/RateLimit.test.ts +23 -18
- package/src/internal/RateLimit.ts +23 -15
- 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/Value.test.ts +25 -0
- package/src/internal/Value.ts +29 -0
- package/src/internal/WebhookTransfer.test.ts +89 -0
- package/src/internal/WebhookTransfer.ts +11 -7
- package/src/internal/Webhooks.test.ts +479 -0
- package/src/internal/Webhooks.ts +281 -7
- package/src/internal/funding/Provider.test.ts +1 -1
- package/src/internal/funding/providers/index.test.ts +73 -3
- package/src/internal/funding/providers/relay.test.ts +1 -5
- package/src/internal/funding/providers/relay.ts +56 -12
|
@@ -184,6 +184,14 @@ describe('migrations', () => {
|
|
|
184
184
|
for (const column of Object.keys(row)) expect(sql).toContain(column)
|
|
185
185
|
expect(sql).toContain('timings Map(String, Float64)')
|
|
186
186
|
})
|
|
187
|
+
|
|
188
|
+
test('the migrations declare query benchmark history', () => {
|
|
189
|
+
const sql = Analytics.migrations.map((migration) => migration.sql).join('\n')
|
|
190
|
+
expect(sql).toContain('CREATE TABLE IF NOT EXISTS query_benchmark_results')
|
|
191
|
+
expect(sql).toContain('ORDER BY (chain_id, query, metric, timestamp, run_id)')
|
|
192
|
+
expect(sql).toContain('rpc_url String')
|
|
193
|
+
expect(sql).toContain('tidx_url String')
|
|
194
|
+
})
|
|
187
195
|
})
|
|
188
196
|
|
|
189
197
|
describe('get', () => {
|
|
@@ -192,6 +192,32 @@ export const migrations: readonly Migration[] = [
|
|
|
192
192
|
ADD COLUMN IF NOT EXISTS timings Map(String, Float64)
|
|
193
193
|
`,
|
|
194
194
|
},
|
|
195
|
+
{
|
|
196
|
+
name: '0005_query_benchmark_results',
|
|
197
|
+
sql: `
|
|
198
|
+
CREATE TABLE IF NOT EXISTS query_benchmark_results (
|
|
199
|
+
timestamp DateTime64(3, 'UTC'),
|
|
200
|
+
run_id String,
|
|
201
|
+
repository LowCardinality(String),
|
|
202
|
+
git_sha String,
|
|
203
|
+
git_ref LowCardinality(String),
|
|
204
|
+
chain_id UInt32,
|
|
205
|
+
chain LowCardinality(String),
|
|
206
|
+
query String,
|
|
207
|
+
metric LowCardinality(String),
|
|
208
|
+
mean_ms Float64,
|
|
209
|
+
min_ms Float64,
|
|
210
|
+
max_ms Float64,
|
|
211
|
+
samples UInt16,
|
|
212
|
+
tidx_queries Array(String),
|
|
213
|
+
rpc_url String,
|
|
214
|
+
tidx_url String
|
|
215
|
+
)
|
|
216
|
+
ENGINE = ReplacingMergeTree
|
|
217
|
+
PARTITION BY toYYYYMM(timestamp)
|
|
218
|
+
ORDER BY (chain_id, query, metric, timestamp, run_id)
|
|
219
|
+
`,
|
|
220
|
+
},
|
|
195
221
|
]
|
|
196
222
|
|
|
197
223
|
/**
|
package/src/apps/Zones.test.ts
CHANGED
|
@@ -5,10 +5,12 @@ describe('chains', () => {
|
|
|
5
5
|
expect(Zones.chains).toMatchObject([
|
|
6
6
|
{
|
|
7
7
|
contracts: {
|
|
8
|
-
messenger: { address: '
|
|
9
|
-
portal: { address: '
|
|
8
|
+
messenger: { address: '0x2fB7Aba18510622cd88F5f45B3AC0E7Dd70606a5' },
|
|
9
|
+
portal: { address: '0x5765e8B9003054e479df44D12D3dEeaADEfa8b7c' },
|
|
10
|
+
verifier: { address: '0xfa16b9C6A356a096F0e7ceF0135C393A81d4a355' },
|
|
10
11
|
},
|
|
11
|
-
id:
|
|
12
|
+
id: 1_424_310_001,
|
|
13
|
+
name: 'zone-moderato-internal',
|
|
12
14
|
rpcUrls: {
|
|
13
15
|
default: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
|
|
14
16
|
internal: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
|
|
@@ -16,6 +18,21 @@ describe('chains', () => {
|
|
|
16
18
|
},
|
|
17
19
|
sourceId: 42_431,
|
|
18
20
|
},
|
|
21
|
+
{
|
|
22
|
+
contracts: {
|
|
23
|
+
messenger: { address: '0x171699d2B5211414C23E5Cd306d05046b78FdD16' },
|
|
24
|
+
portal: { address: '0xe5208b9604972CA6a2E1EF656a9d2bDF2e530B9A' },
|
|
25
|
+
verifier: { address: '0x3E7C1cC9C049052eb061116A4Ee7a7C281fa1F30' },
|
|
26
|
+
},
|
|
27
|
+
id: 421_700_001,
|
|
28
|
+
name: 'zone-mainnet-internal',
|
|
29
|
+
rpcUrls: {
|
|
30
|
+
default: { http: ['https://zone-internal-rpc.tempo.xyz'] },
|
|
31
|
+
internal: { http: ['https://zone-internal-rpc.tempo.xyz'] },
|
|
32
|
+
tidx: { http: ['https://indexer-zone-internal.tempo.xyz'] },
|
|
33
|
+
},
|
|
34
|
+
sourceId: 4_217,
|
|
35
|
+
},
|
|
19
36
|
{
|
|
20
37
|
contracts: {
|
|
21
38
|
messenger: { address: '0x5A4d000000000000000000000000000000000000' },
|
package/src/apps/Zones.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { defineChain } from 'viem'
|
|
2
|
-
import { tempoDevnet, tempoTestnet } from 'viem/tempo/chains'
|
|
2
|
+
import { tempo, tempoDevnet, tempoTestnet } from 'viem/tempo/chains'
|
|
3
3
|
|
|
4
|
-
/** Moderato Zone on Tempo testnet. */
|
|
5
|
-
export const
|
|
4
|
+
/** Internal Moderato Zone on Tempo testnet. */
|
|
5
|
+
export const zoneModeratoInternal = defineChain({
|
|
6
6
|
...tempoTestnet,
|
|
7
7
|
contracts: {
|
|
8
8
|
...tempoTestnet.contracts,
|
|
9
|
-
messenger: { address: '
|
|
10
|
-
portal: { address: '
|
|
9
|
+
messenger: { address: '0x2fB7Aba18510622cd88F5f45B3AC0E7Dd70606a5' },
|
|
10
|
+
portal: { address: '0x5765e8B9003054e479df44D12D3dEeaADEfa8b7c' },
|
|
11
|
+
verifier: { address: '0xfa16b9C6A356a096F0e7ceF0135C393A81d4a355' },
|
|
11
12
|
},
|
|
12
|
-
id:
|
|
13
|
-
name: 'zone-moderato',
|
|
13
|
+
id: 1_424_310_001,
|
|
14
|
+
name: 'zone-moderato-internal',
|
|
14
15
|
rpcUrls: {
|
|
15
16
|
default: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
|
|
16
17
|
internal: { http: ['https://zone-internal-rpc.testnet.tempo.xyz'] },
|
|
@@ -19,6 +20,25 @@ export const zoneModerato = defineChain({
|
|
|
19
20
|
sourceId: tempoTestnet.id,
|
|
20
21
|
})
|
|
21
22
|
|
|
23
|
+
/** Internal Zone on Tempo mainnet. */
|
|
24
|
+
export const zoneMainnetInternal = defineChain({
|
|
25
|
+
...tempo,
|
|
26
|
+
contracts: {
|
|
27
|
+
...tempo.contracts,
|
|
28
|
+
messenger: { address: '0x171699d2B5211414C23E5Cd306d05046b78FdD16' },
|
|
29
|
+
portal: { address: '0xe5208b9604972CA6a2E1EF656a9d2bDF2e530B9A' },
|
|
30
|
+
verifier: { address: '0x3E7C1cC9C049052eb061116A4Ee7a7C281fa1F30' },
|
|
31
|
+
},
|
|
32
|
+
id: 421_700_001,
|
|
33
|
+
name: 'zone-mainnet-internal',
|
|
34
|
+
rpcUrls: {
|
|
35
|
+
default: { http: ['https://zone-internal-rpc.tempo.xyz'] },
|
|
36
|
+
internal: { http: ['https://zone-internal-rpc.tempo.xyz'] },
|
|
37
|
+
tidx: { http: ['https://indexer-zone-internal.tempo.xyz'] },
|
|
38
|
+
},
|
|
39
|
+
sourceId: tempo.id,
|
|
40
|
+
})
|
|
41
|
+
|
|
22
42
|
/** Stable hosted Zone on Tempo devnet. */
|
|
23
43
|
export const zoneStable = defineChain({
|
|
24
44
|
...tempoDevnet,
|
|
@@ -38,4 +58,4 @@ export const zoneStable = defineChain({
|
|
|
38
58
|
})
|
|
39
59
|
|
|
40
60
|
/** Hosted Zone chains served by the API and admin. */
|
|
41
|
-
export const chains = [
|
|
61
|
+
export const chains = [zoneModeratoInternal, zoneMainnetInternal, zoneStable] as const
|
|
@@ -436,8 +436,8 @@ describe('sandbox chain guard', () => {
|
|
|
436
436
|
})
|
|
437
437
|
|
|
438
438
|
async function exhaustPublicQuota(store: Store.Store) {
|
|
439
|
-
const limit = {
|
|
439
|
+
const limit = { limit: 60, period: 'minute' } satisfies RateLimit.Limit
|
|
440
440
|
const rateLimit = RateLimit.memory({ store })
|
|
441
|
-
for (let index = 0; index < limit.
|
|
441
|
+
for (let index = 0; index < limit.limit; index++)
|
|
442
442
|
await rateLimit.consume({ key: 'public:anonymous', limit })
|
|
443
443
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as QueryBench from '../../../../test/QueryBench.js'
|
|
2
|
+
|
|
3
|
+
const fixtures = {
|
|
4
|
+
4217: {
|
|
5
|
+
address: '0xc24357119432595a547cb2c1e41c51d753645519',
|
|
6
|
+
transactionHash: '0x7f98e4b2bf4d1444b257526f7dd294ac3480d73cd91f723bf0df6062d1ba1c82',
|
|
7
|
+
},
|
|
8
|
+
42431: {
|
|
9
|
+
address: '0x15496d3123afb2cfadc0ac068eadd11d0f8ae799',
|
|
10
|
+
transactionHash: '0x1c8ccebb169f863b72388cc057fcecee240032eb7d2c64aa6f6fb8e5a60d3f9a',
|
|
11
|
+
},
|
|
12
|
+
} as const
|
|
13
|
+
|
|
14
|
+
QueryBench.bench({
|
|
15
|
+
name: 'getAddressActivities',
|
|
16
|
+
path: {
|
|
17
|
+
4217: `/v1/addresses/${fixtures[4217].address}/activities`,
|
|
18
|
+
42431: `/v1/addresses/${fixtures[42431].address}/activities`,
|
|
19
|
+
},
|
|
20
|
+
queries: [
|
|
21
|
+
'group=true',
|
|
22
|
+
'include=token.logoUri',
|
|
23
|
+
'include=token.verified',
|
|
24
|
+
'logs=true',
|
|
25
|
+
'valuation.currency=USD',
|
|
26
|
+
],
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
QueryBench.bench({
|
|
30
|
+
name: 'getTransactionActivities',
|
|
31
|
+
path: {
|
|
32
|
+
4217: `/v1/transactions/${fixtures[4217].transactionHash}/activities`,
|
|
33
|
+
42431: `/v1/transactions/${fixtures[42431].transactionHash}/activities`,
|
|
34
|
+
},
|
|
35
|
+
queries: [
|
|
36
|
+
'include=token.logoUri',
|
|
37
|
+
'include=token.verified',
|
|
38
|
+
'logs=true',
|
|
39
|
+
'valuation.currency=USD',
|
|
40
|
+
],
|
|
41
|
+
})
|
|
@@ -699,11 +699,12 @@ describe('Activities.list precompile classification', () => {
|
|
|
699
699
|
logIdx: number
|
|
700
700
|
}): Activities.Row {
|
|
701
701
|
type Param = { indexed?: boolean; name?: string; type: string }
|
|
702
|
-
const
|
|
702
|
+
const abi = [...Abis.abis, ...Abis.earnRouter, ...Abis.earnVault]
|
|
703
|
+
const event = abi.find((a) => a.type === 'event' && a.name === options.eventName) as {
|
|
703
704
|
inputs: readonly Param[]
|
|
704
705
|
}
|
|
705
706
|
const topics = encodeEventTopics({
|
|
706
|
-
abi
|
|
707
|
+
abi,
|
|
707
708
|
eventName: options.eventName as never,
|
|
708
709
|
args: options.args as never,
|
|
709
710
|
}) as (string | null)[]
|
|
@@ -751,6 +752,106 @@ describe('Activities.list precompile classification', () => {
|
|
|
751
752
|
return items
|
|
752
753
|
}
|
|
753
754
|
|
|
755
|
+
test('classifies every Earn vault and private-router event', async () => {
|
|
756
|
+
const requestId = `0x${'c'.repeat(64)}` as Hex.Hex
|
|
757
|
+
const cases = [
|
|
758
|
+
['Deposited', { assets: 100n, caller: viewer, earnShares: 90n, receiver: viewer }],
|
|
759
|
+
[
|
|
760
|
+
'VenueSharesDeposited',
|
|
761
|
+
{
|
|
762
|
+
caller: viewer,
|
|
763
|
+
earnShares: 90n,
|
|
764
|
+
receivedEngineShares: 95n,
|
|
765
|
+
receiver: viewer,
|
|
766
|
+
requestedVenueShares: 100n,
|
|
767
|
+
},
|
|
768
|
+
],
|
|
769
|
+
['Redeemed', { assets: 100n, caller: viewer, earnShares: 90n, receiver: viewer }],
|
|
770
|
+
['WithdrewExact', { assets: 100n, caller: viewer, earnSharesBurned: 90n, receiver: viewer }],
|
|
771
|
+
['RedeemRequested', { earnShares: 90n, receiver: viewer, requestId, requester: viewer }],
|
|
772
|
+
[
|
|
773
|
+
'RedeemFinalized',
|
|
774
|
+
{ asset: tokenA, assets: 100n, earnShares: 90n, receiver: viewer, requestId },
|
|
775
|
+
],
|
|
776
|
+
['RedeemCancelled', { earnShares: 90n, receiver: viewer, requestId }],
|
|
777
|
+
[
|
|
778
|
+
'EarnDeposit',
|
|
779
|
+
{
|
|
780
|
+
actionId: requestId,
|
|
781
|
+
earnShares: 90n,
|
|
782
|
+
earnVault: tokenA,
|
|
783
|
+
inputAmount: 100n,
|
|
784
|
+
inputToken: tokenA,
|
|
785
|
+
vaultAssets: 100n,
|
|
786
|
+
zoneDepositHash: requestId,
|
|
787
|
+
},
|
|
788
|
+
],
|
|
789
|
+
[
|
|
790
|
+
'EarnRedeem',
|
|
791
|
+
{
|
|
792
|
+
actionId: requestId,
|
|
793
|
+
earnShares: 90n,
|
|
794
|
+
earnVault: tokenA,
|
|
795
|
+
outputAmount: 100n,
|
|
796
|
+
outputToken: tokenA,
|
|
797
|
+
vaultAssets: 100n,
|
|
798
|
+
zoneDepositHash: requestId,
|
|
799
|
+
},
|
|
800
|
+
],
|
|
801
|
+
] as const
|
|
802
|
+
|
|
803
|
+
const types = []
|
|
804
|
+
for (const [eventName, args] of cases) {
|
|
805
|
+
const items = await classify([logRow({ address: tokenA, args, eventName, logIdx: 0 })])
|
|
806
|
+
types.push(items[0]?.type)
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
expect(types).toMatchInlineSnapshot(`
|
|
810
|
+
[
|
|
811
|
+
"assets-deposited",
|
|
812
|
+
"shares-deposited",
|
|
813
|
+
"shares-redeemed",
|
|
814
|
+
"assets-withdrawn",
|
|
815
|
+
"shares-redemption-requested",
|
|
816
|
+
"shares-redemption-finalized",
|
|
817
|
+
"shares-redemption-cancelled",
|
|
818
|
+
"private-assets-deposited",
|
|
819
|
+
"private-shares-redeemed",
|
|
820
|
+
]
|
|
821
|
+
`)
|
|
822
|
+
})
|
|
823
|
+
|
|
824
|
+
test('prefers a private Earn event over its underlying vault event', async () => {
|
|
825
|
+
const actionId = `0x${'c'.repeat(64)}` as Hex.Hex
|
|
826
|
+
const items = await classify([
|
|
827
|
+
logRow({
|
|
828
|
+
address: tokenA,
|
|
829
|
+
args: { assets: 100n, caller: viewer, earnShares: 90n, receiver: viewer },
|
|
830
|
+
eventName: 'Deposited',
|
|
831
|
+
logIdx: 0,
|
|
832
|
+
}),
|
|
833
|
+
logRow({
|
|
834
|
+
address: tokenA,
|
|
835
|
+
args: {
|
|
836
|
+
actionId,
|
|
837
|
+
earnShares: 90n,
|
|
838
|
+
earnVault: tokenA,
|
|
839
|
+
inputAmount: 100n,
|
|
840
|
+
inputToken: tokenA,
|
|
841
|
+
vaultAssets: 100n,
|
|
842
|
+
zoneDepositHash: actionId,
|
|
843
|
+
},
|
|
844
|
+
eventName: 'EarnDeposit',
|
|
845
|
+
logIdx: 1,
|
|
846
|
+
}),
|
|
847
|
+
])
|
|
848
|
+
expect(items.map((item) => item.type)).toMatchInlineSnapshot(`
|
|
849
|
+
[
|
|
850
|
+
"private-assets-deposited",
|
|
851
|
+
]
|
|
852
|
+
`)
|
|
853
|
+
})
|
|
854
|
+
|
|
754
855
|
test('classifies ChannelOpened as `channel-opened` with the deposit token', async () => {
|
|
755
856
|
const items = await classify([
|
|
756
857
|
logRow({
|