pmxt-core 2.37.4 → 2.37.6
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/exchanges/kalshi/api.d.ts +1 -1
- package/dist/exchanges/kalshi/api.js +1 -1
- package/dist/exchanges/kalshi/websocket.js +73 -38
- package/dist/exchanges/limitless/api.d.ts +1 -1
- package/dist/exchanges/limitless/api.js +1 -1
- package/dist/exchanges/myriad/api.d.ts +1 -1
- package/dist/exchanges/myriad/api.js +1 -1
- package/dist/exchanges/opinion/api.d.ts +1 -1
- package/dist/exchanges/opinion/api.js +1 -1
- package/dist/exchanges/polymarket/api-clob.d.ts +1 -1
- package/dist/exchanges/polymarket/api-clob.js +1 -1
- package/dist/exchanges/polymarket/api-data.d.ts +1 -1
- package/dist/exchanges/polymarket/api-data.js +1 -1
- package/dist/exchanges/polymarket/api-gamma.d.ts +1 -1
- package/dist/exchanges/polymarket/api-gamma.js +1 -1
- package/dist/exchanges/probable/api.d.ts +1 -1
- package/dist/exchanges/probable/api.js +1 -1
- package/dist/server/method-verbs.json +4 -4
- package/dist/server/openapi.yaml +11 -23
- package/package.json +3 -3
|
@@ -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-05-
|
|
3
|
+
* Generated at: 2026-05-05T12:04:06.591Z
|
|
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-05-
|
|
6
|
+
* Generated at: 2026-05-05T12:04:06.591Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.kalshiApiSpec = {
|
|
@@ -176,31 +176,45 @@ class KalshiWebSocket {
|
|
|
176
176
|
}
|
|
177
177
|
handleOrderbookSnapshot(data) {
|
|
178
178
|
const ticker = data.market_ticker;
|
|
179
|
-
// Kalshi
|
|
180
|
-
//
|
|
181
|
-
//
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
179
|
+
// Kalshi V2 WebSocket uses dollar-denominated string pairs:
|
|
180
|
+
// yes_dollars_fp / no_dollars_fp: [["0.55", "100.00"], ...]
|
|
181
|
+
// Older format used cent-denominated objects:
|
|
182
|
+
// yes / no: [{ price: 55, quantity: 100 }, ...]
|
|
183
|
+
const usesDollarsFp = data.yes_dollars_fp !== undefined || data.no_dollars_fp !== undefined;
|
|
184
|
+
let bids;
|
|
185
|
+
let asks;
|
|
186
|
+
if (usesDollarsFp) {
|
|
187
|
+
bids = (data.yes_dollars_fp || []).map((level) => ({
|
|
188
|
+
price: parseFloat(level[0]),
|
|
189
|
+
size: parseFloat(level[1]),
|
|
190
|
+
}));
|
|
191
|
+
asks = (data.no_dollars_fp || []).map((level) => ({
|
|
192
|
+
price: Math.round((1 - parseFloat(level[0])) * 10000) / 10000,
|
|
193
|
+
size: parseFloat(level[1]),
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
bids = (data.yes || []).map((level) => {
|
|
198
|
+
const price = (level.price || level[0]) / 100;
|
|
199
|
+
const size = (level.quantity !== undefined
|
|
200
|
+
? level.quantity
|
|
201
|
+
: level.size !== undefined
|
|
202
|
+
? level.size
|
|
203
|
+
: level[1]) || 0;
|
|
204
|
+
return { price, size };
|
|
205
|
+
});
|
|
206
|
+
asks = (data.no || []).map((level) => {
|
|
207
|
+
const price = (100 - (level.price || level[0])) / 100;
|
|
208
|
+
const size = (level.quantity !== undefined
|
|
209
|
+
? level.quantity
|
|
210
|
+
: level.size !== undefined
|
|
211
|
+
? level.size
|
|
212
|
+
: level[1]) || 0;
|
|
213
|
+
return { price, size };
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
bids.sort((a, b) => b.price - a.price);
|
|
217
|
+
asks.sort((a, b) => a.price - b.price);
|
|
204
218
|
const orderBook = {
|
|
205
219
|
bids,
|
|
206
220
|
asks,
|
|
@@ -216,21 +230,42 @@ class KalshiWebSocket {
|
|
|
216
230
|
// No snapshot yet, skip delta
|
|
217
231
|
return;
|
|
218
232
|
}
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
233
|
+
// Kalshi V2 uses dollar-denominated string values:
|
|
234
|
+
// { price_dollars_fp: "0.55", delta_dollars_fp: "10.00", side: "yes"|"no" }
|
|
235
|
+
// Older format used cent-denominated integers:
|
|
236
|
+
// { price: 55, delta: 10, side: "yes"|"no" }
|
|
237
|
+
const usesDollarsFp = data.price_dollars_fp !== undefined;
|
|
238
|
+
let price;
|
|
239
|
+
let delta;
|
|
240
|
+
if (usesDollarsFp) {
|
|
241
|
+
const rawPrice = parseFloat(data.price_dollars_fp);
|
|
242
|
+
delta = parseFloat(data.delta_dollars_fp || "0");
|
|
243
|
+
const side = data.side;
|
|
244
|
+
if (side === "yes") {
|
|
245
|
+
price = rawPrice;
|
|
246
|
+
this.applyDelta(existing.bids, price, delta, "desc");
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
price = Math.round((1 - rawPrice) * 10000) / 10000;
|
|
250
|
+
this.applyDelta(existing.asks, price, delta, "asc");
|
|
251
|
+
}
|
|
230
252
|
}
|
|
231
253
|
else {
|
|
232
|
-
|
|
233
|
-
|
|
254
|
+
price = data.price / 100;
|
|
255
|
+
delta =
|
|
256
|
+
data.delta !== undefined
|
|
257
|
+
? data.delta
|
|
258
|
+
: data.quantity !== undefined
|
|
259
|
+
? data.quantity
|
|
260
|
+
: 0;
|
|
261
|
+
const side = data.side;
|
|
262
|
+
if (side === "yes") {
|
|
263
|
+
this.applyDelta(existing.bids, price, delta, "desc");
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
const yesPrice = (100 - data.price) / 100;
|
|
267
|
+
this.applyDelta(existing.asks, yesPrice, delta, "asc");
|
|
268
|
+
}
|
|
234
269
|
}
|
|
235
270
|
existing.timestamp = Date.now();
|
|
236
271
|
this.resolveOrderBook(ticker, existing);
|
|
@@ -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-05-
|
|
3
|
+
* Generated at: 2026-05-05T12:04:06.633Z
|
|
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-05-
|
|
6
|
+
* Generated at: 2026-05-05T12:04:06.633Z
|
|
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-05-
|
|
3
|
+
* Generated at: 2026-05-05T12:04:06.647Z
|
|
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-05-
|
|
6
|
+
* Generated at: 2026-05-05T12:04:06.647Z
|
|
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-05-
|
|
3
|
+
* Generated at: 2026-05-05T12:04:06.652Z
|
|
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-05-
|
|
6
|
+
* Generated at: 2026-05-05T12:04:06.652Z
|
|
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-05-
|
|
3
|
+
* Generated at: 2026-05-05T12:04:06.600Z
|
|
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-05-
|
|
6
|
+
* Generated at: 2026-05-05T12:04:06.600Z
|
|
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-05-
|
|
3
|
+
* Generated at: 2026-05-05T12:04:06.615Z
|
|
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-05-
|
|
6
|
+
* Generated at: 2026-05-05T12:04:06.615Z
|
|
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-05-
|
|
3
|
+
* Generated at: 2026-05-05T12:04:06.612Z
|
|
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-05-
|
|
6
|
+
* Generated at: 2026-05-05T12:04:06.612Z
|
|
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-05-
|
|
3
|
+
* Generated at: 2026-05-05T12:04:06.640Z
|
|
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-05-
|
|
6
|
+
* Generated at: 2026-05-05T12:04:06.640Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.probableApiSpec = {
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
]
|
|
86
86
|
},
|
|
87
87
|
"fetchOrderBook": {
|
|
88
|
-
"verb": "
|
|
88
|
+
"verb": "get",
|
|
89
89
|
"args": [
|
|
90
90
|
{
|
|
91
91
|
"name": "id",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
"name": "side",
|
|
97
|
-
"kind": "
|
|
97
|
+
"kind": "string",
|
|
98
98
|
"optional": true
|
|
99
99
|
}
|
|
100
100
|
]
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
},
|
|
235
235
|
{
|
|
236
236
|
"name": "side",
|
|
237
|
-
"kind": "
|
|
237
|
+
"kind": "string",
|
|
238
238
|
"optional": false
|
|
239
239
|
},
|
|
240
240
|
{
|
|
@@ -254,7 +254,7 @@
|
|
|
254
254
|
},
|
|
255
255
|
{
|
|
256
256
|
"name": "side",
|
|
257
|
-
"kind": "
|
|
257
|
+
"kind": "string",
|
|
258
258
|
"optional": false
|
|
259
259
|
},
|
|
260
260
|
{
|
package/dist/server/openapi.yaml
CHANGED
|
@@ -630,33 +630,21 @@ paths:
|
|
|
630
630
|
$ref: '#/components/schemas/PriceCandle'
|
|
631
631
|
description: Fetch historical OHLCV (candlestick) price data for a specific market outcome.
|
|
632
632
|
'/api/{exchange}/fetchOrderBook':
|
|
633
|
-
|
|
633
|
+
get:
|
|
634
634
|
summary: Fetch Order Book
|
|
635
635
|
operationId: fetchOrderBook
|
|
636
636
|
parameters:
|
|
637
637
|
- $ref: '#/components/parameters/ExchangeParam'
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
maxItems: 2
|
|
649
|
-
items:
|
|
650
|
-
oneOf:
|
|
651
|
-
- type: string
|
|
652
|
-
- type: string
|
|
653
|
-
enum:
|
|
654
|
-
- 'yes'
|
|
655
|
-
- 'no'
|
|
656
|
-
credentials:
|
|
657
|
-
$ref: '#/components/schemas/ExchangeCredentials'
|
|
658
|
-
required:
|
|
659
|
-
- args
|
|
638
|
+
- in: query
|
|
639
|
+
name: id
|
|
640
|
+
required: true
|
|
641
|
+
schema:
|
|
642
|
+
type: string
|
|
643
|
+
- in: query
|
|
644
|
+
name: side
|
|
645
|
+
required: false
|
|
646
|
+
schema:
|
|
647
|
+
type: string
|
|
660
648
|
responses:
|
|
661
649
|
'200':
|
|
662
650
|
description: Fetch Order Book response
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pmxt-core",
|
|
3
|
-
"version": "2.37.
|
|
3
|
+
"version": "2.37.6",
|
|
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.37.
|
|
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.37.
|
|
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.37.6,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.37.6,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",
|