pmxtjs 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/esm/generated/src/apis/DefaultApi.d.ts +45 -1
  2. package/dist/esm/generated/src/apis/DefaultApi.js +75 -1
  3. package/dist/esm/generated/src/models/WatchOrderBookRequest.d.ts +40 -0
  4. package/dist/esm/generated/src/models/WatchOrderBookRequest.js +47 -0
  5. package/dist/esm/generated/src/models/WatchOrderBookRequestArgsInner.d.ts +21 -0
  6. package/dist/esm/generated/src/models/WatchOrderBookRequestArgsInner.js +43 -0
  7. package/dist/esm/generated/src/models/WatchTradesRequest.d.ts +40 -0
  8. package/dist/esm/generated/src/models/WatchTradesRequest.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 +44 -0
  12. package/dist/esm/pmxt/client.js +90 -0
  13. package/dist/generated/src/apis/DefaultApi.d.ts +45 -1
  14. package/dist/generated/src/apis/DefaultApi.js +75 -1
  15. package/dist/generated/src/models/WatchOrderBookRequest.d.ts +40 -0
  16. package/dist/generated/src/models/WatchOrderBookRequest.js +54 -0
  17. package/dist/generated/src/models/WatchOrderBookRequestArgsInner.d.ts +21 -0
  18. package/dist/generated/src/models/WatchOrderBookRequestArgsInner.js +49 -0
  19. package/dist/generated/src/models/WatchTradesRequest.d.ts +40 -0
  20. package/dist/generated/src/models/WatchTradesRequest.js +54 -0
  21. package/dist/generated/src/models/index.d.ts +3 -0
  22. package/dist/generated/src/models/index.js +3 -0
  23. package/dist/pmxt/client.d.ts +44 -0
  24. package/dist/pmxt/client.js +90 -0
  25. package/generated/.openapi-generator/FILES +6 -0
  26. package/generated/docs/DefaultApi.md +142 -0
  27. package/generated/docs/WatchOrderBookRequest.md +36 -0
  28. package/generated/docs/WatchOrderBookRequestArgsInner.md +32 -0
  29. package/generated/docs/WatchTradesRequest.md +36 -0
  30. package/generated/package.json +1 -1
  31. package/generated/src/apis/DefaultApi.ts +116 -0
  32. package/generated/src/models/WatchOrderBookRequest.ts +89 -0
  33. package/generated/src/models/WatchOrderBookRequestArgsInner.ts +55 -0
  34. package/generated/src/models/WatchTradesRequest.ts +89 -0
  35. package/generated/src/models/index.ts +3 -0
  36. package/package.json +2 -2
  37. package/pmxt/client.ts +101 -0
@@ -46,7 +46,7 @@ var __importStar = (this && this.__importStar) || (function () {
46
46
  };
47
47
  })();
48
48
  Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.SearchMarketsOperationExchangeEnum = exports.GetMarketsBySlugOperationExchangeEnum = exports.FetchTradesOperationExchangeEnum = exports.FetchPositionsOperationExchangeEnum = exports.FetchOrderBookOperationExchangeEnum = exports.FetchOrderExchangeEnum = exports.FetchOpenOrdersOperationExchangeEnum = exports.FetchOHLCVOperationExchangeEnum = exports.FetchMarketsOperationExchangeEnum = exports.FetchBalanceExchangeEnum = exports.CreateOrderOperationExchangeEnum = exports.CancelOrderOperationExchangeEnum = exports.DefaultApi = void 0;
49
+ exports.WatchTradesOperationExchangeEnum = exports.WatchOrderBookOperationExchangeEnum = exports.SearchMarketsOperationExchangeEnum = exports.GetMarketsBySlugOperationExchangeEnum = exports.FetchTradesOperationExchangeEnum = exports.FetchPositionsOperationExchangeEnum = exports.FetchOrderBookOperationExchangeEnum = exports.FetchOrderExchangeEnum = exports.FetchOpenOrdersOperationExchangeEnum = exports.FetchOHLCVOperationExchangeEnum = exports.FetchMarketsOperationExchangeEnum = exports.FetchBalanceExchangeEnum = exports.CreateOrderOperationExchangeEnum = exports.CancelOrderOperationExchangeEnum = exports.DefaultApi = void 0;
50
50
  const runtime = __importStar(require("../runtime"));
51
51
  const index_1 = require("../models/index");
52
52
  /**
@@ -413,6 +413,66 @@ class DefaultApi extends runtime.BaseAPI {
413
413
  const response = await this.searchMarketsRaw(requestParameters, initOverrides);
414
414
  return await response.value();
415
415
  }
416
+ /**
417
+ * Subscribe to real-time order book updates via WebSocket. Returns a promise that resolves with the next order book update. Call repeatedly in a loop to stream updates (CCXT Pro pattern).
418
+ * Watch Order Book (WebSocket Stream)
419
+ */
420
+ async watchOrderBookRaw(requestParameters, initOverrides) {
421
+ if (requestParameters['exchange'] == null) {
422
+ throw new runtime.RequiredError('exchange', 'Required parameter "exchange" was null or undefined when calling watchOrderBook().');
423
+ }
424
+ const queryParameters = {};
425
+ const headerParameters = {};
426
+ headerParameters['Content-Type'] = 'application/json';
427
+ let urlPath = `/api/{exchange}/watchOrderBook`;
428
+ urlPath = urlPath.replace(`{${"exchange"}}`, encodeURIComponent(String(requestParameters['exchange'])));
429
+ const response = await this.request({
430
+ path: urlPath,
431
+ method: 'POST',
432
+ headers: headerParameters,
433
+ query: queryParameters,
434
+ body: (0, index_1.WatchOrderBookRequestToJSON)(requestParameters['watchOrderBookRequest']),
435
+ }, initOverrides);
436
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.FetchOrderBook200ResponseFromJSON)(jsonValue));
437
+ }
438
+ /**
439
+ * Subscribe to real-time order book updates via WebSocket. Returns a promise that resolves with the next order book update. Call repeatedly in a loop to stream updates (CCXT Pro pattern).
440
+ * Watch Order Book (WebSocket Stream)
441
+ */
442
+ async watchOrderBook(requestParameters, initOverrides) {
443
+ const response = await this.watchOrderBookRaw(requestParameters, initOverrides);
444
+ return await response.value();
445
+ }
446
+ /**
447
+ * Subscribe to real-time trade updates via WebSocket. Returns a promise that resolves with the next trade(s). Call repeatedly in a loop to stream updates (CCXT Pro pattern).
448
+ * Watch Trades (WebSocket Stream)
449
+ */
450
+ async watchTradesRaw(requestParameters, initOverrides) {
451
+ if (requestParameters['exchange'] == null) {
452
+ throw new runtime.RequiredError('exchange', 'Required parameter "exchange" was null or undefined when calling watchTrades().');
453
+ }
454
+ const queryParameters = {};
455
+ const headerParameters = {};
456
+ headerParameters['Content-Type'] = 'application/json';
457
+ let urlPath = `/api/{exchange}/watchTrades`;
458
+ urlPath = urlPath.replace(`{${"exchange"}}`, encodeURIComponent(String(requestParameters['exchange'])));
459
+ const response = await this.request({
460
+ path: urlPath,
461
+ method: 'POST',
462
+ headers: headerParameters,
463
+ query: queryParameters,
464
+ body: (0, index_1.WatchTradesRequestToJSON)(requestParameters['watchTradesRequest']),
465
+ }, initOverrides);
466
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.FetchTrades200ResponseFromJSON)(jsonValue));
467
+ }
468
+ /**
469
+ * Subscribe to real-time trade updates via WebSocket. Returns a promise that resolves with the next trade(s). Call repeatedly in a loop to stream updates (CCXT Pro pattern).
470
+ * Watch Trades (WebSocket Stream)
471
+ */
472
+ async watchTrades(requestParameters, initOverrides) {
473
+ const response = await this.watchTradesRaw(requestParameters, initOverrides);
474
+ return await response.value();
475
+ }
416
476
  }
417
477
  exports.DefaultApi = DefaultApi;
418
478
  /**
@@ -499,3 +559,17 @@ exports.SearchMarketsOperationExchangeEnum = {
499
559
  Polymarket: 'polymarket',
500
560
  Kalshi: 'kalshi'
501
561
  };
562
+ /**
563
+ * @export
564
+ */
565
+ exports.WatchOrderBookOperationExchangeEnum = {
566
+ Polymarket: 'polymarket',
567
+ Kalshi: 'kalshi'
568
+ };
569
+ /**
570
+ * @export
571
+ */
572
+ exports.WatchTradesOperationExchangeEnum = {
573
+ Polymarket: 'polymarket',
574
+ Kalshi: 'kalshi'
575
+ };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * PMXT Sidecar API
3
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi). 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 { WatchOrderBookRequestArgsInner } from './WatchOrderBookRequestArgsInner';
14
+ /**
15
+ *
16
+ * @export
17
+ * @interface WatchOrderBookRequest
18
+ */
19
+ export interface WatchOrderBookRequest {
20
+ /**
21
+ * [outcomeId, limit?]
22
+ * @type {Array<WatchOrderBookRequestArgsInner>}
23
+ * @memberof WatchOrderBookRequest
24
+ */
25
+ args: Array<WatchOrderBookRequestArgsInner>;
26
+ /**
27
+ *
28
+ * @type {ExchangeCredentials}
29
+ * @memberof WatchOrderBookRequest
30
+ */
31
+ credentials?: ExchangeCredentials;
32
+ }
33
+ /**
34
+ * Check if a given object implements the WatchOrderBookRequest interface.
35
+ */
36
+ export declare function instanceOfWatchOrderBookRequest(value: object): value is WatchOrderBookRequest;
37
+ export declare function WatchOrderBookRequestFromJSON(json: any): WatchOrderBookRequest;
38
+ export declare function WatchOrderBookRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): WatchOrderBookRequest;
39
+ export declare function WatchOrderBookRequestToJSON(json: any): WatchOrderBookRequest;
40
+ export declare function WatchOrderBookRequestToJSONTyped(value?: WatchOrderBookRequest | 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). 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.instanceOfWatchOrderBookRequest = instanceOfWatchOrderBookRequest;
17
+ exports.WatchOrderBookRequestFromJSON = WatchOrderBookRequestFromJSON;
18
+ exports.WatchOrderBookRequestFromJSONTyped = WatchOrderBookRequestFromJSONTyped;
19
+ exports.WatchOrderBookRequestToJSON = WatchOrderBookRequestToJSON;
20
+ exports.WatchOrderBookRequestToJSONTyped = WatchOrderBookRequestToJSONTyped;
21
+ const ExchangeCredentials_1 = require("./ExchangeCredentials");
22
+ const WatchOrderBookRequestArgsInner_1 = require("./WatchOrderBookRequestArgsInner");
23
+ /**
24
+ * Check if a given object implements the WatchOrderBookRequest interface.
25
+ */
26
+ function instanceOfWatchOrderBookRequest(value) {
27
+ if (!('args' in value) || value['args'] === undefined)
28
+ return false;
29
+ return true;
30
+ }
31
+ function WatchOrderBookRequestFromJSON(json) {
32
+ return WatchOrderBookRequestFromJSONTyped(json, false);
33
+ }
34
+ function WatchOrderBookRequestFromJSONTyped(json, ignoreDiscriminator) {
35
+ if (json == null) {
36
+ return json;
37
+ }
38
+ return {
39
+ 'args': (json['args'].map(WatchOrderBookRequestArgsInner_1.WatchOrderBookRequestArgsInnerFromJSON)),
40
+ 'credentials': json['credentials'] == null ? undefined : (0, ExchangeCredentials_1.ExchangeCredentialsFromJSON)(json['credentials']),
41
+ };
42
+ }
43
+ function WatchOrderBookRequestToJSON(json) {
44
+ return WatchOrderBookRequestToJSONTyped(json, false);
45
+ }
46
+ function WatchOrderBookRequestToJSONTyped(value, ignoreDiscriminator = false) {
47
+ if (value == null) {
48
+ return value;
49
+ }
50
+ return {
51
+ 'args': (value['args'].map(WatchOrderBookRequestArgsInner_1.WatchOrderBookRequestArgsInnerToJSON)),
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). 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 WatchOrderBookRequestArgsInner
14
+ *
15
+ * @export
16
+ */
17
+ export type WatchOrderBookRequestArgsInner = number | string;
18
+ export declare function WatchOrderBookRequestArgsInnerFromJSON(json: any): WatchOrderBookRequestArgsInner;
19
+ export declare function WatchOrderBookRequestArgsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): WatchOrderBookRequestArgsInner;
20
+ export declare function WatchOrderBookRequestArgsInnerToJSON(json: any): any;
21
+ export declare function WatchOrderBookRequestArgsInnerToJSONTyped(value?: WatchOrderBookRequestArgsInner | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,49 @@
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). 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.WatchOrderBookRequestArgsInnerFromJSON = WatchOrderBookRequestArgsInnerFromJSON;
17
+ exports.WatchOrderBookRequestArgsInnerFromJSONTyped = WatchOrderBookRequestArgsInnerFromJSONTyped;
18
+ exports.WatchOrderBookRequestArgsInnerToJSON = WatchOrderBookRequestArgsInnerToJSON;
19
+ exports.WatchOrderBookRequestArgsInnerToJSONTyped = WatchOrderBookRequestArgsInnerToJSONTyped;
20
+ function WatchOrderBookRequestArgsInnerFromJSON(json) {
21
+ return WatchOrderBookRequestArgsInnerFromJSONTyped(json, false);
22
+ }
23
+ function WatchOrderBookRequestArgsInnerFromJSONTyped(json, ignoreDiscriminator) {
24
+ if (json == null) {
25
+ return json;
26
+ }
27
+ if (typeof json === 'number') {
28
+ return json;
29
+ }
30
+ if (typeof json === 'string') {
31
+ return json;
32
+ }
33
+ return {};
34
+ }
35
+ function WatchOrderBookRequestArgsInnerToJSON(json) {
36
+ return WatchOrderBookRequestArgsInnerToJSONTyped(json, false);
37
+ }
38
+ function WatchOrderBookRequestArgsInnerToJSONTyped(value, ignoreDiscriminator = false) {
39
+ if (value == null) {
40
+ return value;
41
+ }
42
+ if (typeof value === 'number') {
43
+ return value;
44
+ }
45
+ if (typeof value === 'string') {
46
+ return value;
47
+ }
48
+ return {};
49
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * PMXT Sidecar API
3
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi). 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 { WatchOrderBookRequestArgsInner } from './WatchOrderBookRequestArgsInner';
14
+ /**
15
+ *
16
+ * @export
17
+ * @interface WatchTradesRequest
18
+ */
19
+ export interface WatchTradesRequest {
20
+ /**
21
+ * [outcomeId, since?, limit?]
22
+ * @type {Array<WatchOrderBookRequestArgsInner>}
23
+ * @memberof WatchTradesRequest
24
+ */
25
+ args: Array<WatchOrderBookRequestArgsInner>;
26
+ /**
27
+ *
28
+ * @type {ExchangeCredentials}
29
+ * @memberof WatchTradesRequest
30
+ */
31
+ credentials?: ExchangeCredentials;
32
+ }
33
+ /**
34
+ * Check if a given object implements the WatchTradesRequest interface.
35
+ */
36
+ export declare function instanceOfWatchTradesRequest(value: object): value is WatchTradesRequest;
37
+ export declare function WatchTradesRequestFromJSON(json: any): WatchTradesRequest;
38
+ export declare function WatchTradesRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): WatchTradesRequest;
39
+ export declare function WatchTradesRequestToJSON(json: any): WatchTradesRequest;
40
+ export declare function WatchTradesRequestToJSONTyped(value?: WatchTradesRequest | 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). 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.instanceOfWatchTradesRequest = instanceOfWatchTradesRequest;
17
+ exports.WatchTradesRequestFromJSON = WatchTradesRequestFromJSON;
18
+ exports.WatchTradesRequestFromJSONTyped = WatchTradesRequestFromJSONTyped;
19
+ exports.WatchTradesRequestToJSON = WatchTradesRequestToJSON;
20
+ exports.WatchTradesRequestToJSONTyped = WatchTradesRequestToJSONTyped;
21
+ const ExchangeCredentials_1 = require("./ExchangeCredentials");
22
+ const WatchOrderBookRequestArgsInner_1 = require("./WatchOrderBookRequestArgsInner");
23
+ /**
24
+ * Check if a given object implements the WatchTradesRequest interface.
25
+ */
26
+ function instanceOfWatchTradesRequest(value) {
27
+ if (!('args' in value) || value['args'] === undefined)
28
+ return false;
29
+ return true;
30
+ }
31
+ function WatchTradesRequestFromJSON(json) {
32
+ return WatchTradesRequestFromJSONTyped(json, false);
33
+ }
34
+ function WatchTradesRequestFromJSONTyped(json, ignoreDiscriminator) {
35
+ if (json == null) {
36
+ return json;
37
+ }
38
+ return {
39
+ 'args': (json['args'].map(WatchOrderBookRequestArgsInner_1.WatchOrderBookRequestArgsInnerFromJSON)),
40
+ 'credentials': json['credentials'] == null ? undefined : (0, ExchangeCredentials_1.ExchangeCredentialsFromJSON)(json['credentials']),
41
+ };
42
+ }
43
+ function WatchTradesRequestToJSON(json) {
44
+ return WatchTradesRequestToJSONTyped(json, false);
45
+ }
46
+ function WatchTradesRequestToJSONTyped(value, ignoreDiscriminator = false) {
47
+ if (value == null) {
48
+ return value;
49
+ }
50
+ return {
51
+ 'args': (value['args'].map(WatchOrderBookRequestArgsInner_1.WatchOrderBookRequestArgsInnerToJSON)),
52
+ 'credentials': (0, ExchangeCredentials_1.ExchangeCredentialsToJSON)(value['credentials']),
53
+ };
54
+ }
@@ -36,3 +36,6 @@ export * from './SearchMarketsRequest';
36
36
  export * from './SearchMarketsRequestArgsInner';
37
37
  export * from './Trade';
38
38
  export * from './UnifiedMarket';
39
+ export * from './WatchOrderBookRequest';
40
+ export * from './WatchOrderBookRequestArgsInner';
41
+ export * from './WatchTradesRequest';
@@ -54,3 +54,6 @@ __exportStar(require("./SearchMarketsRequest"), exports);
54
54
  __exportStar(require("./SearchMarketsRequestArgsInner"), exports);
55
55
  __exportStar(require("./Trade"), exports);
56
56
  __exportStar(require("./UnifiedMarket"), exports);
57
+ __exportStar(require("./WatchOrderBookRequest"), exports);
58
+ __exportStar(require("./WatchOrderBookRequestArgsInner"), exports);
59
+ __exportStar(require("./WatchTradesRequest"), exports);
@@ -124,6 +124,50 @@ export declare abstract class Exchange {
124
124
  * @returns List of trades
125
125
  */
126
126
  fetchTrades(outcomeId: string, params: HistoryFilterParams): Promise<Trade[]>;
127
+ /**
128
+ * Watch real-time order book updates via WebSocket.
129
+ *
130
+ * Returns a promise that resolves with the next order book update.
131
+ * Call repeatedly in a loop to stream updates (CCXT Pro pattern).
132
+ *
133
+ * @param outcomeId - Outcome ID to watch
134
+ * @param limit - Optional depth limit for order book
135
+ * @returns Next order book update
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * // Stream order book updates
140
+ * while (true) {
141
+ * const orderBook = await exchange.watchOrderBook(outcomeId);
142
+ * console.log(`Best bid: ${orderBook.bids[0].price}`);
143
+ * console.log(`Best ask: ${orderBook.asks[0].price}`);
144
+ * }
145
+ * ```
146
+ */
147
+ watchOrderBook(outcomeId: string, limit?: number): Promise<OrderBook>;
148
+ /**
149
+ * Watch real-time trade updates via WebSocket.
150
+ *
151
+ * Returns a promise that resolves with the next trade(s).
152
+ * Call repeatedly in a loop to stream updates (CCXT Pro pattern).
153
+ *
154
+ * @param outcomeId - Outcome ID to watch
155
+ * @param since - Optional timestamp to filter trades from
156
+ * @param limit - Optional limit for number of trades
157
+ * @returns Next trade update(s)
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * // Stream trade updates
162
+ * while (true) {
163
+ * const trades = await exchange.watchTrades(outcomeId);
164
+ * for (const trade of trades) {
165
+ * console.log(`Trade: ${trade.price} @ ${trade.amount}`);
166
+ * }
167
+ * }
168
+ * ```
169
+ */
170
+ watchTrades(outcomeId: string, since?: number, limit?: number): Promise<Trade[]>;
127
171
  /**
128
172
  * Create a new order.
129
173
  *
@@ -386,6 +386,96 @@ class Exchange {
386
386
  throw new Error(`Failed to fetch trades: ${error}`);
387
387
  }
388
388
  }
389
+ // WebSocket Streaming Methods
390
+ /**
391
+ * Watch real-time order book updates via WebSocket.
392
+ *
393
+ * Returns a promise that resolves with the next order book update.
394
+ * Call repeatedly in a loop to stream updates (CCXT Pro pattern).
395
+ *
396
+ * @param outcomeId - Outcome ID to watch
397
+ * @param limit - Optional depth limit for order book
398
+ * @returns Next order book update
399
+ *
400
+ * @example
401
+ * ```typescript
402
+ * // Stream order book updates
403
+ * while (true) {
404
+ * const orderBook = await exchange.watchOrderBook(outcomeId);
405
+ * console.log(`Best bid: ${orderBook.bids[0].price}`);
406
+ * console.log(`Best ask: ${orderBook.asks[0].price}`);
407
+ * }
408
+ * ```
409
+ */
410
+ async watchOrderBook(outcomeId, limit) {
411
+ await this.initPromise;
412
+ try {
413
+ const args = [outcomeId];
414
+ if (limit !== undefined) {
415
+ args.push(limit);
416
+ }
417
+ const requestBody = {
418
+ args,
419
+ credentials: this.getCredentials()
420
+ };
421
+ const response = await this.api.watchOrderBook({
422
+ exchange: this.exchangeName,
423
+ watchOrderBookRequest: requestBody,
424
+ });
425
+ const data = this.handleResponse(response);
426
+ return convertOrderBook(data);
427
+ }
428
+ catch (error) {
429
+ throw new Error(`Failed to watch order book: ${error}`);
430
+ }
431
+ }
432
+ /**
433
+ * Watch real-time trade updates via WebSocket.
434
+ *
435
+ * Returns a promise that resolves with the next trade(s).
436
+ * Call repeatedly in a loop to stream updates (CCXT Pro pattern).
437
+ *
438
+ * @param outcomeId - Outcome ID to watch
439
+ * @param since - Optional timestamp to filter trades from
440
+ * @param limit - Optional limit for number of trades
441
+ * @returns Next trade update(s)
442
+ *
443
+ * @example
444
+ * ```typescript
445
+ * // Stream trade updates
446
+ * while (true) {
447
+ * const trades = await exchange.watchTrades(outcomeId);
448
+ * for (const trade of trades) {
449
+ * console.log(`Trade: ${trade.price} @ ${trade.amount}`);
450
+ * }
451
+ * }
452
+ * ```
453
+ */
454
+ async watchTrades(outcomeId, since, limit) {
455
+ await this.initPromise;
456
+ try {
457
+ const args = [outcomeId];
458
+ if (since !== undefined) {
459
+ args.push(since);
460
+ }
461
+ if (limit !== undefined) {
462
+ args.push(limit);
463
+ }
464
+ const requestBody = {
465
+ args,
466
+ credentials: this.getCredentials()
467
+ };
468
+ const response = await this.api.watchTrades({
469
+ exchange: this.exchangeName,
470
+ watchTradesRequest: requestBody,
471
+ });
472
+ const data = this.handleResponse(response);
473
+ return data.map(convertTrade);
474
+ }
475
+ catch (error) {
476
+ throw new Error(`Failed to watch trades: ${error}`);
477
+ }
478
+ }
389
479
  // Trading Methods (require authentication)
390
480
  /**
391
481
  * Create a new order.
@@ -40,6 +40,9 @@ docs/SearchMarketsRequest.md
40
40
  docs/SearchMarketsRequestArgsInner.md
41
41
  docs/Trade.md
42
42
  docs/UnifiedMarket.md
43
+ docs/WatchOrderBookRequest.md
44
+ docs/WatchOrderBookRequestArgsInner.md
45
+ docs/WatchTradesRequest.md
43
46
  package.json
44
47
  src/apis/DefaultApi.ts
45
48
  src/apis/index.ts
@@ -82,6 +85,9 @@ src/models/SearchMarketsRequest.ts
82
85
  src/models/SearchMarketsRequestArgsInner.ts
83
86
  src/models/Trade.ts
84
87
  src/models/UnifiedMarket.ts
88
+ src/models/WatchOrderBookRequest.ts
89
+ src/models/WatchOrderBookRequestArgsInner.ts
90
+ src/models/WatchTradesRequest.ts
85
91
  src/models/index.ts
86
92
  src/runtime.ts
87
93
  tsconfig.esm.json