pmxtjs 2.51.1 → 2.51.3

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 (144) hide show
  1. package/README.md +14 -5
  2. package/dist/esm/generated/src/apis/DefaultApi.d.ts +6 -0
  3. package/dist/esm/generated/src/apis/DefaultApi.js +6 -0
  4. package/dist/esm/generated/src/models/CreateOrderParams.d.ts +20 -0
  5. package/dist/esm/generated/src/models/CreateOrderParams.js +11 -0
  6. package/dist/esm/index.d.ts +3 -2
  7. package/dist/esm/index.js +3 -2
  8. package/dist/esm/pmxt/client.d.ts +61 -12
  9. package/dist/esm/pmxt/client.js +126 -21
  10. package/dist/esm/pmxt/escrow.js +109 -10
  11. package/dist/esm/pmxt/hosted-typed-data.d.ts +1 -1
  12. package/dist/esm/pmxt/hosted-typed-data.js +14 -0
  13. package/dist/esm/pmxt/models.d.ts +17 -0
  14. package/dist/esm/pmxt/server-manager.js +5 -3
  15. package/dist/generated/src/apis/DefaultApi.d.ts +6 -0
  16. package/dist/generated/src/apis/DefaultApi.js +6 -0
  17. package/dist/generated/src/models/CreateOrderParams.d.ts +20 -0
  18. package/dist/generated/src/models/CreateOrderParams.js +12 -1
  19. package/dist/index.d.ts +3 -2
  20. package/dist/index.js +3 -1
  21. package/dist/pmxt/client.d.ts +61 -12
  22. package/dist/pmxt/client.js +126 -20
  23. package/dist/pmxt/escrow.js +109 -10
  24. package/dist/pmxt/hosted-typed-data.d.ts +1 -1
  25. package/dist/pmxt/hosted-typed-data.js +14 -0
  26. package/dist/pmxt/models.d.ts +17 -0
  27. package/dist/pmxt/server-manager.js +5 -3
  28. package/generated/docs/ArbitrageOpportunity.md +0 -29
  29. package/generated/docs/Balance.md +0 -25
  30. package/generated/docs/BaseRequest.md +0 -21
  31. package/generated/docs/BaseResponse.md +0 -22
  32. package/generated/docs/BuildOrder200Response.md +0 -23
  33. package/generated/docs/BuildOrderRequest.md +0 -22
  34. package/generated/docs/BuiltOrder.md +0 -26
  35. package/generated/docs/BuiltOrderTx.md +0 -24
  36. package/generated/docs/CancelOrderRequest.md +0 -22
  37. package/generated/docs/CloseRequest.md +0 -22
  38. package/generated/docs/CompareMarketPrices200Response.md +0 -23
  39. package/generated/docs/CompareMarketPricesRequest.md +0 -22
  40. package/generated/docs/CreateOrder200Response.md +0 -23
  41. package/generated/docs/CreateOrderParams.md +2 -30
  42. package/generated/docs/CreateOrderRequest.md +0 -22
  43. package/generated/docs/DataFeedsApi.md +0 -329
  44. package/generated/docs/DefaultApi.md +3 -1438
  45. package/generated/docs/ErrorDetail.md +0 -25
  46. package/generated/docs/ErrorResponse.md +0 -22
  47. package/generated/docs/EventFetchParams.md +0 -35
  48. package/generated/docs/EventFilterCriteria.md +0 -26
  49. package/generated/docs/EventFilterCriteriaTotalVolume.md +0 -22
  50. package/generated/docs/EventMatchResult.md +0 -22
  51. package/generated/docs/ExchangeCredentials.md +0 -29
  52. package/generated/docs/ExchangeCredentialsSignatureType.md +0 -20
  53. package/generated/docs/ExchangeOptions.md +0 -27
  54. package/generated/docs/ExecutionPriceResult.md +0 -23
  55. package/generated/docs/FeedFetchHistoricalPrices200Response.md +0 -22
  56. package/generated/docs/FeedFetchOHLCV200Response.md +0 -22
  57. package/generated/docs/FeedFetchOracleHistory200Response.md +0 -22
  58. package/generated/docs/FeedFetchOracleRound200Response.md +0 -22
  59. package/generated/docs/FeedFetchOrderBook200Response.md +0 -22
  60. package/generated/docs/FeedFetchOrderBook200ResponseData.md +0 -25
  61. package/generated/docs/FeedFetchTicker200Response.md +0 -22
  62. package/generated/docs/FeedFetchTickers200Response.md +0 -22
  63. package/generated/docs/FeedList200Response.md +0 -22
  64. package/generated/docs/FeedLoadMarkets200Response.md +0 -22
  65. package/generated/docs/FeedMarket.md +0 -27
  66. package/generated/docs/FeedOracleRound.md +0 -28
  67. package/generated/docs/FeedTicker.md +0 -42
  68. package/generated/docs/FetchArbitrage200Response.md +0 -23
  69. package/generated/docs/FetchArbitrageParams.md +0 -24
  70. package/generated/docs/FetchBalance200Response.md +0 -23
  71. package/generated/docs/FetchEvent200Response.md +0 -23
  72. package/generated/docs/FetchEventMatches200Response.md +0 -23
  73. package/generated/docs/FetchEventMatchesParams.md +0 -29
  74. package/generated/docs/FetchEvents200Response.md +0 -23
  75. package/generated/docs/FetchEventsPaginated200Response.md +0 -23
  76. package/generated/docs/FetchMarket200Response.md +0 -23
  77. package/generated/docs/FetchMarketMatches200Response.md +0 -23
  78. package/generated/docs/FetchMarketMatchesParams.md +0 -32
  79. package/generated/docs/FetchMarkets200Response.md +0 -23
  80. package/generated/docs/FetchMarketsPaginated200Response.md +0 -23
  81. package/generated/docs/FetchMatchedMarkets200Response.md +0 -23
  82. package/generated/docs/FetchMatchedMarketsParams.md +0 -24
  83. package/generated/docs/FetchMyTrades200Response.md +0 -23
  84. package/generated/docs/FetchOHLCV200Response.md +0 -23
  85. package/generated/docs/FetchOpenOrders200Response.md +0 -23
  86. package/generated/docs/FetchOrderBook200Response.md +0 -23
  87. package/generated/docs/FetchOrderBookParams.md +0 -24
  88. package/generated/docs/FetchOrderBooks200Response.md +0 -23
  89. package/generated/docs/FetchOrderBooksRequest.md +0 -22
  90. package/generated/docs/FetchPositions200Response.md +0 -23
  91. package/generated/docs/FetchSeries200Response.md +0 -23
  92. package/generated/docs/FetchTrades200Response.md +0 -23
  93. package/generated/docs/FilterEventsRequest.md +0 -22
  94. package/generated/docs/FilterEventsRequestArgsInner.md +0 -26
  95. package/generated/docs/FilterMarketsRequest.md +0 -22
  96. package/generated/docs/FilterMarketsRequestArgsInner.md +0 -31
  97. package/generated/docs/GetExecutionPrice200Response.md +0 -23
  98. package/generated/docs/GetExecutionPriceDetailed200Response.md +0 -23
  99. package/generated/docs/GetExecutionPriceDetailedRequest.md +0 -22
  100. package/generated/docs/GetExecutionPriceRequest.md +0 -22
  101. package/generated/docs/GetExecutionPriceRequestArgsInner.md +0 -27
  102. package/generated/docs/HealthCheck200Response.md +0 -22
  103. package/generated/docs/HistoryFilterParams.md +0 -24
  104. package/generated/docs/LoadMarkets200Response.md +0 -23
  105. package/generated/docs/LoadMarketsRequest.md +0 -22
  106. package/generated/docs/MarketFilterCriteria.md +0 -31
  107. package/generated/docs/MarketFilterCriteriaLiquidity.md +0 -22
  108. package/generated/docs/MarketFilterCriteriaOpenInterest.md +0 -22
  109. package/generated/docs/MarketFilterCriteriaPrice.md +0 -23
  110. package/generated/docs/MarketFilterCriteriaResolutionDate.md +0 -22
  111. package/generated/docs/MarketFilterCriteriaVolume.md +0 -22
  112. package/generated/docs/MarketFilterCriteriaVolume24h.md +0 -22
  113. package/generated/docs/MarketFilterParams.md +0 -34
  114. package/generated/docs/MarketOutcome.md +0 -26
  115. package/generated/docs/MatchResult.md +0 -27
  116. package/generated/docs/MatchedMarketPair.md +0 -30
  117. package/generated/docs/MyTradesParams.md +0 -26
  118. package/generated/docs/OHLCVParams.md +0 -24
  119. package/generated/docs/Order.md +0 -37
  120. package/generated/docs/OrderBook.md +0 -27
  121. package/generated/docs/OrderHistoryParams.md +0 -25
  122. package/generated/docs/OrderLevel.md +0 -23
  123. package/generated/docs/PaginatedEventsResult.md +0 -23
  124. package/generated/docs/PaginatedMarketsResult.md +0 -23
  125. package/generated/docs/Position.md +0 -32
  126. package/generated/docs/PriceCandle.md +0 -26
  127. package/generated/docs/PriceComparison.md +0 -27
  128. package/generated/docs/SubmitOrderRequest.md +0 -22
  129. package/generated/docs/Trade.md +0 -26
  130. package/generated/docs/TradesParams.md +0 -23
  131. package/generated/docs/UnifiedEvent.md +0 -33
  132. package/generated/docs/UnifiedMarket.md +0 -44
  133. package/generated/docs/UnifiedSeries.md +0 -31
  134. package/generated/docs/UserTrade.md +0 -32
  135. package/generated/package.json +1 -1
  136. package/generated/src/apis/DefaultApi.ts +6 -0
  137. package/generated/src/models/CreateOrderParams.ts +25 -0
  138. package/index.ts +3 -2
  139. package/package.json +2 -2
  140. package/pmxt/client.ts +153 -28
  141. package/pmxt/escrow.ts +131 -11
  142. package/pmxt/hosted-typed-data.ts +17 -1
  143. package/pmxt/models.ts +20 -0
  144. package/pmxt/server-manager.ts +5 -3
package/README.md CHANGED
@@ -120,7 +120,7 @@ const order = await trader.createOrder({
120
120
  amount: 5.0,
121
121
  denom: "usdc",
122
122
  slippage_pct: 30.0,
123
- } as any);
123
+ });
124
124
  console.log(`Order status: ${order.status}`);
125
125
  ```
126
126
 
@@ -143,7 +143,9 @@ When self-hosting, supply venue credentials directly — no `pmxtApiKey`. The SD
143
143
 
144
144
  **Polymarket:**
145
145
  ```typescript
146
- const poly = new pmxt.Polymarket({
146
+ import { Polymarket } from "pmxtjs";
147
+
148
+ const poly = new Polymarket({
147
149
  privateKey: process.env.POLYMARKET_PRIVATE_KEY,
148
150
  proxyAddress: process.env.POLYMARKET_PROXY_ADDRESS, // Optional
149
151
  // signatureType: 'gnosis-safe' (default)
@@ -152,7 +154,9 @@ const poly = new pmxt.Polymarket({
152
154
 
153
155
  **Kalshi:**
154
156
  ```typescript
155
- const kalshi = new pmxt.Kalshi({
157
+ import { Kalshi } from "pmxtjs";
158
+
159
+ const kalshi = new Kalshi({
156
160
  apiKey: process.env.KALSHI_API_KEY,
157
161
  privateKey: process.env.KALSHI_PRIVATE_KEY
158
162
  });
@@ -160,7 +164,9 @@ const kalshi = new pmxt.Kalshi({
160
164
 
161
165
  **Limitless:**
162
166
  ```typescript
163
- const limitless = new pmxt.Limitless({
167
+ import { Limitless } from "pmxtjs";
168
+
169
+ const limitless = new Limitless({
164
170
  privateKey: process.env.LIMITLESS_PRIVATE_KEY
165
171
  });
166
172
  ```
@@ -170,8 +176,11 @@ const limitless = new pmxt.Limitless({
170
176
  - `createOrder(params)` - Place a new order
171
177
  ```typescript
172
178
  // Using outcome shorthand (recommended)
179
+ const yes = market.yes;
180
+ if (!yes) throw new Error("Market has no YES outcome");
181
+
173
182
  await poly.createOrder({
174
- outcome: market.yes,
183
+ outcome: yes,
175
184
  side: 'buy',
176
185
  type: 'limit',
177
186
  amount: 10,
@@ -342,10 +342,12 @@ export declare class DefaultApi extends runtime.BaseAPI {
342
342
  */
343
343
  createOrder(requestParameters: CreateOrderOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CreateOrder200Response>;
344
344
  /**
345
+ * Fetch authenticated order history across open and closed orders.
345
346
  * Fetch All Orders
346
347
  */
347
348
  fetchAllOrdersRaw(requestParameters: FetchAllOrdersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchOpenOrders200Response>>;
348
349
  /**
350
+ * Fetch authenticated order history across open and closed orders.
349
351
  * Fetch All Orders
350
352
  */
351
353
  fetchAllOrders(requestParameters: FetchAllOrdersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchOpenOrders200Response>;
@@ -370,10 +372,12 @@ export declare class DefaultApi extends runtime.BaseAPI {
370
372
  */
371
373
  fetchBalance(requestParameters: FetchBalanceRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchBalance200Response>;
372
374
  /**
375
+ * Fetch authenticated closed orders.
373
376
  * Fetch Closed Orders
374
377
  */
375
378
  fetchClosedOrdersRaw(requestParameters: FetchClosedOrdersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchOpenOrders200Response>>;
376
379
  /**
380
+ * Fetch authenticated closed orders.
377
381
  * Fetch Closed Orders
378
382
  */
379
383
  fetchClosedOrders(requestParameters: FetchClosedOrdersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchOpenOrders200Response>;
@@ -488,10 +492,12 @@ export declare class DefaultApi extends runtime.BaseAPI {
488
492
  */
489
493
  fetchMatchedPrices(requestParameters: FetchMatchedPricesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchMatchedMarkets200Response>;
490
494
  /**
495
+ * Fetch authenticated user trade history.
491
496
  * Fetch My Trades
492
497
  */
493
498
  fetchMyTradesRaw(requestParameters: FetchMyTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchMyTrades200Response>>;
494
499
  /**
500
+ * Fetch authenticated user trade history.
495
501
  * Fetch My Trades
496
502
  */
497
503
  fetchMyTrades(requestParameters: FetchMyTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchMyTrades200Response>;
@@ -168,6 +168,7 @@ export class DefaultApi extends runtime.BaseAPI {
168
168
  return await response.value();
169
169
  }
170
170
  /**
171
+ * Fetch authenticated order history across open and closed orders.
171
172
  * Fetch All Orders
172
173
  */
173
174
  async fetchAllOrdersRaw(requestParameters, initOverrides) {
@@ -202,6 +203,7 @@ export class DefaultApi extends runtime.BaseAPI {
202
203
  return new runtime.JSONApiResponse(response, (jsonValue) => FetchOpenOrders200ResponseFromJSON(jsonValue));
203
204
  }
204
205
  /**
206
+ * Fetch authenticated order history across open and closed orders.
205
207
  * Fetch All Orders
206
208
  */
207
209
  async fetchAllOrders(requestParameters, initOverrides) {
@@ -280,6 +282,7 @@ export class DefaultApi extends runtime.BaseAPI {
280
282
  return await response.value();
281
283
  }
282
284
  /**
285
+ * Fetch authenticated closed orders.
283
286
  * Fetch Closed Orders
284
287
  */
285
288
  async fetchClosedOrdersRaw(requestParameters, initOverrides) {
@@ -314,6 +317,7 @@ export class DefaultApi extends runtime.BaseAPI {
314
317
  return new runtime.JSONApiResponse(response, (jsonValue) => FetchOpenOrders200ResponseFromJSON(jsonValue));
315
318
  }
316
319
  /**
320
+ * Fetch authenticated closed orders.
317
321
  * Fetch Closed Orders
318
322
  */
319
323
  async fetchClosedOrders(requestParameters, initOverrides) {
@@ -944,6 +948,7 @@ export class DefaultApi extends runtime.BaseAPI {
944
948
  return await response.value();
945
949
  }
946
950
  /**
951
+ * Fetch authenticated user trade history.
947
952
  * Fetch My Trades
948
953
  */
949
954
  async fetchMyTradesRaw(requestParameters, initOverrides) {
@@ -981,6 +986,7 @@ export class DefaultApi extends runtime.BaseAPI {
981
986
  return new runtime.JSONApiResponse(response, (jsonValue) => FetchMyTrades200ResponseFromJSON(jsonValue));
982
987
  }
983
988
  /**
989
+ * Fetch authenticated user trade history.
984
990
  * Fetch My Trades
985
991
  */
986
992
  async fetchMyTrades(requestParameters, initOverrides) {
@@ -51,6 +51,18 @@ export interface CreateOrderParams {
51
51
  * @memberof CreateOrderParams
52
52
  */
53
53
  price?: number;
54
+ /**
55
+ * Hosted mode: amount unit.
56
+ * @type {string}
57
+ * @memberof CreateOrderParams
58
+ */
59
+ denom?: CreateOrderParamsDenomEnum;
60
+ /**
61
+ * Hosted mode: maximum market-order slippage percentage.
62
+ * @type {number}
63
+ * @memberof CreateOrderParams
64
+ */
65
+ slippagePct?: number;
54
66
  /**
55
67
  * Optional fee rate (e.g., 1000 for 0.1%)
56
68
  * @type {number}
@@ -92,6 +104,14 @@ export declare const CreateOrderParamsTypeEnum: {
92
104
  readonly Limit: "limit";
93
105
  };
94
106
  export type CreateOrderParamsTypeEnum = typeof CreateOrderParamsTypeEnum[keyof typeof CreateOrderParamsTypeEnum];
107
+ /**
108
+ * @export
109
+ */
110
+ export declare const CreateOrderParamsDenomEnum: {
111
+ readonly Usdc: "usdc";
112
+ readonly Shares: "shares";
113
+ };
114
+ export type CreateOrderParamsDenomEnum = typeof CreateOrderParamsDenomEnum[keyof typeof CreateOrderParamsDenomEnum];
95
115
  /**
96
116
  * Check if a given object implements the CreateOrderParams interface.
97
117
  */
@@ -25,6 +25,13 @@ export const CreateOrderParamsTypeEnum = {
25
25
  Market: 'market',
26
26
  Limit: 'limit'
27
27
  };
28
+ /**
29
+ * @export
30
+ */
31
+ export const CreateOrderParamsDenomEnum = {
32
+ Usdc: 'usdc',
33
+ Shares: 'shares'
34
+ };
28
35
  /**
29
36
  * Check if a given object implements the CreateOrderParams interface.
30
37
  */
@@ -55,6 +62,8 @@ export function CreateOrderParamsFromJSONTyped(json, ignoreDiscriminator) {
55
62
  'type': json['type'],
56
63
  'amount': json['amount'],
57
64
  'price': json['price'] == null ? undefined : json['price'],
65
+ 'denom': json['denom'] == null ? undefined : json['denom'],
66
+ 'slippagePct': json['slippage_pct'] == null ? undefined : json['slippage_pct'],
58
67
  'fee': json['fee'] == null ? undefined : json['fee'],
59
68
  'tickSize': json['tickSize'] == null ? undefined : json['tickSize'],
60
69
  'negRisk': json['negRisk'] == null ? undefined : json['negRisk'],
@@ -75,6 +84,8 @@ export function CreateOrderParamsToJSONTyped(value, ignoreDiscriminator = false)
75
84
  'type': value['type'],
76
85
  'amount': value['amount'],
77
86
  'price': value['price'],
87
+ 'denom': value['denom'],
88
+ 'slippage_pct': value['slippagePct'],
78
89
  'fee': value['fee'],
79
90
  'tickSize': value['tickSize'],
80
91
  'negRisk': value['negRisk'],
@@ -17,13 +17,13 @@
17
17
  * console.log(markets[0].title);
18
18
  * ```
19
19
  */
20
- import { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, SuiBets, Rain, Mock } from "./pmxt/client.js";
20
+ import { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, SuiBets, Rain, Hunch, Mock } from "./pmxt/client.js";
21
21
  import { Router } from "./pmxt/router.js";
22
22
  import { ServerManager } from "./pmxt/server-manager.js";
23
23
  import { FeedClient } from "./pmxt/feed-client.js";
24
24
  import * as models from "./pmxt/models.js";
25
25
  import * as errors from "./pmxt/errors.js";
26
- export { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, SuiBets, Suibets, Rain, Mock, PolymarketOptions } from "./pmxt/client.js";
26
+ export { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, SuiBets, Suibets, Rain, Hunch, Mock, PolymarketOptions } from "./pmxt/client.js";
27
27
  export { FeedClient } from "./pmxt/feed-client.js";
28
28
  export type { Ticker, Tickers, OHLCV, Market as FeedMarket, OracleRound, FeedClientOptions } from "./pmxt/feed-client.js";
29
29
  export { Router } from "./pmxt/router.js";
@@ -97,6 +97,7 @@ declare const pmxt: {
97
97
  SuiBets: typeof SuiBets;
98
98
  Suibets: typeof SuiBets;
99
99
  Rain: typeof Rain;
100
+ Hunch: typeof Hunch;
100
101
  Mock: typeof Mock;
101
102
  Router: typeof Router;
102
103
  ServerManager: typeof ServerManager;
package/dist/esm/index.js CHANGED
@@ -17,13 +17,13 @@
17
17
  * console.log(markets[0].title);
18
18
  * ```
19
19
  */
20
- import { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, SuiBets, Suibets, Rain, Mock } from "./pmxt/client.js";
20
+ import { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, SuiBets, Suibets, Rain, Hunch, Mock } from "./pmxt/client.js";
21
21
  import { Router } from "./pmxt/router.js";
22
22
  import { ServerManager } from "./pmxt/server-manager.js";
23
23
  import { FeedClient } from "./pmxt/feed-client.js";
24
24
  import * as models from "./pmxt/models.js";
25
25
  import * as errors from "./pmxt/errors.js";
26
- export { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, SuiBets, Suibets, Rain, Mock } from "./pmxt/client.js";
26
+ export { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, SuiBets, Suibets, Rain, Hunch, Mock } from "./pmxt/client.js";
27
27
  export { FeedClient } from "./pmxt/feed-client.js";
28
28
  export { Router } from "./pmxt/router.js";
29
29
  export { ServerManager } from "./pmxt/server-manager.js";
@@ -78,6 +78,7 @@ const pmxt = {
78
78
  SuiBets,
79
79
  Suibets,
80
80
  Rain,
81
+ Hunch,
81
82
  Mock,
82
83
  Router,
83
84
  ServerManager,
@@ -5,7 +5,7 @@
5
5
  * OpenAPI client, matching the Python API exactly.
6
6
  */
7
7
  import { Configuration, DefaultApi, ExchangeCredentials } from "../generated/src/index.js";
8
- import { Balance, BuiltOrder, CreateOrderParams, EventFetchParams, EventFilterCriteria, EventFilterFunction, ExecutionPriceResult, FetchOrderBookParams, MarketFetchParams, MarketFilterCriteria, MarketFilterFunction, MarketOutcome, MyTradesParams, Order, OrderBook, OrderHistoryParams, PaginatedMarketsResult, PaginatedEventsResult, Position, SeriesFetchParams, PriceCandle, SubscribedAddressSnapshot, SubscriptionOption, Trade, UnifiedEvent, UnifiedMarket, UnifiedSeries, UserTrade, FirehoseEvent, FetchMatchedMarketClustersParams } from "./models.js";
8
+ import { Balance, BuiltOrder, CreateOrderInput, EventFetchParams, EventFilterCriteria, EventFilterFunction, ExecutionPriceResult, FetchOrderBookParams, MarketFetchParams, MarketFilterCriteria, MarketFilterFunction, MarketOutcome, MyTradesParams, Order, OrderBook, OrderHistoryParams, PaginatedMarketsResult, PaginatedEventsResult, Position, SeriesFetchParams, PriceCandle, SubscribedAddressSnapshot, SubscriptionOption, Trade, UnifiedEvent, UnifiedMarket, UnifiedSeries, UserTrade, FirehoseEvent, FetchMatchedMarketClustersParams } from "./models.js";
9
9
  import { ServerManager } from "./server-manager.js";
10
10
  import type { Signer } from "./signers.js";
11
11
  import { Escrow } from "./escrow.js";
@@ -105,6 +105,7 @@ export declare abstract class Exchange {
105
105
  private _wsClient;
106
106
  /** Sticky flag: true if the sidecar /ws endpoint is unavailable. */
107
107
  private _wsUnsupported;
108
+ private readonly _useSidecarLockBaseUrl;
108
109
  constructor(exchangeName: string, options?: ExchangeOptions);
109
110
  private initializeServer;
110
111
  protected handleResponse(response: any): any;
@@ -125,9 +126,9 @@ export declare abstract class Exchange {
125
126
  /**
126
127
  * Resolve the current sidecar base URL.
127
128
  *
128
- * For hosted mode the configured basePath is returned as-is.
129
- * For local mode the port is re-read from the lock file on every
130
- * call so we pick up sidecar restarts that land on a different port.
129
+ * Hosted mode and explicit baseUrl clients keep the configured basePath.
130
+ * Default local clients re-read the lock-file port on every call so they
131
+ * pick up sidecar restarts that land on a different port.
131
132
  */
132
133
  private resolveBaseUrl;
133
134
  /**
@@ -335,7 +336,13 @@ export declare abstract class Exchange {
335
336
  * ```
336
337
  */
337
338
  watchAllOrderBooks(venues?: string[]): Promise<FirehoseEvent>;
338
- /** @deprecated Use {@link watchAllOrderBooks} instead. */
339
+ /**
340
+ * Stream all orderbook updates across venues.
341
+ *
342
+ * @deprecated Use {@link watchAllOrderBooks} instead.
343
+ * @param venues - Optional venue filter
344
+ * @returns Next event with source, symbol, and orderbook
345
+ */
339
346
  firehose(venues?: string[]): Promise<FirehoseEvent>;
340
347
  /**
341
348
  * Watch real-time trade updates via WebSocket.
@@ -411,17 +418,18 @@ export declare abstract class Exchange {
411
418
  * const order = await exchange.submitOrder(built);
412
419
  *
413
420
  * // Using outcome shorthand:
421
+ * const yes = market.yes;
422
+ * if (!yes) throw new Error("Market has no YES outcome");
423
+ *
414
424
  * const built2 = await exchange.buildOrder({
415
- * outcome: market.yes,
425
+ * outcome: yes,
416
426
  * side: "buy",
417
427
  * type: "market",
418
428
  * amount: 10
419
429
  * });
420
430
  * ```
421
431
  */
422
- buildOrder(params: CreateOrderParams & {
423
- outcome?: MarketOutcome;
424
- }): Promise<BuiltOrder>;
432
+ buildOrder(params: CreateOrderInput): Promise<BuiltOrder>;
425
433
  private _discoverHostedAccount;
426
434
  private _executeSorOrder;
427
435
  /**
@@ -475,9 +483,7 @@ export declare abstract class Exchange {
475
483
  * });
476
484
  * ```
477
485
  */
478
- createOrder(params: CreateOrderParams & {
479
- outcome?: MarketOutcome;
480
- }): Promise<Order>;
486
+ createOrder(params: CreateOrderInput): Promise<Order>;
481
487
  /**
482
488
  * Calculate the average execution price for a given amount by walking the order book.
483
489
  * Uses the sidecar server for calculation to ensure consistency.
@@ -576,6 +582,14 @@ export interface PolymarketOptions {
576
582
  proxyAddress?: string;
577
583
  /** Optional signature type */
578
584
  signatureType?: 'eoa' | 'poly-proxy' | 'gnosis-safe' | number;
585
+ /**
586
+ * EVM wallet address used for hosted reads/writes.
587
+ */
588
+ walletAddress?: string;
589
+ /**
590
+ * External signer used for hosted writes.
591
+ */
592
+ signer?: Signer;
579
593
  }
580
594
  export declare class Polymarket extends Exchange {
581
595
  constructor(options?: PolymarketOptions);
@@ -626,6 +640,32 @@ export declare class Kalshi extends Exchange {
626
640
  */
627
641
  export declare class Limitless extends Exchange {
628
642
  constructor(options?: ExchangeOptions);
643
+ /**
644
+ * Watch real-time AMM price updates via WebSocket.
645
+ *
646
+ * @param marketAddress - Limitless market contract address
647
+ * @param callback - Optional callback invoked with the returned update
648
+ * @returns Next price update
649
+ */
650
+ watchPrices(marketAddress: string, callback?: (data: Record<string, any>) => void): Promise<Record<string, any>>;
651
+ /**
652
+ * Watch real-time Limitless user position updates.
653
+ *
654
+ * Requires API key authentication.
655
+ *
656
+ * @param callback - Optional callback invoked with the returned positions
657
+ * @returns Next position update payload
658
+ */
659
+ watchUserPositions(callback?: (data: Position[]) => void): Promise<Position[]>;
660
+ /**
661
+ * Watch real-time Limitless user transaction updates.
662
+ *
663
+ * Requires API key authentication.
664
+ *
665
+ * @param callback - Optional callback invoked with the returned update
666
+ * @returns Next transaction update
667
+ */
668
+ watchUserTransactions(callback?: (data: Record<string, any>) => void): Promise<Record<string, any>>;
629
669
  }
630
670
  /**
631
671
  * Kalshi Demo exchange client (paper trading / sandbox environment).
@@ -856,6 +896,15 @@ export declare const Suibets: typeof SuiBets;
856
896
  export declare class Rain extends Exchange {
857
897
  constructor(options?: ExchangeOptions);
858
898
  }
899
+ /**
900
+ * Hunch exchange client.
901
+ *
902
+ * Hunch is a crypto-native prediction market. Reads are unauthenticated;
903
+ * trading requires an EVM private key.
904
+ */
905
+ export declare class Hunch extends Exchange {
906
+ constructor(options?: ExchangeOptions);
907
+ }
859
908
  /**
860
909
  * Mock exchange client.
861
910
  *
@@ -7,8 +7,8 @@
7
7
  import { Configuration, DefaultApi, } from "../generated/src/index.js";
8
8
  import { MarketList, } from "./models.js";
9
9
  import { ServerManager } from "./server-manager.js";
10
- import { PmxtError, fromServerError, InvalidOrder } from "./errors.js";
11
- import { resolvePmxtBaseUrl } from "./constants.js";
10
+ import { PmxtError, fromServerError, InvalidOrder, NotSupported } from "./errors.js";
11
+ import { ENV, resolvePmxtBaseUrl } from "./constants.js";
12
12
  import { SidecarWsClient } from "./ws-client.js";
13
13
  import { logger } from "./logger.js";
14
14
  // Hosted-mode trading dispatch.
@@ -190,6 +190,7 @@ export class Exchange {
190
190
  _wsClient = null;
191
191
  /** Sticky flag: true if the sidecar /ws endpoint is unavailable. */
192
192
  _wsUnsupported = false;
193
+ _useSidecarLockBaseUrl;
193
194
  constructor(exchangeName, options = {}) {
194
195
  this.exchangeName = exchangeName.toLowerCase();
195
196
  this.apiKey = options.apiKey;
@@ -207,6 +208,9 @@ export class Exchange {
207
208
  const baseUrl = resolved.baseUrl;
208
209
  this.pmxtApiKey = resolved.pmxtApiKey;
209
210
  this.isHosted = resolved.isHosted;
211
+ const hasBaseUrlOverride = Boolean(options.baseUrl ||
212
+ (typeof process !== "undefined" && process.env[ENV.BASE_URL]));
213
+ this._useSidecarLockBaseUrl = !this.isHosted && !hasBaseUrlOverride;
210
214
  // Hosted trading bridge: if the caller passed a privateKey but no
211
215
  // explicit signer, lazily wrap it in an EthersSigner so that
212
216
  // `pmxt.Polymarket(pmxtApiKey, privateKey)` just works without the
@@ -247,15 +251,17 @@ export class Exchange {
247
251
  if (autoStartServer) {
248
252
  try {
249
253
  await this.serverManager.ensureServerRunning();
250
- // Get the actual port the server is running on
251
- // (may differ from default if default port was busy)
252
- const actualPort = this.serverManager.getRunningPort();
253
- const newBaseUrl = `http://localhost:${actualPort}`;
254
- // Update API client with actual base URL
255
- this.config = new Configuration({
256
- basePath: newBaseUrl,
257
- });
258
- this.api = new DefaultApi(this.config);
254
+ if (this._useSidecarLockBaseUrl) {
255
+ // Get the actual port the server is running on
256
+ // (may differ from default if default port was busy)
257
+ const actualPort = this.serverManager.getRunningPort();
258
+ const newBaseUrl = `http://localhost:${actualPort}`;
259
+ // Update API client with actual base URL
260
+ this.config = new Configuration({
261
+ basePath: newBaseUrl,
262
+ });
263
+ this.api = new DefaultApi(this.config);
264
+ }
259
265
  }
260
266
  catch (error) {
261
267
  const msg = `Failed to start PMXT server: ${error instanceof Error ? error.message : error}\n\n` +
@@ -329,12 +335,12 @@ export class Exchange {
329
335
  /**
330
336
  * Resolve the current sidecar base URL.
331
337
  *
332
- * For hosted mode the configured basePath is returned as-is.
333
- * For local mode the port is re-read from the lock file on every
334
- * call so we pick up sidecar restarts that land on a different port.
338
+ * Hosted mode and explicit baseUrl clients keep the configured basePath.
339
+ * Default local clients re-read the lock-file port on every call so they
340
+ * pick up sidecar restarts that land on a different port.
335
341
  */
336
342
  resolveBaseUrl() {
337
- if (this.isHosted)
343
+ if (this.isHosted || !this._useSidecarLockBaseUrl)
338
344
  return this.config.basePath;
339
345
  const port = this.serverManager.getRunningPort();
340
346
  return `http://localhost:${port}`;
@@ -1018,7 +1024,10 @@ export class Exchange {
1018
1024
  const route = HOSTED_METHOD_ROUTES.get("fetchOrder");
1019
1025
  const path = formatRoutePath(route, { order_id: orderId });
1020
1026
  const data = await _tradingRequest(this, { method: route.method, path });
1021
- return orderFromV0(data);
1027
+ const payload = data && typeof data === "object" && "order" in data
1028
+ ? data.order
1029
+ : data;
1030
+ return orderFromV0(payload);
1022
1031
  }
1023
1032
  try {
1024
1033
  const args = [];
@@ -1124,6 +1133,9 @@ export class Exchange {
1124
1133
  }
1125
1134
  async fetchClosedOrders(params) {
1126
1135
  await this.initPromise;
1136
+ if (this.isHosted) {
1137
+ throw new NotSupported("fetchClosedOrders is not available in hosted trading mode.");
1138
+ }
1127
1139
  try {
1128
1140
  const args = [];
1129
1141
  if (params !== undefined)
@@ -1152,6 +1164,9 @@ export class Exchange {
1152
1164
  }
1153
1165
  async fetchAllOrders(params) {
1154
1166
  await this.initPromise;
1167
+ if (this.isHosted) {
1168
+ throw new NotSupported("fetchAllOrders is not available in hosted trading mode.");
1169
+ }
1155
1170
  try {
1156
1171
  const args = [];
1157
1172
  if (params !== undefined)
@@ -1185,7 +1200,9 @@ export class Exchange {
1185
1200
  const route = HOSTED_METHOD_ROUTES.get("fetchPositions");
1186
1201
  const path = formatRoutePath(route, { address: resolvedAddress });
1187
1202
  const data = await _tradingRequest(this, { method: route.method, path });
1188
- const list = Array.isArray(data) ? data : [];
1203
+ const list = Array.isArray(data)
1204
+ ? data
1205
+ : (data && Array.isArray(data.positions) ? data.positions : []);
1189
1206
  return list.map((p) => positionFromV0(p));
1190
1207
  }
1191
1208
  try {
@@ -1221,7 +1238,9 @@ export class Exchange {
1221
1238
  const route = HOSTED_METHOD_ROUTES.get("fetchBalance");
1222
1239
  const path = formatRoutePath(route, { address: resolvedAddress });
1223
1240
  const data = await _tradingRequest(this, { method: route.method, path });
1224
- const list = Array.isArray(data) ? data : [];
1241
+ const list = Array.isArray(data)
1242
+ ? data
1243
+ : (data && Array.isArray(data.balances) ? data.balances : []);
1225
1244
  return list.map((b) => balanceFromV0(b));
1226
1245
  }
1227
1246
  try {
@@ -1788,7 +1807,13 @@ export class Exchange {
1788
1807
  }
1789
1808
  throw this.wsTransportUnavailableError("watchAllOrderBooks");
1790
1809
  }
1791
- /** @deprecated Use {@link watchAllOrderBooks} instead. */
1810
+ /**
1811
+ * Stream all orderbook updates across venues.
1812
+ *
1813
+ * @deprecated Use {@link watchAllOrderBooks} instead.
1814
+ * @param venues - Optional venue filter
1815
+ * @returns Next event with source, symbol, and orderbook
1816
+ */
1792
1817
  async firehose(venues) {
1793
1818
  return this.watchAllOrderBooks(venues);
1794
1819
  }
@@ -1913,8 +1938,11 @@ export class Exchange {
1913
1938
  * const order = await exchange.submitOrder(built);
1914
1939
  *
1915
1940
  * // Using outcome shorthand:
1941
+ * const yes = market.yes;
1942
+ * if (!yes) throw new Error("Market has no YES outcome");
1943
+ *
1916
1944
  * const built2 = await exchange.buildOrder({
1917
- * outcome: market.yes,
1945
+ * outcome: yes,
1918
1946
  * side: "buy",
1919
1947
  * type: "market",
1920
1948
  * amount: 10
@@ -2207,8 +2235,9 @@ export class Exchange {
2207
2235
  const venue = this.exchangeName;
2208
2236
  if (venue === "polymarket")
2209
2237
  return "cancel_polymarket";
2210
- if (venue === "limitless")
2238
+ if (venue === "limitless") {
2211
2239
  return isPull ? "cancel_limitless_base_pull" : "cancel_limitless_polygon";
2240
+ }
2212
2241
  return isPull ? "cancel_opinion_bsc_pull" : "cancel_opinion_polygon";
2213
2242
  }
2214
2243
  /**
@@ -2781,6 +2810,71 @@ export class Limitless extends Exchange {
2781
2810
  constructor(options = {}) {
2782
2811
  super("limitless", options);
2783
2812
  }
2813
+ /**
2814
+ * Watch real-time AMM price updates via WebSocket.
2815
+ *
2816
+ * @param marketAddress - Limitless market contract address
2817
+ * @param callback - Optional callback invoked with the returned update
2818
+ * @returns Next price update
2819
+ */
2820
+ async watchPrices(marketAddress, callback) {
2821
+ await this.initPromise;
2822
+ try {
2823
+ const json = await this.sidecarPostRequest("watchPrices", [marketAddress]);
2824
+ const data = this.handleResponse(json);
2825
+ callback?.(data);
2826
+ return data;
2827
+ }
2828
+ catch (error) {
2829
+ if (error instanceof PmxtError)
2830
+ throw error;
2831
+ throw new PmxtError(`Failed to watch prices: ${error}`);
2832
+ }
2833
+ }
2834
+ /**
2835
+ * Watch real-time Limitless user position updates.
2836
+ *
2837
+ * Requires API key authentication.
2838
+ *
2839
+ * @param callback - Optional callback invoked with the returned positions
2840
+ * @returns Next position update payload
2841
+ */
2842
+ async watchUserPositions(callback) {
2843
+ await this.initPromise;
2844
+ try {
2845
+ const json = await this.sidecarPostRequest("watchUserPositions", []);
2846
+ const data = this.handleResponse(json).map(convertPosition);
2847
+ callback?.(data);
2848
+ return data;
2849
+ }
2850
+ catch (error) {
2851
+ if (error instanceof PmxtError)
2852
+ throw error;
2853
+ throw new PmxtError(`Failed to watch user positions: ${error}`);
2854
+ }
2855
+ }
2856
+ /**
2857
+ * Watch real-time Limitless user transaction updates.
2858
+ *
2859
+ * Requires API key authentication.
2860
+ *
2861
+ * @param callback - Optional callback invoked with the returned update
2862
+ * @returns Next transaction update
2863
+ */
2864
+ async watchUserTransactions(callback) {
2865
+ await this.initPromise;
2866
+ try {
2867
+ const json = await this.sidecarPostRequest("watchUserTransactions", []);
2868
+ const data = this.handleResponse(json);
2869
+ callback?.(data);
2870
+ return data;
2871
+ }
2872
+ catch (error) {
2873
+ if (error instanceof PmxtError)
2874
+ throw error;
2875
+ throw new PmxtError(`Failed to watch user transactions: ${error}`);
2876
+ }
2877
+ }
2784
2878
  }
2785
2879
  /**
2786
2880
  * Kalshi Demo exchange client (paper trading / sandbox environment).
@@ -3034,6 +3128,17 @@ export class Rain extends Exchange {
3034
3128
  super("rain", options);
3035
3129
  }
3036
3130
  }
3131
+ /**
3132
+ * Hunch exchange client.
3133
+ *
3134
+ * Hunch is a crypto-native prediction market. Reads are unauthenticated;
3135
+ * trading requires an EVM private key.
3136
+ */
3137
+ export class Hunch extends Exchange {
3138
+ constructor(options = {}) {
3139
+ super("hunch", options);
3140
+ }
3141
+ }
3037
3142
  /**
3038
3143
  * Mock exchange client.
3039
3144
  *