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
|
@@ -31,6 +31,7 @@ export function OrderLevelFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
31
31
|
return {
|
|
32
32
|
'price': json['price'],
|
|
33
33
|
'size': json['size'],
|
|
34
|
+
'orderCount': json['orderCount'] == null ? undefined : json['orderCount'],
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
export function OrderLevelToJSON(json) {
|
|
@@ -43,5 +44,6 @@ export function OrderLevelToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
43
44
|
return {
|
|
44
45
|
'price': value['price'],
|
|
45
46
|
'size': value['size'],
|
|
47
|
+
'orderCount': value['orderCount'],
|
|
46
48
|
};
|
|
47
49
|
}
|
|
@@ -53,11 +53,11 @@ export interface UnifiedMarket {
|
|
|
53
53
|
*/
|
|
54
54
|
outcomes: Array<MarketOutcome>;
|
|
55
55
|
/**
|
|
56
|
-
* When the market is scheduled to resolve.
|
|
56
|
+
* When the market is scheduled to resolve. Optional because some venues do not publish a cutoff for every market (e.g. Opinion categorical children) — emit `undefined` rather than coercing to epoch.
|
|
57
57
|
* @type {Date}
|
|
58
58
|
* @memberof UnifiedMarket
|
|
59
59
|
*/
|
|
60
|
-
resolutionDate
|
|
60
|
+
resolutionDate?: Date;
|
|
61
61
|
/**
|
|
62
62
|
* Trading volume over the past 24 hours (USD).
|
|
63
63
|
* @type {number}
|
|
@@ -24,8 +24,6 @@ export function instanceOfUnifiedMarket(value) {
|
|
|
24
24
|
return false;
|
|
25
25
|
if (!('outcomes' in value) || value['outcomes'] === undefined)
|
|
26
26
|
return false;
|
|
27
|
-
if (!('resolutionDate' in value) || value['resolutionDate'] === undefined)
|
|
28
|
-
return false;
|
|
29
27
|
if (!('volume24h' in value) || value['volume24h'] === undefined)
|
|
30
28
|
return false;
|
|
31
29
|
if (!('liquidity' in value) || value['liquidity'] === undefined)
|
|
@@ -48,7 +46,7 @@ export function UnifiedMarketFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
48
46
|
'description': json['description'],
|
|
49
47
|
'slug': json['slug'] == null ? undefined : json['slug'],
|
|
50
48
|
'outcomes': (json['outcomes'].map(MarketOutcomeFromJSON)),
|
|
51
|
-
'resolutionDate': (new Date(json['resolutionDate'])),
|
|
49
|
+
'resolutionDate': json['resolutionDate'] == null ? undefined : (new Date(json['resolutionDate'])),
|
|
52
50
|
'volume24h': json['volume24h'],
|
|
53
51
|
'volume': json['volume'] == null ? undefined : json['volume'],
|
|
54
52
|
'liquidity': json['liquidity'],
|
|
@@ -82,7 +80,7 @@ export function UnifiedMarketToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
82
80
|
'description': value['description'],
|
|
83
81
|
'slug': value['slug'],
|
|
84
82
|
'outcomes': (value['outcomes'].map(MarketOutcomeToJSON)),
|
|
85
|
-
'resolutionDate': value['resolutionDate'].toISOString(),
|
|
83
|
+
'resolutionDate': value['resolutionDate'] == null ? value['resolutionDate'] : value['resolutionDate'].toISOString(),
|
|
86
84
|
'volume24h': value['volume24h'],
|
|
87
85
|
'volume': value['volume'],
|
|
88
86
|
'liquidity': value['liquidity'],
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export { MarketList } from "./pmxt/models.js";
|
|
|
33
33
|
export type { UnifiedSeries } from "./pmxt/models.js";
|
|
34
34
|
export type * from "./pmxt/models.js";
|
|
35
35
|
export * from "./pmxt/errors.js";
|
|
36
|
+
export * from "./pmxt/hosted-errors.js";
|
|
36
37
|
declare function stopServer(): Promise<void>;
|
|
37
38
|
declare function restartServer(): Promise<void>;
|
|
38
39
|
/**
|
|
@@ -77,6 +78,7 @@ declare const pmxt: {
|
|
|
77
78
|
ValidationError: typeof errors.ValidationError;
|
|
78
79
|
NetworkError: typeof errors.NetworkError;
|
|
79
80
|
ExchangeNotAvailable: typeof errors.ExchangeNotAvailable;
|
|
81
|
+
NotSupported: typeof errors.NotSupported;
|
|
80
82
|
MarketList: typeof models.MarketList;
|
|
81
83
|
Exchange: typeof Exchange;
|
|
82
84
|
Polymarket: typeof Polymarket;
|
package/dist/esm/index.js
CHANGED
|
@@ -30,6 +30,7 @@ export { ServerManager } from "./pmxt/server-manager.js";
|
|
|
30
30
|
export { HOSTED_URL, LOCAL_URL, ENV, resolvePmxtBaseUrl } from "./pmxt/constants.js";
|
|
31
31
|
export { MarketList } from "./pmxt/models.js";
|
|
32
32
|
export * from "./pmxt/errors.js";
|
|
33
|
+
export * from "./pmxt/hosted-errors.js";
|
|
33
34
|
const defaultManager = new ServerManager();
|
|
34
35
|
// Flat aliases for the namespaced server commands. Kept as permanent,
|
|
35
36
|
// fully-supported shorthand — `pmxt.server.stop()` and `pmxt.stopServer()`
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
import { Configuration, DefaultApi, ExchangeCredentials } from "../generated/src/index.js";
|
|
8
8
|
import { Balance, BuiltOrder, CreateOrderParams, EventFetchParams, EventFilterCriteria, EventFilterFunction, ExecutionPriceResult, FetchOrderBookParams, MarketFetchParams, MarketFilterCriteria, MarketFilterFunction, MarketOutcome, MyTradesParams, Order, OrderBook, OrderHistoryParams, PaginatedMarketsResult, Position, SeriesFetchParams, PriceCandle, SubscribedAddressSnapshot, SubscriptionOption, Trade, UnifiedEvent, UnifiedMarket, UnifiedSeries, UserTrade, FirehoseEvent } from "./models.js";
|
|
9
9
|
import { ServerManager } from "./server-manager.js";
|
|
10
|
+
import type { Signer } from "./signers.js";
|
|
11
|
+
import { Escrow } from "./escrow.js";
|
|
10
12
|
/**
|
|
11
13
|
* Base exchange client options.
|
|
12
14
|
*/
|
|
@@ -49,6 +51,18 @@ export interface ExchangeOptions {
|
|
|
49
51
|
proxyAddress?: string;
|
|
50
52
|
/** Optional signature type (0=EOA, 1=Proxy) */
|
|
51
53
|
signatureType?: number;
|
|
54
|
+
/**
|
|
55
|
+
* EVM wallet address used for hosted reads/writes. Required for hosted
|
|
56
|
+
* endpoints that operate on a wallet (balances, positions, trades, open
|
|
57
|
+
* orders). When omitted, hosted reads raise {@link MissingWalletAddress}.
|
|
58
|
+
*/
|
|
59
|
+
walletAddress?: string;
|
|
60
|
+
/**
|
|
61
|
+
* External signer used for hosted writes. When `privateKey` is supplied
|
|
62
|
+
* without `signer` in hosted mode, an internal {@link EthersSigner} is
|
|
63
|
+
* built from it lazily.
|
|
64
|
+
*/
|
|
65
|
+
signer?: Signer;
|
|
52
66
|
}
|
|
53
67
|
/**
|
|
54
68
|
* Base class for prediction market exchanges.
|
|
@@ -58,10 +72,10 @@ export interface ExchangeOptions {
|
|
|
58
72
|
*/
|
|
59
73
|
export declare abstract class Exchange {
|
|
60
74
|
private static readonly OBDATA_WATCH_ALL_SOURCES;
|
|
61
|
-
|
|
75
|
+
exchangeName: string;
|
|
76
|
+
pmxtApiKey?: string;
|
|
62
77
|
protected apiKey?: string;
|
|
63
78
|
protected privateKey?: string;
|
|
64
|
-
protected pmxtApiKey?: string;
|
|
65
79
|
protected proxyAddress?: string;
|
|
66
80
|
protected signatureType?: number;
|
|
67
81
|
protected api: DefaultApi;
|
|
@@ -69,6 +83,12 @@ export declare abstract class Exchange {
|
|
|
69
83
|
protected serverManager: ServerManager;
|
|
70
84
|
protected initPromise: Promise<void>;
|
|
71
85
|
protected isHosted: boolean;
|
|
86
|
+
/** Wallet address used for hosted endpoints that operate on a wallet. */
|
|
87
|
+
walletAddress?: string;
|
|
88
|
+
/** External signer used for hosted writes. */
|
|
89
|
+
signer?: Signer;
|
|
90
|
+
/** Escrow namespace — populated in hosted mode for trading-allowlisted venues. */
|
|
91
|
+
escrow?: Escrow;
|
|
72
92
|
private _hostedAccount?;
|
|
73
93
|
private _accountDiscoveryPromise?;
|
|
74
94
|
/**
|
|
@@ -87,6 +107,18 @@ export declare abstract class Exchange {
|
|
|
87
107
|
protected handleResponse(response: any): any;
|
|
88
108
|
protected getCredentials(): ExchangeCredentials | undefined;
|
|
89
109
|
protected getAuthHeaders(): Record<string, string>;
|
|
110
|
+
/**
|
|
111
|
+
* Returns true when this client should dispatch trading methods through
|
|
112
|
+
* the hosted PMXT trading API (`pmxtApiKey` set AND venue is on the
|
|
113
|
+
* hosted-trading allowlist). Used to gate every Group A method.
|
|
114
|
+
*/
|
|
115
|
+
protected isHostedTradingMode(): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Require a configured signer for a hosted write. Returns the signer or
|
|
118
|
+
* throws {@link MissingWalletAddress} (consistent with the error class
|
|
119
|
+
* surfaced for missing wallet wiring on hosted writes).
|
|
120
|
+
*/
|
|
121
|
+
protected requireHostedSigner(): Signer;
|
|
90
122
|
/**
|
|
91
123
|
* Resolve the current sidecar base URL.
|
|
92
124
|
*
|
|
@@ -184,14 +216,37 @@ export declare abstract class Exchange {
|
|
|
184
216
|
fetchOrderBook(outcomeId: string | MarketOutcome, limit?: number, params?: FetchOrderBookParams): Promise<OrderBook | OrderBook[]>;
|
|
185
217
|
fetchOrderBooks(outcomeIds: (string | MarketOutcome)[]): Promise<Record<string, OrderBook>>;
|
|
186
218
|
submitOrder(built: BuiltOrder): Promise<Order>;
|
|
219
|
+
/**
|
|
220
|
+
* Hosted-mode submitOrder: validate the stored build response, sign the
|
|
221
|
+
* typed_data (and pull_typed_data for Opinion cross-chain sells), then
|
|
222
|
+
* POST to `/v0/trade/submit-order`.
|
|
223
|
+
*/
|
|
224
|
+
private _hostedSubmitOrder;
|
|
225
|
+
/**
|
|
226
|
+
* Resolve the per-(venue, side, pull) typed-data schema route used by
|
|
227
|
+
* `validateTypedData` / `validateEconomics`. Returns undefined for the
|
|
228
|
+
* pull leg when a venue/side combo doesn't have one.
|
|
229
|
+
*/
|
|
230
|
+
private _hostedTypedDataRoute;
|
|
231
|
+
private _hostedCancelTypedDataRoute;
|
|
187
232
|
cancelOrder(orderId: string): Promise<Order>;
|
|
233
|
+
/**
|
|
234
|
+
* Hosted-mode cancelOrder: build the cancel typed_data on the server,
|
|
235
|
+
* validate + sign (dual-sign for Opinion cross-chain), then submit.
|
|
236
|
+
*/
|
|
237
|
+
private _hostedCancelOrder;
|
|
188
238
|
fetchOrder(orderId: string): Promise<Order>;
|
|
239
|
+
private _hostedFetchOrder;
|
|
189
240
|
fetchOpenOrders(marketId?: string): Promise<Order[]>;
|
|
241
|
+
private _hostedFetchOpenOrders;
|
|
190
242
|
fetchMyTrades(params?: MyTradesParams): Promise<UserTrade[]>;
|
|
243
|
+
private _hostedFetchMyTrades;
|
|
191
244
|
fetchClosedOrders(params?: OrderHistoryParams): Promise<Order[]>;
|
|
192
245
|
fetchAllOrders(params?: OrderHistoryParams): Promise<Order[]>;
|
|
193
246
|
fetchPositions(address?: string): Promise<Position[]>;
|
|
247
|
+
private _hostedFetchPositions;
|
|
194
248
|
fetchBalance(address?: string): Promise<Balance[]>;
|
|
249
|
+
private _hostedFetchBalance;
|
|
195
250
|
unwatchOrderBook(outcomeId: string | MarketOutcome): Promise<void>;
|
|
196
251
|
unwatchAddress(address: string): Promise<void>;
|
|
197
252
|
close(): Promise<void>;
|
|
@@ -388,6 +443,23 @@ export declare abstract class Exchange {
|
|
|
388
443
|
}): Promise<BuiltOrder>;
|
|
389
444
|
private _discoverHostedAccount;
|
|
390
445
|
private _executeSorOrder;
|
|
446
|
+
/**
|
|
447
|
+
* Hosted-mode buildOrder: validate inputs locally, then POST to the
|
|
448
|
+
* trading service's `build-order` endpoint and return a BuiltOrder
|
|
449
|
+
* that carries the original build_request for Layer-2 economic checks
|
|
450
|
+
* at submit time.
|
|
451
|
+
*/
|
|
452
|
+
private _hostedBuildOrder;
|
|
453
|
+
/**
|
|
454
|
+
* Hosted-mode createOrder: build → sign → submit single-call wrapper.
|
|
455
|
+
*/
|
|
456
|
+
private _hostedCreateOrder;
|
|
457
|
+
/**
|
|
458
|
+
* Construct the hosted build-order request body and validate inputs
|
|
459
|
+
* locally per the v0 contract (denom/side compatibility, > 6-decimal
|
|
460
|
+
* precision rejected via {@link to6dec}).
|
|
461
|
+
*/
|
|
462
|
+
private _hostedBuildOrderBody;
|
|
391
463
|
/**
|
|
392
464
|
* @example
|
|
393
465
|
* ```typescript
|
|
@@ -401,7 +473,9 @@ export declare abstract class Exchange {
|
|
|
401
473
|
* });
|
|
402
474
|
* ```
|
|
403
475
|
*/
|
|
404
|
-
createOrder(params:
|
|
476
|
+
createOrder(params: CreateOrderParams & {
|
|
477
|
+
outcome?: MarketOutcome;
|
|
478
|
+
}): Promise<Order>;
|
|
405
479
|
/**
|
|
406
480
|
* Calculate the average execution price for a given amount by walking the order book.
|
|
407
481
|
* Uses the sidecar server for calculation to ensure consistency.
|
|
@@ -721,17 +795,44 @@ export declare class GeminiTitan extends Exchange {
|
|
|
721
795
|
export declare class Hyperliquid extends Exchange {
|
|
722
796
|
constructor(options?: ExchangeOptions);
|
|
723
797
|
}
|
|
798
|
+
/**
|
|
799
|
+
* Options for the SuiBets exchange client.
|
|
800
|
+
*/
|
|
801
|
+
export interface SuiBetsOptions extends ExchangeOptions {
|
|
802
|
+
/**
|
|
803
|
+
* Sui wallet address (0x + 64 hex chars).
|
|
804
|
+
* Required for fetchPositions(). Can also be set via the
|
|
805
|
+
* SUIBETS_WALLET_ADDRESS environment variable on the sidecar.
|
|
806
|
+
*/
|
|
807
|
+
walletAddress?: string;
|
|
808
|
+
}
|
|
724
809
|
/**
|
|
725
810
|
* SuiBets exchange client.
|
|
726
811
|
*
|
|
812
|
+
* SuiBets is a decentralised P2P sports betting exchange on Sui mainnet.
|
|
813
|
+
* No house edge. 2% platform fee.
|
|
814
|
+
* Contract: 0xd51fe151bec66a15b086a67c1cfce9b05759ddac1d73fcd3e14324ad202b2e59
|
|
815
|
+
*
|
|
727
816
|
* @example
|
|
728
817
|
* ```typescript
|
|
729
818
|
* const suibets = new SuiBets();
|
|
730
|
-
* const markets = await suibets.fetchMarkets();
|
|
819
|
+
* const markets = await suibets.fetchMarkets({ limit: 20 });
|
|
820
|
+
*
|
|
821
|
+
* // With wallet for fetchPositions()
|
|
822
|
+
* const me = new SuiBets({ walletAddress: '0xabc...' });
|
|
823
|
+
* const positions = await me.fetchPositions();
|
|
731
824
|
* ```
|
|
732
825
|
*/
|
|
733
826
|
export declare class SuiBets extends Exchange {
|
|
734
|
-
|
|
827
|
+
private readonly _walletAddress?;
|
|
828
|
+
constructor(options?: SuiBetsOptions);
|
|
829
|
+
/**
|
|
830
|
+
* Includes walletAddress in the credentials sent to the sidecar so
|
|
831
|
+
* that fetchPositions() can reach the /api/p2p/my endpoint.
|
|
832
|
+
* Falls back to SUIBETS_WALLET_ADDRESS env var on the sidecar side
|
|
833
|
+
* when walletAddress is not set here.
|
|
834
|
+
*/
|
|
835
|
+
protected getCredentials(): ExchangeCredentials | undefined;
|
|
735
836
|
}
|
|
736
837
|
/**
|
|
737
838
|
* Mock exchange client.
|