@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
@@ -1 +1 @@
1
- {"version":3,"file":"markets.js","sourceRoot":"","sources":["../../../src/api/routes/markets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markets.js","sourceRoot":"","sources":["../../../src/api/routes/markets.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"trader-events.d.ts","sourceRoot":"","sources":["../../../src/api/routes/trader-events.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAkB,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAwB1F,eAAO,MAAM,kBAAkB,GAAI,IAAI,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqClD,CAAC"}
1
+ {"version":3,"file":"trader-events.d.ts","sourceRoot":"","sources":["../../../src/api/routes/trader-events.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAkB,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAgC1F,eAAO,MAAM,kBAAkB,GAAI,IAAI,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqClD,CAAC"}
@@ -18,6 +18,14 @@ function toTraderEventResponse(row) {
18
18
  upperBound: row.upper_bound,
19
19
  oldMean: row.old_mean,
20
20
  oldStdDev: row.old_std_dev,
21
+ mean2: row.mean_2,
22
+ stdDev2: row.std_dev_2,
23
+ lowerBound2: row.lower_bound_2,
24
+ upperBound2: row.upper_bound_2,
25
+ oldMean2: row.old_mean_2,
26
+ oldStdDev2: row.old_std_dev_2,
27
+ rho: row.rho,
28
+ oldRho: row.old_rho,
21
29
  collateralPosted: row.collateral_posted,
22
30
  };
23
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trader-events.js","sourceRoot":"","sources":["../../../src/api/routes/trader-events.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,SAAS,qBAAqB,CAC5B,GAA8C;IAE9C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,OAAO,EAAE,GAAG,CAAC,QAAQ;QACrB,SAAS,EAAE,GAAG,CAAC,WAAW;QAC1B,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAmB,EAAE,EAAE,CACxD,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC,+BAA+B,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACtE,MAAM,UAAU,GAAG,KAKlB,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,IAAI,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IAErC,MAAM,IAAI,GAKN,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,QAAQ,GAA2C;QACvD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACrC,KAAK;QACL,IAAI;QACJ,QAAQ;KACT,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"trader-events.js","sourceRoot":"","sources":["../../../src/api/routes/trader-events.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAevD;AAED,wBAAgB,sBAAsB,IAAI,QAAQ,CAIjD"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAiBvD;AAED,wBAAgB,sBAAsB,IAAI,QAAQ,CAMjD"}
@@ -13,12 +13,16 @@ export function createDatabase(dbPath) {
13
13
  db.exec('PRAGMA synchronous = NORMAL');
14
14
  db.exec('PRAGMA busy_timeout = 5000');
15
15
  db.exec('PRAGMA cache_size = -10000'); // 10MB
16
+ db.exec('PRAGMA wal_autocheckpoint = 2000'); // reduce checkpoint frequency under write-heavy bursts
17
+ db.exec('PRAGMA mmap_size = 268435456'); // map up to 256MB for lower read syscall overhead
16
18
  db.exec('PRAGMA temp_store = MEMORY');
17
19
  db.exec('PRAGMA foreign_keys = ON');
18
20
  return db;
19
21
  }
20
22
  export function createInMemoryDatabase() {
21
23
  const db = new Database(':memory:');
24
+ db.exec('PRAGMA cache_size = -10000');
25
+ db.exec('PRAGMA temp_store = MEMORY');
22
26
  db.exec('PRAGMA foreign_keys = ON');
23
27
  return db;
24
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,8BAA8B;IAC9B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,sBAAsB;IACtB,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACvC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO;IAC9C,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAEpC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,8BAA8B;IAC9B,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,sBAAsB;IACtB,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,EAAE,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACvC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,OAAO;IAC9C,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC,uDAAuD;IACpG,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,kDAAkD;IAC3F,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAEpC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -17,7 +17,10 @@ export interface ActivityFeedQueryOptions {
17
17
  }
18
18
  export declare class ActivityFeedRepository {
19
19
  private readonly db;
20
+ private static readonly MAX_CACHED_STATEMENTS;
21
+ private readonly statementCache;
20
22
  constructor(db: Database);
23
+ private getStatement;
21
24
  findAll(options?: ActivityFeedQueryOptions): EnrichedEventRow[];
22
25
  count(options?: ActivityFeedQueryOptions): number;
23
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"activity-feed.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/activity-feed.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA0DD,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,gBAAgB,EAAE;IAqBnE,KAAK,CAAC,OAAO,GAAE,wBAA6B,GAAG,MAAM;CActD"}
1
+ {"version":3,"file":"activity-feed.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/activity-feed.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AA0DD,qBAAa,sBAAsB;IAIrB,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAO;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoD;gBAEtD,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,OAAO,GAAE,wBAA6B,GAAG,gBAAgB,EAAE;IAkBnE,KAAK,CAAC,OAAO,GAAE,wBAA6B,GAAG,MAAM;CAUtD"}
@@ -42,34 +42,49 @@ function buildWhereClause(options) {
42
42
  }
43
43
  export class ActivityFeedRepository {
44
44
  db;
45
+ static MAX_CACHED_STATEMENTS = 128;
46
+ statementCache = new Map();
45
47
  constructor(db) {
46
48
  this.db = db;
47
49
  }
50
+ getStatement(sql) {
51
+ const cached = this.statementCache.get(sql);
52
+ if (cached) {
53
+ return cached;
54
+ }
55
+ const stmt = this.db.query(sql);
56
+ if (this.statementCache.size >= ActivityFeedRepository.MAX_CACHED_STATEMENTS) {
57
+ const oldestKey = this.statementCache.keys().next().value;
58
+ if (oldestKey) {
59
+ this.statementCache.delete(oldestKey);
60
+ }
61
+ }
62
+ this.statementCache.set(sql, stmt);
63
+ return stmt;
64
+ }
48
65
  findAll(options = {}) {
49
66
  const limit = Math.min(Math.max(1, options.limit ?? 50), 200);
50
67
  const offset = Math.max(0, options.offset ?? 0);
51
68
  const { where, params } = buildWhereClause(options);
52
- return this.db
53
- .query(`SELECT
54
- e.id, e.market_address, e.tx_hash, e.block_number, e.timestamp,
55
- e.event_type, e.trader, e.mean, e.std_dev, e.old_mean, e.old_std_dev,
56
- e.collateral_posted, e.settlement_value, e.settlement_outcomes_json,
57
- m.title as market_title, m.category as market_category, m.market_type
58
- FROM market_events e
59
- JOIN markets m ON e.market_address = m.address
60
- ${where}
61
- ORDER BY e.timestamp DESC, e.id DESC
62
- LIMIT ? OFFSET ?`)
63
- .all(...params, limit, offset);
69
+ const sql = `SELECT
70
+ e.id, e.market_address, e.tx_hash, e.block_number, e.timestamp,
71
+ e.event_type, e.trader, e.mean, e.std_dev, e.old_mean, e.old_std_dev,
72
+ e.collateral_posted, e.settlement_value, e.settlement_outcomes_json,
73
+ m.title as market_title, m.category as market_category, m.market_type
74
+ FROM market_events e
75
+ JOIN markets m ON e.market_address = m.address
76
+ ${where}
77
+ ORDER BY e.timestamp DESC, e.id DESC
78
+ LIMIT ? OFFSET ?`;
79
+ return this.getStatement(sql).all(...params, limit, offset);
64
80
  }
65
81
  count(options = {}) {
66
82
  const { where, params } = buildWhereClause(options);
67
- const result = this.db
68
- .query(`SELECT COUNT(*) as total
69
- FROM market_events e
70
- JOIN markets m ON e.market_address = m.address
71
- ${where}`)
72
- .get(...params);
83
+ const sql = `SELECT COUNT(*) as total
84
+ FROM market_events e
85
+ JOIN markets m ON e.market_address = m.address
86
+ ${where}`;
87
+ const result = this.getStatement(sql).get(...params);
73
88
  return result.total;
74
89
  }
75
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"activity-feed.js","sourceRoot":"","sources":["../../../src/db/repositories/activity-feed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity-feed.js","sourceRoot":"","sources":["../../../src/db/repositories/activity-feed.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,22 @@ import type { Database } from 'bun:sqlite';
5
5
  import type { InsertEventInput, MarketEventRow } from '../../types';
6
6
  export declare class EventRepository {
7
7
  private readonly db;
8
+ private readonly insertStmt;
9
+ private readonly findByMarketStmt;
10
+ private readonly findByMarketFromStmt;
11
+ private readonly findByMarketToStmt;
12
+ private readonly findByMarketRangeStmt;
13
+ private readonly findByMarketForLPReplayStmt;
14
+ private readonly countByMarketStmt;
15
+ private readonly totalCountStmt;
16
+ private readonly findByTraderStmt;
17
+ private readonly findByTraderFromStmt;
18
+ private readonly findByTraderToStmt;
19
+ private readonly findByTraderRangeStmt;
20
+ private readonly countByTraderStmt;
21
+ private readonly findTradersByMarketStmt;
22
+ private readonly firstTradeByMarketLowerTraderStmt;
23
+ private readonly lastTradeByMarketLowerTraderStmt;
8
24
  constructor(db: Database);
9
25
  private runInsert;
10
26
  insert(input: InsertEventInput): boolean;
@@ -15,6 +31,7 @@ export declare class EventRepository {
15
31
  fromTimestamp?: number | undefined;
16
32
  toTimestamp?: number | undefined;
17
33
  }): MarketEventRow[];
34
+ findByMarketForLPReplay(marketAddress: string): MarketEventRow[];
18
35
  countByMarket(marketAddress: string): number;
19
36
  totalCount(): number;
20
37
  findByTrader(trader: string, options?: {
@@ -27,5 +44,11 @@ export declare class EventRepository {
27
44
  })[];
28
45
  countByTrader(trader: string): number;
29
46
  findTradersByMarket(marketAddress: string): string[];
47
+ findTradeBoundsByMarketAndTrader(marketAddress: string, trader: string): {
48
+ first_old_mean: number | null;
49
+ first_old_std_dev: number | null;
50
+ last_mean: number;
51
+ last_std_dev: number;
52
+ } | null;
30
53
  }
31
54
  //# sourceMappingURL=event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEpE,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,OAAO,CAAC,SAAS;IA6BjB,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAmBxC,WAAW,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM;IAuBxD,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,GACL,cAAc,EAAE;IA2BnB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAO5C,UAAU,IAAI,MAAM;IAKpB,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,GACL,CAAC,cAAc,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE;IA4BhD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOrC,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;CAUrD"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEpE,qBAAa,eAAe;IAkBd,OAAO,CAAC,QAAQ,CAAC,EAAE;IAjB/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgC;IACrE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;IACnE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgC;IACtE,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAgC;IAC5E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgC;IAC/D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgC;IACrE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;IACnE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgC;IACtE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAgC;IACxE,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAgC;IAClF,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAgC;gBAEpD,EAAE,EAAE,QAAQ;IA+HzC,OAAO,CAAC,SAAS;IAqCjB,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IASxC,WAAW,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM;IAaxD,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,GACL,cAAc,EAAE;IAqBnB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,EAAE;IAIhE,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAK5C,UAAU,IAAI,MAAM;IAKpB,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,GACL,CAAC,cAAc,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE;IAiChD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKrC,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE;IAKpD,gCAAgC,CAC9B,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb;QACD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;CAqBT"}
@@ -1,23 +1,121 @@
1
1
  export class EventRepository {
2
2
  db;
3
+ insertStmt;
4
+ findByMarketStmt;
5
+ findByMarketFromStmt;
6
+ findByMarketToStmt;
7
+ findByMarketRangeStmt;
8
+ findByMarketForLPReplayStmt;
9
+ countByMarketStmt;
10
+ totalCountStmt;
11
+ findByTraderStmt;
12
+ findByTraderFromStmt;
13
+ findByTraderToStmt;
14
+ findByTraderRangeStmt;
15
+ countByTraderStmt;
16
+ findTradersByMarketStmt;
17
+ firstTradeByMarketLowerTraderStmt;
18
+ lastTradeByMarketLowerTraderStmt;
3
19
  constructor(db) {
4
20
  this.db = db;
21
+ this.insertStmt = this.db.query(`INSERT OR IGNORE INTO market_events
22
+ (market_address, event_uid, tx_hash, block_number, timestamp, event_type,
23
+ trader, mean, std_dev, lower_bound, upper_bound,
24
+ old_mean, old_std_dev, mean_2, std_dev_2, lower_bound_2, upper_bound_2,
25
+ old_mean_2, old_std_dev_2, rho, old_rho, collateral_posted, raw_data,
26
+ outcome_count, min_outcome_index, is_position_sell,
27
+ settlement_outcome_index, settlement_outcomes_json,
28
+ settlement_value, settlement_x1, settlement_x2)
29
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
30
+ this.findByMarketStmt = this.db.query(`SELECT * FROM market_events
31
+ WHERE market_address = ?
32
+ AND event_type NOT IN ('liquidity_added', 'liquidity_removed')
33
+ ORDER BY block_number ASC, timestamp ASC, id ASC
34
+ LIMIT ? OFFSET ?`);
35
+ this.findByMarketFromStmt = this.db.query(`SELECT * FROM market_events
36
+ WHERE market_address = ?
37
+ AND event_type NOT IN ('liquidity_added', 'liquidity_removed')
38
+ AND timestamp >= ?
39
+ ORDER BY block_number ASC, timestamp ASC, id ASC
40
+ LIMIT ? OFFSET ?`);
41
+ this.findByMarketToStmt = this.db.query(`SELECT * FROM market_events
42
+ WHERE market_address = ?
43
+ AND event_type NOT IN ('liquidity_added', 'liquidity_removed')
44
+ AND timestamp <= ?
45
+ ORDER BY block_number ASC, timestamp ASC, id ASC
46
+ LIMIT ? OFFSET ?`);
47
+ this.findByMarketRangeStmt = this.db.query(`SELECT * FROM market_events
48
+ WHERE market_address = ?
49
+ AND event_type NOT IN ('liquidity_added', 'liquidity_removed')
50
+ AND timestamp >= ?
51
+ AND timestamp <= ?
52
+ ORDER BY block_number ASC, timestamp ASC, id ASC
53
+ LIMIT ? OFFSET ?`);
54
+ this.findByMarketForLPReplayStmt = this.db.query(`SELECT *
55
+ FROM market_events
56
+ WHERE market_address = ?
57
+ AND event_type IN (
58
+ 'bootstrapped',
59
+ 'trade_moved',
60
+ 'market_initialized',
61
+ 'trade_executed',
62
+ 'market_settled',
63
+ 'liquidity_added',
64
+ 'liquidity_removed'
65
+ )
66
+ ORDER BY block_number ASC, timestamp ASC, id ASC`);
67
+ this.countByMarketStmt = this.db.query("SELECT COUNT(*) as cnt FROM market_events WHERE market_address = ? AND event_type NOT IN ('liquidity_added', 'liquidity_removed')");
68
+ this.totalCountStmt = this.db.query('SELECT COUNT(*) as cnt FROM market_events');
69
+ this.findByTraderStmt = this.db.query(`SELECT e.*, m.title as market_title
70
+ FROM market_events e
71
+ JOIN markets m ON e.market_address = m.address
72
+ WHERE e.trader = ?
73
+ ORDER BY e.timestamp DESC, e.id DESC
74
+ LIMIT ? OFFSET ?`);
75
+ this.findByTraderFromStmt = this.db.query(`SELECT e.*, m.title as market_title
76
+ FROM market_events e
77
+ JOIN markets m ON e.market_address = m.address
78
+ WHERE e.trader = ?
79
+ AND e.timestamp >= ?
80
+ ORDER BY e.timestamp DESC, e.id DESC
81
+ LIMIT ? OFFSET ?`);
82
+ this.findByTraderToStmt = this.db.query(`SELECT e.*, m.title as market_title
83
+ FROM market_events e
84
+ JOIN markets m ON e.market_address = m.address
85
+ WHERE e.trader = ?
86
+ AND e.timestamp <= ?
87
+ ORDER BY e.timestamp DESC, e.id DESC
88
+ LIMIT ? OFFSET ?`);
89
+ this.findByTraderRangeStmt = this.db.query(`SELECT e.*, m.title as market_title
90
+ FROM market_events e
91
+ JOIN markets m ON e.market_address = m.address
92
+ WHERE e.trader = ?
93
+ AND e.timestamp >= ?
94
+ AND e.timestamp <= ?
95
+ ORDER BY e.timestamp DESC, e.id DESC
96
+ LIMIT ? OFFSET ?`);
97
+ this.countByTraderStmt = this.db.query('SELECT COUNT(*) as cnt FROM market_events WHERE trader = ?');
98
+ this.findTradersByMarketStmt = this.db.query(`SELECT DISTINCT trader FROM market_events
99
+ WHERE market_address = ? AND trader IS NOT NULL
100
+ ORDER BY trader`);
101
+ this.firstTradeByMarketLowerTraderStmt = this.db.query(`SELECT old_mean, old_std_dev
102
+ FROM market_events
103
+ WHERE market_address = ? AND LOWER(trader) = ? AND event_type = 'trade_executed'
104
+ ORDER BY timestamp ASC, id ASC
105
+ LIMIT 1`);
106
+ this.lastTradeByMarketLowerTraderStmt = this.db.query(`SELECT mean, std_dev
107
+ FROM market_events
108
+ WHERE market_address = ? AND LOWER(trader) = ? AND event_type = 'trade_executed'
109
+ ORDER BY timestamp DESC, id DESC
110
+ LIMIT 1`);
5
111
  }
6
112
  runInsert(stmt, input) {
7
- const result = stmt.run(input.market_address, input.event_uid, input.tx_hash, input.block_number, input.timestamp, input.event_type, input.trader, input.mean, input.std_dev, input.lower_bound, input.upper_bound, input.old_mean, input.old_std_dev, input.collateral_posted, input.raw_data, input.outcome_count ?? null, input.min_outcome_index ?? null, input.is_position_sell != null ? (input.is_position_sell ? 1 : 0) : null, input.settlement_outcome_index ?? null, input.settlement_outcomes_json ?? null, input.settlement_value ?? null, input.settlement_x1 ?? null, input.settlement_x2 ?? null);
113
+ const result = stmt.run(input.market_address, input.event_uid, input.tx_hash, input.block_number, input.timestamp, input.event_type, input.trader, input.mean, input.std_dev, input.lower_bound, input.upper_bound, input.old_mean, input.old_std_dev, input.mean_2 ?? null, input.std_dev_2 ?? null, input.lower_bound_2 ?? null, input.upper_bound_2 ?? null, input.old_mean_2 ?? null, input.old_std_dev_2 ?? null, input.rho ?? null, input.old_rho ?? null, input.collateral_posted, input.raw_data, input.outcome_count ?? null, input.min_outcome_index ?? null, input.is_position_sell != null ? (input.is_position_sell ? 1 : 0) : null, input.settlement_outcome_index ?? null, input.settlement_outcomes_json ?? null, input.settlement_value ?? null, input.settlement_x1 ?? null, input.settlement_x2 ?? null);
8
114
  return result.changes;
9
115
  }
10
116
  insert(input) {
11
117
  try {
12
- const stmt = this.db.query(`INSERT OR IGNORE INTO market_events
13
- (market_address, event_uid, tx_hash, block_number, timestamp, event_type,
14
- trader, mean, std_dev, lower_bound, upper_bound,
15
- old_mean, old_std_dev, collateral_posted, raw_data,
16
- outcome_count, min_outcome_index, is_position_sell,
17
- settlement_outcome_index, settlement_outcomes_json,
18
- settlement_value, settlement_x1, settlement_x2)
19
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
20
- this.runInsert(stmt, input);
118
+ this.runInsert(this.insertStmt, input);
21
119
  return true;
22
120
  }
23
121
  catch {
@@ -26,17 +124,9 @@ export class EventRepository {
26
124
  }
27
125
  insertBatch(inputs) {
28
126
  let inserted = 0;
29
- const stmt = this.db.query(`INSERT OR IGNORE INTO market_events
30
- (market_address, event_uid, tx_hash, block_number, timestamp, event_type,
31
- trader, mean, std_dev, lower_bound, upper_bound,
32
- old_mean, old_std_dev, collateral_posted, raw_data,
33
- outcome_count, min_outcome_index, is_position_sell,
34
- settlement_outcome_index, settlement_outcomes_json,
35
- settlement_value, settlement_x1, settlement_x2)
36
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
37
127
  const tx = this.db.transaction(() => {
38
128
  for (const input of inputs) {
39
- inserted += this.runInsert(stmt, input);
129
+ inserted += this.runInsert(this.insertStmt, input);
40
130
  }
41
131
  });
42
132
  tx();
@@ -44,70 +134,61 @@ export class EventRepository {
44
134
  }
45
135
  findByMarket(marketAddress, options = {}) {
46
136
  const { limit = 100, offset = 0, fromTimestamp, toTimestamp } = options;
47
- // Exclude LP events from time-series queries they carry no distribution data
48
- const conditions = ['market_address = ?', "event_type NOT IN ('liquidity_added', 'liquidity_removed')"];
49
- const params = [marketAddress];
137
+ if (fromTimestamp !== undefined && toTimestamp !== undefined) {
138
+ return this.findByMarketRangeStmt.all(marketAddress, fromTimestamp, toTimestamp, limit, offset);
139
+ }
50
140
  if (fromTimestamp !== undefined) {
51
- conditions.push('timestamp >= ?');
52
- params.push(fromTimestamp);
141
+ return this.findByMarketFromStmt.all(marketAddress, fromTimestamp, limit, offset);
53
142
  }
54
143
  if (toTimestamp !== undefined) {
55
- conditions.push('timestamp <= ?');
56
- params.push(toTimestamp);
144
+ return this.findByMarketToStmt.all(marketAddress, toTimestamp, limit, offset);
57
145
  }
58
- params.push(limit, offset);
59
- return this.db
60
- .query(`SELECT * FROM market_events
61
- WHERE ${conditions.join(' AND ')}
62
- ORDER BY block_number ASC, timestamp ASC, id ASC
63
- LIMIT ? OFFSET ?`)
64
- .all(...params);
146
+ return this.findByMarketStmt.all(marketAddress, limit, offset);
147
+ }
148
+ findByMarketForLPReplay(marketAddress) {
149
+ return this.findByMarketForLPReplayStmt.all(marketAddress);
65
150
  }
66
151
  countByMarket(marketAddress) {
67
- const row = this.db
68
- .query("SELECT COUNT(*) as cnt FROM market_events WHERE market_address = ? AND event_type NOT IN ('liquidity_added', 'liquidity_removed')")
69
- .get(marketAddress);
152
+ const row = this.countByMarketStmt.get(marketAddress);
70
153
  return row.cnt;
71
154
  }
72
155
  totalCount() {
73
- const row = this.db.query('SELECT COUNT(*) as cnt FROM market_events').get();
156
+ const row = this.totalCountStmt.get();
74
157
  return row.cnt;
75
158
  }
76
159
  findByTrader(trader, options = {}) {
77
160
  const { limit = 100, offset = 0, fromTimestamp, toTimestamp } = options;
78
- const conditions = ['e.trader = ?'];
79
- const params = [trader];
161
+ if (fromTimestamp !== undefined && toTimestamp !== undefined) {
162
+ return this.findByTraderRangeStmt.all(trader, fromTimestamp, toTimestamp, limit, offset);
163
+ }
80
164
  if (fromTimestamp !== undefined) {
81
- conditions.push('e.timestamp >= ?');
82
- params.push(fromTimestamp);
165
+ return this.findByTraderFromStmt.all(trader, fromTimestamp, limit, offset);
83
166
  }
84
167
  if (toTimestamp !== undefined) {
85
- conditions.push('e.timestamp <= ?');
86
- params.push(toTimestamp);
168
+ return this.findByTraderToStmt.all(trader, toTimestamp, limit, offset);
87
169
  }
88
- params.push(limit, offset);
89
- return this.db
90
- .query(`SELECT e.*, m.title as market_title
91
- FROM market_events e
92
- JOIN markets m ON e.market_address = m.address
93
- WHERE ${conditions.join(' AND ')}
94
- ORDER BY e.timestamp DESC
95
- LIMIT ? OFFSET ?`)
96
- .all(...params);
170
+ return this.findByTraderStmt.all(trader, limit, offset);
97
171
  }
98
172
  countByTrader(trader) {
99
- const row = this.db
100
- .query('SELECT COUNT(*) as cnt FROM market_events WHERE trader = ?')
101
- .get(trader);
173
+ const row = this.countByTraderStmt.get(trader);
102
174
  return row.cnt;
103
175
  }
104
176
  findTradersByMarket(marketAddress) {
105
- const rows = this.db
106
- .query(`SELECT DISTINCT trader FROM market_events
107
- WHERE market_address = ? AND trader IS NOT NULL
108
- ORDER BY trader`)
109
- .all(marketAddress);
177
+ const rows = this.findTradersByMarketStmt.all(marketAddress);
110
178
  return rows.map((r) => r.trader);
111
179
  }
180
+ findTradeBoundsByMarketAndTrader(marketAddress, trader) {
181
+ const first = this.firstTradeByMarketLowerTraderStmt.get(marketAddress.toLowerCase(), trader.toLowerCase());
182
+ const last = this.lastTradeByMarketLowerTraderStmt.get(marketAddress.toLowerCase(), trader.toLowerCase());
183
+ if (!first || !last) {
184
+ return null;
185
+ }
186
+ return {
187
+ first_old_mean: first.old_mean ?? null,
188
+ first_old_std_dev: first.old_std_dev ?? null,
189
+ last_mean: last.mean,
190
+ last_std_dev: last.std_dev,
191
+ };
192
+ }
112
193
  }
113
194
  //# sourceMappingURL=event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/db/repositories/event.ts"],"names":[],"mappings":"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"}
@@ -39,16 +39,8 @@ export declare class LPPositionRepository {
39
39
  /** Recompute deposit/withdrawal totals from market_events. Idempotent — safe
40
40
  * to call on every event cycle without double-counting. */
41
41
  recomputeFromEvents(marketAddress: string, provider: string): void;
42
- /**
43
- * If entry_mean is null, populate entry distribution + component_lambda from market_state.
44
- *
45
- * Lambda formula: `k × √(2σ√π)` — the AMM's full-pool lambda for the distribution.
46
- * This is the full lambda, not scaled by share fraction. Consumers must scale by
47
- * `shares / totalShares` to get the per-LP component lambda. We store the full value
48
- * because the share fraction at LP-entry time isn't readily available in this context,
49
- * and the consumer already has the shares data from `getLPShares`.
50
- */
51
- private populateEntryDistributionIfMissing;
42
+ /** Recompute LP aggregates for multiple providers in one DB pass. */
43
+ recomputeFromEventsBatch(marketAddress: string, providers: readonly string[]): void;
52
44
  /** Set entry distribution fields if not yet populated. */
53
45
  upsertEntryDistribution(marketAddress: string, provider: string, mean: number | null, sigma: number | null, k: number | null): void;
54
46
  /** Mark an LP position as claimed (called when a position_claimed event is processed). */
@@ -1 +1 @@
1
- {"version":3,"file":"lp-position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/lp-position.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp-position.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/lp-position.ts"],"names":[],"mappings":"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"}