pmxtjs 2.48.5 → 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/generated/src/models/UnifiedMarket.d.ts +2 -2
- package/dist/esm/generated/src/models/UnifiedMarket.js +2 -4
- 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/generated/src/models/UnifiedMarket.d.ts +2 -2
- package/dist/generated/src/models/UnifiedMarket.js +2 -4
- 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/generated/src/models/UnifiedMarket.ts +4 -5
- 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/pmxt/models.ts
CHANGED
|
@@ -223,6 +223,15 @@ export interface UserTrade {
|
|
|
223
223
|
|
|
224
224
|
/** Market ID */
|
|
225
225
|
marketId?: string;
|
|
226
|
+
|
|
227
|
+
/** On-chain transaction hash (populated in hosted mode when the trade was settled on-chain). */
|
|
228
|
+
txHash?: string;
|
|
229
|
+
|
|
230
|
+
/** Chain identifier (e.g. 'polygon'). Populated in hosted mode. */
|
|
231
|
+
chain?: string;
|
|
232
|
+
|
|
233
|
+
/** On-chain block number where this trade was included. Populated in hosted mode. */
|
|
234
|
+
blockNumber?: number;
|
|
226
235
|
}
|
|
227
236
|
|
|
228
237
|
/**
|
|
@@ -301,6 +310,9 @@ export interface Order {
|
|
|
301
310
|
/** Amount filled */
|
|
302
311
|
filled: number;
|
|
303
312
|
|
|
313
|
+
/** Amount filled in shares/contracts (if different from USDC-denominated `filled`). */
|
|
314
|
+
filledShares?: number;
|
|
315
|
+
|
|
304
316
|
/** Amount remaining */
|
|
305
317
|
remaining: number;
|
|
306
318
|
|
|
@@ -312,6 +324,18 @@ export interface Order {
|
|
|
312
324
|
|
|
313
325
|
/** Trading fee */
|
|
314
326
|
fee?: number;
|
|
327
|
+
|
|
328
|
+
/** Fee rate in basis points applied to this order (e.g. 100 = 1%). */
|
|
329
|
+
feeRateBps?: number;
|
|
330
|
+
|
|
331
|
+
/** On-chain transaction hash (populated in hosted mode when the order was settled on-chain). */
|
|
332
|
+
txHash?: string;
|
|
333
|
+
|
|
334
|
+
/** Chain identifier (e.g. 'polygon'). Populated in hosted mode. */
|
|
335
|
+
chain?: string;
|
|
336
|
+
|
|
337
|
+
/** On-chain block number where this order was included. Populated in hosted mode. */
|
|
338
|
+
blockNumber?: number;
|
|
315
339
|
}
|
|
316
340
|
|
|
317
341
|
/**
|
|
@@ -324,23 +348,32 @@ export interface Position {
|
|
|
324
348
|
/** Outcome ID */
|
|
325
349
|
outcomeId: string;
|
|
326
350
|
|
|
327
|
-
/** Outcome label */
|
|
328
|
-
outcomeLabel
|
|
351
|
+
/** Outcome label (populated in venue-direct mode; may be undefined in hosted mode when the server hasn't enriched). */
|
|
352
|
+
outcomeLabel?: string;
|
|
329
353
|
|
|
330
354
|
/** Position size (positive for long, negative for short) */
|
|
331
355
|
size: number;
|
|
332
356
|
|
|
333
|
-
/** Average entry price */
|
|
334
|
-
entryPrice
|
|
357
|
+
/** Average entry price (populated in venue-direct mode; may be undefined in hosted mode when the server hasn't enriched). */
|
|
358
|
+
entryPrice?: number;
|
|
335
359
|
|
|
336
|
-
/** Current market price */
|
|
337
|
-
currentPrice
|
|
360
|
+
/** Current market price (populated in venue-direct mode; may be undefined in hosted mode when the server hasn't enriched). */
|
|
361
|
+
currentPrice?: number;
|
|
338
362
|
|
|
339
|
-
/** Unrealized profit/loss */
|
|
340
|
-
unrealizedPnL
|
|
363
|
+
/** Unrealized profit/loss (populated in venue-direct mode; may be undefined in hosted mode when the server hasn't enriched). */
|
|
364
|
+
unrealizedPnL?: number;
|
|
341
365
|
|
|
342
366
|
/** Realized profit/loss */
|
|
343
367
|
realizedPnL?: number;
|
|
368
|
+
|
|
369
|
+
/** On-chain transaction hash for the latest position update. Populated in hosted mode. */
|
|
370
|
+
txHash?: string;
|
|
371
|
+
|
|
372
|
+
/** Chain identifier (e.g. 'polygon'). Populated in hosted mode. */
|
|
373
|
+
chain?: string;
|
|
374
|
+
|
|
375
|
+
/** On-chain block number for the latest position update. Populated in hosted mode. */
|
|
376
|
+
blockNumber?: number;
|
|
344
377
|
}
|
|
345
378
|
|
|
346
379
|
/**
|
|
@@ -358,6 +391,15 @@ export interface Balance {
|
|
|
358
391
|
|
|
359
392
|
/** Locked in open orders */
|
|
360
393
|
locked: number;
|
|
394
|
+
|
|
395
|
+
/** On-chain transaction hash for the latest balance update. Populated in hosted mode. */
|
|
396
|
+
txHash?: string;
|
|
397
|
+
|
|
398
|
+
/** Chain identifier (e.g. 'polygon'). Populated in hosted mode. */
|
|
399
|
+
chain?: string;
|
|
400
|
+
|
|
401
|
+
/** On-chain block number for the latest balance update. Populated in hosted mode. */
|
|
402
|
+
blockNumber?: number;
|
|
361
403
|
}
|
|
362
404
|
|
|
363
405
|
// Parameter types
|
|
@@ -437,6 +479,9 @@ export interface EventFetchParams {
|
|
|
437
479
|
/** Pagination offset */
|
|
438
480
|
offset?: number;
|
|
439
481
|
|
|
482
|
+
/** Opaque venue pagination cursor, where supported. */
|
|
483
|
+
cursor?: string;
|
|
484
|
+
|
|
440
485
|
/** Sort order */
|
|
441
486
|
sort?: SortOption;
|
|
442
487
|
|
|
@@ -452,6 +497,9 @@ export interface EventFetchParams {
|
|
|
452
497
|
/** Lookup by event slug */
|
|
453
498
|
slug?: string;
|
|
454
499
|
|
|
500
|
+
/** Filter events by their parent series. Accepts the venue-native series id / ticker / slug. */
|
|
501
|
+
series?: string;
|
|
502
|
+
|
|
455
503
|
/** Filter by event category (e.g. "sports", "politics", "crypto") */
|
|
456
504
|
category?: string;
|
|
457
505
|
|
|
@@ -503,6 +551,15 @@ export interface CreateOrderParams {
|
|
|
503
551
|
|
|
504
552
|
/** Optional fee rate (e.g., 1000 for 0.1%) */
|
|
505
553
|
fee?: number;
|
|
554
|
+
|
|
555
|
+
/** Optional override for Limitless/Polymarket */
|
|
556
|
+
tickSize?: number;
|
|
557
|
+
|
|
558
|
+
/** Optional override to skip neg-risk lookup (Polymarket) */
|
|
559
|
+
negRisk?: boolean;
|
|
560
|
+
|
|
561
|
+
/** Limitless delegated signing: profile ID to trade on behalf of */
|
|
562
|
+
onBehalfOf?: number;
|
|
506
563
|
}
|
|
507
564
|
|
|
508
565
|
/** Alias matching the core MarketFetchParams name. */
|
package/pmxt/server-manager.ts
CHANGED
|
@@ -121,6 +121,13 @@ export class ServerManager {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Backwards-compatible alias for `isServerRunning()`.
|
|
126
|
+
*/
|
|
127
|
+
async isServerAlive(): Promise<boolean> {
|
|
128
|
+
return this.isServerRunning();
|
|
129
|
+
}
|
|
130
|
+
|
|
124
131
|
/**
|
|
125
132
|
* Wait for the server to be ready.
|
|
126
133
|
* Requires a lock file to be present to avoid falsely matching an unrelated
|
package/pmxt/signers.ts
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
/**
|
|
12
|
+
* EIP-712 typed data payload as accepted by ethers v6 / Web3 wallets.
|
|
13
|
+
* `EIP712Domain` is allowed inside `types` (and is the standard) but ethers
|
|
14
|
+
* strips it before signing — see {@link EthersSigner.signTypedData}.
|
|
15
|
+
*/
|
|
16
|
+
export interface TypedData {
|
|
17
|
+
types: Record<string, Array<{ name: string; type: string }>>;
|
|
18
|
+
primaryType: string;
|
|
19
|
+
domain: {
|
|
20
|
+
name: string;
|
|
21
|
+
version: string;
|
|
22
|
+
chainId: number;
|
|
23
|
+
verifyingContract: string;
|
|
24
|
+
};
|
|
25
|
+
message: Record<string, unknown>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Pluggable signer abstraction. Implement this to integrate hardware wallets
|
|
30
|
+
* or remote signing services. {@link EthersSigner} is the built-in
|
|
31
|
+
* private-key implementation.
|
|
32
|
+
*/
|
|
33
|
+
export interface Signer {
|
|
34
|
+
readonly address: string;
|
|
35
|
+
signTypedData(typedData: TypedData): Promise<string>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const ETHERS_INSTALL_HINT =
|
|
39
|
+
"hosted trading requires the optional 'ethers' peer dependency. Install with: npm install ethers";
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Built-in signer backed by an ethers `Wallet`.
|
|
43
|
+
*
|
|
44
|
+
* `ethers` is imported lazily — a clear, install-hint-bearing error is thrown
|
|
45
|
+
* if the peer dependency is missing.
|
|
46
|
+
*/
|
|
47
|
+
export class EthersSigner implements Signer {
|
|
48
|
+
private readonly _wallet: any; // ethers.Wallet
|
|
49
|
+
readonly address: string;
|
|
50
|
+
|
|
51
|
+
constructor(privateKey: string) {
|
|
52
|
+
let ethers: any;
|
|
53
|
+
try {
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
55
|
+
ethers = require("ethers");
|
|
56
|
+
} catch {
|
|
57
|
+
throw new Error(ETHERS_INSTALL_HINT);
|
|
58
|
+
}
|
|
59
|
+
this._wallet = new ethers.Wallet(privateKey);
|
|
60
|
+
this.address = this._wallet.address;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async signTypedData(typedData: TypedData): Promise<string> {
|
|
64
|
+
// ethers expects `types` WITHOUT the EIP712Domain entry — it derives
|
|
65
|
+
// the domain hash from the `domain` argument.
|
|
66
|
+
const types = { ...typedData.types };
|
|
67
|
+
delete types["EIP712Domain"];
|
|
68
|
+
const sig: string = await this._wallet.signTypedData(
|
|
69
|
+
typedData.domain,
|
|
70
|
+
types,
|
|
71
|
+
typedData.message,
|
|
72
|
+
);
|
|
73
|
+
return sig.startsWith("0x") ? sig : "0x" + sig;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Convenience factory: build a {@link Signer} from a raw private key.
|
|
79
|
+
*
|
|
80
|
+
* Currently always returns an {@link EthersSigner}. Async for forward
|
|
81
|
+
* compatibility with key-loaders that may need to await (e.g. keystore
|
|
82
|
+
* decryption).
|
|
83
|
+
*/
|
|
84
|
+
export async function signerFromPrivateKey(privateKey: string): Promise<Signer> {
|
|
85
|
+
return new EthersSigner(privateKey);
|
|
86
|
+
}
|
package/pmxt/ws-client.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { PmxtError } from "./errors.js";
|
|
11
|
+
import { logger } from "./logger.js";
|
|
11
12
|
|
|
12
13
|
const MAX_QUEUED_MESSAGES_PER_SUBSCRIPTION = 100_000;
|
|
13
14
|
|
|
@@ -144,7 +145,7 @@ export class SidecarWsClient {
|
|
|
144
145
|
this.dispatch(msg);
|
|
145
146
|
} catch (err) {
|
|
146
147
|
// Dispatch bug -- log and continue; don't kill the connection.
|
|
147
|
-
|
|
148
|
+
logger.error('[SidecarWsClient] dispatch error:', { err });
|
|
148
149
|
}
|
|
149
150
|
};
|
|
150
151
|
});
|