pmxtjs 2.48.6 → 2.49.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.
Files changed (129) hide show
  1. package/README.md +72 -10
  2. package/dist/esm/generated/src/models/Balance.d.ts +6 -0
  3. package/dist/esm/generated/src/models/Balance.js +2 -0
  4. package/dist/esm/generated/src/models/BuiltOrder.d.ts +6 -0
  5. package/dist/esm/generated/src/models/BuiltOrder.js +2 -0
  6. package/dist/esm/generated/src/models/ErrorDetail.d.ts +58 -2
  7. package/dist/esm/generated/src/models/ErrorDetail.js +37 -0
  8. package/dist/esm/generated/src/models/ExchangeOptions.d.ts +70 -0
  9. package/dist/esm/generated/src/models/ExchangeOptions.js +53 -0
  10. package/dist/esm/generated/src/models/MatchedMarketPair.d.ts +1 -1
  11. package/dist/esm/generated/src/models/Order.d.ts +18 -0
  12. package/dist/esm/generated/src/models/Order.js +6 -0
  13. package/dist/esm/generated/src/models/OrderLevel.d.ts +6 -0
  14. package/dist/esm/generated/src/models/OrderLevel.js +2 -0
  15. package/dist/esm/generated/src/models/Position.d.ts +33 -9
  16. package/dist/esm/generated/src/models/Position.js +12 -12
  17. package/dist/esm/generated/src/models/UnifiedSeries.d.ts +4 -4
  18. package/dist/esm/generated/src/models/UserTrade.d.ts +18 -0
  19. package/dist/esm/generated/src/models/UserTrade.js +6 -0
  20. package/dist/esm/generated/src/models/index.d.ts +1 -0
  21. package/dist/esm/generated/src/models/index.js +1 -0
  22. package/dist/esm/index.d.ts +2 -0
  23. package/dist/esm/index.js +1 -0
  24. package/dist/esm/pmxt/client.d.ts +106 -5
  25. package/dist/esm/pmxt/client.js +400 -6
  26. package/dist/esm/pmxt/constants.d.ts +11 -0
  27. package/dist/esm/pmxt/constants.js +13 -0
  28. package/dist/esm/pmxt/errors.d.ts +3 -0
  29. package/dist/esm/pmxt/errors.js +9 -0
  30. package/dist/esm/pmxt/escrow.d.ts +39 -0
  31. package/dist/esm/pmxt/escrow.js +78 -0
  32. package/dist/esm/pmxt/feed-client.d.ts +3 -0
  33. package/dist/esm/pmxt/feed-client.js +11 -2
  34. package/dist/esm/pmxt/hosted-errors.d.ts +84 -0
  35. package/dist/esm/pmxt/hosted-errors.js +186 -0
  36. package/dist/esm/pmxt/hosted-mappers.d.ts +45 -0
  37. package/dist/esm/pmxt/hosted-mappers.js +291 -0
  38. package/dist/esm/pmxt/hosted-routing.d.ts +69 -0
  39. package/dist/esm/pmxt/hosted-routing.js +119 -0
  40. package/dist/esm/pmxt/hosted-typed-data.d.ts +36 -0
  41. package/dist/esm/pmxt/hosted-typed-data.js +580 -0
  42. package/dist/esm/pmxt/models.d.ts +46 -8
  43. package/dist/esm/pmxt/server-manager.d.ts +4 -0
  44. package/dist/esm/pmxt/server-manager.js +6 -0
  45. package/dist/esm/pmxt/signers.d.ts +57 -0
  46. package/dist/esm/pmxt/signers.js +50 -0
  47. package/dist/esm/pmxt/ws-client.js +2 -1
  48. package/dist/generated/src/models/Balance.d.ts +6 -0
  49. package/dist/generated/src/models/Balance.js +2 -0
  50. package/dist/generated/src/models/BuiltOrder.d.ts +6 -0
  51. package/dist/generated/src/models/BuiltOrder.js +2 -0
  52. package/dist/generated/src/models/ErrorDetail.d.ts +58 -2
  53. package/dist/generated/src/models/ErrorDetail.js +38 -0
  54. package/dist/generated/src/models/ExchangeOptions.d.ts +70 -0
  55. package/dist/generated/src/models/ExchangeOptions.js +60 -0
  56. package/dist/generated/src/models/MatchedMarketPair.d.ts +1 -1
  57. package/dist/generated/src/models/Order.d.ts +18 -0
  58. package/dist/generated/src/models/Order.js +6 -0
  59. package/dist/generated/src/models/OrderLevel.d.ts +6 -0
  60. package/dist/generated/src/models/OrderLevel.js +2 -0
  61. package/dist/generated/src/models/Position.d.ts +33 -9
  62. package/dist/generated/src/models/Position.js +12 -12
  63. package/dist/generated/src/models/UnifiedSeries.d.ts +4 -4
  64. package/dist/generated/src/models/UserTrade.d.ts +18 -0
  65. package/dist/generated/src/models/UserTrade.js +6 -0
  66. package/dist/generated/src/models/index.d.ts +1 -0
  67. package/dist/generated/src/models/index.js +1 -0
  68. package/dist/index.d.ts +2 -0
  69. package/dist/index.js +1 -0
  70. package/dist/pmxt/client.d.ts +106 -5
  71. package/dist/pmxt/client.js +399 -5
  72. package/dist/pmxt/constants.d.ts +11 -0
  73. package/dist/pmxt/constants.js +14 -1
  74. package/dist/pmxt/errors.d.ts +3 -0
  75. package/dist/pmxt/errors.js +11 -1
  76. package/dist/pmxt/escrow.d.ts +39 -0
  77. package/dist/pmxt/escrow.js +82 -0
  78. package/dist/pmxt/feed-client.d.ts +3 -0
  79. package/dist/pmxt/feed-client.js +11 -2
  80. package/dist/pmxt/hosted-errors.d.ts +84 -0
  81. package/dist/pmxt/hosted-errors.js +201 -0
  82. package/dist/pmxt/hosted-mappers.d.ts +45 -0
  83. package/dist/pmxt/hosted-mappers.js +302 -0
  84. package/dist/pmxt/hosted-routing.d.ts +69 -0
  85. package/dist/pmxt/hosted-routing.js +126 -0
  86. package/dist/pmxt/hosted-typed-data.d.ts +36 -0
  87. package/dist/pmxt/hosted-typed-data.js +619 -0
  88. package/dist/pmxt/models.d.ts +46 -8
  89. package/dist/pmxt/server-manager.d.ts +4 -0
  90. package/dist/pmxt/server-manager.js +6 -0
  91. package/dist/pmxt/signers.d.ts +57 -0
  92. package/dist/pmxt/signers.js +55 -0
  93. package/dist/pmxt/ws-client.js +2 -1
  94. package/generated/.openapi-generator/FILES +2 -0
  95. package/generated/docs/Balance.md +2 -0
  96. package/generated/docs/BuiltOrder.md +2 -0
  97. package/generated/docs/ErrorDetail.md +9 -0
  98. package/generated/docs/ExchangeOptions.md +47 -0
  99. package/generated/docs/Order.md +6 -0
  100. package/generated/docs/OrderLevel.md +2 -0
  101. package/generated/docs/Position.md +9 -0
  102. package/generated/docs/UserTrade.md +6 -0
  103. package/generated/package.json +1 -1
  104. package/generated/src/models/Balance.ts +8 -0
  105. package/generated/src/models/BuiltOrder.ts +8 -0
  106. package/generated/src/models/ErrorDetail.ts +67 -2
  107. package/generated/src/models/ExchangeOptions.ts +115 -0
  108. package/generated/src/models/MatchedMarketPair.ts +1 -1
  109. package/generated/src/models/Order.ts +24 -0
  110. package/generated/src/models/OrderLevel.ts +8 -0
  111. package/generated/src/models/Position.ts +45 -17
  112. package/generated/src/models/UnifiedSeries.ts +4 -4
  113. package/generated/src/models/UserTrade.ts +24 -0
  114. package/generated/src/models/index.ts +1 -0
  115. package/index.ts +1 -0
  116. package/package.json +11 -2
  117. package/pmxt/client.ts +495 -9
  118. package/pmxt/constants.ts +15 -0
  119. package/pmxt/errors.ts +11 -0
  120. package/pmxt/escrow.ts +93 -0
  121. package/pmxt/feed-client.ts +14 -2
  122. package/pmxt/hosted-errors.ts +216 -0
  123. package/pmxt/hosted-mappers.ts +312 -0
  124. package/pmxt/hosted-routing.ts +165 -0
  125. package/pmxt/hosted-typed-data.ts +767 -0
  126. package/pmxt/models.ts +65 -8
  127. package/pmxt/server-manager.ts +7 -0
  128. package/pmxt/signers.ts +86 -0
  129. package/pmxt/ws-client.ts +2 -1
@@ -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: string;
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: number;
248
- /** Current market price */
249
- currentPrice: number;
250
- /** Unrealized profit/loss */
251
- unrealizedPnL: number;
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
+ }
@@ -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
- console.error('[SidecarWsClient] dispatch error:', err);
124
+ logger_js_1.logger.error('[SidecarWsClient] dispatch error:', { err });
124
125
  }
125
126
  };
126
127
  });
@@ -27,6 +27,7 @@ docs/EventFilterCriteriaTotalVolume.md
27
27
  docs/EventMatchResult.md
28
28
  docs/ExchangeCredentials.md
29
29
  docs/ExchangeCredentialsSignatureType.md
30
+ docs/ExchangeOptions.md
30
31
  docs/ExecutionPriceResult.md
31
32
  docs/FeedFetchHistoricalPrices200Response.md
32
33
  docs/FeedFetchOHLCV200Response.md
@@ -136,6 +137,7 @@ src/models/EventFilterCriteriaTotalVolume.ts
136
137
  src/models/EventMatchResult.ts
137
138
  src/models/ExchangeCredentials.ts
138
139
  src/models/ExchangeCredentialsSignatureType.ts
140
+ src/models/ExchangeOptions.ts
139
141
  src/models/ExecutionPriceResult.ts
140
142
  src/models/FeedFetchHistoricalPrices200Response.ts
141
143
  src/models/FeedFetchOHLCV200Response.ts
@@ -10,6 +10,7 @@ Name | Type
10
10
  `total` | number
11
11
  `available` | number
12
12
  `locked` | number
13
+ `venue` | string
13
14
 
14
15
  ## Example
15
16
 
@@ -22,6 +23,7 @@ const example = {
22
23
  "total": null,
23
24
  "available": null,
24
25
  "locked": null,
26
+ "venue": null,
25
27
  } satisfies Balance
26
28
 
27
29
  console.log(example)
@@ -11,6 +11,7 @@ Name | Type
11
11
  `signedOrder` | { [key: string]: any; }
12
12
  `tx` | [BuiltOrderTx](BuiltOrderTx.md)
13
13
  `raw` | any
14
+ `expiry` | number
14
15
 
15
16
  ## Example
16
17
 
@@ -24,6 +25,7 @@ const example = {
24
25
  "signedOrder": null,
25
26
  "tx": null,
26
27
  "raw": null,
28
+ "expiry": null,
27
29
  } satisfies BuiltOrder
28
30
 
29
31
  console.log(example)
@@ -1,12 +1,17 @@
1
1
 
2
2
  # ErrorDetail
3
3
 
4
+ Structured error envelope returned inside `BaseResponse.error` and `ErrorResponse.error`. Hosted-mode endpoints populate `code`, `retryable`, and optionally `exchange` / `detail`; legacy local-mode endpoints may still return only `message`.
4
5
 
5
6
  ## Properties
6
7
 
7
8
  Name | Type
8
9
  ------------ | -------------
9
10
  `message` | string
11
+ `code` | string
12
+ `retryable` | boolean
13
+ `exchange` | string
14
+ `detail` | { [key: string]: any; }
10
15
 
11
16
  ## Example
12
17
 
@@ -16,6 +21,10 @@ import type { ErrorDetail } from 'pmxtjs'
16
21
  // TODO: Update the object below with actual values
17
22
  const example = {
18
23
  "message": null,
24
+ "code": null,
25
+ "retryable": null,
26
+ "exchange": null,
27
+ "detail": null,
19
28
  } satisfies ErrorDetail
20
29
 
21
30
  console.log(example)
@@ -0,0 +1,47 @@
1
+
2
+ # ExchangeOptions
3
+
4
+ Constructor-level options for venue clients (Polymarket, Kalshi, Opinion, etc.). Hosted mode is the default when pmxtApiKey is set; otherwise the SDK runs against a local sidecar with venue credentials.
5
+
6
+ ## Properties
7
+
8
+ Name | Type
9
+ ------------ | -------------
10
+ `pmxtApiKey` | string
11
+ `walletAddress` | string
12
+ `signer` | object
13
+ `privateKey` | string
14
+ `baseUrl` | string
15
+ `apiKey` | string
16
+ `autoStartServer` | boolean
17
+
18
+ ## Example
19
+
20
+ ```typescript
21
+ import type { ExchangeOptions } from 'pmxtjs'
22
+
23
+ // TODO: Update the object below with actual values
24
+ const example = {
25
+ "pmxtApiKey": null,
26
+ "walletAddress": null,
27
+ "signer": null,
28
+ "privateKey": null,
29
+ "baseUrl": null,
30
+ "apiKey": null,
31
+ "autoStartServer": null,
32
+ } satisfies ExchangeOptions
33
+
34
+ console.log(example)
35
+
36
+ // Convert the instance to a JSON string
37
+ const exampleJSON: string = JSON.stringify(example)
38
+ console.log(exampleJSON)
39
+
40
+ // Parse the JSON string back to an object
41
+ const exampleParsed = JSON.parse(exampleJSON) as ExchangeOptions
42
+ console.log(exampleParsed)
43
+ ```
44
+
45
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
46
+
47
+
@@ -20,6 +20,9 @@ Name | Type
20
20
  `timestamp` | number
21
21
  `fee` | number
22
22
  `feeRateBps` | number
23
+ `txHash` | string
24
+ `chain` | string
25
+ `blockNumber` | number
23
26
 
24
27
  ## Example
25
28
 
@@ -42,6 +45,9 @@ const example = {
42
45
  "timestamp": null,
43
46
  "fee": null,
44
47
  "feeRateBps": null,
48
+ "txHash": null,
49
+ "chain": null,
50
+ "blockNumber": null,
45
51
  } satisfies Order
46
52
 
47
53
  console.log(example)
@@ -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)
@@ -1,6 +1,7 @@
1
1
 
2
2
  # Position
3
3
 
4
+ A current position in a market. In hosted mode, `outcomeLabel`, `entryPrice`, `currentPrice` and `unrealizedPnL` may be null when the server cannot derive them (e.g. `with_mtm=false` or no fill history). Venue-direct callers continue to populate every field.
4
5
 
5
6
  ## Properties
6
7
 
@@ -12,8 +13,12 @@ Name | Type
12
13
  `size` | number
13
14
  `entryPrice` | number
14
15
  `currentPrice` | number
16
+ `currentValue` | number
15
17
  `unrealizedPnL` | number
16
18
  `realizedPnL` | number
19
+ `txHash` | string
20
+ `chain` | string
21
+ `blockNumber` | number
17
22
 
18
23
  ## Example
19
24
 
@@ -28,8 +33,12 @@ const example = {
28
33
  "size": null,
29
34
  "entryPrice": null,
30
35
  "currentPrice": null,
36
+ "currentValue": null,
31
37
  "unrealizedPnL": null,
32
38
  "realizedPnL": null,
39
+ "txHash": null,
40
+ "chain": null,
41
+ "blockNumber": null,
33
42
  } satisfies Position
34
43
 
35
44
  console.log(example)
@@ -13,6 +13,9 @@ Name | Type
13
13
  `side` | string
14
14
  `outcomeId` | string
15
15
  `orderId` | string
16
+ `txHash` | string
17
+ `chain` | string
18
+ `blockNumber` | number
16
19
 
17
20
  ## Example
18
21
 
@@ -28,6 +31,9 @@ const example = {
28
31
  "side": null,
29
32
  "outcomeId": null,
30
33
  "orderId": null,
34
+ "txHash": null,
35
+ "chain": null,
36
+ "blockNumber": null,
31
37
  } satisfies UserTrade
32
38
 
33
39
  console.log(example)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmxtjs",
3
- "version": "2.48.6",
3
+ "version": "2.49.1",
4
4
  "description": "OpenAPI client for pmxtjs",
5
5
  "author": "OpenAPI-Generator",
6
6
  "repository": {
@@ -43,6 +43,12 @@ export interface Balance {
43
43
  * @memberof Balance
44
44
  */
45
45
  locked: number;
46
+ /**
47
+ * Hosted-mode: which venue this balance belongs to in a multi-venue response. Null when the balance is venue-agnostic.
48
+ * @type {string}
49
+ * @memberof Balance
50
+ */
51
+ venue?: string | null;
46
52
  }
47
53
 
48
54
  /**
@@ -70,6 +76,7 @@ export function BalanceFromJSONTyped(json: any, ignoreDiscriminator: boolean): B
70
76
  'total': json['total'],
71
77
  'available': json['available'],
72
78
  'locked': json['locked'],
79
+ 'venue': json['venue'] == null ? undefined : json['venue'],
73
80
  };
74
81
  }
75
82
 
@@ -88,6 +95,7 @@ export function BalanceToJSONTyped(value?: Balance | null, ignoreDiscriminator:
88
95
  'total': value['total'],
89
96
  'available': value['available'],
90
97
  'locked': value['locked'],
98
+ 'venue': value['venue'],
91
99
  };
92
100
  }
93
101
 
@@ -64,6 +64,12 @@ export interface BuiltOrder {
64
64
  * @memberof BuiltOrder
65
65
  */
66
66
  raw: any | null;
67
+ /**
68
+ * Unix epoch (ms) when this built order expires server-side. Submitting after expiry returns BUILT_ORDER_EXPIRED.
69
+ * @type {number}
70
+ * @memberof BuiltOrder
71
+ */
72
+ expiry?: number | null;
67
73
  }
68
74
 
69
75
  /**
@@ -91,6 +97,7 @@ export function BuiltOrderFromJSONTyped(json: any, ignoreDiscriminator: boolean)
91
97
  'signedOrder': json['signedOrder'] == null ? undefined : json['signedOrder'],
92
98
  'tx': json['tx'] == null ? undefined : BuiltOrderTxFromJSON(json['tx']),
93
99
  'raw': json['raw'],
100
+ 'expiry': json['expiry'] == null ? undefined : json['expiry'],
94
101
  };
95
102
  }
96
103
 
@@ -110,6 +117,7 @@ export function BuiltOrderToJSONTyped(value?: BuiltOrder | null, ignoreDiscrimin
110
117
  'signedOrder': value['signedOrder'],
111
118
  'tx': BuiltOrderTxToJSON(value['tx']),
112
119
  'raw': value['raw'],
120
+ 'expiry': value['expiry'],
113
121
  };
114
122
  }
115
123
 
@@ -14,19 +14,76 @@
14
14
 
15
15
  import { mapValues } from '../runtime';
16
16
  /**
17
- *
17
+ * Structured error envelope returned inside `BaseResponse.error` and `ErrorResponse.error`. Hosted-mode endpoints populate `code`, `retryable`, and optionally `exchange` / `detail`; legacy local-mode endpoints may still return only `message`.
18
18
  * @export
19
19
  * @interface ErrorDetail
20
20
  */
21
21
  export interface ErrorDetail {
22
22
  /**
23
- *
23
+ * Human-readable error message.
24
24
  * @type {string}
25
25
  * @memberof ErrorDetail
26
26
  */
27
27
  message?: string;
28
+ /**
29
+ * Stable machine-readable error code. Hosted-mode errors use the `HostedTradingError` family (e.g. `INSUFFICIENT_ESCROW_BALANCE`, `BUILT_ORDER_EXPIRED`); pre-hosted local errors use the legacy family (e.g. `BAD_REQUEST`, `NOT_FOUND`).
30
+ * @type {string}
31
+ * @memberof ErrorDetail
32
+ */
33
+ code?: ErrorDetailCodeEnum;
34
+ /**
35
+ * Hint for clients: when `true`, the same request may succeed on retry (e.g. transient network or rate-limit conditions); when `false`, the caller should not retry without modifying the request.
36
+ * @type {boolean}
37
+ * @memberof ErrorDetail
38
+ */
39
+ retryable?: boolean;
40
+ /**
41
+ * Venue the error originated from, when known (e.g. 'polymarket', 'kalshi').
42
+ * @type {string}
43
+ * @memberof ErrorDetail
44
+ */
45
+ exchange?: string | null;
46
+ /**
47
+ * Free-form hosted-mode detail blob. Shape depends on `code` — e.g. for `INSUFFICIENT_ESCROW_BALANCE` it may include `{ requested, available }`; for `ORDER_SIZE_TOO_SMALL` it may include `{ min }`; for `BUILT_ORDER_EXPIRED` it may include `{ expiry }`.
48
+ * @type {{ [key: string]: any; }}
49
+ * @memberof ErrorDetail
50
+ */
51
+ detail?: { [key: string]: any; } | null;
28
52
  }
29
53
 
54
+
55
+ /**
56
+ * @export
57
+ */
58
+ export const ErrorDetailCodeEnum = {
59
+ HostedTradingError: 'HOSTED_TRADING_ERROR',
60
+ InsufficientEscrowBalance: 'INSUFFICIENT_ESCROW_BALANCE',
61
+ OrderSizeTooSmall: 'ORDER_SIZE_TOO_SMALL',
62
+ InvalidApiKey: 'INVALID_API_KEY',
63
+ OutcomeNotFound: 'OUTCOME_NOT_FOUND',
64
+ CatalogUnavailable: 'CATALOG_UNAVAILABLE',
65
+ BuiltOrderExpired: 'BUILT_ORDER_EXPIRED',
66
+ InvalidSignature: 'INVALID_SIGNATURE',
67
+ NoLiquidity: 'NO_LIQUIDITY',
68
+ MissingWalletAddress: 'MISSING_WALLET_ADDRESS',
69
+ BadRequest: 'BAD_REQUEST',
70
+ AuthenticationError: 'AUTHENTICATION_ERROR',
71
+ PermissionDenied: 'PERMISSION_DENIED',
72
+ NotFound: 'NOT_FOUND',
73
+ OrderNotFound: 'ORDER_NOT_FOUND',
74
+ MarketNotFound: 'MARKET_NOT_FOUND',
75
+ EventNotFound: 'EVENT_NOT_FOUND',
76
+ RateLimitExceeded: 'RATE_LIMIT_EXCEEDED',
77
+ InvalidOrder: 'INVALID_ORDER',
78
+ InsufficientFunds: 'INSUFFICIENT_FUNDS',
79
+ ValidationError: 'VALIDATION_ERROR',
80
+ NetworkError: 'NETWORK_ERROR',
81
+ ExchangeNotAvailable: 'EXCHANGE_NOT_AVAILABLE',
82
+ NotSupported: 'NOT_SUPPORTED'
83
+ } as const;
84
+ export type ErrorDetailCodeEnum = typeof ErrorDetailCodeEnum[keyof typeof ErrorDetailCodeEnum];
85
+
86
+
30
87
  /**
31
88
  * Check if a given object implements the ErrorDetail interface.
32
89
  */
@@ -45,6 +102,10 @@ export function ErrorDetailFromJSONTyped(json: any, ignoreDiscriminator: boolean
45
102
  return {
46
103
 
47
104
  'message': json['message'] == null ? undefined : json['message'],
105
+ 'code': json['code'] == null ? undefined : json['code'],
106
+ 'retryable': json['retryable'] == null ? undefined : json['retryable'],
107
+ 'exchange': json['exchange'] == null ? undefined : json['exchange'],
108
+ 'detail': json['detail'] == null ? undefined : json['detail'],
48
109
  };
49
110
  }
50
111
 
@@ -60,6 +121,10 @@ export function ErrorDetailToJSONTyped(value?: ErrorDetail | null, ignoreDiscrim
60
121
  return {
61
122
 
62
123
  'message': value['message'],
124
+ 'code': value['code'],
125
+ 'retryable': value['retryable'],
126
+ 'exchange': value['exchange'],
127
+ 'detail': value['detail'],
63
128
  };
64
129
  }
65
130