@the-situation/indexer 0.9.1 → 0.11.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 (163) hide show
  1. package/dist/api/app.d.ts +4 -0
  2. package/dist/api/app.d.ts.map +1 -1
  3. package/dist/api/app.js +3 -3
  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 +11 -3
  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 +2 -2
  10. package/dist/api/middleware/error-handler.js.map +1 -1
  11. package/dist/api/routes/admin.d.ts +2 -0
  12. package/dist/api/routes/admin.d.ts.map +1 -1
  13. package/dist/api/routes/admin.js +29 -5
  14. package/dist/api/routes/admin.js.map +1 -1
  15. package/dist/api/routes/health.d.ts +3 -2
  16. package/dist/api/routes/health.d.ts.map +1 -1
  17. package/dist/api/routes/health.js +11 -4
  18. package/dist/api/routes/health.js.map +1 -1
  19. package/dist/api/routes/index.d.ts +3 -3
  20. package/dist/api/routes/index.d.ts.map +1 -1
  21. package/dist/api/routes/index.js +3 -3
  22. package/dist/api/routes/index.js.map +1 -1
  23. package/dist/api/routes/market-events.d.ts.map +1 -1
  24. package/dist/api/routes/market-events.js +14 -8
  25. package/dist/api/routes/market-events.js.map +1 -1
  26. package/dist/api/routes/market-traders.d.ts.map +1 -1
  27. package/dist/api/routes/market-traders.js +1 -1
  28. package/dist/api/routes/market-traders.js.map +1 -1
  29. package/dist/api/routes/markets.d.ts.map +1 -1
  30. package/dist/api/routes/markets.js +83 -5
  31. package/dist/api/routes/markets.js.map +1 -1
  32. package/dist/api/routes/rankings.d.ts.map +1 -1
  33. package/dist/api/routes/rankings.js +2 -1
  34. package/dist/api/routes/rankings.js.map +1 -1
  35. package/dist/api/routes/trader-events.d.ts +1 -1
  36. package/dist/api/routes/trader-events.d.ts.map +1 -1
  37. package/dist/api/routes/trader-events.js +11 -6
  38. package/dist/api/routes/trader-events.js.map +1 -1
  39. package/dist/api/routes/ws.d.ts.map +1 -1
  40. package/dist/api/routes/ws.js +4 -3
  41. package/dist/api/routes/ws.js.map +1 -1
  42. package/dist/client/IndexerClient.d.ts +10 -1
  43. package/dist/client/IndexerClient.d.ts.map +1 -1
  44. package/dist/client/IndexerClient.js.map +1 -1
  45. package/dist/client/IndexerClientLive.d.ts +1 -0
  46. package/dist/client/IndexerClientLive.d.ts.map +1 -1
  47. package/dist/client/IndexerClientLive.js +54 -8
  48. package/dist/client/IndexerClientLive.js.map +1 -1
  49. package/dist/client/convenience.d.ts +11 -2
  50. package/dist/client/convenience.d.ts.map +1 -1
  51. package/dist/client/convenience.js +4 -0
  52. package/dist/client/convenience.js.map +1 -1
  53. package/dist/client/index.d.ts +6 -5
  54. package/dist/client/index.d.ts.map +1 -1
  55. package/dist/client/index.js +4 -4
  56. package/dist/client/index.js.map +1 -1
  57. package/dist/client/trader-stats.d.ts +2 -2
  58. package/dist/client/trader-stats.d.ts.map +1 -1
  59. package/dist/client/trader-stats.js +1 -1
  60. package/dist/client/trader-stats.js.map +1 -1
  61. package/dist/config.d.ts +3 -0
  62. package/dist/config.d.ts.map +1 -1
  63. package/dist/config.js +19 -6
  64. package/dist/config.js.map +1 -1
  65. package/dist/db/connection.d.ts.map +1 -1
  66. package/dist/db/connection.js +4 -1
  67. package/dist/db/connection.js.map +1 -1
  68. package/dist/db/repositories/event.d.ts +1 -1
  69. package/dist/db/repositories/event.d.ts.map +1 -1
  70. package/dist/db/repositories/event.js +11 -9
  71. package/dist/db/repositories/event.js.map +1 -1
  72. package/dist/db/repositories/index.d.ts +3 -2
  73. package/dist/db/repositories/index.d.ts.map +1 -1
  74. package/dist/db/repositories/index.js +3 -2
  75. package/dist/db/repositories/index.js.map +1 -1
  76. package/dist/db/repositories/market-state.d.ts +1 -0
  77. package/dist/db/repositories/market-state.d.ts.map +1 -1
  78. package/dist/db/repositories/market-state.js +8 -0
  79. package/dist/db/repositories/market-state.js.map +1 -1
  80. package/dist/db/repositories/market.d.ts +1 -1
  81. package/dist/db/repositories/market.d.ts.map +1 -1
  82. package/dist/db/repositories/market.js +39 -17
  83. package/dist/db/repositories/market.js.map +1 -1
  84. package/dist/db/repositories/multinoulli-market-state.d.ts +30 -0
  85. package/dist/db/repositories/multinoulli-market-state.d.ts.map +1 -0
  86. package/dist/db/repositories/multinoulli-market-state.js +48 -0
  87. package/dist/db/repositories/multinoulli-market-state.js.map +1 -0
  88. package/dist/db/repositories/position.d.ts +2 -1
  89. package/dist/db/repositories/position.d.ts.map +1 -1
  90. package/dist/db/repositories/position.js +14 -3
  91. package/dist/db/repositories/position.js.map +1 -1
  92. package/dist/db/schema.d.ts.map +1 -1
  93. package/dist/db/schema.js +68 -1
  94. package/dist/db/schema.js.map +1 -1
  95. package/dist/etl/decoder.d.ts +4 -3
  96. package/dist/etl/decoder.d.ts.map +1 -1
  97. package/dist/etl/decoder.js +149 -31
  98. package/dist/etl/decoder.js.map +1 -1
  99. package/dist/etl/event-indexer.d.ts +3 -2
  100. package/dist/etl/event-indexer.d.ts.map +1 -1
  101. package/dist/etl/event-indexer.js +140 -37
  102. package/dist/etl/event-indexer.js.map +1 -1
  103. package/dist/etl/position-refresher.d.ts +4 -3
  104. package/dist/etl/position-refresher.d.ts.map +1 -1
  105. package/dist/etl/position-refresher.js +54 -8
  106. package/dist/etl/position-refresher.js.map +1 -1
  107. package/dist/etl/scheduler.d.ts +2 -2
  108. package/dist/etl/scheduler.d.ts.map +1 -1
  109. package/dist/etl/scheduler.js +19 -23
  110. package/dist/etl/scheduler.js.map +1 -1
  111. package/dist/etl/state-refresher.d.ts +4 -3
  112. package/dist/etl/state-refresher.d.ts.map +1 -1
  113. package/dist/etl/state-refresher.js +39 -9
  114. package/dist/etl/state-refresher.js.map +1 -1
  115. package/dist/index.d.ts +3 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +129 -31
  118. package/dist/index.js.map +1 -1
  119. package/dist/layers/ChainReaderLive.d.ts.map +1 -1
  120. package/dist/layers/ChainReaderLive.js +96 -6
  121. package/dist/layers/ChainReaderLive.js.map +1 -1
  122. package/dist/layers/DatabaseLive.d.ts +1 -1
  123. package/dist/layers/DatabaseLive.d.ts.map +1 -1
  124. package/dist/layers/DatabaseLive.js +2 -1
  125. package/dist/layers/DatabaseLive.js.map +1 -1
  126. package/dist/layers/EventBusLive.d.ts.map +1 -1
  127. package/dist/layers/EventBusLive.js +2 -2
  128. package/dist/layers/EventBusLive.js.map +1 -1
  129. package/dist/layers/VoyagerClientLive.d.ts +3 -2
  130. package/dist/layers/VoyagerClientLive.d.ts.map +1 -1
  131. package/dist/layers/VoyagerClientLive.js +29 -10
  132. package/dist/layers/VoyagerClientLive.js.map +1 -1
  133. package/dist/layers/index.d.ts +2 -2
  134. package/dist/layers/index.d.ts.map +1 -1
  135. package/dist/layers/index.js +2 -2
  136. package/dist/layers/index.js.map +1 -1
  137. package/dist/services/ChainReader.d.ts +3 -0
  138. package/dist/services/ChainReader.d.ts.map +1 -1
  139. package/dist/services/ChainReader.js.map +1 -1
  140. package/dist/services/Database.d.ts +3 -2
  141. package/dist/services/Database.d.ts.map +1 -1
  142. package/dist/services/Database.js.map +1 -1
  143. package/dist/services/EventBus.d.ts.map +1 -1
  144. package/dist/services/EventBus.js.map +1 -1
  145. package/dist/services/VoyagerRateLimit.d.ts +40 -0
  146. package/dist/services/VoyagerRateLimit.d.ts.map +1 -0
  147. package/dist/services/VoyagerRateLimit.js +91 -0
  148. package/dist/services/VoyagerRateLimit.js.map +1 -0
  149. package/dist/services/index.d.ts +4 -4
  150. package/dist/services/index.d.ts.map +1 -1
  151. package/dist/services/index.js +2 -2
  152. package/dist/services/index.js.map +1 -1
  153. package/dist/types/api.d.ts +48 -1
  154. package/dist/types/api.d.ts.map +1 -1
  155. package/dist/types/event.d.ts +43 -2
  156. package/dist/types/event.d.ts.map +1 -1
  157. package/dist/types/index.d.ts +4 -4
  158. package/dist/types/index.d.ts.map +1 -1
  159. package/dist/types/market.d.ts +64 -0
  160. package/dist/types/market.d.ts.map +1 -1
  161. package/dist/types/position.d.ts +8 -0
  162. package/dist/types/position.d.ts.map +1 -1
  163. package/package.json +6 -6
@@ -9,9 +9,11 @@ export class EventRepository {
9
9
  .query(`INSERT OR IGNORE INTO market_events
10
10
  (market_address, tx_hash, block_number, timestamp, event_type,
11
11
  trader, mean, std_dev, lower_bound, upper_bound,
12
- old_mean, old_std_dev, collateral_posted, raw_data)
13
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
14
- .run(input.market_address, 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);
12
+ old_mean, old_std_dev, collateral_posted, raw_data,
13
+ outcome_count, min_outcome_index, is_position_sell,
14
+ settlement_outcome_index, settlement_outcomes_json)
15
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
16
+ .run(input.market_address, 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);
15
17
  return true;
16
18
  }
17
19
  catch {
@@ -23,11 +25,13 @@ export class EventRepository {
23
25
  const stmt = this.db.query(`INSERT OR IGNORE INTO market_events
24
26
  (market_address, tx_hash, block_number, timestamp, event_type,
25
27
  trader, mean, std_dev, lower_bound, upper_bound,
26
- old_mean, old_std_dev, collateral_posted, raw_data)
27
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
28
+ old_mean, old_std_dev, collateral_posted, raw_data,
29
+ outcome_count, min_outcome_index, is_position_sell,
30
+ settlement_outcome_index, settlement_outcomes_json)
31
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
28
32
  const tx = this.db.transaction(() => {
29
33
  for (const input of inputs) {
30
- const result = stmt.run(input.market_address, 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);
34
+ const result = stmt.run(input.market_address, 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);
31
35
  inserted += result.changes;
32
36
  }
33
37
  });
@@ -61,9 +65,7 @@ export class EventRepository {
61
65
  return row.cnt;
62
66
  }
63
67
  totalCount() {
64
- const row = this.db
65
- .query('SELECT COUNT(*) as cnt FROM market_events')
66
- .get();
68
+ const row = this.db.query('SELECT COUNT(*) as cnt FROM market_events').get();
67
69
  return row.cnt;
68
70
  }
69
71
  findByTrader(trader, options = {}) {
@@ -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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"}
@@ -1,7 +1,8 @@
1
- export { MarketRepository } from './market';
1
+ export { CursorRepository } from './cursor';
2
2
  export { EventRepository } from './event';
3
+ export { MarketRepository } from './market';
3
4
  export { MarketStateRepository, type UpsertMarketStateInput } from './market-state';
5
+ export { MultinoulliMarketStateRepository, type UpsertMultinoulliMarketStateInput, } from './multinoulli-market-state';
4
6
  export { PositionRepository } from './position';
5
- export { CursorRepository } from './cursor';
6
7
  export { RankingRepository } from './ranking';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EACL,gCAAgC,EAChC,KAAK,iCAAiC,GACvC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -1,7 +1,8 @@
1
- export { MarketRepository } from './market';
1
+ export { CursorRepository } from './cursor';
2
2
  export { EventRepository } from './event';
3
+ export { MarketRepository } from './market';
3
4
  export { MarketStateRepository } from './market-state';
5
+ export { MultinoulliMarketStateRepository, } from './multinoulli-market-state';
4
6
  export { PositionRepository } from './position';
5
- export { CursorRepository } from './cursor';
6
7
  export { RankingRepository } from './ranking';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAA+B,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/repositories/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAA+B,MAAM,gBAAgB,CAAC;AACpF,OAAO,EACL,gCAAgC,GAEjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -23,5 +23,6 @@ export declare class MarketStateRepository {
23
23
  constructor(db: Database);
24
24
  upsert(input: UpsertMarketStateInput): void;
25
25
  findByMarket(marketAddress: string): MarketStateRow | null;
26
+ findAllAsMap(): Map<string, MarketStateRow>;
26
27
  }
27
28
  //# sourceMappingURL=market-state.d.ts.map
@@ -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;CACtC;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAwC3C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;CAO3D"}
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;CACtC;AAED,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAwC3C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAQ1D,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;CAQ5C"}
@@ -31,5 +31,13 @@ export class MarketStateRepository {
31
31
  .query('SELECT * FROM market_state WHERE market_address = ?')
32
32
  .get(marketAddress) ?? null);
33
33
  }
34
+ findAllAsMap() {
35
+ const rows = this.db.query('SELECT * FROM market_state').all();
36
+ const map = new Map();
37
+ for (const row of rows) {
38
+ map.set(row.market_address, row);
39
+ }
40
+ return map;
41
+ }
34
42
  }
35
43
  //# sourceMappingURL=market-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAsBA,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;;;;;;;;;;;;;;;;;;oCAkB4B,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,CACnB,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;CACF"}
1
+ {"version":3,"file":"market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/market-state.ts"],"names":[],"mappings":"AAsBA,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;;;;;;;;;;;;;;;;;;oCAkB4B,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,CACnB,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"}
@@ -2,7 +2,7 @@
2
2
  * Market registry CRUD.
3
3
  */
4
4
  import type { Database } from 'bun:sqlite';
5
- import type { MarketRow, CreateMarketInput, UpdateMarketInput } from '../../types';
5
+ import type { CreateMarketInput, MarketRow, UpdateMarketInput } from '../../types';
6
6
  export declare class MarketRepository {
7
7
  private readonly db;
8
8
  constructor(db: Database);
@@ -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,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,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;IAQhD,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS;IAiB3C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI;IA8BnE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IASpC,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;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"}
@@ -10,39 +10,61 @@ export class MarketRepository {
10
10
  return this.db.query(sql).all();
11
11
  }
12
12
  findByAddress(address) {
13
- return (this.db
14
- .query('SELECT * FROM markets WHERE address = ?')
15
- .get(address) ?? null);
13
+ return (this.db.query('SELECT * FROM markets WHERE address = ?').get(address) ??
14
+ null);
16
15
  }
17
16
  create(input) {
18
17
  const topics = JSON.stringify(input.topics ?? []);
18
+ const outcomeLabels = input.outcome_labels ? JSON.stringify(input.outcome_labels) : null;
19
+ const rowLabels = input.row_labels ? JSON.stringify(input.row_labels) : null;
20
+ const colLabels = input.col_labels ? JSON.stringify(input.col_labels) : null;
19
21
  this.db
20
- .query(`INSERT INTO markets (address, title, description, category, topics)
21
- VALUES (?, ?, ?, ?, ?)`)
22
- .run(input.address.toLowerCase(), input.title, input.description ?? '', input.category ?? '', topics);
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);
23
26
  return this.findByAddress(input.address.toLowerCase());
24
27
  }
28
+ // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: explicit merge logic keeps update semantics deterministic.
25
29
  update(address, input) {
26
30
  const existing = this.findByAddress(address);
27
- if (!existing)
31
+ if (!existing) {
28
32
  return null;
33
+ }
29
34
  const title = input.title ?? existing.title;
30
35
  const description = input.description ?? existing.description;
31
36
  const category = input.category ?? existing.category;
32
- const topics = input.topics !== undefined
33
- ? JSON.stringify(input.topics)
34
- : existing.topics;
35
- const isActive = input.is_active !== undefined
36
- ? input.is_active
37
- ? 1
38
- : 0
39
- : existing.is_active;
37
+ const topics = input.topics !== undefined ? JSON.stringify(input.topics) : existing.topics;
38
+ const isActive = input.is_active !== undefined ? (input.is_active ? 1 : 0) : existing.is_active;
39
+ const marketType = input.market_type ?? existing.market_type;
40
+ // New metadata fields: undefined = keep existing, null = clear, value = set
41
+ const xAxisLabel = input.x_axis_label === undefined ? existing.x_axis_label : input.x_axis_label;
42
+ const xAxisUnit = input.x_axis_unit === undefined ? existing.x_axis_unit : input.x_axis_unit;
43
+ const outcomeLabels = input.outcome_labels === undefined
44
+ ? existing.outcome_labels
45
+ : input.outcome_labels === null
46
+ ? null
47
+ : JSON.stringify(input.outcome_labels);
48
+ const rowLabels = input.row_labels === undefined
49
+ ? existing.row_labels
50
+ : input.row_labels === null
51
+ ? null
52
+ : JSON.stringify(input.row_labels);
53
+ const colLabels = input.col_labels === undefined
54
+ ? existing.col_labels
55
+ : input.col_labels === null
56
+ ? null
57
+ : JSON.stringify(input.col_labels);
58
+ const resolutionSource = input.resolution_source === undefined ? existing.resolution_source : input.resolution_source;
40
59
  this.db
41
60
  .query(`UPDATE markets
42
61
  SET title = ?, description = ?, category = ?, topics = ?,
43
- is_active = ?, updated_at = unixepoch()
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()
44
66
  WHERE address = ?`)
45
- .run(title, description, category, topics, isActive, address);
67
+ .run(title, description, category, topics, isActive, marketType, xAxisLabel, xAxisUnit, outcomeLabels, rowLabels, colLabels, resolutionSource, address);
46
68
  return this.findByAddress(address);
47
69
  }
48
70
  softDelete(address) {
@@ -1 +1 @@
1
- {"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,OAAO,CAAC,UAAU,GAAG,KAAK;QACxB,MAAM,GAAG,GAAG,UAAU;YACpB,CAAC,CAAC,oEAAoE;YACtE,CAAC,CAAC,gDAAgD,CAAC;QACrD,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAiB,CAAC;IACjD,CAAC;IAED,aAAa,CAAC,OAAe;QAC3B,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,yCAAyC,CAAC;aAChD,GAAG,CAAC,OAAO,CAAsB,IAAI,IAAI,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAwB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;gCACwB,CACzB;aACA,GAAG,CACF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAC3B,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,WAAW,IAAI,EAAE,EACvB,KAAK,CAAC,QAAQ,IAAI,EAAE,EACpB,MAAM,CACP,CAAC;QACJ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAE,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,OAAe,EAAE,KAAwB;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;QAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC;QAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;QACrD,MAAM,MAAM,GACV,KAAK,CAAC,MAAM,KAAK,SAAS;YACxB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,MAAM,QAAQ,GACZ,KAAK,CAAC,SAAS,KAAK,SAAS;YAC3B,CAAC,CAAC,KAAK,CAAC,SAAS;gBACf,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAEzB,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;2BAGmB,CACpB;aACA,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEhE,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE;aACnB,KAAK,CACJ,8EAA8E,CAC/E;aACA,GAAG,CAAC,OAAO,CAAC,CAAC;QAChB,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAEnE,CAAC;QACF,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB,CAAC;CACF"}
1
+ {"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/db/repositories/market.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Multinoulli market state upsert — stores latest on-chain snapshot.
3
+ */
4
+ import type { Database } from 'bun:sqlite';
5
+ import type { MultinoulliMarketStateRow } from '../../types';
6
+ export interface UpsertMultinoulliMarketStateInput {
7
+ readonly market_address: string;
8
+ readonly outcome_count: number;
9
+ readonly probs_json: string;
10
+ readonly k: number | null;
11
+ readonly effective_k: number | null;
12
+ readonly total_shares: string | null;
13
+ readonly total_backing: string | null;
14
+ readonly is_initialized: boolean;
15
+ readonly is_paused: boolean;
16
+ readonly is_settled: boolean;
17
+ readonly settlement_outcomes_json: string;
18
+ readonly matrix_enabled: boolean;
19
+ readonly matrix_rows: number;
20
+ readonly matrix_cols: number;
21
+ readonly matrix_enforce_full_row: boolean;
22
+ }
23
+ export declare class MultinoulliMarketStateRepository {
24
+ private readonly db;
25
+ constructor(db: Database);
26
+ upsert(input: UpsertMultinoulliMarketStateInput): void;
27
+ findByMarket(marketAddress: string): MultinoulliMarketStateRow | null;
28
+ findAllAsMap(): Map<string, MultinoulliMarketStateRow>;
29
+ }
30
+ //# sourceMappingURL=multinoulli-market-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multinoulli-market-state.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-market-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;CAC3C;AAED,qBAAa,gCAAgC;IAC/B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC,MAAM,CAAC,KAAK,EAAE,iCAAiC,GAAG,IAAI;IA6CtD,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI;IAQrE,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC;CAUvD"}
@@ -0,0 +1,48 @@
1
+ export class MultinoulliMarketStateRepository {
2
+ db;
3
+ constructor(db) {
4
+ this.db = db;
5
+ }
6
+ upsert(input) {
7
+ this.db
8
+ .query(`INSERT INTO multinoulli_market_state
9
+ (market_address, outcome_count, probs_json, k, effective_k,
10
+ total_shares, total_backing, is_initialized, is_paused, is_settled,
11
+ settlement_outcomes_json, matrix_enabled, matrix_rows, matrix_cols,
12
+ matrix_enforce_full_row, fetched_at)
13
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, unixepoch())
14
+ ON CONFLICT(market_address) DO UPDATE SET
15
+ outcome_count = excluded.outcome_count,
16
+ probs_json = excluded.probs_json,
17
+ k = excluded.k,
18
+ effective_k = excluded.effective_k,
19
+ total_shares = excluded.total_shares,
20
+ total_backing = excluded.total_backing,
21
+ is_initialized = excluded.is_initialized,
22
+ is_paused = excluded.is_paused,
23
+ is_settled = excluded.is_settled,
24
+ settlement_outcomes_json = excluded.settlement_outcomes_json,
25
+ matrix_enabled = excluded.matrix_enabled,
26
+ matrix_rows = excluded.matrix_rows,
27
+ matrix_cols = excluded.matrix_cols,
28
+ matrix_enforce_full_row = excluded.matrix_enforce_full_row,
29
+ fetched_at = unixepoch()`)
30
+ .run(input.market_address, input.outcome_count, input.probs_json, input.k, input.effective_k, input.total_shares, input.total_backing, input.is_initialized ? 1 : 0, input.is_paused ? 1 : 0, input.is_settled ? 1 : 0, input.settlement_outcomes_json, input.matrix_enabled ? 1 : 0, input.matrix_rows, input.matrix_cols, input.matrix_enforce_full_row ? 1 : 0);
31
+ }
32
+ findByMarket(marketAddress) {
33
+ return (this.db
34
+ .query('SELECT * FROM multinoulli_market_state WHERE market_address = ?')
35
+ .get(marketAddress) ?? null);
36
+ }
37
+ findAllAsMap() {
38
+ const rows = this.db
39
+ .query('SELECT * FROM multinoulli_market_state')
40
+ .all();
41
+ const map = new Map();
42
+ for (const row of rows) {
43
+ map.set(row.market_address, row);
44
+ }
45
+ return map;
46
+ }
47
+ }
48
+ //# sourceMappingURL=multinoulli-market-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multinoulli-market-state.js","sourceRoot":"","sources":["../../../src/db/repositories/multinoulli-market-state.ts"],"names":[],"mappings":"AAwBA,MAAM,OAAO,gCAAgC;IACd;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAAwC;QAC7C,IAAI,CAAC,EAAE;aACJ,KAAK,CACJ;;;;;;;;;;;;;;;;;;;;;oCAqB4B,CAC7B;aACA,GAAG,CACF,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,CAAC,EACP,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,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,wBAAwB,EAC9B,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,aAAqB;QAChC,OAAO,CACJ,IAAI,CAAC,EAAE;aACL,KAAK,CAAC,iEAAiE,CAAC;aACxE,GAAG,CAAC,aAAa,CAAsC,IAAI,IAAI,CACnE,CAAC;IACJ,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,KAAK,CAAC,wCAAwC,CAAC;aAC/C,GAAG,EAAiC,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqC,CAAC;QACzD,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"}
@@ -2,7 +2,7 @@
2
2
  * Trader position upsert + queries.
3
3
  */
4
4
  import type { Database } from 'bun:sqlite';
5
- import type { UserPositionRow, UpsertPositionInput } from '../../types';
5
+ import type { UpsertPositionInput, UserPositionRow } from '../../types';
6
6
  export declare class PositionRepository {
7
7
  private readonly db;
8
8
  constructor(db: Database);
@@ -11,5 +11,6 @@ export declare class PositionRepository {
11
11
  findByMarket(marketAddress: string): UserPositionRow[];
12
12
  findByTrader(trader: string): UserPositionRow[];
13
13
  findAll(): UserPositionRow[];
14
+ deleteByMarket(marketAddress: string): number;
14
15
  }
15
16
  //# 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,eAAe,EAAE,mBAAmB,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;IAmCxC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASzD,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,EAAE;IAUtD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAU/C,OAAO,IAAI,eAAe,EAAE;CAK7B"}
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;IA4CxC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IASzD,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"}
@@ -8,8 +8,9 @@ export class PositionRepository {
8
8
  .query(`INSERT INTO user_positions
9
9
  (market_address, trader, has_position, collateral_locked,
10
10
  mean, sigma, variance, settlement_state, unrealized_pnl,
11
- delta_count, claimed, fetched_at)
12
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, unixepoch())
11
+ delta_count, claimed, position_type, outcome_count,
12
+ original_probs_json, collateral_locked_raw, fetched_at)
13
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, unixepoch())
13
14
  ON CONFLICT(market_address, trader) DO UPDATE SET
14
15
  has_position = excluded.has_position,
15
16
  collateral_locked = excluded.collateral_locked,
@@ -20,8 +21,12 @@ export class PositionRepository {
20
21
  unrealized_pnl = excluded.unrealized_pnl,
21
22
  delta_count = excluded.delta_count,
22
23
  claimed = excluded.claimed,
24
+ position_type = excluded.position_type,
25
+ outcome_count = excluded.outcome_count,
26
+ original_probs_json = excluded.original_probs_json,
27
+ collateral_locked_raw = excluded.collateral_locked_raw,
23
28
  fetched_at = unixepoch()`)
24
- .run(input.market_address, input.trader, input.has_position ? 1 : 0, input.collateral_locked ?? null, input.mean ?? null, input.sigma ?? null, input.variance ?? null, input.settlement_state ?? 'unknown', input.unrealized_pnl ?? null, input.delta_count ?? 0, input.claimed ? 1 : 0);
29
+ .run(input.market_address, input.trader, input.has_position ? 1 : 0, input.collateral_locked ?? null, input.mean ?? null, input.sigma ?? null, input.variance ?? null, input.settlement_state ?? 'unknown', input.unrealized_pnl ?? null, input.delta_count ?? 0, input.claimed ? 1 : 0, input.position_type ?? 'normal', input.outcome_count ?? null, input.original_probs_json ?? null, input.collateral_locked_raw ?? null);
25
30
  }
26
31
  ensureTrader(marketAddress, trader) {
27
32
  this.db
@@ -48,5 +53,11 @@ export class PositionRepository {
48
53
  .query('SELECT * FROM user_positions ORDER BY market_address, trader')
49
54
  .all();
50
55
  }
56
+ deleteByMarket(marketAddress) {
57
+ const result = this.db
58
+ .query('DELETE FROM user_positions WHERE market_address = ?')
59
+ .run(marketAddress);
60
+ return result.changes;
61
+ }
51
62
  }
52
63
  //# sourceMappingURL=position.js.map
@@ -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;;;;;;;;;;;;;;;oCAe4B,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,CACtB,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,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;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;;;;;;;;;;;;;;;;;;;;oCAoB4B,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,CACpC,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,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 +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;AAuF3C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAEnD"}
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;AAwI3C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAsBnD"}
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,CAAC,EAAY,EAAE,KAAa,EAAE,MAAc,EAAE,UAAkB;IACpF,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 { DecodedEvent, MarketType, VoyagerEvent } 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,UAAU,EACV,YAAY,EACb,MAAM,UAAU,CAAC;AAsClB,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAkC7F;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,UAAU,CAAC,EAAE,UAAU,GACtB,YAAY,EAAE,CAYhB"}