@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.
- package/dist/api/app.d.ts +4 -0
- package/dist/api/app.d.ts.map +1 -1
- package/dist/api/app.js +3 -3
- package/dist/api/app.js.map +1 -1
- package/dist/api/middleware/admin-auth.d.ts.map +1 -1
- package/dist/api/middleware/admin-auth.js +11 -3
- package/dist/api/middleware/admin-auth.js.map +1 -1
- package/dist/api/middleware/error-handler.d.ts.map +1 -1
- package/dist/api/middleware/error-handler.js +2 -2
- package/dist/api/middleware/error-handler.js.map +1 -1
- package/dist/api/routes/admin.d.ts +2 -0
- package/dist/api/routes/admin.d.ts.map +1 -1
- package/dist/api/routes/admin.js +29 -5
- package/dist/api/routes/admin.js.map +1 -1
- package/dist/api/routes/health.d.ts +3 -2
- package/dist/api/routes/health.d.ts.map +1 -1
- package/dist/api/routes/health.js +11 -4
- package/dist/api/routes/health.js.map +1 -1
- package/dist/api/routes/index.d.ts +3 -3
- package/dist/api/routes/index.d.ts.map +1 -1
- package/dist/api/routes/index.js +3 -3
- package/dist/api/routes/index.js.map +1 -1
- package/dist/api/routes/market-events.d.ts.map +1 -1
- package/dist/api/routes/market-events.js +14 -8
- package/dist/api/routes/market-events.js.map +1 -1
- package/dist/api/routes/market-traders.d.ts.map +1 -1
- package/dist/api/routes/market-traders.js +1 -1
- package/dist/api/routes/market-traders.js.map +1 -1
- package/dist/api/routes/markets.d.ts.map +1 -1
- package/dist/api/routes/markets.js +83 -5
- package/dist/api/routes/markets.js.map +1 -1
- package/dist/api/routes/rankings.d.ts.map +1 -1
- package/dist/api/routes/rankings.js +2 -1
- package/dist/api/routes/rankings.js.map +1 -1
- package/dist/api/routes/trader-events.d.ts +1 -1
- package/dist/api/routes/trader-events.d.ts.map +1 -1
- package/dist/api/routes/trader-events.js +11 -6
- package/dist/api/routes/trader-events.js.map +1 -1
- package/dist/api/routes/ws.d.ts.map +1 -1
- package/dist/api/routes/ws.js +4 -3
- package/dist/api/routes/ws.js.map +1 -1
- package/dist/client/IndexerClient.d.ts +10 -1
- package/dist/client/IndexerClient.d.ts.map +1 -1
- package/dist/client/IndexerClient.js.map +1 -1
- package/dist/client/IndexerClientLive.d.ts +1 -0
- package/dist/client/IndexerClientLive.d.ts.map +1 -1
- package/dist/client/IndexerClientLive.js +54 -8
- package/dist/client/IndexerClientLive.js.map +1 -1
- package/dist/client/convenience.d.ts +11 -2
- package/dist/client/convenience.d.ts.map +1 -1
- package/dist/client/convenience.js +4 -0
- package/dist/client/convenience.js.map +1 -1
- package/dist/client/index.d.ts +6 -5
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -4
- package/dist/client/index.js.map +1 -1
- package/dist/client/trader-stats.d.ts +2 -2
- package/dist/client/trader-stats.d.ts.map +1 -1
- package/dist/client/trader-stats.js +1 -1
- package/dist/client/trader-stats.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -6
- package/dist/config.js.map +1 -1
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +4 -1
- package/dist/db/connection.js.map +1 -1
- package/dist/db/repositories/event.d.ts +1 -1
- package/dist/db/repositories/event.d.ts.map +1 -1
- package/dist/db/repositories/event.js +11 -9
- package/dist/db/repositories/event.js.map +1 -1
- package/dist/db/repositories/index.d.ts +3 -2
- package/dist/db/repositories/index.d.ts.map +1 -1
- package/dist/db/repositories/index.js +3 -2
- package/dist/db/repositories/index.js.map +1 -1
- package/dist/db/repositories/market-state.d.ts +1 -0
- package/dist/db/repositories/market-state.d.ts.map +1 -1
- package/dist/db/repositories/market-state.js +8 -0
- package/dist/db/repositories/market-state.js.map +1 -1
- package/dist/db/repositories/market.d.ts +1 -1
- package/dist/db/repositories/market.d.ts.map +1 -1
- package/dist/db/repositories/market.js +39 -17
- package/dist/db/repositories/market.js.map +1 -1
- package/dist/db/repositories/multinoulli-market-state.d.ts +30 -0
- package/dist/db/repositories/multinoulli-market-state.d.ts.map +1 -0
- package/dist/db/repositories/multinoulli-market-state.js +48 -0
- package/dist/db/repositories/multinoulli-market-state.js.map +1 -0
- package/dist/db/repositories/position.d.ts +2 -1
- package/dist/db/repositories/position.d.ts.map +1 -1
- package/dist/db/repositories/position.js +14 -3
- package/dist/db/repositories/position.js.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +68 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/etl/decoder.d.ts +4 -3
- package/dist/etl/decoder.d.ts.map +1 -1
- package/dist/etl/decoder.js +149 -31
- package/dist/etl/decoder.js.map +1 -1
- package/dist/etl/event-indexer.d.ts +3 -2
- package/dist/etl/event-indexer.d.ts.map +1 -1
- package/dist/etl/event-indexer.js +140 -37
- package/dist/etl/event-indexer.js.map +1 -1
- package/dist/etl/position-refresher.d.ts +4 -3
- package/dist/etl/position-refresher.d.ts.map +1 -1
- package/dist/etl/position-refresher.js +54 -8
- package/dist/etl/position-refresher.js.map +1 -1
- package/dist/etl/scheduler.d.ts +2 -2
- package/dist/etl/scheduler.d.ts.map +1 -1
- package/dist/etl/scheduler.js +19 -23
- package/dist/etl/scheduler.js.map +1 -1
- package/dist/etl/state-refresher.d.ts +4 -3
- package/dist/etl/state-refresher.d.ts.map +1 -1
- package/dist/etl/state-refresher.js +39 -9
- package/dist/etl/state-refresher.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +129 -31
- package/dist/index.js.map +1 -1
- package/dist/layers/ChainReaderLive.d.ts.map +1 -1
- package/dist/layers/ChainReaderLive.js +96 -6
- package/dist/layers/ChainReaderLive.js.map +1 -1
- package/dist/layers/DatabaseLive.d.ts +1 -1
- package/dist/layers/DatabaseLive.d.ts.map +1 -1
- package/dist/layers/DatabaseLive.js +2 -1
- package/dist/layers/DatabaseLive.js.map +1 -1
- package/dist/layers/EventBusLive.d.ts.map +1 -1
- package/dist/layers/EventBusLive.js +2 -2
- package/dist/layers/EventBusLive.js.map +1 -1
- package/dist/layers/VoyagerClientLive.d.ts +3 -2
- package/dist/layers/VoyagerClientLive.d.ts.map +1 -1
- package/dist/layers/VoyagerClientLive.js +29 -10
- package/dist/layers/VoyagerClientLive.js.map +1 -1
- package/dist/layers/index.d.ts +2 -2
- package/dist/layers/index.d.ts.map +1 -1
- package/dist/layers/index.js +2 -2
- package/dist/layers/index.js.map +1 -1
- package/dist/services/ChainReader.d.ts +3 -0
- package/dist/services/ChainReader.d.ts.map +1 -1
- package/dist/services/ChainReader.js.map +1 -1
- package/dist/services/Database.d.ts +3 -2
- package/dist/services/Database.d.ts.map +1 -1
- package/dist/services/Database.js.map +1 -1
- package/dist/services/EventBus.d.ts.map +1 -1
- package/dist/services/EventBus.js.map +1 -1
- package/dist/services/VoyagerRateLimit.d.ts +40 -0
- package/dist/services/VoyagerRateLimit.d.ts.map +1 -0
- package/dist/services/VoyagerRateLimit.js +91 -0
- package/dist/services/VoyagerRateLimit.js.map +1 -0
- package/dist/services/index.d.ts +4 -4
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/types/api.d.ts +48 -1
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/event.d.ts +43 -2
- package/dist/types/event.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/market.d.ts +64 -0
- package/dist/types/market.d.ts.map +1 -1
- package/dist/types/position.d.ts +8 -0
- package/dist/types/position.d.ts.map +1 -1
- 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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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":"AAMA,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C,MAAM,CAAC,KAAuB;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,EAAE;iBACJ,KAAK,CACJ
|
|
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 {
|
|
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,
|
|
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 {
|
|
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,
|
|
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;
|
|
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 {
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
22
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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 = ?,
|
|
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":"
|
|
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 {
|
|
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,
|
|
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,
|
|
12
|
-
|
|
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
|
|
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"}
|
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAG
|
|
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"}
|
package/dist/etl/decoder.d.ts
CHANGED
|
@@ -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 {
|
|
9
|
-
export declare function decodeEvent(event: VoyagerEvent):
|
|
10
|
-
export declare function decodeEvents(events: readonly VoyagerEvent[]):
|
|
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
|
|
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"}
|