@the-situation/indexer 0.13.0 → 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.
Files changed (87) hide show
  1. package/README.md +21 -0
  2. package/dist/__tests__/performance/perf-fixtures.d.ts +26 -0
  3. package/dist/__tests__/performance/perf-fixtures.d.ts.map +1 -0
  4. package/dist/__tests__/performance/perf-fixtures.js +172 -0
  5. package/dist/__tests__/performance/perf-fixtures.js.map +1 -0
  6. package/dist/__tests__/performance/perf-utils.d.ts +42 -0
  7. package/dist/__tests__/performance/perf-utils.d.ts.map +1 -0
  8. package/dist/__tests__/performance/perf-utils.js +91 -0
  9. package/dist/__tests__/performance/perf-utils.js.map +1 -0
  10. package/dist/api/app.d.ts +1 -1
  11. package/dist/api/routes/admin-subscriptions.d.ts +1 -1
  12. package/dist/api/routes/admin.d.ts.map +1 -1
  13. package/dist/api/routes/admin.js +4 -0
  14. package/dist/api/routes/admin.js.map +1 -1
  15. package/dist/api/routes/market-events.d.ts.map +1 -1
  16. package/dist/api/routes/market-events.js +8 -0
  17. package/dist/api/routes/market-events.js.map +1 -1
  18. package/dist/api/routes/markets.d.ts.map +1 -1
  19. package/dist/api/routes/markets.js +8 -0
  20. package/dist/api/routes/markets.js.map +1 -1
  21. package/dist/api/routes/trader-events.d.ts.map +1 -1
  22. package/dist/api/routes/trader-events.js +8 -0
  23. package/dist/api/routes/trader-events.js.map +1 -1
  24. package/dist/db/connection.d.ts.map +1 -1
  25. package/dist/db/connection.js +4 -0
  26. package/dist/db/connection.js.map +1 -1
  27. package/dist/db/repositories/activity-feed.d.ts +3 -0
  28. package/dist/db/repositories/activity-feed.d.ts.map +1 -1
  29. package/dist/db/repositories/activity-feed.js +33 -18
  30. package/dist/db/repositories/activity-feed.js.map +1 -1
  31. package/dist/db/repositories/event.d.ts +22 -0
  32. package/dist/db/repositories/event.d.ts.map +1 -1
  33. package/dist/db/repositories/event.js +139 -75
  34. package/dist/db/repositories/event.js.map +1 -1
  35. package/dist/db/repositories/lp-position.d.ts +2 -10
  36. package/dist/db/repositories/lp-position.d.ts.map +1 -1
  37. package/dist/db/repositories/lp-position.js +54 -52
  38. package/dist/db/repositories/lp-position.js.map +1 -1
  39. package/dist/db/repositories/market-state.d.ts +10 -0
  40. package/dist/db/repositories/market-state.d.ts.map +1 -1
  41. package/dist/db/repositories/market-state.js +16 -5
  42. package/dist/db/repositories/market-state.js.map +1 -1
  43. package/dist/db/repositories/market.d.ts +7 -0
  44. package/dist/db/repositories/market.d.ts.map +1 -1
  45. package/dist/db/repositories/market.js +32 -24
  46. package/dist/db/repositories/market.js.map +1 -1
  47. package/dist/db/repositories/multinoulli-snapshots.d.ts +1 -0
  48. package/dist/db/repositories/multinoulli-snapshots.d.ts.map +1 -1
  49. package/dist/db/repositories/multinoulli-snapshots.js +7 -5
  50. package/dist/db/repositories/multinoulli-snapshots.js.map +1 -1
  51. package/dist/db/repositories/position.d.ts +1 -0
  52. package/dist/db/repositories/position.d.ts.map +1 -1
  53. package/dist/db/repositories/position.js +9 -0
  54. package/dist/db/repositories/position.js.map +1 -1
  55. package/dist/db/schema.d.ts.map +1 -1
  56. package/dist/db/schema.js +114 -5
  57. package/dist/db/schema.js.map +1 -1
  58. package/dist/etl/decoder.js +16 -0
  59. package/dist/etl/decoder.js.map +1 -1
  60. package/dist/etl/event-indexer.d.ts.map +1 -1
  61. package/dist/etl/event-indexer.js +138 -74
  62. package/dist/etl/event-indexer.js.map +1 -1
  63. package/dist/etl/lp-position-refresher.d.ts +9 -3
  64. package/dist/etl/lp-position-refresher.d.ts.map +1 -1
  65. package/dist/etl/lp-position-refresher.js +74 -21
  66. package/dist/etl/lp-position-refresher.js.map +1 -1
  67. package/dist/etl/position-refresher.d.ts +9 -3
  68. package/dist/etl/position-refresher.d.ts.map +1 -1
  69. package/dist/etl/position-refresher.js +44 -36
  70. package/dist/etl/position-refresher.js.map +1 -1
  71. package/dist/etl/state-refresher.d.ts +8 -3
  72. package/dist/etl/state-refresher.d.ts.map +1 -1
  73. package/dist/etl/state-refresher.js +137 -12
  74. package/dist/etl/state-refresher.js.map +1 -1
  75. package/dist/layers/ChainReaderLive.d.ts.map +1 -1
  76. package/dist/layers/ChainReaderLive.js +69 -22
  77. package/dist/layers/ChainReaderLive.js.map +1 -1
  78. package/dist/services/ChainReader.d.ts +21 -0
  79. package/dist/services/ChainReader.d.ts.map +1 -1
  80. package/dist/services/ChainReader.js.map +1 -1
  81. package/dist/types/api.d.ts +28 -0
  82. package/dist/types/api.d.ts.map +1 -1
  83. package/dist/types/event.d.ts +24 -0
  84. package/dist/types/event.d.ts.map +1 -1
  85. package/dist/types/market.d.ts +16 -0
  86. package/dist/types/market.d.ts.map +1 -1
  87. package/package.json +3 -1
@@ -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
- export const refreshLPPosition = (marketAddress, provider, marketType = 'normal') => Effect.gen(function* () {
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 = traderPositions.reduce((sum, p) => {
41
- const pnl = (p.unrealized_pnl ?? 0) + (p.realized_pnl ?? 0);
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 = db.lpPositions.findOne(marketAddress, provider);
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
- const lpRow = db.lpPositions.findOne(marketAddress, provider);
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
- // Find market_initialized events where the initializer has no LP position
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.event_type = 'market_initialized'
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
- const marketTypeMap = new Map(markets.map((m) => [m.address, (m.market_type ?? 'normal')]));
107
- const activeLPs = allLP.filter((lp) => marketTypeMap.has(lp.market_address));
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 effects = activeLPs.map((lp) => {
111
- const mt = marketTypeMap.get(lp.market_address) ?? 'normal';
112
- return refreshLPPosition(lp.market_address, lp.provider, mt);
113
- });
114
- return yield* Effect.all(effects, { concurrency: 5 });
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":"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"}
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
- export declare const refreshPosition: (marketAddress: string, trader: string, marketType?: MarketType) => Effect.Effect<PositionRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
11
- export declare const refreshAllPositions: Effect.Effect<PositionRefreshResult[], never, DatabaseTag | ChainReaderTag | EventBusTag>;
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;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAwBrD,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,QAAQ,MAAM,EACd,aAAY,UAAqB,KAChC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,WAAW,CAyUrF,CAAC;AAIL,eAAO,MAAM,mBAAmB,2FA2B9B,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"}
@@ -26,10 +26,25 @@ function isPositionClosed(positionState, claimed, marketIsSettled) {
26
26
  }
27
27
  return false;
28
28
  }
29
- export const refreshPosition = (marketAddress, trader, marketType = 'normal') => Effect.gen(function* () {
29
+ function positionCacheKey(marketAddress, trader) {
30
+ return `${marketAddress}\u0000${trader}`;
31
+ }
32
+ export const refreshPosition = (marketAddress, trader, marketType = 'normal', context = {}) => Effect.gen(function* () {
30
33
  const db = yield* DatabaseTag;
31
34
  const chain = yield* ChainReaderTag;
32
35
  const bus = yield* EventBusTag;
36
+ const cachedPositionKey = positionCacheKey(marketAddress, trader);
37
+ let existingPositionResolved = false;
38
+ let existingPosition = null;
39
+ const getExistingPosition = () => {
40
+ if (!existingPositionResolved) {
41
+ existingPositionResolved = true;
42
+ existingPosition =
43
+ context.existingPositionsByKey?.get(cachedPositionKey) ??
44
+ db.positions.findOne(marketAddress, trader);
45
+ }
46
+ return existingPosition;
47
+ };
33
48
  if (marketType === 'multinoulli') {
34
49
  const posResult = yield* Effect.either(chain.readMultinoulliPosition(marketAddress, trader));
35
50
  if (posResult._tag === 'Left') {
@@ -45,7 +60,8 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
45
60
  let expectedValue = null;
46
61
  let unrealizedPnl = null;
47
62
  let realizedPnl = null;
48
- const mState = db.multinoulliMarketState.findByMarket(marketAddress);
63
+ const mState = context.multinoulliMarketStateByMarket?.get(marketAddress) ??
64
+ db.multinoulliMarketState.findByMarket(marketAddress);
49
65
  const marketIsSettled = mState?.is_settled === 1;
50
66
  const isClosed = isPositionClosed(pos.settlementState, pos.claimed, marketIsSettled);
51
67
  // Compute EV if we have the distribution data (works for both active and closed)
@@ -70,7 +86,7 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
70
86
  if (isClosed) {
71
87
  expectedValue = 0;
72
88
  unrealizedPnl = 0;
73
- const prev = db.positions.findOne(marketAddress, trader);
89
+ const prev = getExistingPosition();
74
90
  if (prev?.realized_pnl != null && prev.realized_pnl !== 0) {
75
91
  realizedPnl = prev.realized_pnl;
76
92
  }
@@ -124,7 +140,7 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
124
140
  let expectedValue = null;
125
141
  let unrealizedPnl = null;
126
142
  let realizedPnl = null;
127
- const marketState = db.marketState.findByMarket(marketAddress);
143
+ const marketState = context.marketStateByMarket?.get(marketAddress) ?? db.marketState.findByMarket(marketAddress);
128
144
  const marketIsSettled = marketState?.is_settled === 1;
129
145
  const isClosed = isPositionClosed(pos.settlementState, pos.claimed, marketIsSettled);
130
146
  // Compute EV if we have the distribution data (works for both active and closed)
@@ -188,7 +204,7 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
188
204
  expectedValue = 0;
189
205
  unrealizedPnl = 0;
190
206
  // Use computed PnL as realized, or fall back to previously stored value
191
- const prev = db.positions.findOne(marketAddress, trader);
207
+ const prev = getExistingPosition();
192
208
  if (prev?.realized_pnl != null && prev.realized_pnl !== 0) {
193
209
  realizedPnl = prev.realized_pnl; // already captured with real value
194
210
  }
@@ -204,7 +220,7 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
204
220
  // Reconstruct from: DB-preserved effective_* (if any), or fall back
205
221
  // to the DB-preserved original distribution (mean/sigma from the
206
222
  // position table, which we now preserve across refreshes).
207
- const prevPos = prev ?? db.positions.findOne(marketAddress, trader);
223
+ const prevPos = prev;
208
224
  const origMean = pos.mean ?? prevPos?.mean ?? null;
209
225
  const origSigma = pos.sigma ?? prevPos?.sigma ?? null;
210
226
  const effMean = pos.effectiveMean ?? prevPos?.effective_mean ?? null;
@@ -249,7 +265,7 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
249
265
  // After settlement the contract clears position distribution data.
250
266
  // Preserve the DB's existing values, or reconstruct from event history
251
267
  // as a last resort for positions where data was already lost.
252
- const prevPos = isClosed ? db.positions.findOne(marketAddress, trader) : null;
268
+ const prevPos = isClosed ? getExistingPosition() : null;
253
269
  // If both chain and DB are null, try to reconstruct from events.
254
270
  // The last trade_executed event for this trader has the effective (new)
255
271
  // distribution; the first trade has the original distribution.
@@ -258,20 +274,12 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
258
274
  let eventOrigMean = null;
259
275
  let eventOrigSigma = null;
260
276
  if (isClosed && pos.effectiveMean == null && prevPos?.effective_mean == null) {
261
- // Direct query: get this trader's trades on this specific market, ordered by time
262
- const trades = db.db
263
- .query(`SELECT mean, std_dev, old_mean, old_std_dev
264
- FROM market_events
265
- WHERE market_address = ? AND LOWER(trader) = ? AND event_type = 'trade_executed'
266
- ORDER BY timestamp ASC`)
267
- .all(marketAddress.toLowerCase(), trader.toLowerCase());
268
- if (trades.length > 0) {
269
- const lastTrade = trades[trades.length - 1];
270
- const firstTrade = trades[0];
271
- eventMean = lastTrade.mean;
272
- eventSigma = lastTrade.std_dev;
273
- eventOrigMean = firstTrade.old_mean ?? null;
274
- eventOrigSigma = firstTrade.old_std_dev ?? null;
277
+ const tradeBounds = db.events.findTradeBoundsByMarketAndTrader(marketAddress, trader);
278
+ if (tradeBounds) {
279
+ eventMean = tradeBounds.last_mean;
280
+ eventSigma = tradeBounds.last_std_dev;
281
+ eventOrigMean = tradeBounds.first_old_mean;
282
+ eventOrigSigma = tradeBounds.first_old_std_dev;
275
283
  log.info('backfilled position distributions from events', {
276
284
  market: marketAddress.slice(0, 16),
277
285
  trader: trader.slice(0, 16),
@@ -311,26 +319,26 @@ export const refreshPosition = (marketAddress, trader, marketType = 'normal') =>
311
319
  const RPC_CONCURRENCY = 5;
312
320
  export const refreshAllPositions = Effect.gen(function* () {
313
321
  const db = yield* DatabaseTag;
314
- const allPositions = db.positions.findAll();
315
322
  const markets = db.markets.findAll(true);
323
+ if (markets.length === 0)
324
+ return [];
325
+ const activePositions = db.positions.findByActiveMarkets();
326
+ if (activePositions.length === 0)
327
+ return [];
316
328
  // Build market type lookup from active markets only
317
329
  const marketTypeMap = new Map();
318
330
  for (const m of markets) {
319
331
  marketTypeMap.set(m.address, (m.market_type ?? 'normal'));
320
332
  }
321
- // Only refresh positions for markets that are still active in the indexer.
322
- // Positions for deleted/inactive markets are skipped to avoid calling
323
- // the wrong contract entrypoint (e.g. normal ABI on a multinoulli contract).
324
- const activePositions = allPositions.filter((pos) => {
325
- if (marketTypeMap.has(pos.market_address)) {
326
- return true;
327
- }
328
- return false;
329
- });
330
- const effects = activePositions.map((pos) => {
331
- const marketType = marketTypeMap.get(pos.market_address);
332
- return refreshPosition(pos.market_address, pos.trader, marketType);
333
- });
334
- return yield* Effect.all(effects, { concurrency: RPC_CONCURRENCY });
333
+ const existingPositionsByKey = new Map();
334
+ for (const pos of activePositions) {
335
+ existingPositionsByKey.set(positionCacheKey(pos.market_address, pos.trader), pos);
336
+ }
337
+ const refreshContext = {
338
+ marketStateByMarket: db.marketState.findAllAsMap(),
339
+ multinoulliMarketStateByMarket: db.multinoulliMarketState.findAllAsMap(),
340
+ existingPositionsByKey,
341
+ };
342
+ return yield* Effect.forEach(activePositions, (pos) => refreshPosition(pos.market_address, pos.trader, marketTypeMap.get(pos.market_address), refreshContext), { concurrency: RPC_CONCURRENCY });
335
343
  });
336
344
  //# sourceMappingURL=position-refresher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"position-refresher.js","sourceRoot":"","sources":["../../src/etl/position-refresher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"position-refresher.js","sourceRoot":"","sources":["../../src/etl/position-refresher.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,13 @@ import { Effect } from 'effect';
2
2
  import { ChainReaderTag } from '../services/ChainReader';
3
3
  import { DatabaseTag } from '../services/Database';
4
4
  import { EventBusTag } from '../services/EventBus';
5
- import type { MarketType } from '../types';
5
+ import type { MarketStateRow, MarketType } from '../types';
6
6
  import type { StateRefreshResult } from './types';
7
- export declare const refreshMarketState: (marketAddress: string, marketType?: MarketType) => Effect.Effect<StateRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
8
- export declare const refreshAllMarketStates: Effect.Effect<StateRefreshResult[], never, DatabaseTag | ChainReaderTag | EventBusTag>;
7
+ interface StateRefreshContext {
8
+ readonly existingMarketStateByMarket?: ReadonlyMap<string, MarketStateRow>;
9
+ readonly multinoulliSnapshotCountByMarket?: ReadonlyMap<string, number>;
10
+ }
11
+ export declare const refreshMarketState: (marketAddress: string, marketType?: MarketType, context?: StateRefreshContext) => Effect.Effect<StateRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
12
+ export declare const refreshAllMarketStates: Effect.Effect<StateRefreshResult[], never, ChainReaderTag | DatabaseTag | EventBusTag>;
13
+ export {};
9
14
  //# sourceMappingURL=state-refresher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/state-refresher.ts"],"names":[],"mappings":"AAIA,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,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAmBlD,eAAO,MAAM,kBAAkB,GAC7B,eAAe,MAAM,EACrB,aAAY,UAAqB,KAChC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,WAAW,CAgHlF,CAAC;AAIL,eAAO,MAAM,sBAAsB,wFAUjC,CAAC"}
1
+ {"version":3,"file":"state-refresher.d.ts","sourceRoot":"","sources":["../../src/etl/state-refresher.ts"],"names":[],"mappings":"AAIA,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,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAMlD,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,2BAA2B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3E,QAAQ,CAAC,gCAAgC,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzE;AAyFD,eAAO,MAAM,kBAAkB,GAC7B,eAAe,MAAM,EACrB,aAAY,UAAqB,EACjC,UAAS,mBAAwB,KAChC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,WAAW,CAiKlF,CAAC;AAIL,eAAO,MAAM,sBAAsB,wFAqCjC,CAAC"}