pmxtjs 2.35.30 → 2.35.32

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 (42) hide show
  1. package/dist/esm/generated/src/apis/DefaultApi.d.ts +33 -1
  2. package/dist/esm/generated/src/apis/DefaultApi.js +48 -1
  3. package/dist/esm/generated/src/models/WatchOrderBooks200Response.d.ts +48 -0
  4. package/dist/esm/generated/src/models/WatchOrderBooks200Response.js +48 -0
  5. package/dist/esm/generated/src/models/WatchOrderBooksRequest.d.ts +40 -0
  6. package/dist/esm/generated/src/models/WatchOrderBooksRequest.js +47 -0
  7. package/dist/esm/generated/src/models/WatchOrderBooksRequestArgsInner.d.ts +21 -0
  8. package/dist/esm/generated/src/models/WatchOrderBooksRequestArgsInner.js +47 -0
  9. package/dist/esm/generated/src/models/index.d.ts +3 -0
  10. package/dist/esm/generated/src/models/index.js +3 -0
  11. package/dist/esm/pmxt/client.d.ts +42 -0
  12. package/dist/esm/pmxt/client.js +149 -4
  13. package/dist/esm/pmxt/ws-client.d.ts +37 -0
  14. package/dist/esm/pmxt/ws-client.js +272 -0
  15. package/dist/generated/src/apis/DefaultApi.d.ts +33 -1
  16. package/dist/generated/src/apis/DefaultApi.js +48 -1
  17. package/dist/generated/src/models/WatchOrderBooks200Response.d.ts +48 -0
  18. package/dist/generated/src/models/WatchOrderBooks200Response.js +55 -0
  19. package/dist/generated/src/models/WatchOrderBooksRequest.d.ts +40 -0
  20. package/dist/generated/src/models/WatchOrderBooksRequest.js +54 -0
  21. package/dist/generated/src/models/WatchOrderBooksRequestArgsInner.d.ts +21 -0
  22. package/dist/generated/src/models/WatchOrderBooksRequestArgsInner.js +53 -0
  23. package/dist/generated/src/models/index.d.ts +3 -0
  24. package/dist/generated/src/models/index.js +3 -0
  25. package/dist/pmxt/client.d.ts +42 -0
  26. package/dist/pmxt/client.js +149 -4
  27. package/dist/pmxt/ws-client.d.ts +37 -0
  28. package/dist/pmxt/ws-client.js +276 -0
  29. package/generated/.openapi-generator/FILES +6 -0
  30. package/generated/docs/DefaultApi.md +71 -0
  31. package/generated/docs/WatchOrderBooks200Response.md +38 -0
  32. package/generated/docs/WatchOrderBooksRequest.md +36 -0
  33. package/generated/docs/WatchOrderBooksRequestArgsInner.md +32 -0
  34. package/generated/package.json +1 -1
  35. package/generated/src/apis/DefaultApi.ts +71 -0
  36. package/generated/src/models/WatchOrderBooks200Response.ts +96 -0
  37. package/generated/src/models/WatchOrderBooksRequest.ts +89 -0
  38. package/generated/src/models/WatchOrderBooksRequestArgsInner.ts +59 -0
  39. package/generated/src/models/index.ts +3 -0
  40. package/package.json +2 -2
  41. package/pmxt/client.ts +181 -8
  42. package/pmxt/ws-client.ts +347 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * WebSocket client for streaming methods.
3
+ *
4
+ * Provides a multiplexed WebSocket connection to the sidecar server,
5
+ * used by watchOrderBook and watchOrderBooks as an alternative to
6
+ * HTTP long-polling. Falls back to HTTP transparently when the sidecar
7
+ * does not support the /ws endpoint.
8
+ */
9
+ /**
10
+ * Multiplexed WebSocket client for the pmxt sidecar.
11
+ *
12
+ * Lazily connects to ws://{host}/ws?token={accessToken}. A single
13
+ * WebSocket connection is shared across all streaming subscriptions.
14
+ */
15
+ export declare class SidecarWsClient {
16
+ private ws;
17
+ private host;
18
+ private accessToken;
19
+ private closed;
20
+ /** requestId -> latest data payload */
21
+ private dataStore;
22
+ /** requestId -> subscription metadata */
23
+ private subscriptions;
24
+ /** (method:symbolKey) -> requestId -- avoids duplicate subscribes */
25
+ private activeSubs;
26
+ private connectPromise;
27
+ constructor(host: string, accessToken?: string);
28
+ private ensureConnected;
29
+ private connect;
30
+ private getWebSocketConstructor;
31
+ private dispatch;
32
+ subscribe(exchange: string, method: string, args: any[], credentials?: Record<string, any>, timeoutMs?: number): Promise<any>;
33
+ subscribeBatch(exchange: string, method: string, args: any[], credentials?: Record<string, any>, timeoutMs?: number): Promise<Record<string, any>>;
34
+ close(): void;
35
+ get connected(): boolean;
36
+ private waitForData;
37
+ }
@@ -0,0 +1,272 @@
1
+ /**
2
+ * WebSocket client for streaming methods.
3
+ *
4
+ * Provides a multiplexed WebSocket connection to the sidecar server,
5
+ * used by watchOrderBook and watchOrderBooks as an alternative to
6
+ * HTTP long-polling. Falls back to HTTP transparently when the sidecar
7
+ * does not support the /ws endpoint.
8
+ */
9
+ import { PmxtError } from "./errors.js";
10
+ /**
11
+ * Multiplexed WebSocket client for the pmxt sidecar.
12
+ *
13
+ * Lazily connects to ws://{host}/ws?token={accessToken}. A single
14
+ * WebSocket connection is shared across all streaming subscriptions.
15
+ */
16
+ export class SidecarWsClient {
17
+ ws = null;
18
+ host;
19
+ accessToken;
20
+ closed = false;
21
+ /** requestId -> latest data payload */
22
+ dataStore = new Map();
23
+ /** requestId -> subscription metadata */
24
+ subscriptions = new Map();
25
+ /** (method:symbolKey) -> requestId -- avoids duplicate subscribes */
26
+ activeSubs = new Map();
27
+ connectPromise = null;
28
+ constructor(host, accessToken) {
29
+ this.host = host;
30
+ this.accessToken = accessToken;
31
+ }
32
+ // ------------------------------------------------------------------
33
+ // Connection lifecycle
34
+ // ------------------------------------------------------------------
35
+ async ensureConnected() {
36
+ if (this.ws && !this.closed)
37
+ return;
38
+ if (this.connectPromise)
39
+ return this.connectPromise;
40
+ this.connectPromise = this.connect();
41
+ try {
42
+ await this.connectPromise;
43
+ }
44
+ finally {
45
+ this.connectPromise = null;
46
+ }
47
+ }
48
+ connect() {
49
+ return new Promise((resolve, reject) => {
50
+ let hostPart = this.host;
51
+ let scheme = "ws";
52
+ if (hostPart.startsWith("https://")) {
53
+ hostPart = hostPart.slice("https://".length);
54
+ scheme = "wss";
55
+ }
56
+ else if (hostPart.startsWith("http://")) {
57
+ hostPart = hostPart.slice("http://".length);
58
+ }
59
+ let url = `${scheme}://${hostPart}/ws`;
60
+ if (this.accessToken) {
61
+ url = `${url}?token=${this.accessToken}`;
62
+ }
63
+ // Use the ws package in Node.js, native WebSocket in browsers
64
+ const WsConstructor = this.getWebSocketConstructor();
65
+ if (!WsConstructor) {
66
+ reject(new PmxtError("No WebSocket implementation available"));
67
+ return;
68
+ }
69
+ const ws = new WsConstructor(url);
70
+ this.closed = false;
71
+ ws.onopen = () => {
72
+ this.ws = ws;
73
+ resolve();
74
+ };
75
+ ws.onerror = (err) => {
76
+ if (!this.ws) {
77
+ // Connection failed during handshake
78
+ reject(new PmxtError(`WebSocket connection failed: ${err.message || err}`));
79
+ }
80
+ };
81
+ ws.onclose = () => {
82
+ this.closed = true;
83
+ this.ws = null;
84
+ };
85
+ ws.onmessage = (event) => {
86
+ try {
87
+ const data = typeof event.data === "string"
88
+ ? event.data
89
+ : event.data.toString();
90
+ const msg = JSON.parse(data);
91
+ this.dispatch(msg);
92
+ }
93
+ catch {
94
+ // Ignore unparseable frames
95
+ }
96
+ };
97
+ });
98
+ }
99
+ getWebSocketConstructor() {
100
+ // Browser / Deno / Bun
101
+ if (typeof globalThis !== "undefined" && globalThis.WebSocket) {
102
+ return globalThis.WebSocket;
103
+ }
104
+ // Node.js -- try to require ws
105
+ try {
106
+ // Dynamic require to avoid bundler issues
107
+ const wsModule = require("ws");
108
+ return wsModule.default || wsModule;
109
+ }
110
+ catch {
111
+ return null;
112
+ }
113
+ }
114
+ dispatch(msg) {
115
+ const eventType = msg.event;
116
+ const requestId = msg.id;
117
+ if (eventType === "error" && requestId) {
118
+ const sub = this.subscriptions.get(requestId);
119
+ if (sub?.reject) {
120
+ sub.reject(new PmxtError(msg.error?.message || "WebSocket subscription error"));
121
+ sub.reject = null;
122
+ sub.resolve = null;
123
+ }
124
+ return;
125
+ }
126
+ if (eventType === "subscribed") {
127
+ // Acknowledgement -- nothing to do
128
+ return;
129
+ }
130
+ if (eventType === "data" && requestId) {
131
+ const symbol = msg.symbol || "";
132
+ const data = msg.data || {};
133
+ // Store by (requestId:symbol) for batch methods
134
+ this.dataStore.set(`${requestId}:${symbol}`, data);
135
+ // Store by requestId alone for single-symbol methods
136
+ this.dataStore.set(requestId, data);
137
+ const sub = this.subscriptions.get(requestId);
138
+ if (sub?.resolve) {
139
+ sub.resolve(data);
140
+ sub.resolve = null;
141
+ sub.reject = null;
142
+ }
143
+ }
144
+ }
145
+ // ------------------------------------------------------------------
146
+ // Public API
147
+ // ------------------------------------------------------------------
148
+ async subscribe(exchange, method, args, credentials, timeoutMs = 30000) {
149
+ const firstArg = args[0] ?? "";
150
+ const subKey = Array.isArray(firstArg)
151
+ ? `${method}:${[...firstArg].sort().join(",")}`
152
+ : `${method}:${firstArg}`;
153
+ // Reuse existing subscription
154
+ const existingId = this.activeSubs.get(subKey);
155
+ if (existingId && this.subscriptions.has(existingId)) {
156
+ return this.waitForData(existingId, timeoutMs);
157
+ }
158
+ await this.ensureConnected();
159
+ const requestId = `req-${Math.random().toString(36).slice(2, 14)}`;
160
+ const symbols = Array.isArray(firstArg) ? firstArg : firstArg ? [firstArg] : [];
161
+ const sub = {
162
+ requestId,
163
+ method,
164
+ symbols,
165
+ resolve: null,
166
+ reject: null,
167
+ };
168
+ this.subscriptions.set(requestId, sub);
169
+ this.activeSubs.set(subKey, requestId);
170
+ const message = {
171
+ id: requestId,
172
+ action: "subscribe",
173
+ exchange,
174
+ method,
175
+ args,
176
+ };
177
+ if (credentials) {
178
+ message.credentials = credentials;
179
+ }
180
+ this.ws.send(JSON.stringify(message));
181
+ return this.waitForData(requestId, timeoutMs);
182
+ }
183
+ async subscribeBatch(exchange, method, args, credentials, timeoutMs = 30000) {
184
+ const symbols = Array.isArray(args[0]) ? args[0] : [];
185
+ await this.ensureConnected();
186
+ const requestId = `req-${Math.random().toString(36).slice(2, 14)}`;
187
+ const sub = {
188
+ requestId,
189
+ method,
190
+ symbols,
191
+ resolve: null,
192
+ reject: null,
193
+ };
194
+ this.subscriptions.set(requestId, sub);
195
+ const message = {
196
+ id: requestId,
197
+ action: "subscribe",
198
+ exchange,
199
+ method,
200
+ args,
201
+ };
202
+ if (credentials) {
203
+ message.credentials = credentials;
204
+ }
205
+ this.ws.send(JSON.stringify(message));
206
+ // Wait for first data event
207
+ await this.waitForData(requestId, timeoutMs);
208
+ // Collect per-symbol data
209
+ const result = {};
210
+ for (const symbol of symbols) {
211
+ const storeKey = `${requestId}:${symbol}`;
212
+ const data = this.dataStore.get(storeKey);
213
+ if (data !== undefined) {
214
+ result[symbol] = data;
215
+ }
216
+ }
217
+ // If no per-symbol data, return the single data event as-is
218
+ if (Object.keys(result).length === 0) {
219
+ const data = this.dataStore.get(requestId);
220
+ if (data && typeof data === "object") {
221
+ return data;
222
+ }
223
+ }
224
+ return result;
225
+ }
226
+ close() {
227
+ this.closed = true;
228
+ if (this.ws) {
229
+ try {
230
+ this.ws.close();
231
+ }
232
+ catch {
233
+ // ignore
234
+ }
235
+ this.ws = null;
236
+ }
237
+ }
238
+ get connected() {
239
+ return this.ws !== null && !this.closed;
240
+ }
241
+ // ------------------------------------------------------------------
242
+ // Internal
243
+ // ------------------------------------------------------------------
244
+ waitForData(requestId, timeoutMs) {
245
+ // Check if data is already available
246
+ const existing = this.dataStore.get(requestId);
247
+ if (existing !== undefined) {
248
+ this.dataStore.delete(requestId);
249
+ return Promise.resolve(existing);
250
+ }
251
+ return new Promise((resolve, reject) => {
252
+ const sub = this.subscriptions.get(requestId);
253
+ if (!sub) {
254
+ reject(new PmxtError("Subscription not found"));
255
+ return;
256
+ }
257
+ const timer = setTimeout(() => {
258
+ sub.resolve = null;
259
+ sub.reject = null;
260
+ reject(new PmxtError(`Timeout waiting for WebSocket data (method=${sub.method})`));
261
+ }, timeoutMs);
262
+ sub.resolve = (data) => {
263
+ clearTimeout(timer);
264
+ resolve(data);
265
+ };
266
+ sub.reject = (err) => {
267
+ clearTimeout(timer);
268
+ reject(err);
269
+ };
270
+ });
271
+ }
272
+ }
@@ -10,7 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import * as runtime from '../runtime';
13
- import type { BaseResponse, BuildOrder200Response, BuildOrderRequest, CancelOrderRequest, CloseRequest, CompareMarketPrices200Response, CompareMarketPricesRequest, CreateOrder200Response, CreateOrderRequest, EventFilterCriteria, FetchArbitrage200Response, FetchBalance200Response, FetchEvent200Response, FetchEventMatches200Response, FetchEvents200Response, FetchEventsPaginated200Response, FetchMarket200Response, FetchMarketMatches200Response, FetchMarkets200Response, FetchMarketsPaginated200Response, FetchMatchedMarkets200Response, FetchMyTrades200Response, FetchOHLCV200Response, FetchOpenOrders200Response, FetchOrderBook200Response, FetchPositions200Response, FetchTrades200Response, FilterEventsRequest, FilterMarketsRequest, GetExecutionPrice200Response, GetExecutionPriceDetailed200Response, GetExecutionPriceDetailedRequest, GetExecutionPriceRequest, HealthCheck200Response, LoadMarkets200Response, LoadMarketsRequest, MarketFilterCriteria, SubmitOrderRequest, UnifiedEvent, UnifiedMarket, UnwatchAddressRequest, UnwatchOrderBookRequest, WatchAddress200Response, WatchAddressRequest, WatchOrderBookRequest, WatchTradesRequest } from '../models/index';
13
+ import type { BaseResponse, BuildOrder200Response, BuildOrderRequest, CancelOrderRequest, CloseRequest, CompareMarketPrices200Response, CompareMarketPricesRequest, CreateOrder200Response, CreateOrderRequest, EventFilterCriteria, FetchArbitrage200Response, FetchBalance200Response, FetchEvent200Response, FetchEventMatches200Response, FetchEvents200Response, FetchEventsPaginated200Response, FetchMarket200Response, FetchMarketMatches200Response, FetchMarkets200Response, FetchMarketsPaginated200Response, FetchMatchedMarkets200Response, FetchMyTrades200Response, FetchOHLCV200Response, FetchOpenOrders200Response, FetchOrderBook200Response, FetchPositions200Response, FetchTrades200Response, FilterEventsRequest, FilterMarketsRequest, GetExecutionPrice200Response, GetExecutionPriceDetailed200Response, GetExecutionPriceDetailedRequest, GetExecutionPriceRequest, HealthCheck200Response, LoadMarkets200Response, LoadMarketsRequest, MarketFilterCriteria, SubmitOrderRequest, UnifiedEvent, UnifiedMarket, UnwatchAddressRequest, UnwatchOrderBookRequest, WatchAddress200Response, WatchAddressRequest, WatchOrderBookRequest, WatchOrderBooks200Response, WatchOrderBooksRequest, WatchTradesRequest } from '../models/index';
14
14
  export interface BuildOrderOperationRequest {
15
15
  exchange: BuildOrderOperationExchangeEnum;
16
16
  buildOrderRequest?: BuildOrderRequest;
@@ -279,6 +279,10 @@ export interface WatchOrderBookOperationRequest {
279
279
  exchange: WatchOrderBookOperationExchangeEnum;
280
280
  watchOrderBookRequest?: WatchOrderBookRequest;
281
281
  }
282
+ export interface WatchOrderBooksOperationRequest {
283
+ exchange: WatchOrderBooksOperationExchangeEnum;
284
+ watchOrderBooksRequest?: WatchOrderBooksRequest;
285
+ }
282
286
  export interface WatchTradesOperationRequest {
283
287
  exchange: WatchTradesOperationExchangeEnum;
284
288
  watchTradesRequest?: WatchTradesRequest;
@@ -669,6 +673,16 @@ export declare class DefaultApi extends runtime.BaseAPI {
669
673
  * Watch Order Book
670
674
  */
671
675
  watchOrderBook(requestParameters: WatchOrderBookOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchOrderBook200Response>;
676
+ /**
677
+ * Watch multiple order books simultaneously via WebSocket. Returns a promise that resolves with a record of order book snapshots keyed by ID. Exchanges with native batch support (e.g. Kalshi) send a single subscribe message for all tickers; others fall back to individual watchOrderBook calls.
678
+ * Watch Order Books
679
+ */
680
+ watchOrderBooksRaw(requestParameters: WatchOrderBooksOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WatchOrderBooks200Response>>;
681
+ /**
682
+ * Watch multiple order books simultaneously via WebSocket. Returns a promise that resolves with a record of order book snapshots keyed by ID. Exchanges with native batch support (e.g. Kalshi) send a single subscribe message for all tickers; others fall back to individual watchOrderBook calls.
683
+ * Watch Order Books
684
+ */
685
+ watchOrderBooks(requestParameters: WatchOrderBooksOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WatchOrderBooks200Response>;
672
686
  /**
673
687
  * Watch trade executions in real-time via WebSocket. Returns a promise that resolves with the next trade(s). Call repeatedly in a loop to stream updates (CCXT Pro pattern).
674
688
  * Watch Trades
@@ -1580,6 +1594,24 @@ export declare const WatchOrderBookOperationExchangeEnum: {
1580
1594
  readonly Router: "router";
1581
1595
  };
1582
1596
  export type WatchOrderBookOperationExchangeEnum = typeof WatchOrderBookOperationExchangeEnum[keyof typeof WatchOrderBookOperationExchangeEnum];
1597
+ /**
1598
+ * @export
1599
+ */
1600
+ export declare const WatchOrderBooksOperationExchangeEnum: {
1601
+ readonly Polymarket: "polymarket";
1602
+ readonly Kalshi: "kalshi";
1603
+ readonly KalshiDemo: "kalshi-demo";
1604
+ readonly Limitless: "limitless";
1605
+ readonly Probable: "probable";
1606
+ readonly Baozi: "baozi";
1607
+ readonly Myriad: "myriad";
1608
+ readonly Opinion: "opinion";
1609
+ readonly Metaculus: "metaculus";
1610
+ readonly Smarkets: "smarkets";
1611
+ readonly PolymarketUs: "polymarket_us";
1612
+ readonly Router: "router";
1613
+ };
1614
+ export type WatchOrderBooksOperationExchangeEnum = typeof WatchOrderBooksOperationExchangeEnum[keyof typeof WatchOrderBooksOperationExchangeEnum];
1583
1615
  /**
1584
1616
  * @export
1585
1617
  */
@@ -47,7 +47,7 @@ var __importStar = (this && this.__importStar) || (function () {
47
47
  })();
48
48
  Object.defineProperty(exports, "__esModule", { value: true });
49
49
  exports.FetchRelatedMarketsSortEnum = exports.FetchRelatedMarketsRelationEnum = exports.FetchRelatedMarketsExchangeEnum = exports.FetchPositionsExchangeEnum = exports.FetchOrderBookExchangeEnum = exports.FetchOrderExchangeEnum = exports.FetchOpenOrdersExchangeEnum = exports.FetchOHLCVExchangeEnum = exports.FetchMyTradesExchangeEnum = exports.FetchMatchedPricesRelationsEnum = exports.FetchMatchedPricesExchangeEnum = exports.FetchMatchedMarketsRelationsEnum = exports.FetchMatchedMarketsExchangeEnum = exports.FetchMarketsPaginatedExchangeEnum = exports.FetchMarketsSearchInEnum = exports.FetchMarketsStatusEnum = exports.FetchMarketsSortEnum = exports.FetchMarketsExchangeEnum = exports.FetchMarketMatchesSortEnum = exports.FetchMarketMatchesRelationEnum = exports.FetchMarketMatchesExchangeEnum = exports.FetchMarketSearchInEnum = exports.FetchMarketStatusEnum = exports.FetchMarketSortEnum = exports.FetchMarketExchangeEnum = exports.FetchHedgesSortEnum = exports.FetchHedgesRelationEnum = exports.FetchHedgesExchangeEnum = exports.FetchEventsPaginatedExchangeEnum = exports.FetchEventsSearchInEnum = exports.FetchEventsStatusEnum = exports.FetchEventsSortEnum = exports.FetchEventsExchangeEnum = exports.FetchEventMatchesRelationEnum = exports.FetchEventMatchesExchangeEnum = exports.FetchEventSearchInEnum = exports.FetchEventStatusEnum = exports.FetchEventSortEnum = exports.FetchEventExchangeEnum = exports.FetchClosedOrdersExchangeEnum = exports.FetchBalanceExchangeEnum = exports.FetchArbitrageRelationsEnum = exports.FetchArbitrageExchangeEnum = exports.FetchAllOrdersExchangeEnum = exports.CreateOrderOperationExchangeEnum = exports.CompareMarketPricesOperationExchangeEnum = exports.CloseOperationExchangeEnum = exports.CancelOrderOperationExchangeEnum = exports.BuildOrderOperationExchangeEnum = exports.DefaultApi = void 0;
50
- exports.WatchTradesOperationExchangeEnum = exports.WatchOrderBookOperationExchangeEnum = exports.WatchAddressOperationExchangeEnum = exports.UnwatchOrderBookOperationExchangeEnum = exports.UnwatchAddressOperationExchangeEnum = exports.SubmitOrderOperationExchangeEnum = exports.LoadMarketsOperationExchangeEnum = exports.GetExecutionPriceDetailedOperationExchangeEnum = exports.GetExecutionPriceOperationExchangeEnum = exports.FilterMarketsOperationExchangeEnum = exports.FilterEventsOperationExchangeEnum = exports.FetchTradesExchangeEnum = void 0;
50
+ exports.WatchTradesOperationExchangeEnum = exports.WatchOrderBooksOperationExchangeEnum = exports.WatchOrderBookOperationExchangeEnum = exports.WatchAddressOperationExchangeEnum = exports.UnwatchOrderBookOperationExchangeEnum = exports.UnwatchAddressOperationExchangeEnum = exports.SubmitOrderOperationExchangeEnum = exports.LoadMarketsOperationExchangeEnum = exports.GetExecutionPriceDetailedOperationExchangeEnum = exports.GetExecutionPriceOperationExchangeEnum = exports.FilterMarketsOperationExchangeEnum = exports.FilterEventsOperationExchangeEnum = exports.FetchTradesExchangeEnum = void 0;
51
51
  const runtime = __importStar(require("../runtime"));
52
52
  const index_1 = require("../models/index");
53
53
  /**
@@ -1593,6 +1593,36 @@ class DefaultApi extends runtime.BaseAPI {
1593
1593
  const response = await this.watchOrderBookRaw(requestParameters, initOverrides);
1594
1594
  return await response.value();
1595
1595
  }
1596
+ /**
1597
+ * Watch multiple order books simultaneously via WebSocket. Returns a promise that resolves with a record of order book snapshots keyed by ID. Exchanges with native batch support (e.g. Kalshi) send a single subscribe message for all tickers; others fall back to individual watchOrderBook calls.
1598
+ * Watch Order Books
1599
+ */
1600
+ async watchOrderBooksRaw(requestParameters, initOverrides) {
1601
+ if (requestParameters['exchange'] == null) {
1602
+ throw new runtime.RequiredError('exchange', 'Required parameter "exchange" was null or undefined when calling watchOrderBooks().');
1603
+ }
1604
+ const queryParameters = {};
1605
+ const headerParameters = {};
1606
+ headerParameters['Content-Type'] = 'application/json';
1607
+ let urlPath = `/api/{exchange}/watchOrderBooks`;
1608
+ urlPath = urlPath.replace(`{${"exchange"}}`, encodeURIComponent(String(requestParameters['exchange'])));
1609
+ const response = await this.request({
1610
+ path: urlPath,
1611
+ method: 'POST',
1612
+ headers: headerParameters,
1613
+ query: queryParameters,
1614
+ body: (0, index_1.WatchOrderBooksRequestToJSON)(requestParameters['watchOrderBooksRequest']),
1615
+ }, initOverrides);
1616
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.WatchOrderBooks200ResponseFromJSON)(jsonValue));
1617
+ }
1618
+ /**
1619
+ * Watch multiple order books simultaneously via WebSocket. Returns a promise that resolves with a record of order book snapshots keyed by ID. Exchanges with native batch support (e.g. Kalshi) send a single subscribe message for all tickers; others fall back to individual watchOrderBook calls.
1620
+ * Watch Order Books
1621
+ */
1622
+ async watchOrderBooks(requestParameters, initOverrides) {
1623
+ const response = await this.watchOrderBooksRaw(requestParameters, initOverrides);
1624
+ return await response.value();
1625
+ }
1596
1626
  /**
1597
1627
  * Watch trade executions in real-time via WebSocket. Returns a promise that resolves with the next trade(s). Call repeatedly in a loop to stream updates (CCXT Pro pattern).
1598
1628
  * Watch Trades
@@ -2465,6 +2495,23 @@ exports.WatchOrderBookOperationExchangeEnum = {
2465
2495
  PolymarketUs: 'polymarket_us',
2466
2496
  Router: 'router'
2467
2497
  };
2498
+ /**
2499
+ * @export
2500
+ */
2501
+ exports.WatchOrderBooksOperationExchangeEnum = {
2502
+ Polymarket: 'polymarket',
2503
+ Kalshi: 'kalshi',
2504
+ KalshiDemo: 'kalshi-demo',
2505
+ Limitless: 'limitless',
2506
+ Probable: 'probable',
2507
+ Baozi: 'baozi',
2508
+ Myriad: 'myriad',
2509
+ Opinion: 'opinion',
2510
+ Metaculus: 'metaculus',
2511
+ Smarkets: 'smarkets',
2512
+ PolymarketUs: 'polymarket_us',
2513
+ Router: 'router'
2514
+ };
2468
2515
  /**
2469
2516
  * @export
2470
2517
  */
@@ -0,0 +1,48 @@
1
+ /**
2
+ * PMXT Sidecar API
3
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
4
+ *
5
+ * The version of the OpenAPI document: 0.4.4
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { ErrorDetail } from './ErrorDetail';
13
+ import type { OrderBook } from './OrderBook';
14
+ /**
15
+ *
16
+ * @export
17
+ * @interface WatchOrderBooks200Response
18
+ */
19
+ export interface WatchOrderBooks200Response {
20
+ /**
21
+ *
22
+ * @type {boolean}
23
+ * @memberof WatchOrderBooks200Response
24
+ */
25
+ success?: boolean;
26
+ /**
27
+ *
28
+ * @type {ErrorDetail}
29
+ * @memberof WatchOrderBooks200Response
30
+ */
31
+ error?: ErrorDetail;
32
+ /**
33
+ *
34
+ * @type {{ [key: string]: OrderBook; }}
35
+ * @memberof WatchOrderBooks200Response
36
+ */
37
+ data?: {
38
+ [key: string]: OrderBook;
39
+ };
40
+ }
41
+ /**
42
+ * Check if a given object implements the WatchOrderBooks200Response interface.
43
+ */
44
+ export declare function instanceOfWatchOrderBooks200Response(value: object): value is WatchOrderBooks200Response;
45
+ export declare function WatchOrderBooks200ResponseFromJSON(json: any): WatchOrderBooks200Response;
46
+ export declare function WatchOrderBooks200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): WatchOrderBooks200Response;
47
+ export declare function WatchOrderBooks200ResponseToJSON(json: any): WatchOrderBooks200Response;
48
+ export declare function WatchOrderBooks200ResponseToJSONTyped(value?: WatchOrderBooks200Response | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * PMXT Sidecar API
6
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
7
+ *
8
+ * The version of the OpenAPI document: 0.4.4
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.instanceOfWatchOrderBooks200Response = instanceOfWatchOrderBooks200Response;
17
+ exports.WatchOrderBooks200ResponseFromJSON = WatchOrderBooks200ResponseFromJSON;
18
+ exports.WatchOrderBooks200ResponseFromJSONTyped = WatchOrderBooks200ResponseFromJSONTyped;
19
+ exports.WatchOrderBooks200ResponseToJSON = WatchOrderBooks200ResponseToJSON;
20
+ exports.WatchOrderBooks200ResponseToJSONTyped = WatchOrderBooks200ResponseToJSONTyped;
21
+ const runtime_1 = require("../runtime");
22
+ const ErrorDetail_1 = require("./ErrorDetail");
23
+ const OrderBook_1 = require("./OrderBook");
24
+ /**
25
+ * Check if a given object implements the WatchOrderBooks200Response interface.
26
+ */
27
+ function instanceOfWatchOrderBooks200Response(value) {
28
+ return true;
29
+ }
30
+ function WatchOrderBooks200ResponseFromJSON(json) {
31
+ return WatchOrderBooks200ResponseFromJSONTyped(json, false);
32
+ }
33
+ function WatchOrderBooks200ResponseFromJSONTyped(json, ignoreDiscriminator) {
34
+ if (json == null) {
35
+ return json;
36
+ }
37
+ return {
38
+ 'success': json['success'] == null ? undefined : json['success'],
39
+ 'error': json['error'] == null ? undefined : (0, ErrorDetail_1.ErrorDetailFromJSON)(json['error']),
40
+ 'data': json['data'] == null ? undefined : ((0, runtime_1.mapValues)(json['data'], OrderBook_1.OrderBookFromJSON)),
41
+ };
42
+ }
43
+ function WatchOrderBooks200ResponseToJSON(json) {
44
+ return WatchOrderBooks200ResponseToJSONTyped(json, false);
45
+ }
46
+ function WatchOrderBooks200ResponseToJSONTyped(value, ignoreDiscriminator = false) {
47
+ if (value == null) {
48
+ return value;
49
+ }
50
+ return {
51
+ 'success': value['success'],
52
+ 'error': (0, ErrorDetail_1.ErrorDetailToJSON)(value['error']),
53
+ 'data': value['data'] == null ? undefined : ((0, runtime_1.mapValues)(value['data'], OrderBook_1.OrderBookToJSON)),
54
+ };
55
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * PMXT Sidecar API
3
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
4
+ *
5
+ * The version of the OpenAPI document: 0.4.4
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { ExchangeCredentials } from './ExchangeCredentials';
13
+ import type { WatchOrderBooksRequestArgsInner } from './WatchOrderBooksRequestArgsInner';
14
+ /**
15
+ *
16
+ * @export
17
+ * @interface WatchOrderBooksRequest
18
+ */
19
+ export interface WatchOrderBooksRequest {
20
+ /**
21
+ *
22
+ * @type {Array<WatchOrderBooksRequestArgsInner>}
23
+ * @memberof WatchOrderBooksRequest
24
+ */
25
+ args: Array<WatchOrderBooksRequestArgsInner>;
26
+ /**
27
+ *
28
+ * @type {ExchangeCredentials}
29
+ * @memberof WatchOrderBooksRequest
30
+ */
31
+ credentials?: ExchangeCredentials;
32
+ }
33
+ /**
34
+ * Check if a given object implements the WatchOrderBooksRequest interface.
35
+ */
36
+ export declare function instanceOfWatchOrderBooksRequest(value: object): value is WatchOrderBooksRequest;
37
+ export declare function WatchOrderBooksRequestFromJSON(json: any): WatchOrderBooksRequest;
38
+ export declare function WatchOrderBooksRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): WatchOrderBooksRequest;
39
+ export declare function WatchOrderBooksRequestToJSON(json: any): WatchOrderBooksRequest;
40
+ export declare function WatchOrderBooksRequestToJSONTyped(value?: WatchOrderBooksRequest | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * PMXT Sidecar API
6
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
7
+ *
8
+ * The version of the OpenAPI document: 0.4.4
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.instanceOfWatchOrderBooksRequest = instanceOfWatchOrderBooksRequest;
17
+ exports.WatchOrderBooksRequestFromJSON = WatchOrderBooksRequestFromJSON;
18
+ exports.WatchOrderBooksRequestFromJSONTyped = WatchOrderBooksRequestFromJSONTyped;
19
+ exports.WatchOrderBooksRequestToJSON = WatchOrderBooksRequestToJSON;
20
+ exports.WatchOrderBooksRequestToJSONTyped = WatchOrderBooksRequestToJSONTyped;
21
+ const ExchangeCredentials_1 = require("./ExchangeCredentials");
22
+ const WatchOrderBooksRequestArgsInner_1 = require("./WatchOrderBooksRequestArgsInner");
23
+ /**
24
+ * Check if a given object implements the WatchOrderBooksRequest interface.
25
+ */
26
+ function instanceOfWatchOrderBooksRequest(value) {
27
+ if (!('args' in value) || value['args'] === undefined)
28
+ return false;
29
+ return true;
30
+ }
31
+ function WatchOrderBooksRequestFromJSON(json) {
32
+ return WatchOrderBooksRequestFromJSONTyped(json, false);
33
+ }
34
+ function WatchOrderBooksRequestFromJSONTyped(json, ignoreDiscriminator) {
35
+ if (json == null) {
36
+ return json;
37
+ }
38
+ return {
39
+ 'args': (json['args'].map(WatchOrderBooksRequestArgsInner_1.WatchOrderBooksRequestArgsInnerFromJSON)),
40
+ 'credentials': json['credentials'] == null ? undefined : (0, ExchangeCredentials_1.ExchangeCredentialsFromJSON)(json['credentials']),
41
+ };
42
+ }
43
+ function WatchOrderBooksRequestToJSON(json) {
44
+ return WatchOrderBooksRequestToJSONTyped(json, false);
45
+ }
46
+ function WatchOrderBooksRequestToJSONTyped(value, ignoreDiscriminator = false) {
47
+ if (value == null) {
48
+ return value;
49
+ }
50
+ return {
51
+ 'args': (value['args'].map(WatchOrderBooksRequestArgsInner_1.WatchOrderBooksRequestArgsInnerToJSON)),
52
+ 'credentials': (0, ExchangeCredentials_1.ExchangeCredentialsToJSON)(value['credentials']),
53
+ };
54
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * PMXT Sidecar API
3
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
4
+ *
5
+ * The version of the OpenAPI document: 0.4.4
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ /**
13
+ * @type WatchOrderBooksRequestArgsInner
14
+ *
15
+ * @export
16
+ */
17
+ export type WatchOrderBooksRequestArgsInner = Array<string> | number;
18
+ export declare function WatchOrderBooksRequestArgsInnerFromJSON(json: any): WatchOrderBooksRequestArgsInner;
19
+ export declare function WatchOrderBooksRequestArgsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): WatchOrderBooksRequestArgsInner;
20
+ export declare function WatchOrderBooksRequestArgsInnerToJSON(json: any): any;
21
+ export declare function WatchOrderBooksRequestArgsInnerToJSONTyped(value?: WatchOrderBooksRequestArgsInner | null, ignoreDiscriminator?: boolean): any;