@the-situation/indexer 0.9.1 → 0.9.3

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 (123) hide show
  1. package/dist/api/app.d.ts +2 -0
  2. package/dist/api/app.d.ts.map +1 -1
  3. package/dist/api/app.js +1 -1
  4. package/dist/api/app.js.map +1 -1
  5. package/dist/api/middleware/admin-auth.d.ts.map +1 -1
  6. package/dist/api/middleware/admin-auth.js +7 -1
  7. package/dist/api/middleware/admin-auth.js.map +1 -1
  8. package/dist/api/middleware/error-handler.d.ts.map +1 -1
  9. package/dist/api/middleware/error-handler.js +3 -2
  10. package/dist/api/middleware/error-handler.js.map +1 -1
  11. package/dist/api/routes/admin.d.ts.map +1 -1
  12. package/dist/api/routes/admin.js +19 -0
  13. package/dist/api/routes/admin.js.map +1 -1
  14. package/dist/api/routes/health.d.ts +3 -2
  15. package/dist/api/routes/health.d.ts.map +1 -1
  16. package/dist/api/routes/health.js +11 -4
  17. package/dist/api/routes/health.js.map +1 -1
  18. package/dist/api/routes/market-events.d.ts.map +1 -1
  19. package/dist/api/routes/market-events.js +8 -6
  20. package/dist/api/routes/market-events.js.map +1 -1
  21. package/dist/api/routes/markets.d.ts.map +1 -1
  22. package/dist/api/routes/markets.js +73 -4
  23. package/dist/api/routes/markets.js.map +1 -1
  24. package/dist/api/routes/rankings.js +1 -1
  25. package/dist/api/routes/rankings.js.map +1 -1
  26. package/dist/api/routes/trader-events.d.ts.map +1 -1
  27. package/dist/api/routes/trader-events.js +8 -6
  28. package/dist/api/routes/trader-events.js.map +1 -1
  29. package/dist/client/IndexerClient.d.ts +10 -1
  30. package/dist/client/IndexerClient.d.ts.map +1 -1
  31. package/dist/client/IndexerClient.js.map +1 -1
  32. package/dist/client/IndexerClientLive.d.ts +1 -0
  33. package/dist/client/IndexerClientLive.d.ts.map +1 -1
  34. package/dist/client/IndexerClientLive.js +38 -0
  35. package/dist/client/IndexerClientLive.js.map +1 -1
  36. package/dist/client/convenience.d.ts +10 -1
  37. package/dist/client/convenience.d.ts.map +1 -1
  38. package/dist/client/convenience.js +4 -0
  39. package/dist/client/convenience.js.map +1 -1
  40. package/dist/client/index.d.ts +3 -2
  41. package/dist/client/index.d.ts.map +1 -1
  42. package/dist/client/index.js +1 -1
  43. package/dist/client/index.js.map +1 -1
  44. package/dist/config.d.ts +3 -0
  45. package/dist/config.d.ts.map +1 -1
  46. package/dist/config.js +17 -4
  47. package/dist/config.js.map +1 -1
  48. package/dist/db/connection.d.ts.map +1 -1
  49. package/dist/db/connection.js +4 -1
  50. package/dist/db/connection.js.map +1 -1
  51. package/dist/db/repositories/event.d.ts.map +1 -1
  52. package/dist/db/repositories/event.js +10 -6
  53. package/dist/db/repositories/event.js.map +1 -1
  54. package/dist/db/repositories/index.d.ts +1 -0
  55. package/dist/db/repositories/index.d.ts.map +1 -1
  56. package/dist/db/repositories/index.js +1 -0
  57. package/dist/db/repositories/index.js.map +1 -1
  58. package/dist/db/repositories/market-state.d.ts +1 -0
  59. package/dist/db/repositories/market-state.d.ts.map +1 -1
  60. package/dist/db/repositories/market-state.js +10 -0
  61. package/dist/db/repositories/market-state.js.map +1 -1
  62. package/dist/db/repositories/market.d.ts.map +1 -1
  63. package/dist/db/repositories/market.js +29 -5
  64. package/dist/db/repositories/market.js.map +1 -1
  65. package/dist/db/repositories/multinoulli-market-state.d.ts +30 -0
  66. package/dist/db/repositories/multinoulli-market-state.d.ts.map +1 -0
  67. package/dist/db/repositories/multinoulli-market-state.js +48 -0
  68. package/dist/db/repositories/multinoulli-market-state.js.map +1 -0
  69. package/dist/db/repositories/position.d.ts.map +1 -1
  70. package/dist/db/repositories/position.js +8 -3
  71. package/dist/db/repositories/position.js.map +1 -1
  72. package/dist/db/schema.d.ts.map +1 -1
  73. package/dist/db/schema.js +68 -1
  74. package/dist/db/schema.js.map +1 -1
  75. package/dist/etl/decoder.d.ts +4 -3
  76. package/dist/etl/decoder.d.ts.map +1 -1
  77. package/dist/etl/decoder.js +123 -9
  78. package/dist/etl/decoder.js.map +1 -1
  79. package/dist/etl/event-indexer.d.ts +2 -1
  80. package/dist/etl/event-indexer.d.ts.map +1 -1
  81. package/dist/etl/event-indexer.js +126 -32
  82. package/dist/etl/event-indexer.js.map +1 -1
  83. package/dist/etl/position-refresher.d.ts +2 -1
  84. package/dist/etl/position-refresher.d.ts.map +1 -1
  85. package/dist/etl/position-refresher.js +45 -6
  86. package/dist/etl/position-refresher.js.map +1 -1
  87. package/dist/etl/state-refresher.d.ts +2 -1
  88. package/dist/etl/state-refresher.d.ts.map +1 -1
  89. package/dist/etl/state-refresher.js +39 -7
  90. package/dist/etl/state-refresher.js.map +1 -1
  91. package/dist/index.js +116 -15
  92. package/dist/index.js.map +1 -1
  93. package/dist/layers/ChainReaderLive.d.ts.map +1 -1
  94. package/dist/layers/ChainReaderLive.js +89 -3
  95. package/dist/layers/ChainReaderLive.js.map +1 -1
  96. package/dist/layers/DatabaseLive.d.ts.map +1 -1
  97. package/dist/layers/DatabaseLive.js +2 -1
  98. package/dist/layers/DatabaseLive.js.map +1 -1
  99. package/dist/layers/VoyagerClientLive.d.ts +3 -2
  100. package/dist/layers/VoyagerClientLive.d.ts.map +1 -1
  101. package/dist/layers/VoyagerClientLive.js +20 -5
  102. package/dist/layers/VoyagerClientLive.js.map +1 -1
  103. package/dist/services/ChainReader.d.ts +3 -0
  104. package/dist/services/ChainReader.d.ts.map +1 -1
  105. package/dist/services/ChainReader.js.map +1 -1
  106. package/dist/services/Database.d.ts +2 -1
  107. package/dist/services/Database.d.ts.map +1 -1
  108. package/dist/services/Database.js.map +1 -1
  109. package/dist/services/VoyagerRateLimit.d.ts +40 -0
  110. package/dist/services/VoyagerRateLimit.d.ts.map +1 -0
  111. package/dist/services/VoyagerRateLimit.js +92 -0
  112. package/dist/services/VoyagerRateLimit.js.map +1 -0
  113. package/dist/types/api.d.ts +48 -1
  114. package/dist/types/api.d.ts.map +1 -1
  115. package/dist/types/event.d.ts +43 -2
  116. package/dist/types/event.d.ts.map +1 -1
  117. package/dist/types/index.d.ts +3 -3
  118. package/dist/types/index.d.ts.map +1 -1
  119. package/dist/types/market.d.ts +64 -0
  120. package/dist/types/market.d.ts.map +1 -1
  121. package/dist/types/position.d.ts +8 -0
  122. package/dist/types/position.d.ts.map +1 -1
  123. package/package.json +6 -6
package/dist/db/schema.js CHANGED
@@ -5,6 +5,13 @@ CREATE TABLE IF NOT EXISTS markets (
5
5
  description TEXT NOT NULL DEFAULT '',
6
6
  category TEXT NOT NULL DEFAULT '',
7
7
  topics TEXT NOT NULL DEFAULT '[]',
8
+ market_type TEXT NOT NULL DEFAULT 'normal',
9
+ x_axis_label TEXT DEFAULT NULL,
10
+ x_axis_unit TEXT DEFAULT NULL,
11
+ outcome_labels TEXT DEFAULT NULL,
12
+ row_labels TEXT DEFAULT NULL,
13
+ col_labels TEXT DEFAULT NULL,
14
+ resolution_source TEXT DEFAULT NULL,
8
15
  is_active INTEGER NOT NULL DEFAULT 1,
9
16
  created_at INTEGER NOT NULL DEFAULT (unixepoch()),
10
17
  updated_at INTEGER NOT NULL DEFAULT (unixepoch())
@@ -27,13 +34,32 @@ CREATE TABLE IF NOT EXISTS market_state (
27
34
  fetched_at INTEGER NOT NULL DEFAULT (unixepoch())
28
35
  );
29
36
 
37
+ CREATE TABLE IF NOT EXISTS multinoulli_market_state (
38
+ market_address TEXT PRIMARY KEY REFERENCES markets(address),
39
+ outcome_count INTEGER NOT NULL,
40
+ probs_json TEXT NOT NULL DEFAULT '[]',
41
+ k REAL,
42
+ effective_k REAL,
43
+ total_shares TEXT,
44
+ total_backing TEXT,
45
+ is_initialized INTEGER DEFAULT 0,
46
+ is_paused INTEGER DEFAULT 0,
47
+ is_settled INTEGER DEFAULT 0,
48
+ settlement_outcomes_json TEXT DEFAULT '[]',
49
+ matrix_enabled INTEGER DEFAULT 0,
50
+ matrix_rows INTEGER DEFAULT 0,
51
+ matrix_cols INTEGER DEFAULT 0,
52
+ matrix_enforce_full_row INTEGER DEFAULT 0,
53
+ fetched_at INTEGER DEFAULT (unixepoch())
54
+ );
55
+
30
56
  CREATE TABLE IF NOT EXISTS market_events (
31
57
  id INTEGER PRIMARY KEY AUTOINCREMENT,
32
58
  market_address TEXT NOT NULL REFERENCES markets(address),
33
59
  tx_hash TEXT NOT NULL UNIQUE,
34
60
  block_number INTEGER NOT NULL,
35
61
  timestamp INTEGER NOT NULL,
36
- event_type TEXT NOT NULL CHECK(event_type IN ('bootstrapped','trade_moved','market_initialized','trade_executed')),
62
+ event_type TEXT NOT NULL,
37
63
  trader TEXT,
38
64
  mean REAL NOT NULL,
39
65
  std_dev REAL NOT NULL,
@@ -43,6 +69,11 @@ CREATE TABLE IF NOT EXISTS market_events (
43
69
  old_std_dev REAL,
44
70
  collateral_posted TEXT,
45
71
  raw_data TEXT,
72
+ outcome_count INTEGER,
73
+ min_outcome_index INTEGER,
74
+ is_position_sell INTEGER,
75
+ settlement_outcome_index INTEGER,
76
+ settlement_outcomes_json TEXT,
46
77
  created_at INTEGER NOT NULL DEFAULT (unixepoch())
47
78
  );
48
79
 
@@ -67,6 +98,10 @@ CREATE TABLE IF NOT EXISTS user_positions (
67
98
  unrealized_pnl REAL,
68
99
  delta_count INTEGER NOT NULL DEFAULT 0,
69
100
  claimed INTEGER NOT NULL DEFAULT 0,
101
+ position_type TEXT DEFAULT 'normal',
102
+ outcome_count INTEGER,
103
+ original_probs_json TEXT,
104
+ collateral_locked_raw TEXT,
70
105
  fetched_at INTEGER NOT NULL DEFAULT (unixepoch()),
71
106
  PRIMARY KEY (market_address, trader)
72
107
  );
@@ -74,6 +109,9 @@ CREATE TABLE IF NOT EXISTS user_positions (
74
109
  CREATE INDEX IF NOT EXISTS idx_positions_trader
75
110
  ON user_positions(trader);
76
111
 
112
+ CREATE INDEX IF NOT EXISTS idx_markets_active
113
+ ON markets(is_active) WHERE is_active = 1;
114
+
77
115
  CREATE TABLE IF NOT EXISTS indexer_cursors (
78
116
  market_address TEXT PRIMARY KEY REFERENCES markets(address),
79
117
  last_block_number INTEGER NOT NULL DEFAULT 0,
@@ -82,7 +120,36 @@ CREATE TABLE IF NOT EXISTS indexer_cursors (
82
120
  updated_at INTEGER NOT NULL DEFAULT (unixepoch())
83
121
  );
84
122
  `;
123
+ /**
124
+ * Safely add a column to an existing table — no-op if it already exists.
125
+ */
126
+ function safeAddColumn(db, table, column, definition) {
127
+ try {
128
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
129
+ }
130
+ catch {
131
+ // Column already exists — ignore
132
+ }
133
+ }
85
134
  export function initializeSchema(db) {
86
135
  db.exec(SCHEMA_DDL);
136
+ // Migrations for existing databases
137
+ safeAddColumn(db, 'markets', 'market_type', "TEXT NOT NULL DEFAULT 'normal'");
138
+ safeAddColumn(db, 'market_events', 'outcome_count', 'INTEGER');
139
+ safeAddColumn(db, 'market_events', 'min_outcome_index', 'INTEGER');
140
+ safeAddColumn(db, 'market_events', 'is_position_sell', 'INTEGER');
141
+ safeAddColumn(db, 'market_events', 'settlement_outcome_index', 'INTEGER');
142
+ safeAddColumn(db, 'market_events', 'settlement_outcomes_json', 'TEXT');
143
+ safeAddColumn(db, 'user_positions', 'position_type', "TEXT DEFAULT 'normal'");
144
+ safeAddColumn(db, 'user_positions', 'outcome_count', 'INTEGER');
145
+ safeAddColumn(db, 'user_positions', 'original_probs_json', 'TEXT');
146
+ safeAddColumn(db, 'user_positions', 'collateral_locked_raw', 'TEXT');
147
+ // Rich market metadata columns
148
+ safeAddColumn(db, 'markets', 'x_axis_label', 'TEXT DEFAULT NULL');
149
+ safeAddColumn(db, 'markets', 'x_axis_unit', 'TEXT DEFAULT NULL');
150
+ safeAddColumn(db, 'markets', 'outcome_labels', 'TEXT DEFAULT NULL');
151
+ safeAddColumn(db, 'markets', 'row_labels', 'TEXT DEFAULT NULL');
152
+ safeAddColumn(db, 'markets', 'col_labels', 'TEXT DEFAULT NULL');
153
+ safeAddColumn(db, 'markets', 'resolution_source', 'TEXT DEFAULT NULL');
87
154
  }
88
155
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFlB,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAAY;IAC3C,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHlB,CAAC;AAEF;;GAEG;AACH,SAAS,aAAa,CACpB,EAAY,EACZ,KAAa,EACb,MAAc,EACd,UAAkB;IAElB,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,eAAe,KAAK,eAAe,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAY;IAC3C,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEpB,oCAAoC;IACpC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,gCAAgC,CAAC,CAAC;IAC9E,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IAC/D,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAClE,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,0BAA0B,EAAE,SAAS,CAAC,CAAC;IAC1E,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,CAAC,CAAC;IACvE,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC;IAC9E,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACnE,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAErE,+BAA+B;IAC/B,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;IAClE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACjE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IACpE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAChE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AACzE,CAAC"}
@@ -4,8 +4,9 @@
4
4
  * Supports two event generations:
5
5
  * Legacy: Bootstrapped / TradeMoved (Q96 encoding)
6
6
  * Current: MarketInitialized / TradeExecuted (SQ128x128 4-limb encoding)
7
+ * Multinoulli: TradeExecuted (compact), MarketSettled, MarketSettledMulti
7
8
  */
8
- import type { VoyagerEvent, DecodedMarketEvent } from '../types';
9
- export declare function decodeEvent(event: VoyagerEvent): DecodedMarketEvent | null;
10
- export declare function decodeEvents(events: readonly VoyagerEvent[]): DecodedMarketEvent[];
9
+ import type { VoyagerEvent, DecodedEvent, MarketType } from '../types';
10
+ export declare function decodeEvent(event: VoyagerEvent, marketType?: MarketType): DecodedEvent | null;
11
+ export declare function decodeEvents(events: readonly VoyagerEvent[], marketType?: MarketType): DecodedEvent[];
11
12
  //# sourceMappingURL=decoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/etl/decoder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAyCjE,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,kBAAkB,GAAG,IAAI,CAY1E;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,YAAY,EAAE,GAC9B,kBAAkB,EAAE,CAYtB"}
1
+ {"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/etl/decoder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EACV,YAAY,EAKZ,YAAY,EACZ,UAAU,EACX,MAAM,UAAU,CAAC;AAyClB,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,EACnB,UAAU,CAAC,EAAE,UAAU,GACtB,YAAY,GAAG,IAAI,CAuBrB;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,UAAU,CAAC,EAAE,UAAU,GACtB,YAAY,EAAE,CAYhB"}
@@ -24,11 +24,21 @@ function formatTwo(n) {
24
24
  return Number(n.toFixed(2));
25
25
  }
26
26
  // ── Public API ───────────────────────────────────────────────────────────────
27
- export function decodeEvent(event) {
27
+ export function decodeEvent(event, marketType) {
28
28
  const name = event.name.toLowerCase();
29
- // Current generation
30
- if (name === 'tradeexecuted')
29
+ // Settlement events (same for both market types)
30
+ if (name === 'marketsettled')
31
+ return decodeMarketSettled(event);
32
+ if (name === 'marketsettledmulti')
33
+ return decodeMarketSettledMulti(event);
34
+ // Current generation — TradeExecuted
35
+ if (name === 'tradeexecuted') {
36
+ // Discrimination: multinoulli market type or heuristic based on data length
37
+ if (marketType === 'multinoulli' || (marketType == null && event.data.length < 33)) {
38
+ return decodeMultinoulliTradeExecuted(event);
39
+ }
31
40
  return decodeTradeExecuted(event);
41
+ }
32
42
  if (name === 'marketinitialized')
33
43
  return decodeMarketInitialized(event);
34
44
  // Legacy generation (kept for historical data)
@@ -38,10 +48,10 @@ export function decodeEvent(event) {
38
48
  return decodeTradeMoved(event);
39
49
  return null;
40
50
  }
41
- export function decodeEvents(events) {
51
+ export function decodeEvents(events, marketType) {
42
52
  const results = [];
43
53
  for (const event of events) {
44
- const decoded = decodeEvent(event);
54
+ const decoded = decodeEvent(event, marketType);
45
55
  if (decoded)
46
56
  results.push(decoded);
47
57
  }
@@ -100,7 +110,7 @@ function decodeTradeExecuted(event) {
100
110
  };
101
111
  }
102
112
  catch (err) {
103
- console.error('[Decoder] TradeExecuted error:', err);
113
+ console.error('[Decoder] TradeExecuted error:', { tx: event.transactionHash, block: event.blockNumber, err });
104
114
  return null;
105
115
  }
106
116
  }
@@ -134,7 +144,7 @@ function decodeMarketInitialized(event) {
134
144
  };
135
145
  }
136
146
  catch (err) {
137
- console.error('[Decoder] MarketInitialized error:', err);
147
+ console.error('[Decoder] MarketInitialized error:', { tx: event.transactionHash, block: event.blockNumber, err });
138
148
  return null;
139
149
  }
140
150
  }
@@ -193,7 +203,7 @@ function decodeBootstrapped(event) {
193
203
  };
194
204
  }
195
205
  catch (err) {
196
- console.error('[Decoder] Bootstrapped error:', err);
206
+ console.error('[Decoder] Bootstrapped error:', { tx: event.transactionHash, block: event.blockNumber, err });
197
207
  return null;
198
208
  }
199
209
  }
@@ -235,7 +245,111 @@ function decodeTradeMoved(event) {
235
245
  };
236
246
  }
237
247
  catch (err) {
238
- console.error('[Decoder] TradeMoved error:', err);
248
+ console.error('[Decoder] TradeMoved error:', { tx: event.transactionHash, block: event.blockNumber, err });
249
+ return null;
250
+ }
251
+ }
252
+ // ── Multinoulli decoders ────────────────────────────────────────────────────
253
+ /**
254
+ * Multinoulli TradeExecuted raw data (5 data fields):
255
+ * [0] outcome_count (u32)
256
+ * [1] min_outcome_index (u32)
257
+ * [2] token_amount low (u128)
258
+ * [3] token_amount high (u128)
259
+ * [4] is_position_sell (bool)
260
+ *
261
+ * Trader address is in keys[1].
262
+ */
263
+ function decodeMultinoulliTradeExecuted(event) {
264
+ try {
265
+ const data = event.data;
266
+ if (data.length < 5)
267
+ return null;
268
+ const trader = event.keys[1] ?? null;
269
+ const outcomeCount = Number(BigInt(data[0]));
270
+ const minOutcomeIndex = Number(BigInt(data[1]));
271
+ const tokenLow = BigInt(data[2]);
272
+ const tokenHigh = BigInt(data[3]);
273
+ const tokenAmount = (tokenLow + (tokenHigh << 128n)).toString();
274
+ const isPositionSell = BigInt(data[4]) !== 0n;
275
+ return {
276
+ timestamp: event.timestamp,
277
+ blockNumber: event.blockNumber,
278
+ eventType: 'multinoulli_trade_executed',
279
+ txHash: event.transactionHash,
280
+ trader,
281
+ outcomeCount,
282
+ minOutcomeIndex,
283
+ tokenAmount,
284
+ isPositionSell,
285
+ rawData: data,
286
+ };
287
+ }
288
+ catch (err) {
289
+ console.error('[Decoder] MultinoulliTradeExecuted error:', { tx: event.transactionHash, block: event.blockNumber, err });
290
+ return null;
291
+ }
292
+ }
293
+ /**
294
+ * MarketSettled raw data:
295
+ * [0] settlement_outcome_index (u32)
296
+ *
297
+ * `by` address is in keys[1].
298
+ */
299
+ function decodeMarketSettled(event) {
300
+ try {
301
+ const data = event.data;
302
+ if (data.length < 1)
303
+ return null;
304
+ const settlementOutcomeIndex = Number(BigInt(data[0]));
305
+ const by = event.keys[1] ?? null;
306
+ return {
307
+ timestamp: event.timestamp,
308
+ blockNumber: event.blockNumber,
309
+ eventType: 'market_settled',
310
+ txHash: event.transactionHash,
311
+ settlementOutcomeIndex,
312
+ by,
313
+ rawData: data,
314
+ };
315
+ }
316
+ catch (err) {
317
+ console.error('[Decoder] MarketSettled error:', { tx: event.transactionHash, block: event.blockNumber, err });
318
+ return null;
319
+ }
320
+ }
321
+ /**
322
+ * MarketSettledMulti raw data:
323
+ * [0] array length N
324
+ * [1..N] outcome indices (u32 each)
325
+ *
326
+ * `by` address is in keys[1].
327
+ */
328
+ function decodeMarketSettledMulti(event) {
329
+ try {
330
+ const data = event.data;
331
+ if (data.length < 1)
332
+ return null;
333
+ const arrayLength = Number(BigInt(data[0]));
334
+ if (data.length < 1 + arrayLength)
335
+ return null;
336
+ const outcomes = [];
337
+ for (let i = 0; i < arrayLength; i++) {
338
+ outcomes.push(Number(BigInt(data[1 + i])));
339
+ }
340
+ const by = event.keys[1] ?? null;
341
+ return {
342
+ timestamp: event.timestamp,
343
+ blockNumber: event.blockNumber,
344
+ eventType: 'market_settled_multi',
345
+ txHash: event.transactionHash,
346
+ outcomes,
347
+ by,
348
+ rawData: data,
349
+ };
350
+ }
351
+ catch (err) {
352
+ console.error('[Decoder] MarketSettledMulti error:', { tx: event.transactionHash, block: event.blockNumber, err });
239
353
  return null;
240
354
  }
241
355
  }
@@ -1 +1 @@
1
- {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/etl/decoder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/etl/decoder.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@ import { Effect } from 'effect';
5
5
  import { DatabaseTag } from '../services/Database';
6
6
  import { VoyagerClientTag } from '../services/VoyagerClient';
7
7
  import { EventBusTag } from '../services/EventBus';
8
+ import type { MarketType } from '../types';
8
9
  import type { IndexerCycleResult } from './types';
9
- export declare const indexMarketEvents: (marketAddress: string) => Effect.Effect<IndexerCycleResult, never, DatabaseTag | VoyagerClientTag | EventBusTag>;
10
+ export declare const indexMarketEvents: (marketAddress: string, marketType?: MarketType) => Effect.Effect<IndexerCycleResult, never, DatabaseTag | VoyagerClientTag | EventBusTag>;
10
11
  export declare const indexAllMarkets: Effect.Effect<IndexerCycleResult[], never, DatabaseTag | VoyagerClientTag | EventBusTag>;
11
12
  //# sourceMappingURL=event-indexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-indexer.d.ts","sourceRoot":"","sources":["../../src/etl/event-indexer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKlD,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,KACpB,MAAM,CAAC,MAAM,CACd,kBAAkB,EAClB,KAAK,EACL,WAAW,GAAG,gBAAgB,GAAG,WAAW,CA+G1C,CAAC;AAEL,eAAO,MAAM,eAAe,0FAW1B,CAAC"}
1
+ {"version":3,"file":"event-indexer.d.ts","sourceRoot":"","sources":["../../src/etl/event-indexer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAGV,UAAU,EAMX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAsHlD,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,EACrB,aAAY,UAAqB,KAChC,MAAM,CAAC,MAAM,CACd,kBAAkB,EAClB,KAAK,EACL,WAAW,GAAG,gBAAgB,GAAG,WAAW,CA0G1C,CAAC;AAEL,eAAO,MAAM,eAAe,0FAY1B,CAAC"}
@@ -8,7 +8,106 @@ import { EventBusTag } from '../services/EventBus';
8
8
  import { decodeEvents } from './decoder';
9
9
  const PAGE_SIZE = 100;
10
10
  const MAX_PAGES = 10;
11
- export const indexMarketEvents = (marketAddress) => Effect.gen(function* () {
11
+ const RELEVANT_NAMES = new Set([
12
+ 'bootstrapped', 'trademoved',
13
+ 'tradeexecuted', 'marketinitialized',
14
+ 'marketsettled', 'marketsettledmulti',
15
+ ]);
16
+ function isMultinoulliTradeEvent(d) {
17
+ return d.eventType === 'multinoulli_trade_executed';
18
+ }
19
+ function isMarketSettledEvent(d) {
20
+ return d.eventType === 'market_settled';
21
+ }
22
+ function isMarketSettledMultiEvent(d) {
23
+ return d.eventType === 'market_settled_multi';
24
+ }
25
+ function isNormalMarketEvent(d) {
26
+ return (d.eventType === 'bootstrapped' ||
27
+ d.eventType === 'trade_moved' ||
28
+ d.eventType === 'market_initialized' ||
29
+ d.eventType === 'trade_executed');
30
+ }
31
+ function decodedEventToInsert(marketAddress, d) {
32
+ if (isMultinoulliTradeEvent(d)) {
33
+ return {
34
+ market_address: marketAddress,
35
+ tx_hash: d.txHash,
36
+ block_number: d.blockNumber,
37
+ timestamp: d.timestamp,
38
+ event_type: d.eventType,
39
+ trader: d.trader,
40
+ mean: 0,
41
+ std_dev: 0,
42
+ lower_bound: 0,
43
+ upper_bound: 0,
44
+ old_mean: null,
45
+ old_std_dev: null,
46
+ collateral_posted: d.tokenAmount,
47
+ raw_data: JSON.stringify(d.rawData),
48
+ outcome_count: d.outcomeCount,
49
+ min_outcome_index: d.minOutcomeIndex,
50
+ is_position_sell: d.isPositionSell,
51
+ };
52
+ }
53
+ if (isMarketSettledEvent(d)) {
54
+ return {
55
+ market_address: marketAddress,
56
+ tx_hash: d.txHash,
57
+ block_number: d.blockNumber,
58
+ timestamp: d.timestamp,
59
+ event_type: d.eventType,
60
+ trader: d.by,
61
+ mean: 0,
62
+ std_dev: 0,
63
+ lower_bound: 0,
64
+ upper_bound: 0,
65
+ old_mean: null,
66
+ old_std_dev: null,
67
+ collateral_posted: null,
68
+ raw_data: JSON.stringify(d.rawData),
69
+ settlement_outcome_index: d.settlementOutcomeIndex,
70
+ };
71
+ }
72
+ if (isMarketSettledMultiEvent(d)) {
73
+ return {
74
+ market_address: marketAddress,
75
+ tx_hash: d.txHash,
76
+ block_number: d.blockNumber,
77
+ timestamp: d.timestamp,
78
+ event_type: d.eventType,
79
+ trader: d.by,
80
+ mean: 0,
81
+ std_dev: 0,
82
+ lower_bound: 0,
83
+ upper_bound: 0,
84
+ old_mean: null,
85
+ old_std_dev: null,
86
+ collateral_posted: null,
87
+ raw_data: JSON.stringify(d.rawData),
88
+ settlement_outcomes_json: JSON.stringify(d.outcomes),
89
+ };
90
+ }
91
+ // Normal market events (DecodedMarketEvent)
92
+ const n = d;
93
+ return {
94
+ market_address: marketAddress,
95
+ tx_hash: n.txHash,
96
+ block_number: n.blockNumber,
97
+ timestamp: n.timestamp,
98
+ event_type: n.eventType,
99
+ trader: n.trader,
100
+ mean: n.mean,
101
+ std_dev: n.stdDev,
102
+ lower_bound: n.lowerBound,
103
+ upper_bound: n.upperBound,
104
+ old_mean: n.oldMean,
105
+ old_std_dev: n.oldStdDev,
106
+ collateral_posted: n.collateralPosted,
107
+ raw_data: JSON.stringify(n.rawData),
108
+ };
109
+ }
110
+ export const indexMarketEvents = (marketAddress, marketType = 'normal') => Effect.gen(function* () {
12
111
  const db = yield* DatabaseTag;
13
112
  const voyager = yield* VoyagerClientTag;
14
113
  const bus = yield* EventBusTag;
@@ -30,56 +129,50 @@ export const indexMarketEvents = (marketAddress) => Effect.gen(function* () {
30
129
  }
31
130
  const batch = batchResult.right;
32
131
  // Filter to relevant events after our cursor
33
- const relevantNames = new Set([
34
- 'bootstrapped', 'trademoved',
35
- 'tradeexecuted', 'marketinitialized',
36
- ]);
132
+ let sawOldEvent = false;
37
133
  const relevant = batch.events.filter((e) => {
38
- const isRelevant = relevantNames.has(e.name.toLowerCase());
134
+ const isRelevant = RELEVANT_NAMES.has(e.name.toLowerCase());
39
135
  const isNew = e.blockNumber > lastBlock;
136
+ if (isRelevant && !isNew)
137
+ sawOldEvent = true;
40
138
  return isRelevant && isNew;
41
139
  });
42
140
  allEvents.push(...relevant);
141
+ // Early exit: if we've reached events we already indexed, stop paging
142
+ if (sawOldEvent)
143
+ break;
43
144
  hasMore = currentPage < batch.lastPage;
44
145
  currentPage++;
45
146
  }
46
147
  if (allEvents.length === 0) {
47
148
  return { marketAddress, newEvents: 0, lastBlock };
48
149
  }
49
- // Decode events
50
- const decoded = decodeEvents(allEvents);
150
+ // Decode events (pass market type for discrimination)
151
+ const decoded = decodeEvents(allEvents, marketType);
51
152
  if (decoded.length === 0) {
52
153
  return { marketAddress, newEvents: 0, lastBlock };
53
154
  }
54
155
  // Build insert inputs
55
- const inputs = decoded.map((d) => ({
56
- market_address: marketAddress,
57
- tx_hash: d.txHash,
58
- block_number: d.blockNumber,
59
- timestamp: d.timestamp,
60
- event_type: d.eventType,
61
- trader: d.trader,
62
- mean: d.mean,
63
- std_dev: d.stdDev,
64
- lower_bound: d.lowerBound,
65
- upper_bound: d.upperBound,
66
- old_mean: d.oldMean,
67
- old_std_dev: d.oldStdDev,
68
- collateral_posted: d.collateralPosted,
69
- raw_data: JSON.stringify(d.rawData),
70
- }));
71
- // Insert with dedup
156
+ const inputs = decoded.map((d) => decodedEventToInsert(marketAddress, d));
157
+ // Insert events + discover traders + update cursor atomically
158
+ const lastDecoded = decoded[decoded.length - 1];
72
159
  const inserted = db.events.insertBatch(inputs);
73
- // Discover traders from TradeMoved events
160
+ // Discover traders and update cursor
74
161
  for (const d of decoded) {
75
- if (d.trader) {
76
- db.positions.ensureTrader(marketAddress, d.trader);
162
+ let trader = null;
163
+ if (isMultinoulliTradeEvent(d) || isNormalMarketEvent(d)) {
164
+ trader = d.trader;
165
+ }
166
+ else if (isMarketSettledEvent(d) || isMarketSettledMultiEvent(d)) {
167
+ trader = d.by;
168
+ }
169
+ if (trader) {
170
+ db.positions.ensureTrader(marketAddress, trader);
77
171
  }
78
172
  }
79
- // Update cursor
80
- const lastDecoded = decoded[decoded.length - 1];
173
+ // Update cursor before broadcasting (crash-safe: cursor persisted before clients notified)
81
174
  db.cursors.upsert(marketAddress, lastDecoded.blockNumber, lastDecoded.timestamp, inserted);
82
- // Broadcast new events
175
+ // Broadcast AFTER the transaction commits
83
176
  if (inserted > 0) {
84
177
  bus.broadcast({
85
178
  type: 'new_events',
@@ -98,7 +191,8 @@ export const indexAllMarkets = Effect.gen(function* () {
98
191
  const markets = db.markets.findAll(true);
99
192
  const results = [];
100
193
  for (const market of markets) {
101
- const result = yield* indexMarketEvents(market.address);
194
+ const marketType = (market.market_type ?? 'normal');
195
+ const result = yield* indexMarketEvents(market.address, marketType);
102
196
  results.push(result);
103
197
  }
104
198
  return results;
@@ -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":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAazC,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,cAAc,EAAE,YAAY;IAC5B,eAAe,EAAE,mBAAmB;IACpC,eAAe,EAAE,oBAAoB;CACtC,CAAC,CAAC;AAEH,SAAS,uBAAuB,CAAC,CAAe;IAC9C,OAAO,CAAC,CAAC,SAAS,KAAK,4BAA4B,CAAC;AACtD,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAe;IAC3C,OAAO,CAAC,CAAC,SAAS,KAAK,gBAAgB,CAAC;AAC1C,CAAC;AAED,SAAS,yBAAyB,CAAC,CAAe;IAChD,OAAO,CAAC,CAAC,SAAS,KAAK,sBAAsB,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAe;IAC1C,OAAO,CACL,CAAC,CAAC,SAAS,KAAK,cAAc;QAC9B,CAAC,CAAC,SAAS,KAAK,aAAa;QAC7B,CAAC,CAAC,SAAS,KAAK,oBAAoB;QACpC,CAAC,CAAC,SAAS,KAAK,gBAAgB,CACjC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,aAAqB,EACrB,CAAe;IAEf,IAAI,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,YAAY,EAAE,CAAC,CAAC,WAAW;YAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,CAAC,CAAC,WAAW;YAChC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnC,aAAa,EAAE,CAAC,CAAC,YAAY;YAC7B,iBAAiB,EAAE,CAAC,CAAC,eAAe;YACpC,gBAAgB,EAAE,CAAC,CAAC,cAAc;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,YAAY,EAAE,CAAC,CAAC,WAAW;YAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM,EAAE,CAAC,CAAC,EAAE;YACZ,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnC,wBAAwB,EAAE,CAAC,CAAC,sBAAsB;SACnD,CAAC;IACJ,CAAC;IAED,IAAI,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,cAAc,EAAE,aAAa;YAC7B,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,YAAY,EAAE,CAAC,CAAC,WAAW;YAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM,EAAE,CAAC,CAAC,EAAE;YACZ,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YACnC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,GAAG,CAAuB,CAAC;IAClC,OAAO;QACL,cAAc,EAAE,aAAa;QAC7B,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,YAAY,EAAE,CAAC,CAAC,WAAW;QAC3B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,SAAS;QACvB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,WAAW,EAAE,CAAC,CAAC,UAAU;QACzB,WAAW,EAAE,CAAC,CAAC,UAAU;QACzB,QAAQ,EAAE,CAAC,CAAC,OAAO;QACnB,WAAW,EAAE,CAAC,CAAC,SAAS;QACxB,iBAAiB,EAAE,CAAC,CAAC,gBAAgB;QACrC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAAqB,EACrB,aAAyB,QAAQ,EAKjC,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,gBAAgB,CAAC;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAE/B,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,EAAE,iBAAiB,IAAI,CAAC,CAAC;IAEjD,yCAAyC;IACzC,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CACtC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,CAC3D,CAAC;QAEF,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC;YAC7B,MAAM,OAAO,GACX,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;gBACtC,CAAC,CAAC,iBAAiB,GAAG,CAAC,MAAM,2BAA2B;gBACxD,CAAC,CAAC,oBAAoB,GAAG,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC;YACrD,OAAO,CAAC,KAAK,CACX,2CAA2C,aAAa,SAAS,WAAW,KAAK,OAAO,MAAM,GAAG,CAAC,OAAO,EAAE,CAC5G,CAAC;YACF,MAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAEhC,6CAA6C;QAC7C,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC;YACxC,IAAI,UAAU,IAAI,CAAC,KAAK;gBAAE,WAAW,GAAG,IAAI,CAAC;YAC7C,OAAO,UAAU,IAAI,KAAK,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE5B,sEAAsE;QACtE,IAAI,WAAW;YAAE,MAAM;QAEvB,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;QACvC,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,sDAAsD;IACtD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAED,sBAAsB;IACtB,MAAM,MAAM,GAAuB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnD,oBAAoB,CAAC,aAAa,EAAE,CAAC,CAAC,CACvC,CAAC;IAEF,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE/C,qCAAqC;IACrC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,CAAC;aAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,2FAA2F;IAC3F,EAAE,CAAC,OAAO,CAAC,MAAM,CACf,aAAa,EACb,WAAW,CAAC,WAAW,EACvB,WAAW,CAAC,SAAS,EACrB,QAAQ,CACT,CAAC;IAEF,0CAA0C;IAC1C,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,GAAG,CAAC,SAAS,CAAC;YACZ,IAAI,EAAE,YAAY;YAClB,aAAa;YACb,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,WAAW,EAAE;SAChE,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,aAAa;QACb,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,WAAW,CAAC,WAAW;KACnC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjD,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAyB,EAAE,CAAC;IAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAe,CAAC;QAClE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC,CAAC"}
@@ -5,7 +5,8 @@ import { Effect } from 'effect';
5
5
  import { DatabaseTag } from '../services/Database';
6
6
  import { ChainReaderTag } from '../services/ChainReader';
7
7
  import { EventBusTag } from '../services/EventBus';
8
+ import type { MarketType } from '../types';
8
9
  import type { PositionRefreshResult } from './types';
9
- export declare const refreshPosition: (marketAddress: string, trader: string) => Effect.Effect<PositionRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
10
+ export declare const refreshPosition: (marketAddress: string, trader: string, marketType?: MarketType) => Effect.Effect<PositionRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
10
11
  export declare const refreshAllPositions: Effect.Effect<PositionRefreshResult[], never, DatabaseTag | ChainReaderTag | EventBusTag>;
11
12
  //# 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;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,QAAQ,MAAM,KACb,MAAM,CAAC,MAAM,CACd,qBAAqB,EACrB,KAAK,EACL,WAAW,GAAG,cAAc,GAAG,WAAW,CA6CxC,CAAC;AAEL,eAAO,MAAM,mBAAmB,2FAW9B,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;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,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;AAErD,eAAO,MAAM,eAAe,GAC1B,eAAe,MAAM,EACrB,QAAQ,MAAM,EACd,aAAY,UAAqB,KAChC,MAAM,CAAC,MAAM,CACd,qBAAqB,EACrB,KAAK,EACL,WAAW,GAAG,cAAc,GAAG,WAAW,CAwFxC,CAAC;AAIL,eAAO,MAAM,mBAAmB,2FAiB9B,CAAC"}