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.
Files changed (79) hide show
  1. package/dist/esm/generated/src/models/OrderLevel.d.ts +6 -0
  2. package/dist/esm/generated/src/models/OrderLevel.js +2 -0
  3. package/dist/esm/generated/src/models/UnifiedMarket.d.ts +2 -2
  4. package/dist/esm/generated/src/models/UnifiedMarket.js +2 -4
  5. package/dist/esm/index.d.ts +2 -0
  6. package/dist/esm/index.js +1 -0
  7. package/dist/esm/pmxt/client.d.ts +106 -5
  8. package/dist/esm/pmxt/client.js +400 -6
  9. package/dist/esm/pmxt/constants.d.ts +11 -0
  10. package/dist/esm/pmxt/constants.js +13 -0
  11. package/dist/esm/pmxt/errors.d.ts +3 -0
  12. package/dist/esm/pmxt/errors.js +9 -0
  13. package/dist/esm/pmxt/escrow.d.ts +39 -0
  14. package/dist/esm/pmxt/escrow.js +78 -0
  15. package/dist/esm/pmxt/feed-client.d.ts +3 -0
  16. package/dist/esm/pmxt/feed-client.js +11 -2
  17. package/dist/esm/pmxt/hosted-errors.d.ts +84 -0
  18. package/dist/esm/pmxt/hosted-errors.js +186 -0
  19. package/dist/esm/pmxt/hosted-mappers.d.ts +45 -0
  20. package/dist/esm/pmxt/hosted-mappers.js +291 -0
  21. package/dist/esm/pmxt/hosted-routing.d.ts +69 -0
  22. package/dist/esm/pmxt/hosted-routing.js +119 -0
  23. package/dist/esm/pmxt/hosted-typed-data.d.ts +36 -0
  24. package/dist/esm/pmxt/hosted-typed-data.js +580 -0
  25. package/dist/esm/pmxt/models.d.ts +46 -8
  26. package/dist/esm/pmxt/server-manager.d.ts +4 -0
  27. package/dist/esm/pmxt/server-manager.js +6 -0
  28. package/dist/esm/pmxt/signers.d.ts +57 -0
  29. package/dist/esm/pmxt/signers.js +50 -0
  30. package/dist/esm/pmxt/ws-client.js +2 -1
  31. package/dist/generated/src/models/OrderLevel.d.ts +6 -0
  32. package/dist/generated/src/models/OrderLevel.js +2 -0
  33. package/dist/generated/src/models/UnifiedMarket.d.ts +2 -2
  34. package/dist/generated/src/models/UnifiedMarket.js +2 -4
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.js +1 -0
  37. package/dist/pmxt/client.d.ts +106 -5
  38. package/dist/pmxt/client.js +399 -5
  39. package/dist/pmxt/constants.d.ts +11 -0
  40. package/dist/pmxt/constants.js +14 -1
  41. package/dist/pmxt/errors.d.ts +3 -0
  42. package/dist/pmxt/errors.js +11 -1
  43. package/dist/pmxt/escrow.d.ts +39 -0
  44. package/dist/pmxt/escrow.js +82 -0
  45. package/dist/pmxt/feed-client.d.ts +3 -0
  46. package/dist/pmxt/feed-client.js +11 -2
  47. package/dist/pmxt/hosted-errors.d.ts +84 -0
  48. package/dist/pmxt/hosted-errors.js +201 -0
  49. package/dist/pmxt/hosted-mappers.d.ts +45 -0
  50. package/dist/pmxt/hosted-mappers.js +302 -0
  51. package/dist/pmxt/hosted-routing.d.ts +69 -0
  52. package/dist/pmxt/hosted-routing.js +126 -0
  53. package/dist/pmxt/hosted-typed-data.d.ts +36 -0
  54. package/dist/pmxt/hosted-typed-data.js +619 -0
  55. package/dist/pmxt/models.d.ts +46 -8
  56. package/dist/pmxt/server-manager.d.ts +4 -0
  57. package/dist/pmxt/server-manager.js +6 -0
  58. package/dist/pmxt/signers.d.ts +57 -0
  59. package/dist/pmxt/signers.js +55 -0
  60. package/dist/pmxt/ws-client.js +2 -1
  61. package/generated/docs/OrderLevel.md +2 -0
  62. package/generated/package.json +1 -1
  63. package/generated/src/models/OrderLevel.ts +8 -0
  64. package/generated/src/models/UnifiedMarket.ts +4 -5
  65. package/index.ts +1 -0
  66. package/package.json +11 -2
  67. package/pmxt/client.ts +495 -9
  68. package/pmxt/constants.ts +15 -0
  69. package/pmxt/errors.ts +11 -0
  70. package/pmxt/escrow.ts +93 -0
  71. package/pmxt/feed-client.ts +14 -2
  72. package/pmxt/hosted-errors.ts +216 -0
  73. package/pmxt/hosted-mappers.ts +312 -0
  74. package/pmxt/hosted-routing.ts +165 -0
  75. package/pmxt/hosted-typed-data.ts +767 -0
  76. package/pmxt/models.ts +65 -8
  77. package/pmxt/server-manager.ts +7 -0
  78. package/pmxt/signers.ts +86 -0
  79. 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: string;
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: number;
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: number;
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: number;
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. */
@@ -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
@@ -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
- console.error('[SidecarWsClient] dispatch error:', err);
148
+ logger.error('[SidecarWsClient] dispatch error:', { err });
148
149
  }
149
150
  };
150
151
  });