pmxt-core 2.33.2 → 2.33.4

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.
@@ -571,35 +571,35 @@ export declare abstract class PredictionMarketExchange {
571
571
  */
572
572
  close(): Promise<void>;
573
573
  /**
574
- * Fetch cross-venue matches for a given market.
574
+ * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
575
575
  *
576
576
  * @param params - Match filter parameters (marketId, relation, minConfidence, etc.)
577
577
  * @returns Array of matched markets with relation and confidence
578
578
  */
579
579
  fetchMatches(params: FetchMatchesParams): Promise<MatchResult[]>;
580
580
  /**
581
- * Fetch cross-venue matches for a given event.
581
+ * Find the same or related event on other venues. Given an event on one venue, discover semantically equivalent events across every other venue PMXT ingests — including market-level match details for each child market.
582
582
  *
583
583
  * @param params - Event match filter parameters (eventId, relation, etc.)
584
584
  * @returns Array of matched events with market-level match details
585
585
  */
586
586
  fetchEventMatches(params: FetchEventMatchesParams): Promise<EventMatchResult[]>;
587
587
  /**
588
- * Compare prices across venues for identity matches of a market.
588
+ * Compare live prices for the same market across venues. Finds identity matches and returns side-by-side best bid/ask prices so you can spot price differences at a glance.
589
589
  *
590
590
  * @param params - Match filter parameters (uses relation: 'identity' internally)
591
591
  * @returns Array of price comparisons across venues
592
592
  */
593
593
  compareMarketPrices(params: FetchMatchesParams): Promise<PriceComparison[]>;
594
594
  /**
595
- * Find hedging opportunities via subset/superset matches across venues.
595
+ * Find hedging opportunities across venues. Discovers subset/superset market relationships where one market's outcome implies another, enabling cross-venue hedging strategies with live prices.
596
596
  *
597
597
  * @param params - Match filter parameters
598
598
  * @returns Array of subset/superset matches with live prices
599
599
  */
600
600
  fetchHedges(params: FetchMatchesParams): Promise<PriceComparison[]>;
601
601
  /**
602
- * Scan for arbitrage opportunities across identity matches.
602
+ * Scan for arbitrage opportunities across venues. Finds identity matches where the same market is priced differently on different venues, returning opportunities sorted by spread size.
603
603
  *
604
604
  * @param params - Arbitrage scan parameters (minSpread, category, limit)
605
605
  * @returns Array of arbitrage opportunities sorted by spread
@@ -764,7 +764,7 @@ class PredictionMarketExchange {
764
764
  // Matching Methods (Router-only; stubs throw for standard exchanges)
765
765
  // ----------------------------------------------------------------------------
766
766
  /**
767
- * Fetch cross-venue matches for a given market.
767
+ * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
768
768
  *
769
769
  * @param params - Match filter parameters (marketId, relation, minConfidence, etc.)
770
770
  * @returns Array of matched markets with relation and confidence
@@ -773,7 +773,7 @@ class PredictionMarketExchange {
773
773
  throw new Error("Method fetchMatches not implemented.");
774
774
  }
775
775
  /**
776
- * Fetch cross-venue matches for a given event.
776
+ * Find the same or related event on other venues. Given an event on one venue, discover semantically equivalent events across every other venue PMXT ingests — including market-level match details for each child market.
777
777
  *
778
778
  * @param params - Event match filter parameters (eventId, relation, etc.)
779
779
  * @returns Array of matched events with market-level match details
@@ -782,7 +782,7 @@ class PredictionMarketExchange {
782
782
  throw new Error("Method fetchEventMatches not implemented.");
783
783
  }
784
784
  /**
785
- * Compare prices across venues for identity matches of a market.
785
+ * Compare live prices for the same market across venues. Finds identity matches and returns side-by-side best bid/ask prices so you can spot price differences at a glance.
786
786
  *
787
787
  * @param params - Match filter parameters (uses relation: 'identity' internally)
788
788
  * @returns Array of price comparisons across venues
@@ -791,7 +791,7 @@ class PredictionMarketExchange {
791
791
  throw new Error("Method compareMarketPrices not implemented.");
792
792
  }
793
793
  /**
794
- * Find hedging opportunities via subset/superset matches across venues.
794
+ * Find hedging opportunities across venues. Discovers subset/superset market relationships where one market's outcome implies another, enabling cross-venue hedging strategies with live prices.
795
795
  *
796
796
  * @param params - Match filter parameters
797
797
  * @returns Array of subset/superset matches with live prices
@@ -800,7 +800,7 @@ class PredictionMarketExchange {
800
800
  throw new Error("Method fetchHedges not implemented.");
801
801
  }
802
802
  /**
803
- * Scan for arbitrage opportunities across identity matches.
803
+ * Scan for arbitrage opportunities across venues. Finds identity matches where the same market is priced differently on different venues, returning opportunities sorted by spread size.
804
804
  *
805
805
  * @param params - Arbitrage scan parameters (minSpread, category, limit)
806
806
  * @returns Array of arbitrage opportunities sorted by spread
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/kalshi/Kalshi.yaml
3
- * Generated at: 2026-04-23T07:50:04.153Z
3
+ * Generated at: 2026-04-23T08:37:08.985Z
4
4
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
5
5
  */
6
6
  export declare const kalshiApiSpec: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.kalshiApiSpec = void 0;
4
4
  /**
5
5
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/kalshi/Kalshi.yaml
6
- * Generated at: 2026-04-23T07:50:04.153Z
6
+ * Generated at: 2026-04-23T08:37:08.985Z
7
7
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
8
8
  */
9
9
  exports.kalshiApiSpec = {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/limitless/Limitless.yaml
3
- * Generated at: 2026-04-23T07:50:04.190Z
3
+ * Generated at: 2026-04-23T08:37:09.032Z
4
4
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
5
5
  */
6
6
  export declare const limitlessApiSpec: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.limitlessApiSpec = void 0;
4
4
  /**
5
5
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/limitless/Limitless.yaml
6
- * Generated at: 2026-04-23T07:50:04.190Z
6
+ * Generated at: 2026-04-23T08:37:09.032Z
7
7
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
8
8
  */
9
9
  exports.limitlessApiSpec = {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/myriad/myriad.yaml
3
- * Generated at: 2026-04-23T07:50:04.201Z
3
+ * Generated at: 2026-04-23T08:37:09.045Z
4
4
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
5
5
  */
6
6
  export declare const myriadApiSpec: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.myriadApiSpec = void 0;
4
4
  /**
5
5
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/myriad/myriad.yaml
6
- * Generated at: 2026-04-23T07:50:04.201Z
6
+ * Generated at: 2026-04-23T08:37:09.045Z
7
7
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
8
8
  */
9
9
  exports.myriadApiSpec = {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/opinion/opinion-openapi.yaml
3
- * Generated at: 2026-04-23T07:50:04.206Z
3
+ * Generated at: 2026-04-23T08:37:09.051Z
4
4
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
5
5
  */
6
6
  export declare const opinionApiSpec: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.opinionApiSpec = void 0;
4
4
  /**
5
5
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/opinion/opinion-openapi.yaml
6
- * Generated at: 2026-04-23T07:50:04.206Z
6
+ * Generated at: 2026-04-23T08:37:09.051Z
7
7
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
8
8
  */
9
9
  exports.opinionApiSpec = {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketClobAPI.yaml
3
- * Generated at: 2026-04-23T07:50:04.161Z
3
+ * Generated at: 2026-04-23T08:37:08.994Z
4
4
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
5
5
  */
6
6
  export declare const polymarketClobSpec: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.polymarketClobSpec = void 0;
4
4
  /**
5
5
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketClobAPI.yaml
6
- * Generated at: 2026-04-23T07:50:04.161Z
6
+ * Generated at: 2026-04-23T08:37:08.994Z
7
7
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
8
8
  */
9
9
  exports.polymarketClobSpec = {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/Polymarket_Data_API.yaml
3
- * Generated at: 2026-04-23T07:50:04.172Z
3
+ * Generated at: 2026-04-23T08:37:09.010Z
4
4
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
5
5
  */
6
6
  export declare const polymarketDataSpec: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.polymarketDataSpec = void 0;
4
4
  /**
5
5
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/Polymarket_Data_API.yaml
6
- * Generated at: 2026-04-23T07:50:04.172Z
6
+ * Generated at: 2026-04-23T08:37:09.010Z
7
7
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
8
8
  */
9
9
  exports.polymarketDataSpec = {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketGammaAPI.yaml
3
- * Generated at: 2026-04-23T07:50:04.170Z
3
+ * Generated at: 2026-04-23T08:37:09.007Z
4
4
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
5
5
  */
6
6
  export declare const polymarketGammaSpec: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.polymarketGammaSpec = void 0;
4
4
  /**
5
5
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketGammaAPI.yaml
6
- * Generated at: 2026-04-23T07:50:04.170Z
6
+ * Generated at: 2026-04-23T08:37:09.007Z
7
7
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
8
8
  */
9
9
  exports.polymarketGammaSpec = {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/probable/probable.yaml
3
- * Generated at: 2026-04-23T07:50:04.194Z
3
+ * Generated at: 2026-04-23T08:37:09.039Z
4
4
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
5
5
  */
6
6
  export declare const probableApiSpec: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.probableApiSpec = void 0;
4
4
  /**
5
5
  * Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/probable/probable.yaml
6
- * Generated at: 2026-04-23T07:50:04.194Z
6
+ * Generated at: 2026-04-23T08:37:09.039Z
7
7
  * Do not edit manually -- run "npm run fetch:openapi" to regenerate.
8
8
  */
9
9
  exports.probableApiSpec = {
@@ -215,7 +215,14 @@ function createApp(options = {}) {
215
215
  try {
216
216
  const exchangeName = req.params.exchange.toLowerCase();
217
217
  let exchange;
218
- if (credentials &&
218
+ if (exchangeName === "router") {
219
+ // Router uses the caller's Bearer token for its internal /v0/
220
+ // calls — not a server-side env var. Each request may carry a
221
+ // different key, so Router is never cached as a singleton.
222
+ const bearer = req.headers.authorization?.replace(/^Bearer\s+/i, "") || "";
223
+ exchange = createExchange(exchangeName, undefined, bearer);
224
+ }
225
+ else if (credentials &&
219
226
  (credentials.privateKey ||
220
227
  credentials.apiKey ||
221
228
  credentials.apiToken)) {
@@ -334,7 +341,7 @@ async function startServer(port, accessToken) {
334
341
  const app = createApp({ accessToken });
335
342
  return app.listen(port, "127.0.0.1");
336
343
  }
337
- function createExchange(name, credentials) {
344
+ function createExchange(name, credentials, bearerToken) {
338
345
  switch (name) {
339
346
  case "polymarket":
340
347
  return new polymarket_1.PolymarketExchange({
@@ -413,7 +420,7 @@ function createExchange(name, credentials) {
413
420
  });
414
421
  case "router":
415
422
  return new router_1.Router({
416
- apiKey: process.env.PMXT_API_KEY || '',
423
+ apiKey: bearerToken,
417
424
  });
418
425
  default:
419
426
  throw new Error(`Unknown exchange: ${name}`);
@@ -530,7 +530,7 @@ paths:
530
530
  or throws EventNotFound.
531
531
  '/api/{exchange}/fetchOHLCV':
532
532
  get:
533
- summary: Fetch O H L C V
533
+ summary: Fetch OHLCV
534
534
  operationId: fetchOHLCV
535
535
  parameters:
536
536
  - $ref: '#/components/parameters/ExchangeParam'
@@ -574,7 +574,7 @@ paths:
574
574
  description: Maximum number of results to return
575
575
  responses:
576
576
  '200':
577
- description: Fetch O H L C V response
577
+ description: Fetch OHLCV response
578
578
  content:
579
579
  application/json:
580
580
  schema:
@@ -1466,7 +1466,7 @@ paths:
1466
1466
  connections.
1467
1467
  '/api/{exchange}/fetchMatches':
1468
1468
  get:
1469
- summary: Fetch Matches
1469
+ summary: Find Similar Markets
1470
1470
  operationId: fetchMatches
1471
1471
  parameters:
1472
1472
  - $ref: '#/components/parameters/ExchangeParam'
@@ -1513,7 +1513,7 @@ paths:
1513
1513
  type: boolean
1514
1514
  responses:
1515
1515
  '200':
1516
- description: Fetch Matches response
1516
+ description: Find Similar Markets response
1517
1517
  content:
1518
1518
  application/json:
1519
1519
  schema:
@@ -1525,10 +1525,13 @@ paths:
1525
1525
  type: array
1526
1526
  items:
1527
1527
  $ref: '#/components/schemas/MatchResult'
1528
- description: Fetch cross-venue matches for a given market.
1528
+ description: >-
1529
+ Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent
1530
+ markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap,
1531
+ disjoint), confidence score, and reasoning.
1529
1532
  '/api/{exchange}/fetchEventMatches':
1530
1533
  get:
1531
- summary: Fetch Event Matches
1534
+ summary: Find Similar Events
1532
1535
  operationId: fetchEventMatches
1533
1536
  parameters:
1534
1537
  - $ref: '#/components/parameters/ExchangeParam'
@@ -1570,7 +1573,7 @@ paths:
1570
1573
  type: boolean
1571
1574
  responses:
1572
1575
  '200':
1573
- description: Fetch Event Matches response
1576
+ description: Find Similar Events response
1574
1577
  content:
1575
1578
  application/json:
1576
1579
  schema:
@@ -1582,10 +1585,12 @@ paths:
1582
1585
  type: array
1583
1586
  items:
1584
1587
  $ref: '#/components/schemas/EventMatchResult'
1585
- description: Fetch cross-venue matches for a given event.
1588
+ description: >-
1589
+ Find the same or related event on other venues. Given an event on one venue, discover semantically equivalent
1590
+ events across every other venue PMXT ingests — including market-level match details for each child market.
1586
1591
  '/api/{exchange}/compareMarketPrices':
1587
1592
  post:
1588
- summary: Compare Market Prices
1593
+ summary: Compare Prices Across Venues
1589
1594
  operationId: compareMarketPrices
1590
1595
  parameters:
1591
1596
  - $ref: '#/components/parameters/ExchangeParam'
@@ -1608,7 +1613,7 @@ paths:
1608
1613
  - args
1609
1614
  responses:
1610
1615
  '200':
1611
- description: Compare Market Prices response
1616
+ description: Compare Prices Across Venues response
1612
1617
  content:
1613
1618
  application/json:
1614
1619
  schema:
@@ -1620,10 +1625,12 @@ paths:
1620
1625
  type: array
1621
1626
  items:
1622
1627
  $ref: '#/components/schemas/PriceComparison'
1623
- description: Compare prices across venues for identity matches of a market.
1628
+ description: >-
1629
+ Compare live prices for the same market across venues. Finds identity matches and returns side-by-side best
1630
+ bid/ask prices so you can spot price differences at a glance.
1624
1631
  '/api/{exchange}/fetchHedges':
1625
1632
  get:
1626
- summary: Fetch Hedges
1633
+ summary: Find Hedging Opportunities
1627
1634
  operationId: fetchHedges
1628
1635
  parameters:
1629
1636
  - $ref: '#/components/parameters/ExchangeParam'
@@ -1670,7 +1677,7 @@ paths:
1670
1677
  type: boolean
1671
1678
  responses:
1672
1679
  '200':
1673
- description: Fetch Hedges response
1680
+ description: Find Hedging Opportunities response
1674
1681
  content:
1675
1682
  application/json:
1676
1683
  schema:
@@ -1682,10 +1689,12 @@ paths:
1682
1689
  type: array
1683
1690
  items:
1684
1691
  $ref: '#/components/schemas/PriceComparison'
1685
- description: Find hedging opportunities via subset/superset matches across venues.
1692
+ description: >-
1693
+ Find hedging opportunities across venues. Discovers subset/superset market relationships where one market's
1694
+ outcome implies another, enabling cross-venue hedging strategies with live prices.
1686
1695
  '/api/{exchange}/fetchArbitrage':
1687
1696
  get:
1688
- summary: Fetch Arbitrage
1697
+ summary: Find Arbitrage Opportunities
1689
1698
  operationId: fetchArbitrage
1690
1699
  parameters:
1691
1700
  - $ref: '#/components/parameters/ExchangeParam'
@@ -1706,7 +1715,7 @@ paths:
1706
1715
  type: number
1707
1716
  responses:
1708
1717
  '200':
1709
- description: Fetch Arbitrage response
1718
+ description: Find Arbitrage Opportunities response
1710
1719
  content:
1711
1720
  application/json:
1712
1721
  schema:
@@ -1718,7 +1727,9 @@ paths:
1718
1727
  type: array
1719
1728
  items:
1720
1729
  $ref: '#/components/schemas/ArbitrageOpportunity'
1721
- description: Scan for arbitrage opportunities across identity matches.
1730
+ description: >-
1731
+ Scan for arbitrage opportunities across venues. Finds identity matches where the same market is priced
1732
+ differently on different venues, returning opportunities sorted by spread size.
1722
1733
  components:
1723
1734
  parameters:
1724
1735
  ExchangeParam:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmxt-core",
3
- "version": "2.33.2",
3
+ "version": "2.33.4",
4
4
  "description": "pmxt is a unified prediction market data API. The ccxt for prediction markets.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,8 +29,8 @@
29
29
  "test": "jest -c jest.config.js",
30
30
  "server": "tsx watch src/server/index.ts",
31
31
  "server:prod": "node dist/server/index.js",
32
- "generate:sdk:python": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g python -o ../sdks/python/generated --package-name pmxt_internal --additional-properties=projectName=pmxt-internal,packageVersion=2.33.2,library=urllib3",
33
- "generate:sdk:typescript": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g typescript-fetch -o ../sdks/typescript/generated --additional-properties=npmName=pmxtjs,npmVersion=2.33.2,supportsES6=true,typescriptThreePlus=true && node ../sdks/typescript/scripts/fix-generated.js",
32
+ "generate:sdk:python": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g python -o ../sdks/python/generated --package-name pmxt_internal --additional-properties=projectName=pmxt-internal,packageVersion=2.33.4,library=urllib3",
33
+ "generate:sdk:typescript": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g typescript-fetch -o ../sdks/typescript/generated --additional-properties=npmName=pmxtjs,npmVersion=2.33.4,supportsES6=true,typescriptThreePlus=true && node ../sdks/typescript/scripts/fix-generated.js",
34
34
  "fetch:openapi": "node scripts/fetch-openapi-specs.js",
35
35
  "extract:jsdoc": "node ../scripts/extract-jsdoc.js",
36
36
  "generate:docs": "npm run extract:jsdoc && node ../scripts/generate-api-docs.js",