@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.
Files changed (95) 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 +3 -3
  11. package/dist/api/routes/admin-subscriptions.d.ts +3 -3
  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/market-lps.d.ts.map +1 -1
  19. package/dist/api/routes/market-lps.js +23 -9
  20. package/dist/api/routes/market-lps.js.map +1 -1
  21. package/dist/api/routes/markets.d.ts.map +1 -1
  22. package/dist/api/routes/markets.js +8 -0
  23. package/dist/api/routes/markets.js.map +1 -1
  24. package/dist/api/routes/trader-events.d.ts.map +1 -1
  25. package/dist/api/routes/trader-events.js +8 -0
  26. package/dist/api/routes/trader-events.js.map +1 -1
  27. package/dist/db/connection.d.ts.map +1 -1
  28. package/dist/db/connection.js +4 -0
  29. package/dist/db/connection.js.map +1 -1
  30. package/dist/db/repositories/activity-feed.d.ts +3 -0
  31. package/dist/db/repositories/activity-feed.d.ts.map +1 -1
  32. package/dist/db/repositories/activity-feed.js +33 -18
  33. package/dist/db/repositories/activity-feed.js.map +1 -1
  34. package/dist/db/repositories/event.d.ts +23 -0
  35. package/dist/db/repositories/event.d.ts.map +1 -1
  36. package/dist/db/repositories/event.js +141 -60
  37. package/dist/db/repositories/event.js.map +1 -1
  38. package/dist/db/repositories/lp-position.d.ts +2 -10
  39. package/dist/db/repositories/lp-position.d.ts.map +1 -1
  40. package/dist/db/repositories/lp-position.js +54 -52
  41. package/dist/db/repositories/lp-position.js.map +1 -1
  42. package/dist/db/repositories/market-state.d.ts +10 -0
  43. package/dist/db/repositories/market-state.d.ts.map +1 -1
  44. package/dist/db/repositories/market-state.js +16 -5
  45. package/dist/db/repositories/market-state.js.map +1 -1
  46. package/dist/db/repositories/market.d.ts +7 -0
  47. package/dist/db/repositories/market.d.ts.map +1 -1
  48. package/dist/db/repositories/market.js +32 -24
  49. package/dist/db/repositories/market.js.map +1 -1
  50. package/dist/db/repositories/multinoulli-snapshots.d.ts +1 -0
  51. package/dist/db/repositories/multinoulli-snapshots.d.ts.map +1 -1
  52. package/dist/db/repositories/multinoulli-snapshots.js +7 -5
  53. package/dist/db/repositories/multinoulli-snapshots.js.map +1 -1
  54. package/dist/db/repositories/position.d.ts +1 -0
  55. package/dist/db/repositories/position.d.ts.map +1 -1
  56. package/dist/db/repositories/position.js +9 -0
  57. package/dist/db/repositories/position.js.map +1 -1
  58. package/dist/db/schema.d.ts.map +1 -1
  59. package/dist/db/schema.js +114 -5
  60. package/dist/db/schema.js.map +1 -1
  61. package/dist/etl/decoder.js +16 -0
  62. package/dist/etl/decoder.js.map +1 -1
  63. package/dist/etl/event-indexer.d.ts +1 -1
  64. package/dist/etl/event-indexer.d.ts.map +1 -1
  65. package/dist/etl/event-indexer.js +138 -74
  66. package/dist/etl/event-indexer.js.map +1 -1
  67. package/dist/etl/lp-position-refresher.d.ts +9 -3
  68. package/dist/etl/lp-position-refresher.d.ts.map +1 -1
  69. package/dist/etl/lp-position-refresher.js +74 -21
  70. package/dist/etl/lp-position-refresher.js.map +1 -1
  71. package/dist/etl/position-refresher.d.ts +9 -3
  72. package/dist/etl/position-refresher.d.ts.map +1 -1
  73. package/dist/etl/position-refresher.js +44 -36
  74. package/dist/etl/position-refresher.js.map +1 -1
  75. package/dist/etl/state-refresher.d.ts +8 -3
  76. package/dist/etl/state-refresher.d.ts.map +1 -1
  77. package/dist/etl/state-refresher.js +137 -12
  78. package/dist/etl/state-refresher.js.map +1 -1
  79. package/dist/layers/ChainReaderLive.d.ts.map +1 -1
  80. package/dist/layers/ChainReaderLive.js +69 -22
  81. package/dist/layers/ChainReaderLive.js.map +1 -1
  82. package/dist/lp/valuation.d.ts +34 -0
  83. package/dist/lp/valuation.d.ts.map +1 -0
  84. package/dist/lp/valuation.js +282 -0
  85. package/dist/lp/valuation.js.map +1 -0
  86. package/dist/services/ChainReader.d.ts +21 -0
  87. package/dist/services/ChainReader.d.ts.map +1 -1
  88. package/dist/services/ChainReader.js.map +1 -1
  89. package/dist/types/api.d.ts +29 -0
  90. package/dist/types/api.d.ts.map +1 -1
  91. package/dist/types/event.d.ts +24 -0
  92. package/dist/types/event.d.ts.map +1 -1
  93. package/dist/types/market.d.ts +16 -0
  94. package/dist/types/market.d.ts.map +1 -1
  95. package/package.json +7 -5
@@ -13,10 +13,20 @@ export class LPPositionRepository {
13
13
  /** Recompute deposit/withdrawal totals from market_events. Idempotent — safe
14
14
  * to call on every event cycle without double-counting. */
15
15
  recomputeFromEvents(marketAddress, provider) {
16
+ this.recomputeFromEventsBatch(marketAddress, [provider]);
17
+ }
18
+ /** Recompute LP aggregates for multiple providers in one DB pass. */
19
+ recomputeFromEventsBatch(marketAddress, providers) {
16
20
  const mAddr = marketAddress.toLowerCase();
17
- const pAddr = provider.toLowerCase();
18
- const row = this.db
21
+ const normalizedProviders = Array.from(new Set(providers
22
+ .map((provider) => provider.toLowerCase().trim())
23
+ .filter((provider) => provider.length > 0)));
24
+ if (normalizedProviders.length === 0)
25
+ return;
26
+ const placeholders = normalizedProviders.map(() => '?').join(', ');
27
+ const rows = this.db
19
28
  .query(`SELECT
29
+ LOWER(trader) AS provider,
20
30
  COALESCE(SUM(CASE WHEN event_type IN ('liquidity_added', 'market_initialized')
21
31
  THEN CAST(collateral_posted AS REAL) / 1e18 ELSE 0 END), 0) AS total_deposited,
22
32
  COALESCE(SUM(CASE WHEN event_type = 'liquidity_removed'
@@ -26,58 +36,50 @@ export class LPPositionRepository {
26
36
  MIN(CASE WHEN event_type IN ('liquidity_added', 'market_initialized') THEN timestamp END) AS first_deposit_at,
27
37
  MAX(timestamp) AS last_activity_at
28
38
  FROM market_events
29
- WHERE market_address = ? AND LOWER(trader) = ?
30
- AND event_type IN ('liquidity_added', 'liquidity_removed', 'market_initialized')`)
31
- .get(mAddr, pAddr);
32
- if (!row)
33
- return;
34
- this.db
35
- .query(`UPDATE lp_positions
36
- SET total_deposited = ?,
37
- total_withdrawn = ?,
38
- deposit_count = ?,
39
- withdrawal_count = ?,
40
- first_deposit_at = ?,
41
- last_activity_at = ?
42
- WHERE market_address = ? AND provider = ?`)
43
- .run(row.total_deposited, row.total_withdrawn, row.deposit_count, row.withdrawal_count, row.first_deposit_at, row.last_activity_at, mAddr, pAddr);
44
- // Populate entry distribution from market_state if not yet set.
45
- // The initial LP sets the market distribution, so their entry distribution
46
- // equals the market's initial distribution at the time of their first deposit.
47
- this.populateEntryDistributionIfMissing(mAddr, pAddr);
48
- }
49
- /**
50
- * If entry_mean is null, populate entry distribution + component_lambda from market_state.
51
- *
52
- * Lambda formula: `k × √(2σ√π)` — the AMM's full-pool lambda for the distribution.
53
- * This is the full lambda, not scaled by share fraction. Consumers must scale by
54
- * `shares / totalShares` to get the per-LP component lambda. We store the full value
55
- * because the share fraction at LP-entry time isn't readily available in this context,
56
- * and the consumer already has the shares data from `getLPShares`.
57
- */
58
- populateEntryDistributionIfMissing(marketAddress, provider) {
59
- const existing = this.db
60
- .query('SELECT entry_mean FROM lp_positions WHERE market_address = ? AND provider = ?')
61
- .get(marketAddress, provider);
62
- if (existing?.entry_mean != null)
63
- return; // already populated
64
- // Use the market's current distribution as fallback (works for the bootstrapper LP
65
- // who set the initial distribution, and is a reasonable approximation for later LPs).
39
+ WHERE market_address = ?
40
+ AND event_type IN ('liquidity_added', 'liquidity_removed', 'market_initialized')
41
+ AND LOWER(trader) IN (${placeholders})
42
+ GROUP BY LOWER(trader)`)
43
+ .all(mAddr, ...normalizedProviders);
44
+ const aggregatesByProvider = new Map(rows.map((row) => [row.provider, row]));
45
+ const updateStats = this.db.query(`UPDATE lp_positions
46
+ SET total_deposited = ?,
47
+ total_withdrawn = ?,
48
+ deposit_count = ?,
49
+ withdrawal_count = ?,
50
+ first_deposit_at = ?,
51
+ last_activity_at = ?
52
+ WHERE market_address = ? AND provider = ?`);
66
53
  const state = this.db
67
54
  .query('SELECT mean, sigma, k FROM market_state WHERE market_address = ?')
68
- .get(marketAddress);
69
- if (!state || state.mean == null || state.sigma == null || state.k == null)
70
- return;
71
- // Lambda = k × √(2σ√π) — the AMM's invariant-derived scaling factor.
72
- const lambda = state.k * Math.sqrt(2 * state.sigma * Math.sqrt(Math.PI));
73
- this.db
74
- .query(`UPDATE lp_positions
75
- SET entry_mean = ?,
76
- entry_sigma = ?,
77
- entry_k = ?,
78
- component_lambda = ?
79
- WHERE market_address = ? AND provider = ?`)
80
- .run(state.mean, state.sigma, state.k, lambda, marketAddress, provider);
55
+ .get(mAddr);
56
+ const entryState = state != null && state.mean != null && state.sigma != null && state.k != null
57
+ ? { mean: state.mean, sigma: state.sigma, k: state.k }
58
+ : null;
59
+ // Lambda = k × sqrt(2σsqrt(pi)) for the full pool; LP consumers scale by share fraction.
60
+ const lambda = entryState
61
+ ? entryState.k * Math.sqrt(2 * entryState.sigma * Math.sqrt(Math.PI))
62
+ : null;
63
+ const updateEntryDistribution = entryState
64
+ ? this.db.query(`UPDATE lp_positions
65
+ SET entry_mean = ?,
66
+ entry_sigma = ?,
67
+ entry_k = ?,
68
+ component_lambda = ?
69
+ WHERE market_address = ? AND provider = ? AND entry_mean IS NULL`)
70
+ : null;
71
+ const tx = this.db.transaction(() => {
72
+ for (const provider of normalizedProviders) {
73
+ const row = aggregatesByProvider.get(provider);
74
+ updateStats.run(row?.total_deposited ?? 0, row?.total_withdrawn ?? 0, row?.deposit_count ?? 0, row?.withdrawal_count ?? 0, row?.first_deposit_at ?? null, row?.last_activity_at ?? null, mAddr, provider);
75
+ // The initial LP sets the market distribution, so their entry distribution
76
+ // equals the market's initial distribution at the time of their first deposit.
77
+ if (updateEntryDistribution && entryState && lambda != null) {
78
+ updateEntryDistribution.run(entryState.mean, entryState.sigma, entryState.k, lambda, mAddr, provider);
79
+ }
80
+ }
81
+ });
82
+ tx();
81
83
  }
82
84
  /** Set entry distribution fields if not yet populated. */
83
85
  upsertEntryDistribution(marketAddress, provider, mean, sigma, k) {
@@ -1 +1 @@
1
- {"version":3,"file":"lp-position.js","sourceRoot":"","sources":["../../../src/db/repositories/lp-position.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp-position.js","sourceRoot":"","sources":["../../../src/db/repositories/lp-position.ts"],"names":[],"mappings":"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"}
@@ -8,15 +8,25 @@ export interface UpsertMarketStateInput {
8
8
  readonly mean: number | null;
9
9
  readonly sigma: number | null;
10
10
  readonly variance: number | null;
11
+ readonly mean_2?: number | null;
12
+ readonly sigma_2?: number | null;
13
+ readonly variance_2?: number | null;
14
+ readonly rho?: number | null;
11
15
  readonly is_initialized: boolean;
12
16
  readonly is_paused: boolean;
13
17
  readonly is_settled: boolean;
14
18
  readonly settlement_value: number | null;
19
+ readonly settlement_x1?: number | null;
20
+ readonly settlement_x2?: number | null;
15
21
  readonly total_shares: string | null;
16
22
  readonly total_backing: string | null;
17
23
  readonly mean_raw: string | null;
18
24
  readonly sigma_raw: string | null;
19
25
  readonly variance_raw: string | null;
26
+ readonly mean_2_raw?: string | null;
27
+ readonly sigma_2_raw?: string | null;
28
+ readonly variance_2_raw?: string | null;
29
+ readonly rho_raw?: string | null;
20
30
  readonly k: number | null;
21
31
  readonly effective_k: number | null;
22
32
  readonly payout_amplifier: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"market-state.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IA8C3C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAQ1D,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;CAQ5C"}
1
+ {"version":3,"file":"market-state.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAmE3C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAQ1D,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;CAQ5C"}
@@ -6,28 +6,39 @@ export class MarketStateRepository {
6
6
  upsert(input) {
7
7
  this.db
8
8
  .query(`INSERT INTO market_state
9
- (market_address, mean, sigma, variance, is_initialized, is_paused,
10
- is_settled, settlement_value, total_shares, total_backing,
11
- mean_raw, sigma_raw, variance_raw, k, effective_k, payout_amplifier, fetched_at)
12
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, unixepoch())
9
+ (market_address, mean, sigma, variance, mean_2, sigma_2, variance_2, rho,
10
+ is_initialized, is_paused, is_settled, settlement_value, settlement_x1, settlement_x2,
11
+ total_shares, total_backing, mean_raw, sigma_raw, variance_raw, mean_2_raw,
12
+ sigma_2_raw, variance_2_raw, rho_raw, k, effective_k, payout_amplifier, fetched_at)
13
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, unixepoch())
13
14
  ON CONFLICT(market_address) DO UPDATE SET
14
15
  mean = excluded.mean,
15
16
  sigma = excluded.sigma,
16
17
  variance = excluded.variance,
18
+ mean_2 = excluded.mean_2,
19
+ sigma_2 = excluded.sigma_2,
20
+ variance_2 = excluded.variance_2,
21
+ rho = excluded.rho,
17
22
  is_initialized = excluded.is_initialized,
18
23
  is_paused = excluded.is_paused,
19
24
  is_settled = excluded.is_settled,
20
25
  settlement_value = excluded.settlement_value,
26
+ settlement_x1 = excluded.settlement_x1,
27
+ settlement_x2 = excluded.settlement_x2,
21
28
  total_shares = excluded.total_shares,
22
29
  total_backing = excluded.total_backing,
23
30
  mean_raw = excluded.mean_raw,
24
31
  sigma_raw = excluded.sigma_raw,
25
32
  variance_raw = excluded.variance_raw,
33
+ mean_2_raw = excluded.mean_2_raw,
34
+ sigma_2_raw = excluded.sigma_2_raw,
35
+ variance_2_raw = excluded.variance_2_raw,
36
+ rho_raw = excluded.rho_raw,
26
37
  k = excluded.k,
27
38
  effective_k = excluded.effective_k,
28
39
  payout_amplifier = excluded.payout_amplifier,
29
40
  fetched_at = unixepoch()`)
30
- .run(input.market_address, input.mean, input.sigma, input.variance, input.is_initialized ? 1 : 0, input.is_paused ? 1 : 0, input.is_settled ? 1 : 0, input.settlement_value, input.total_shares, input.total_backing, input.mean_raw, input.sigma_raw, input.variance_raw, input.k, input.effective_k, input.payout_amplifier);
41
+ .run(input.market_address, input.mean, input.sigma, input.variance, input.mean_2 ?? null, input.sigma_2 ?? null, input.variance_2 ?? null, input.rho ?? null, input.is_initialized ? 1 : 0, input.is_paused ? 1 : 0, input.is_settled ? 1 : 0, input.settlement_value, input.settlement_x1 ?? null, input.settlement_x2 ?? null, input.total_shares, input.total_backing, input.mean_raw, input.sigma_raw, input.variance_raw, input.mean_2_raw ?? null, input.sigma_2_raw ?? null, input.variance_2_raw ?? null, input.rho_raw ?? null, input.k, input.effective_k, input.payout_amplifier);
31
42
  }
32
43
  findByMarket(marketAddress) {
33
44
  return (this.db
@@ -1 +1 @@
1
- {"version":3,"file":"market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAyBA,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA6B;QAClC,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;;oCAqB4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,gBAAgB,CACvB,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAA2B,IAAI,IAAI,CACxD,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAAsB,CAAC;QACnF,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAmCA,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA6B;QAClC,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAgC4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,MAAM,IAAI,IAAI,EACpB,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,GAAG,IAAI,IAAI,EACjB,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5B,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,OAAO,IAAI,IAAI,EACrB,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,gBAAgB,CACvB,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAA2B,IAAI,IAAI,CACxD,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,GAAG,EAAsB,CAAC;QACnF,MAAM,GAAG,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -5,6 +5,13 @@ import type { Database } from 'bun:sqlite';
5
5
  import type { CreateMarketInput, MarketRow, UpdateMarketInput } from '../../types';
6
6
  export declare class MarketRepository {
7
7
  private readonly db;
8
+ private readonly findAllStmt;
9
+ private readonly findAllActiveStmt;
10
+ private readonly findByAddressStmt;
11
+ private readonly createStmt;
12
+ private readonly updateStmt;
13
+ private readonly softDeleteStmt;
14
+ private readonly countStmt;
8
15
  constructor(db: Database);
9
16
  findAll(activeOnly?: boolean): MarketRow[];
10
17
  findByAddress(address: string): MarketRow | null;
@@ -1 +1 @@
1
- {"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEnF,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,UAAU,UAAQ,GAAG,SAAS,EAAE;IAOxC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAOhD,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS;IA6B3C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI;IAmEnE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOpC,KAAK,IAAI,MAAM;CAMhB"}
1
+ {"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEnF,qBAAa,gBAAgB;IASf,OAAO,CAAC,QAAQ,CAAC,EAAE;IAR/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgC;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;gBAE7B,EAAE,EAAE,QAAQ;IA0BzC,OAAO,CAAC,UAAU,UAAQ,GAAG,SAAS,EAAE;IAMxC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIhD,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS;IAyB3C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI;IA8DnE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKpC,KAAK,IAAI,MAAM;CAMhB"}
@@ -1,28 +1,44 @@
1
1
  export class MarketRepository {
2
2
  db;
3
+ findAllStmt;
4
+ findAllActiveStmt;
5
+ findByAddressStmt;
6
+ createStmt;
7
+ updateStmt;
8
+ softDeleteStmt;
9
+ countStmt;
3
10
  constructor(db) {
4
11
  this.db = db;
12
+ this.findAllStmt = this.db.query('SELECT * FROM markets ORDER BY created_at DESC');
13
+ this.findAllActiveStmt = this.db.query('SELECT * FROM markets WHERE is_active = 1 ORDER BY created_at DESC');
14
+ this.findByAddressStmt = this.db.query('SELECT * FROM markets WHERE address = ?');
15
+ this.createStmt = this.db.query(`INSERT INTO markets (address, title, description, category, topics, market_type,
16
+ x_axis_label, x_axis_unit, y_axis_label, y_axis_unit, outcome_labels, row_labels, col_labels, resolution_source)
17
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
18
+ this.updateStmt = this.db.query(`UPDATE markets
19
+ SET title = ?, description = ?, category = ?, topics = ?,
20
+ is_active = ?, market_type = ?,
21
+ x_axis_label = ?, x_axis_unit = ?, y_axis_label = ?, y_axis_unit = ?, outcome_labels = ?,
22
+ row_labels = ?, col_labels = ?, resolution_source = ?,
23
+ updated_at = unixepoch()
24
+ WHERE address = ?`);
25
+ this.softDeleteStmt = this.db.query('UPDATE markets SET is_active = 0, updated_at = unixepoch() WHERE address = ?');
26
+ this.countStmt = this.db.query('SELECT COUNT(*) as cnt FROM markets');
5
27
  }
6
28
  findAll(activeOnly = false) {
7
- const sql = activeOnly
8
- ? 'SELECT * FROM markets WHERE is_active = 1 ORDER BY created_at DESC'
9
- : 'SELECT * FROM markets ORDER BY created_at DESC';
10
- return this.db.query(sql).all();
29
+ return activeOnly
30
+ ? this.findAllActiveStmt.all()
31
+ : this.findAllStmt.all();
11
32
  }
12
33
  findByAddress(address) {
13
- return (this.db.query('SELECT * FROM markets WHERE address = ?').get(address) ??
14
- null);
34
+ return this.findByAddressStmt.get(address) ?? null;
15
35
  }
16
36
  create(input) {
17
37
  const topics = JSON.stringify(input.topics ?? []);
18
38
  const outcomeLabels = input.outcome_labels ? JSON.stringify(input.outcome_labels) : null;
19
39
  const rowLabels = input.row_labels ? JSON.stringify(input.row_labels) : null;
20
40
  const colLabels = input.col_labels ? JSON.stringify(input.col_labels) : null;
21
- this.db
22
- .query(`INSERT INTO markets (address, title, description, category, topics, market_type,
23
- x_axis_label, x_axis_unit, outcome_labels, row_labels, col_labels, resolution_source)
24
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
25
- .run(input.address.toLowerCase(), input.title, input.description ?? '', input.category ?? '', topics, input.market_type ?? 'normal', input.x_axis_label ?? null, input.x_axis_unit ?? null, outcomeLabels, rowLabels, colLabels, input.resolution_source ?? null);
41
+ this.createStmt.run(input.address.toLowerCase(), input.title, input.description ?? '', input.category ?? '', topics, input.market_type ?? 'normal', input.x_axis_label ?? null, input.x_axis_unit ?? null, input.y_axis_label ?? null, input.y_axis_unit ?? null, outcomeLabels, rowLabels, colLabels, input.resolution_source ?? null);
26
42
  return this.findByAddress(input.address.toLowerCase());
27
43
  }
28
44
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: explicit merge logic keeps update semantics deterministic.
@@ -40,6 +56,8 @@ export class MarketRepository {
40
56
  // New metadata fields: undefined = keep existing, null = clear, value = set
41
57
  const xAxisLabel = input.x_axis_label === undefined ? existing.x_axis_label : input.x_axis_label;
42
58
  const xAxisUnit = input.x_axis_unit === undefined ? existing.x_axis_unit : input.x_axis_unit;
59
+ const yAxisLabel = input.y_axis_label === undefined ? existing.y_axis_label : input.y_axis_label;
60
+ const yAxisUnit = input.y_axis_unit === undefined ? existing.y_axis_unit : input.y_axis_unit;
43
61
  const outcomeLabels = input.outcome_labels === undefined
44
62
  ? existing.outcome_labels
45
63
  : input.outcome_labels === null
@@ -56,25 +74,15 @@ export class MarketRepository {
56
74
  ? null
57
75
  : JSON.stringify(input.col_labels);
58
76
  const resolutionSource = input.resolution_source === undefined ? existing.resolution_source : input.resolution_source;
59
- this.db
60
- .query(`UPDATE markets
61
- SET title = ?, description = ?, category = ?, topics = ?,
62
- is_active = ?, market_type = ?,
63
- x_axis_label = ?, x_axis_unit = ?, outcome_labels = ?,
64
- row_labels = ?, col_labels = ?, resolution_source = ?,
65
- updated_at = unixepoch()
66
- WHERE address = ?`)
67
- .run(title, description, category, topics, isActive, marketType, xAxisLabel, xAxisUnit, outcomeLabels, rowLabels, colLabels, resolutionSource, address);
77
+ this.updateStmt.run(title, description, category, topics, isActive, marketType, xAxisLabel, xAxisUnit, yAxisLabel, yAxisUnit, outcomeLabels, rowLabels, colLabels, resolutionSource, address);
68
78
  return this.findByAddress(address);
69
79
  }
70
80
  softDelete(address) {
71
- const result = this.db
72
- .query('UPDATE markets SET is_active = 0, updated_at = unixepoch() WHERE address = ?')
73
- .run(address);
81
+ const result = this.softDeleteStmt.run(address);
74
82
  return result.changes > 0;
75
83
  }
76
84
  count() {
77
- const row = this.db.query('SELECT COUNT(*) as cnt FROM markets').get();
85
+ const row = this.countStmt.get();
78
86
  return row.cnt;
79
87
  }
80
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export interface MultinoulliSnapshotRow {
18
18
  }
19
19
  export interface InsertSnapshotInput {
20
20
  readonly market_address: string;
21
+ readonly timestamp?: number;
21
22
  readonly probs_json: string;
22
23
  readonly probs_hash: string;
23
24
  readonly outcome_count: number;
@@ -1 +1 @@
1
- {"version":3,"file":"multinoulli-snapshots.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,8BAA8B;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO;IA+BpD;;;OAGG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAiB7E,mCAAmC;IACnC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM7C"}
1
+ {"version":3,"file":"multinoulli-snapshots.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,8BAA8B;IAC7B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO;IAkCpD;;;OAGG;IACH,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAiB7E,mCAAmC;IACnC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM7C"}
@@ -9,19 +9,21 @@ export class MultinoulliSnapshotsRepository {
9
9
  * snapshot for this market, the insert is skipped.
10
10
  */
11
11
  insertIfChanged(input) {
12
+ const timestamp = input.timestamp ?? Math.floor(Date.now() / 1000);
12
13
  const latest = this.db
13
14
  .query(`SELECT probs_hash FROM multinoulli_state_snapshots
14
15
  WHERE market_address = ?
15
- ORDER BY timestamp DESC LIMIT 1`)
16
- .get(input.market_address);
16
+ AND timestamp <= ?
17
+ ORDER BY timestamp DESC, id DESC LIMIT 1`)
18
+ .get(input.market_address, timestamp);
17
19
  if (latest?.probs_hash === input.probs_hash) {
18
20
  return false; // No change — skip
19
21
  }
20
22
  this.db
21
23
  .query(`INSERT INTO multinoulli_state_snapshots
22
- (market_address, probs_json, probs_hash, outcome_count, matrix_rows, matrix_cols)
23
- VALUES (?, ?, ?, ?, ?, ?)`)
24
- .run(input.market_address, input.probs_json, input.probs_hash, input.outcome_count, input.matrix_rows, input.matrix_cols);
24
+ (market_address, timestamp, probs_json, probs_hash, outcome_count, matrix_rows, matrix_cols)
25
+ VALUES (?, ?, ?, ?, ?, ?, ?)`)
26
+ .run(input.market_address, timestamp, input.probs_json, input.probs_hash, input.outcome_count, input.matrix_rows, input.matrix_cols);
25
27
  return true;
26
28
  }
27
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"multinoulli-snapshots.js","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AA6BA,MAAM,OAAO,8BAA8B;IACZ;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C;;;;OAIG;IACH,eAAe,CAAC,KAA0B;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CACJ;;yCAEiC,CAClC;aACA,GAAG,CAAC,KAAK,CAAC,cAAc,CAAkC,CAAC;QAE9D,IAAI,MAAM,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC,CAAC,mBAAmB;QACnC,CAAC;QAED,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;mCAE2B,CAC5B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,CAClB,CAAC;QAEJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,aAAqB,EAAE,KAAc;QAChD,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC;;;;;sCAK8B;YAChC,CAAC,CAAC;;gCAEwB,CAAC;QAE7B,OAAO,KAAK;YACV,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAA8B;YAC5E,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAA8B,CAAC;IAC1E,CAAC;IAED,mCAAmC;IACnC,aAAa,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,KAAK,CAAC,oFAAoF,CAAC;aAC3F,GAAG,CAAC,aAAa,CAAsB,CAAC;QAC3C,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;CACF"}
1
+ {"version":3,"file":"multinoulli-snapshots.js","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-snapshots.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,8BAA8B;IACZ;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C;;;;OAIG;IACH,eAAe,CAAC,KAA0B;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CACJ;;;kDAG0C,CAC3C;aACA,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAkC,CAAC;QAEzE,IAAI,MAAM,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC,CAAC,mBAAmB;QACnC,CAAC;QAED,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;sCAE8B,CAC/B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,SAAS,EACT,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,CAClB,CAAC;QAEJ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,aAAqB,EAAE,KAAc;QAChD,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC;;;;;sCAK8B;YAChC,CAAC,CAAC;;gCAEwB,CAAC;QAE7B,OAAO,KAAK;YACV,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAA8B;YAC5E,CAAC,CAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAA8B,CAAC;IAC1E,CAAC;IAED,mCAAmC;IACnC,aAAa,CAAC,aAAqB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,KAAK,CAAC,oFAAoF,CAAC;aAC3F,GAAG,CAAC,aAAa,CAAsB,CAAC;QAC3C,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;CACF"}
@@ -12,6 +12,7 @@ export declare class PositionRepository {
12
12
  findByMarket(marketAddress: string): UserPositionRow[];
13
13
  findByTrader(trader: string): UserPositionRow[];
14
14
  findAll(): UserPositionRow[];
15
+ findByActiveMarkets(): UserPositionRow[];
15
16
  deleteByMarket(marketAddress: string): number;
16
17
  }
17
18
  //# sourceMappingURL=position.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAExE,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IA0DxC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASzD,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAQtE,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,EAAE;IAUtD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAU/C,OAAO,IAAI,eAAe,EAAE;IAM5B,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM9C"}
1
+ {"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAExE,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IA0DxC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASzD,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAQtE,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,EAAE;IAUtD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAU/C,OAAO,IAAI,eAAe,EAAE;IAM5B,mBAAmB,IAAI,eAAe,EAAE;IAYxC,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;CAM9C"}
@@ -66,6 +66,15 @@ export class PositionRepository {
66
66
  .query('SELECT * FROM user_positions ORDER BY market_address, trader')
67
67
  .all();
68
68
  }
69
+ findByActiveMarkets() {
70
+ return this.db
71
+ .query(`SELECT up.*
72
+ FROM user_positions up
73
+ JOIN markets m ON m.address = up.market_address
74
+ WHERE m.is_active = 1
75
+ ORDER BY up.market_address, up.trader`)
76
+ .all();
77
+ }
69
78
  deleteByMarket(marketAddress) {
70
79
  const result = this.db
71
80
  .query('DELETE FROM user_positions WHERE market_address = ?')
@@ -1 +1 @@
1
- {"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA0B;QAC/B,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA4B4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAC/B,KAAK,CAAC,IAAI,IAAI,IAAI,EAClB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,gBAAgB,IAAI,SAAS,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,WAAW,IAAI,CAAC,EACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,aAAa,IAAI,QAAQ,EAC/B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,mBAAmB,IAAI,IAAI,EACjC,KAAK,CAAC,qBAAqB,IAAI,IAAI,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,eAAe,IAAI,IAAI,EAC7B,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAChC,KAAK,CAAC,oBAAoB,IAAI,IAAI,CACnC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB,EAAE,MAAc;QAChD,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;uBACe,CAChB;aACA,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,aAAqB,EAAE,MAAc;QAC3C,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,sEAAsE,CAAC;aAC7E,GAAG,CAAC,aAAa,EAAE,MAAM,CAA4B,IAAI,IAAI,CACjE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;yBAEiB,CAClB;aACA,GAAG,CAAC,aAAa,CAAsB,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;iCAEyB,CAC1B;aACA,GAAG,CAAC,MAAM,CAAsB,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CAAC,8DAA8D,CAAC;aACrE,GAAG,EAAuB,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF"}
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../../../src/db/repositories/position.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAA0B;QAC/B,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCA4B4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAC/B,KAAK,CAAC,IAAI,IAAI,IAAI,EAClB,KAAK,CAAC,KAAK,IAAI,IAAI,EACnB,KAAK,CAAC,QAAQ,IAAI,IAAI,EACtB,KAAK,CAAC,gBAAgB,IAAI,SAAS,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,WAAW,IAAI,CAAC,EACtB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACrB,KAAK,CAAC,aAAa,IAAI,QAAQ,EAC/B,KAAK,CAAC,aAAa,IAAI,IAAI,EAC3B,KAAK,CAAC,mBAAmB,IAAI,IAAI,EACjC,KAAK,CAAC,qBAAqB,IAAI,IAAI,EACnC,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,cAAc,IAAI,IAAI,EAC5B,KAAK,CAAC,eAAe,IAAI,IAAI,EAC7B,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAChC,KAAK,CAAC,oBAAoB,IAAI,IAAI,CACnC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB,EAAE,MAAc;QAChD,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;uBACe,CAChB;aACA,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,aAAqB,EAAE,MAAc;QAC3C,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,sEAAsE,CAAC;aAC7E,GAAG,CAAC,aAAa,EAAE,MAAM,CAA4B,IAAI,IAAI,CACjE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;yBAEiB,CAClB;aACA,GAAG,CAAC,aAAa,CAAsB,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;iCAEyB,CAC1B;aACA,GAAG,CAAC,MAAM,CAAsB,CAAC;IACtC,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CAAC,8DAA8D,CAAC;aACrE,GAAG,EAAuB,CAAC;IAChC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,EAAE;aACX,KAAK,CACJ;;;;+CAIuC,CACxC;aACA,GAAG,EAAuB,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,aAAqB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CAAC,qDAAqD,CAAC;aAC5D,GAAG,CAAC,aAAa,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgV3C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAoDnD"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAib3C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAsGnD"}