pmxtjs 2.48.6 → 2.49.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.
- package/dist/esm/generated/src/models/OrderLevel.d.ts +6 -0
- package/dist/esm/generated/src/models/OrderLevel.js +2 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/pmxt/client.d.ts +106 -5
- package/dist/esm/pmxt/client.js +400 -6
- package/dist/esm/pmxt/constants.d.ts +11 -0
- package/dist/esm/pmxt/constants.js +13 -0
- package/dist/esm/pmxt/errors.d.ts +3 -0
- package/dist/esm/pmxt/errors.js +9 -0
- package/dist/esm/pmxt/escrow.d.ts +39 -0
- package/dist/esm/pmxt/escrow.js +78 -0
- package/dist/esm/pmxt/feed-client.d.ts +3 -0
- package/dist/esm/pmxt/feed-client.js +11 -2
- package/dist/esm/pmxt/hosted-errors.d.ts +84 -0
- package/dist/esm/pmxt/hosted-errors.js +186 -0
- package/dist/esm/pmxt/hosted-mappers.d.ts +45 -0
- package/dist/esm/pmxt/hosted-mappers.js +291 -0
- package/dist/esm/pmxt/hosted-routing.d.ts +69 -0
- package/dist/esm/pmxt/hosted-routing.js +119 -0
- package/dist/esm/pmxt/hosted-typed-data.d.ts +36 -0
- package/dist/esm/pmxt/hosted-typed-data.js +580 -0
- package/dist/esm/pmxt/models.d.ts +46 -8
- package/dist/esm/pmxt/server-manager.d.ts +4 -0
- package/dist/esm/pmxt/server-manager.js +6 -0
- package/dist/esm/pmxt/signers.d.ts +57 -0
- package/dist/esm/pmxt/signers.js +50 -0
- package/dist/esm/pmxt/ws-client.js +2 -1
- package/dist/generated/src/models/OrderLevel.d.ts +6 -0
- package/dist/generated/src/models/OrderLevel.js +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/pmxt/client.d.ts +106 -5
- package/dist/pmxt/client.js +399 -5
- package/dist/pmxt/constants.d.ts +11 -0
- package/dist/pmxt/constants.js +14 -1
- package/dist/pmxt/errors.d.ts +3 -0
- package/dist/pmxt/errors.js +11 -1
- package/dist/pmxt/escrow.d.ts +39 -0
- package/dist/pmxt/escrow.js +82 -0
- package/dist/pmxt/feed-client.d.ts +3 -0
- package/dist/pmxt/feed-client.js +11 -2
- package/dist/pmxt/hosted-errors.d.ts +84 -0
- package/dist/pmxt/hosted-errors.js +201 -0
- package/dist/pmxt/hosted-mappers.d.ts +45 -0
- package/dist/pmxt/hosted-mappers.js +302 -0
- package/dist/pmxt/hosted-routing.d.ts +69 -0
- package/dist/pmxt/hosted-routing.js +126 -0
- package/dist/pmxt/hosted-typed-data.d.ts +36 -0
- package/dist/pmxt/hosted-typed-data.js +619 -0
- package/dist/pmxt/models.d.ts +46 -8
- package/dist/pmxt/server-manager.d.ts +4 -0
- package/dist/pmxt/server-manager.js +6 -0
- package/dist/pmxt/signers.d.ts +57 -0
- package/dist/pmxt/signers.js +55 -0
- package/dist/pmxt/ws-client.js +2 -1
- package/generated/docs/OrderLevel.md +2 -0
- package/generated/package.json +1 -1
- package/generated/src/models/OrderLevel.ts +8 -0
- package/index.ts +1 -0
- package/package.json +11 -2
- package/pmxt/client.ts +495 -9
- package/pmxt/constants.ts +15 -0
- package/pmxt/errors.ts +11 -0
- package/pmxt/escrow.ts +93 -0
- package/pmxt/feed-client.ts +14 -2
- package/pmxt/hosted-errors.ts +216 -0
- package/pmxt/hosted-mappers.ts +312 -0
- package/pmxt/hosted-routing.ts +165 -0
- package/pmxt/hosted-typed-data.ts +767 -0
- package/pmxt/models.ts +65 -8
- package/pmxt/server-manager.ts +7 -0
- package/pmxt/signers.ts +86 -0
- package/pmxt/ws-client.ts +2 -1
package/dist/pmxt/models.d.ts
CHANGED
|
@@ -164,6 +164,12 @@ export interface UserTrade {
|
|
|
164
164
|
outcomeId?: string;
|
|
165
165
|
/** Market ID */
|
|
166
166
|
marketId?: string;
|
|
167
|
+
/** On-chain transaction hash (populated in hosted mode when the trade was settled on-chain). */
|
|
168
|
+
txHash?: string;
|
|
169
|
+
/** Chain identifier (e.g. 'polygon'). Populated in hosted mode. */
|
|
170
|
+
chain?: string;
|
|
171
|
+
/** On-chain block number where this trade was included. Populated in hosted mode. */
|
|
172
|
+
blockNumber?: number;
|
|
167
173
|
}
|
|
168
174
|
/**
|
|
169
175
|
* Result of a paginated market fetch.
|
|
@@ -222,6 +228,8 @@ export interface Order {
|
|
|
222
228
|
status: string;
|
|
223
229
|
/** Amount filled */
|
|
224
230
|
filled: number;
|
|
231
|
+
/** Amount filled in shares/contracts (if different from USDC-denominated `filled`). */
|
|
232
|
+
filledShares?: number;
|
|
225
233
|
/** Amount remaining */
|
|
226
234
|
remaining: number;
|
|
227
235
|
/** Unix timestamp (milliseconds) */
|
|
@@ -230,6 +238,14 @@ export interface Order {
|
|
|
230
238
|
price?: number;
|
|
231
239
|
/** Trading fee */
|
|
232
240
|
fee?: number;
|
|
241
|
+
/** Fee rate in basis points applied to this order (e.g. 100 = 1%). */
|
|
242
|
+
feeRateBps?: number;
|
|
243
|
+
/** On-chain transaction hash (populated in hosted mode when the order was settled on-chain). */
|
|
244
|
+
txHash?: string;
|
|
245
|
+
/** Chain identifier (e.g. 'polygon'). Populated in hosted mode. */
|
|
246
|
+
chain?: string;
|
|
247
|
+
/** On-chain block number where this order was included. Populated in hosted mode. */
|
|
248
|
+
blockNumber?: number;
|
|
233
249
|
}
|
|
234
250
|
/**
|
|
235
251
|
* A current position in a market.
|
|
@@ -239,18 +255,24 @@ export interface Position {
|
|
|
239
255
|
marketId: string;
|
|
240
256
|
/** Outcome ID */
|
|
241
257
|
outcomeId: string;
|
|
242
|
-
/** Outcome label */
|
|
243
|
-
outcomeLabel
|
|
258
|
+
/** Outcome label (populated in venue-direct mode; may be undefined in hosted mode when the server hasn't enriched). */
|
|
259
|
+
outcomeLabel?: string;
|
|
244
260
|
/** Position size (positive for long, negative for short) */
|
|
245
261
|
size: number;
|
|
246
|
-
/** Average entry price */
|
|
247
|
-
entryPrice
|
|
248
|
-
/** Current market price */
|
|
249
|
-
currentPrice
|
|
250
|
-
/** Unrealized profit/loss */
|
|
251
|
-
unrealizedPnL
|
|
262
|
+
/** Average entry price (populated in venue-direct mode; may be undefined in hosted mode when the server hasn't enriched). */
|
|
263
|
+
entryPrice?: number;
|
|
264
|
+
/** Current market price (populated in venue-direct mode; may be undefined in hosted mode when the server hasn't enriched). */
|
|
265
|
+
currentPrice?: number;
|
|
266
|
+
/** Unrealized profit/loss (populated in venue-direct mode; may be undefined in hosted mode when the server hasn't enriched). */
|
|
267
|
+
unrealizedPnL?: number;
|
|
252
268
|
/** Realized profit/loss */
|
|
253
269
|
realizedPnL?: number;
|
|
270
|
+
/** On-chain transaction hash for the latest position update. Populated in hosted mode. */
|
|
271
|
+
txHash?: string;
|
|
272
|
+
/** Chain identifier (e.g. 'polygon'). Populated in hosted mode. */
|
|
273
|
+
chain?: string;
|
|
274
|
+
/** On-chain block number for the latest position update. Populated in hosted mode. */
|
|
275
|
+
blockNumber?: number;
|
|
254
276
|
}
|
|
255
277
|
/**
|
|
256
278
|
* Account balance.
|
|
@@ -264,6 +286,12 @@ export interface Balance {
|
|
|
264
286
|
available: number;
|
|
265
287
|
/** Locked in open orders */
|
|
266
288
|
locked: number;
|
|
289
|
+
/** On-chain transaction hash for the latest balance update. Populated in hosted mode. */
|
|
290
|
+
txHash?: string;
|
|
291
|
+
/** Chain identifier (e.g. 'polygon'). Populated in hosted mode. */
|
|
292
|
+
chain?: string;
|
|
293
|
+
/** On-chain block number for the latest balance update. Populated in hosted mode. */
|
|
294
|
+
blockNumber?: number;
|
|
267
295
|
}
|
|
268
296
|
/**
|
|
269
297
|
* Candle interval for OHLCV data.
|
|
@@ -322,6 +350,8 @@ export interface EventFetchParams {
|
|
|
322
350
|
limit?: number;
|
|
323
351
|
/** Pagination offset */
|
|
324
352
|
offset?: number;
|
|
353
|
+
/** Opaque venue pagination cursor, where supported. */
|
|
354
|
+
cursor?: string;
|
|
325
355
|
/** Sort order */
|
|
326
356
|
sort?: SortOption;
|
|
327
357
|
/** Filter by event status */
|
|
@@ -332,6 +362,8 @@ export interface EventFetchParams {
|
|
|
332
362
|
eventId?: string;
|
|
333
363
|
/** Lookup by event slug */
|
|
334
364
|
slug?: string;
|
|
365
|
+
/** Filter events by their parent series. Accepts the venue-native series id / ticker / slug. */
|
|
366
|
+
series?: string;
|
|
335
367
|
/** Filter by event category (e.g. "sports", "politics", "crypto") */
|
|
336
368
|
category?: string;
|
|
337
369
|
/** Filter by tags attached to the event */
|
|
@@ -370,6 +402,12 @@ export interface CreateOrderParams {
|
|
|
370
402
|
price?: number;
|
|
371
403
|
/** Optional fee rate (e.g., 1000 for 0.1%) */
|
|
372
404
|
fee?: number;
|
|
405
|
+
/** Optional override for Limitless/Polymarket */
|
|
406
|
+
tickSize?: number;
|
|
407
|
+
/** Optional override to skip neg-risk lookup (Polymarket) */
|
|
408
|
+
negRisk?: boolean;
|
|
409
|
+
/** Limitless delegated signing: profile ID to trade on behalf of */
|
|
410
|
+
onBehalfOf?: number;
|
|
373
411
|
}
|
|
374
412
|
/** Alias matching the core MarketFetchParams name. */
|
|
375
413
|
export type MarketFetchParams = MarketFilterParams;
|
|
@@ -36,6 +36,10 @@ export declare class ServerManager {
|
|
|
36
36
|
* Check if the server is running.
|
|
37
37
|
*/
|
|
38
38
|
isServerRunning(): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Backwards-compatible alias for `isServerRunning()`.
|
|
41
|
+
*/
|
|
42
|
+
isServerAlive(): Promise<boolean>;
|
|
39
43
|
/**
|
|
40
44
|
* Wait for the server to be ready.
|
|
41
45
|
* Requires a lock file to be present to avoid falsely matching an unrelated
|
|
@@ -134,6 +134,12 @@ class ServerManager {
|
|
|
134
134
|
return false;
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Backwards-compatible alias for `isServerRunning()`.
|
|
139
|
+
*/
|
|
140
|
+
async isServerAlive() {
|
|
141
|
+
return this.isServerRunning();
|
|
142
|
+
}
|
|
137
143
|
/**
|
|
138
144
|
* Wait for the server to be ready.
|
|
139
145
|
* Requires a lock file to be present to avoid falsely matching an unrelated
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signer helpers for hosted PMXT trading.
|
|
3
|
+
*
|
|
4
|
+
* `ethers` is an optional peer dependency — read-only SDK users do not need it
|
|
5
|
+
* installed. Hosted-mode signing imports it lazily via `require()` and throws
|
|
6
|
+
* a clear install hint when it's missing.
|
|
7
|
+
*
|
|
8
|
+
* Mirrors `sdks/python/pmxt/signers.py`.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* EIP-712 typed data payload as accepted by ethers v6 / Web3 wallets.
|
|
12
|
+
* `EIP712Domain` is allowed inside `types` (and is the standard) but ethers
|
|
13
|
+
* strips it before signing — see {@link EthersSigner.signTypedData}.
|
|
14
|
+
*/
|
|
15
|
+
export interface TypedData {
|
|
16
|
+
types: Record<string, Array<{
|
|
17
|
+
name: string;
|
|
18
|
+
type: string;
|
|
19
|
+
}>>;
|
|
20
|
+
primaryType: string;
|
|
21
|
+
domain: {
|
|
22
|
+
name: string;
|
|
23
|
+
version: string;
|
|
24
|
+
chainId: number;
|
|
25
|
+
verifyingContract: string;
|
|
26
|
+
};
|
|
27
|
+
message: Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Pluggable signer abstraction. Implement this to integrate hardware wallets
|
|
31
|
+
* or remote signing services. {@link EthersSigner} is the built-in
|
|
32
|
+
* private-key implementation.
|
|
33
|
+
*/
|
|
34
|
+
export interface Signer {
|
|
35
|
+
readonly address: string;
|
|
36
|
+
signTypedData(typedData: TypedData): Promise<string>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Built-in signer backed by an ethers `Wallet`.
|
|
40
|
+
*
|
|
41
|
+
* `ethers` is imported lazily — a clear, install-hint-bearing error is thrown
|
|
42
|
+
* if the peer dependency is missing.
|
|
43
|
+
*/
|
|
44
|
+
export declare class EthersSigner implements Signer {
|
|
45
|
+
private readonly _wallet;
|
|
46
|
+
readonly address: string;
|
|
47
|
+
constructor(privateKey: string);
|
|
48
|
+
signTypedData(typedData: TypedData): Promise<string>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Convenience factory: build a {@link Signer} from a raw private key.
|
|
52
|
+
*
|
|
53
|
+
* Currently always returns an {@link EthersSigner}. Async for forward
|
|
54
|
+
* compatibility with key-loaders that may need to await (e.g. keystore
|
|
55
|
+
* decryption).
|
|
56
|
+
*/
|
|
57
|
+
export declare function signerFromPrivateKey(privateKey: string): Promise<Signer>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Signer helpers for hosted PMXT trading.
|
|
4
|
+
*
|
|
5
|
+
* `ethers` is an optional peer dependency — read-only SDK users do not need it
|
|
6
|
+
* installed. Hosted-mode signing imports it lazily via `require()` and throws
|
|
7
|
+
* a clear install hint when it's missing.
|
|
8
|
+
*
|
|
9
|
+
* Mirrors `sdks/python/pmxt/signers.py`.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.EthersSigner = void 0;
|
|
13
|
+
exports.signerFromPrivateKey = signerFromPrivateKey;
|
|
14
|
+
const ETHERS_INSTALL_HINT = "hosted trading requires the optional 'ethers' peer dependency. Install with: npm install ethers";
|
|
15
|
+
/**
|
|
16
|
+
* Built-in signer backed by an ethers `Wallet`.
|
|
17
|
+
*
|
|
18
|
+
* `ethers` is imported lazily — a clear, install-hint-bearing error is thrown
|
|
19
|
+
* if the peer dependency is missing.
|
|
20
|
+
*/
|
|
21
|
+
class EthersSigner {
|
|
22
|
+
_wallet; // ethers.Wallet
|
|
23
|
+
address;
|
|
24
|
+
constructor(privateKey) {
|
|
25
|
+
let ethers;
|
|
26
|
+
try {
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
28
|
+
ethers = require("ethers");
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
throw new Error(ETHERS_INSTALL_HINT);
|
|
32
|
+
}
|
|
33
|
+
this._wallet = new ethers.Wallet(privateKey);
|
|
34
|
+
this.address = this._wallet.address;
|
|
35
|
+
}
|
|
36
|
+
async signTypedData(typedData) {
|
|
37
|
+
// ethers expects `types` WITHOUT the EIP712Domain entry — it derives
|
|
38
|
+
// the domain hash from the `domain` argument.
|
|
39
|
+
const types = { ...typedData.types };
|
|
40
|
+
delete types["EIP712Domain"];
|
|
41
|
+
const sig = await this._wallet.signTypedData(typedData.domain, types, typedData.message);
|
|
42
|
+
return sig.startsWith("0x") ? sig : "0x" + sig;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.EthersSigner = EthersSigner;
|
|
46
|
+
/**
|
|
47
|
+
* Convenience factory: build a {@link Signer} from a raw private key.
|
|
48
|
+
*
|
|
49
|
+
* Currently always returns an {@link EthersSigner}. Async for forward
|
|
50
|
+
* compatibility with key-loaders that may need to await (e.g. keystore
|
|
51
|
+
* decryption).
|
|
52
|
+
*/
|
|
53
|
+
async function signerFromPrivateKey(privateKey) {
|
|
54
|
+
return new EthersSigner(privateKey);
|
|
55
|
+
}
|
package/dist/pmxt/ws-client.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.SidecarWsClient = void 0;
|
|
12
12
|
const errors_js_1 = require("./errors.js");
|
|
13
|
+
const logger_js_1 = require("./logger.js");
|
|
13
14
|
const MAX_QUEUED_MESSAGES_PER_SUBSCRIPTION = 100_000;
|
|
14
15
|
/**
|
|
15
16
|
* Multiplexed WebSocket client for the pmxt sidecar.
|
|
@@ -120,7 +121,7 @@ class SidecarWsClient {
|
|
|
120
121
|
}
|
|
121
122
|
catch (err) {
|
|
122
123
|
// Dispatch bug -- log and continue; don't kill the connection.
|
|
123
|
-
|
|
124
|
+
logger_js_1.logger.error('[SidecarWsClient] dispatch error:', { err });
|
|
124
125
|
}
|
|
125
126
|
};
|
|
126
127
|
});
|
|
@@ -8,6 +8,7 @@ Name | Type
|
|
|
8
8
|
------------ | -------------
|
|
9
9
|
`price` | number
|
|
10
10
|
`size` | number
|
|
11
|
+
`orderCount` | number
|
|
11
12
|
|
|
12
13
|
## Example
|
|
13
14
|
|
|
@@ -18,6 +19,7 @@ import type { OrderLevel } from 'pmxtjs'
|
|
|
18
19
|
const example = {
|
|
19
20
|
"price": null,
|
|
20
21
|
"size": null,
|
|
22
|
+
"orderCount": null,
|
|
21
23
|
} satisfies OrderLevel
|
|
22
24
|
|
|
23
25
|
console.log(example)
|
package/generated/package.json
CHANGED
|
@@ -31,6 +31,12 @@ export interface OrderLevel {
|
|
|
31
31
|
* @memberof OrderLevel
|
|
32
32
|
*/
|
|
33
33
|
size: number;
|
|
34
|
+
/**
|
|
35
|
+
*
|
|
36
|
+
* @type {number}
|
|
37
|
+
* @memberof OrderLevel
|
|
38
|
+
*/
|
|
39
|
+
orderCount?: number;
|
|
34
40
|
}
|
|
35
41
|
|
|
36
42
|
/**
|
|
@@ -54,6 +60,7 @@ export function OrderLevelFromJSONTyped(json: any, ignoreDiscriminator: boolean)
|
|
|
54
60
|
|
|
55
61
|
'price': json['price'],
|
|
56
62
|
'size': json['size'],
|
|
63
|
+
'orderCount': json['orderCount'] == null ? undefined : json['orderCount'],
|
|
57
64
|
};
|
|
58
65
|
}
|
|
59
66
|
|
|
@@ -70,6 +77,7 @@ export function OrderLevelToJSONTyped(value?: OrderLevel | null, ignoreDiscrimin
|
|
|
70
77
|
|
|
71
78
|
'price': value['price'],
|
|
72
79
|
'size': value['size'],
|
|
80
|
+
'orderCount': value['orderCount'],
|
|
73
81
|
};
|
|
74
82
|
}
|
|
75
83
|
|
package/index.ts
CHANGED
|
@@ -36,6 +36,7 @@ export { MarketList } from "./pmxt/models.js";
|
|
|
36
36
|
export type { UnifiedSeries } from "./pmxt/models.js";
|
|
37
37
|
export type * from "./pmxt/models.js";
|
|
38
38
|
export * from "./pmxt/errors.js";
|
|
39
|
+
export * from "./pmxt/hosted-errors.js";
|
|
39
40
|
|
|
40
41
|
|
|
41
42
|
const defaultManager = new ServerManager();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pmxtjs",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.49.0",
|
|
4
4
|
"description": "Unified prediction market data API - The ccxt for prediction markets",
|
|
5
5
|
"author": "PMXT Contributors",
|
|
6
6
|
"repository": {
|
|
@@ -43,12 +43,21 @@
|
|
|
43
43
|
"unified"
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"pmxt-core": "2.
|
|
46
|
+
"pmxt-core": "2.49.0",
|
|
47
47
|
"ws": "^8.18.0"
|
|
48
48
|
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"ethers": ">=6.0.0 <7.0.0"
|
|
51
|
+
},
|
|
52
|
+
"peerDependenciesMeta": {
|
|
53
|
+
"ethers": {
|
|
54
|
+
"optional": true
|
|
55
|
+
}
|
|
56
|
+
},
|
|
49
57
|
"devDependencies": {
|
|
50
58
|
"@types/jest": "^30.0.0",
|
|
51
59
|
"@types/node": "^20.0.0",
|
|
60
|
+
"ethers": "^6.16.0",
|
|
52
61
|
"jest": "^30.4.2",
|
|
53
62
|
"ts-jest": "^29.4.11",
|
|
54
63
|
"typescript": "^5.0.0"
|