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.
- package/dist/esm/generated/src/apis/DefaultApi.d.ts +33 -1
- package/dist/esm/generated/src/apis/DefaultApi.js +48 -1
- package/dist/esm/generated/src/models/WatchOrderBooks200Response.d.ts +48 -0
- package/dist/esm/generated/src/models/WatchOrderBooks200Response.js +48 -0
- package/dist/esm/generated/src/models/WatchOrderBooksRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/WatchOrderBooksRequest.js +47 -0
- package/dist/esm/generated/src/models/WatchOrderBooksRequestArgsInner.d.ts +21 -0
- package/dist/esm/generated/src/models/WatchOrderBooksRequestArgsInner.js +47 -0
- package/dist/esm/generated/src/models/index.d.ts +3 -0
- package/dist/esm/generated/src/models/index.js +3 -0
- package/dist/esm/pmxt/client.d.ts +42 -0
- package/dist/esm/pmxt/client.js +149 -4
- package/dist/esm/pmxt/ws-client.d.ts +37 -0
- package/dist/esm/pmxt/ws-client.js +272 -0
- package/dist/generated/src/apis/DefaultApi.d.ts +33 -1
- package/dist/generated/src/apis/DefaultApi.js +48 -1
- package/dist/generated/src/models/WatchOrderBooks200Response.d.ts +48 -0
- package/dist/generated/src/models/WatchOrderBooks200Response.js +55 -0
- package/dist/generated/src/models/WatchOrderBooksRequest.d.ts +40 -0
- package/dist/generated/src/models/WatchOrderBooksRequest.js +54 -0
- package/dist/generated/src/models/WatchOrderBooksRequestArgsInner.d.ts +21 -0
- package/dist/generated/src/models/WatchOrderBooksRequestArgsInner.js +53 -0
- package/dist/generated/src/models/index.d.ts +3 -0
- package/dist/generated/src/models/index.js +3 -0
- package/dist/pmxt/client.d.ts +42 -0
- package/dist/pmxt/client.js +149 -4
- package/dist/pmxt/ws-client.d.ts +37 -0
- package/dist/pmxt/ws-client.js +276 -0
- package/generated/.openapi-generator/FILES +6 -0
- package/generated/docs/DefaultApi.md +71 -0
- package/generated/docs/WatchOrderBooks200Response.md +38 -0
- package/generated/docs/WatchOrderBooksRequest.md +36 -0
- package/generated/docs/WatchOrderBooksRequestArgsInner.md +32 -0
- package/generated/package.json +1 -1
- package/generated/src/apis/DefaultApi.ts +71 -0
- package/generated/src/models/WatchOrderBooks200Response.ts +96 -0
- package/generated/src/models/WatchOrderBooksRequest.ts +89 -0
- package/generated/src/models/WatchOrderBooksRequestArgsInner.ts +59 -0
- package/generated/src/models/index.ts +3 -0
- package/package.json +2 -2
- package/pmxt/client.ts +181 -8
- 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;
|