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
@@ -41,13 +41,13 @@ export interface UnifiedSeries {
41
41
  */
42
42
  title: string;
43
43
  /**
44
- *
44
+ * Long-form series description.
45
45
  * @type {string}
46
46
  * @memberof UnifiedSeries
47
47
  */
48
48
  description?: string | null;
49
49
  /**
50
- *
50
+ * Recurrence cadence the venue reports ('daily', 'weekly', 'annual', ...).
51
51
  * @type {string}
52
52
  * @memberof UnifiedSeries
53
53
  */
@@ -59,13 +59,13 @@ export interface UnifiedSeries {
59
59
  */
60
60
  events?: Array<UnifiedEvent>;
61
61
  /**
62
- *
62
+ * Canonical venue URL for the series.
63
63
  * @type {string}
64
64
  * @memberof UnifiedSeries
65
65
  */
66
66
  url?: string | null;
67
67
  /**
68
- *
68
+ * Venue-hosted image.
69
69
  * @type {string}
70
70
  * @memberof UnifiedSeries
71
71
  */
@@ -57,6 +57,24 @@ export interface UserTrade {
57
57
  * @memberof UserTrade
58
58
  */
59
59
  orderId?: string;
60
+ /**
61
+ * Populated in hosted mode after on-chain settlement; null for local-mode and for non-on-chain venues.
62
+ * @type {string}
63
+ * @memberof UserTrade
64
+ */
65
+ txHash?: string | null;
66
+ /**
67
+ * Populated in hosted mode after on-chain settlement; null for local-mode and for non-on-chain venues.
68
+ * @type {string}
69
+ * @memberof UserTrade
70
+ */
71
+ chain?: string | null;
72
+ /**
73
+ * Populated in hosted mode after on-chain settlement; null for local-mode and for non-on-chain venues.
74
+ * @type {number}
75
+ * @memberof UserTrade
76
+ */
77
+ blockNumber?: number | null;
60
78
  }
61
79
  /**
62
80
  * @export
@@ -50,6 +50,9 @@ export function UserTradeFromJSONTyped(json, ignoreDiscriminator) {
50
50
  'side': json['side'],
51
51
  'outcomeId': json['outcomeId'] == null ? undefined : json['outcomeId'],
52
52
  'orderId': json['orderId'] == null ? undefined : json['orderId'],
53
+ 'txHash': json['txHash'] == null ? undefined : json['txHash'],
54
+ 'chain': json['chain'] == null ? undefined : json['chain'],
55
+ 'blockNumber': json['blockNumber'] == null ? undefined : json['blockNumber'],
53
56
  };
54
57
  }
55
58
  export function UserTradeToJSON(json) {
@@ -67,5 +70,8 @@ export function UserTradeToJSONTyped(value, ignoreDiscriminator = false) {
67
70
  'side': value['side'],
68
71
  'outcomeId': value['outcomeId'],
69
72
  'orderId': value['orderId'],
73
+ 'txHash': value['txHash'],
74
+ 'chain': value['chain'],
75
+ 'blockNumber': value['blockNumber'],
70
76
  };
71
77
  }
@@ -21,6 +21,7 @@ export * from './EventFilterCriteriaTotalVolume.js';
21
21
  export * from './EventMatchResult.js';
22
22
  export * from './ExchangeCredentials.js';
23
23
  export * from './ExchangeCredentialsSignatureType.js';
24
+ export * from './ExchangeOptions.js';
24
25
  export * from './ExecutionPriceResult.js';
25
26
  export * from './FeedFetchHistoricalPrices200Response.js';
26
27
  export * from './FeedFetchOHLCV200Response.js';
@@ -23,6 +23,7 @@ export * from './EventFilterCriteriaTotalVolume.js';
23
23
  export * from './EventMatchResult.js';
24
24
  export * from './ExchangeCredentials.js';
25
25
  export * from './ExchangeCredentialsSignatureType.js';
26
+ export * from './ExchangeOptions.js';
26
27
  export * from './ExecutionPriceResult.js';
27
28
  export * from './FeedFetchHistoricalPrices200Response.js';
28
29
  export * from './FeedFetchOHLCV200Response.js';
@@ -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
- protected exchangeName: string;
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: any): Promise<Order>;
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
- constructor(options?: ExchangeOptions);
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.