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