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.
Files changed (284) hide show
  1. package/dist/esm/generated/src/apis/DefaultApi.d.ts +242 -112
  2. package/dist/esm/generated/src/apis/DefaultApi.js +298 -108
  3. package/dist/esm/generated/src/models/BuildOrder200Response.d.ts +46 -0
  4. package/dist/esm/generated/src/models/BuildOrder200Response.js +47 -0
  5. package/dist/esm/generated/src/models/BuildOrderRequest.d.ts +40 -0
  6. package/dist/esm/generated/src/models/BuildOrderRequest.js +47 -0
  7. package/dist/esm/generated/src/models/BuiltOrder.d.ts +60 -0
  8. package/dist/esm/generated/src/models/BuiltOrder.js +51 -0
  9. package/dist/esm/generated/src/models/BuiltOrderTx.d.ts +50 -0
  10. package/dist/esm/generated/src/models/BuiltOrderTx.js +47 -0
  11. package/dist/esm/generated/src/models/CloseRequest.d.ts +39 -0
  12. package/dist/esm/generated/src/models/{WatchUserPositionsRequest.js → CloseRequest.js} +10 -8
  13. package/dist/esm/generated/src/models/EventFetchParams.d.ts +15 -0
  14. package/dist/esm/generated/src/models/EventFetchParams.js +10 -0
  15. package/dist/esm/generated/src/models/FetchAllOrdersRequest.d.ts +40 -0
  16. package/dist/esm/generated/src/models/FetchAllOrdersRequest.js +45 -0
  17. package/dist/esm/generated/src/models/FetchBalanceRequest.d.ts +39 -0
  18. package/dist/esm/generated/src/models/FetchBalanceRequest.js +44 -0
  19. package/dist/esm/generated/src/models/FetchClosedOrdersRequest.d.ts +40 -0
  20. package/dist/esm/generated/src/models/FetchClosedOrdersRequest.js +45 -0
  21. package/dist/esm/generated/src/models/FetchEventRequest.d.ts +40 -0
  22. package/dist/esm/generated/src/models/FetchEventRequest.js +45 -0
  23. package/dist/esm/generated/src/models/FetchMarketsPaginated200Response.d.ts +46 -0
  24. package/dist/esm/generated/src/models/FetchMarketsPaginated200Response.js +47 -0
  25. package/dist/esm/generated/src/models/FetchMarketsPaginatedRequest.d.ts +40 -0
  26. package/dist/esm/generated/src/models/FetchMarketsPaginatedRequest.js +45 -0
  27. package/dist/esm/generated/src/models/FetchMarketsPaginatedRequestArgsInner.d.ts +38 -0
  28. package/dist/esm/generated/src/models/FetchMarketsPaginatedRequestArgsInner.js +43 -0
  29. package/dist/esm/generated/src/models/FetchMarketsRequest.d.ts +0 -6
  30. package/dist/esm/generated/src/models/FetchMarketsRequest.js +0 -2
  31. package/dist/esm/generated/src/models/FetchMyTrades200Response.d.ts +46 -0
  32. package/dist/esm/generated/src/models/FetchMyTrades200Response.js +47 -0
  33. package/dist/esm/generated/src/models/FetchMyTradesRequest.d.ts +40 -0
  34. package/dist/esm/generated/src/models/FetchMyTradesRequest.js +45 -0
  35. package/dist/esm/generated/src/models/FetchOHLCVRequest.d.ts +1 -1
  36. package/dist/esm/generated/src/models/{WatchPricesRequest.d.ts → FetchOrderRequest.d.ts} +10 -10
  37. package/dist/esm/generated/src/models/{WatchPricesRequest.js → FetchOrderRequest.js} +8 -8
  38. package/dist/esm/generated/src/models/FetchPositionsRequest.d.ts +1 -1
  39. package/dist/esm/generated/src/models/FetchTradesRequest.d.ts +1 -1
  40. package/dist/esm/generated/src/models/FetchTradesRequestArgsInner.d.ts +2 -2
  41. package/dist/esm/generated/src/models/FetchTradesRequestArgsInner.js +5 -5
  42. package/dist/esm/generated/src/models/FetchTradesRequestArgsInnerOneOf.d.ts +24 -0
  43. package/dist/esm/generated/src/models/FetchTradesRequestArgsInnerOneOf.js +54 -0
  44. package/dist/esm/generated/src/models/FilterEventsRequest.d.ts +1 -1
  45. package/dist/esm/generated/src/models/FilterEventsRequestArgsInner.js +3 -3
  46. package/dist/esm/generated/src/models/FilterMarketsRequest.d.ts +1 -1
  47. package/dist/esm/generated/src/models/FilterMarketsRequestArgsInner.js +3 -3
  48. package/dist/esm/generated/src/models/FilterMarketsRequestArgsInnerOneOf.d.ts +2 -2
  49. package/dist/esm/generated/src/models/FilterMarketsRequestArgsInnerOneOf.js +5 -1
  50. package/dist/esm/generated/src/models/GetExecutionPriceDetailedRequest.d.ts +40 -0
  51. package/dist/esm/generated/src/models/GetExecutionPriceDetailedRequest.js +47 -0
  52. package/dist/esm/generated/src/models/GetExecutionPriceRequest.d.ts +1 -1
  53. package/dist/esm/generated/src/models/LoadMarkets200Response.d.ts +48 -0
  54. package/dist/esm/generated/src/models/LoadMarkets200Response.js +48 -0
  55. package/dist/esm/generated/src/models/LoadMarketsRequest.d.ts +39 -0
  56. package/dist/esm/generated/src/models/LoadMarketsRequest.js +44 -0
  57. package/dist/esm/generated/src/models/MyTradesParams.d.ts +62 -0
  58. package/dist/esm/generated/src/models/MyTradesParams.js +51 -0
  59. package/dist/esm/generated/src/models/OrderHistoryParams.d.ts +56 -0
  60. package/dist/esm/generated/src/models/OrderHistoryParams.js +49 -0
  61. package/dist/esm/generated/src/models/PaginatedMarketsResult.d.ts +45 -0
  62. package/dist/esm/generated/src/models/PaginatedMarketsResult.js +46 -0
  63. package/dist/esm/generated/src/models/SubmitOrderRequest.d.ts +40 -0
  64. package/dist/esm/generated/src/models/SubmitOrderRequest.js +47 -0
  65. package/dist/esm/generated/src/models/UnifiedMarket.d.ts +6 -0
  66. package/dist/esm/generated/src/models/UnifiedMarket.js +2 -0
  67. package/dist/esm/generated/src/models/UserTrade.d.ts +83 -0
  68. package/dist/esm/generated/src/models/UserTrade.js +63 -0
  69. package/dist/esm/generated/src/models/WatchOrderBookRequest.d.ts +1 -1
  70. package/dist/esm/generated/src/models/WatchTradesRequest.d.ts +1 -1
  71. package/dist/esm/generated/src/models/index.d.ts +24 -2
  72. package/dist/esm/generated/src/models/index.js +24 -2
  73. package/dist/esm/index.d.ts +6 -2
  74. package/dist/esm/index.js +6 -2
  75. package/dist/esm/pmxt/client.d.ts +107 -81
  76. package/dist/esm/pmxt/client.js +462 -227
  77. package/dist/esm/pmxt/models.d.ts +34 -0
  78. package/dist/esm/pmxt/server-manager.d.ts +2 -0
  79. package/dist/esm/pmxt/server-manager.js +15 -2
  80. package/dist/generated/src/apis/DefaultApi.d.ts +242 -112
  81. package/dist/generated/src/apis/DefaultApi.js +298 -108
  82. package/dist/generated/src/models/BuildOrder200Response.d.ts +46 -0
  83. package/dist/generated/src/models/BuildOrder200Response.js +54 -0
  84. package/dist/generated/src/models/BuildOrderRequest.d.ts +40 -0
  85. package/dist/generated/src/models/BuildOrderRequest.js +54 -0
  86. package/dist/generated/src/models/BuiltOrder.d.ts +60 -0
  87. package/dist/generated/src/models/BuiltOrder.js +58 -0
  88. package/dist/generated/src/models/BuiltOrderTx.d.ts +50 -0
  89. package/dist/generated/src/models/BuiltOrderTx.js +54 -0
  90. package/dist/generated/src/models/CloseRequest.d.ts +39 -0
  91. package/dist/generated/src/models/{WatchUserPositionsRequest.js → CloseRequest.js} +15 -13
  92. package/dist/generated/src/models/EventFetchParams.d.ts +15 -0
  93. package/dist/generated/src/models/EventFetchParams.js +11 -1
  94. package/dist/generated/src/models/FetchAllOrdersRequest.d.ts +40 -0
  95. package/dist/generated/src/models/FetchAllOrdersRequest.js +52 -0
  96. package/dist/generated/src/models/FetchBalanceRequest.d.ts +39 -0
  97. package/dist/generated/src/models/FetchBalanceRequest.js +51 -0
  98. package/dist/generated/src/models/FetchClosedOrdersRequest.d.ts +40 -0
  99. package/dist/generated/src/models/FetchClosedOrdersRequest.js +52 -0
  100. package/dist/generated/src/models/FetchEventRequest.d.ts +40 -0
  101. package/dist/generated/src/models/FetchEventRequest.js +52 -0
  102. package/dist/generated/src/models/FetchMarketsPaginated200Response.d.ts +46 -0
  103. package/dist/generated/src/models/FetchMarketsPaginated200Response.js +54 -0
  104. package/dist/generated/src/models/FetchMarketsPaginatedRequest.d.ts +40 -0
  105. package/dist/generated/src/models/FetchMarketsPaginatedRequest.js +52 -0
  106. package/dist/generated/src/models/FetchMarketsPaginatedRequestArgsInner.d.ts +38 -0
  107. package/dist/generated/src/models/FetchMarketsPaginatedRequestArgsInner.js +50 -0
  108. package/dist/generated/src/models/FetchMarketsRequest.d.ts +0 -6
  109. package/dist/generated/src/models/FetchMarketsRequest.js +0 -2
  110. package/dist/generated/src/models/FetchMyTrades200Response.d.ts +46 -0
  111. package/dist/generated/src/models/FetchMyTrades200Response.js +54 -0
  112. package/dist/generated/src/models/FetchMyTradesRequest.d.ts +40 -0
  113. package/dist/generated/src/models/FetchMyTradesRequest.js +52 -0
  114. package/dist/generated/src/models/FetchOHLCVRequest.d.ts +1 -1
  115. package/dist/generated/src/models/{WatchPricesRequest.d.ts → FetchOrderRequest.d.ts} +10 -10
  116. package/dist/generated/src/models/{WatchPricesRequest.js → FetchOrderRequest.js} +13 -13
  117. package/dist/generated/src/models/FetchPositionsRequest.d.ts +1 -1
  118. package/dist/generated/src/models/FetchTradesRequest.d.ts +1 -1
  119. package/dist/generated/src/models/FetchTradesRequestArgsInner.d.ts +2 -2
  120. package/dist/generated/src/models/FetchTradesRequestArgsInner.js +5 -5
  121. package/dist/generated/src/models/FetchTradesRequestArgsInnerOneOf.d.ts +24 -0
  122. package/dist/generated/src/models/FetchTradesRequestArgsInnerOneOf.js +61 -0
  123. package/dist/generated/src/models/FilterEventsRequest.d.ts +1 -1
  124. package/dist/generated/src/models/FilterEventsRequestArgsInner.js +3 -3
  125. package/dist/generated/src/models/FilterMarketsRequest.d.ts +1 -1
  126. package/dist/generated/src/models/FilterMarketsRequestArgsInner.js +3 -3
  127. package/dist/generated/src/models/FilterMarketsRequestArgsInnerOneOf.d.ts +2 -2
  128. package/dist/generated/src/models/FilterMarketsRequestArgsInnerOneOf.js +5 -1
  129. package/dist/generated/src/models/GetExecutionPriceDetailedRequest.d.ts +40 -0
  130. package/dist/generated/src/models/GetExecutionPriceDetailedRequest.js +54 -0
  131. package/dist/generated/src/models/GetExecutionPriceRequest.d.ts +1 -1
  132. package/dist/generated/src/models/LoadMarkets200Response.d.ts +48 -0
  133. package/dist/generated/src/models/LoadMarkets200Response.js +55 -0
  134. package/dist/generated/src/models/LoadMarketsRequest.d.ts +39 -0
  135. package/dist/generated/src/models/LoadMarketsRequest.js +51 -0
  136. package/dist/generated/src/models/MyTradesParams.d.ts +62 -0
  137. package/dist/generated/src/models/MyTradesParams.js +58 -0
  138. package/dist/generated/src/models/OrderHistoryParams.d.ts +56 -0
  139. package/dist/generated/src/models/OrderHistoryParams.js +56 -0
  140. package/dist/generated/src/models/PaginatedMarketsResult.d.ts +45 -0
  141. package/dist/generated/src/models/PaginatedMarketsResult.js +53 -0
  142. package/dist/generated/src/models/SubmitOrderRequest.d.ts +40 -0
  143. package/dist/generated/src/models/SubmitOrderRequest.js +54 -0
  144. package/dist/generated/src/models/UnifiedMarket.d.ts +6 -0
  145. package/dist/generated/src/models/UnifiedMarket.js +2 -0
  146. package/dist/generated/src/models/UserTrade.d.ts +83 -0
  147. package/dist/generated/src/models/UserTrade.js +71 -0
  148. package/dist/generated/src/models/WatchOrderBookRequest.d.ts +1 -1
  149. package/dist/generated/src/models/WatchTradesRequest.d.ts +1 -1
  150. package/dist/generated/src/models/index.d.ts +24 -2
  151. package/dist/generated/src/models/index.js +24 -2
  152. package/dist/index.d.ts +6 -2
  153. package/dist/index.js +9 -1
  154. package/dist/pmxt/client.d.ts +107 -81
  155. package/dist/pmxt/client.js +467 -228
  156. package/dist/pmxt/models.d.ts +34 -0
  157. package/dist/pmxt/server-manager.d.ts +2 -0
  158. package/dist/pmxt/server-manager.js +15 -2
  159. package/generated/.openapi-generator/FILES +48 -4
  160. package/generated/docs/BuildOrder200Response.md +38 -0
  161. package/generated/docs/BuildOrderRequest.md +36 -0
  162. package/generated/docs/BuiltOrder.md +43 -0
  163. package/generated/docs/BuiltOrderTx.md +41 -0
  164. package/generated/docs/{WatchUserPositionsRequest.md → CloseRequest.md} +6 -4
  165. package/generated/docs/DefaultApi.md +493 -185
  166. package/generated/docs/EventFetchParams.md +2 -0
  167. package/generated/docs/FetchAllOrdersRequest.md +36 -0
  168. package/generated/docs/FetchBalanceRequest.md +36 -0
  169. package/generated/docs/FetchClosedOrdersRequest.md +36 -0
  170. package/generated/docs/FetchEventRequest.md +36 -0
  171. package/generated/docs/FetchMarketsPaginated200Response.md +38 -0
  172. package/generated/docs/FetchMarketsPaginatedRequest.md +36 -0
  173. package/generated/docs/FetchMarketsPaginatedRequestArgsInner.md +36 -0
  174. package/generated/docs/FetchMarketsRequest.md +0 -2
  175. package/generated/docs/FetchMyTrades200Response.md +38 -0
  176. package/generated/docs/FetchMyTradesRequest.md +36 -0
  177. package/generated/docs/FetchOHLCVRequest.md +1 -1
  178. package/generated/docs/{WatchPricesRequest.md → FetchOrderRequest.md} +4 -4
  179. package/generated/docs/FetchTradesRequestArgsInner.md +2 -0
  180. package/generated/docs/FetchTradesRequestArgsInnerOneOf.md +40 -0
  181. package/generated/docs/FilterMarketsRequestArgsInnerOneOf.md +0 -1
  182. package/generated/docs/GetExecutionPriceDetailedRequest.md +36 -0
  183. package/generated/docs/LoadMarkets200Response.md +38 -0
  184. package/generated/docs/LoadMarketsRequest.md +36 -0
  185. package/generated/docs/MyTradesParams.md +44 -0
  186. package/generated/docs/OrderHistoryParams.md +42 -0
  187. package/generated/docs/PaginatedMarketsResult.md +38 -0
  188. package/generated/docs/SubmitOrderRequest.md +36 -0
  189. package/generated/docs/UnifiedMarket.md +2 -0
  190. package/generated/docs/UserTrade.md +48 -0
  191. package/generated/package.json +1 -1
  192. package/generated/src/apis/DefaultApi.ts +486 -185
  193. package/generated/src/models/Balance.ts +1 -1
  194. package/generated/src/models/BaseRequest.ts +1 -1
  195. package/generated/src/models/BaseResponse.ts +1 -1
  196. package/generated/src/models/BuildOrder200Response.ts +96 -0
  197. package/generated/src/models/BuildOrderRequest.ts +89 -0
  198. package/generated/src/models/BuiltOrder.ts +112 -0
  199. package/generated/src/models/BuiltOrderTx.ts +89 -0
  200. package/generated/src/models/CancelOrderRequest.ts +1 -1
  201. package/generated/src/models/{WatchUserPositionsRequest.ts → CloseRequest.ts} +20 -12
  202. package/generated/src/models/CreateOrder200Response.ts +1 -1
  203. package/generated/src/models/CreateOrderParams.ts +1 -1
  204. package/generated/src/models/CreateOrderRequest.ts +1 -1
  205. package/generated/src/models/ErrorDetail.ts +1 -1
  206. package/generated/src/models/ErrorResponse.ts +1 -1
  207. package/generated/src/models/EventFetchParams.ts +19 -1
  208. package/generated/src/models/ExchangeCredentials.ts +1 -1
  209. package/generated/src/models/ExchangeCredentialsSignatureType.ts +1 -1
  210. package/generated/src/models/ExecutionPriceResult.ts +1 -1
  211. package/generated/src/models/FetchAllOrdersRequest.ts +88 -0
  212. package/generated/src/models/FetchBalance200Response.ts +1 -1
  213. package/generated/src/models/FetchBalanceRequest.ts +81 -0
  214. package/generated/src/models/FetchClosedOrdersRequest.ts +88 -0
  215. package/generated/src/models/FetchEvent200Response.ts +1 -1
  216. package/generated/src/models/FetchEventRequest.ts +88 -0
  217. package/generated/src/models/FetchEvents200Response.ts +1 -1
  218. package/generated/src/models/FetchEventsRequest.ts +1 -1
  219. package/generated/src/models/FetchMarket200Response.ts +1 -1
  220. package/generated/src/models/FetchMarketRequest.ts +1 -1
  221. package/generated/src/models/FetchMarkets200Response.ts +1 -1
  222. package/generated/src/models/FetchMarketsPaginated200Response.ts +96 -0
  223. package/generated/src/models/FetchMarketsPaginatedRequest.ts +88 -0
  224. package/generated/src/models/FetchMarketsPaginatedRequestArgsInner.ts +73 -0
  225. package/generated/src/models/FetchMarketsRequest.ts +1 -9
  226. package/generated/src/models/FetchMyTrades200Response.ts +96 -0
  227. package/generated/src/models/FetchMyTradesRequest.ts +88 -0
  228. package/generated/src/models/FetchOHLCV200Response.ts +1 -1
  229. package/generated/src/models/FetchOHLCVRequest.ts +2 -2
  230. package/generated/src/models/FetchOHLCVRequestArgsInner.ts +1 -1
  231. package/generated/src/models/FetchOpenOrders200Response.ts +1 -1
  232. package/generated/src/models/FetchOpenOrdersRequest.ts +1 -1
  233. package/generated/src/models/FetchOrderBook200Response.ts +1 -1
  234. package/generated/src/models/FetchOrderBookRequest.ts +1 -1
  235. package/generated/src/models/{WatchPricesRequest.ts → FetchOrderRequest.ts} +13 -13
  236. package/generated/src/models/FetchPositions200Response.ts +1 -1
  237. package/generated/src/models/FetchPositionsRequest.ts +2 -2
  238. package/generated/src/models/FetchTrades200Response.ts +1 -1
  239. package/generated/src/models/FetchTradesRequest.ts +2 -2
  240. package/generated/src/models/FetchTradesRequestArgsInner.ts +12 -12
  241. package/generated/src/models/FetchTradesRequestArgsInnerOneOf.ts +80 -0
  242. package/generated/src/models/FilterEventsRequest.ts +2 -2
  243. package/generated/src/models/FilterEventsRequestArgsInner.ts +4 -4
  244. package/generated/src/models/FilterMarketsRequest.ts +2 -2
  245. package/generated/src/models/FilterMarketsRequestArgsInner.ts +4 -4
  246. package/generated/src/models/FilterMarketsRequestArgsInnerOneOf.ts +6 -4
  247. package/generated/src/models/GetExecutionPrice200Response.ts +1 -1
  248. package/generated/src/models/GetExecutionPriceDetailed200Response.ts +1 -1
  249. package/generated/src/models/GetExecutionPriceDetailedRequest.ts +89 -0
  250. package/generated/src/models/GetExecutionPriceRequest.ts +2 -2
  251. package/generated/src/models/GetExecutionPriceRequestArgsInner.ts +1 -1
  252. package/generated/src/models/HealthCheck200Response.ts +1 -1
  253. package/generated/src/models/HistoryFilterParams.ts +1 -1
  254. package/generated/src/models/LoadMarkets200Response.ts +96 -0
  255. package/generated/src/models/LoadMarketsRequest.ts +81 -0
  256. package/generated/src/models/MarketFilterParams.ts +1 -1
  257. package/generated/src/models/MarketOutcome.ts +1 -1
  258. package/generated/src/models/MyTradesParams.ts +105 -0
  259. package/generated/src/models/OHLCVParams.ts +1 -1
  260. package/generated/src/models/Order.ts +1 -1
  261. package/generated/src/models/OrderBook.ts +1 -1
  262. package/generated/src/models/OrderHistoryParams.ts +97 -0
  263. package/generated/src/models/OrderLevel.ts +1 -1
  264. package/generated/src/models/PaginatedMarketsResult.ts +89 -0
  265. package/generated/src/models/Position.ts +1 -1
  266. package/generated/src/models/PriceCandle.ts +1 -1
  267. package/generated/src/models/SubmitOrderRequest.ts +89 -0
  268. package/generated/src/models/Trade.ts +1 -1
  269. package/generated/src/models/TradesParams.ts +1 -1
  270. package/generated/src/models/UnifiedEvent.ts +1 -1
  271. package/generated/src/models/UnifiedMarket.ts +9 -1
  272. package/generated/src/models/UserTrade.ts +133 -0
  273. package/generated/src/models/WatchOrderBookRequest.ts +2 -2
  274. package/generated/src/models/WatchOrderBookRequestArgsInner.ts +1 -1
  275. package/generated/src/models/WatchTradesRequest.ts +2 -2
  276. package/generated/src/models/index.ts +24 -2
  277. package/generated/src/runtime.ts +1 -1
  278. package/index.ts +6 -2
  279. package/package.json +4 -3
  280. package/pmxt/client.ts +464 -256
  281. package/pmxt/models.ts +46 -0
  282. package/pmxt/server-manager.ts +13 -2
  283. package/dist/esm/generated/src/models/WatchUserPositionsRequest.d.ts +0 -33
  284. package/dist/generated/src/models/WatchUserPositionsRequest.d.ts +0 -33
@@ -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
- return {
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
- // Market Data Methods
223
+ // Low-Level API Access
210
224
  /**
211
- * Get active markets from the exchange.
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 params - Optional filter parameters
214
- * @returns List of unified markets
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
- * const markets = await exchange.fetchMarkets({ limit: 20, sort: "volume" });
235
+ * // Call a Polymarket CLOB endpoint directly
236
+ * const result = await poly.callApi('getMarket', { condition_id: '0x...' });
219
237
  * ```
220
238
  */
221
- async fetchMarkets(params) {
239
+ async callApi(operationId, params) {
222
240
  await this.initPromise;
223
241
  try {
224
- const args = [];
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 this.api.fetchMarkets({
233
- exchange: this.exchangeName,
234
- fetchMarketsRequest: requestBody,
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
- const data = this.handleResponse(response);
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 fetch markets: ${error}`);
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 requestBody = {
266
- args,
267
- credentials: this.getCredentials()
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
- const url = `${this.config.basePath}/api/${this.exchangeName}/fetchMarket`;
270
- const response = await fetch(url, {
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
- 'Content-Type': 'application/json',
274
- ...this.config.headers
275
- },
276
- body: JSON.stringify(requestBody)
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 fetch market: ${error}`);
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
- 'Content-Type': 'application/json',
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 fetch event: ${error}`);
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
+ }