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/dist/esm/pmxt/escrow.js
CHANGED
|
@@ -9,6 +9,80 @@
|
|
|
9
9
|
* Mirrors `sdks/python/pmxt/escrow.py`.
|
|
10
10
|
*/
|
|
11
11
|
import { _tradingRequest, formatRoutePath, HOSTED_METHOD_ROUTES, resolveWalletAddress, } from "./hosted-routing.js";
|
|
12
|
+
import { ValidationError } from "./errors.js";
|
|
13
|
+
const APPROVAL_TOKENS = new Set(["usdc", "ctf"]);
|
|
14
|
+
const WITHDRAW_ACTIONS = new Set(["request", "claim", "cancel"]);
|
|
15
|
+
const USDC_SCALE = 1000000n;
|
|
16
|
+
function isDecimalTokenId(token) {
|
|
17
|
+
return /^[0-9]+$/.test(token);
|
|
18
|
+
}
|
|
19
|
+
function normalizeApprovalToken(token) {
|
|
20
|
+
if (typeof token !== "string") {
|
|
21
|
+
throw new ValidationError("token must be 'usdc', 'ctf', or a decimal CTF token_id string", "token");
|
|
22
|
+
}
|
|
23
|
+
const candidate = token.trim();
|
|
24
|
+
const normalized = candidate.toLowerCase();
|
|
25
|
+
if (APPROVAL_TOKENS.has(normalized)) {
|
|
26
|
+
return normalized;
|
|
27
|
+
}
|
|
28
|
+
if (isDecimalTokenId(candidate)) {
|
|
29
|
+
return candidate;
|
|
30
|
+
}
|
|
31
|
+
throw new ValidationError("token must be 'usdc', 'ctf', or a decimal CTF token_id string", "token");
|
|
32
|
+
}
|
|
33
|
+
function normalizeAmountWei(amountWei) {
|
|
34
|
+
if (amountWei === undefined) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
if (typeof amountWei !== "bigint") {
|
|
38
|
+
throw new ValidationError("amount_wei must be a non-negative integer", "amount_wei");
|
|
39
|
+
}
|
|
40
|
+
if (amountWei < 0n) {
|
|
41
|
+
throw new ValidationError("amount_wei must be non-negative", "amount_wei");
|
|
42
|
+
}
|
|
43
|
+
return amountWei.toString();
|
|
44
|
+
}
|
|
45
|
+
function validateUsdcDecimal(value, field) {
|
|
46
|
+
const match = /^([0-9]+)(?:\.([0-9]+))?$/.exec(value);
|
|
47
|
+
if (!match) {
|
|
48
|
+
throw new ValidationError(`${field} must be a finite positive number`, field);
|
|
49
|
+
}
|
|
50
|
+
const fractional = match[2] ?? "";
|
|
51
|
+
if (fractional.length > 6) {
|
|
52
|
+
throw new ValidationError(`${field} precision exceeds 6 decimals; max precision for USDC is 0.000001`, field);
|
|
53
|
+
}
|
|
54
|
+
const scaled = BigInt(match[1]) * USDC_SCALE + BigInt(fractional.padEnd(6, "0"));
|
|
55
|
+
if (scaled <= 0n) {
|
|
56
|
+
throw new ValidationError(`${field} must be positive`, field);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function normalizeUsdcAmount(value, field = "amount") {
|
|
60
|
+
if (typeof value === "bigint") {
|
|
61
|
+
if (value <= 0n) {
|
|
62
|
+
throw new ValidationError(`${field} must be positive`, field);
|
|
63
|
+
}
|
|
64
|
+
return value.toString();
|
|
65
|
+
}
|
|
66
|
+
if (typeof value === "number") {
|
|
67
|
+
if (!Number.isFinite(value)) {
|
|
68
|
+
throw new ValidationError(`${field} must be a finite positive number`, field);
|
|
69
|
+
}
|
|
70
|
+
validateUsdcDecimal(String(value), field);
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
if (typeof value === "string") {
|
|
74
|
+
const trimmed = value.trim();
|
|
75
|
+
validateUsdcDecimal(trimmed, field);
|
|
76
|
+
return trimmed;
|
|
77
|
+
}
|
|
78
|
+
throw new ValidationError(`${field} must be a finite positive number`, field);
|
|
79
|
+
}
|
|
80
|
+
function normalizeWithdrawAction(action) {
|
|
81
|
+
if (typeof action === "string" && WITHDRAW_ACTIONS.has(action)) {
|
|
82
|
+
return action;
|
|
83
|
+
}
|
|
84
|
+
throw new ValidationError("action must be 'request', 'claim', or 'cancel'", "action");
|
|
85
|
+
}
|
|
12
86
|
export class Escrow {
|
|
13
87
|
client;
|
|
14
88
|
constructor(client) {
|
|
@@ -19,13 +93,16 @@ export class Escrow {
|
|
|
19
93
|
* `amountWei` is omitted, the server returns an unlimited approval.
|
|
20
94
|
*/
|
|
21
95
|
async approveTx(token, amountWei) {
|
|
96
|
+
const address = resolveWalletAddress(this.client);
|
|
97
|
+
const approvalAmount = normalizeAmountWei(amountWei);
|
|
22
98
|
const route = HOSTED_METHOD_ROUTES.get("escrowApproveTx");
|
|
23
99
|
return _tradingRequest(this.client, {
|
|
24
100
|
method: route.method,
|
|
25
101
|
path: route.path,
|
|
26
102
|
body: {
|
|
27
|
-
token,
|
|
28
|
-
|
|
103
|
+
token: normalizeApprovalToken(token),
|
|
104
|
+
user_address: address,
|
|
105
|
+
...(approvalAmount === undefined ? {} : { amount_wei: approvalAmount }),
|
|
29
106
|
},
|
|
30
107
|
});
|
|
31
108
|
}
|
|
@@ -34,12 +111,15 @@ export class Escrow {
|
|
|
34
111
|
* grid). Accepts number, decimal string, or BigInt in micro-units.
|
|
35
112
|
*/
|
|
36
113
|
async depositTx(amount) {
|
|
114
|
+
const address = resolveWalletAddress(this.client);
|
|
37
115
|
const route = HOSTED_METHOD_ROUTES.get("escrowDepositTx");
|
|
38
116
|
return _tradingRequest(this.client, {
|
|
39
117
|
method: route.method,
|
|
40
118
|
path: route.path,
|
|
41
119
|
body: {
|
|
42
|
-
|
|
120
|
+
token: "usdc",
|
|
121
|
+
amount: normalizeUsdcAmount(amount),
|
|
122
|
+
user_address: address,
|
|
43
123
|
},
|
|
44
124
|
});
|
|
45
125
|
}
|
|
@@ -49,16 +129,31 @@ export class Escrow {
|
|
|
49
129
|
* the timelock, `cancel` aborts a pending request.
|
|
50
130
|
*/
|
|
51
131
|
async withdrawTx(action, amount) {
|
|
132
|
+
const normalizedAction = normalizeWithdrawAction(action);
|
|
133
|
+
const address = resolveWalletAddress(this.client);
|
|
52
134
|
const route = HOSTED_METHOD_ROUTES.get("escrowWithdrawTx");
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
135
|
+
if (normalizedAction === "request") {
|
|
136
|
+
if (amount === undefined) {
|
|
137
|
+
throw new ValidationError("amount is required when action='request'", "amount");
|
|
138
|
+
}
|
|
139
|
+
return _tradingRequest(this.client, {
|
|
140
|
+
method: route.method,
|
|
141
|
+
path: route.path,
|
|
142
|
+
body: {
|
|
143
|
+
action: normalizedAction,
|
|
144
|
+
token: "usdc",
|
|
145
|
+
amount: normalizeUsdcAmount(amount),
|
|
146
|
+
user_address: address,
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
if (amount !== undefined) {
|
|
151
|
+
throw new ValidationError(`amount must be omitted when action='${normalizedAction}'`, "amount");
|
|
152
|
+
}
|
|
58
153
|
return _tradingRequest(this.client, {
|
|
59
154
|
method: route.method,
|
|
60
155
|
path: route.path,
|
|
61
|
-
body: { action,
|
|
156
|
+
body: { action: normalizedAction, token: "usdc", user_address: address },
|
|
62
157
|
});
|
|
63
158
|
}
|
|
64
159
|
/**
|
|
@@ -67,12 +162,16 @@ export class Escrow {
|
|
|
67
162
|
*/
|
|
68
163
|
async withdrawals(opts = {}) {
|
|
69
164
|
const address = resolveWalletAddress(this.client, opts.address);
|
|
165
|
+
const include = (opts.include ?? "pending,events").trim();
|
|
166
|
+
if (!include) {
|
|
167
|
+
throw new ValidationError("include must not be empty", "include");
|
|
168
|
+
}
|
|
70
169
|
const route = HOSTED_METHOD_ROUTES.get("escrowWithdrawals");
|
|
71
170
|
const path = formatRoutePath(route, { address });
|
|
72
171
|
return _tradingRequest(this.client, {
|
|
73
172
|
method: route.method,
|
|
74
173
|
path,
|
|
75
|
-
params: { include
|
|
174
|
+
params: { include },
|
|
76
175
|
});
|
|
77
176
|
}
|
|
78
177
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Layer 3 uses the optional `ethers` peer dependency for typed-data verification.
|
|
10
10
|
*/
|
|
11
11
|
import { TypedData } from "./signers.js";
|
|
12
|
-
export type HostedRoute = "polymarket_buy" | "polymarket_sell" | "limitless_buy" | "limitless_sell_polygon" | "limitless_sell_base_pull" | "opinion_buy" | "opinion_sell_polygon" | "opinion_sell_bsc_pull" | "cancel_polymarket" | "cancel_opinion_polygon" | "cancel_opinion_bsc_pull";
|
|
12
|
+
export type HostedRoute = "polymarket_buy" | "polymarket_sell" | "limitless_buy" | "limitless_sell_polygon" | "limitless_sell_base_pull" | "opinion_buy" | "opinion_sell_polygon" | "opinion_sell_bsc_pull" | "cancel_polymarket" | "cancel_opinion_polygon" | "cancel_opinion_bsc_pull" | "cancel_limitless_polygon" | "cancel_limitless_base_pull";
|
|
13
13
|
export declare const SECP256K1_HALF_N = 57896044618658097711785492504343953926418782139537452191302581570759080747168n;
|
|
14
14
|
/**
|
|
15
15
|
* Validate the structural shape of a typed-data payload before signing.
|
|
@@ -172,6 +172,20 @@ const SCHEMAS = {
|
|
|
172
172
|
messageKeys: messageKeysFromFields(CANCEL_PULL_FIELDS),
|
|
173
173
|
walletField: "user",
|
|
174
174
|
},
|
|
175
|
+
cancel_limitless_polygon: {
|
|
176
|
+
primaryType: "CancelOrder",
|
|
177
|
+
domain: PREFUNDED_DOMAIN,
|
|
178
|
+
fields: CANCEL_ORDER_FIELDS,
|
|
179
|
+
messageKeys: messageKeysFromFields(CANCEL_ORDER_FIELDS),
|
|
180
|
+
walletField: "user",
|
|
181
|
+
},
|
|
182
|
+
cancel_limitless_base_pull: {
|
|
183
|
+
primaryType: "CancelPull",
|
|
184
|
+
domain: LIMITLESS_VENUE_DOMAIN,
|
|
185
|
+
fields: CANCEL_PULL_FIELDS,
|
|
186
|
+
messageKeys: messageKeysFromFields(CANCEL_PULL_FIELDS),
|
|
187
|
+
walletField: "user",
|
|
188
|
+
},
|
|
175
189
|
};
|
|
176
190
|
// secp256k1 group order / 2, for canonical low-s check.
|
|
177
191
|
export const SECP256K1_HALF_N = 0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0n;
|
|
@@ -400,6 +400,10 @@ export interface CreateOrderParams {
|
|
|
400
400
|
amount: number;
|
|
401
401
|
/** Limit price (required for limit orders, 0.0-1.0) */
|
|
402
402
|
price?: number;
|
|
403
|
+
/** Hosted mode: unit that amount is denominated in. Market buys use usdc; market sells and limit orders use shares. */
|
|
404
|
+
denom?: "usdc" | "shares";
|
|
405
|
+
/** Hosted mode: maximum slippage percentage for market orders. */
|
|
406
|
+
slippage_pct?: number;
|
|
403
407
|
/** Optional fee rate (e.g., 1000 for 0.1%) */
|
|
404
408
|
fee?: number;
|
|
405
409
|
/** Optional override for Limitless/Polymarket */
|
|
@@ -409,6 +413,19 @@ export interface CreateOrderParams {
|
|
|
409
413
|
/** Limitless delegated signing: profile ID to trade on behalf of */
|
|
410
414
|
onBehalfOf?: number;
|
|
411
415
|
}
|
|
416
|
+
/**
|
|
417
|
+
* Public order input accepted by createOrder/buildOrder.
|
|
418
|
+
*
|
|
419
|
+
* Callers can either pass explicit marketId/outcomeId fields, or pass an
|
|
420
|
+
* outcome object returned by fetchMarkets and let the SDK infer those ids.
|
|
421
|
+
*/
|
|
422
|
+
export type CreateOrderInput = (CreateOrderParams & {
|
|
423
|
+
outcome?: never;
|
|
424
|
+
}) | (Omit<CreateOrderParams, 'marketId' | 'outcomeId'> & {
|
|
425
|
+
outcome: MarketOutcome;
|
|
426
|
+
marketId?: never;
|
|
427
|
+
outcomeId?: never;
|
|
428
|
+
});
|
|
412
429
|
/** Alias matching the core MarketFetchParams name. */
|
|
413
430
|
export type MarketFetchParams = MarketFilterParams;
|
|
414
431
|
/**
|
|
@@ -81,12 +81,14 @@ export class ServerManager {
|
|
|
81
81
|
* Check if the server is running.
|
|
82
82
|
*/
|
|
83
83
|
async isServerRunning() {
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
const info = this.getServerInfo();
|
|
85
|
+
if (!info?.port) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
86
88
|
try {
|
|
87
89
|
// Use native fetch to check health on the actual running port
|
|
88
90
|
// This avoids issues where this.api is configured with the wrong port
|
|
89
|
-
const response = await fetch(`http://localhost:${port}/health`, {
|
|
91
|
+
const response = await fetch(`http://localhost:${info.port}/health`, {
|
|
90
92
|
signal: AbortSignal.timeout(5_000),
|
|
91
93
|
});
|
|
92
94
|
if (response.ok) {
|
|
@@ -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>;
|
|
@@ -205,6 +205,7 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
205
205
|
return await response.value();
|
|
206
206
|
}
|
|
207
207
|
/**
|
|
208
|
+
* Fetch authenticated order history across open and closed orders.
|
|
208
209
|
* Fetch All Orders
|
|
209
210
|
*/
|
|
210
211
|
async fetchAllOrdersRaw(requestParameters, initOverrides) {
|
|
@@ -239,6 +240,7 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
239
240
|
return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.FetchOpenOrders200ResponseFromJSON)(jsonValue));
|
|
240
241
|
}
|
|
241
242
|
/**
|
|
243
|
+
* Fetch authenticated order history across open and closed orders.
|
|
242
244
|
* Fetch All Orders
|
|
243
245
|
*/
|
|
244
246
|
async fetchAllOrders(requestParameters, initOverrides) {
|
|
@@ -317,6 +319,7 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
317
319
|
return await response.value();
|
|
318
320
|
}
|
|
319
321
|
/**
|
|
322
|
+
* Fetch authenticated closed orders.
|
|
320
323
|
* Fetch Closed Orders
|
|
321
324
|
*/
|
|
322
325
|
async fetchClosedOrdersRaw(requestParameters, initOverrides) {
|
|
@@ -351,6 +354,7 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
351
354
|
return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.FetchOpenOrders200ResponseFromJSON)(jsonValue));
|
|
352
355
|
}
|
|
353
356
|
/**
|
|
357
|
+
* Fetch authenticated closed orders.
|
|
354
358
|
* Fetch Closed Orders
|
|
355
359
|
*/
|
|
356
360
|
async fetchClosedOrders(requestParameters, initOverrides) {
|
|
@@ -981,6 +985,7 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
981
985
|
return await response.value();
|
|
982
986
|
}
|
|
983
987
|
/**
|
|
988
|
+
* Fetch authenticated user trade history.
|
|
984
989
|
* Fetch My Trades
|
|
985
990
|
*/
|
|
986
991
|
async fetchMyTradesRaw(requestParameters, initOverrides) {
|
|
@@ -1018,6 +1023,7 @@ class DefaultApi extends runtime.BaseAPI {
|
|
|
1018
1023
|
return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.FetchMyTrades200ResponseFromJSON)(jsonValue));
|
|
1019
1024
|
}
|
|
1020
1025
|
/**
|
|
1026
|
+
* Fetch authenticated user trade history.
|
|
1021
1027
|
* Fetch My Trades
|
|
1022
1028
|
*/
|
|
1023
1029
|
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
|
*/
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Do not edit the class manually.
|
|
14
14
|
*/
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.CreateOrderParamsTypeEnum = exports.CreateOrderParamsSideEnum = void 0;
|
|
16
|
+
exports.CreateOrderParamsDenomEnum = exports.CreateOrderParamsTypeEnum = exports.CreateOrderParamsSideEnum = void 0;
|
|
17
17
|
exports.instanceOfCreateOrderParams = instanceOfCreateOrderParams;
|
|
18
18
|
exports.CreateOrderParamsFromJSON = CreateOrderParamsFromJSON;
|
|
19
19
|
exports.CreateOrderParamsFromJSONTyped = CreateOrderParamsFromJSONTyped;
|
|
@@ -33,6 +33,13 @@ exports.CreateOrderParamsTypeEnum = {
|
|
|
33
33
|
Market: 'market',
|
|
34
34
|
Limit: 'limit'
|
|
35
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* @export
|
|
38
|
+
*/
|
|
39
|
+
exports.CreateOrderParamsDenomEnum = {
|
|
40
|
+
Usdc: 'usdc',
|
|
41
|
+
Shares: 'shares'
|
|
42
|
+
};
|
|
36
43
|
/**
|
|
37
44
|
* Check if a given object implements the CreateOrderParams interface.
|
|
38
45
|
*/
|
|
@@ -63,6 +70,8 @@ function CreateOrderParamsFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
63
70
|
'type': json['type'],
|
|
64
71
|
'amount': json['amount'],
|
|
65
72
|
'price': json['price'] == null ? undefined : json['price'],
|
|
73
|
+
'denom': json['denom'] == null ? undefined : json['denom'],
|
|
74
|
+
'slippagePct': json['slippage_pct'] == null ? undefined : json['slippage_pct'],
|
|
66
75
|
'fee': json['fee'] == null ? undefined : json['fee'],
|
|
67
76
|
'tickSize': json['tickSize'] == null ? undefined : json['tickSize'],
|
|
68
77
|
'negRisk': json['negRisk'] == null ? undefined : json['negRisk'],
|
|
@@ -83,6 +92,8 @@ function CreateOrderParamsToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
83
92
|
'type': value['type'],
|
|
84
93
|
'amount': value['amount'],
|
|
85
94
|
'price': value['price'],
|
|
95
|
+
'denom': value['denom'],
|
|
96
|
+
'slippage_pct': value['slippagePct'],
|
|
86
97
|
'fee': value['fee'],
|
|
87
98
|
'tickSize': value['tickSize'],
|
|
88
99
|
'negRisk': value['negRisk'],
|
package/dist/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/index.js
CHANGED
|
@@ -55,7 +55,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
55
55
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
56
56
|
};
|
|
57
57
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
|
-
exports.server = exports.MarketList = exports.LIMITLESS_VENUE_ESCROW_ADDRESSES = exports.VENUE_ESCROW_ADDRESSES = exports.PREFUNDED_ESCROW_ADDRESSES = exports.resolvePmxtBaseUrl = exports.ENV = exports.LOCAL_URL = exports.HOSTED_URL = exports.ServerManager = exports.Router = exports.FeedClient = exports.Mock = exports.Rain = exports.Suibets = exports.SuiBets = exports.Hyperliquid = exports.GeminiTitan = exports.PolymarketUS = exports.Smarkets = exports.Metaculus = exports.Opinion = exports.Baozi = exports.Probable = exports.Myriad = exports.Limitless = exports.KalshiDemo = exports.Kalshi = exports.Polymarket = exports.Exchange = void 0;
|
|
58
|
+
exports.server = exports.MarketList = exports.LIMITLESS_VENUE_ESCROW_ADDRESSES = exports.VENUE_ESCROW_ADDRESSES = exports.PREFUNDED_ESCROW_ADDRESSES = exports.resolvePmxtBaseUrl = exports.ENV = exports.LOCAL_URL = exports.HOSTED_URL = exports.ServerManager = exports.Router = exports.FeedClient = exports.Mock = exports.Hunch = exports.Rain = exports.Suibets = exports.SuiBets = exports.Hyperliquid = exports.GeminiTitan = exports.PolymarketUS = exports.Smarkets = exports.Metaculus = exports.Opinion = exports.Baozi = exports.Probable = exports.Myriad = exports.Limitless = exports.KalshiDemo = exports.Kalshi = exports.Polymarket = exports.Exchange = void 0;
|
|
59
59
|
const client_js_1 = require("./pmxt/client.js");
|
|
60
60
|
const router_js_1 = require("./pmxt/router.js");
|
|
61
61
|
const server_manager_js_1 = require("./pmxt/server-manager.js");
|
|
@@ -80,6 +80,7 @@ Object.defineProperty(exports, "Hyperliquid", { enumerable: true, get: function
|
|
|
80
80
|
Object.defineProperty(exports, "SuiBets", { enumerable: true, get: function () { return client_js_2.SuiBets; } });
|
|
81
81
|
Object.defineProperty(exports, "Suibets", { enumerable: true, get: function () { return client_js_2.Suibets; } });
|
|
82
82
|
Object.defineProperty(exports, "Rain", { enumerable: true, get: function () { return client_js_2.Rain; } });
|
|
83
|
+
Object.defineProperty(exports, "Hunch", { enumerable: true, get: function () { return client_js_2.Hunch; } });
|
|
83
84
|
Object.defineProperty(exports, "Mock", { enumerable: true, get: function () { return client_js_2.Mock; } });
|
|
84
85
|
var feed_client_js_2 = require("./pmxt/feed-client.js");
|
|
85
86
|
Object.defineProperty(exports, "FeedClient", { enumerable: true, get: function () { return feed_client_js_2.FeedClient; } });
|
|
@@ -146,6 +147,7 @@ const pmxt = {
|
|
|
146
147
|
SuiBets: client_js_1.SuiBets,
|
|
147
148
|
Suibets: client_js_1.Suibets,
|
|
148
149
|
Rain: client_js_1.Rain,
|
|
150
|
+
Hunch: client_js_1.Hunch,
|
|
149
151
|
Mock: client_js_1.Mock,
|
|
150
152
|
Router: router_js_1.Router,
|
|
151
153
|
ServerManager: server_manager_js_1.ServerManager,
|
package/dist/pmxt/client.d.ts
CHANGED
|
@@ -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
|
*
|