pmxtjs 2.51.2 → 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 (133) 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/pmxt/client.d.ts +40 -9
  7. package/dist/esm/pmxt/client.js +78 -3
  8. package/dist/esm/pmxt/hosted-typed-data.d.ts +1 -1
  9. package/dist/esm/pmxt/hosted-typed-data.js +14 -0
  10. package/dist/esm/pmxt/models.d.ts +17 -0
  11. package/dist/generated/src/apis/DefaultApi.d.ts +6 -0
  12. package/dist/generated/src/apis/DefaultApi.js +6 -0
  13. package/dist/generated/src/models/CreateOrderParams.d.ts +20 -0
  14. package/dist/generated/src/models/CreateOrderParams.js +12 -1
  15. package/dist/pmxt/client.d.ts +40 -9
  16. package/dist/pmxt/client.js +78 -3
  17. package/dist/pmxt/hosted-typed-data.d.ts +1 -1
  18. package/dist/pmxt/hosted-typed-data.js +14 -0
  19. package/dist/pmxt/models.d.ts +17 -0
  20. package/generated/docs/ArbitrageOpportunity.md +0 -29
  21. package/generated/docs/Balance.md +0 -25
  22. package/generated/docs/BaseRequest.md +0 -21
  23. package/generated/docs/BaseResponse.md +0 -22
  24. package/generated/docs/BuildOrder200Response.md +0 -23
  25. package/generated/docs/BuildOrderRequest.md +0 -22
  26. package/generated/docs/BuiltOrder.md +0 -26
  27. package/generated/docs/BuiltOrderTx.md +0 -24
  28. package/generated/docs/CancelOrderRequest.md +0 -22
  29. package/generated/docs/CloseRequest.md +0 -22
  30. package/generated/docs/CompareMarketPrices200Response.md +0 -23
  31. package/generated/docs/CompareMarketPricesRequest.md +0 -22
  32. package/generated/docs/CreateOrder200Response.md +0 -23
  33. package/generated/docs/CreateOrderParams.md +2 -30
  34. package/generated/docs/CreateOrderRequest.md +0 -22
  35. package/generated/docs/DataFeedsApi.md +0 -329
  36. package/generated/docs/DefaultApi.md +3 -1438
  37. package/generated/docs/ErrorDetail.md +0 -25
  38. package/generated/docs/ErrorResponse.md +0 -22
  39. package/generated/docs/EventFetchParams.md +0 -35
  40. package/generated/docs/EventFilterCriteria.md +0 -26
  41. package/generated/docs/EventFilterCriteriaTotalVolume.md +0 -22
  42. package/generated/docs/EventMatchResult.md +0 -22
  43. package/generated/docs/ExchangeCredentials.md +0 -29
  44. package/generated/docs/ExchangeCredentialsSignatureType.md +0 -20
  45. package/generated/docs/ExchangeOptions.md +0 -27
  46. package/generated/docs/ExecutionPriceResult.md +0 -23
  47. package/generated/docs/FeedFetchHistoricalPrices200Response.md +0 -22
  48. package/generated/docs/FeedFetchOHLCV200Response.md +0 -22
  49. package/generated/docs/FeedFetchOracleHistory200Response.md +0 -22
  50. package/generated/docs/FeedFetchOracleRound200Response.md +0 -22
  51. package/generated/docs/FeedFetchOrderBook200Response.md +0 -22
  52. package/generated/docs/FeedFetchOrderBook200ResponseData.md +0 -25
  53. package/generated/docs/FeedFetchTicker200Response.md +0 -22
  54. package/generated/docs/FeedFetchTickers200Response.md +0 -22
  55. package/generated/docs/FeedList200Response.md +0 -22
  56. package/generated/docs/FeedLoadMarkets200Response.md +0 -22
  57. package/generated/docs/FeedMarket.md +0 -27
  58. package/generated/docs/FeedOracleRound.md +0 -28
  59. package/generated/docs/FeedTicker.md +0 -42
  60. package/generated/docs/FetchArbitrage200Response.md +0 -23
  61. package/generated/docs/FetchArbitrageParams.md +0 -24
  62. package/generated/docs/FetchBalance200Response.md +0 -23
  63. package/generated/docs/FetchEvent200Response.md +0 -23
  64. package/generated/docs/FetchEventMatches200Response.md +0 -23
  65. package/generated/docs/FetchEventMatchesParams.md +0 -29
  66. package/generated/docs/FetchEvents200Response.md +0 -23
  67. package/generated/docs/FetchEventsPaginated200Response.md +0 -23
  68. package/generated/docs/FetchMarket200Response.md +0 -23
  69. package/generated/docs/FetchMarketMatches200Response.md +0 -23
  70. package/generated/docs/FetchMarketMatchesParams.md +0 -32
  71. package/generated/docs/FetchMarkets200Response.md +0 -23
  72. package/generated/docs/FetchMarketsPaginated200Response.md +0 -23
  73. package/generated/docs/FetchMatchedMarkets200Response.md +0 -23
  74. package/generated/docs/FetchMatchedMarketsParams.md +0 -24
  75. package/generated/docs/FetchMyTrades200Response.md +0 -23
  76. package/generated/docs/FetchOHLCV200Response.md +0 -23
  77. package/generated/docs/FetchOpenOrders200Response.md +0 -23
  78. package/generated/docs/FetchOrderBook200Response.md +0 -23
  79. package/generated/docs/FetchOrderBookParams.md +0 -24
  80. package/generated/docs/FetchOrderBooks200Response.md +0 -23
  81. package/generated/docs/FetchOrderBooksRequest.md +0 -22
  82. package/generated/docs/FetchPositions200Response.md +0 -23
  83. package/generated/docs/FetchSeries200Response.md +0 -23
  84. package/generated/docs/FetchTrades200Response.md +0 -23
  85. package/generated/docs/FilterEventsRequest.md +0 -22
  86. package/generated/docs/FilterEventsRequestArgsInner.md +0 -26
  87. package/generated/docs/FilterMarketsRequest.md +0 -22
  88. package/generated/docs/FilterMarketsRequestArgsInner.md +0 -31
  89. package/generated/docs/GetExecutionPrice200Response.md +0 -23
  90. package/generated/docs/GetExecutionPriceDetailed200Response.md +0 -23
  91. package/generated/docs/GetExecutionPriceDetailedRequest.md +0 -22
  92. package/generated/docs/GetExecutionPriceRequest.md +0 -22
  93. package/generated/docs/GetExecutionPriceRequestArgsInner.md +0 -27
  94. package/generated/docs/HealthCheck200Response.md +0 -22
  95. package/generated/docs/HistoryFilterParams.md +0 -24
  96. package/generated/docs/LoadMarkets200Response.md +0 -23
  97. package/generated/docs/LoadMarketsRequest.md +0 -22
  98. package/generated/docs/MarketFilterCriteria.md +0 -31
  99. package/generated/docs/MarketFilterCriteriaLiquidity.md +0 -22
  100. package/generated/docs/MarketFilterCriteriaOpenInterest.md +0 -22
  101. package/generated/docs/MarketFilterCriteriaPrice.md +0 -23
  102. package/generated/docs/MarketFilterCriteriaResolutionDate.md +0 -22
  103. package/generated/docs/MarketFilterCriteriaVolume.md +0 -22
  104. package/generated/docs/MarketFilterCriteriaVolume24h.md +0 -22
  105. package/generated/docs/MarketFilterParams.md +0 -34
  106. package/generated/docs/MarketOutcome.md +0 -26
  107. package/generated/docs/MatchResult.md +0 -27
  108. package/generated/docs/MatchedMarketPair.md +0 -30
  109. package/generated/docs/MyTradesParams.md +0 -26
  110. package/generated/docs/OHLCVParams.md +0 -24
  111. package/generated/docs/Order.md +0 -37
  112. package/generated/docs/OrderBook.md +0 -27
  113. package/generated/docs/OrderHistoryParams.md +0 -25
  114. package/generated/docs/OrderLevel.md +0 -23
  115. package/generated/docs/PaginatedEventsResult.md +0 -23
  116. package/generated/docs/PaginatedMarketsResult.md +0 -23
  117. package/generated/docs/Position.md +0 -32
  118. package/generated/docs/PriceCandle.md +0 -26
  119. package/generated/docs/PriceComparison.md +0 -27
  120. package/generated/docs/SubmitOrderRequest.md +0 -22
  121. package/generated/docs/Trade.md +0 -26
  122. package/generated/docs/TradesParams.md +0 -23
  123. package/generated/docs/UnifiedEvent.md +0 -33
  124. package/generated/docs/UnifiedMarket.md +0 -44
  125. package/generated/docs/UnifiedSeries.md +0 -31
  126. package/generated/docs/UserTrade.md +0 -32
  127. package/generated/package.json +1 -1
  128. package/generated/src/apis/DefaultApi.ts +6 -0
  129. package/generated/src/models/CreateOrderParams.ts +25 -0
  130. package/package.json +2 -2
  131. package/pmxt/client.ts +92 -11
  132. package/pmxt/hosted-typed-data.ts +17 -1
  133. package/pmxt/models.ts +20 -0
@@ -13,32 +13,6 @@ Name | Type
13
13
  `side` | string
14
14
  `outcomeId` | string
15
15
 
16
- ## Example
17
-
18
- ```typescript
19
- import type { Trade } from 'pmxtjs'
20
-
21
- // TODO: Update the object below with actual values
22
- const example = {
23
- "id": null,
24
- "timestamp": null,
25
- "price": null,
26
- "amount": null,
27
- "side": null,
28
- "outcomeId": null,
29
- } satisfies Trade
30
-
31
- console.log(example)
32
-
33
- // Convert the instance to a JSON string
34
- const exampleJSON: string = JSON.stringify(example)
35
- console.log(exampleJSON)
36
-
37
- // Parse the JSON string back to an object
38
- const exampleParsed = JSON.parse(exampleJSON) as Trade
39
- console.log(exampleParsed)
40
- ```
41
-
42
16
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
43
17
 
44
18
 
@@ -10,29 +10,6 @@ Name | Type
10
10
  `end` | Date
11
11
  `limit` | number
12
12
 
13
- ## Example
14
-
15
- ```typescript
16
- import type { TradesParams } from 'pmxtjs'
17
-
18
- // TODO: Update the object below with actual values
19
- const example = {
20
- "start": null,
21
- "end": null,
22
- "limit": null,
23
- } satisfies TradesParams
24
-
25
- console.log(example)
26
-
27
- // Convert the instance to a JSON string
28
- const exampleJSON: string = JSON.stringify(example)
29
- console.log(exampleJSON)
30
-
31
- // Parse the JSON string back to an object
32
- const exampleParsed = JSON.parse(exampleJSON) as TradesParams
33
- console.log(exampleParsed)
34
- ```
35
-
36
13
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
37
14
 
38
15
 
@@ -21,39 +21,6 @@ Name | Type
21
21
  `sourceMetadata` | { [key: string]: any; }
22
22
  `sourceExchange` | string
23
23
 
24
- ## Example
25
-
26
- ```typescript
27
- import type { UnifiedEvent } from 'pmxtjs'
28
-
29
- // TODO: Update the object below with actual values
30
- const example = {
31
- "id": null,
32
- "title": null,
33
- "description": null,
34
- "slug": null,
35
- "markets": null,
36
- "volume24h": null,
37
- "volume": null,
38
- "url": null,
39
- "image": null,
40
- "category": null,
41
- "tags": null,
42
- "sourceMetadata": null,
43
- "sourceExchange": null,
44
- } satisfies UnifiedEvent
45
-
46
- console.log(example)
47
-
48
- // Convert the instance to a JSON string
49
- const exampleJSON: string = JSON.stringify(example)
50
- console.log(exampleJSON)
51
-
52
- // Parse the JSON string back to an object
53
- const exampleParsed = JSON.parse(exampleJSON) as UnifiedEvent
54
- console.log(exampleParsed)
55
- ```
56
-
57
24
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
58
25
 
59
26
 
@@ -31,50 +31,6 @@ Name | Type
31
31
  `up` | [MarketOutcome](MarketOutcome.md)
32
32
  `down` | [MarketOutcome](MarketOutcome.md)
33
33
 
34
- ## Example
35
-
36
- ```typescript
37
- import type { UnifiedMarket } from 'pmxtjs'
38
-
39
- // TODO: Update the object below with actual values
40
- const example = {
41
- "marketId": null,
42
- "eventId": null,
43
- "title": null,
44
- "description": null,
45
- "slug": null,
46
- "outcomes": null,
47
- "resolutionDate": null,
48
- "volume24h": null,
49
- "volume": null,
50
- "liquidity": null,
51
- "openInterest": null,
52
- "url": null,
53
- "image": null,
54
- "category": null,
55
- "tags": null,
56
- "tickSize": null,
57
- "status": null,
58
- "contractAddress": null,
59
- "sourceMetadata": null,
60
- "sourceExchange": null,
61
- "yes": null,
62
- "no": null,
63
- "up": null,
64
- "down": null,
65
- } satisfies UnifiedMarket
66
-
67
- console.log(example)
68
-
69
- // Convert the instance to a JSON string
70
- const exampleJSON: string = JSON.stringify(example)
71
- console.log(exampleJSON)
72
-
73
- // Parse the JSON string back to an object
74
- const exampleParsed = JSON.parse(exampleJSON) as UnifiedMarket
75
- console.log(exampleParsed)
76
- ```
77
-
78
34
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
79
35
 
80
36
 
@@ -19,37 +19,6 @@ Name | Type
19
19
  `sourceExchange` | string
20
20
  `sourceMetadata` | { [key: string]: any; }
21
21
 
22
- ## Example
23
-
24
- ```typescript
25
- import type { UnifiedSeries } from 'pmxtjs'
26
-
27
- // TODO: Update the object below with actual values
28
- const example = {
29
- "id": null,
30
- "ticker": null,
31
- "slug": null,
32
- "title": null,
33
- "description": null,
34
- "recurrence": null,
35
- "events": null,
36
- "url": null,
37
- "image": null,
38
- "sourceExchange": null,
39
- "sourceMetadata": null,
40
- } satisfies UnifiedSeries
41
-
42
- console.log(example)
43
-
44
- // Convert the instance to a JSON string
45
- const exampleJSON: string = JSON.stringify(example)
46
- console.log(exampleJSON)
47
-
48
- // Parse the JSON string back to an object
49
- const exampleParsed = JSON.parse(exampleJSON) as UnifiedSeries
50
- console.log(exampleParsed)
51
- ```
52
-
53
22
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
54
23
 
55
24
 
@@ -19,38 +19,6 @@ Name | Type
19
19
  `chain` | string
20
20
  `blockNumber` | number
21
21
 
22
- ## Example
23
-
24
- ```typescript
25
- import type { UserTrade } from 'pmxtjs'
26
-
27
- // TODO: Update the object below with actual values
28
- const example = {
29
- "id": null,
30
- "timestamp": null,
31
- "price": null,
32
- "amount": null,
33
- "side": null,
34
- "outcomeId": null,
35
- "orderId": null,
36
- "marketId": null,
37
- "fee": null,
38
- "txHash": null,
39
- "chain": null,
40
- "blockNumber": null,
41
- } satisfies UserTrade
42
-
43
- console.log(example)
44
-
45
- // Convert the instance to a JSON string
46
- const exampleJSON: string = JSON.stringify(example)
47
- console.log(exampleJSON)
48
-
49
- // Parse the JSON string back to an object
50
- const exampleParsed = JSON.parse(exampleJSON) as UserTrade
51
- console.log(exampleParsed)
52
- ```
53
-
54
22
  [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
55
23
 
56
24
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmxtjs",
3
- "version": "2.51.2",
3
+ "version": "2.51.3",
4
4
  "description": "OpenAPI client for pmxtjs",
5
5
  "author": "OpenAPI-Generator",
6
6
  "repository": {
@@ -676,6 +676,7 @@ export class DefaultApi extends runtime.BaseAPI {
676
676
  }
677
677
 
678
678
  /**
679
+ * Fetch authenticated order history across open and closed orders.
679
680
  * Fetch All Orders
680
681
  */
681
682
  async fetchAllOrdersRaw(requestParameters: FetchAllOrdersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchOpenOrders200Response>> {
@@ -725,6 +726,7 @@ export class DefaultApi extends runtime.BaseAPI {
725
726
  }
726
727
 
727
728
  /**
729
+ * Fetch authenticated order history across open and closed orders.
728
730
  * Fetch All Orders
729
731
  */
730
732
  async fetchAllOrders(requestParameters: FetchAllOrdersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchOpenOrders200Response> {
@@ -831,6 +833,7 @@ export class DefaultApi extends runtime.BaseAPI {
831
833
  }
832
834
 
833
835
  /**
836
+ * Fetch authenticated closed orders.
834
837
  * Fetch Closed Orders
835
838
  */
836
839
  async fetchClosedOrdersRaw(requestParameters: FetchClosedOrdersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchOpenOrders200Response>> {
@@ -880,6 +883,7 @@ export class DefaultApi extends runtime.BaseAPI {
880
883
  }
881
884
 
882
885
  /**
886
+ * Fetch authenticated closed orders.
883
887
  * Fetch Closed Orders
884
888
  */
885
889
  async fetchClosedOrders(requestParameters: FetchClosedOrdersRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchOpenOrders200Response> {
@@ -1737,6 +1741,7 @@ export class DefaultApi extends runtime.BaseAPI {
1737
1741
  }
1738
1742
 
1739
1743
  /**
1744
+ * Fetch authenticated user trade history.
1740
1745
  * Fetch My Trades
1741
1746
  */
1742
1747
  async fetchMyTradesRaw(requestParameters: FetchMyTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchMyTrades200Response>> {
@@ -1790,6 +1795,7 @@ export class DefaultApi extends runtime.BaseAPI {
1790
1795
  }
1791
1796
 
1792
1797
  /**
1798
+ * Fetch authenticated user trade history.
1793
1799
  * Fetch My Trades
1794
1800
  */
1795
1801
  async fetchMyTrades(requestParameters: FetchMyTradesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchMyTrades200Response> {
@@ -55,6 +55,18 @@ export interface CreateOrderParams {
55
55
  * @memberof CreateOrderParams
56
56
  */
57
57
  price?: number;
58
+ /**
59
+ * Hosted mode: amount unit.
60
+ * @type {string}
61
+ * @memberof CreateOrderParams
62
+ */
63
+ denom?: CreateOrderParamsDenomEnum;
64
+ /**
65
+ * Hosted mode: maximum market-order slippage percentage.
66
+ * @type {number}
67
+ * @memberof CreateOrderParams
68
+ */
69
+ slippagePct?: number;
58
70
  /**
59
71
  * Optional fee rate (e.g., 1000 for 0.1%)
60
72
  * @type {number}
@@ -100,6 +112,15 @@ export const CreateOrderParamsTypeEnum = {
100
112
  } as const;
101
113
  export type CreateOrderParamsTypeEnum = typeof CreateOrderParamsTypeEnum[keyof typeof CreateOrderParamsTypeEnum];
102
114
 
115
+ /**
116
+ * @export
117
+ */
118
+ export const CreateOrderParamsDenomEnum = {
119
+ Usdc: 'usdc',
120
+ Shares: 'shares'
121
+ } as const;
122
+ export type CreateOrderParamsDenomEnum = typeof CreateOrderParamsDenomEnum[keyof typeof CreateOrderParamsDenomEnum];
123
+
103
124
 
104
125
  /**
105
126
  * Check if a given object implements the CreateOrderParams interface.
@@ -129,6 +150,8 @@ export function CreateOrderParamsFromJSONTyped(json: any, ignoreDiscriminator: b
129
150
  'type': json['type'],
130
151
  'amount': json['amount'],
131
152
  'price': json['price'] == null ? undefined : json['price'],
153
+ 'denom': json['denom'] == null ? undefined : json['denom'],
154
+ 'slippagePct': json['slippage_pct'] == null ? undefined : json['slippage_pct'],
132
155
  'fee': json['fee'] == null ? undefined : json['fee'],
133
156
  'tickSize': json['tickSize'] == null ? undefined : json['tickSize'],
134
157
  'negRisk': json['negRisk'] == null ? undefined : json['negRisk'],
@@ -153,6 +176,8 @@ export function CreateOrderParamsToJSONTyped(value?: CreateOrderParams | null, i
153
176
  'type': value['type'],
154
177
  'amount': value['amount'],
155
178
  'price': value['price'],
179
+ 'denom': value['denom'],
180
+ 'slippage_pct': value['slippagePct'],
156
181
  'fee': value['fee'],
157
182
  'tickSize': value['tickSize'],
158
183
  'negRisk': value['negRisk'],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmxtjs",
3
- "version": "2.51.2",
3
+ "version": "2.51.3",
4
4
  "description": "Unified prediction market data API - The ccxt for prediction markets",
5
5
  "author": "PMXT Contributors",
6
6
  "repository": {
@@ -43,7 +43,7 @@
43
43
  "unified"
44
44
  ],
45
45
  "dependencies": {
46
- "pmxt-core": "2.51.2",
46
+ "pmxt-core": "2.51.3",
47
47
  "ws": "^8.18.0"
48
48
  },
49
49
  "peerDependencies": {
package/pmxt/client.ts CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  Balance,
19
19
  BuiltOrder,
20
- CreateOrderParams,
20
+ CreateOrderInput,
21
21
  EventFetchParams,
22
22
  EventFilterCriteria,
23
23
  EventFilterFunction,
@@ -82,6 +82,7 @@ import {
82
82
  validateEconomics,
83
83
  verifySignature,
84
84
  } from "./hosted-typed-data.js";
85
+ import type { HostedRoute } from "./hosted-typed-data.js";
85
86
  import type { Signer, TypedData } from "./signers.js";
86
87
  import { signerFromPrivateKey, EthersSigner } from "./signers.js";
87
88
  import { Escrow } from "./escrow.js";
@@ -2011,7 +2012,13 @@ export abstract class Exchange {
2011
2012
  throw this.wsTransportUnavailableError("watchAllOrderBooks");
2012
2013
  }
2013
2014
 
2014
- /** @deprecated Use {@link watchAllOrderBooks} instead. */
2015
+ /**
2016
+ * Stream all orderbook updates across venues.
2017
+ *
2018
+ * @deprecated Use {@link watchAllOrderBooks} instead.
2019
+ * @param venues - Optional venue filter
2020
+ * @returns Next event with source, symbol, and orderbook
2021
+ */
2015
2022
  async firehose(venues?: string[]): Promise<FirehoseEvent> {
2016
2023
  return this.watchAllOrderBooks(venues);
2017
2024
  }
@@ -2148,15 +2155,18 @@ export abstract class Exchange {
2148
2155
  * const order = await exchange.submitOrder(built);
2149
2156
  *
2150
2157
  * // Using outcome shorthand:
2158
+ * const yes = market.yes;
2159
+ * if (!yes) throw new Error("Market has no YES outcome");
2160
+ *
2151
2161
  * const built2 = await exchange.buildOrder({
2152
- * outcome: market.yes,
2162
+ * outcome: yes,
2153
2163
  * side: "buy",
2154
2164
  * type: "market",
2155
2165
  * amount: 10
2156
2166
  * });
2157
2167
  * ```
2158
2168
  */
2159
- async buildOrder(params: CreateOrderParams & { outcome?: MarketOutcome }): Promise<BuiltOrder> {
2169
+ async buildOrder(params: CreateOrderInput): Promise<BuiltOrder> {
2160
2170
  if (this.isHostedTradingMode()) {
2161
2171
  return this._hostedBuildOrder(params);
2162
2172
  }
@@ -2310,7 +2320,7 @@ export abstract class Exchange {
2310
2320
  * at submit time.
2311
2321
  */
2312
2322
  private async _hostedBuildOrder(
2313
- params: CreateOrderParams & { outcome?: MarketOutcome },
2323
+ params: CreateOrderInput,
2314
2324
  ): Promise<BuiltOrder> {
2315
2325
  const body = this._hostedBuildOrderBody(params);
2316
2326
  const route = HOSTED_METHOD_ROUTES.get("buildOrder")!;
@@ -2328,7 +2338,7 @@ export abstract class Exchange {
2328
2338
  /**
2329
2339
  * Hosted-mode createOrder: build → sign → submit single-call wrapper.
2330
2340
  */
2331
- private async _hostedCreateOrder(params: any): Promise<Order> {
2341
+ private async _hostedCreateOrder(params: CreateOrderInput): Promise<Order> {
2332
2342
  const built = await this._hostedBuildOrder(params);
2333
2343
  return this._hostedSubmitOrder(built);
2334
2344
  }
@@ -2392,7 +2402,7 @@ export abstract class Exchange {
2392
2402
  * `validateTypedData` / `validateEconomics`. Returns the cross-chain
2393
2403
  * pull-leg route name for Opinion sells and Limitless cross-chain orders.
2394
2404
  */
2395
- private _hostedTypedDataRoute(side: string, isPull: boolean): string {
2405
+ private _hostedTypedDataRoute(side: string, isPull: boolean): HostedRoute {
2396
2406
  const venue = this.exchangeName;
2397
2407
  const sideLower = side.toLowerCase();
2398
2408
  if (venue === "polymarket") {
@@ -2457,10 +2467,12 @@ export abstract class Exchange {
2457
2467
  return orderFromV0(data as Record<string, unknown>);
2458
2468
  }
2459
2469
 
2460
- private _hostedCancelTypedDataRoute(isPull: boolean): string {
2470
+ private _hostedCancelTypedDataRoute(isPull: boolean): HostedRoute {
2461
2471
  const venue = this.exchangeName;
2462
2472
  if (venue === "polymarket") return "cancel_polymarket";
2463
- if (venue === "limitless") return isPull ? "cancel_limitless_base_pull" : "cancel_limitless_polygon";
2473
+ if (venue === "limitless") {
2474
+ return isPull ? "cancel_limitless_base_pull" : "cancel_limitless_polygon";
2475
+ }
2464
2476
  return isPull ? "cancel_opinion_bsc_pull" : "cancel_opinion_polygon";
2465
2477
  }
2466
2478
 
@@ -2470,7 +2482,7 @@ export abstract class Exchange {
2470
2482
  * precision rejected via {@link to6dec}).
2471
2483
  */
2472
2484
  private _hostedBuildOrderBody(
2473
- params: CreateOrderParams & { outcome?: MarketOutcome },
2485
+ params: CreateOrderInput,
2474
2486
  ): Record<string, unknown> {
2475
2487
  let marketId: string | undefined = params.marketId;
2476
2488
  let outcomeId: string | undefined = params.outcomeId;
@@ -2592,7 +2604,7 @@ export abstract class Exchange {
2592
2604
  * });
2593
2605
  * ```
2594
2606
  */
2595
- async createOrder(params: CreateOrderParams & { outcome?: MarketOutcome }): Promise<Order> {
2607
+ async createOrder(params: CreateOrderInput): Promise<Order> {
2596
2608
  // SOR escape path (preserved): legacy hosted SOR flow uses a venue-side
2597
2609
  // SDK to execute the legs, only when a privateKey is present.
2598
2610
  if (this.isHosted && this.exchangeName === 'sor' && this.privateKey) {
@@ -3153,6 +3165,75 @@ export class Limitless extends Exchange {
3153
3165
  constructor(options: ExchangeOptions = {}) {
3154
3166
  super("limitless", options);
3155
3167
  }
3168
+
3169
+ /**
3170
+ * Watch real-time AMM price updates via WebSocket.
3171
+ *
3172
+ * @param marketAddress - Limitless market contract address
3173
+ * @param callback - Optional callback invoked with the returned update
3174
+ * @returns Next price update
3175
+ */
3176
+ async watchPrices(
3177
+ marketAddress: string,
3178
+ callback?: (data: Record<string, any>) => void,
3179
+ ): Promise<Record<string, any>> {
3180
+ await this.initPromise;
3181
+ try {
3182
+ const json = await this.sidecarPostRequest("watchPrices", [marketAddress]);
3183
+ const data = this.handleResponse(json);
3184
+ callback?.(data);
3185
+ return data;
3186
+ } catch (error) {
3187
+ if (error instanceof PmxtError) throw error;
3188
+ throw new PmxtError(`Failed to watch prices: ${error}`);
3189
+ }
3190
+ }
3191
+
3192
+ /**
3193
+ * Watch real-time Limitless user position updates.
3194
+ *
3195
+ * Requires API key authentication.
3196
+ *
3197
+ * @param callback - Optional callback invoked with the returned positions
3198
+ * @returns Next position update payload
3199
+ */
3200
+ async watchUserPositions(
3201
+ callback?: (data: Position[]) => void,
3202
+ ): Promise<Position[]> {
3203
+ await this.initPromise;
3204
+ try {
3205
+ const json = await this.sidecarPostRequest("watchUserPositions", []);
3206
+ const data = this.handleResponse(json).map(convertPosition);
3207
+ callback?.(data);
3208
+ return data;
3209
+ } catch (error) {
3210
+ if (error instanceof PmxtError) throw error;
3211
+ throw new PmxtError(`Failed to watch user positions: ${error}`);
3212
+ }
3213
+ }
3214
+
3215
+ /**
3216
+ * Watch real-time Limitless user transaction updates.
3217
+ *
3218
+ * Requires API key authentication.
3219
+ *
3220
+ * @param callback - Optional callback invoked with the returned update
3221
+ * @returns Next transaction update
3222
+ */
3223
+ async watchUserTransactions(
3224
+ callback?: (data: Record<string, any>) => void,
3225
+ ): Promise<Record<string, any>> {
3226
+ await this.initPromise;
3227
+ try {
3228
+ const json = await this.sidecarPostRequest("watchUserTransactions", []);
3229
+ const data = this.handleResponse(json);
3230
+ callback?.(data);
3231
+ return data;
3232
+ } catch (error) {
3233
+ if (error instanceof PmxtError) throw error;
3234
+ throw new PmxtError(`Failed to watch user transactions: ${error}`);
3235
+ }
3236
+ }
3156
3237
  }
3157
3238
 
3158
3239
  /**
@@ -141,7 +141,9 @@ export type HostedRoute =
141
141
  | "opinion_sell_bsc_pull"
142
142
  | "cancel_polymarket"
143
143
  | "cancel_opinion_polygon"
144
- | "cancel_opinion_bsc_pull";
144
+ | "cancel_opinion_bsc_pull"
145
+ | "cancel_limitless_polygon"
146
+ | "cancel_limitless_base_pull";
145
147
 
146
148
  const SCHEMAS: Readonly<Record<HostedRoute, TypedDataSchema>> = {
147
149
  polymarket_buy: {
@@ -221,6 +223,20 @@ const SCHEMAS: Readonly<Record<HostedRoute, TypedDataSchema>> = {
221
223
  messageKeys: messageKeysFromFields(CANCEL_PULL_FIELDS),
222
224
  walletField: "user",
223
225
  },
226
+ cancel_limitless_polygon: {
227
+ primaryType: "CancelOrder",
228
+ domain: PREFUNDED_DOMAIN,
229
+ fields: CANCEL_ORDER_FIELDS,
230
+ messageKeys: messageKeysFromFields(CANCEL_ORDER_FIELDS),
231
+ walletField: "user",
232
+ },
233
+ cancel_limitless_base_pull: {
234
+ primaryType: "CancelPull",
235
+ domain: LIMITLESS_VENUE_DOMAIN,
236
+ fields: CANCEL_PULL_FIELDS,
237
+ messageKeys: messageKeysFromFields(CANCEL_PULL_FIELDS),
238
+ walletField: "user",
239
+ },
224
240
  };
225
241
 
226
242
  // secp256k1 group order / 2, for canonical low-s check.
package/pmxt/models.ts CHANGED
@@ -549,6 +549,12 @@ export interface CreateOrderParams {
549
549
  /** Limit price (required for limit orders, 0.0-1.0) */
550
550
  price?: number;
551
551
 
552
+ /** Hosted mode: unit that amount is denominated in. Market buys use usdc; market sells and limit orders use shares. */
553
+ denom?: "usdc" | "shares";
554
+
555
+ /** Hosted mode: maximum slippage percentage for market orders. */
556
+ slippage_pct?: number;
557
+
552
558
  /** Optional fee rate (e.g., 1000 for 0.1%) */
553
559
  fee?: number;
554
560
 
@@ -562,6 +568,20 @@ export interface CreateOrderParams {
562
568
  onBehalfOf?: number;
563
569
  }
564
570
 
571
+ /**
572
+ * Public order input accepted by createOrder/buildOrder.
573
+ *
574
+ * Callers can either pass explicit marketId/outcomeId fields, or pass an
575
+ * outcome object returned by fetchMarkets and let the SDK infer those ids.
576
+ */
577
+ export type CreateOrderInput =
578
+ | (CreateOrderParams & { outcome?: never })
579
+ | (Omit<CreateOrderParams, 'marketId' | 'outcomeId'> & {
580
+ outcome: MarketOutcome;
581
+ marketId?: never;
582
+ outcomeId?: never;
583
+ });
584
+
565
585
  /** Alias matching the core MarketFetchParams name. */
566
586
  export type MarketFetchParams = MarketFilterParams;
567
587