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.
- package/README.md +72 -10
- package/dist/esm/generated/src/models/Balance.d.ts +6 -0
- package/dist/esm/generated/src/models/Balance.js +2 -0
- package/dist/esm/generated/src/models/BuiltOrder.d.ts +6 -0
- package/dist/esm/generated/src/models/BuiltOrder.js +2 -0
- package/dist/esm/generated/src/models/ErrorDetail.d.ts +58 -2
- package/dist/esm/generated/src/models/ErrorDetail.js +37 -0
- package/dist/esm/generated/src/models/ExchangeOptions.d.ts +70 -0
- package/dist/esm/generated/src/models/ExchangeOptions.js +53 -0
- package/dist/esm/generated/src/models/MatchedMarketPair.d.ts +1 -1
- package/dist/esm/generated/src/models/Order.d.ts +18 -0
- package/dist/esm/generated/src/models/Order.js +6 -0
- 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/Position.d.ts +33 -9
- package/dist/esm/generated/src/models/Position.js +12 -12
- package/dist/esm/generated/src/models/UnifiedSeries.d.ts +4 -4
- package/dist/esm/generated/src/models/UserTrade.d.ts +18 -0
- package/dist/esm/generated/src/models/UserTrade.js +6 -0
- package/dist/esm/generated/src/models/index.d.ts +1 -0
- package/dist/esm/generated/src/models/index.js +1 -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/Balance.d.ts +6 -0
- package/dist/generated/src/models/Balance.js +2 -0
- package/dist/generated/src/models/BuiltOrder.d.ts +6 -0
- package/dist/generated/src/models/BuiltOrder.js +2 -0
- package/dist/generated/src/models/ErrorDetail.d.ts +58 -2
- package/dist/generated/src/models/ErrorDetail.js +38 -0
- package/dist/generated/src/models/ExchangeOptions.d.ts +70 -0
- package/dist/generated/src/models/ExchangeOptions.js +60 -0
- package/dist/generated/src/models/MatchedMarketPair.d.ts +1 -1
- package/dist/generated/src/models/Order.d.ts +18 -0
- package/dist/generated/src/models/Order.js +6 -0
- package/dist/generated/src/models/OrderLevel.d.ts +6 -0
- package/dist/generated/src/models/OrderLevel.js +2 -0
- package/dist/generated/src/models/Position.d.ts +33 -9
- package/dist/generated/src/models/Position.js +12 -12
- package/dist/generated/src/models/UnifiedSeries.d.ts +4 -4
- package/dist/generated/src/models/UserTrade.d.ts +18 -0
- package/dist/generated/src/models/UserTrade.js +6 -0
- package/dist/generated/src/models/index.d.ts +1 -0
- package/dist/generated/src/models/index.js +1 -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/.openapi-generator/FILES +2 -0
- package/generated/docs/Balance.md +2 -0
- package/generated/docs/BuiltOrder.md +2 -0
- package/generated/docs/ErrorDetail.md +9 -0
- package/generated/docs/ExchangeOptions.md +47 -0
- package/generated/docs/Order.md +6 -0
- package/generated/docs/OrderLevel.md +2 -0
- package/generated/docs/Position.md +9 -0
- package/generated/docs/UserTrade.md +6 -0
- package/generated/package.json +1 -1
- package/generated/src/models/Balance.ts +8 -0
- package/generated/src/models/BuiltOrder.ts +8 -0
- package/generated/src/models/ErrorDetail.ts +67 -2
- package/generated/src/models/ExchangeOptions.ts +115 -0
- package/generated/src/models/MatchedMarketPair.ts +1 -1
- package/generated/src/models/Order.ts +24 -0
- package/generated/src/models/OrderLevel.ts +8 -0
- package/generated/src/models/Position.ts +45 -17
- package/generated/src/models/UnifiedSeries.ts +4 -4
- package/generated/src/models/UserTrade.ts +24 -0
- package/generated/src/models/index.ts +1 -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
|
});
|
|
@@ -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
|
+
|
package/generated/docs/Order.md
CHANGED
|
@@ -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)
|
package/generated/package.json
CHANGED
|
@@ -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
|
|