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/pmxt/client.ts
CHANGED
|
@@ -8,14 +8,9 @@
|
|
|
8
8
|
import {
|
|
9
9
|
DefaultApi,
|
|
10
10
|
Configuration,
|
|
11
|
-
FetchMarketsRequest,
|
|
12
11
|
FetchOHLCVRequest,
|
|
13
|
-
FetchOrderBookRequest,
|
|
14
12
|
FetchTradesRequest,
|
|
15
13
|
CreateOrderRequest,
|
|
16
|
-
CancelOrderRequest,
|
|
17
|
-
FetchOpenOrdersRequest,
|
|
18
|
-
FetchPositionsRequest,
|
|
19
14
|
ExchangeCredentials,
|
|
20
15
|
} from "../generated/src/index.js";
|
|
21
16
|
|
|
@@ -27,12 +22,14 @@ import {
|
|
|
27
22
|
OrderBook,
|
|
28
23
|
OrderLevel,
|
|
29
24
|
Trade,
|
|
25
|
+
UserTrade,
|
|
30
26
|
Order,
|
|
31
27
|
Position,
|
|
32
28
|
Balance,
|
|
33
29
|
SearchIn,
|
|
34
30
|
UnifiedEvent,
|
|
35
31
|
ExecutionPriceResult,
|
|
32
|
+
PaginatedMarketsResult,
|
|
36
33
|
MarketFilterCriteria,
|
|
37
34
|
MarketFilterFunction,
|
|
38
35
|
EventFilterCriteria,
|
|
@@ -75,6 +72,7 @@ function convertMarket(raw: any): UnifiedMarket {
|
|
|
75
72
|
image: raw.image,
|
|
76
73
|
category: raw.category,
|
|
77
74
|
tags: raw.tags,
|
|
75
|
+
eventId: raw.eventId,
|
|
78
76
|
yes: convertOutcome(raw.yes),
|
|
79
77
|
no: convertOutcome(raw.no),
|
|
80
78
|
up: convertOutcome(raw.up),
|
|
@@ -161,10 +159,23 @@ function convertBalance(raw: any): Balance {
|
|
|
161
159
|
};
|
|
162
160
|
}
|
|
163
161
|
|
|
162
|
+
function convertUserTrade(raw: any): UserTrade {
|
|
163
|
+
return {
|
|
164
|
+
id: raw.id,
|
|
165
|
+
price: raw.price,
|
|
166
|
+
amount: raw.amount,
|
|
167
|
+
side: raw.side || "unknown",
|
|
168
|
+
timestamp: raw.timestamp,
|
|
169
|
+
orderId: raw.orderId,
|
|
170
|
+
outcomeId: raw.outcomeId,
|
|
171
|
+
marketId: raw.marketId,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
164
175
|
function convertEvent(raw: any): UnifiedEvent {
|
|
165
176
|
const markets = MarketList.from((raw.markets || []).map(convertMarket)) as MarketList;
|
|
166
177
|
|
|
167
|
-
|
|
178
|
+
const event: UnifiedEvent = {
|
|
168
179
|
id: raw.id,
|
|
169
180
|
title: raw.title,
|
|
170
181
|
description: raw.description,
|
|
@@ -175,6 +186,8 @@ function convertEvent(raw: any): UnifiedEvent {
|
|
|
175
186
|
category: raw.category,
|
|
176
187
|
tags: raw.tags,
|
|
177
188
|
};
|
|
189
|
+
|
|
190
|
+
return event;
|
|
178
191
|
}
|
|
179
192
|
|
|
180
193
|
/**
|
|
@@ -290,147 +303,414 @@ export abstract class Exchange {
|
|
|
290
303
|
};
|
|
291
304
|
}
|
|
292
305
|
|
|
293
|
-
//
|
|
306
|
+
// Low-Level API Access
|
|
294
307
|
|
|
295
308
|
/**
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
299
|
-
*
|
|
300
|
-
*
|
|
309
|
+
* Call an exchange-specific REST endpoint by its operationId.
|
|
310
|
+
* This provides direct access to all implicit API methods defined in
|
|
311
|
+
* the exchange's OpenAPI spec (e.g., Polymarket CLOB, Kalshi trading API).
|
|
312
|
+
*
|
|
313
|
+
* @param operationId - The operationId (or auto-generated name) of the endpoint
|
|
314
|
+
* @param params - Optional parameters to pass to the endpoint
|
|
315
|
+
* @returns The raw response data from the exchange
|
|
316
|
+
*
|
|
301
317
|
* @example
|
|
302
318
|
* ```typescript
|
|
303
|
-
*
|
|
319
|
+
* // Call a Polymarket CLOB endpoint directly
|
|
320
|
+
* const result = await poly.callApi('getMarket', { condition_id: '0x...' });
|
|
304
321
|
* ```
|
|
305
322
|
*/
|
|
306
|
-
async
|
|
323
|
+
async callApi(operationId: string, params?: Record<string, any>): Promise<any> {
|
|
307
324
|
await this.initPromise;
|
|
308
325
|
try {
|
|
309
|
-
const
|
|
310
|
-
if (params) {
|
|
311
|
-
args.push(params);
|
|
312
|
-
}
|
|
326
|
+
const url = `${this.config.basePath}/api/${this.exchangeName}/callApi`;
|
|
313
327
|
|
|
314
|
-
const requestBody:
|
|
315
|
-
args,
|
|
328
|
+
const requestBody: any = {
|
|
329
|
+
args: [operationId, params],
|
|
316
330
|
credentials: this.getCredentials()
|
|
317
331
|
};
|
|
318
332
|
|
|
319
|
-
const response = await
|
|
320
|
-
|
|
321
|
-
|
|
333
|
+
const response = await fetch(url, {
|
|
334
|
+
method: 'POST',
|
|
335
|
+
headers: {
|
|
336
|
+
'Content-Type': 'application/json',
|
|
337
|
+
...this.config.headers
|
|
338
|
+
},
|
|
339
|
+
body: JSON.stringify(requestBody)
|
|
322
340
|
});
|
|
323
341
|
|
|
324
|
-
|
|
325
|
-
|
|
342
|
+
if (!response.ok) {
|
|
343
|
+
const error = await response.json().catch(() => ({}));
|
|
344
|
+
throw new Error(error.error?.message || response.statusText);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
const json = await response.json();
|
|
348
|
+
return this.handleResponse(json);
|
|
326
349
|
} catch (error) {
|
|
327
|
-
throw new Error(`Failed to
|
|
350
|
+
throw new Error(`Failed to call API '${operationId}': ${error}`);
|
|
328
351
|
}
|
|
329
352
|
}
|
|
330
353
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
*
|
|
335
|
-
* @param params - Lookup parameters (marketId, outcomeId, slug, eventId, query)
|
|
336
|
-
* @returns A single unified market
|
|
337
|
-
* @throws Error if no market matches
|
|
338
|
-
*
|
|
339
|
-
* @example
|
|
340
|
-
* ```typescript
|
|
341
|
-
* const market = await exchange.fetchMarket({ marketId: '663583' });
|
|
342
|
-
* const market = await exchange.fetchMarket({ outcomeId: '10991849...' });
|
|
343
|
-
* const market = await exchange.fetchMarket({ slug: 'will-trump-win' });
|
|
344
|
-
* ```
|
|
345
|
-
*/
|
|
346
|
-
async fetchMarket(params?: any): Promise<UnifiedMarket> {
|
|
354
|
+
// BEGIN GENERATED METHODS
|
|
355
|
+
|
|
356
|
+
async loadMarkets(reload: boolean = false): Promise<Record<string, UnifiedMarket>> {
|
|
347
357
|
await this.initPromise;
|
|
348
358
|
try {
|
|
349
359
|
const args: any[] = [];
|
|
350
|
-
|
|
351
|
-
|
|
360
|
+
args.push(reload);
|
|
361
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/loadMarkets`, {
|
|
362
|
+
method: 'POST',
|
|
363
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
364
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
365
|
+
});
|
|
366
|
+
if (!response.ok) {
|
|
367
|
+
const error = await response.json().catch(() => ({}));
|
|
368
|
+
throw new Error(error.error?.message || response.statusText);
|
|
352
369
|
}
|
|
370
|
+
const json = await response.json();
|
|
371
|
+
const data = this.handleResponse(json);
|
|
372
|
+
const result: Record<string, UnifiedMarket> = {};
|
|
373
|
+
for (const [key, value] of Object.entries(data as any)) {
|
|
374
|
+
result[key] = convertMarket(value);
|
|
375
|
+
}
|
|
376
|
+
return result;
|
|
377
|
+
} catch (error) {
|
|
378
|
+
throw new Error(`Failed to loadMarkets: ${error}`);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
353
381
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
const
|
|
382
|
+
async fetchMarkets(params?: any): Promise<UnifiedMarket[]> {
|
|
383
|
+
await this.initPromise;
|
|
384
|
+
try {
|
|
385
|
+
const args: any[] = [];
|
|
386
|
+
if (params !== undefined) args.push(params);
|
|
387
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchMarkets`, {
|
|
388
|
+
method: 'POST',
|
|
389
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
390
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
391
|
+
});
|
|
392
|
+
if (!response.ok) {
|
|
393
|
+
const error = await response.json().catch(() => ({}));
|
|
394
|
+
throw new Error(error.error?.message || response.statusText);
|
|
395
|
+
}
|
|
396
|
+
const json = await response.json();
|
|
397
|
+
const data = this.handleResponse(json);
|
|
398
|
+
return data.map(convertMarket);
|
|
399
|
+
} catch (error) {
|
|
400
|
+
throw new Error(`Failed to fetchMarkets: ${error}`);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
360
403
|
|
|
361
|
-
|
|
404
|
+
async fetchMarketsPaginated(params?: any): Promise<PaginatedMarketsResult> {
|
|
405
|
+
await this.initPromise;
|
|
406
|
+
try {
|
|
407
|
+
const args: any[] = [];
|
|
408
|
+
if (params !== undefined) args.push(params);
|
|
409
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchMarketsPaginated`, {
|
|
362
410
|
method: 'POST',
|
|
363
|
-
headers: {
|
|
364
|
-
|
|
365
|
-
...this.config.headers
|
|
366
|
-
},
|
|
367
|
-
body: JSON.stringify(requestBody)
|
|
411
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
412
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
368
413
|
});
|
|
414
|
+
if (!response.ok) {
|
|
415
|
+
const error = await response.json().catch(() => ({}));
|
|
416
|
+
throw new Error(error.error?.message || response.statusText);
|
|
417
|
+
}
|
|
418
|
+
const json = await response.json();
|
|
419
|
+
const data = this.handleResponse(json);
|
|
420
|
+
return {
|
|
421
|
+
data: (data.data || []).map(convertMarket),
|
|
422
|
+
total: data.total,
|
|
423
|
+
nextCursor: data.nextCursor,
|
|
424
|
+
};
|
|
425
|
+
} catch (error) {
|
|
426
|
+
throw new Error(`Failed to fetchMarketsPaginated: ${error}`);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
369
429
|
|
|
430
|
+
async fetchEvents(params?: any): Promise<UnifiedEvent[]> {
|
|
431
|
+
await this.initPromise;
|
|
432
|
+
try {
|
|
433
|
+
const args: any[] = [];
|
|
434
|
+
if (params !== undefined) args.push(params);
|
|
435
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchEvents`, {
|
|
436
|
+
method: 'POST',
|
|
437
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
438
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
439
|
+
});
|
|
370
440
|
if (!response.ok) {
|
|
371
441
|
const error = await response.json().catch(() => ({}));
|
|
372
442
|
throw new Error(error.error?.message || response.statusText);
|
|
373
443
|
}
|
|
444
|
+
const json = await response.json();
|
|
445
|
+
const data = this.handleResponse(json);
|
|
446
|
+
return data.map(convertEvent);
|
|
447
|
+
} catch (error) {
|
|
448
|
+
throw new Error(`Failed to fetchEvents: ${error}`);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
374
451
|
|
|
452
|
+
async fetchMarket(params?: any): Promise<UnifiedMarket> {
|
|
453
|
+
await this.initPromise;
|
|
454
|
+
try {
|
|
455
|
+
const args: any[] = [];
|
|
456
|
+
if (params !== undefined) args.push(params);
|
|
457
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchMarket`, {
|
|
458
|
+
method: 'POST',
|
|
459
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
460
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
461
|
+
});
|
|
462
|
+
if (!response.ok) {
|
|
463
|
+
const error = await response.json().catch(() => ({}));
|
|
464
|
+
throw new Error(error.error?.message || response.statusText);
|
|
465
|
+
}
|
|
375
466
|
const json = await response.json();
|
|
376
467
|
const data = this.handleResponse(json);
|
|
377
468
|
return convertMarket(data);
|
|
378
469
|
} catch (error) {
|
|
379
|
-
throw new Error(`Failed to
|
|
470
|
+
throw new Error(`Failed to fetchMarket: ${error}`);
|
|
380
471
|
}
|
|
381
472
|
}
|
|
382
473
|
|
|
383
|
-
/**
|
|
384
|
-
* Fetch a single event by lookup parameters.
|
|
385
|
-
* Returns the first matching event or throws if not found.
|
|
386
|
-
*
|
|
387
|
-
* @param params - Lookup parameters (eventId, slug, query)
|
|
388
|
-
* @returns A single unified event
|
|
389
|
-
* @throws Error if no event matches
|
|
390
|
-
*
|
|
391
|
-
* @example
|
|
392
|
-
* ```typescript
|
|
393
|
-
* const event = await exchange.fetchEvent({ eventId: 'TRUMP25DEC' });
|
|
394
|
-
* const event = await exchange.fetchEvent({ slug: 'us-election' });
|
|
395
|
-
* ```
|
|
396
|
-
*/
|
|
397
474
|
async fetchEvent(params?: any): Promise<UnifiedEvent> {
|
|
398
475
|
await this.initPromise;
|
|
399
476
|
try {
|
|
400
477
|
const args: any[] = [];
|
|
401
|
-
if (params)
|
|
402
|
-
|
|
478
|
+
if (params !== undefined) args.push(params);
|
|
479
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchEvent`, {
|
|
480
|
+
method: 'POST',
|
|
481
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
482
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
483
|
+
});
|
|
484
|
+
if (!response.ok) {
|
|
485
|
+
const error = await response.json().catch(() => ({}));
|
|
486
|
+
throw new Error(error.error?.message || response.statusText);
|
|
403
487
|
}
|
|
488
|
+
const json = await response.json();
|
|
489
|
+
const data = this.handleResponse(json);
|
|
490
|
+
return convertEvent(data);
|
|
491
|
+
} catch (error) {
|
|
492
|
+
throw new Error(`Failed to fetchEvent: ${error}`);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
404
495
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
496
|
+
async fetchOrderBook(id: string): Promise<OrderBook> {
|
|
497
|
+
await this.initPromise;
|
|
498
|
+
try {
|
|
499
|
+
const args: any[] = [];
|
|
500
|
+
args.push(id);
|
|
501
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchOrderBook`, {
|
|
502
|
+
method: 'POST',
|
|
503
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
504
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
505
|
+
});
|
|
506
|
+
if (!response.ok) {
|
|
507
|
+
const error = await response.json().catch(() => ({}));
|
|
508
|
+
throw new Error(error.error?.message || response.statusText);
|
|
509
|
+
}
|
|
510
|
+
const json = await response.json();
|
|
511
|
+
const data = this.handleResponse(json);
|
|
512
|
+
return convertOrderBook(data);
|
|
513
|
+
} catch (error) {
|
|
514
|
+
throw new Error(`Failed to fetchOrderBook: ${error}`);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
409
517
|
|
|
410
|
-
|
|
518
|
+
async cancelOrder(orderId: string): Promise<Order> {
|
|
519
|
+
await this.initPromise;
|
|
520
|
+
try {
|
|
521
|
+
const args: any[] = [];
|
|
522
|
+
args.push(orderId);
|
|
523
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/cancelOrder`, {
|
|
524
|
+
method: 'POST',
|
|
525
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
526
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
527
|
+
});
|
|
528
|
+
if (!response.ok) {
|
|
529
|
+
const error = await response.json().catch(() => ({}));
|
|
530
|
+
throw new Error(error.error?.message || response.statusText);
|
|
531
|
+
}
|
|
532
|
+
const json = await response.json();
|
|
533
|
+
const data = this.handleResponse(json);
|
|
534
|
+
return convertOrder(data);
|
|
535
|
+
} catch (error) {
|
|
536
|
+
throw new Error(`Failed to cancelOrder: ${error}`);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
411
539
|
|
|
412
|
-
|
|
540
|
+
async fetchOrder(orderId: string): Promise<Order> {
|
|
541
|
+
await this.initPromise;
|
|
542
|
+
try {
|
|
543
|
+
const args: any[] = [];
|
|
544
|
+
args.push(orderId);
|
|
545
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchOrder`, {
|
|
413
546
|
method: 'POST',
|
|
414
|
-
headers: {
|
|
415
|
-
|
|
416
|
-
...this.config.headers
|
|
417
|
-
},
|
|
418
|
-
body: JSON.stringify(requestBody)
|
|
547
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
548
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
419
549
|
});
|
|
550
|
+
if (!response.ok) {
|
|
551
|
+
const error = await response.json().catch(() => ({}));
|
|
552
|
+
throw new Error(error.error?.message || response.statusText);
|
|
553
|
+
}
|
|
554
|
+
const json = await response.json();
|
|
555
|
+
const data = this.handleResponse(json);
|
|
556
|
+
return convertOrder(data);
|
|
557
|
+
} catch (error) {
|
|
558
|
+
throw new Error(`Failed to fetchOrder: ${error}`);
|
|
559
|
+
}
|
|
560
|
+
}
|
|
420
561
|
|
|
562
|
+
async fetchOpenOrders(marketId?: string): Promise<Order[]> {
|
|
563
|
+
await this.initPromise;
|
|
564
|
+
try {
|
|
565
|
+
const args: any[] = [];
|
|
566
|
+
if (marketId !== undefined) args.push(marketId);
|
|
567
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchOpenOrders`, {
|
|
568
|
+
method: 'POST',
|
|
569
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
570
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
571
|
+
});
|
|
421
572
|
if (!response.ok) {
|
|
422
573
|
const error = await response.json().catch(() => ({}));
|
|
423
574
|
throw new Error(error.error?.message || response.statusText);
|
|
424
575
|
}
|
|
576
|
+
const json = await response.json();
|
|
577
|
+
const data = this.handleResponse(json);
|
|
578
|
+
return data.map(convertOrder);
|
|
579
|
+
} catch (error) {
|
|
580
|
+
throw new Error(`Failed to fetchOpenOrders: ${error}`);
|
|
581
|
+
}
|
|
582
|
+
}
|
|
425
583
|
|
|
584
|
+
async fetchMyTrades(params?: any): Promise<UserTrade[]> {
|
|
585
|
+
await this.initPromise;
|
|
586
|
+
try {
|
|
587
|
+
const args: any[] = [];
|
|
588
|
+
if (params !== undefined) args.push(params);
|
|
589
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchMyTrades`, {
|
|
590
|
+
method: 'POST',
|
|
591
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
592
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
593
|
+
});
|
|
594
|
+
if (!response.ok) {
|
|
595
|
+
const error = await response.json().catch(() => ({}));
|
|
596
|
+
throw new Error(error.error?.message || response.statusText);
|
|
597
|
+
}
|
|
426
598
|
const json = await response.json();
|
|
427
599
|
const data = this.handleResponse(json);
|
|
428
|
-
return
|
|
600
|
+
return data.map(convertUserTrade);
|
|
429
601
|
} catch (error) {
|
|
430
|
-
throw new Error(`Failed to
|
|
602
|
+
throw new Error(`Failed to fetchMyTrades: ${error}`);
|
|
431
603
|
}
|
|
432
604
|
}
|
|
433
605
|
|
|
606
|
+
async fetchClosedOrders(params?: any): Promise<Order[]> {
|
|
607
|
+
await this.initPromise;
|
|
608
|
+
try {
|
|
609
|
+
const args: any[] = [];
|
|
610
|
+
if (params !== undefined) args.push(params);
|
|
611
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchClosedOrders`, {
|
|
612
|
+
method: 'POST',
|
|
613
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
614
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
615
|
+
});
|
|
616
|
+
if (!response.ok) {
|
|
617
|
+
const error = await response.json().catch(() => ({}));
|
|
618
|
+
throw new Error(error.error?.message || response.statusText);
|
|
619
|
+
}
|
|
620
|
+
const json = await response.json();
|
|
621
|
+
const data = this.handleResponse(json);
|
|
622
|
+
return data.map(convertOrder);
|
|
623
|
+
} catch (error) {
|
|
624
|
+
throw new Error(`Failed to fetchClosedOrders: ${error}`);
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
async fetchAllOrders(params?: any): Promise<Order[]> {
|
|
629
|
+
await this.initPromise;
|
|
630
|
+
try {
|
|
631
|
+
const args: any[] = [];
|
|
632
|
+
if (params !== undefined) args.push(params);
|
|
633
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchAllOrders`, {
|
|
634
|
+
method: 'POST',
|
|
635
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
636
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
637
|
+
});
|
|
638
|
+
if (!response.ok) {
|
|
639
|
+
const error = await response.json().catch(() => ({}));
|
|
640
|
+
throw new Error(error.error?.message || response.statusText);
|
|
641
|
+
}
|
|
642
|
+
const json = await response.json();
|
|
643
|
+
const data = this.handleResponse(json);
|
|
644
|
+
return data.map(convertOrder);
|
|
645
|
+
} catch (error) {
|
|
646
|
+
throw new Error(`Failed to fetchAllOrders: ${error}`);
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
async fetchPositions(): Promise<Position[]> {
|
|
651
|
+
await this.initPromise;
|
|
652
|
+
try {
|
|
653
|
+
const args: any[] = [];
|
|
654
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchPositions`, {
|
|
655
|
+
method: 'POST',
|
|
656
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
657
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
658
|
+
});
|
|
659
|
+
if (!response.ok) {
|
|
660
|
+
const error = await response.json().catch(() => ({}));
|
|
661
|
+
throw new Error(error.error?.message || response.statusText);
|
|
662
|
+
}
|
|
663
|
+
const json = await response.json();
|
|
664
|
+
const data = this.handleResponse(json);
|
|
665
|
+
return data.map(convertPosition);
|
|
666
|
+
} catch (error) {
|
|
667
|
+
throw new Error(`Failed to fetchPositions: ${error}`);
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
async fetchBalance(): Promise<Balance[]> {
|
|
672
|
+
await this.initPromise;
|
|
673
|
+
try {
|
|
674
|
+
const args: any[] = [];
|
|
675
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/fetchBalance`, {
|
|
676
|
+
method: 'POST',
|
|
677
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
678
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
679
|
+
});
|
|
680
|
+
if (!response.ok) {
|
|
681
|
+
const error = await response.json().catch(() => ({}));
|
|
682
|
+
throw new Error(error.error?.message || response.statusText);
|
|
683
|
+
}
|
|
684
|
+
const json = await response.json();
|
|
685
|
+
const data = this.handleResponse(json);
|
|
686
|
+
return data.map(convertBalance);
|
|
687
|
+
} catch (error) {
|
|
688
|
+
throw new Error(`Failed to fetchBalance: ${error}`);
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
async close(): Promise<void> {
|
|
693
|
+
await this.initPromise;
|
|
694
|
+
try {
|
|
695
|
+
const args: any[] = [];
|
|
696
|
+
const response = await fetch(`${this.config.basePath}/api/${this.exchangeName}/close`, {
|
|
697
|
+
method: 'POST',
|
|
698
|
+
headers: { 'Content-Type': 'application/json', ...this.config.headers },
|
|
699
|
+
body: JSON.stringify({ args, credentials: this.getCredentials() }),
|
|
700
|
+
});
|
|
701
|
+
if (!response.ok) {
|
|
702
|
+
const error = await response.json().catch(() => ({}));
|
|
703
|
+
throw new Error(error.error?.message || response.statusText);
|
|
704
|
+
}
|
|
705
|
+
const json = await response.json();
|
|
706
|
+
this.handleResponse(json);
|
|
707
|
+
} catch (error) {
|
|
708
|
+
throw new Error(`Failed to close: ${error}`);
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
// END GENERATED METHODS
|
|
713
|
+
|
|
434
714
|
/**
|
|
435
715
|
* Get historical price candles.
|
|
436
716
|
*
|
|
@@ -482,44 +762,11 @@ export abstract class Exchange {
|
|
|
482
762
|
}
|
|
483
763
|
}
|
|
484
764
|
|
|
485
|
-
/**
|
|
486
|
-
* Get current order book for an outcome.
|
|
487
|
-
*
|
|
488
|
-
* @param outcomeId - Outcome ID
|
|
489
|
-
* @returns Current order book
|
|
490
|
-
*
|
|
491
|
-
* @example
|
|
492
|
-
* ```typescript
|
|
493
|
-
* const orderBook = await exchange.fetchOrderBook(outcomeId);
|
|
494
|
-
* console.log(`Best bid: ${orderBook.bids[0].price}`);
|
|
495
|
-
* console.log(`Best ask: ${orderBook.asks[0].price}`);
|
|
496
|
-
* ```
|
|
497
|
-
*/
|
|
498
|
-
async fetchOrderBook(outcomeId: string): Promise<OrderBook> {
|
|
499
|
-
await this.initPromise;
|
|
500
|
-
try {
|
|
501
|
-
const requestBody: FetchOrderBookRequest = {
|
|
502
|
-
args: [outcomeId],
|
|
503
|
-
credentials: this.getCredentials()
|
|
504
|
-
};
|
|
505
|
-
|
|
506
|
-
const response = await this.api.fetchOrderBook({
|
|
507
|
-
exchange: this.exchangeName as any,
|
|
508
|
-
fetchOrderBookRequest: requestBody,
|
|
509
|
-
});
|
|
510
|
-
|
|
511
|
-
const data = this.handleResponse(response);
|
|
512
|
-
return convertOrderBook(data);
|
|
513
|
-
} catch (error) {
|
|
514
|
-
throw new Error(`Failed to fetch order book: ${error}`);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
|
|
518
765
|
/**
|
|
519
766
|
* Get trade history for an outcome.
|
|
520
|
-
*
|
|
767
|
+
*
|
|
521
768
|
* Note: Polymarket requires API key.
|
|
522
|
-
*
|
|
769
|
+
*
|
|
523
770
|
* @param outcomeId - Outcome ID
|
|
524
771
|
* @param params - History filter parameters
|
|
525
772
|
* @returns List of trades
|
|
@@ -727,141 +974,6 @@ export abstract class Exchange {
|
|
|
727
974
|
}
|
|
728
975
|
}
|
|
729
976
|
|
|
730
|
-
/**
|
|
731
|
-
* Cancel an open order.
|
|
732
|
-
*
|
|
733
|
-
* @param orderId - Order ID to cancel
|
|
734
|
-
* @returns Cancelled order
|
|
735
|
-
*/
|
|
736
|
-
async cancelOrder(orderId: string): Promise<Order> {
|
|
737
|
-
await this.initPromise;
|
|
738
|
-
try {
|
|
739
|
-
const requestBody: CancelOrderRequest = {
|
|
740
|
-
args: [orderId],
|
|
741
|
-
credentials: this.getCredentials()
|
|
742
|
-
};
|
|
743
|
-
|
|
744
|
-
const response = await this.api.cancelOrder({
|
|
745
|
-
exchange: this.exchangeName as any,
|
|
746
|
-
cancelOrderRequest: requestBody,
|
|
747
|
-
});
|
|
748
|
-
|
|
749
|
-
const data = this.handleResponse(response);
|
|
750
|
-
return convertOrder(data);
|
|
751
|
-
} catch (error) {
|
|
752
|
-
throw new Error(`Failed to cancel order: ${error}`);
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
|
|
756
|
-
/**
|
|
757
|
-
* Get details of a specific order.
|
|
758
|
-
*
|
|
759
|
-
* @param orderId - Order ID
|
|
760
|
-
* @returns Order details
|
|
761
|
-
*/
|
|
762
|
-
async fetchOrder(orderId: string): Promise<Order> {
|
|
763
|
-
await this.initPromise;
|
|
764
|
-
try {
|
|
765
|
-
const requestBody: CancelOrderRequest = {
|
|
766
|
-
args: [orderId],
|
|
767
|
-
credentials: this.getCredentials()
|
|
768
|
-
};
|
|
769
|
-
|
|
770
|
-
const response = await this.api.fetchOrder({
|
|
771
|
-
exchange: this.exchangeName as any,
|
|
772
|
-
cancelOrderRequest: requestBody,
|
|
773
|
-
});
|
|
774
|
-
|
|
775
|
-
const data = this.handleResponse(response);
|
|
776
|
-
return convertOrder(data);
|
|
777
|
-
} catch (error) {
|
|
778
|
-
throw new Error(`Failed to fetch order: ${error}`);
|
|
779
|
-
}
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
/**
|
|
783
|
-
* Get all open orders, optionally filtered by market.
|
|
784
|
-
*
|
|
785
|
-
* @param marketId - Optional market ID to filter by
|
|
786
|
-
* @returns List of open orders
|
|
787
|
-
*/
|
|
788
|
-
async fetchOpenOrders(marketId?: string): Promise<Order[]> {
|
|
789
|
-
await this.initPromise;
|
|
790
|
-
try {
|
|
791
|
-
const args: any[] = [];
|
|
792
|
-
if (marketId) {
|
|
793
|
-
args.push(marketId);
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
const requestBody: FetchOpenOrdersRequest = {
|
|
797
|
-
args,
|
|
798
|
-
credentials: this.getCredentials()
|
|
799
|
-
};
|
|
800
|
-
|
|
801
|
-
const response = await this.api.fetchOpenOrders({
|
|
802
|
-
exchange: this.exchangeName as any,
|
|
803
|
-
fetchOpenOrdersRequest: requestBody,
|
|
804
|
-
});
|
|
805
|
-
|
|
806
|
-
const data = this.handleResponse(response);
|
|
807
|
-
return data.map(convertOrder);
|
|
808
|
-
} catch (error) {
|
|
809
|
-
throw new Error(`Failed to fetch open orders: ${error}`);
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
// Account Methods
|
|
814
|
-
|
|
815
|
-
/**
|
|
816
|
-
* Get current positions across all markets.
|
|
817
|
-
*
|
|
818
|
-
* @returns List of positions
|
|
819
|
-
*/
|
|
820
|
-
async fetchPositions(): Promise<Position[]> {
|
|
821
|
-
await this.initPromise;
|
|
822
|
-
try {
|
|
823
|
-
const requestBody: FetchPositionsRequest = {
|
|
824
|
-
args: [],
|
|
825
|
-
credentials: this.getCredentials()
|
|
826
|
-
};
|
|
827
|
-
|
|
828
|
-
const response = await this.api.fetchPositions({
|
|
829
|
-
exchange: this.exchangeName as any,
|
|
830
|
-
fetchPositionsRequest: requestBody,
|
|
831
|
-
});
|
|
832
|
-
|
|
833
|
-
const data = this.handleResponse(response);
|
|
834
|
-
return data.map(convertPosition);
|
|
835
|
-
} catch (error) {
|
|
836
|
-
throw new Error(`Failed to fetch positions: ${error}`);
|
|
837
|
-
}
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
/**
|
|
841
|
-
* Get account balance.
|
|
842
|
-
*
|
|
843
|
-
* @returns List of balances (by currency)
|
|
844
|
-
*/
|
|
845
|
-
async fetchBalance(): Promise<Balance[]> {
|
|
846
|
-
await this.initPromise;
|
|
847
|
-
try {
|
|
848
|
-
const requestBody: FetchPositionsRequest = {
|
|
849
|
-
args: [],
|
|
850
|
-
credentials: this.getCredentials()
|
|
851
|
-
};
|
|
852
|
-
|
|
853
|
-
const response = await this.api.fetchBalance({
|
|
854
|
-
exchange: this.exchangeName as any,
|
|
855
|
-
fetchPositionsRequest: requestBody,
|
|
856
|
-
});
|
|
857
|
-
|
|
858
|
-
const data = this.handleResponse(response);
|
|
859
|
-
return data.map(convertBalance);
|
|
860
|
-
} catch (error) {
|
|
861
|
-
throw new Error(`Failed to fetch balance: ${error}`);
|
|
862
|
-
}
|
|
863
|
-
}
|
|
864
|
-
|
|
865
977
|
/**
|
|
866
978
|
* Calculate the average execution price for a given amount by walking the order book.
|
|
867
979
|
* Uses the sidecar server for calculation to ensure consistency.
|
|
@@ -1296,3 +1408,99 @@ export class Limitless extends Exchange {
|
|
|
1296
1408
|
super("limitless", options);
|
|
1297
1409
|
}
|
|
1298
1410
|
}
|
|
1411
|
+
|
|
1412
|
+
/**
|
|
1413
|
+
* Kalshi Demo exchange client (paper trading / sandbox environment).
|
|
1414
|
+
*
|
|
1415
|
+
* Uses Kalshi's demo environment — same API as Kalshi but against test accounts.
|
|
1416
|
+
* Credentials are separate from production Kalshi credentials.
|
|
1417
|
+
*
|
|
1418
|
+
* @example
|
|
1419
|
+
* ```typescript
|
|
1420
|
+
* const kalshiDemo = new KalshiDemo({
|
|
1421
|
+
* apiKey: process.env.KALSHI_DEMO_API_KEY,
|
|
1422
|
+
* privateKey: process.env.KALSHI_DEMO_PRIVATE_KEY
|
|
1423
|
+
* });
|
|
1424
|
+
* const balance = await kalshiDemo.fetchBalance();
|
|
1425
|
+
* ```
|
|
1426
|
+
*/
|
|
1427
|
+
export class KalshiDemo extends Exchange {
|
|
1428
|
+
constructor(options: ExchangeOptions = {}) {
|
|
1429
|
+
super("kalshi-demo", options);
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
|
|
1433
|
+
/**
|
|
1434
|
+
* Myriad exchange client.
|
|
1435
|
+
*
|
|
1436
|
+
* AMM-based prediction market exchange. Requires an API key for trading.
|
|
1437
|
+
* The `privateKey` field is used as the wallet address.
|
|
1438
|
+
*
|
|
1439
|
+
* @example
|
|
1440
|
+
* ```typescript
|
|
1441
|
+
* // Public data (no auth)
|
|
1442
|
+
* const myriad = new Myriad();
|
|
1443
|
+
* const markets = await myriad.fetchMarkets();
|
|
1444
|
+
*
|
|
1445
|
+
* // Trading (requires auth)
|
|
1446
|
+
* const myriad = new Myriad({
|
|
1447
|
+
* apiKey: process.env.MYRIAD_API_KEY,
|
|
1448
|
+
* privateKey: process.env.MYRIAD_WALLET_ADDRESS
|
|
1449
|
+
* });
|
|
1450
|
+
* ```
|
|
1451
|
+
*/
|
|
1452
|
+
export class Myriad extends Exchange {
|
|
1453
|
+
constructor(options: ExchangeOptions = {}) {
|
|
1454
|
+
super("myriad", options);
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
/**
|
|
1459
|
+
* Probable exchange client.
|
|
1460
|
+
*
|
|
1461
|
+
* BSC-based CLOB exchange. Requires all four credential fields for trading.
|
|
1462
|
+
*
|
|
1463
|
+
* @example
|
|
1464
|
+
* ```typescript
|
|
1465
|
+
* // Public data (no auth)
|
|
1466
|
+
* const probable = new Probable();
|
|
1467
|
+
* const markets = await probable.fetchMarkets();
|
|
1468
|
+
*
|
|
1469
|
+
* // Trading (requires auth)
|
|
1470
|
+
* const probable = new Probable({
|
|
1471
|
+
* privateKey: process.env.PROBABLE_PRIVATE_KEY,
|
|
1472
|
+
* apiKey: process.env.PROBABLE_API_KEY,
|
|
1473
|
+
* apiSecret: process.env.PROBABLE_API_SECRET,
|
|
1474
|
+
* passphrase: process.env.PROBABLE_PASSPHRASE
|
|
1475
|
+
* });
|
|
1476
|
+
* ```
|
|
1477
|
+
*/
|
|
1478
|
+
export class Probable extends Exchange {
|
|
1479
|
+
constructor(options: ExchangeOptions = {}) {
|
|
1480
|
+
super("probable", options);
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1484
|
+
/**
|
|
1485
|
+
* Baozi exchange client.
|
|
1486
|
+
*
|
|
1487
|
+
* Solana-based on-chain pari-mutuel betting exchange.
|
|
1488
|
+
* Requires a Solana private key for trading.
|
|
1489
|
+
*
|
|
1490
|
+
* @example
|
|
1491
|
+
* ```typescript
|
|
1492
|
+
* // Public data (no auth)
|
|
1493
|
+
* const baozi = new Baozi();
|
|
1494
|
+
* const markets = await baozi.fetchMarkets();
|
|
1495
|
+
*
|
|
1496
|
+
* // Trading (requires auth)
|
|
1497
|
+
* const baozi = new Baozi({
|
|
1498
|
+
* privateKey: process.env.BAOZI_PRIVATE_KEY
|
|
1499
|
+
* });
|
|
1500
|
+
* ```
|
|
1501
|
+
*/
|
|
1502
|
+
export class Baozi extends Exchange {
|
|
1503
|
+
constructor(options: ExchangeOptions = {}) {
|
|
1504
|
+
super("baozi", options);
|
|
1505
|
+
}
|
|
1506
|
+
}
|