pmxtjs 2.9.2 → 2.9.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/dist/esm/generated/src/apis/DefaultApi.d.ts +242 -112
- package/dist/esm/generated/src/apis/DefaultApi.js +298 -108
- package/dist/esm/generated/src/models/BuildOrder200Response.d.ts +46 -0
- package/dist/esm/generated/src/models/BuildOrder200Response.js +47 -0
- package/dist/esm/generated/src/models/BuildOrderRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/BuildOrderRequest.js +47 -0
- package/dist/esm/generated/src/models/BuiltOrder.d.ts +60 -0
- package/dist/esm/generated/src/models/BuiltOrder.js +51 -0
- package/dist/esm/generated/src/models/BuiltOrderTx.d.ts +50 -0
- package/dist/esm/generated/src/models/BuiltOrderTx.js +47 -0
- package/dist/esm/generated/src/models/CloseRequest.d.ts +39 -0
- package/dist/esm/generated/src/models/{WatchUserPositionsRequest.js → CloseRequest.js} +10 -8
- package/dist/esm/generated/src/models/EventFetchParams.d.ts +15 -0
- package/dist/esm/generated/src/models/EventFetchParams.js +10 -0
- package/dist/esm/generated/src/models/FetchAllOrdersRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/FetchAllOrdersRequest.js +45 -0
- package/dist/esm/generated/src/models/FetchBalanceRequest.d.ts +39 -0
- package/dist/esm/generated/src/models/FetchBalanceRequest.js +44 -0
- package/dist/esm/generated/src/models/FetchClosedOrdersRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/FetchClosedOrdersRequest.js +45 -0
- package/dist/esm/generated/src/models/FetchEventRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/FetchEventRequest.js +45 -0
- package/dist/esm/generated/src/models/FetchMarketsPaginated200Response.d.ts +46 -0
- package/dist/esm/generated/src/models/FetchMarketsPaginated200Response.js +47 -0
- package/dist/esm/generated/src/models/FetchMarketsPaginatedRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/FetchMarketsPaginatedRequest.js +45 -0
- package/dist/esm/generated/src/models/FetchMarketsPaginatedRequestArgsInner.d.ts +38 -0
- package/dist/esm/generated/src/models/FetchMarketsPaginatedRequestArgsInner.js +43 -0
- package/dist/esm/generated/src/models/FetchMarketsRequest.d.ts +0 -6
- package/dist/esm/generated/src/models/FetchMarketsRequest.js +0 -2
- package/dist/esm/generated/src/models/FetchMyTrades200Response.d.ts +46 -0
- package/dist/esm/generated/src/models/FetchMyTrades200Response.js +47 -0
- package/dist/esm/generated/src/models/FetchMyTradesRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/FetchMyTradesRequest.js +45 -0
- package/dist/esm/generated/src/models/FetchOHLCVRequest.d.ts +1 -1
- package/dist/esm/generated/src/models/{WatchPricesRequest.d.ts → FetchOrderRequest.d.ts} +10 -10
- package/dist/esm/generated/src/models/{WatchPricesRequest.js → FetchOrderRequest.js} +8 -8
- package/dist/esm/generated/src/models/FetchPositionsRequest.d.ts +1 -1
- package/dist/esm/generated/src/models/FetchTradesRequest.d.ts +1 -1
- package/dist/esm/generated/src/models/FetchTradesRequestArgsInner.d.ts +2 -2
- package/dist/esm/generated/src/models/FetchTradesRequestArgsInner.js +5 -5
- package/dist/esm/generated/src/models/FetchTradesRequestArgsInnerOneOf.d.ts +24 -0
- package/dist/esm/generated/src/models/FetchTradesRequestArgsInnerOneOf.js +54 -0
- package/dist/esm/generated/src/models/FilterEventsRequest.d.ts +1 -1
- package/dist/esm/generated/src/models/FilterEventsRequestArgsInner.js +3 -3
- package/dist/esm/generated/src/models/FilterMarketsRequest.d.ts +1 -1
- package/dist/esm/generated/src/models/FilterMarketsRequestArgsInner.js +3 -3
- package/dist/esm/generated/src/models/FilterMarketsRequestArgsInnerOneOf.d.ts +2 -2
- package/dist/esm/generated/src/models/FilterMarketsRequestArgsInnerOneOf.js +5 -1
- package/dist/esm/generated/src/models/GetExecutionPriceDetailedRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/GetExecutionPriceDetailedRequest.js +47 -0
- package/dist/esm/generated/src/models/GetExecutionPriceRequest.d.ts +1 -1
- package/dist/esm/generated/src/models/LoadMarkets200Response.d.ts +48 -0
- package/dist/esm/generated/src/models/LoadMarkets200Response.js +48 -0
- package/dist/esm/generated/src/models/LoadMarketsRequest.d.ts +39 -0
- package/dist/esm/generated/src/models/LoadMarketsRequest.js +44 -0
- package/dist/esm/generated/src/models/MyTradesParams.d.ts +62 -0
- package/dist/esm/generated/src/models/MyTradesParams.js +51 -0
- package/dist/esm/generated/src/models/OrderHistoryParams.d.ts +56 -0
- package/dist/esm/generated/src/models/OrderHistoryParams.js +49 -0
- package/dist/esm/generated/src/models/PaginatedMarketsResult.d.ts +45 -0
- package/dist/esm/generated/src/models/PaginatedMarketsResult.js +46 -0
- package/dist/esm/generated/src/models/SubmitOrderRequest.d.ts +40 -0
- package/dist/esm/generated/src/models/SubmitOrderRequest.js +47 -0
- package/dist/esm/generated/src/models/UnifiedMarket.d.ts +6 -0
- package/dist/esm/generated/src/models/UnifiedMarket.js +2 -0
- package/dist/esm/generated/src/models/UserTrade.d.ts +83 -0
- package/dist/esm/generated/src/models/UserTrade.js +63 -0
- package/dist/esm/generated/src/models/WatchOrderBookRequest.d.ts +1 -1
- package/dist/esm/generated/src/models/WatchTradesRequest.d.ts +1 -1
- package/dist/esm/generated/src/models/index.d.ts +24 -2
- package/dist/esm/generated/src/models/index.js +24 -2
- package/dist/esm/index.d.ts +6 -2
- package/dist/esm/index.js +6 -2
- package/dist/esm/pmxt/client.d.ts +107 -81
- package/dist/esm/pmxt/client.js +462 -227
- package/dist/esm/pmxt/models.d.ts +34 -0
- package/dist/esm/pmxt/server-manager.d.ts +2 -0
- package/dist/esm/pmxt/server-manager.js +15 -2
- package/dist/generated/src/apis/DefaultApi.d.ts +242 -112
- package/dist/generated/src/apis/DefaultApi.js +298 -108
- package/dist/generated/src/models/BuildOrder200Response.d.ts +46 -0
- package/dist/generated/src/models/BuildOrder200Response.js +54 -0
- package/dist/generated/src/models/BuildOrderRequest.d.ts +40 -0
- package/dist/generated/src/models/BuildOrderRequest.js +54 -0
- package/dist/generated/src/models/BuiltOrder.d.ts +60 -0
- package/dist/generated/src/models/BuiltOrder.js +58 -0
- package/dist/generated/src/models/BuiltOrderTx.d.ts +50 -0
- package/dist/generated/src/models/BuiltOrderTx.js +54 -0
- package/dist/generated/src/models/CloseRequest.d.ts +39 -0
- package/dist/generated/src/models/{WatchUserPositionsRequest.js → CloseRequest.js} +15 -13
- package/dist/generated/src/models/EventFetchParams.d.ts +15 -0
- package/dist/generated/src/models/EventFetchParams.js +11 -1
- package/dist/generated/src/models/FetchAllOrdersRequest.d.ts +40 -0
- package/dist/generated/src/models/FetchAllOrdersRequest.js +52 -0
- package/dist/generated/src/models/FetchBalanceRequest.d.ts +39 -0
- package/dist/generated/src/models/FetchBalanceRequest.js +51 -0
- package/dist/generated/src/models/FetchClosedOrdersRequest.d.ts +40 -0
- package/dist/generated/src/models/FetchClosedOrdersRequest.js +52 -0
- package/dist/generated/src/models/FetchEventRequest.d.ts +40 -0
- package/dist/generated/src/models/FetchEventRequest.js +52 -0
- package/dist/generated/src/models/FetchMarketsPaginated200Response.d.ts +46 -0
- package/dist/generated/src/models/FetchMarketsPaginated200Response.js +54 -0
- package/dist/generated/src/models/FetchMarketsPaginatedRequest.d.ts +40 -0
- package/dist/generated/src/models/FetchMarketsPaginatedRequest.js +52 -0
- package/dist/generated/src/models/FetchMarketsPaginatedRequestArgsInner.d.ts +38 -0
- package/dist/generated/src/models/FetchMarketsPaginatedRequestArgsInner.js +50 -0
- package/dist/generated/src/models/FetchMarketsRequest.d.ts +0 -6
- package/dist/generated/src/models/FetchMarketsRequest.js +0 -2
- package/dist/generated/src/models/FetchMyTrades200Response.d.ts +46 -0
- package/dist/generated/src/models/FetchMyTrades200Response.js +54 -0
- package/dist/generated/src/models/FetchMyTradesRequest.d.ts +40 -0
- package/dist/generated/src/models/FetchMyTradesRequest.js +52 -0
- package/dist/generated/src/models/FetchOHLCVRequest.d.ts +1 -1
- package/dist/generated/src/models/{WatchPricesRequest.d.ts → FetchOrderRequest.d.ts} +10 -10
- package/dist/generated/src/models/{WatchPricesRequest.js → FetchOrderRequest.js} +13 -13
- package/dist/generated/src/models/FetchPositionsRequest.d.ts +1 -1
- package/dist/generated/src/models/FetchTradesRequest.d.ts +1 -1
- package/dist/generated/src/models/FetchTradesRequestArgsInner.d.ts +2 -2
- package/dist/generated/src/models/FetchTradesRequestArgsInner.js +5 -5
- package/dist/generated/src/models/FetchTradesRequestArgsInnerOneOf.d.ts +24 -0
- package/dist/generated/src/models/FetchTradesRequestArgsInnerOneOf.js +61 -0
- package/dist/generated/src/models/FilterEventsRequest.d.ts +1 -1
- package/dist/generated/src/models/FilterEventsRequestArgsInner.js +3 -3
- package/dist/generated/src/models/FilterMarketsRequest.d.ts +1 -1
- package/dist/generated/src/models/FilterMarketsRequestArgsInner.js +3 -3
- package/dist/generated/src/models/FilterMarketsRequestArgsInnerOneOf.d.ts +2 -2
- package/dist/generated/src/models/FilterMarketsRequestArgsInnerOneOf.js +5 -1
- package/dist/generated/src/models/GetExecutionPriceDetailedRequest.d.ts +40 -0
- package/dist/generated/src/models/GetExecutionPriceDetailedRequest.js +54 -0
- package/dist/generated/src/models/GetExecutionPriceRequest.d.ts +1 -1
- package/dist/generated/src/models/LoadMarkets200Response.d.ts +48 -0
- package/dist/generated/src/models/LoadMarkets200Response.js +55 -0
- package/dist/generated/src/models/LoadMarketsRequest.d.ts +39 -0
- package/dist/generated/src/models/LoadMarketsRequest.js +51 -0
- package/dist/generated/src/models/MyTradesParams.d.ts +62 -0
- package/dist/generated/src/models/MyTradesParams.js +58 -0
- package/dist/generated/src/models/OrderHistoryParams.d.ts +56 -0
- package/dist/generated/src/models/OrderHistoryParams.js +56 -0
- package/dist/generated/src/models/PaginatedMarketsResult.d.ts +45 -0
- package/dist/generated/src/models/PaginatedMarketsResult.js +53 -0
- package/dist/generated/src/models/SubmitOrderRequest.d.ts +40 -0
- package/dist/generated/src/models/SubmitOrderRequest.js +54 -0
- package/dist/generated/src/models/UnifiedMarket.d.ts +6 -0
- package/dist/generated/src/models/UnifiedMarket.js +2 -0
- package/dist/generated/src/models/UserTrade.d.ts +83 -0
- package/dist/generated/src/models/UserTrade.js +71 -0
- package/dist/generated/src/models/WatchOrderBookRequest.d.ts +1 -1
- package/dist/generated/src/models/WatchTradesRequest.d.ts +1 -1
- package/dist/generated/src/models/index.d.ts +24 -2
- package/dist/generated/src/models/index.js +24 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +9 -1
- package/dist/pmxt/client.d.ts +107 -81
- package/dist/pmxt/client.js +467 -228
- package/dist/pmxt/models.d.ts +34 -0
- package/dist/pmxt/server-manager.d.ts +2 -0
- package/dist/pmxt/server-manager.js +15 -2
- package/generated/.openapi-generator/FILES +48 -4
- package/generated/docs/BuildOrder200Response.md +38 -0
- package/generated/docs/BuildOrderRequest.md +36 -0
- package/generated/docs/BuiltOrder.md +43 -0
- package/generated/docs/BuiltOrderTx.md +41 -0
- package/generated/docs/{WatchUserPositionsRequest.md → CloseRequest.md} +6 -4
- package/generated/docs/DefaultApi.md +493 -185
- package/generated/docs/EventFetchParams.md +2 -0
- package/generated/docs/FetchAllOrdersRequest.md +36 -0
- package/generated/docs/FetchBalanceRequest.md +36 -0
- package/generated/docs/FetchClosedOrdersRequest.md +36 -0
- package/generated/docs/FetchEventRequest.md +36 -0
- package/generated/docs/FetchMarketsPaginated200Response.md +38 -0
- package/generated/docs/FetchMarketsPaginatedRequest.md +36 -0
- package/generated/docs/FetchMarketsPaginatedRequestArgsInner.md +36 -0
- package/generated/docs/FetchMarketsRequest.md +0 -2
- package/generated/docs/FetchMyTrades200Response.md +38 -0
- package/generated/docs/FetchMyTradesRequest.md +36 -0
- package/generated/docs/FetchOHLCVRequest.md +1 -1
- package/generated/docs/{WatchPricesRequest.md → FetchOrderRequest.md} +4 -4
- package/generated/docs/FetchTradesRequestArgsInner.md +2 -0
- package/generated/docs/FetchTradesRequestArgsInnerOneOf.md +40 -0
- package/generated/docs/FilterMarketsRequestArgsInnerOneOf.md +0 -1
- package/generated/docs/GetExecutionPriceDetailedRequest.md +36 -0
- package/generated/docs/LoadMarkets200Response.md +38 -0
- package/generated/docs/LoadMarketsRequest.md +36 -0
- package/generated/docs/MyTradesParams.md +44 -0
- package/generated/docs/OrderHistoryParams.md +42 -0
- package/generated/docs/PaginatedMarketsResult.md +38 -0
- package/generated/docs/SubmitOrderRequest.md +36 -0
- package/generated/docs/UnifiedMarket.md +2 -0
- package/generated/docs/UserTrade.md +48 -0
- package/generated/package.json +1 -1
- package/generated/src/apis/DefaultApi.ts +486 -185
- package/generated/src/models/Balance.ts +1 -1
- package/generated/src/models/BaseRequest.ts +1 -1
- package/generated/src/models/BaseResponse.ts +1 -1
- package/generated/src/models/BuildOrder200Response.ts +96 -0
- package/generated/src/models/BuildOrderRequest.ts +89 -0
- package/generated/src/models/BuiltOrder.ts +112 -0
- package/generated/src/models/BuiltOrderTx.ts +89 -0
- package/generated/src/models/CancelOrderRequest.ts +1 -1
- package/generated/src/models/{WatchUserPositionsRequest.ts → CloseRequest.ts} +20 -12
- package/generated/src/models/CreateOrder200Response.ts +1 -1
- package/generated/src/models/CreateOrderParams.ts +1 -1
- package/generated/src/models/CreateOrderRequest.ts +1 -1
- package/generated/src/models/ErrorDetail.ts +1 -1
- package/generated/src/models/ErrorResponse.ts +1 -1
- package/generated/src/models/EventFetchParams.ts +19 -1
- package/generated/src/models/ExchangeCredentials.ts +1 -1
- package/generated/src/models/ExchangeCredentialsSignatureType.ts +1 -1
- package/generated/src/models/ExecutionPriceResult.ts +1 -1
- package/generated/src/models/FetchAllOrdersRequest.ts +88 -0
- package/generated/src/models/FetchBalance200Response.ts +1 -1
- package/generated/src/models/FetchBalanceRequest.ts +81 -0
- package/generated/src/models/FetchClosedOrdersRequest.ts +88 -0
- package/generated/src/models/FetchEvent200Response.ts +1 -1
- package/generated/src/models/FetchEventRequest.ts +88 -0
- package/generated/src/models/FetchEvents200Response.ts +1 -1
- package/generated/src/models/FetchEventsRequest.ts +1 -1
- package/generated/src/models/FetchMarket200Response.ts +1 -1
- package/generated/src/models/FetchMarketRequest.ts +1 -1
- package/generated/src/models/FetchMarkets200Response.ts +1 -1
- package/generated/src/models/FetchMarketsPaginated200Response.ts +96 -0
- package/generated/src/models/FetchMarketsPaginatedRequest.ts +88 -0
- package/generated/src/models/FetchMarketsPaginatedRequestArgsInner.ts +73 -0
- package/generated/src/models/FetchMarketsRequest.ts +1 -9
- package/generated/src/models/FetchMyTrades200Response.ts +96 -0
- package/generated/src/models/FetchMyTradesRequest.ts +88 -0
- package/generated/src/models/FetchOHLCV200Response.ts +1 -1
- package/generated/src/models/FetchOHLCVRequest.ts +2 -2
- package/generated/src/models/FetchOHLCVRequestArgsInner.ts +1 -1
- package/generated/src/models/FetchOpenOrders200Response.ts +1 -1
- package/generated/src/models/FetchOpenOrdersRequest.ts +1 -1
- package/generated/src/models/FetchOrderBook200Response.ts +1 -1
- package/generated/src/models/FetchOrderBookRequest.ts +1 -1
- package/generated/src/models/{WatchPricesRequest.ts → FetchOrderRequest.ts} +13 -13
- package/generated/src/models/FetchPositions200Response.ts +1 -1
- package/generated/src/models/FetchPositionsRequest.ts +2 -2
- package/generated/src/models/FetchTrades200Response.ts +1 -1
- package/generated/src/models/FetchTradesRequest.ts +2 -2
- package/generated/src/models/FetchTradesRequestArgsInner.ts +12 -12
- package/generated/src/models/FetchTradesRequestArgsInnerOneOf.ts +80 -0
- package/generated/src/models/FilterEventsRequest.ts +2 -2
- package/generated/src/models/FilterEventsRequestArgsInner.ts +4 -4
- package/generated/src/models/FilterMarketsRequest.ts +2 -2
- package/generated/src/models/FilterMarketsRequestArgsInner.ts +4 -4
- package/generated/src/models/FilterMarketsRequestArgsInnerOneOf.ts +6 -4
- package/generated/src/models/GetExecutionPrice200Response.ts +1 -1
- package/generated/src/models/GetExecutionPriceDetailed200Response.ts +1 -1
- package/generated/src/models/GetExecutionPriceDetailedRequest.ts +89 -0
- package/generated/src/models/GetExecutionPriceRequest.ts +2 -2
- package/generated/src/models/GetExecutionPriceRequestArgsInner.ts +1 -1
- package/generated/src/models/HealthCheck200Response.ts +1 -1
- package/generated/src/models/HistoryFilterParams.ts +1 -1
- package/generated/src/models/LoadMarkets200Response.ts +96 -0
- package/generated/src/models/LoadMarketsRequest.ts +81 -0
- package/generated/src/models/MarketFilterParams.ts +1 -1
- package/generated/src/models/MarketOutcome.ts +1 -1
- package/generated/src/models/MyTradesParams.ts +105 -0
- package/generated/src/models/OHLCVParams.ts +1 -1
- package/generated/src/models/Order.ts +1 -1
- package/generated/src/models/OrderBook.ts +1 -1
- package/generated/src/models/OrderHistoryParams.ts +97 -0
- package/generated/src/models/OrderLevel.ts +1 -1
- package/generated/src/models/PaginatedMarketsResult.ts +89 -0
- package/generated/src/models/Position.ts +1 -1
- package/generated/src/models/PriceCandle.ts +1 -1
- package/generated/src/models/SubmitOrderRequest.ts +89 -0
- package/generated/src/models/Trade.ts +1 -1
- package/generated/src/models/TradesParams.ts +1 -1
- package/generated/src/models/UnifiedEvent.ts +1 -1
- package/generated/src/models/UnifiedMarket.ts +9 -1
- package/generated/src/models/UserTrade.ts +133 -0
- package/generated/src/models/WatchOrderBookRequest.ts +2 -2
- package/generated/src/models/WatchOrderBookRequestArgsInner.ts +1 -1
- package/generated/src/models/WatchTradesRequest.ts +2 -2
- package/generated/src/models/index.ts +24 -2
- package/generated/src/runtime.ts +1 -1
- package/index.ts +6 -2
- package/package.json +4 -3
- package/pmxt/client.ts +464 -256
- package/pmxt/models.ts +46 -0
- package/pmxt/server-manager.ts +13 -2
- package/dist/esm/generated/src/models/WatchUserPositionsRequest.d.ts +0 -33
- package/dist/generated/src/models/WatchUserPositionsRequest.d.ts +0 -33
package/dist/pmxt/client.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* OpenAPI client, matching the Python API exactly.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.Limitless = exports.Kalshi = exports.Polymarket = exports.Exchange = void 0;
|
|
9
|
+
exports.Baozi = exports.Probable = exports.Myriad = exports.KalshiDemo = exports.Limitless = exports.Kalshi = exports.Polymarket = exports.Exchange = void 0;
|
|
10
10
|
const index_js_1 = require("../generated/src/index.js");
|
|
11
11
|
const models_js_1 = require("./models.js");
|
|
12
12
|
const server_manager_js_1 = require("./server-manager.js");
|
|
@@ -42,6 +42,7 @@ function convertMarket(raw) {
|
|
|
42
42
|
image: raw.image,
|
|
43
43
|
category: raw.category,
|
|
44
44
|
tags: raw.tags,
|
|
45
|
+
eventId: raw.eventId,
|
|
45
46
|
yes: convertOutcome(raw.yes),
|
|
46
47
|
no: convertOutcome(raw.no),
|
|
47
48
|
up: convertOutcome(raw.up),
|
|
@@ -118,9 +119,21 @@ function convertBalance(raw) {
|
|
|
118
119
|
locked: raw.locked,
|
|
119
120
|
};
|
|
120
121
|
}
|
|
122
|
+
function convertUserTrade(raw) {
|
|
123
|
+
return {
|
|
124
|
+
id: raw.id,
|
|
125
|
+
price: raw.price,
|
|
126
|
+
amount: raw.amount,
|
|
127
|
+
side: raw.side || "unknown",
|
|
128
|
+
timestamp: raw.timestamp,
|
|
129
|
+
orderId: raw.orderId,
|
|
130
|
+
outcomeId: raw.outcomeId,
|
|
131
|
+
marketId: raw.marketId,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
121
134
|
function convertEvent(raw) {
|
|
122
135
|
const markets = models_js_1.MarketList.from((raw.markets || []).map(convertMarket));
|
|
123
|
-
|
|
136
|
+
const event = {
|
|
124
137
|
id: raw.id,
|
|
125
138
|
title: raw.title,
|
|
126
139
|
description: raw.description,
|
|
@@ -131,6 +144,7 @@ function convertEvent(raw) {
|
|
|
131
144
|
category: raw.category,
|
|
132
145
|
tags: raw.tags,
|
|
133
146
|
};
|
|
147
|
+
return event;
|
|
134
148
|
}
|
|
135
149
|
/**
|
|
136
150
|
* Base class for prediction market exchanges.
|
|
@@ -209,74 +223,159 @@ class Exchange {
|
|
|
209
223
|
signatureType: this.signatureType,
|
|
210
224
|
};
|
|
211
225
|
}
|
|
212
|
-
//
|
|
226
|
+
// Low-Level API Access
|
|
213
227
|
/**
|
|
214
|
-
*
|
|
228
|
+
* Call an exchange-specific REST endpoint by its operationId.
|
|
229
|
+
* This provides direct access to all implicit API methods defined in
|
|
230
|
+
* the exchange's OpenAPI spec (e.g., Polymarket CLOB, Kalshi trading API).
|
|
215
231
|
*
|
|
216
|
-
* @param
|
|
217
|
-
* @
|
|
232
|
+
* @param operationId - The operationId (or auto-generated name) of the endpoint
|
|
233
|
+
* @param params - Optional parameters to pass to the endpoint
|
|
234
|
+
* @returns The raw response data from the exchange
|
|
218
235
|
*
|
|
219
236
|
* @example
|
|
220
237
|
* ```typescript
|
|
221
|
-
*
|
|
238
|
+
* // Call a Polymarket CLOB endpoint directly
|
|
239
|
+
* const result = await poly.callApi('getMarket', { condition_id: '0x...' });
|
|
222
240
|
* ```
|
|
223
241
|
*/
|
|
224
|
-
async
|
|
242
|
+
async callApi(operationId, params) {
|
|
225
243
|
await this.initPromise;
|
|
226
244
|
try {
|
|
227
|
-
const
|
|
228
|
-
if (params) {
|
|
229
|
-
args.push(params);
|
|
230
|
-
}
|
|
245
|
+
const url = `${this.config.basePath}/api/${this.exchangeName}/callApi`;
|
|
231
246
|
const requestBody = {
|
|
232
|
-
args,
|
|
247
|
+
args: [operationId, params],
|
|
233
248
|
credentials: this.getCredentials()
|
|
234
249
|
};
|
|
235
|
-
const response = await
|
|
236
|
-
|
|
237
|
-
|
|
250
|
+
const response = await fetch(url, {
|
|
251
|
+
method: 'POST',
|
|
252
|
+
headers: {
|
|
253
|
+
'Content-Type': 'application/json',
|
|
254
|
+
...this.config.headers
|
|
255
|
+
},
|
|
256
|
+
body: JSON.stringify(requestBody)
|
|
238
257
|
});
|
|
239
|
-
|
|
258
|
+
if (!response.ok) {
|
|
259
|
+
const error = await response.json().catch(() => ({}));
|
|
260
|
+
throw new Error(error.error?.message || response.statusText);
|
|
261
|
+
}
|
|
262
|
+
const json = await response.json();
|
|
263
|
+
return this.handleResponse(json);
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
throw new Error(`Failed to call API '${operationId}': ${error}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// BEGIN GENERATED METHODS
|
|
270
|
+
async loadMarkets(reload = false) {
|
|
271
|
+
await this.initPromise;
|
|
272
|
+
try {
|
|
273
|
+
const args = [];
|
|
274
|
+
args.push(reload);
|
|
275
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/loadMarkets`, {
|
|
276
|
+
method: 'POST',
|
|
277
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
278
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
279
|
+
});
|
|
280
|
+
if (!response.ok) {
|
|
281
|
+
const error = await response.json().catch(() => ({}));
|
|
282
|
+
throw new Error(error.error?.message || response.statusText);
|
|
283
|
+
}
|
|
284
|
+
const json = await response.json();
|
|
285
|
+
const data = this.handleResponse(json);
|
|
286
|
+
const result = {};
|
|
287
|
+
for (const [key, value] of Object.entries(data)) {
|
|
288
|
+
result[key] = convertMarket(value);
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
throw new Error(`Failed to loadMarkets: ${error}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
async fetchMarkets(params) {
|
|
297
|
+
await this.initPromise;
|
|
298
|
+
try {
|
|
299
|
+
const args = [];
|
|
300
|
+
if (params !== undefined)
|
|
301
|
+
args.push(params);
|
|
302
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchMarkets`, {
|
|
303
|
+
method: 'POST',
|
|
304
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
305
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
306
|
+
});
|
|
307
|
+
if (!response.ok) {
|
|
308
|
+
const error = await response.json().catch(() => ({}));
|
|
309
|
+
throw new Error(error.error?.message || response.statusText);
|
|
310
|
+
}
|
|
311
|
+
const json = await response.json();
|
|
312
|
+
const data = this.handleResponse(json);
|
|
240
313
|
return data.map(convertMarket);
|
|
241
314
|
}
|
|
242
315
|
catch (error) {
|
|
243
|
-
throw new Error(`Failed to
|
|
316
|
+
throw new Error(`Failed to fetchMarkets: ${error}`);
|
|
244
317
|
}
|
|
245
318
|
}
|
|
246
|
-
|
|
247
|
-
* Fetch a single market by lookup parameters.
|
|
248
|
-
* Returns the first matching market or throws if not found.
|
|
249
|
-
*
|
|
250
|
-
* @param params - Lookup parameters (marketId, outcomeId, slug, eventId, query)
|
|
251
|
-
* @returns A single unified market
|
|
252
|
-
* @throws Error if no market matches
|
|
253
|
-
*
|
|
254
|
-
* @example
|
|
255
|
-
* ```typescript
|
|
256
|
-
* const market = await exchange.fetchMarket({ marketId: '663583' });
|
|
257
|
-
* const market = await exchange.fetchMarket({ outcomeId: '10991849...' });
|
|
258
|
-
* const market = await exchange.fetchMarket({ slug: 'will-trump-win' });
|
|
259
|
-
* ```
|
|
260
|
-
*/
|
|
261
|
-
async fetchMarket(params) {
|
|
319
|
+
async fetchMarketsPaginated(params) {
|
|
262
320
|
await this.initPromise;
|
|
263
321
|
try {
|
|
264
322
|
const args = [];
|
|
265
|
-
if (params)
|
|
323
|
+
if (params !== undefined)
|
|
266
324
|
args.push(params);
|
|
325
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchMarketsPaginated`, {
|
|
326
|
+
method: 'POST',
|
|
327
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
328
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
329
|
+
});
|
|
330
|
+
if (!response.ok) {
|
|
331
|
+
const error = await response.json().catch(() => ({}));
|
|
332
|
+
throw new Error(error.error?.message || response.statusText);
|
|
267
333
|
}
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
|
|
334
|
+
const json = await response.json();
|
|
335
|
+
const data = this.handleResponse(json);
|
|
336
|
+
return {
|
|
337
|
+
data: (data.data || []).map(convertMarket),
|
|
338
|
+
total: data.total,
|
|
339
|
+
nextCursor: data.nextCursor,
|
|
271
340
|
};
|
|
272
|
-
|
|
273
|
-
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
throw new Error(`Failed to fetchMarketsPaginated: ${error}`);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
async fetchEvents(params) {
|
|
347
|
+
await this.initPromise;
|
|
348
|
+
try {
|
|
349
|
+
const args = [];
|
|
350
|
+
if (params !== undefined)
|
|
351
|
+
args.push(params);
|
|
352
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchEvents`, {
|
|
274
353
|
method: 'POST',
|
|
275
|
-
headers: {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
354
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
355
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
356
|
+
});
|
|
357
|
+
if (!response.ok) {
|
|
358
|
+
const error = await response.json().catch(() => ({}));
|
|
359
|
+
throw new Error(error.error?.message || response.statusText);
|
|
360
|
+
}
|
|
361
|
+
const json = await response.json();
|
|
362
|
+
const data = this.handleResponse(json);
|
|
363
|
+
return data.map(convertEvent);
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
throw new Error(`Failed to fetchEvents: ${error}`);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
async fetchMarket(params) {
|
|
370
|
+
await this.initPromise;
|
|
371
|
+
try {
|
|
372
|
+
const args = [];
|
|
373
|
+
if (params !== undefined)
|
|
374
|
+
args.push(params);
|
|
375
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchMarket`, {
|
|
376
|
+
method: 'POST',
|
|
377
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
378
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
280
379
|
});
|
|
281
380
|
if (!response.ok) {
|
|
282
381
|
const error = await response.json().catch(() => ({}));
|
|
@@ -287,42 +386,19 @@ class Exchange {
|
|
|
287
386
|
return convertMarket(data);
|
|
288
387
|
}
|
|
289
388
|
catch (error) {
|
|
290
|
-
throw new Error(`Failed to
|
|
389
|
+
throw new Error(`Failed to fetchMarket: ${error}`);
|
|
291
390
|
}
|
|
292
391
|
}
|
|
293
|
-
/**
|
|
294
|
-
* Fetch a single event by lookup parameters.
|
|
295
|
-
* Returns the first matching event or throws if not found.
|
|
296
|
-
*
|
|
297
|
-
* @param params - Lookup parameters (eventId, slug, query)
|
|
298
|
-
* @returns A single unified event
|
|
299
|
-
* @throws Error if no event matches
|
|
300
|
-
*
|
|
301
|
-
* @example
|
|
302
|
-
* ```typescript
|
|
303
|
-
* const event = await exchange.fetchEvent({ eventId: 'TRUMP25DEC' });
|
|
304
|
-
* const event = await exchange.fetchEvent({ slug: 'us-election' });
|
|
305
|
-
* ```
|
|
306
|
-
*/
|
|
307
392
|
async fetchEvent(params) {
|
|
308
393
|
await this.initPromise;
|
|
309
394
|
try {
|
|
310
395
|
const args = [];
|
|
311
|
-
if (params)
|
|
396
|
+
if (params !== undefined)
|
|
312
397
|
args.push(params);
|
|
313
|
-
}
|
|
314
|
-
const requestBody = {
|
|
315
|
-
args,
|
|
316
|
-
credentials: this.getCredentials()
|
|
317
|
-
};
|
|
318
|
-
const url = `${this.config.basePath}/api/${this.exchangeName}/fetchEvent`;
|
|
319
|
-
const response = await fetch(url, {
|
|
398
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchEvent`, {
|
|
320
399
|
method: 'POST',
|
|
321
|
-
headers: {
|
|
322
|
-
|
|
323
|
-
...this.config.headers
|
|
324
|
-
},
|
|
325
|
-
body: JSON.stringify(requestBody)
|
|
400
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
401
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
326
402
|
});
|
|
327
403
|
if (!response.ok) {
|
|
328
404
|
const error = await response.json().catch(() => ({}));
|
|
@@ -333,9 +409,230 @@ class Exchange {
|
|
|
333
409
|
return convertEvent(data);
|
|
334
410
|
}
|
|
335
411
|
catch (error) {
|
|
336
|
-
throw new Error(`Failed to
|
|
412
|
+
throw new Error(`Failed to fetchEvent: ${error}`);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
async fetchOrderBook(id) {
|
|
416
|
+
await this.initPromise;
|
|
417
|
+
try {
|
|
418
|
+
const args = [];
|
|
419
|
+
args.push(id);
|
|
420
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchOrderBook`, {
|
|
421
|
+
method: 'POST',
|
|
422
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
423
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
424
|
+
});
|
|
425
|
+
if (!response.ok) {
|
|
426
|
+
const error = await response.json().catch(() => ({}));
|
|
427
|
+
throw new Error(error.error?.message || response.statusText);
|
|
428
|
+
}
|
|
429
|
+
const json = await response.json();
|
|
430
|
+
const data = this.handleResponse(json);
|
|
431
|
+
return convertOrderBook(data);
|
|
432
|
+
}
|
|
433
|
+
catch (error) {
|
|
434
|
+
throw new Error(`Failed to fetchOrderBook: ${error}`);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
async cancelOrder(orderId) {
|
|
438
|
+
await this.initPromise;
|
|
439
|
+
try {
|
|
440
|
+
const args = [];
|
|
441
|
+
args.push(orderId);
|
|
442
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/cancelOrder`, {
|
|
443
|
+
method: 'POST',
|
|
444
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
445
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
446
|
+
});
|
|
447
|
+
if (!response.ok) {
|
|
448
|
+
const error = await response.json().catch(() => ({}));
|
|
449
|
+
throw new Error(error.error?.message || response.statusText);
|
|
450
|
+
}
|
|
451
|
+
const json = await response.json();
|
|
452
|
+
const data = this.handleResponse(json);
|
|
453
|
+
return convertOrder(data);
|
|
454
|
+
}
|
|
455
|
+
catch (error) {
|
|
456
|
+
throw new Error(`Failed to cancelOrder: ${error}`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
async fetchOrder(orderId) {
|
|
460
|
+
await this.initPromise;
|
|
461
|
+
try {
|
|
462
|
+
const args = [];
|
|
463
|
+
args.push(orderId);
|
|
464
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchOrder`, {
|
|
465
|
+
method: 'POST',
|
|
466
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
467
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
468
|
+
});
|
|
469
|
+
if (!response.ok) {
|
|
470
|
+
const error = await response.json().catch(() => ({}));
|
|
471
|
+
throw new Error(error.error?.message || response.statusText);
|
|
472
|
+
}
|
|
473
|
+
const json = await response.json();
|
|
474
|
+
const data = this.handleResponse(json);
|
|
475
|
+
return convertOrder(data);
|
|
476
|
+
}
|
|
477
|
+
catch (error) {
|
|
478
|
+
throw new Error(`Failed to fetchOrder: ${error}`);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
async fetchOpenOrders(marketId) {
|
|
482
|
+
await this.initPromise;
|
|
483
|
+
try {
|
|
484
|
+
const args = [];
|
|
485
|
+
if (marketId !== undefined)
|
|
486
|
+
args.push(marketId);
|
|
487
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchOpenOrders`, {
|
|
488
|
+
method: 'POST',
|
|
489
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
490
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
491
|
+
});
|
|
492
|
+
if (!response.ok) {
|
|
493
|
+
const error = await response.json().catch(() => ({}));
|
|
494
|
+
throw new Error(error.error?.message || response.statusText);
|
|
495
|
+
}
|
|
496
|
+
const json = await response.json();
|
|
497
|
+
const data = this.handleResponse(json);
|
|
498
|
+
return data.map(convertOrder);
|
|
499
|
+
}
|
|
500
|
+
catch (error) {
|
|
501
|
+
throw new Error(`Failed to fetchOpenOrders: ${error}`);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
async fetchMyTrades(params) {
|
|
505
|
+
await this.initPromise;
|
|
506
|
+
try {
|
|
507
|
+
const args = [];
|
|
508
|
+
if (params !== undefined)
|
|
509
|
+
args.push(params);
|
|
510
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchMyTrades`, {
|
|
511
|
+
method: 'POST',
|
|
512
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
513
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
514
|
+
});
|
|
515
|
+
if (!response.ok) {
|
|
516
|
+
const error = await response.json().catch(() => ({}));
|
|
517
|
+
throw new Error(error.error?.message || response.statusText);
|
|
518
|
+
}
|
|
519
|
+
const json = await response.json();
|
|
520
|
+
const data = this.handleResponse(json);
|
|
521
|
+
return data.map(convertUserTrade);
|
|
522
|
+
}
|
|
523
|
+
catch (error) {
|
|
524
|
+
throw new Error(`Failed to fetchMyTrades: ${error}`);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
async fetchClosedOrders(params) {
|
|
528
|
+
await this.initPromise;
|
|
529
|
+
try {
|
|
530
|
+
const args = [];
|
|
531
|
+
if (params !== undefined)
|
|
532
|
+
args.push(params);
|
|
533
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchClosedOrders`, {
|
|
534
|
+
method: 'POST',
|
|
535
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
536
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
537
|
+
});
|
|
538
|
+
if (!response.ok) {
|
|
539
|
+
const error = await response.json().catch(() => ({}));
|
|
540
|
+
throw new Error(error.error?.message || response.statusText);
|
|
541
|
+
}
|
|
542
|
+
const json = await response.json();
|
|
543
|
+
const data = this.handleResponse(json);
|
|
544
|
+
return data.map(convertOrder);
|
|
545
|
+
}
|
|
546
|
+
catch (error) {
|
|
547
|
+
throw new Error(`Failed to fetchClosedOrders: ${error}`);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
async fetchAllOrders(params) {
|
|
551
|
+
await this.initPromise;
|
|
552
|
+
try {
|
|
553
|
+
const args = [];
|
|
554
|
+
if (params !== undefined)
|
|
555
|
+
args.push(params);
|
|
556
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchAllOrders`, {
|
|
557
|
+
method: 'POST',
|
|
558
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
559
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
560
|
+
});
|
|
561
|
+
if (!response.ok) {
|
|
562
|
+
const error = await response.json().catch(() => ({}));
|
|
563
|
+
throw new Error(error.error?.message || response.statusText);
|
|
564
|
+
}
|
|
565
|
+
const json = await response.json();
|
|
566
|
+
const data = this.handleResponse(json);
|
|
567
|
+
return data.map(convertOrder);
|
|
568
|
+
}
|
|
569
|
+
catch (error) {
|
|
570
|
+
throw new Error(`Failed to fetchAllOrders: ${error}`);
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
async fetchPositions() {
|
|
574
|
+
await this.initPromise;
|
|
575
|
+
try {
|
|
576
|
+
const args = [];
|
|
577
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchPositions`, {
|
|
578
|
+
method: 'POST',
|
|
579
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
580
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
581
|
+
});
|
|
582
|
+
if (!response.ok) {
|
|
583
|
+
const error = await response.json().catch(() => ({}));
|
|
584
|
+
throw new Error(error.error?.message || response.statusText);
|
|
585
|
+
}
|
|
586
|
+
const json = await response.json();
|
|
587
|
+
const data = this.handleResponse(json);
|
|
588
|
+
return data.map(convertPosition);
|
|
589
|
+
}
|
|
590
|
+
catch (error) {
|
|
591
|
+
throw new Error(`Failed to fetchPositions: ${error}`);
|
|
337
592
|
}
|
|
338
593
|
}
|
|
594
|
+
async fetchBalance() {
|
|
595
|
+
await this.initPromise;
|
|
596
|
+
try {
|
|
597
|
+
const args = [];
|
|
598
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchBalance`, {
|
|
599
|
+
method: 'POST',
|
|
600
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
601
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
602
|
+
});
|
|
603
|
+
if (!response.ok) {
|
|
604
|
+
const error = await response.json().catch(() => ({}));
|
|
605
|
+
throw new Error(error.error?.message || response.statusText);
|
|
606
|
+
}
|
|
607
|
+
const json = await response.json();
|
|
608
|
+
const data = this.handleResponse(json);
|
|
609
|
+
return data.map(convertBalance);
|
|
610
|
+
}
|
|
611
|
+
catch (error) {
|
|
612
|
+
throw new Error(`Failed to fetchBalance: ${error}`);
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
async close() {
|
|
616
|
+
await this.initPromise;
|
|
617
|
+
try {
|
|
618
|
+
const args = [];
|
|
619
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/close`, {
|
|
620
|
+
method: 'POST',
|
|
621
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
622
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
623
|
+
});
|
|
624
|
+
if (!response.ok) {
|
|
625
|
+
const error = await response.json().catch(() => ({}));
|
|
626
|
+
throw new Error(error.error?.message || response.statusText);
|
|
627
|
+
}
|
|
628
|
+
const json = await response.json();
|
|
629
|
+
this.handleResponse(json);
|
|
630
|
+
}
|
|
631
|
+
catch (error) {
|
|
632
|
+
throw new Error(`Failed to close: ${error}`);
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
// END GENERATED METHODS
|
|
339
636
|
/**
|
|
340
637
|
* Get historical price candles.
|
|
341
638
|
*
|
|
@@ -381,37 +678,6 @@ class Exchange {
|
|
|
381
678
|
throw new Error(`Failed to fetch OHLCV: ${error}`);
|
|
382
679
|
}
|
|
383
680
|
}
|
|
384
|
-
/**
|
|
385
|
-
* Get current order book for an outcome.
|
|
386
|
-
*
|
|
387
|
-
* @param outcomeId - Outcome ID
|
|
388
|
-
* @returns Current order book
|
|
389
|
-
*
|
|
390
|
-
* @example
|
|
391
|
-
* ```typescript
|
|
392
|
-
* const orderBook = await exchange.fetchOrderBook(outcomeId);
|
|
393
|
-
* console.log(`Best bid: ${orderBook.bids[0].price}`);
|
|
394
|
-
* console.log(`Best ask: ${orderBook.asks[0].price}`);
|
|
395
|
-
* ```
|
|
396
|
-
*/
|
|
397
|
-
async fetchOrderBook(outcomeId) {
|
|
398
|
-
await this.initPromise;
|
|
399
|
-
try {
|
|
400
|
-
const requestBody = {
|
|
401
|
-
args: [outcomeId],
|
|
402
|
-
credentials: this.getCredentials()
|
|
403
|
-
};
|
|
404
|
-
const response = await this.api.fetchOrderBook({
|
|
405
|
-
exchange: this.exchangeName,
|
|
406
|
-
fetchOrderBookRequest: requestBody,
|
|
407
|
-
});
|
|
408
|
-
const data = this.handleResponse(response);
|
|
409
|
-
return convertOrderBook(data);
|
|
410
|
-
}
|
|
411
|
-
catch (error) {
|
|
412
|
-
throw new Error(`Failed to fetch order book: ${error}`);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
681
|
/**
|
|
416
682
|
* Get trade history for an outcome.
|
|
417
683
|
*
|
|
@@ -597,129 +863,6 @@ class Exchange {
|
|
|
597
863
|
throw new Error(`Failed to create order: ${error}`);
|
|
598
864
|
}
|
|
599
865
|
}
|
|
600
|
-
/**
|
|
601
|
-
* Cancel an open order.
|
|
602
|
-
*
|
|
603
|
-
* @param orderId - Order ID to cancel
|
|
604
|
-
* @returns Cancelled order
|
|
605
|
-
*/
|
|
606
|
-
async cancelOrder(orderId) {
|
|
607
|
-
await this.initPromise;
|
|
608
|
-
try {
|
|
609
|
-
const requestBody = {
|
|
610
|
-
args: [orderId],
|
|
611
|
-
credentials: this.getCredentials()
|
|
612
|
-
};
|
|
613
|
-
const response = await this.api.cancelOrder({
|
|
614
|
-
exchange: this.exchangeName,
|
|
615
|
-
cancelOrderRequest: requestBody,
|
|
616
|
-
});
|
|
617
|
-
const data = this.handleResponse(response);
|
|
618
|
-
return convertOrder(data);
|
|
619
|
-
}
|
|
620
|
-
catch (error) {
|
|
621
|
-
throw new Error(`Failed to cancel order: ${error}`);
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
/**
|
|
625
|
-
* Get details of a specific order.
|
|
626
|
-
*
|
|
627
|
-
* @param orderId - Order ID
|
|
628
|
-
* @returns Order details
|
|
629
|
-
*/
|
|
630
|
-
async fetchOrder(orderId) {
|
|
631
|
-
await this.initPromise;
|
|
632
|
-
try {
|
|
633
|
-
const requestBody = {
|
|
634
|
-
args: [orderId],
|
|
635
|
-
credentials: this.getCredentials()
|
|
636
|
-
};
|
|
637
|
-
const response = await this.api.fetchOrder({
|
|
638
|
-
exchange: this.exchangeName,
|
|
639
|
-
cancelOrderRequest: requestBody,
|
|
640
|
-
});
|
|
641
|
-
const data = this.handleResponse(response);
|
|
642
|
-
return convertOrder(data);
|
|
643
|
-
}
|
|
644
|
-
catch (error) {
|
|
645
|
-
throw new Error(`Failed to fetch order: ${error}`);
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
/**
|
|
649
|
-
* Get all open orders, optionally filtered by market.
|
|
650
|
-
*
|
|
651
|
-
* @param marketId - Optional market ID to filter by
|
|
652
|
-
* @returns List of open orders
|
|
653
|
-
*/
|
|
654
|
-
async fetchOpenOrders(marketId) {
|
|
655
|
-
await this.initPromise;
|
|
656
|
-
try {
|
|
657
|
-
const args = [];
|
|
658
|
-
if (marketId) {
|
|
659
|
-
args.push(marketId);
|
|
660
|
-
}
|
|
661
|
-
const requestBody = {
|
|
662
|
-
args,
|
|
663
|
-
credentials: this.getCredentials()
|
|
664
|
-
};
|
|
665
|
-
const response = await this.api.fetchOpenOrders({
|
|
666
|
-
exchange: this.exchangeName,
|
|
667
|
-
fetchOpenOrdersRequest: requestBody,
|
|
668
|
-
});
|
|
669
|
-
const data = this.handleResponse(response);
|
|
670
|
-
return data.map(convertOrder);
|
|
671
|
-
}
|
|
672
|
-
catch (error) {
|
|
673
|
-
throw new Error(`Failed to fetch open orders: ${error}`);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
// Account Methods
|
|
677
|
-
/**
|
|
678
|
-
* Get current positions across all markets.
|
|
679
|
-
*
|
|
680
|
-
* @returns List of positions
|
|
681
|
-
*/
|
|
682
|
-
async fetchPositions() {
|
|
683
|
-
await this.initPromise;
|
|
684
|
-
try {
|
|
685
|
-
const requestBody = {
|
|
686
|
-
args: [],
|
|
687
|
-
credentials: this.getCredentials()
|
|
688
|
-
};
|
|
689
|
-
const response = await this.api.fetchPositions({
|
|
690
|
-
exchange: this.exchangeName,
|
|
691
|
-
fetchPositionsRequest: requestBody,
|
|
692
|
-
});
|
|
693
|
-
const data = this.handleResponse(response);
|
|
694
|
-
return data.map(convertPosition);
|
|
695
|
-
}
|
|
696
|
-
catch (error) {
|
|
697
|
-
throw new Error(`Failed to fetch positions: ${error}`);
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
/**
|
|
701
|
-
* Get account balance.
|
|
702
|
-
*
|
|
703
|
-
* @returns List of balances (by currency)
|
|
704
|
-
*/
|
|
705
|
-
async fetchBalance() {
|
|
706
|
-
await this.initPromise;
|
|
707
|
-
try {
|
|
708
|
-
const requestBody = {
|
|
709
|
-
args: [],
|
|
710
|
-
credentials: this.getCredentials()
|
|
711
|
-
};
|
|
712
|
-
const response = await this.api.fetchBalance({
|
|
713
|
-
exchange: this.exchangeName,
|
|
714
|
-
fetchPositionsRequest: requestBody,
|
|
715
|
-
});
|
|
716
|
-
const data = this.handleResponse(response);
|
|
717
|
-
return data.map(convertBalance);
|
|
718
|
-
}
|
|
719
|
-
catch (error) {
|
|
720
|
-
throw new Error(`Failed to fetch balance: ${error}`);
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
866
|
/**
|
|
724
867
|
* Calculate the average execution price for a given amount by walking the order book.
|
|
725
868
|
* Uses the sidecar server for calculation to ensure consistency.
|
|
@@ -1073,3 +1216,99 @@ class Limitless extends Exchange {
|
|
|
1073
1216
|
}
|
|
1074
1217
|
}
|
|
1075
1218
|
exports.Limitless = Limitless;
|
|
1219
|
+
/**
|
|
1220
|
+
* Kalshi Demo exchange client (paper trading / sandbox environment).
|
|
1221
|
+
*
|
|
1222
|
+
* Uses Kalshi's demo environment — same API as Kalshi but against test accounts.
|
|
1223
|
+
* Credentials are separate from production Kalshi credentials.
|
|
1224
|
+
*
|
|
1225
|
+
* @example
|
|
1226
|
+
* ```typescript
|
|
1227
|
+
* const kalshiDemo = new KalshiDemo({
|
|
1228
|
+
* apiKey: process.env.KALSHI_DEMO_API_KEY,
|
|
1229
|
+
* privateKey: process.env.KALSHI_DEMO_PRIVATE_KEY
|
|
1230
|
+
* });
|
|
1231
|
+
* const balance = await kalshiDemo.fetchBalance();
|
|
1232
|
+
* ```
|
|
1233
|
+
*/
|
|
1234
|
+
class KalshiDemo extends Exchange {
|
|
1235
|
+
constructor(options = {}) {
|
|
1236
|
+
super("kalshi-demo", options);
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
exports.KalshiDemo = KalshiDemo;
|
|
1240
|
+
/**
|
|
1241
|
+
* Myriad exchange client.
|
|
1242
|
+
*
|
|
1243
|
+
* AMM-based prediction market exchange. Requires an API key for trading.
|
|
1244
|
+
* The `privateKey` field is used as the wallet address.
|
|
1245
|
+
*
|
|
1246
|
+
* @example
|
|
1247
|
+
* ```typescript
|
|
1248
|
+
* // Public data (no auth)
|
|
1249
|
+
* const myriad = new Myriad();
|
|
1250
|
+
* const markets = await myriad.fetchMarkets();
|
|
1251
|
+
*
|
|
1252
|
+
* // Trading (requires auth)
|
|
1253
|
+
* const myriad = new Myriad({
|
|
1254
|
+
* apiKey: process.env.MYRIAD_API_KEY,
|
|
1255
|
+
* privateKey: process.env.MYRIAD_WALLET_ADDRESS
|
|
1256
|
+
* });
|
|
1257
|
+
* ```
|
|
1258
|
+
*/
|
|
1259
|
+
class Myriad extends Exchange {
|
|
1260
|
+
constructor(options = {}) {
|
|
1261
|
+
super("myriad", options);
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
exports.Myriad = Myriad;
|
|
1265
|
+
/**
|
|
1266
|
+
* Probable exchange client.
|
|
1267
|
+
*
|
|
1268
|
+
* BSC-based CLOB exchange. Requires all four credential fields for trading.
|
|
1269
|
+
*
|
|
1270
|
+
* @example
|
|
1271
|
+
* ```typescript
|
|
1272
|
+
* // Public data (no auth)
|
|
1273
|
+
* const probable = new Probable();
|
|
1274
|
+
* const markets = await probable.fetchMarkets();
|
|
1275
|
+
*
|
|
1276
|
+
* // Trading (requires auth)
|
|
1277
|
+
* const probable = new Probable({
|
|
1278
|
+
* privateKey: process.env.PROBABLE_PRIVATE_KEY,
|
|
1279
|
+
* apiKey: process.env.PROBABLE_API_KEY,
|
|
1280
|
+
* apiSecret: process.env.PROBABLE_API_SECRET,
|
|
1281
|
+
* passphrase: process.env.PROBABLE_PASSPHRASE
|
|
1282
|
+
* });
|
|
1283
|
+
* ```
|
|
1284
|
+
*/
|
|
1285
|
+
class Probable extends Exchange {
|
|
1286
|
+
constructor(options = {}) {
|
|
1287
|
+
super("probable", options);
|
|
1288
|
+
}
|
|
1289
|
+
}
|
|
1290
|
+
exports.Probable = Probable;
|
|
1291
|
+
/**
|
|
1292
|
+
* Baozi exchange client.
|
|
1293
|
+
*
|
|
1294
|
+
* Solana-based on-chain pari-mutuel betting exchange.
|
|
1295
|
+
* Requires a Solana private key for trading.
|
|
1296
|
+
*
|
|
1297
|
+
* @example
|
|
1298
|
+
* ```typescript
|
|
1299
|
+
* // Public data (no auth)
|
|
1300
|
+
* const baozi = new Baozi();
|
|
1301
|
+
* const markets = await baozi.fetchMarkets();
|
|
1302
|
+
*
|
|
1303
|
+
* // Trading (requires auth)
|
|
1304
|
+
* const baozi = new Baozi({
|
|
1305
|
+
* privateKey: process.env.BAOZI_PRIVATE_KEY
|
|
1306
|
+
* });
|
|
1307
|
+
* ```
|
|
1308
|
+
*/
|
|
1309
|
+
class Baozi extends Exchange {
|
|
1310
|
+
constructor(options = {}) {
|
|
1311
|
+
super("baozi", options);
|
|
1312
|
+
}
|
|
1313
|
+
}
|
|
1314
|
+
exports.Baozi = Baozi;
|