tapimo 0.10.1 → 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.
- package/dist/App.d.ts +1776 -1543
- package/dist/App.d.ts.map +1 -1
- package/dist/Webhooks.d.ts +1 -1
- package/dist/Webhooks.d.ts.map +1 -1
- package/dist/Webhooks.js +1 -1
- package/dist/Webhooks.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +4 -4
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +206 -0
- package/dist/analytics/Analytics.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts +4 -0
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +2 -0
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +2 -0
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +340 -340
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +2 -6
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +176 -176
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +63 -34
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts +4 -0
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +115 -77
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +34 -34
- package/dist/apps/data/routes/receipts.d.ts +4 -3
- package/dist/apps/data/routes/receipts.d.ts.map +1 -1
- package/dist/apps/data/routes/receipts.js +15 -14
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +1 -1
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +4 -3
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +281 -281
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +25 -7
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/webhooks.d.ts +380 -364
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +16 -9
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +31 -31
- package/dist/apps/funding/App.d.ts +233 -0
- package/dist/apps/funding/App.d.ts.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.d.ts +330 -0
- package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.js +207 -11
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/funding/routes/providers.d.ts +13 -13
- package/dist/apps/management/routes/faucet.d.ts +32 -32
- package/dist/apps/management/routes/members.d.ts +79 -79
- package/dist/apps/management/routes/usage.d.ts +80 -80
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +32 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/tables/fundingDepositAddresses.d.ts +20 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -1
- package/dist/db/tables/fundingDepositAddresses.js +17 -0
- package/dist/db/tables/fundingDepositAddresses.js.map +1 -1
- package/dist/db/tables/fundingDeposits.d.ts +41 -0
- package/dist/db/tables/fundingDeposits.d.ts.map +1 -1
- package/dist/db/tables/fundingDeposits.js +69 -0
- package/dist/db/tables/fundingDeposits.js.map +1 -1
- package/dist/internal/Auth.d.ts +0 -26
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +0 -33
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Credential.d.ts +27 -0
- package/dist/internal/Credential.d.ts.map +1 -0
- package/dist/internal/Credential.js +34 -0
- package/dist/internal/Credential.js.map +1 -0
- package/dist/internal/EarnRates.js +11 -7
- package/dist/internal/EarnRates.js.map +1 -1
- package/dist/internal/Log.d.ts +8 -0
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +4 -0
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/MetricSink.d.ts +24 -0
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +25 -0
- package/dist/internal/MetricSink.js.map +1 -1
- package/dist/internal/Tidx.d.ts +4 -3
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +2 -2
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Viem.d.ts +4 -3
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +3 -2
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/Webhooks.d.ts +2 -0
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +10 -3
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +1 -0
- package/dist/internal/index.js.map +1 -1
- package/package.json +1 -1
- package/src/App.test.ts +30 -0
- package/src/Client.test-d.ts +33 -1
- package/src/Webhooks.ts +1 -1
- package/src/analytics/Analytics.test.ts +34 -0
- package/src/analytics/Analytics.ts +206 -0
- package/src/analytics/tables/requestEvents.ts +6 -0
- package/src/apps/composition.test.ts +1 -0
- package/src/apps/data/App.ts +2 -0
- package/src/apps/data/routes/balances.ts +2 -6
- package/src/apps/data/routes/earn.ts +64 -34
- package/src/apps/data/routes/exchanges.test.ts +8 -3
- package/src/apps/data/routes/exchanges.ts +134 -82
- package/src/apps/data/routes/receipts.ts +16 -14
- package/src/apps/data/routes/tokens.ts +3 -2
- package/src/apps/data/routes/transactions.bench.ts +8 -0
- package/src/apps/data/routes/transfers.ts +36 -10
- package/src/apps/data/routes/webhooks.ts +31 -10
- package/src/apps/funding/routes/deposit-addresses.test.ts +216 -2
- package/src/apps/funding/routes/deposit-addresses.ts +254 -18
- package/src/apps/funding/routes/transfers.test.ts +17 -2
- package/src/db/Db.ts +36 -0
- package/src/db/tables/fundingDepositAddresses.test.ts +28 -0
- package/src/db/tables/fundingDepositAddresses.ts +39 -0
- package/src/db/tables/fundingDeposits.test.ts +82 -0
- package/src/db/tables/fundingDeposits.ts +130 -0
- package/src/internal/Auth.test.ts +0 -48
- package/src/internal/Auth.ts +0 -59
- package/src/internal/Credential.test.ts +51 -0
- package/src/internal/Credential.ts +58 -0
- package/src/internal/EarnRates.ts +13 -7
- package/src/internal/Log.test.ts +3 -1
- package/src/internal/Log.ts +14 -0
- package/src/internal/MetricSink.test.ts +50 -1
- package/src/internal/MetricSink.ts +52 -0
- package/src/internal/Tidx.ts +5 -4
- package/src/internal/Viem.test.ts +4 -0
- package/src/internal/Viem.ts +6 -4
- package/src/internal/Webhooks.test.ts +9 -0
- package/src/internal/Webhooks.ts +10 -3
- package/src/internal/index.test.ts +1 -0
- package/src/internal/index.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchanges.d.ts","sourceRoot":"","sources":["../../../../src/apps/data/routes/exchanges.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"exchanges.d.ts","sourceRoot":"","sources":["../../../../src/apps/data/routes/exchanges.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
@@ -1495,19 +1495,22 @@ export function exchanges(options = {}) {
|
|
|
1495
1495
|
toTimestamp: options['timestamp.to'],
|
|
1496
1496
|
transactionHash: options.transactionHash,
|
|
1497
1497
|
});
|
|
1498
|
-
// `route` spans every swap and fill side, so one lookup resolves each
|
|
1499
|
-
// token once for required RPC metadata and requested curated fields.
|
|
1500
|
-
const tokensByAddress = await Tokens.resolveTokens(c, {
|
|
1501
|
-
addresses: page.data.flatMap((swap) => swap.route),
|
|
1502
|
-
chainId,
|
|
1503
|
-
include: options.include,
|
|
1504
|
-
});
|
|
1505
1498
|
// Value amounts via their curated display currency; snapshot or rate
|
|
1506
1499
|
// failures degrade the values to `null`, never the feed.
|
|
1507
1500
|
const denomination = options['valuation.currency'];
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1501
|
+
// Mode, verified-token, and RPC metadata reads depend only on the
|
|
1502
|
+
// assembled page, so overlap them before enriching its rows.
|
|
1503
|
+
const [, snapshot, tokensByAddress] = await Promise.all([
|
|
1504
|
+
resolveSwapModes(c, { chainId, swaps: page.data }),
|
|
1505
|
+
denomination !== undefined && page.data.length > 0
|
|
1506
|
+
? VerifiedTokens.snapshot(c, chainId).catch(() => undefined)
|
|
1507
|
+
: undefined,
|
|
1508
|
+
Tokens.resolveTokens(c, {
|
|
1509
|
+
addresses: page.data.flatMap((swap) => swap.route),
|
|
1510
|
+
chainId,
|
|
1511
|
+
include: options.include,
|
|
1512
|
+
}),
|
|
1513
|
+
]);
|
|
1511
1514
|
const rates = denomination
|
|
1512
1515
|
? await Valuation.ratesFor(c, {
|
|
1513
1516
|
currencies: snapshot
|
|
@@ -2193,26 +2196,37 @@ export function exchanges(options = {}) {
|
|
|
2193
2196
|
const options = c.req.valid('query');
|
|
2194
2197
|
const chainId = options.chainId ?? c.get('chainId');
|
|
2195
2198
|
try {
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
levels: options.levels,
|
|
2203
|
-
pair: target,
|
|
2199
|
+
// Pair definitions are immutable after creation, so cache successful
|
|
2200
|
+
// point lookups without making unknown pairs stale.
|
|
2201
|
+
const target = await Store.memoize(async () => (await getPairsByBase(c, { bases: [baseAddress], chainId })).get(baseAddress), {
|
|
2202
|
+
key: `exchange:v1:${chainId}:pair-by-base:${baseAddress}:v1`,
|
|
2203
|
+
store: c.get('store'),
|
|
2204
|
+
ttl: Ttl.minutes(5),
|
|
2204
2205
|
});
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2206
|
+
if (!target)
|
|
2207
|
+
return pairNotFoundError(c, {
|
|
2208
|
+
base: baseAddress,
|
|
2209
|
+
pairIndex: await getPairIndex(c, { chainId }),
|
|
2210
|
+
});
|
|
2211
|
+
// Token metadata is opt-in and resolves once per pair onto the top-level
|
|
2212
|
+
// `base`/`quote` slots. Run it alongside the independent depth RPC scan.
|
|
2213
|
+
const [{ asks, bids }, tokensByAddress] = await Promise.all([
|
|
2214
|
+
getPairDepth(c, {
|
|
2215
|
+
chainId,
|
|
2216
|
+
levels: options.levels,
|
|
2217
|
+
pair: target,
|
|
2218
|
+
}),
|
|
2219
|
+
options.include.includes('tokens')
|
|
2220
|
+
? Tokens.resolveTokens(c, {
|
|
2221
|
+
addresses: [target.base, target.quote],
|
|
2222
|
+
chainId,
|
|
2223
|
+
include: tokenFields,
|
|
2224
|
+
})
|
|
2225
|
+
: undefined,
|
|
2226
|
+
]);
|
|
2208
2227
|
let base = { address: target.base };
|
|
2209
2228
|
let quote = { address: target.quote };
|
|
2210
|
-
if (
|
|
2211
|
-
const tokensByAddress = await Tokens.resolveTokens(c, {
|
|
2212
|
-
addresses: [target.base, target.quote],
|
|
2213
|
-
chainId,
|
|
2214
|
-
include: tokenFields,
|
|
2215
|
-
});
|
|
2229
|
+
if (tokensByAddress) {
|
|
2216
2230
|
const baseMeta = tokensByAddress.get(target.base);
|
|
2217
2231
|
const quoteMeta = tokensByAddress.get(target.quote);
|
|
2218
2232
|
if (baseMeta)
|
|
@@ -2651,6 +2665,11 @@ async function getSwaps(c, options) {
|
|
|
2651
2665
|
// the group timestamp.
|
|
2652
2666
|
const fetchGroups = (activeCursor, batchLimit, window) => {
|
|
2653
2667
|
const { having, where } = withCursorSql(activeCursor);
|
|
2668
|
+
const windowFilters = window === 'indexedHead'
|
|
2669
|
+
? [
|
|
2670
|
+
`f.block_num >= greatest(toInt128((SELECT max(num) FROM blocks)) - ${swapWindowBlocks - 1}, toInt128(0))`,
|
|
2671
|
+
]
|
|
2672
|
+
: [`f.block_num >= ${window.lo}`, `f.block_num <= ${window.hi}`];
|
|
2654
2673
|
return tidx.fetch({
|
|
2655
2674
|
chainId,
|
|
2656
2675
|
engine: 'clickhouse',
|
|
@@ -2660,7 +2679,7 @@ async function getSwaps(c, options) {
|
|
|
2660
2679
|
groupArray(tuple(f.log_idx, toString(f."orderId"), f.maker,
|
|
2661
2680
|
toString(f."amountFilled"), f."partialFill")) AS fills
|
|
2662
2681
|
FROM dex_fills f
|
|
2663
|
-
WHERE ${[...where,
|
|
2682
|
+
WHERE ${[...where, ...windowFilters].join(' AND ')}
|
|
2664
2683
|
GROUP BY f.block_num, f.tx_hash, f.taker
|
|
2665
2684
|
${having}
|
|
2666
2685
|
ORDER BY block_num ${direction}, first_idx ${direction}
|
|
@@ -2707,20 +2726,17 @@ async function getSwaps(c, options) {
|
|
|
2707
2726
|
...new Set(groups.flatMap((group) => group.fills.map((fill) => fill.orderId))),
|
|
2708
2727
|
],
|
|
2709
2728
|
}));
|
|
2710
|
-
// Each fill's book quote
|
|
2711
|
-
//
|
|
2712
|
-
//
|
|
2713
|
-
// decode (genesis system books) and have no `dex_pairs` row.
|
|
2729
|
+
// Each fill's book quote comes back with its order state when indexed;
|
|
2730
|
+
// otherwise read the base token's on-chain `quoteToken()` — some books
|
|
2731
|
+
// predate the indexer's `PairCreated` decode (genesis system books).
|
|
2714
2732
|
const bases = [
|
|
2715
2733
|
...new Set([...states.values()].flatMap((events) => events.map((event) => event.token))),
|
|
2716
2734
|
];
|
|
2717
|
-
const pairs = await getPairsByBase(c, { bases, chainId });
|
|
2718
2735
|
const quoteByBase = new Map();
|
|
2719
|
-
for (const
|
|
2720
|
-
const
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
}
|
|
2736
|
+
for (const events of states.values())
|
|
2737
|
+
for (const event of events)
|
|
2738
|
+
if (event.quoteToken !== undefined)
|
|
2739
|
+
quoteByBase.set(event.token, event.quoteToken);
|
|
2724
2740
|
const fallback = await Timing.time(c, 'swap_quotes', () => resolveBookQuotes(c, {
|
|
2725
2741
|
bases: bases.filter((bookBase) => !quoteByBase.has(bookBase)),
|
|
2726
2742
|
chainId,
|
|
@@ -2808,6 +2824,15 @@ async function getSwaps(c, options) {
|
|
|
2808
2824
|
}
|
|
2809
2825
|
: undefined;
|
|
2810
2826
|
}
|
|
2827
|
+
// The newest unfiltered page can derive its 100k-block lower bound from
|
|
2828
|
+
// `blocks` inside the grouped query, avoiding a separate TIDX request.
|
|
2829
|
+
if (order === 'desc' &&
|
|
2830
|
+
cursorBlock === undefined &&
|
|
2831
|
+
fromBlock === undefined &&
|
|
2832
|
+
fromTimestamp === undefined &&
|
|
2833
|
+
toBlock === undefined &&
|
|
2834
|
+
toTimestamp === undefined)
|
|
2835
|
+
return { firstWindow: 'indexedHead', hi: Number.MAX_SAFE_INTEGER, lo: 0 };
|
|
2811
2836
|
const result = await tidx.fetch({
|
|
2812
2837
|
chainId,
|
|
2813
2838
|
engine: 'clickhouse',
|
|
@@ -2831,7 +2856,8 @@ async function getSwaps(c, options) {
|
|
|
2831
2856
|
const batchLimit = limit + 1;
|
|
2832
2857
|
let activeCursor = cursor;
|
|
2833
2858
|
// Selective scans jump to the next populated block through a bounded
|
|
2834
|
-
// lookup. Unfiltered scans retain the fixed-stride min/max sweep
|
|
2859
|
+
// lookup. Unfiltered scans retain the fixed-stride min/max sweep after
|
|
2860
|
+
// the newest page's indexed-head window.
|
|
2835
2861
|
const windowFrom = async (anchor, knownMatchingBlock) => {
|
|
2836
2862
|
if (order === 'desc') {
|
|
2837
2863
|
const value = Math.min(upperBound, anchor ?? upperBound);
|
|
@@ -2846,12 +2872,18 @@ async function getSwaps(c, options) {
|
|
|
2846
2872
|
? { hi: Math.min(upperBound, lo + swapWindowBlocks - 1), lo }
|
|
2847
2873
|
: undefined;
|
|
2848
2874
|
};
|
|
2849
|
-
let window = await windowFrom(cursorBlock, bounds.firstMatchingBlock);
|
|
2875
|
+
let window = bounds.firstWindow ?? (await windowFrom(cursorBlock, bounds.firstMatchingBlock));
|
|
2850
2876
|
// Slide to the next disjoint window away from the newest block and reset
|
|
2851
2877
|
// the cursor: every row in the next window is already past the cursor
|
|
2852
2878
|
// anchor in the requested order, so no anchor refinement is needed.
|
|
2853
|
-
const slideWindow = async () => {
|
|
2879
|
+
const slideWindow = async (indexedHeadAnchor) => {
|
|
2854
2880
|
activeCursor = undefined;
|
|
2881
|
+
if (window === 'indexedHead') {
|
|
2882
|
+
const matchingBlock = await findMatchingBlock(indexedHeadAnchor);
|
|
2883
|
+
window =
|
|
2884
|
+
matchingBlock === undefined ? undefined : await windowFrom(matchingBlock, matchingBlock);
|
|
2885
|
+
return;
|
|
2886
|
+
}
|
|
2855
2887
|
window =
|
|
2856
2888
|
window === undefined
|
|
2857
2889
|
? undefined
|
|
@@ -2886,7 +2918,7 @@ async function getSwaps(c, options) {
|
|
|
2886
2918
|
// A short batch exhausts this window; a full one may leave more groups
|
|
2887
2919
|
// in it, so advance the keyset cursor and re-query the same window.
|
|
2888
2920
|
if (!fetchedFull) {
|
|
2889
|
-
await slideWindow();
|
|
2921
|
+
await slideWindow(order === 'desc' ? tail.blockNumber - 1 : tail.blockNumber + 1);
|
|
2890
2922
|
continue;
|
|
2891
2923
|
}
|
|
2892
2924
|
const next = cursorAfterWholeGroup(tail);
|
|
@@ -2914,12 +2946,7 @@ async function getSwaps(c, options) {
|
|
|
2914
2946
|
last.swap.fills[0].logIndex,
|
|
2915
2947
|
])
|
|
2916
2948
|
: null;
|
|
2917
|
-
|
|
2918
|
-
// Recover each swap's `mode` from transaction calldata — deferred to here
|
|
2919
|
-
// so the candidate scan never pays the `txs` lookup for rows beyond the
|
|
2920
|
-
// page. Best-effort: a failed lookup leaves `mode: null`.
|
|
2921
|
-
await resolveSwapModes(c, { chainId, swaps: data });
|
|
2922
|
-
return { data, nextCursor };
|
|
2949
|
+
return { data: pageRows.map((candidate) => candidate.swap), nextCursor };
|
|
2923
2950
|
});
|
|
2924
2951
|
}
|
|
2925
2952
|
/**
|
|
@@ -2986,6 +3013,8 @@ function parseGroupRow(row) {
|
|
|
2986
3013
|
* history compressed to the latest event (`argMax`, sentinel position
|
|
2987
3014
|
* `(-1, -1)` so it sorts first) plus every raw in-page event, so an order
|
|
2988
3015
|
* that flips between two of its page fills resolves each fill correctly.
|
|
3016
|
+
* The same query attaches each book's indexed quote token, avoiding a second
|
|
3017
|
+
* TIDX request; callers retain an RPC fallback for books absent from the index.
|
|
2989
3018
|
* `logs` is sorted by `(address, selector, block_num, log_idx)` with a
|
|
2990
3019
|
* `topic1` bloom index, so both halves are pruned range reads. Returned
|
|
2991
3020
|
* per-order event lists are position-sorted.
|
|
@@ -3007,16 +3036,27 @@ export async function resolveOrderStates(c, options) {
|
|
|
3007
3036
|
chainId,
|
|
3008
3037
|
engine: 'clickhouse',
|
|
3009
3038
|
query: `
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3039
|
+
WITH states AS (
|
|
3040
|
+
SELECT topic1, argMax(topic3, (block_num, log_idx)) AS t3,
|
|
3041
|
+
argMax(data, (block_num, log_idx)) AS payload,
|
|
3042
|
+
toInt64(-1) AS bn, toInt32(-1) AS li
|
|
3043
|
+
FROM logs
|
|
3044
|
+
WHERE ${eventFilter} AND block_num < ${minBlock}
|
|
3045
|
+
GROUP BY topic1
|
|
3046
|
+
UNION ALL
|
|
3047
|
+
SELECT topic1, topic3 AS t3, data AS payload, block_num AS bn, log_idx AS li
|
|
3048
|
+
FROM logs
|
|
3049
|
+
WHERE ${eventFilter} AND block_num >= ${minBlock} AND block_num <= ${maxBlock}
|
|
3050
|
+
)
|
|
3051
|
+
SELECT states.*, pairs.quote AS quote_token
|
|
3052
|
+
FROM states
|
|
3053
|
+
LEFT JOIN (
|
|
3054
|
+
-- Preserve the oldest-pair rule without sorting the complete table.
|
|
3055
|
+
SELECT base, argMin(quote, (block_num, log_idx)) AS quote
|
|
3056
|
+
FROM dex_pairs
|
|
3057
|
+
WHERE address = '${stablecoinDex}'
|
|
3058
|
+
GROUP BY base
|
|
3059
|
+
) AS pairs ON pairs.base = concat('0x', lower(substring(states.t3, 27)))
|
|
3020
3060
|
`,
|
|
3021
3061
|
});
|
|
3022
3062
|
for (const row of result.rows) {
|
|
@@ -3045,6 +3085,7 @@ function parseStateRow(row) {
|
|
|
3045
3085
|
const payload = Value.toText(row['payload']);
|
|
3046
3086
|
const blockNumber = Value.toNumber(row['bn']);
|
|
3047
3087
|
const logIndex = Value.toNumber(row['li']);
|
|
3088
|
+
const quoteToken = Schema.TokenAddress.safeParse(row['quote_token']);
|
|
3048
3089
|
if (topic1 === undefined ||
|
|
3049
3090
|
!/^0x[0-9a-fA-F]{64}$/.test(topic1) ||
|
|
3050
3091
|
topic3 === undefined ||
|
|
@@ -3064,6 +3105,7 @@ function parseStateRow(row) {
|
|
|
3064
3105
|
blockNumber,
|
|
3065
3106
|
isBid,
|
|
3066
3107
|
logIndex,
|
|
3108
|
+
...(quoteToken.success ? { quoteToken: quoteToken.data } : {}),
|
|
3067
3109
|
tick,
|
|
3068
3110
|
token: `0x${topic3.slice(26).toLowerCase()}`,
|
|
3069
3111
|
},
|
|
@@ -3493,15 +3535,10 @@ const orderScanCap = 5000;
|
|
|
3493
3535
|
const globalOrderScanCap = 2000;
|
|
3494
3536
|
/**
|
|
3495
3537
|
* Batch size for `OrderCancelled` / `OrderFilled` `WHERE "orderId" IN (...)`
|
|
3496
|
-
* lookups.
|
|
3497
|
-
*
|
|
3498
|
-
* `tempoxyz/ak47` commit `273d88d`); very large lists still inflate SQL parse
|
|
3499
|
-
* cost, but each batch is also an independent transient-error round trip, so
|
|
3500
|
-
* 1000 balances parse cost against keeping the batch count (and thus the
|
|
3501
|
-
* failure surface) low — a typical pair snapshot still resolves in one trip and
|
|
3502
|
-
* the capped global feed in ~two.
|
|
3538
|
+
* lookups. A 2000-ID batch uses indexed state paths while native fill
|
|
3539
|
+
* aggregation keeps the response below SQL and result limits.
|
|
3503
3540
|
*/
|
|
3504
|
-
const orderInBatchSize =
|
|
3541
|
+
const orderInBatchSize = 2000;
|
|
3505
3542
|
/**
|
|
3506
3543
|
* Signed-int16 bias used to encode `tick` in the cursor as a non-negative
|
|
3507
3544
|
* uint string. `Cursor.Field === 'int'` is non-negative-only, so signed ticks
|
|
@@ -3518,8 +3555,8 @@ const orderCursorTickBias = 32768;
|
|
|
3518
3555
|
* when scoped (string column with a bloom-filter index on `topic1`), and the
|
|
3519
3556
|
* fill / cancellation joins use `WHERE "orderId" IN (...)` against the same
|
|
3520
3557
|
* index. The decoded `tick` column has no ClickHouse index, so tick sort is
|
|
3521
|
-
* still applied app-side.
|
|
3522
|
-
*
|
|
3558
|
+
* still applied app-side. ClickHouse aggregates fills per order before the
|
|
3559
|
+
* app computes each remaining amount.
|
|
3523
3560
|
*
|
|
3524
3561
|
* `remaining = OrderPlaced.amount - sum(OrderFilled.amountFilled)`; orders
|
|
3525
3562
|
* with an `OrderCancelled` event are excluded outright. Each row is annotated
|
|
@@ -3989,7 +4026,7 @@ async function fetchCancelledByIds(c, options) {
|
|
|
3989
4026
|
query: `
|
|
3990
4027
|
SELECT "orderId"
|
|
3991
4028
|
FROM OrderCancelled
|
|
3992
|
-
WHERE "orderId" IN (${batch.join(', ')})
|
|
4029
|
+
WHERE address = '${stablecoinDex}' AND "orderId" IN (${batch.join(', ')})
|
|
3993
4030
|
`,
|
|
3994
4031
|
signatures: [orderCancelledSignature],
|
|
3995
4032
|
});
|
|
@@ -4002,10 +4039,9 @@ async function fetchCancelledByIds(c, options) {
|
|
|
4002
4039
|
return cancelled;
|
|
4003
4040
|
}
|
|
4004
4041
|
/**
|
|
4005
|
-
* Sums `amountFilled` per `orderId` across all matching `
|
|
4006
|
-
* the snapshot window via batched `WHERE "orderId" IN (...)` queries.
|
|
4007
|
-
*
|
|
4008
|
-
* (indexer-side `SUM(...)` over decoded columns is currently unreliable).
|
|
4042
|
+
* Sums `amountFilled` per `orderId` across all matching native `dex_fills`
|
|
4043
|
+
* rows in the snapshot window via batched `WHERE "orderId" IN (...)` queries.
|
|
4044
|
+
* Native aggregation bounds results, and stringification preserves UInt256 precision through JSON parsing.
|
|
4009
4045
|
*/
|
|
4010
4046
|
async function fetchFillSumsByIds(c, options) {
|
|
4011
4047
|
const { chainId, orderIds } = options;
|
|
@@ -4021,18 +4057,20 @@ async function fetchFillSumsByIds(c, options) {
|
|
|
4021
4057
|
const result = await tidx.fetch({
|
|
4022
4058
|
chainId,
|
|
4023
4059
|
engine: 'clickhouse',
|
|
4060
|
+
// Dynamic order IDs prevent signature-backed row inference; each aggregate is validated below before use.
|
|
4024
4061
|
query: `
|
|
4025
|
-
SELECT "orderId", "amountFilled"
|
|
4062
|
+
SELECT "orderId", toString(sum("amountFilled")) AS amount_filled
|
|
4026
4063
|
FROM dex_fills
|
|
4027
|
-
WHERE "orderId" IN (${batch.join(', ')})
|
|
4064
|
+
WHERE address = '${stablecoinDex}' AND "orderId" IN (${batch.join(', ')})
|
|
4065
|
+
GROUP BY "orderId"
|
|
4028
4066
|
`,
|
|
4029
4067
|
});
|
|
4030
4068
|
for (const row of result.rows) {
|
|
4031
4069
|
const id = Value.toIntegerString(row['orderId']);
|
|
4032
|
-
const filled = Value.toIntegerString(row['
|
|
4070
|
+
const filled = Value.toIntegerString(row['amount_filled']);
|
|
4033
4071
|
if (id === undefined || filled === undefined)
|
|
4034
4072
|
continue;
|
|
4035
|
-
sums.set(id,
|
|
4073
|
+
sums.set(id, BigInt(filled));
|
|
4036
4074
|
}
|
|
4037
4075
|
}
|
|
4038
4076
|
return sums;
|