@the-situation/indexer 0.12.6 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/dist/__tests__/performance/perf-fixtures.d.ts +26 -0
- package/dist/__tests__/performance/perf-fixtures.d.ts.map +1 -0
- package/dist/__tests__/performance/perf-fixtures.js +172 -0
- package/dist/__tests__/performance/perf-fixtures.js.map +1 -0
- package/dist/__tests__/performance/perf-utils.d.ts +42 -0
- package/dist/__tests__/performance/perf-utils.d.ts.map +1 -0
- package/dist/__tests__/performance/perf-utils.js +91 -0
- package/dist/__tests__/performance/perf-utils.js.map +1 -0
- package/dist/api/app.d.ts +3 -3
- package/dist/api/routes/admin-subscriptions.d.ts +3 -3
- package/dist/api/routes/admin.d.ts.map +1 -1
- package/dist/api/routes/admin.js +4 -0
- package/dist/api/routes/admin.js.map +1 -1
- package/dist/api/routes/market-events.d.ts.map +1 -1
- package/dist/api/routes/market-events.js +8 -0
- package/dist/api/routes/market-events.js.map +1 -1
- package/dist/api/routes/market-lps.d.ts.map +1 -1
- package/dist/api/routes/market-lps.js +23 -9
- package/dist/api/routes/market-lps.js.map +1 -1
- package/dist/api/routes/markets.d.ts.map +1 -1
- package/dist/api/routes/markets.js +8 -0
- package/dist/api/routes/markets.js.map +1 -1
- package/dist/api/routes/trader-events.d.ts.map +1 -1
- package/dist/api/routes/trader-events.js +8 -0
- package/dist/api/routes/trader-events.js.map +1 -1
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +4 -0
- package/dist/db/connection.js.map +1 -1
- package/dist/db/repositories/activity-feed.d.ts +3 -0
- package/dist/db/repositories/activity-feed.d.ts.map +1 -1
- package/dist/db/repositories/activity-feed.js +33 -18
- package/dist/db/repositories/activity-feed.js.map +1 -1
- package/dist/db/repositories/event.d.ts +23 -0
- package/dist/db/repositories/event.d.ts.map +1 -1
- package/dist/db/repositories/event.js +141 -60
- package/dist/db/repositories/event.js.map +1 -1
- package/dist/db/repositories/lp-position.d.ts +2 -10
- package/dist/db/repositories/lp-position.d.ts.map +1 -1
- package/dist/db/repositories/lp-position.js +54 -52
- package/dist/db/repositories/lp-position.js.map +1 -1
- package/dist/db/repositories/market-state.d.ts +10 -0
- package/dist/db/repositories/market-state.d.ts.map +1 -1
- package/dist/db/repositories/market-state.js +16 -5
- package/dist/db/repositories/market-state.js.map +1 -1
- package/dist/db/repositories/market.d.ts +7 -0
- package/dist/db/repositories/market.d.ts.map +1 -1
- package/dist/db/repositories/market.js +32 -24
- package/dist/db/repositories/market.js.map +1 -1
- package/dist/db/repositories/multinoulli-snapshots.d.ts +1 -0
- package/dist/db/repositories/multinoulli-snapshots.d.ts.map +1 -1
- package/dist/db/repositories/multinoulli-snapshots.js +7 -5
- package/dist/db/repositories/multinoulli-snapshots.js.map +1 -1
- package/dist/db/repositories/position.d.ts +1 -0
- package/dist/db/repositories/position.d.ts.map +1 -1
- package/dist/db/repositories/position.js +9 -0
- package/dist/db/repositories/position.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +114 -5
- package/dist/db/schema.js.map +1 -1
- package/dist/etl/decoder.js +16 -0
- package/dist/etl/decoder.js.map +1 -1
- package/dist/etl/event-indexer.d.ts +1 -1
- package/dist/etl/event-indexer.d.ts.map +1 -1
- package/dist/etl/event-indexer.js +138 -74
- package/dist/etl/event-indexer.js.map +1 -1
- package/dist/etl/lp-position-refresher.d.ts +9 -3
- package/dist/etl/lp-position-refresher.d.ts.map +1 -1
- package/dist/etl/lp-position-refresher.js +74 -21
- package/dist/etl/lp-position-refresher.js.map +1 -1
- package/dist/etl/position-refresher.d.ts +9 -3
- package/dist/etl/position-refresher.d.ts.map +1 -1
- package/dist/etl/position-refresher.js +44 -36
- package/dist/etl/position-refresher.js.map +1 -1
- package/dist/etl/state-refresher.d.ts +8 -3
- package/dist/etl/state-refresher.d.ts.map +1 -1
- package/dist/etl/state-refresher.js +137 -12
- package/dist/etl/state-refresher.js.map +1 -1
- package/dist/layers/ChainReaderLive.d.ts.map +1 -1
- package/dist/layers/ChainReaderLive.js +69 -22
- package/dist/layers/ChainReaderLive.js.map +1 -1
- package/dist/lp/valuation.d.ts +34 -0
- package/dist/lp/valuation.d.ts.map +1 -0
- package/dist/lp/valuation.js +282 -0
- package/dist/lp/valuation.js.map +1 -0
- package/dist/services/ChainReader.d.ts +21 -0
- package/dist/services/ChainReader.d.ts.map +1 -1
- package/dist/services/ChainReader.js.map +1 -1
- package/dist/types/api.d.ts +29 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/event.d.ts +24 -0
- package/dist/types/event.d.ts.map +1 -1
- package/dist/types/market.d.ts +16 -0
- package/dist/types/market.d.ts.map +1 -1
- package/package.json +7 -5
|
@@ -53,6 +53,14 @@ function decodedEventToInsert(marketAddress, d) {
|
|
|
53
53
|
upper_bound: 0,
|
|
54
54
|
old_mean: null,
|
|
55
55
|
old_std_dev: null,
|
|
56
|
+
mean_2: null,
|
|
57
|
+
std_dev_2: null,
|
|
58
|
+
lower_bound_2: null,
|
|
59
|
+
upper_bound_2: null,
|
|
60
|
+
old_mean_2: null,
|
|
61
|
+
old_std_dev_2: null,
|
|
62
|
+
rho: null,
|
|
63
|
+
old_rho: null,
|
|
56
64
|
collateral_posted: d.tokenAmount,
|
|
57
65
|
raw_data: JSON.stringify(d.rawData),
|
|
58
66
|
outcome_count: d.outcomeCount,
|
|
@@ -78,6 +86,14 @@ function decodedEventToInsert(marketAddress, d) {
|
|
|
78
86
|
upper_bound: 0,
|
|
79
87
|
old_mean: null,
|
|
80
88
|
old_std_dev: null,
|
|
89
|
+
mean_2: null,
|
|
90
|
+
std_dev_2: null,
|
|
91
|
+
lower_bound_2: null,
|
|
92
|
+
upper_bound_2: null,
|
|
93
|
+
old_mean_2: null,
|
|
94
|
+
old_std_dev_2: null,
|
|
95
|
+
rho: null,
|
|
96
|
+
old_rho: null,
|
|
81
97
|
collateral_posted: null,
|
|
82
98
|
raw_data: JSON.stringify(d.rawData),
|
|
83
99
|
settlement_outcome_index: d.settlementOutcomeIndex,
|
|
@@ -101,6 +117,14 @@ function decodedEventToInsert(marketAddress, d) {
|
|
|
101
117
|
upper_bound: 0,
|
|
102
118
|
old_mean: null,
|
|
103
119
|
old_std_dev: null,
|
|
120
|
+
mean_2: null,
|
|
121
|
+
std_dev_2: null,
|
|
122
|
+
lower_bound_2: null,
|
|
123
|
+
upper_bound_2: null,
|
|
124
|
+
old_mean_2: null,
|
|
125
|
+
old_std_dev_2: null,
|
|
126
|
+
rho: null,
|
|
127
|
+
old_rho: null,
|
|
104
128
|
collateral_posted: null,
|
|
105
129
|
raw_data: JSON.stringify(d.rawData),
|
|
106
130
|
settlement_outcomes_json: JSON.stringify(d.outcomes),
|
|
@@ -120,6 +144,8 @@ function decodedEventToInsert(marketAddress, d) {
|
|
|
120
144
|
trader: d.provider,
|
|
121
145
|
mean: 0, std_dev: 0, lower_bound: 0, upper_bound: 0,
|
|
122
146
|
old_mean: null, old_std_dev: null,
|
|
147
|
+
mean_2: null, std_dev_2: null, lower_bound_2: null, upper_bound_2: null,
|
|
148
|
+
old_mean_2: null, old_std_dev_2: null, rho: null, old_rho: null,
|
|
123
149
|
collateral_posted: d.tokenAmount,
|
|
124
150
|
raw_data: JSON.stringify(d.rawData),
|
|
125
151
|
settlement_value: null, settlement_x1: null, settlement_x2: null,
|
|
@@ -141,6 +167,14 @@ function decodedEventToInsert(marketAddress, d) {
|
|
|
141
167
|
upper_bound: n.upperBound,
|
|
142
168
|
old_mean: n.oldMean,
|
|
143
169
|
old_std_dev: n.oldStdDev,
|
|
170
|
+
mean_2: n.mean2 ?? null,
|
|
171
|
+
std_dev_2: n.stdDev2 ?? null,
|
|
172
|
+
lower_bound_2: n.lowerBound2 ?? null,
|
|
173
|
+
upper_bound_2: n.upperBound2 ?? null,
|
|
174
|
+
old_mean_2: n.oldMean2 ?? null,
|
|
175
|
+
old_std_dev_2: n.oldStdDev2 ?? null,
|
|
176
|
+
rho: n.rho ?? null,
|
|
177
|
+
old_rho: n.oldRho ?? null,
|
|
144
178
|
collateral_posted: n.collateralPosted,
|
|
145
179
|
raw_data: JSON.stringify(n.rawData),
|
|
146
180
|
settlement_value: null,
|
|
@@ -158,6 +192,8 @@ Effect.gen(function* () {
|
|
|
158
192
|
const lastBlock = cursor?.last_block_number ?? 0;
|
|
159
193
|
// Fetch all pages of events from Voyager
|
|
160
194
|
const allEvents = [];
|
|
195
|
+
let maxProcessedBlock = lastBlock;
|
|
196
|
+
let maxProcessedTimestamp = cursor?.last_timestamp ?? 0;
|
|
161
197
|
let currentPage = 1;
|
|
162
198
|
let hasMore = true;
|
|
163
199
|
while (hasMore && currentPage <= MAX_PAGES) {
|
|
@@ -173,17 +209,20 @@ Effect.gen(function* () {
|
|
|
173
209
|
break;
|
|
174
210
|
}
|
|
175
211
|
const batch = batchResult.right;
|
|
176
|
-
// Filter to relevant events after our cursor
|
|
212
|
+
// Filter to relevant events after our cursor in a single pass.
|
|
177
213
|
let sawOldEvent = false;
|
|
178
|
-
const
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
214
|
+
for (const raw of batch.events) {
|
|
215
|
+
const name = raw.name.toLowerCase();
|
|
216
|
+
if (!RELEVANT_NAMES.has(name))
|
|
217
|
+
continue;
|
|
218
|
+
if (raw.blockNumber <= lastBlock) {
|
|
182
219
|
sawOldEvent = true;
|
|
220
|
+
continue;
|
|
183
221
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
222
|
+
allEvents.push(raw);
|
|
223
|
+
maxProcessedBlock = Math.max(maxProcessedBlock, raw.blockNumber);
|
|
224
|
+
maxProcessedTimestamp = Math.max(maxProcessedTimestamp, raw.timestamp);
|
|
225
|
+
}
|
|
187
226
|
// Early exit: if we've reached events we already indexed, stop paging
|
|
188
227
|
if (sawOldEvent) {
|
|
189
228
|
break;
|
|
@@ -194,85 +233,100 @@ Effect.gen(function* () {
|
|
|
194
233
|
if (allEvents.length === 0) {
|
|
195
234
|
return { marketAddress, newEvents: 0, lastBlock };
|
|
196
235
|
}
|
|
197
|
-
|
|
236
|
+
const eventsToDecode = [];
|
|
237
|
+
// Handle PositionClaimed events — update LP claim status if the claimer is an LP.
|
|
238
|
+
// Keep them out of decodeEvents because they are not persisted in market_events.
|
|
198
239
|
for (const raw of allEvents) {
|
|
199
|
-
if (raw.name.toLowerCase()
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
240
|
+
if (raw.name.toLowerCase() === 'positionclaimed') {
|
|
241
|
+
const claimer = (raw.keys[1] ?? '').toLowerCase();
|
|
242
|
+
if (!claimer)
|
|
243
|
+
continue;
|
|
244
|
+
// Check if the claimer has LP shares in this market
|
|
245
|
+
const lpPosition = db.lpPositions.findOne(marketAddress, claimer);
|
|
246
|
+
if (lpPosition && lpPosition.claimed_at == null) {
|
|
247
|
+
// Parse token_payout from data if available (u256: low, high)
|
|
248
|
+
let claimPayout = 0;
|
|
249
|
+
try {
|
|
250
|
+
// PositionClaimed data layout:
|
|
251
|
+
// [0..4] positionValue (SQ128x128Raw: limb0,limb1,limb2,limb3,neg)
|
|
252
|
+
// [5..9] collateralReturned (SQ128x128Raw)
|
|
253
|
+
// [10,11] tokenPayout (u256: low, high)
|
|
254
|
+
if (raw.data.length >= 12) {
|
|
255
|
+
const low = BigInt(raw.data[10]);
|
|
256
|
+
const high = BigInt(raw.data[11]);
|
|
257
|
+
claimPayout = Number(low + (high << 128n)) / 1e18;
|
|
258
|
+
}
|
|
218
259
|
}
|
|
260
|
+
catch {
|
|
261
|
+
// Fallback: leave claimPayout as 0
|
|
262
|
+
}
|
|
263
|
+
db.lpPositions.markClaimed(marketAddress, claimer, raw.timestamp, claimPayout);
|
|
219
264
|
}
|
|
220
|
-
|
|
221
|
-
// Fallback: leave claimPayout as 0
|
|
222
|
-
}
|
|
223
|
-
db.lpPositions.markClaimed(marketAddress, claimer, raw.timestamp, claimPayout);
|
|
265
|
+
continue;
|
|
224
266
|
}
|
|
267
|
+
eventsToDecode.push(raw);
|
|
225
268
|
}
|
|
226
269
|
// Decode events (pass market type for discrimination)
|
|
227
|
-
const decoded = decodeEvents(
|
|
270
|
+
const decoded = decodeEvents(eventsToDecode, marketType);
|
|
228
271
|
if (decoded.length === 0) {
|
|
229
272
|
// Even if no decodable events, advance cursor past any raw events we processed
|
|
230
273
|
// (e.g. PositionClaimed) to avoid re-processing them next cycle.
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
if (maxBlock > lastBlock) {
|
|
234
|
-
db.cursors.upsert(marketAddress, maxBlock, maxTs, 0);
|
|
274
|
+
if (maxProcessedBlock > lastBlock) {
|
|
275
|
+
db.cursors.upsert(marketAddress, maxProcessedBlock, maxProcessedTimestamp, 0);
|
|
235
276
|
}
|
|
236
|
-
return { marketAddress, newEvents: 0, lastBlock:
|
|
277
|
+
return { marketAddress, newEvents: 0, lastBlock: maxProcessedBlock };
|
|
237
278
|
}
|
|
238
|
-
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
279
|
+
const inputs = [];
|
|
280
|
+
const discoveredTraders = new Set();
|
|
281
|
+
const lpProvidersToRecompute = new Set();
|
|
282
|
+
let lastMean = 0;
|
|
283
|
+
let lastSigma = 0;
|
|
284
|
+
let lastMean2 = null;
|
|
285
|
+
let lastSigma2 = null;
|
|
286
|
+
let lastRho = null;
|
|
287
|
+
let checkedStateFallback = false;
|
|
288
|
+
// Build insert inputs + discover participants in one pass.
|
|
289
|
+
for (const d of decoded) {
|
|
290
|
+
let input = decodedEventToInsert(marketAddress, d);
|
|
291
|
+
// Settlement events have mean=0, sigma=0 — carry forward the last known distribution
|
|
292
|
+
// so the time-series chart doesn't drop to zero on settlement.
|
|
244
293
|
if ((input.event_type === 'market_settled' || input.event_type === 'market_settled_multi') &&
|
|
245
294
|
input.mean === 0 &&
|
|
246
295
|
input.std_dev === 0) {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
lastMean = prev.mean;
|
|
254
|
-
lastSigma = prev.std_dev;
|
|
255
|
-
break;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
// If not found in batch, try the DB
|
|
259
|
-
if (lastMean === 0 && lastSigma === 0) {
|
|
260
|
-
const state = db.marketState.findByMarket(marketAddress);
|
|
261
|
-
if (state?.mean != null && state.mean !== 0) {
|
|
262
|
-
lastMean = state.mean;
|
|
263
|
-
lastSigma = state.sigma ?? 0;
|
|
296
|
+
if (lastMean === 0 && lastSigma === 0 && !checkedStateFallback) {
|
|
297
|
+
checkedStateFallback = true;
|
|
298
|
+
const stateFallback = db.marketState.findByMarket(marketAddress);
|
|
299
|
+
if (stateFallback?.mean != null && stateFallback.mean !== 0) {
|
|
300
|
+
lastMean = stateFallback.mean;
|
|
301
|
+
lastSigma = stateFallback.sigma ?? 0;
|
|
264
302
|
}
|
|
265
303
|
}
|
|
266
304
|
if (lastMean !== 0 || lastSigma !== 0) {
|
|
267
|
-
|
|
305
|
+
input = { ...input, mean: lastMean, std_dev: lastSigma };
|
|
306
|
+
}
|
|
307
|
+
if (lastMean2 != null && lastSigma2 != null) {
|
|
308
|
+
input = {
|
|
309
|
+
...input,
|
|
310
|
+
mean_2: lastMean2,
|
|
311
|
+
std_dev_2: lastSigma2,
|
|
312
|
+
lower_bound_2: Number((lastMean2 - lastSigma2).toFixed(2)),
|
|
313
|
+
upper_bound_2: Number((lastMean2 + lastSigma2).toFixed(2)),
|
|
314
|
+
rho: lastRho,
|
|
315
|
+
};
|
|
268
316
|
}
|
|
269
317
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
318
|
+
inputs.push(input);
|
|
319
|
+
if (input.mean !== 0 || input.std_dev !== 0) {
|
|
320
|
+
lastMean = input.mean;
|
|
321
|
+
lastSigma = input.std_dev;
|
|
322
|
+
}
|
|
323
|
+
if (input.mean_2 != null && input.std_dev_2 != null) {
|
|
324
|
+
lastMean2 = input.mean_2;
|
|
325
|
+
lastSigma2 = input.std_dev_2;
|
|
326
|
+
}
|
|
327
|
+
if (input.rho != null) {
|
|
328
|
+
lastRho = input.rho;
|
|
329
|
+
}
|
|
276
330
|
let trader = null;
|
|
277
331
|
if (isMultinoulliTradeEvent(d) || isNormalMarketEvent(d)) {
|
|
278
332
|
trader = d.trader;
|
|
@@ -281,21 +335,31 @@ Effect.gen(function* () {
|
|
|
281
335
|
trader = d.by;
|
|
282
336
|
}
|
|
283
337
|
if (trader) {
|
|
284
|
-
|
|
338
|
+
discoveredTraders.add(trader);
|
|
285
339
|
}
|
|
286
|
-
// LP provider discovery — recompute totals from events (idempotent)
|
|
287
340
|
if (isLPEvent(d)) {
|
|
288
|
-
|
|
289
|
-
db.lpPositions.recomputeFromEvents(marketAddress, d.provider);
|
|
341
|
+
lpProvidersToRecompute.add(d.provider);
|
|
290
342
|
}
|
|
291
343
|
// The bootstrapper LP enters via market_initialized (not liquidity_added).
|
|
292
344
|
// The initializer address is in keys[1] of the MarketInitialized event,
|
|
293
345
|
// surfaced as `d.trader` by the decoder. Create their LP position row so
|
|
294
346
|
// they show up in the Market Participants table.
|
|
295
347
|
if (d.eventType === 'market_initialized' && isNormalMarketEvent(d) && d.trader) {
|
|
296
|
-
|
|
297
|
-
|
|
348
|
+
lpProvidersToRecompute.add(d.trader);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
// Insert events + discover traders + update cursor atomically
|
|
352
|
+
const lastDecoded = decoded[decoded.length - 1];
|
|
353
|
+
const inserted = db.events.insertBatch(inputs);
|
|
354
|
+
for (const trader of discoveredTraders) {
|
|
355
|
+
db.positions.ensureTrader(marketAddress, trader);
|
|
356
|
+
}
|
|
357
|
+
if (lpProvidersToRecompute.size > 0) {
|
|
358
|
+
const providers = Array.from(lpProvidersToRecompute);
|
|
359
|
+
for (const provider of providers) {
|
|
360
|
+
db.lpPositions.ensureProvider(marketAddress, provider);
|
|
298
361
|
}
|
|
362
|
+
db.lpPositions.recomputeFromEventsBatch(marketAddress, providers);
|
|
299
363
|
}
|
|
300
364
|
// Update cursor before broadcasting (crash-safe: cursor persisted before clients notified)
|
|
301
365
|
db.cursors.upsert(marketAddress, lastDecoded.blockNumber, lastDecoded.timestamp, inserted);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-indexer.js","sourceRoot":"","sources":["../../src/etl/event-indexer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"event-indexer.js","sourceRoot":"","sources":["../../src/etl/event-indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,22 @@
|
|
|
2
2
|
* LP position refresher — reads LP shares from chain and computes current value.
|
|
3
3
|
*/
|
|
4
4
|
import { Effect } from 'effect';
|
|
5
|
+
import type { LPPositionRow } from '../db/repositories';
|
|
5
6
|
import { ChainReaderTag } from '../services/ChainReader';
|
|
6
7
|
import { DatabaseTag } from '../services/Database';
|
|
7
|
-
import type { MarketType } from '../types';
|
|
8
|
+
import type { MarketStateRow, MarketType } from '../types';
|
|
8
9
|
interface LPRefreshResult {
|
|
9
10
|
readonly marketAddress: string;
|
|
10
11
|
readonly provider: string;
|
|
11
12
|
readonly success: boolean;
|
|
12
13
|
readonly error?: string;
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
+
interface LPRefreshContext {
|
|
16
|
+
readonly marketStateByMarket?: ReadonlyMap<string, MarketStateRow>;
|
|
17
|
+
readonly netTraderPnlByMarket?: ReadonlyMap<string, number>;
|
|
18
|
+
readonly existingLPByKey?: ReadonlyMap<string, LPPositionRow>;
|
|
19
|
+
}
|
|
20
|
+
export declare const refreshLPPosition: (marketAddress: string, provider: string, marketType?: MarketType, context?: LPRefreshContext) => Effect.Effect<LPRefreshResult, never, DatabaseTag | ChainReaderTag>;
|
|
15
21
|
/**
|
|
16
22
|
* Discover bootstrapper LPs that were missed because market_initialized events
|
|
17
23
|
* weren't treated as LP events in older indexer versions. For each market, check
|
|
@@ -19,6 +25,6 @@ export declare const refreshLPPosition: (marketAddress: string, provider: string
|
|
|
19
25
|
* no lp_positions row, and create one.
|
|
20
26
|
*/
|
|
21
27
|
export declare const discoverBootstrapperLPs: Effect.Effect<number, never, DatabaseTag>;
|
|
22
|
-
export declare const refreshAllLPPositions: Effect.Effect<LPRefreshResult[], never,
|
|
28
|
+
export declare const refreshAllLPPositions: Effect.Effect<LPRefreshResult[], never, ChainReaderTag | DatabaseTag>;
|
|
23
29
|
export {};
|
|
24
30
|
//# sourceMappingURL=lp-position-refresher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lp-position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"lp-position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAmB,MAAM,UAAU,CAAC;AAM5E,UAAU,eAAe;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC/D;AAcD,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,UAAU,MAAM,EAChB,aAAY,UAAqB,EACjC,UAAS,gBAAqB,KAC7B,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,CAuFjE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,2CAmClC,CAAC;AAEH,eAAO,MAAM,qBAAqB,uEAqEhC,CAAC"}
|
|
@@ -5,7 +5,19 @@ import { Effect } from 'effect';
|
|
|
5
5
|
import { ChainReaderTag } from '../services/ChainReader';
|
|
6
6
|
import { DatabaseTag } from '../services/Database';
|
|
7
7
|
const TWO_128 = Number(2n ** 128n);
|
|
8
|
-
|
|
8
|
+
const RPC_CONCURRENCY = 5;
|
|
9
|
+
let bootstrapDiscoveryCursor = 0;
|
|
10
|
+
function lpPositionCacheKey(marketAddress, provider) {
|
|
11
|
+
return `${marketAddress}\u0000${provider}`;
|
|
12
|
+
}
|
|
13
|
+
function computeNetTraderPnl(positions) {
|
|
14
|
+
let netTraderPnl = 0;
|
|
15
|
+
for (const position of positions) {
|
|
16
|
+
netTraderPnl += (position.unrealized_pnl ?? 0) + (position.realized_pnl ?? 0);
|
|
17
|
+
}
|
|
18
|
+
return netTraderPnl;
|
|
19
|
+
}
|
|
20
|
+
export const refreshLPPosition = (marketAddress, provider, marketType = 'normal', context = {}) => Effect.gen(function* () {
|
|
9
21
|
const db = yield* DatabaseTag;
|
|
10
22
|
const chain = yield* ChainReaderTag;
|
|
11
23
|
if (marketType === 'multinoulli') {
|
|
@@ -19,7 +31,7 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
|
|
|
19
31
|
}
|
|
20
32
|
const { shares, sharesNumber } = sharesResult.right;
|
|
21
33
|
// Get pool totals from market state
|
|
22
|
-
const marketState = db.marketState.findByMarket(marketAddress);
|
|
34
|
+
const marketState = context.marketStateByMarket?.get(marketAddress) ?? db.marketState.findByMarket(marketAddress);
|
|
23
35
|
let currentValue = null;
|
|
24
36
|
let totalShares = 0;
|
|
25
37
|
let totalBacking = 0;
|
|
@@ -31,21 +43,19 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
|
|
|
31
43
|
// IMPORTANT: the contract drains LP backing by amplifier × position_value
|
|
32
44
|
// for each trader claim. Without the amplifier, this estimate is too high
|
|
33
45
|
// on markets with payoutAmplifier > 1.
|
|
34
|
-
const traderPositions = db.positions.findByMarket(marketAddress);
|
|
35
46
|
// Sum unrealized + realized PnL. For settled markets, unrealized=0
|
|
36
47
|
// and realized has the finalized value. For active, unrealized is live.
|
|
37
48
|
// NOTE: these PnL values ALREADY include the payout amplifier (the
|
|
38
49
|
// position refresher passes payoutAmplifier to computePositionValueAtPoint).
|
|
39
50
|
// Do NOT multiply by payoutAmplifier again — that double-counts it.
|
|
40
|
-
const netTraderPnl =
|
|
41
|
-
|
|
42
|
-
return sum + pnl;
|
|
43
|
-
}, 0);
|
|
51
|
+
const netTraderPnl = context.netTraderPnlByMarket?.get(marketAddress) ??
|
|
52
|
+
computeNetTraderPnl(db.positions.findByMarket(marketAddress));
|
|
44
53
|
const adjustedBacking = totalBacking - netTraderPnl;
|
|
45
54
|
currentValue = (sharesNumber / totalShares) * adjustedBacking;
|
|
46
55
|
}
|
|
47
56
|
}
|
|
48
|
-
const existing =
|
|
57
|
+
const existing = context.existingLPByKey?.get(lpPositionCacheKey(marketAddress, provider)) ??
|
|
58
|
+
db.lpPositions.findOne(marketAddress, provider);
|
|
49
59
|
let netDeposited = (existing?.total_deposited ?? 0) - (existing?.total_withdrawn ?? 0);
|
|
50
60
|
// If shares value at par (ignoring trader PnL) exceeds tracked deposits,
|
|
51
61
|
// the gap is from the market initialization bootstrap which doesn't appear
|
|
@@ -66,8 +76,7 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
|
|
|
66
76
|
unrealized_pnl: unrealizedPnl,
|
|
67
77
|
});
|
|
68
78
|
// Backfill entry distribution if not yet populated
|
|
69
|
-
|
|
70
|
-
if (lpRow && lpRow.entry_mean == null && marketState) {
|
|
79
|
+
if (existing && existing.entry_mean == null && marketState) {
|
|
71
80
|
db.lpPositions.upsertEntryDistribution(marketAddress, provider, marketState.mean ?? null, marketState.sigma ?? null, marketState.k ?? null);
|
|
72
81
|
}
|
|
73
82
|
return { marketAddress, provider, success: true };
|
|
@@ -80,17 +89,26 @@ export const refreshLPPosition = (marketAddress, provider, marketType = 'normal'
|
|
|
80
89
|
*/
|
|
81
90
|
export const discoverBootstrapperLPs = Effect.gen(function* () {
|
|
82
91
|
const db = yield* DatabaseTag;
|
|
83
|
-
//
|
|
92
|
+
// Scan only newly indexed market_initialized events since the previous pass.
|
|
84
93
|
const rawDb = db.db;
|
|
85
94
|
const missing = rawDb
|
|
86
|
-
.query(`SELECT DISTINCT me.market_address, LOWER(me.trader) AS provider
|
|
95
|
+
.query(`SELECT DISTINCT me.id AS event_id, me.market_address, LOWER(me.trader) AS provider
|
|
87
96
|
FROM market_events me
|
|
88
97
|
LEFT JOIN lp_positions lp
|
|
89
98
|
ON lp.market_address = me.market_address AND lp.provider = LOWER(me.trader)
|
|
90
|
-
WHERE me.
|
|
99
|
+
WHERE me.id > ?
|
|
100
|
+
AND me.event_type = 'market_initialized'
|
|
91
101
|
AND me.trader IS NOT NULL
|
|
92
102
|
AND lp.provider IS NULL`)
|
|
93
|
-
.all();
|
|
103
|
+
.all(bootstrapDiscoveryCursor);
|
|
104
|
+
const maxSeenRow = rawDb
|
|
105
|
+
.query(`SELECT MAX(id) AS max_id
|
|
106
|
+
FROM market_events
|
|
107
|
+
WHERE event_type = 'market_initialized'`)
|
|
108
|
+
.get();
|
|
109
|
+
if (maxSeenRow.max_id != null) {
|
|
110
|
+
bootstrapDiscoveryCursor = Math.max(bootstrapDiscoveryCursor, maxSeenRow.max_id);
|
|
111
|
+
}
|
|
94
112
|
for (const row of missing) {
|
|
95
113
|
db.lpPositions.ensureProvider(row.market_address, row.provider);
|
|
96
114
|
db.lpPositions.recomputeFromEvents(row.market_address, row.provider);
|
|
@@ -102,15 +120,50 @@ export const refreshAllLPPositions = Effect.gen(function* () {
|
|
|
102
120
|
// First, discover any bootstrapper LPs that were missed historically
|
|
103
121
|
yield* discoverBootstrapperLPs;
|
|
104
122
|
const allLP = db.lpPositions.findAll();
|
|
123
|
+
if (allLP.length === 0)
|
|
124
|
+
return [];
|
|
105
125
|
const markets = db.markets.findAll(true);
|
|
106
|
-
|
|
107
|
-
|
|
126
|
+
if (markets.length === 0)
|
|
127
|
+
return [];
|
|
128
|
+
const marketTypeMap = new Map();
|
|
129
|
+
for (const market of markets) {
|
|
130
|
+
marketTypeMap.set(market.address, (market.market_type ?? 'normal'));
|
|
131
|
+
}
|
|
132
|
+
const activeLPs = [];
|
|
133
|
+
for (const lp of allLP) {
|
|
134
|
+
if (marketTypeMap.has(lp.market_address)) {
|
|
135
|
+
activeLPs.push(lp);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
108
138
|
if (activeLPs.length === 0)
|
|
109
139
|
return [];
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
140
|
+
const netTraderPnlByMarket = new Map();
|
|
141
|
+
for (const marketAddress of marketTypeMap.keys()) {
|
|
142
|
+
netTraderPnlByMarket.set(marketAddress, 0);
|
|
143
|
+
}
|
|
144
|
+
const activeMarketAddresses = Array.from(marketTypeMap.keys());
|
|
145
|
+
if (activeMarketAddresses.length > 0) {
|
|
146
|
+
const placeholders = activeMarketAddresses.map(() => '?').join(', ');
|
|
147
|
+
const pnlRows = db.db
|
|
148
|
+
.query(`SELECT market_address,
|
|
149
|
+
COALESCE(SUM(COALESCE(unrealized_pnl, 0) + COALESCE(realized_pnl, 0)), 0) AS net_pnl
|
|
150
|
+
FROM user_positions
|
|
151
|
+
WHERE market_address IN (${placeholders})
|
|
152
|
+
GROUP BY market_address`)
|
|
153
|
+
.all(...activeMarketAddresses);
|
|
154
|
+
for (const row of pnlRows) {
|
|
155
|
+
netTraderPnlByMarket.set(row.market_address, row.net_pnl);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const existingLPByKey = new Map();
|
|
159
|
+
for (const lp of activeLPs) {
|
|
160
|
+
existingLPByKey.set(lpPositionCacheKey(lp.market_address, lp.provider), lp);
|
|
161
|
+
}
|
|
162
|
+
const refreshContext = {
|
|
163
|
+
marketStateByMarket: db.marketState.findAllAsMap(),
|
|
164
|
+
netTraderPnlByMarket,
|
|
165
|
+
existingLPByKey,
|
|
166
|
+
};
|
|
167
|
+
return yield* Effect.forEach(activeLPs, (lp) => refreshLPPosition(lp.market_address, lp.provider, marketTypeMap.get(lp.market_address) ?? 'normal', refreshContext), { concurrency: RPC_CONCURRENCY });
|
|
115
168
|
});
|
|
116
169
|
//# sourceMappingURL=lp-position-refresher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lp-position-refresher.js","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"lp-position-refresher.js","sourceRoot":"","sources":["../../src/etl/lp-position-refresher.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,14 @@ import { Effect } from 'effect';
|
|
|
5
5
|
import { ChainReaderTag } from '../services/ChainReader';
|
|
6
6
|
import { DatabaseTag } from '../services/Database';
|
|
7
7
|
import { EventBusTag } from '../services/EventBus';
|
|
8
|
-
import type { MarketType } from '../types';
|
|
8
|
+
import type { MarketStateRow, MarketType, MultinoulliMarketStateRow, UserPositionRow } from '../types';
|
|
9
9
|
import type { PositionRefreshResult } from './types';
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
interface PositionRefreshContext {
|
|
11
|
+
readonly marketStateByMarket?: ReadonlyMap<string, MarketStateRow>;
|
|
12
|
+
readonly multinoulliMarketStateByMarket?: ReadonlyMap<string, MultinoulliMarketStateRow>;
|
|
13
|
+
readonly existingPositionsByKey?: ReadonlyMap<string, UserPositionRow>;
|
|
14
|
+
}
|
|
15
|
+
export declare const refreshPosition: (marketAddress: string, trader: string, marketType?: MarketType, context?: PositionRefreshContext) => Effect.Effect<PositionRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
|
|
16
|
+
export declare const refreshAllPositions: Effect.Effect<PositionRefreshResult[], never, ChainReaderTag | DatabaseTag | EventBusTag>;
|
|
17
|
+
export {};
|
|
12
18
|
//# sourceMappingURL=position-refresher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"position-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/position-refresher.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAwBrD,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnE,QAAQ,CAAC,8BAA8B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACzF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACxE;AAMD,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,QAAQ,MAAM,EACd,aAAY,UAAqB,EACjC,UAAS,sBAA2B,KACnC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,WAAW,CA4UrF,CAAC;AAIL,eAAO,MAAM,mBAAmB,2FAmC9B,CAAC"}
|