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.
- package/README.md +14 -5
- package/dist/esm/generated/src/apis/DefaultApi.d.ts +6 -0
- package/dist/esm/generated/src/apis/DefaultApi.js +6 -0
- package/dist/esm/generated/src/models/CreateOrderParams.d.ts +20 -0
- package/dist/esm/generated/src/models/CreateOrderParams.js +11 -0
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +3 -2
- package/dist/esm/pmxt/client.d.ts +61 -12
- package/dist/esm/pmxt/client.js +126 -21
- package/dist/esm/pmxt/escrow.js +109 -10
- package/dist/esm/pmxt/hosted-typed-data.d.ts +1 -1
- package/dist/esm/pmxt/hosted-typed-data.js +14 -0
- package/dist/esm/pmxt/models.d.ts +17 -0
- package/dist/esm/pmxt/server-manager.js +5 -3
- package/dist/generated/src/apis/DefaultApi.d.ts +6 -0
- package/dist/generated/src/apis/DefaultApi.js +6 -0
- package/dist/generated/src/models/CreateOrderParams.d.ts +20 -0
- package/dist/generated/src/models/CreateOrderParams.js +12 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -1
- package/dist/pmxt/client.d.ts +61 -12
- package/dist/pmxt/client.js +126 -20
- package/dist/pmxt/escrow.js +109 -10
- package/dist/pmxt/hosted-typed-data.d.ts +1 -1
- package/dist/pmxt/hosted-typed-data.js +14 -0
- package/dist/pmxt/models.d.ts +17 -0
- package/dist/pmxt/server-manager.js +5 -3
- package/generated/docs/ArbitrageOpportunity.md +0 -29
- package/generated/docs/Balance.md +0 -25
- package/generated/docs/BaseRequest.md +0 -21
- package/generated/docs/BaseResponse.md +0 -22
- package/generated/docs/BuildOrder200Response.md +0 -23
- package/generated/docs/BuildOrderRequest.md +0 -22
- package/generated/docs/BuiltOrder.md +0 -26
- package/generated/docs/BuiltOrderTx.md +0 -24
- package/generated/docs/CancelOrderRequest.md +0 -22
- package/generated/docs/CloseRequest.md +0 -22
- package/generated/docs/CompareMarketPrices200Response.md +0 -23
- package/generated/docs/CompareMarketPricesRequest.md +0 -22
- package/generated/docs/CreateOrder200Response.md +0 -23
- package/generated/docs/CreateOrderParams.md +2 -30
- package/generated/docs/CreateOrderRequest.md +0 -22
- package/generated/docs/DataFeedsApi.md +0 -329
- package/generated/docs/DefaultApi.md +3 -1438
- package/generated/docs/ErrorDetail.md +0 -25
- package/generated/docs/ErrorResponse.md +0 -22
- package/generated/docs/EventFetchParams.md +0 -35
- package/generated/docs/EventFilterCriteria.md +0 -26
- package/generated/docs/EventFilterCriteriaTotalVolume.md +0 -22
- package/generated/docs/EventMatchResult.md +0 -22
- package/generated/docs/ExchangeCredentials.md +0 -29
- package/generated/docs/ExchangeCredentialsSignatureType.md +0 -20
- package/generated/docs/ExchangeOptions.md +0 -27
- package/generated/docs/ExecutionPriceResult.md +0 -23
- package/generated/docs/FeedFetchHistoricalPrices200Response.md +0 -22
- package/generated/docs/FeedFetchOHLCV200Response.md +0 -22
- package/generated/docs/FeedFetchOracleHistory200Response.md +0 -22
- package/generated/docs/FeedFetchOracleRound200Response.md +0 -22
- package/generated/docs/FeedFetchOrderBook200Response.md +0 -22
- package/generated/docs/FeedFetchOrderBook200ResponseData.md +0 -25
- package/generated/docs/FeedFetchTicker200Response.md +0 -22
- package/generated/docs/FeedFetchTickers200Response.md +0 -22
- package/generated/docs/FeedList200Response.md +0 -22
- package/generated/docs/FeedLoadMarkets200Response.md +0 -22
- package/generated/docs/FeedMarket.md +0 -27
- package/generated/docs/FeedOracleRound.md +0 -28
- package/generated/docs/FeedTicker.md +0 -42
- package/generated/docs/FetchArbitrage200Response.md +0 -23
- package/generated/docs/FetchArbitrageParams.md +0 -24
- package/generated/docs/FetchBalance200Response.md +0 -23
- package/generated/docs/FetchEvent200Response.md +0 -23
- package/generated/docs/FetchEventMatches200Response.md +0 -23
- package/generated/docs/FetchEventMatchesParams.md +0 -29
- package/generated/docs/FetchEvents200Response.md +0 -23
- package/generated/docs/FetchEventsPaginated200Response.md +0 -23
- package/generated/docs/FetchMarket200Response.md +0 -23
- package/generated/docs/FetchMarketMatches200Response.md +0 -23
- package/generated/docs/FetchMarketMatchesParams.md +0 -32
- package/generated/docs/FetchMarkets200Response.md +0 -23
- package/generated/docs/FetchMarketsPaginated200Response.md +0 -23
- package/generated/docs/FetchMatchedMarkets200Response.md +0 -23
- package/generated/docs/FetchMatchedMarketsParams.md +0 -24
- package/generated/docs/FetchMyTrades200Response.md +0 -23
- package/generated/docs/FetchOHLCV200Response.md +0 -23
- package/generated/docs/FetchOpenOrders200Response.md +0 -23
- package/generated/docs/FetchOrderBook200Response.md +0 -23
- package/generated/docs/FetchOrderBookParams.md +0 -24
- package/generated/docs/FetchOrderBooks200Response.md +0 -23
- package/generated/docs/FetchOrderBooksRequest.md +0 -22
- package/generated/docs/FetchPositions200Response.md +0 -23
- package/generated/docs/FetchSeries200Response.md +0 -23
- package/generated/docs/FetchTrades200Response.md +0 -23
- package/generated/docs/FilterEventsRequest.md +0 -22
- package/generated/docs/FilterEventsRequestArgsInner.md +0 -26
- package/generated/docs/FilterMarketsRequest.md +0 -22
- package/generated/docs/FilterMarketsRequestArgsInner.md +0 -31
- package/generated/docs/GetExecutionPrice200Response.md +0 -23
- package/generated/docs/GetExecutionPriceDetailed200Response.md +0 -23
- package/generated/docs/GetExecutionPriceDetailedRequest.md +0 -22
- package/generated/docs/GetExecutionPriceRequest.md +0 -22
- package/generated/docs/GetExecutionPriceRequestArgsInner.md +0 -27
- package/generated/docs/HealthCheck200Response.md +0 -22
- package/generated/docs/HistoryFilterParams.md +0 -24
- package/generated/docs/LoadMarkets200Response.md +0 -23
- package/generated/docs/LoadMarketsRequest.md +0 -22
- package/generated/docs/MarketFilterCriteria.md +0 -31
- package/generated/docs/MarketFilterCriteriaLiquidity.md +0 -22
- package/generated/docs/MarketFilterCriteriaOpenInterest.md +0 -22
- package/generated/docs/MarketFilterCriteriaPrice.md +0 -23
- package/generated/docs/MarketFilterCriteriaResolutionDate.md +0 -22
- package/generated/docs/MarketFilterCriteriaVolume.md +0 -22
- package/generated/docs/MarketFilterCriteriaVolume24h.md +0 -22
- package/generated/docs/MarketFilterParams.md +0 -34
- package/generated/docs/MarketOutcome.md +0 -26
- package/generated/docs/MatchResult.md +0 -27
- package/generated/docs/MatchedMarketPair.md +0 -30
- package/generated/docs/MyTradesParams.md +0 -26
- package/generated/docs/OHLCVParams.md +0 -24
- package/generated/docs/Order.md +0 -37
- package/generated/docs/OrderBook.md +0 -27
- package/generated/docs/OrderHistoryParams.md +0 -25
- package/generated/docs/OrderLevel.md +0 -23
- package/generated/docs/PaginatedEventsResult.md +0 -23
- package/generated/docs/PaginatedMarketsResult.md +0 -23
- package/generated/docs/Position.md +0 -32
- package/generated/docs/PriceCandle.md +0 -26
- package/generated/docs/PriceComparison.md +0 -27
- package/generated/docs/SubmitOrderRequest.md +0 -22
- package/generated/docs/Trade.md +0 -26
- package/generated/docs/TradesParams.md +0 -23
- package/generated/docs/UnifiedEvent.md +0 -33
- package/generated/docs/UnifiedMarket.md +0 -44
- package/generated/docs/UnifiedSeries.md +0 -31
- package/generated/docs/UserTrade.md +0 -32
- package/generated/package.json +1 -1
- package/generated/src/apis/DefaultApi.ts +6 -0
- package/generated/src/models/CreateOrderParams.ts +25 -0
- package/index.ts +3 -2
- package/package.json +2 -2
- package/pmxt/client.ts +153 -28
- package/pmxt/escrow.ts +131 -11
- package/pmxt/hosted-typed-data.ts +17 -1
- package/pmxt/models.ts +20 -0
- 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
|
-
}
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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'],
|
package/dist/esm/index.d.ts
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, 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,
|
|
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
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
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
|
-
/**
|
|
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:
|
|
425
|
+
* outcome: yes,
|
|
416
426
|
* side: "buy",
|
|
417
427
|
* type: "market",
|
|
418
428
|
* amount: 10
|
|
419
429
|
* });
|
|
420
430
|
* ```
|
|
421
431
|
*/
|
|
422
|
-
buildOrder(params:
|
|
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:
|
|
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
|
*
|
package/dist/esm/pmxt/client.js
CHANGED
|
@@ -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
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
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
|
-
*
|
|
333
|
-
*
|
|
334
|
-
*
|
|
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
|
-
|
|
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)
|
|
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)
|
|
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
|
-
/**
|
|
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:
|
|
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
|
*
|