pmxt-core 2.27.10 → 2.28.1
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/BaseExchange.d.ts +41 -1
- package/dist/BaseExchange.js +83 -22
- package/dist/exchanges/baozi/index.d.ts +2 -16
- package/dist/exchanges/baozi/index.js +2 -16
- package/dist/exchanges/kalshi/api.d.ts +1 -1
- package/dist/exchanges/kalshi/api.js +1 -1
- package/dist/exchanges/kalshi/index.d.ts +0 -22
- package/dist/exchanges/kalshi/index.js +0 -22
- package/dist/exchanges/limitless/api.d.ts +1 -1
- package/dist/exchanges/limitless/api.js +1 -1
- package/dist/exchanges/limitless/index.d.ts +1 -20
- package/dist/exchanges/limitless/index.js +1 -20
- package/dist/exchanges/metaculus/index.d.ts +0 -22
- package/dist/exchanges/metaculus/index.js +0 -23
- package/dist/exchanges/myriad/api.d.ts +1 -1
- package/dist/exchanges/myriad/api.js +1 -1
- package/dist/exchanges/myriad/index.d.ts +1 -13
- package/dist/exchanges/myriad/index.js +1 -13
- package/dist/exchanges/opinion/api.d.ts +1 -1
- package/dist/exchanges/opinion/api.js +1 -1
- package/dist/exchanges/opinion/index.d.ts +0 -22
- package/dist/exchanges/opinion/index.js +0 -22
- package/dist/exchanges/polymarket/api-clob.d.ts +1 -1
- package/dist/exchanges/polymarket/api-clob.js +1 -1
- package/dist/exchanges/polymarket/api-data.d.ts +1 -1
- package/dist/exchanges/polymarket/api-data.js +1 -1
- package/dist/exchanges/polymarket/api-gamma.d.ts +1 -1
- package/dist/exchanges/polymarket/api-gamma.js +1 -1
- package/dist/exchanges/polymarket/index.d.ts +1 -22
- package/dist/exchanges/polymarket/index.js +3 -22
- package/dist/exchanges/polymarket/websocket.d.ts +1 -0
- package/dist/exchanges/polymarket/websocket.js +15 -0
- package/dist/exchanges/polymarket_us/index.d.ts +0 -22
- package/dist/exchanges/polymarket_us/index.js +0 -22
- package/dist/exchanges/probable/api.d.ts +1 -1
- package/dist/exchanges/probable/api.js +1 -1
- package/dist/exchanges/probable/index.d.ts +0 -22
- package/dist/exchanges/probable/index.js +0 -22
- package/dist/exchanges/smarkets/index.d.ts +1 -20
- package/dist/exchanges/smarkets/index.js +1 -20
- package/dist/server/method-verbs.json +10 -0
- package/dist/server/openapi.yaml +31 -0
- package/package.json +3 -3
package/dist/BaseExchange.d.ts
CHANGED
|
@@ -201,6 +201,8 @@ export interface ExchangeHas {
|
|
|
201
201
|
unwatchAddress: ExchangeCapability;
|
|
202
202
|
/** Whether this exchange supports streaming order book updates. */
|
|
203
203
|
watchOrderBook: ExchangeCapability;
|
|
204
|
+
/** Whether this exchange supports unsubscribing from an order book stream. */
|
|
205
|
+
unwatchOrderBook: ExchangeCapability;
|
|
204
206
|
/** Whether this exchange supports streaming trade updates. */
|
|
205
207
|
watchTrades: ExchangeCapability;
|
|
206
208
|
/** Whether this exchange supports fetching the authenticated user's trade history. */
|
|
@@ -254,7 +256,21 @@ export declare abstract class PredictionMarketExchange {
|
|
|
254
256
|
markets: Record<string, UnifiedMarket>;
|
|
255
257
|
marketsBySlug: Record<string, UnifiedMarket>;
|
|
256
258
|
loadedMarkets: boolean;
|
|
257
|
-
|
|
259
|
+
/**
|
|
260
|
+
* Capability map derived automatically from method overrides at runtime.
|
|
261
|
+
* Exchanges do NOT need to declare this manually -- if a subclass overrides
|
|
262
|
+
* a method (and the override does not throw "not supported"), it is `true`.
|
|
263
|
+
* To mark a capability as `'emulated'`, add its key to `emulatedCapabilities`.
|
|
264
|
+
*/
|
|
265
|
+
get has(): ExchangeHas;
|
|
266
|
+
private _has?;
|
|
267
|
+
/**
|
|
268
|
+
* Override in subclasses to force specific capability values.
|
|
269
|
+
* Use `'emulated'` for methods backed by a non-native mechanism,
|
|
270
|
+
* or `false` for methods that override the base only to throw a
|
|
271
|
+
* better error message (e.g. "pari-mutuel bets cannot be cancelled").
|
|
272
|
+
*/
|
|
273
|
+
protected readonly capabilityOverrides: Partial<Record<keyof ExchangeHas, ExchangeCapability>>;
|
|
258
274
|
protected credentials?: ExchangeCredentials;
|
|
259
275
|
protected apiDescriptor?: ApiDescriptor;
|
|
260
276
|
private _throttler;
|
|
@@ -492,6 +508,12 @@ export declare abstract class PredictionMarketExchange {
|
|
|
492
508
|
* @returns Promise that resolves with the current orderbook state
|
|
493
509
|
*/
|
|
494
510
|
watchOrderBook(id: string, limit?: number): Promise<OrderBook>;
|
|
511
|
+
/**
|
|
512
|
+
* Unsubscribe from a previously watched order book stream.
|
|
513
|
+
*
|
|
514
|
+
* @param id - The Outcome ID to stop watching
|
|
515
|
+
*/
|
|
516
|
+
unwatchOrderBook(id: string): Promise<void>;
|
|
495
517
|
/**
|
|
496
518
|
* Watch trade executions in real-time via WebSocket.
|
|
497
519
|
* Returns a promise that resolves with the next trade(s). Call repeatedly in a loop to stream updates (CCXT Pro pattern).
|
|
@@ -560,4 +582,22 @@ export declare abstract class PredictionMarketExchange {
|
|
|
560
582
|
* Creates an async function for an implicit API endpoint.
|
|
561
583
|
*/
|
|
562
584
|
private createImplicitMethod;
|
|
585
|
+
/** All keys that appear in ExchangeHas -- kept in sync via the exhaustive check below. */
|
|
586
|
+
private static readonly _capabilityKeys;
|
|
587
|
+
private static readonly _exhaustiveCheck;
|
|
588
|
+
/**
|
|
589
|
+
* Map from capability keys to the actual method(s) whose override status
|
|
590
|
+
* determines support. Most map 1:1, but `fetchMarkets` and `fetchEvents`
|
|
591
|
+
* are implemented in the base class and delegate to `*Impl` methods that
|
|
592
|
+
* exchanges override instead.
|
|
593
|
+
*/
|
|
594
|
+
private static readonly _capabilityDelegates;
|
|
595
|
+
/**
|
|
596
|
+
* Derive the capability map by comparing this instance's prototype chain
|
|
597
|
+
* against the base class stubs. A method that is overridden (i.e. not the
|
|
598
|
+
* same function reference as the base stub) is considered supported.
|
|
599
|
+
*
|
|
600
|
+
* Explicit `capabilityOverrides` take precedence over introspection.
|
|
601
|
+
*/
|
|
602
|
+
private _deriveCapabilities;
|
|
563
603
|
}
|
package/dist/BaseExchange.js
CHANGED
|
@@ -19,28 +19,26 @@ class PredictionMarketExchange {
|
|
|
19
19
|
markets = {};
|
|
20
20
|
marketsBySlug = {};
|
|
21
21
|
loadedMarkets = false;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
submitOrder: false,
|
|
43
|
-
};
|
|
22
|
+
/**
|
|
23
|
+
* Capability map derived automatically from method overrides at runtime.
|
|
24
|
+
* Exchanges do NOT need to declare this manually -- if a subclass overrides
|
|
25
|
+
* a method (and the override does not throw "not supported"), it is `true`.
|
|
26
|
+
* To mark a capability as `'emulated'`, add its key to `emulatedCapabilities`.
|
|
27
|
+
*/
|
|
28
|
+
get has() {
|
|
29
|
+
if (!this._has) {
|
|
30
|
+
this._has = this._deriveCapabilities();
|
|
31
|
+
}
|
|
32
|
+
return this._has;
|
|
33
|
+
}
|
|
34
|
+
_has;
|
|
35
|
+
/**
|
|
36
|
+
* Override in subclasses to force specific capability values.
|
|
37
|
+
* Use `'emulated'` for methods backed by a non-native mechanism,
|
|
38
|
+
* or `false` for methods that override the base only to throw a
|
|
39
|
+
* better error message (e.g. "pari-mutuel bets cannot be cancelled").
|
|
40
|
+
*/
|
|
41
|
+
capabilityOverrides = {};
|
|
44
42
|
credentials;
|
|
45
43
|
// Implicit API (merged across multiple defineImplicitApi calls)
|
|
46
44
|
apiDescriptor;
|
|
@@ -668,6 +666,14 @@ class PredictionMarketExchange {
|
|
|
668
666
|
async watchOrderBook(id, limit) {
|
|
669
667
|
throw new Error(`watchOrderBook() is not supported by ${this.name}`);
|
|
670
668
|
}
|
|
669
|
+
/**
|
|
670
|
+
* Unsubscribe from a previously watched order book stream.
|
|
671
|
+
*
|
|
672
|
+
* @param id - The Outcome ID to stop watching
|
|
673
|
+
*/
|
|
674
|
+
async unwatchOrderBook(id) {
|
|
675
|
+
throw new Error(`unwatchOrderBook() is not supported by ${this.name}`);
|
|
676
|
+
}
|
|
671
677
|
// ----------------------------------------------------------------------------
|
|
672
678
|
// WebSocket Streaming Methods
|
|
673
679
|
// ----------------------------------------------------------------------------
|
|
@@ -827,5 +833,60 @@ class PredictionMarketExchange {
|
|
|
827
833
|
}
|
|
828
834
|
};
|
|
829
835
|
}
|
|
836
|
+
// ----------------------------------------------------------------------------
|
|
837
|
+
// Capability Derivation
|
|
838
|
+
// ----------------------------------------------------------------------------
|
|
839
|
+
/** All keys that appear in ExchangeHas -- kept in sync via the exhaustive check below. */
|
|
840
|
+
static _capabilityKeys = [
|
|
841
|
+
'fetchMarkets', 'fetchEvents', 'fetchOHLCV', 'fetchOrderBook',
|
|
842
|
+
'fetchTrades', 'createOrder', 'cancelOrder', 'fetchOrder',
|
|
843
|
+
'fetchOpenOrders', 'fetchPositions', 'fetchBalance',
|
|
844
|
+
'watchAddress', 'unwatchAddress', 'watchOrderBook',
|
|
845
|
+
'unwatchOrderBook', 'watchTrades', 'fetchMyTrades',
|
|
846
|
+
'fetchClosedOrders', 'fetchAllOrders', 'buildOrder', 'submitOrder',
|
|
847
|
+
];
|
|
848
|
+
// Compile-time exhaustiveness check: fails tsc if a key exists in
|
|
849
|
+
// ExchangeHas but is missing from _capabilityKeys above.
|
|
850
|
+
static _exhaustiveCheck = {
|
|
851
|
+
fetchMarkets: true, fetchEvents: true, fetchOHLCV: true,
|
|
852
|
+
fetchOrderBook: true, fetchTrades: true, createOrder: true,
|
|
853
|
+
cancelOrder: true, fetchOrder: true, fetchOpenOrders: true,
|
|
854
|
+
fetchPositions: true, fetchBalance: true, watchAddress: true,
|
|
855
|
+
unwatchAddress: true, watchOrderBook: true, unwatchOrderBook: true,
|
|
856
|
+
watchTrades: true, fetchMyTrades: true, fetchClosedOrders: true,
|
|
857
|
+
fetchAllOrders: true, buildOrder: true, submitOrder: true,
|
|
858
|
+
};
|
|
859
|
+
/**
|
|
860
|
+
* Map from capability keys to the actual method(s) whose override status
|
|
861
|
+
* determines support. Most map 1:1, but `fetchMarkets` and `fetchEvents`
|
|
862
|
+
* are implemented in the base class and delegate to `*Impl` methods that
|
|
863
|
+
* exchanges override instead.
|
|
864
|
+
*/
|
|
865
|
+
static _capabilityDelegates = {
|
|
866
|
+
fetchMarkets: 'fetchMarketsImpl',
|
|
867
|
+
fetchEvents: 'fetchEventsImpl',
|
|
868
|
+
};
|
|
869
|
+
/**
|
|
870
|
+
* Derive the capability map by comparing this instance's prototype chain
|
|
871
|
+
* against the base class stubs. A method that is overridden (i.e. not the
|
|
872
|
+
* same function reference as the base stub) is considered supported.
|
|
873
|
+
*
|
|
874
|
+
* Explicit `capabilityOverrides` take precedence over introspection.
|
|
875
|
+
*/
|
|
876
|
+
_deriveCapabilities() {
|
|
877
|
+
const base = PredictionMarketExchange.prototype;
|
|
878
|
+
const result = {};
|
|
879
|
+
for (const key of PredictionMarketExchange._capabilityKeys) {
|
|
880
|
+
// Explicit override wins unconditionally
|
|
881
|
+
if (key in this.capabilityOverrides) {
|
|
882
|
+
result[key] = this.capabilityOverrides[key];
|
|
883
|
+
continue;
|
|
884
|
+
}
|
|
885
|
+
// Check the delegate method (usually same name, but fetchMarkets -> fetchMarketsImpl)
|
|
886
|
+
const methodName = PredictionMarketExchange._capabilityDelegates[key] ?? key;
|
|
887
|
+
result[key] = this[methodName] !== base[methodName];
|
|
888
|
+
}
|
|
889
|
+
return result;
|
|
890
|
+
}
|
|
830
891
|
}
|
|
831
892
|
exports.PredictionMarketExchange = PredictionMarketExchange;
|
|
@@ -5,27 +5,13 @@ export interface BaoziExchangeOptions {
|
|
|
5
5
|
rpcUrl?: string;
|
|
6
6
|
}
|
|
7
7
|
export declare class BaoziExchange extends PredictionMarketExchange {
|
|
8
|
-
readonly
|
|
9
|
-
fetchMarkets: true;
|
|
10
|
-
fetchEvents: true;
|
|
8
|
+
protected readonly capabilityOverrides: {
|
|
11
9
|
fetchOHLCV: "emulated";
|
|
12
10
|
fetchOrderBook: "emulated";
|
|
13
11
|
fetchTrades: "emulated";
|
|
14
|
-
createOrder: true;
|
|
15
|
-
cancelOrder: false;
|
|
16
|
-
fetchOrder: true;
|
|
17
12
|
fetchOpenOrders: "emulated";
|
|
18
|
-
|
|
19
|
-
fetchBalance: true;
|
|
20
|
-
watchAddress: false;
|
|
21
|
-
unwatchAddress: false;
|
|
22
|
-
watchOrderBook: true;
|
|
13
|
+
cancelOrder: false;
|
|
23
14
|
watchTrades: false;
|
|
24
|
-
fetchMyTrades: false;
|
|
25
|
-
fetchClosedOrders: false;
|
|
26
|
-
fetchAllOrders: false;
|
|
27
|
-
buildOrder: false;
|
|
28
|
-
submitOrder: false;
|
|
29
15
|
};
|
|
30
16
|
private auth?;
|
|
31
17
|
private connection;
|
|
@@ -11,27 +11,13 @@ const fetcher_1 = require("./fetcher");
|
|
|
11
11
|
const normalizer_1 = require("./normalizer");
|
|
12
12
|
const utils_1 = require("./utils");
|
|
13
13
|
class BaoziExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
14
|
-
|
|
15
|
-
fetchMarkets: true,
|
|
16
|
-
fetchEvents: true,
|
|
14
|
+
capabilityOverrides = {
|
|
17
15
|
fetchOHLCV: 'emulated',
|
|
18
16
|
fetchOrderBook: 'emulated',
|
|
19
17
|
fetchTrades: 'emulated',
|
|
20
|
-
createOrder: true,
|
|
21
|
-
cancelOrder: false,
|
|
22
|
-
fetchOrder: true,
|
|
23
18
|
fetchOpenOrders: 'emulated',
|
|
24
|
-
|
|
25
|
-
fetchBalance: true,
|
|
26
|
-
watchAddress: false,
|
|
27
|
-
unwatchAddress: false,
|
|
28
|
-
watchOrderBook: true,
|
|
19
|
+
cancelOrder: false,
|
|
29
20
|
watchTrades: false,
|
|
30
|
-
fetchMyTrades: false,
|
|
31
|
-
fetchClosedOrders: false,
|
|
32
|
-
fetchAllOrders: false,
|
|
33
|
-
buildOrder: false,
|
|
34
|
-
submitOrder: false,
|
|
35
21
|
};
|
|
36
22
|
auth;
|
|
37
23
|
connection;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/kalshi/Kalshi.yaml
|
|
3
|
-
* Generated at: 2026-04-
|
|
3
|
+
* Generated at: 2026-04-11T11:19:05.280Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const kalshiApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.kalshiApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/kalshi/Kalshi.yaml
|
|
6
|
-
* Generated at: 2026-04-
|
|
6
|
+
* Generated at: 2026-04-11T11:19:05.280Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.kalshiApiSpec = {
|
|
@@ -11,28 +11,6 @@ export interface KalshiInternalOptions extends KalshiExchangeOptions {
|
|
|
11
11
|
demoMode?: boolean;
|
|
12
12
|
}
|
|
13
13
|
export declare class KalshiExchange extends PredictionMarketExchange {
|
|
14
|
-
readonly has: {
|
|
15
|
-
fetchMarkets: true;
|
|
16
|
-
fetchEvents: true;
|
|
17
|
-
fetchOHLCV: true;
|
|
18
|
-
fetchOrderBook: true;
|
|
19
|
-
fetchTrades: true;
|
|
20
|
-
createOrder: true;
|
|
21
|
-
cancelOrder: true;
|
|
22
|
-
fetchOrder: true;
|
|
23
|
-
fetchOpenOrders: true;
|
|
24
|
-
fetchPositions: true;
|
|
25
|
-
fetchBalance: true;
|
|
26
|
-
watchAddress: false;
|
|
27
|
-
unwatchAddress: false;
|
|
28
|
-
watchOrderBook: true;
|
|
29
|
-
watchTrades: true;
|
|
30
|
-
fetchMyTrades: true;
|
|
31
|
-
fetchClosedOrders: true;
|
|
32
|
-
fetchAllOrders: true;
|
|
33
|
-
buildOrder: true;
|
|
34
|
-
submitOrder: true;
|
|
35
|
-
};
|
|
36
14
|
private auth?;
|
|
37
15
|
private wsConfig?;
|
|
38
16
|
private config;
|
|
@@ -13,28 +13,6 @@ const config_1 = require("./config");
|
|
|
13
13
|
const fetcher_1 = require("./fetcher");
|
|
14
14
|
const normalizer_1 = require("./normalizer");
|
|
15
15
|
class KalshiExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
16
|
-
has = {
|
|
17
|
-
fetchMarkets: true,
|
|
18
|
-
fetchEvents: true,
|
|
19
|
-
fetchOHLCV: true,
|
|
20
|
-
fetchOrderBook: true,
|
|
21
|
-
fetchTrades: true,
|
|
22
|
-
createOrder: true,
|
|
23
|
-
cancelOrder: true,
|
|
24
|
-
fetchOrder: true,
|
|
25
|
-
fetchOpenOrders: true,
|
|
26
|
-
fetchPositions: true,
|
|
27
|
-
fetchBalance: true,
|
|
28
|
-
watchAddress: false,
|
|
29
|
-
unwatchAddress: false,
|
|
30
|
-
watchOrderBook: true,
|
|
31
|
-
watchTrades: true,
|
|
32
|
-
fetchMyTrades: true,
|
|
33
|
-
fetchClosedOrders: true,
|
|
34
|
-
fetchAllOrders: true,
|
|
35
|
-
buildOrder: true,
|
|
36
|
-
submitOrder: true,
|
|
37
|
-
};
|
|
38
16
|
auth;
|
|
39
17
|
wsConfig;
|
|
40
18
|
config;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/limitless/Limitless.yaml
|
|
3
|
-
* Generated at: 2026-04-
|
|
3
|
+
* Generated at: 2026-04-11T11:19:05.327Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const limitlessApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.limitlessApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/limitless/Limitless.yaml
|
|
6
|
-
* Generated at: 2026-04-
|
|
6
|
+
* Generated at: 2026-04-11T11:19:05.327Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.limitlessApiSpec = {
|
|
@@ -11,27 +11,8 @@ export interface LimitlessExchangeOptions {
|
|
|
11
11
|
websocket?: LimitlessWebSocketConfig;
|
|
12
12
|
}
|
|
13
13
|
export declare class LimitlessExchange extends PredictionMarketExchange {
|
|
14
|
-
readonly
|
|
15
|
-
fetchMarkets: true;
|
|
16
|
-
fetchEvents: true;
|
|
17
|
-
fetchOHLCV: true;
|
|
18
|
-
fetchOrderBook: true;
|
|
19
|
-
fetchTrades: true;
|
|
20
|
-
createOrder: true;
|
|
21
|
-
cancelOrder: true;
|
|
14
|
+
protected readonly capabilityOverrides: {
|
|
22
15
|
fetchOrder: false;
|
|
23
|
-
fetchOpenOrders: true;
|
|
24
|
-
fetchPositions: true;
|
|
25
|
-
fetchBalance: true;
|
|
26
|
-
watchAddress: true;
|
|
27
|
-
unwatchAddress: true;
|
|
28
|
-
watchOrderBook: true;
|
|
29
|
-
watchTrades: true;
|
|
30
|
-
fetchMyTrades: true;
|
|
31
|
-
fetchClosedOrders: true;
|
|
32
|
-
fetchAllOrders: true;
|
|
33
|
-
buildOrder: false;
|
|
34
|
-
submitOrder: false;
|
|
35
16
|
};
|
|
36
17
|
private auth?;
|
|
37
18
|
private client?;
|
|
@@ -17,27 +17,8 @@ const fetcher_1 = require("./fetcher");
|
|
|
17
17
|
const normalizer_1 = require("./normalizer");
|
|
18
18
|
const websocket_1 = require("./websocket");
|
|
19
19
|
class LimitlessExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
20
|
-
|
|
21
|
-
fetchMarkets: true,
|
|
22
|
-
fetchEvents: true,
|
|
23
|
-
fetchOHLCV: true,
|
|
24
|
-
fetchOrderBook: true,
|
|
25
|
-
fetchTrades: true,
|
|
26
|
-
createOrder: true,
|
|
27
|
-
cancelOrder: true,
|
|
20
|
+
capabilityOverrides = {
|
|
28
21
|
fetchOrder: false,
|
|
29
|
-
fetchOpenOrders: true,
|
|
30
|
-
fetchPositions: true,
|
|
31
|
-
fetchBalance: true,
|
|
32
|
-
watchAddress: true,
|
|
33
|
-
unwatchAddress: true,
|
|
34
|
-
watchOrderBook: true,
|
|
35
|
-
watchTrades: true,
|
|
36
|
-
fetchMyTrades: true,
|
|
37
|
-
fetchClosedOrders: true,
|
|
38
|
-
fetchAllOrders: true,
|
|
39
|
-
buildOrder: false,
|
|
40
|
-
submitOrder: false,
|
|
41
22
|
};
|
|
42
23
|
auth;
|
|
43
24
|
client;
|
|
@@ -37,28 +37,6 @@ import { UnifiedMarket, UnifiedEvent, CreateOrderParams, Order } from "../../typ
|
|
|
37
37
|
* | Continuous/numeric/date | Yes (read-only HIGHER/LOWER) | No (requires 201-point CDF) |
|
|
38
38
|
*/
|
|
39
39
|
export declare class MetaculusExchange extends PredictionMarketExchange {
|
|
40
|
-
readonly has: {
|
|
41
|
-
fetchMarkets: true;
|
|
42
|
-
fetchEvents: true;
|
|
43
|
-
createOrder: true;
|
|
44
|
-
cancelOrder: true;
|
|
45
|
-
fetchOHLCV: false;
|
|
46
|
-
fetchOrderBook: false;
|
|
47
|
-
fetchTrades: false;
|
|
48
|
-
fetchOrder: false;
|
|
49
|
-
fetchOpenOrders: false;
|
|
50
|
-
fetchPositions: false;
|
|
51
|
-
fetchBalance: false;
|
|
52
|
-
watchAddress: false;
|
|
53
|
-
unwatchAddress: false;
|
|
54
|
-
watchOrderBook: false;
|
|
55
|
-
watchTrades: false;
|
|
56
|
-
fetchMyTrades: false;
|
|
57
|
-
fetchClosedOrders: false;
|
|
58
|
-
fetchAllOrders: false;
|
|
59
|
-
buildOrder: false;
|
|
60
|
-
submitOrder: false;
|
|
61
|
-
};
|
|
62
40
|
private readonly apiToken?;
|
|
63
41
|
constructor(credentials?: ExchangeCredentials);
|
|
64
42
|
get name(): string;
|
|
@@ -48,29 +48,6 @@ const cancelOrder_1 = require("./cancelOrder");
|
|
|
48
48
|
* | Continuous/numeric/date | Yes (read-only HIGHER/LOWER) | No (requires 201-point CDF) |
|
|
49
49
|
*/
|
|
50
50
|
class MetaculusExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
51
|
-
has = {
|
|
52
|
-
fetchMarkets: true,
|
|
53
|
-
fetchEvents: true,
|
|
54
|
-
createOrder: true,
|
|
55
|
-
cancelOrder: true,
|
|
56
|
-
// Metaculus is a forecasting platform -- no order book, no trading history
|
|
57
|
-
fetchOHLCV: false,
|
|
58
|
-
fetchOrderBook: false,
|
|
59
|
-
fetchTrades: false,
|
|
60
|
-
fetchOrder: false,
|
|
61
|
-
fetchOpenOrders: false,
|
|
62
|
-
fetchPositions: false,
|
|
63
|
-
fetchBalance: false,
|
|
64
|
-
watchAddress: false,
|
|
65
|
-
unwatchAddress: false,
|
|
66
|
-
watchOrderBook: false,
|
|
67
|
-
watchTrades: false,
|
|
68
|
-
fetchMyTrades: false,
|
|
69
|
-
fetchClosedOrders: false,
|
|
70
|
-
fetchAllOrders: false,
|
|
71
|
-
buildOrder: false,
|
|
72
|
-
submitOrder: false,
|
|
73
|
-
};
|
|
74
51
|
apiToken;
|
|
75
52
|
constructor(credentials) {
|
|
76
53
|
super(credentials);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/myriad/myriad.yaml
|
|
3
|
-
* Generated at: 2026-04-
|
|
3
|
+
* Generated at: 2026-04-11T11:19:05.341Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const myriadApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.myriadApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/myriad/myriad.yaml
|
|
6
|
-
* Generated at: 2026-04-
|
|
6
|
+
* Generated at: 2026-04-11T11:19:05.341Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.myriadApiSpec = {
|
|
@@ -1,27 +1,15 @@
|
|
|
1
1
|
import { PredictionMarketExchange, MarketFilterParams, HistoryFilterParams, OHLCVParams, TradesParams, ExchangeCredentials, EventFetchParams, MyTradesParams } from '../../BaseExchange';
|
|
2
2
|
import { UnifiedMarket, UnifiedEvent, PriceCandle, OrderBook, Trade, UserTrade, Balance, Order, Position, CreateOrderParams } from '../../types';
|
|
3
3
|
export declare class MyriadExchange extends PredictionMarketExchange {
|
|
4
|
-
readonly
|
|
5
|
-
fetchMarkets: true;
|
|
6
|
-
fetchEvents: true;
|
|
7
|
-
fetchOHLCV: true;
|
|
4
|
+
protected readonly capabilityOverrides: {
|
|
8
5
|
fetchOrderBook: "emulated";
|
|
9
|
-
fetchTrades: true;
|
|
10
6
|
createOrder: "emulated";
|
|
11
7
|
cancelOrder: false;
|
|
12
8
|
fetchOrder: false;
|
|
13
9
|
fetchOpenOrders: "emulated";
|
|
14
|
-
fetchPositions: true;
|
|
15
10
|
fetchBalance: "emulated";
|
|
16
|
-
watchAddress: false;
|
|
17
|
-
unwatchAddress: false;
|
|
18
11
|
watchOrderBook: "emulated";
|
|
19
12
|
watchTrades: "emulated";
|
|
20
|
-
fetchMyTrades: true;
|
|
21
|
-
fetchClosedOrders: false;
|
|
22
|
-
fetchAllOrders: false;
|
|
23
|
-
buildOrder: false;
|
|
24
|
-
submitOrder: false;
|
|
25
13
|
};
|
|
26
14
|
private auth?;
|
|
27
15
|
private ws?;
|
|
@@ -12,27 +12,15 @@ const api_1 = require("./api");
|
|
|
12
12
|
const fetcher_1 = require("./fetcher");
|
|
13
13
|
const normalizer_1 = require("./normalizer");
|
|
14
14
|
class MyriadExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
15
|
-
|
|
16
|
-
fetchMarkets: true,
|
|
17
|
-
fetchEvents: true,
|
|
18
|
-
fetchOHLCV: true,
|
|
15
|
+
capabilityOverrides = {
|
|
19
16
|
fetchOrderBook: 'emulated',
|
|
20
|
-
fetchTrades: true,
|
|
21
17
|
createOrder: 'emulated',
|
|
22
18
|
cancelOrder: false,
|
|
23
19
|
fetchOrder: false,
|
|
24
20
|
fetchOpenOrders: 'emulated',
|
|
25
|
-
fetchPositions: true,
|
|
26
21
|
fetchBalance: 'emulated',
|
|
27
|
-
watchAddress: false,
|
|
28
|
-
unwatchAddress: false,
|
|
29
22
|
watchOrderBook: 'emulated',
|
|
30
23
|
watchTrades: 'emulated',
|
|
31
|
-
fetchMyTrades: true,
|
|
32
|
-
fetchClosedOrders: false,
|
|
33
|
-
fetchAllOrders: false,
|
|
34
|
-
buildOrder: false,
|
|
35
|
-
submitOrder: false,
|
|
36
24
|
};
|
|
37
25
|
auth;
|
|
38
26
|
ws;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/opinion/opinion-openapi.yaml
|
|
3
|
-
* Generated at: 2026-04-
|
|
3
|
+
* Generated at: 2026-04-11T11:19:05.346Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const opinionApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.opinionApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/opinion/opinion-openapi.yaml
|
|
6
|
-
* Generated at: 2026-04-
|
|
6
|
+
* Generated at: 2026-04-11T11:19:05.346Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.opinionApiSpec = {
|
|
@@ -8,28 +8,6 @@ export interface OpinionExchangeOptions {
|
|
|
8
8
|
websocket?: OpinionWebSocketConfig;
|
|
9
9
|
}
|
|
10
10
|
export declare class OpinionExchange extends PredictionMarketExchange {
|
|
11
|
-
readonly has: {
|
|
12
|
-
fetchMarkets: true;
|
|
13
|
-
fetchEvents: true;
|
|
14
|
-
fetchOHLCV: true;
|
|
15
|
-
fetchOrderBook: true;
|
|
16
|
-
fetchTrades: false;
|
|
17
|
-
createOrder: true;
|
|
18
|
-
cancelOrder: true;
|
|
19
|
-
fetchOrder: true;
|
|
20
|
-
fetchOpenOrders: true;
|
|
21
|
-
fetchPositions: true;
|
|
22
|
-
fetchBalance: false;
|
|
23
|
-
watchAddress: false;
|
|
24
|
-
unwatchAddress: false;
|
|
25
|
-
watchOrderBook: true;
|
|
26
|
-
watchTrades: true;
|
|
27
|
-
fetchMyTrades: true;
|
|
28
|
-
fetchClosedOrders: true;
|
|
29
|
-
fetchAllOrders: true;
|
|
30
|
-
buildOrder: true;
|
|
31
|
-
submitOrder: true;
|
|
32
|
-
};
|
|
33
11
|
private auth?;
|
|
34
12
|
private readonly walletAddress?;
|
|
35
13
|
private wsConfig?;
|
|
@@ -52,28 +52,6 @@ const config_1 = require("./config");
|
|
|
52
52
|
const fetcher_1 = require("./fetcher");
|
|
53
53
|
const normalizer_1 = require("./normalizer");
|
|
54
54
|
class OpinionExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
55
|
-
has = {
|
|
56
|
-
fetchMarkets: true,
|
|
57
|
-
fetchEvents: true,
|
|
58
|
-
fetchOHLCV: true,
|
|
59
|
-
fetchOrderBook: true,
|
|
60
|
-
fetchTrades: false,
|
|
61
|
-
createOrder: true,
|
|
62
|
-
cancelOrder: true,
|
|
63
|
-
fetchOrder: true,
|
|
64
|
-
fetchOpenOrders: true,
|
|
65
|
-
fetchPositions: true,
|
|
66
|
-
fetchBalance: false,
|
|
67
|
-
watchAddress: false,
|
|
68
|
-
unwatchAddress: false,
|
|
69
|
-
watchOrderBook: true,
|
|
70
|
-
watchTrades: true,
|
|
71
|
-
fetchMyTrades: true,
|
|
72
|
-
fetchClosedOrders: true,
|
|
73
|
-
fetchAllOrders: true,
|
|
74
|
-
buildOrder: true,
|
|
75
|
-
submitOrder: true,
|
|
76
|
-
};
|
|
77
55
|
auth;
|
|
78
56
|
walletAddress;
|
|
79
57
|
wsConfig;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketClobAPI.yaml
|
|
3
|
-
* Generated at: 2026-04-
|
|
3
|
+
* Generated at: 2026-04-11T11:19:05.287Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const polymarketClobSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.polymarketClobSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketClobAPI.yaml
|
|
6
|
-
* Generated at: 2026-04-
|
|
6
|
+
* Generated at: 2026-04-11T11:19:05.287Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.polymarketClobSpec = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/Polymarket_Data_API.yaml
|
|
3
|
-
* Generated at: 2026-04-
|
|
3
|
+
* Generated at: 2026-04-11T11:19:05.306Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const polymarketDataSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.polymarketDataSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/Polymarket_Data_API.yaml
|
|
6
|
-
* Generated at: 2026-04-
|
|
6
|
+
* Generated at: 2026-04-11T11:19:05.306Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.polymarketDataSpec = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketGammaAPI.yaml
|
|
3
|
-
* Generated at: 2026-04-
|
|
3
|
+
* Generated at: 2026-04-11T11:19:05.303Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const polymarketGammaSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.polymarketGammaSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/polymarket/PolymarketGammaAPI.yaml
|
|
6
|
-
* Generated at: 2026-04-
|
|
6
|
+
* Generated at: 2026-04-11T11:19:05.303Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.polymarketGammaSpec = {
|
|
@@ -11,28 +11,6 @@ export interface PolymarketExchangeOptions {
|
|
|
11
11
|
websocket?: PolymarketWebSocketConfig;
|
|
12
12
|
}
|
|
13
13
|
export declare class PolymarketExchange extends PredictionMarketExchange {
|
|
14
|
-
readonly has: {
|
|
15
|
-
fetchMarkets: true;
|
|
16
|
-
fetchEvents: true;
|
|
17
|
-
fetchOHLCV: true;
|
|
18
|
-
fetchOrderBook: true;
|
|
19
|
-
fetchTrades: true;
|
|
20
|
-
createOrder: true;
|
|
21
|
-
cancelOrder: true;
|
|
22
|
-
fetchOrder: true;
|
|
23
|
-
fetchOpenOrders: true;
|
|
24
|
-
fetchPositions: true;
|
|
25
|
-
fetchBalance: true;
|
|
26
|
-
watchAddress: true;
|
|
27
|
-
unwatchAddress: true;
|
|
28
|
-
watchOrderBook: true;
|
|
29
|
-
watchTrades: true;
|
|
30
|
-
fetchMyTrades: true;
|
|
31
|
-
fetchClosedOrders: false;
|
|
32
|
-
fetchAllOrders: false;
|
|
33
|
-
buildOrder: true;
|
|
34
|
-
submitOrder: true;
|
|
35
|
-
};
|
|
36
14
|
private auth?;
|
|
37
15
|
private wsConfig?;
|
|
38
16
|
private cachedApiCreds?;
|
|
@@ -72,6 +50,7 @@ export declare class PolymarketExchange extends PredictionMarketExchange {
|
|
|
72
50
|
fetchPositions(address?: string): Promise<Position[]>;
|
|
73
51
|
fetchBalance(address?: string): Promise<Balance[]>;
|
|
74
52
|
watchOrderBook(id: string, limit?: number): Promise<OrderBook>;
|
|
53
|
+
unwatchOrderBook(id: string): Promise<void>;
|
|
75
54
|
watchTrades(id: string, address?: string, since?: number, limit?: number): Promise<Trade[]>;
|
|
76
55
|
watchAddress(address: string, types?: SubscriptionOption[]): Promise<SubscribedAddressSnapshot>;
|
|
77
56
|
unwatchAddress(address: string): Promise<void>;
|
|
@@ -19,28 +19,6 @@ const fetcher_1 = require("./fetcher");
|
|
|
19
19
|
const normalizer_1 = require("./normalizer");
|
|
20
20
|
const websocket_1 = require("./websocket");
|
|
21
21
|
class PolymarketExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
22
|
-
has = {
|
|
23
|
-
fetchMarkets: true,
|
|
24
|
-
fetchEvents: true,
|
|
25
|
-
fetchOHLCV: true,
|
|
26
|
-
fetchOrderBook: true,
|
|
27
|
-
fetchTrades: true,
|
|
28
|
-
createOrder: true,
|
|
29
|
-
cancelOrder: true,
|
|
30
|
-
fetchOrder: true,
|
|
31
|
-
fetchOpenOrders: true,
|
|
32
|
-
fetchPositions: true,
|
|
33
|
-
fetchBalance: true,
|
|
34
|
-
watchAddress: true,
|
|
35
|
-
unwatchAddress: true,
|
|
36
|
-
watchOrderBook: true,
|
|
37
|
-
watchTrades: true,
|
|
38
|
-
fetchMyTrades: true,
|
|
39
|
-
fetchClosedOrders: false,
|
|
40
|
-
fetchAllOrders: false,
|
|
41
|
-
buildOrder: true,
|
|
42
|
-
submitOrder: true,
|
|
43
|
-
};
|
|
44
22
|
auth;
|
|
45
23
|
wsConfig;
|
|
46
24
|
cachedApiCreds;
|
|
@@ -438,6 +416,9 @@ class PolymarketExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
|
438
416
|
async watchOrderBook(id, limit) {
|
|
439
417
|
return this.ensureWs().watchOrderBook(id);
|
|
440
418
|
}
|
|
419
|
+
async unwatchOrderBook(id) {
|
|
420
|
+
return this.ensureWs().unwatchOrderBook(id);
|
|
421
|
+
}
|
|
441
422
|
async watchTrades(id, address, since, limit) {
|
|
442
423
|
return this.ensureWs().watchTrades(id, address);
|
|
443
424
|
}
|
|
@@ -30,6 +30,7 @@ export declare class PolymarketWebSocket {
|
|
|
30
30
|
private initializationPromise?;
|
|
31
31
|
constructor(callApi: (operationId: string, params?: Record<string, any>) => Promise<any>, config?: PolymarketWebSocketConfig);
|
|
32
32
|
watchOrderBook(id: string): Promise<OrderBook>;
|
|
33
|
+
unwatchOrderBook(id: string): Promise<void>;
|
|
33
34
|
watchTrades(id: string, address?: string): Promise<Trade[]>;
|
|
34
35
|
watchAddress(address: string, types: SubscriptionOption[]): Promise<SubscribedAddressSnapshot>;
|
|
35
36
|
unwatchAddress(address: string): Promise<void>;
|
|
@@ -82,6 +82,21 @@ class PolymarketWebSocket {
|
|
|
82
82
|
this.orderBookResolvers.get(id).push({ resolve, reject });
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
|
+
async unwatchOrderBook(id) {
|
|
86
|
+
if (!this.manager) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
await this.manager.removeSubscriptions([id]);
|
|
90
|
+
// Clear any pending resolvers for this asset
|
|
91
|
+
const resolvers = this.orderBookResolvers.get(id);
|
|
92
|
+
if (resolvers) {
|
|
93
|
+
this.orderBookResolvers = new Map([...this.orderBookResolvers].filter(([key]) => key !== id));
|
|
94
|
+
}
|
|
95
|
+
// Remove the cached orderbook for this asset
|
|
96
|
+
if (this.orderBooks.has(id)) {
|
|
97
|
+
this.orderBooks = new Map([...this.orderBooks].filter(([key]) => key !== id));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
85
100
|
async watchTrades(id, address) {
|
|
86
101
|
if (address) {
|
|
87
102
|
return this.watcher.watch(address, ['trades'], id);
|
|
@@ -20,28 +20,6 @@ export * from './price';
|
|
|
20
20
|
export * from './errors';
|
|
21
21
|
export { PolymarketUSNormalizer } from './normalizer';
|
|
22
22
|
export declare class PolymarketUSExchange extends PredictionMarketExchange {
|
|
23
|
-
readonly has: {
|
|
24
|
-
fetchMarkets: true;
|
|
25
|
-
fetchEvents: true;
|
|
26
|
-
fetchOHLCV: false;
|
|
27
|
-
fetchOrderBook: true;
|
|
28
|
-
fetchTrades: false;
|
|
29
|
-
createOrder: true;
|
|
30
|
-
cancelOrder: true;
|
|
31
|
-
fetchOrder: true;
|
|
32
|
-
fetchOpenOrders: true;
|
|
33
|
-
fetchPositions: true;
|
|
34
|
-
fetchBalance: true;
|
|
35
|
-
watchAddress: false;
|
|
36
|
-
unwatchAddress: false;
|
|
37
|
-
watchOrderBook: true;
|
|
38
|
-
watchTrades: true;
|
|
39
|
-
fetchMyTrades: true;
|
|
40
|
-
fetchClosedOrders: false;
|
|
41
|
-
fetchAllOrders: false;
|
|
42
|
-
buildOrder: true;
|
|
43
|
-
submitOrder: true;
|
|
44
|
-
};
|
|
45
23
|
private readonly client;
|
|
46
24
|
private readonly normalizer;
|
|
47
25
|
private readonly config;
|
|
@@ -44,28 +44,6 @@ __exportStar(require("./errors"), exports);
|
|
|
44
44
|
var normalizer_2 = require("./normalizer");
|
|
45
45
|
Object.defineProperty(exports, "PolymarketUSNormalizer", { enumerable: true, get: function () { return normalizer_2.PolymarketUSNormalizer; } });
|
|
46
46
|
class PolymarketUSExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
47
|
-
has = {
|
|
48
|
-
fetchMarkets: true,
|
|
49
|
-
fetchEvents: true,
|
|
50
|
-
fetchOHLCV: false,
|
|
51
|
-
fetchOrderBook: true,
|
|
52
|
-
fetchTrades: false,
|
|
53
|
-
createOrder: true,
|
|
54
|
-
cancelOrder: true,
|
|
55
|
-
fetchOrder: true,
|
|
56
|
-
fetchOpenOrders: true,
|
|
57
|
-
fetchPositions: true,
|
|
58
|
-
fetchBalance: true,
|
|
59
|
-
watchAddress: false,
|
|
60
|
-
unwatchAddress: false,
|
|
61
|
-
watchOrderBook: true,
|
|
62
|
-
watchTrades: true,
|
|
63
|
-
fetchMyTrades: true,
|
|
64
|
-
fetchClosedOrders: false,
|
|
65
|
-
fetchAllOrders: false,
|
|
66
|
-
buildOrder: true,
|
|
67
|
-
submitOrder: true,
|
|
68
|
-
};
|
|
69
47
|
client;
|
|
70
48
|
normalizer;
|
|
71
49
|
config;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/probable/probable.yaml
|
|
3
|
-
* Generated at: 2026-04-
|
|
3
|
+
* Generated at: 2026-04-11T11:19:05.333Z
|
|
4
4
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
5
5
|
*/
|
|
6
6
|
export declare const probableApiSpec: {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.probableApiSpec = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Auto-generated from /home/runner/work/pmxt/pmxt/core/specs/probable/probable.yaml
|
|
6
|
-
* Generated at: 2026-04-
|
|
6
|
+
* Generated at: 2026-04-11T11:19:05.333Z
|
|
7
7
|
* Do not edit manually -- run "npm run fetch:openapi" to regenerate.
|
|
8
8
|
*/
|
|
9
9
|
exports.probableApiSpec = {
|
|
@@ -2,28 +2,6 @@ import { PredictionMarketExchange, MarketFetchParams, EventFetchParams, Exchange
|
|
|
2
2
|
import { UnifiedMarket, UnifiedEvent, OrderBook, PriceCandle, Trade, UserTrade, Order, Position, Balance, CreateOrderParams } from '../../types';
|
|
3
3
|
import { ProbableWebSocketConfig } from './websocket';
|
|
4
4
|
export declare class ProbableExchange extends PredictionMarketExchange {
|
|
5
|
-
readonly has: {
|
|
6
|
-
fetchMarkets: true;
|
|
7
|
-
fetchEvents: true;
|
|
8
|
-
fetchOHLCV: true;
|
|
9
|
-
fetchOrderBook: true;
|
|
10
|
-
fetchTrades: true;
|
|
11
|
-
createOrder: true;
|
|
12
|
-
cancelOrder: true;
|
|
13
|
-
fetchOrder: true;
|
|
14
|
-
fetchOpenOrders: true;
|
|
15
|
-
fetchPositions: true;
|
|
16
|
-
fetchBalance: true;
|
|
17
|
-
watchAddress: false;
|
|
18
|
-
unwatchAddress: false;
|
|
19
|
-
watchOrderBook: true;
|
|
20
|
-
watchTrades: false;
|
|
21
|
-
fetchMyTrades: true;
|
|
22
|
-
fetchClosedOrders: false;
|
|
23
|
-
fetchAllOrders: false;
|
|
24
|
-
buildOrder: false;
|
|
25
|
-
submitOrder: false;
|
|
26
|
-
};
|
|
27
5
|
private auth?;
|
|
28
6
|
private ws?;
|
|
29
7
|
private wsConfig?;
|
|
@@ -14,28 +14,6 @@ const fetcher_1 = require("./fetcher");
|
|
|
14
14
|
const normalizer_1 = require("./normalizer");
|
|
15
15
|
const BSC_USDT_ADDRESS = '0x55d398326f99059fF775485246999027B3197955';
|
|
16
16
|
class ProbableExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
17
|
-
has = {
|
|
18
|
-
fetchMarkets: true,
|
|
19
|
-
fetchEvents: true,
|
|
20
|
-
fetchOHLCV: true,
|
|
21
|
-
fetchOrderBook: true,
|
|
22
|
-
fetchTrades: true,
|
|
23
|
-
createOrder: true,
|
|
24
|
-
cancelOrder: true,
|
|
25
|
-
fetchOrder: true,
|
|
26
|
-
fetchOpenOrders: true,
|
|
27
|
-
fetchPositions: true,
|
|
28
|
-
fetchBalance: true,
|
|
29
|
-
watchAddress: false,
|
|
30
|
-
unwatchAddress: false,
|
|
31
|
-
watchOrderBook: true,
|
|
32
|
-
watchTrades: false,
|
|
33
|
-
fetchMyTrades: true,
|
|
34
|
-
fetchClosedOrders: false,
|
|
35
|
-
fetchAllOrders: false,
|
|
36
|
-
buildOrder: false,
|
|
37
|
-
submitOrder: false,
|
|
38
|
-
};
|
|
39
17
|
auth;
|
|
40
18
|
ws;
|
|
41
19
|
wsConfig;
|
|
@@ -1,27 +1,8 @@
|
|
|
1
1
|
import { PredictionMarketExchange, MarketFilterParams, HistoryFilterParams, TradesParams, ExchangeCredentials, EventFetchParams, MyTradesParams, OrderHistoryParams } from '../../BaseExchange';
|
|
2
2
|
import { UnifiedMarket, UnifiedEvent, OrderBook, Trade, UserTrade, Balance, Order, Position, CreateOrderParams, BuiltOrder } from '../../types';
|
|
3
3
|
export declare class SmarketsExchange extends PredictionMarketExchange {
|
|
4
|
-
readonly
|
|
5
|
-
fetchMarkets: true;
|
|
6
|
-
fetchEvents: true;
|
|
7
|
-
fetchOHLCV: false;
|
|
8
|
-
fetchOrderBook: true;
|
|
9
|
-
fetchTrades: true;
|
|
10
|
-
createOrder: true;
|
|
11
|
-
cancelOrder: true;
|
|
12
|
-
fetchOrder: true;
|
|
13
|
-
fetchOpenOrders: true;
|
|
4
|
+
protected readonly capabilityOverrides: {
|
|
14
5
|
fetchPositions: "emulated";
|
|
15
|
-
fetchBalance: true;
|
|
16
|
-
watchAddress: false;
|
|
17
|
-
unwatchAddress: false;
|
|
18
|
-
watchOrderBook: false;
|
|
19
|
-
watchTrades: false;
|
|
20
|
-
fetchMyTrades: true;
|
|
21
|
-
fetchClosedOrders: true;
|
|
22
|
-
fetchAllOrders: true;
|
|
23
|
-
buildOrder: true;
|
|
24
|
-
submitOrder: true;
|
|
25
6
|
};
|
|
26
7
|
private auth?;
|
|
27
8
|
private loginPromise;
|
|
@@ -12,27 +12,8 @@ const fetcher_1 = require("./fetcher");
|
|
|
12
12
|
const normalizer_1 = require("./normalizer");
|
|
13
13
|
const price_1 = require("./price");
|
|
14
14
|
class SmarketsExchange extends BaseExchange_1.PredictionMarketExchange {
|
|
15
|
-
|
|
16
|
-
fetchMarkets: true,
|
|
17
|
-
fetchEvents: true,
|
|
18
|
-
fetchOHLCV: false,
|
|
19
|
-
fetchOrderBook: true,
|
|
20
|
-
fetchTrades: true,
|
|
21
|
-
createOrder: true,
|
|
22
|
-
cancelOrder: true,
|
|
23
|
-
fetchOrder: true,
|
|
24
|
-
fetchOpenOrders: true,
|
|
15
|
+
capabilityOverrides = {
|
|
25
16
|
fetchPositions: 'emulated',
|
|
26
|
-
fetchBalance: true,
|
|
27
|
-
watchAddress: false,
|
|
28
|
-
unwatchAddress: false,
|
|
29
|
-
watchOrderBook: false,
|
|
30
|
-
watchTrades: false,
|
|
31
|
-
fetchMyTrades: true,
|
|
32
|
-
fetchClosedOrders: true,
|
|
33
|
-
fetchAllOrders: true,
|
|
34
|
-
buildOrder: true,
|
|
35
|
-
submitOrder: true,
|
|
36
17
|
};
|
|
37
18
|
auth;
|
|
38
19
|
loginPromise = null;
|
package/dist/server/openapi.yaml
CHANGED
|
@@ -1360,6 +1360,37 @@ paths:
|
|
|
1360
1360
|
description: >-
|
|
1361
1361
|
Watch order book updates in real-time via WebSocket. Returns a promise that resolves with the next order book
|
|
1362
1362
|
update. Call repeatedly in a loop to stream updates (CCXT Pro pattern).
|
|
1363
|
+
'/api/{exchange}/unwatchOrderBook':
|
|
1364
|
+
post:
|
|
1365
|
+
summary: Unwatch Order Book
|
|
1366
|
+
operationId: unwatchOrderBook
|
|
1367
|
+
parameters:
|
|
1368
|
+
- $ref: '#/components/parameters/ExchangeParam'
|
|
1369
|
+
requestBody:
|
|
1370
|
+
content:
|
|
1371
|
+
application/json:
|
|
1372
|
+
schema:
|
|
1373
|
+
title: UnwatchOrderBookRequest
|
|
1374
|
+
type: object
|
|
1375
|
+
properties:
|
|
1376
|
+
args:
|
|
1377
|
+
type: array
|
|
1378
|
+
maxItems: 1
|
|
1379
|
+
items:
|
|
1380
|
+
type: string
|
|
1381
|
+
minItems: 1
|
|
1382
|
+
credentials:
|
|
1383
|
+
$ref: '#/components/schemas/ExchangeCredentials'
|
|
1384
|
+
required:
|
|
1385
|
+
- args
|
|
1386
|
+
responses:
|
|
1387
|
+
'200':
|
|
1388
|
+
description: Unwatch Order Book response
|
|
1389
|
+
content:
|
|
1390
|
+
application/json:
|
|
1391
|
+
schema:
|
|
1392
|
+
$ref: '#/components/schemas/BaseResponse'
|
|
1393
|
+
description: Unsubscribe from a previously watched order book stream.
|
|
1363
1394
|
'/api/{exchange}/watchTrades':
|
|
1364
1395
|
post:
|
|
1365
1396
|
summary: Watch Trades
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pmxt-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.28.1",
|
|
4
4
|
"description": "pmxt is a unified prediction market data API. The ccxt for prediction markets.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"test": "jest -c jest.config.js",
|
|
30
30
|
"server": "tsx watch src/server/index.ts",
|
|
31
31
|
"server:prod": "node dist/server/index.js",
|
|
32
|
-
"generate:sdk:python": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g python -o ../sdks/python/generated --package-name pmxt_internal --additional-properties=projectName=pmxt-internal,packageVersion=2.
|
|
33
|
-
"generate:sdk:typescript": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g typescript-fetch -o ../sdks/typescript/generated --additional-properties=npmName=pmxtjs,npmVersion=2.
|
|
32
|
+
"generate:sdk:python": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g python -o ../sdks/python/generated --package-name pmxt_internal --additional-properties=projectName=pmxt-internal,packageVersion=2.28.1,library=urllib3",
|
|
33
|
+
"generate:sdk:typescript": "npx @openapitools/openapi-generator-cli generate -i src/server/openapi.yaml -g typescript-fetch -o ../sdks/typescript/generated --additional-properties=npmName=pmxtjs,npmVersion=2.28.1,supportsES6=true,typescriptThreePlus=true && node ../sdks/typescript/scripts/fix-generated.js",
|
|
34
34
|
"fetch:openapi": "node scripts/fetch-openapi-specs.js",
|
|
35
35
|
"extract:jsdoc": "node ../scripts/extract-jsdoc.js",
|
|
36
36
|
"generate:docs": "npm run extract:jsdoc && node ../scripts/generate-api-docs.js",
|