pmxt-core 2.5.0 → 2.6.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.
@@ -94,6 +94,22 @@ export type EventFilterCriteria = {
94
94
  };
95
95
  };
96
96
  export type EventFilterFunction = (event: UnifiedEvent) => boolean;
97
+ export type ExchangeCapability = true | false | 'emulated';
98
+ export interface ExchangeHas {
99
+ fetchMarkets: ExchangeCapability;
100
+ fetchEvents: ExchangeCapability;
101
+ fetchOHLCV: ExchangeCapability;
102
+ fetchOrderBook: ExchangeCapability;
103
+ fetchTrades: ExchangeCapability;
104
+ createOrder: ExchangeCapability;
105
+ cancelOrder: ExchangeCapability;
106
+ fetchOrder: ExchangeCapability;
107
+ fetchOpenOrders: ExchangeCapability;
108
+ fetchPositions: ExchangeCapability;
109
+ fetchBalance: ExchangeCapability;
110
+ watchOrderBook: ExchangeCapability;
111
+ watchTrades: ExchangeCapability;
112
+ }
97
113
  export interface ExchangeCredentials {
98
114
  apiKey?: string;
99
115
  apiSecret?: string;
@@ -104,6 +120,7 @@ export interface ExchangeCredentials {
104
120
  }
105
121
  export declare abstract class PredictionMarketExchange {
106
122
  protected credentials?: ExchangeCredentials;
123
+ readonly has: ExchangeHas;
107
124
  constructor(credentials?: ExchangeCredentials);
108
125
  abstract get name(): string;
109
126
  /**
@@ -8,6 +8,21 @@ const errors_1 = require("./errors");
8
8
  // ----------------------------------------------------------------------------
9
9
  class PredictionMarketExchange {
10
10
  credentials;
11
+ has = {
12
+ fetchMarkets: false,
13
+ fetchEvents: false,
14
+ fetchOHLCV: false,
15
+ fetchOrderBook: false,
16
+ fetchTrades: false,
17
+ createOrder: false,
18
+ cancelOrder: false,
19
+ fetchOrder: false,
20
+ fetchOpenOrders: false,
21
+ fetchPositions: false,
22
+ fetchBalance: false,
23
+ watchOrderBook: false,
24
+ watchTrades: false,
25
+ };
11
26
  constructor(credentials) {
12
27
  this.credentials = credentials;
13
28
  }
@@ -5,6 +5,21 @@ export interface BaoziExchangeOptions {
5
5
  rpcUrl?: string;
6
6
  }
7
7
  export declare class BaoziExchange extends PredictionMarketExchange {
8
+ readonly has: {
9
+ fetchMarkets: true;
10
+ fetchEvents: true;
11
+ fetchOHLCV: "emulated";
12
+ fetchOrderBook: "emulated";
13
+ fetchTrades: "emulated";
14
+ createOrder: true;
15
+ cancelOrder: false;
16
+ fetchOrder: true;
17
+ fetchOpenOrders: "emulated";
18
+ fetchPositions: true;
19
+ fetchBalance: true;
20
+ watchOrderBook: true;
21
+ watchTrades: false;
22
+ };
8
23
  private auth?;
9
24
  private connection;
10
25
  private ws?;
@@ -14,6 +14,21 @@ const websocket_1 = require("./websocket");
14
14
  const errors_2 = require("./errors");
15
15
  const utils_1 = require("./utils");
16
16
  class BaoziExchange extends BaseExchange_1.PredictionMarketExchange {
17
+ has = {
18
+ fetchMarkets: true,
19
+ fetchEvents: true,
20
+ fetchOHLCV: 'emulated',
21
+ fetchOrderBook: 'emulated',
22
+ fetchTrades: 'emulated',
23
+ createOrder: true,
24
+ cancelOrder: false,
25
+ fetchOrder: true,
26
+ fetchOpenOrders: 'emulated',
27
+ fetchPositions: true,
28
+ fetchBalance: true,
29
+ watchOrderBook: true,
30
+ watchTrades: false,
31
+ };
17
32
  auth;
18
33
  connection;
19
34
  ws;
@@ -7,6 +7,21 @@ export interface KalshiExchangeOptions {
7
7
  websocket?: KalshiWebSocketConfig;
8
8
  }
9
9
  export declare class KalshiExchange extends PredictionMarketExchange {
10
+ readonly has: {
11
+ fetchMarkets: true;
12
+ fetchEvents: true;
13
+ fetchOHLCV: true;
14
+ fetchOrderBook: true;
15
+ fetchTrades: true;
16
+ createOrder: true;
17
+ cancelOrder: true;
18
+ fetchOrder: true;
19
+ fetchOpenOrders: true;
20
+ fetchPositions: true;
21
+ fetchBalance: true;
22
+ watchOrderBook: true;
23
+ watchTrades: true;
24
+ };
10
25
  private auth?;
11
26
  private wsConfig?;
12
27
  constructor(options?: ExchangeCredentials | KalshiExchangeOptions);
@@ -16,6 +16,21 @@ const websocket_1 = require("./websocket");
16
16
  const errors_1 = require("./errors");
17
17
  const errors_2 = require("../../errors");
18
18
  class KalshiExchange extends BaseExchange_1.PredictionMarketExchange {
19
+ has = {
20
+ fetchMarkets: true,
21
+ fetchEvents: true,
22
+ fetchOHLCV: true,
23
+ fetchOrderBook: true,
24
+ fetchTrades: true,
25
+ createOrder: true,
26
+ cancelOrder: true,
27
+ fetchOrder: true,
28
+ fetchOpenOrders: true,
29
+ fetchPositions: true,
30
+ fetchBalance: true,
31
+ watchOrderBook: true,
32
+ watchTrades: true,
33
+ };
19
34
  auth;
20
35
  wsConfig;
21
36
  constructor(options) {
@@ -7,6 +7,21 @@ export interface LimitlessExchangeOptions {
7
7
  websocket?: LimitlessWebSocketConfig;
8
8
  }
9
9
  export declare class LimitlessExchange extends PredictionMarketExchange {
10
+ readonly has: {
11
+ fetchMarkets: true;
12
+ fetchEvents: true;
13
+ fetchOHLCV: true;
14
+ fetchOrderBook: true;
15
+ fetchTrades: true;
16
+ createOrder: true;
17
+ cancelOrder: true;
18
+ fetchOrder: false;
19
+ fetchOpenOrders: true;
20
+ fetchPositions: true;
21
+ fetchBalance: true;
22
+ watchOrderBook: true;
23
+ watchTrades: true;
24
+ };
10
25
  private auth?;
11
26
  private client?;
12
27
  private wsConfig?;
@@ -16,6 +16,21 @@ const errors_2 = require("../../errors");
16
16
  const sdk_1 = require("@limitless-exchange/sdk");
17
17
  const ethers_1 = require("ethers");
18
18
  class LimitlessExchange extends BaseExchange_1.PredictionMarketExchange {
19
+ has = {
20
+ fetchMarkets: true,
21
+ fetchEvents: true,
22
+ fetchOHLCV: true,
23
+ fetchOrderBook: true,
24
+ fetchTrades: true,
25
+ createOrder: true,
26
+ cancelOrder: true,
27
+ fetchOrder: false,
28
+ fetchOpenOrders: true,
29
+ fetchPositions: true,
30
+ fetchBalance: true,
31
+ watchOrderBook: true,
32
+ watchTrades: true,
33
+ };
19
34
  auth;
20
35
  client;
21
36
  wsConfig;
@@ -1,6 +1,21 @@
1
1
  import { PredictionMarketExchange, MarketFilterParams, HistoryFilterParams, OHLCVParams, TradesParams, ExchangeCredentials, EventFetchParams } from '../../BaseExchange';
2
2
  import { UnifiedMarket, UnifiedEvent, PriceCandle, OrderBook, Trade, Balance, Order, Position, CreateOrderParams } from '../../types';
3
3
  export declare class MyriadExchange extends PredictionMarketExchange {
4
+ readonly has: {
5
+ fetchMarkets: true;
6
+ fetchEvents: true;
7
+ fetchOHLCV: true;
8
+ fetchOrderBook: "emulated";
9
+ fetchTrades: true;
10
+ createOrder: "emulated";
11
+ cancelOrder: false;
12
+ fetchOrder: false;
13
+ fetchOpenOrders: "emulated";
14
+ fetchPositions: true;
15
+ fetchBalance: "emulated";
16
+ watchOrderBook: "emulated";
17
+ watchTrades: "emulated";
18
+ };
4
19
  private auth?;
5
20
  private ws?;
6
21
  constructor(credentials?: ExchangeCredentials);
@@ -17,6 +17,21 @@ const errors_1 = require("./errors");
17
17
  const errors_2 = require("../../errors");
18
18
  const utils_1 = require("./utils");
19
19
  class MyriadExchange extends BaseExchange_1.PredictionMarketExchange {
20
+ has = {
21
+ fetchMarkets: true,
22
+ fetchEvents: true,
23
+ fetchOHLCV: true,
24
+ fetchOrderBook: 'emulated',
25
+ fetchTrades: true,
26
+ createOrder: 'emulated',
27
+ cancelOrder: false,
28
+ fetchOrder: false,
29
+ fetchOpenOrders: 'emulated',
30
+ fetchPositions: true,
31
+ fetchBalance: 'emulated',
32
+ watchOrderBook: 'emulated',
33
+ watchTrades: 'emulated',
34
+ };
20
35
  auth;
21
36
  ws;
22
37
  constructor(credentials) {
@@ -7,6 +7,21 @@ export interface PolymarketExchangeOptions {
7
7
  websocket?: PolymarketWebSocketConfig;
8
8
  }
9
9
  export declare class PolymarketExchange extends PredictionMarketExchange {
10
+ readonly has: {
11
+ fetchMarkets: true;
12
+ fetchEvents: true;
13
+ fetchOHLCV: true;
14
+ fetchOrderBook: true;
15
+ fetchTrades: true;
16
+ createOrder: true;
17
+ cancelOrder: true;
18
+ fetchOrder: true;
19
+ fetchOpenOrders: true;
20
+ fetchPositions: true;
21
+ fetchBalance: true;
22
+ watchOrderBook: true;
23
+ watchTrades: true;
24
+ };
10
25
  private auth?;
11
26
  private wsConfig?;
12
27
  constructor(options?: ExchangeCredentials | PolymarketExchangeOptions);
@@ -14,6 +14,21 @@ const websocket_1 = require("./websocket");
14
14
  const errors_1 = require("./errors");
15
15
  const errors_2 = require("../../errors");
16
16
  class PolymarketExchange 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
+ watchOrderBook: true,
30
+ watchTrades: true,
31
+ };
17
32
  auth;
18
33
  wsConfig;
19
34
  constructor(options) {
@@ -2,6 +2,21 @@ import { PredictionMarketExchange, MarketFetchParams, EventFetchParams, Exchange
2
2
  import { UnifiedMarket, UnifiedEvent, OrderBook, PriceCandle, Trade, 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
+ watchOrderBook: true;
18
+ watchTrades: false;
19
+ };
5
20
  private auth?;
6
21
  private ws?;
7
22
  private wsConfig?;
@@ -15,6 +15,21 @@ const errors_2 = require("../../errors");
15
15
  const clob_1 = require("@prob/clob");
16
16
  const BSC_USDT_ADDRESS = '0x55d398326f99059fF775485246999027B3197955';
17
17
  class ProbableExchange extends BaseExchange_1.PredictionMarketExchange {
18
+ has = {
19
+ fetchMarkets: true,
20
+ fetchEvents: true,
21
+ fetchOHLCV: true,
22
+ fetchOrderBook: true,
23
+ fetchTrades: true,
24
+ createOrder: true,
25
+ cancelOrder: true,
26
+ fetchOrder: true,
27
+ fetchOpenOrders: true,
28
+ fetchPositions: true,
29
+ fetchBalance: true,
30
+ watchOrderBook: true,
31
+ watchTrades: false,
32
+ };
18
33
  auth;
19
34
  ws;
20
35
  wsConfig;
@@ -39,6 +39,20 @@ async function startServer(port, accessToken) {
39
39
  }
40
40
  next();
41
41
  });
42
+ // Capability map endpoint: GET /api/:exchange/has
43
+ app.get('/api/:exchange/has', (req, res, next) => {
44
+ try {
45
+ const exchangeName = req.params.exchange.toLowerCase();
46
+ if (!defaultExchanges[exchangeName]) {
47
+ defaultExchanges[exchangeName] = createExchange(exchangeName);
48
+ }
49
+ const exchange = defaultExchanges[exchangeName];
50
+ res.json({ success: true, data: exchange.has });
51
+ }
52
+ catch (error) {
53
+ next(error);
54
+ }
55
+ });
42
56
  // API endpoint: POST /api/:exchange/:method
43
57
  // Body: { args: any[], credentials?: ExchangeCredentials }
44
58
  app.post('/api/:exchange/:method', async (req, res, next) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmxt-core",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
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.5.0,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.5.0,supportsES6=true,typescriptThreePlus=true && node ../sdks/typescript/scripts/fix-generated.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.6.0,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.6.0,supportsES6=true,typescriptThreePlus=true && node ../sdks/typescript/scripts/fix-generated.js",
34
34
  "extract:jsdoc": "node ../scripts/extract-jsdoc.js",
35
35
  "generate:docs": "npm run extract:jsdoc && node ../scripts/generate-api-docs.js",
36
36
  "generate:sdk:all": "npm run generate:sdk:python && npm run generate:sdk:typescript && npm run generate:docs"