pmxtjs 2.47.0 → 2.48.0

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 (43) hide show
  1. package/dist/esm/generated/src/apis/DefaultApi.d.ts +38 -1
  2. package/dist/esm/generated/src/apis/DefaultApi.js +56 -1
  3. package/dist/esm/generated/src/models/EventFetchParams.d.ts +6 -0
  4. package/dist/esm/generated/src/models/EventFetchParams.js +2 -0
  5. package/dist/esm/generated/src/models/FetchSeries200Response.d.ts +46 -0
  6. package/dist/esm/generated/src/models/FetchSeries200Response.js +47 -0
  7. package/dist/esm/generated/src/models/UnifiedSeries.d.ts +95 -0
  8. package/dist/esm/generated/src/models/UnifiedSeries.js +66 -0
  9. package/dist/esm/generated/src/models/index.d.ts +2 -0
  10. package/dist/esm/generated/src/models/index.js +2 -0
  11. package/dist/esm/index.d.ts +1 -0
  12. package/dist/esm/pmxt/client.d.ts +2 -1
  13. package/dist/esm/pmxt/client.js +32 -0
  14. package/dist/esm/pmxt/models.d.ts +47 -0
  15. package/dist/generated/src/apis/DefaultApi.d.ts +38 -1
  16. package/dist/generated/src/apis/DefaultApi.js +56 -1
  17. package/dist/generated/src/models/EventFetchParams.d.ts +6 -0
  18. package/dist/generated/src/models/EventFetchParams.js +2 -0
  19. package/dist/generated/src/models/FetchSeries200Response.d.ts +46 -0
  20. package/dist/generated/src/models/FetchSeries200Response.js +54 -0
  21. package/dist/generated/src/models/UnifiedSeries.d.ts +95 -0
  22. package/dist/generated/src/models/UnifiedSeries.js +73 -0
  23. package/dist/generated/src/models/index.d.ts +2 -0
  24. package/dist/generated/src/models/index.js +2 -0
  25. package/dist/index.d.ts +1 -0
  26. package/dist/pmxt/client.d.ts +2 -1
  27. package/dist/pmxt/client.js +32 -0
  28. package/dist/pmxt/models.d.ts +47 -0
  29. package/generated/.openapi-generator/FILES +4 -0
  30. package/generated/docs/DefaultApi.md +76 -2
  31. package/generated/docs/EventFetchParams.md +2 -0
  32. package/generated/docs/FetchSeries200Response.md +38 -0
  33. package/generated/docs/UnifiedSeries.md +55 -0
  34. package/generated/package.json +1 -1
  35. package/generated/src/apis/DefaultApi.ts +78 -0
  36. package/generated/src/models/EventFetchParams.ts +8 -0
  37. package/generated/src/models/FetchSeries200Response.ts +96 -0
  38. package/generated/src/models/UnifiedSeries.ts +155 -0
  39. package/generated/src/models/index.ts +2 -0
  40. package/index.ts +1 -0
  41. package/package.json +2 -2
  42. package/pmxt/client.ts +32 -0
  43. package/pmxt/models.ts +59 -0
@@ -10,7 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import * as runtime from '../runtime.js';
13
- import type { BaseResponse, BuildOrder200Response, BuildOrderRequest, CancelOrderRequest, CloseRequest, CompareMarketPrices200Response, CompareMarketPricesRequest, CreateOrder200Response, CreateOrderRequest, EventFilterCriteria, FetchArbitrage200Response, FetchBalance200Response, FetchEvent200Response, FetchEventMatches200Response, FetchEvents200Response, FetchEventsPaginated200Response, FetchMarket200Response, FetchMarketMatches200Response, FetchMarkets200Response, FetchMarketsPaginated200Response, FetchMatchedMarkets200Response, FetchMyTrades200Response, FetchOHLCV200Response, FetchOpenOrders200Response, FetchOrderBook200Response, FetchOrderBooks200Response, FetchOrderBooksRequest, FetchPositions200Response, FetchTrades200Response, FilterEventsRequest, FilterMarketsRequest, GetExecutionPrice200Response, GetExecutionPriceDetailed200Response, GetExecutionPriceDetailedRequest, GetExecutionPriceRequest, HealthCheck200Response, LoadMarkets200Response, LoadMarketsRequest, MarketFilterCriteria, SubmitOrderRequest, UnifiedEvent, UnifiedMarket } from '../models/index.js';
13
+ import type { BaseResponse, BuildOrder200Response, BuildOrderRequest, CancelOrderRequest, CloseRequest, CompareMarketPrices200Response, CompareMarketPricesRequest, CreateOrder200Response, CreateOrderRequest, EventFilterCriteria, FetchArbitrage200Response, FetchBalance200Response, FetchEvent200Response, FetchEventMatches200Response, FetchEvents200Response, FetchEventsPaginated200Response, FetchMarket200Response, FetchMarketMatches200Response, FetchMarkets200Response, FetchMarketsPaginated200Response, FetchMatchedMarkets200Response, FetchMyTrades200Response, FetchOHLCV200Response, FetchOpenOrders200Response, FetchOrderBook200Response, FetchOrderBooks200Response, FetchOrderBooksRequest, FetchPositions200Response, FetchSeries200Response, FetchTrades200Response, FilterEventsRequest, FilterMarketsRequest, GetExecutionPrice200Response, GetExecutionPriceDetailed200Response, GetExecutionPriceDetailedRequest, GetExecutionPriceRequest, HealthCheck200Response, LoadMarkets200Response, LoadMarketsRequest, MarketFilterCriteria, SubmitOrderRequest, UnifiedEvent, UnifiedMarket } from '../models/index.js';
14
14
  export interface BuildOrderOperationRequest {
15
15
  exchange: BuildOrderOperationExchangeEnum;
16
16
  buildOrderRequest?: BuildOrderRequest;
@@ -69,6 +69,7 @@ export interface FetchEventRequest {
69
69
  searchIn?: FetchEventSearchInEnum;
70
70
  eventId?: string;
71
71
  slug?: string;
72
+ series?: string;
72
73
  filter?: EventFilterCriteria;
73
74
  category?: string;
74
75
  tags?: Array<string>;
@@ -96,6 +97,7 @@ export interface FetchEventsRequest {
96
97
  searchIn?: FetchEventsSearchInEnum;
97
98
  eventId?: string;
98
99
  slug?: string;
100
+ series?: string;
99
101
  filter?: EventFilterCriteria;
100
102
  category?: string;
101
103
  tags?: Array<string>;
@@ -243,6 +245,9 @@ export interface FetchRelatedMarketsRequest {
243
245
  minDifference?: number;
244
246
  sort?: FetchRelatedMarketsSortEnum;
245
247
  }
248
+ export interface FetchSeriesRequest {
249
+ exchange: FetchSeriesExchangeEnum;
250
+ }
246
251
  export interface FetchTradesRequest {
247
252
  exchange: FetchTradesExchangeEnum;
248
253
  outcomeId: string;
@@ -552,6 +557,16 @@ export declare class DefaultApi extends runtime.BaseAPI {
552
557
  * Find Related Markets
553
558
  */
554
559
  fetchRelatedMarkets(requestParameters: FetchRelatedMarketsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<CompareMarketPrices200Response>;
560
+ /**
561
+ * Fetch the recurring series (fourth tier above Event -> Market -> Outcome) that this venue exposes. Returns an empty array on venues without a series concept (Limitless, Smarkets, Probable, Metaculus, Baozi, Hyperliquid, SuiBets, Polymarket US). - `params.id` -> a single matching series with its events populated where supported. - no params -> the full list, typically without nested events for payload size.
562
+ * Fetch Series
563
+ */
564
+ fetchSeriesRaw(requestParameters: FetchSeriesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchSeries200Response>>;
565
+ /**
566
+ * Fetch the recurring series (fourth tier above Event -> Market -> Outcome) that this venue exposes. Returns an empty array on venues without a series concept (Limitless, Smarkets, Probable, Metaculus, Baozi, Hyperliquid, SuiBets, Polymarket US). - `params.id` -> a single matching series with its events populated where supported. - no params -> the full list, typically without nested events for payload size.
567
+ * Fetch Series
568
+ */
569
+ fetchSeries(requestParameters: FetchSeriesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchSeries200Response>;
555
570
  /**
556
571
  * Fetch raw trade history for a specific outcome.
557
572
  * Fetch Trades
@@ -1358,6 +1373,28 @@ export declare const FetchRelatedMarketsSortEnum: {
1358
1373
  readonly PriceDifference: "priceDifference";
1359
1374
  };
1360
1375
  export type FetchRelatedMarketsSortEnum = typeof FetchRelatedMarketsSortEnum[keyof typeof FetchRelatedMarketsSortEnum];
1376
+ /**
1377
+ * @export
1378
+ */
1379
+ export declare const FetchSeriesExchangeEnum: {
1380
+ readonly Polymarket: "polymarket";
1381
+ readonly Kalshi: "kalshi";
1382
+ readonly KalshiDemo: "kalshi-demo";
1383
+ readonly Limitless: "limitless";
1384
+ readonly Probable: "probable";
1385
+ readonly Baozi: "baozi";
1386
+ readonly Myriad: "myriad";
1387
+ readonly Opinion: "opinion";
1388
+ readonly Metaculus: "metaculus";
1389
+ readonly Smarkets: "smarkets";
1390
+ readonly PolymarketUs: "polymarket_us";
1391
+ readonly GeminiTitan: "gemini-titan";
1392
+ readonly Hyperliquid: "hyperliquid";
1393
+ readonly Suibets: "suibets";
1394
+ readonly Mock: "mock";
1395
+ readonly Router: "router";
1396
+ };
1397
+ export type FetchSeriesExchangeEnum = typeof FetchSeriesExchangeEnum[keyof typeof FetchSeriesExchangeEnum];
1361
1398
  /**
1362
1399
  * @export
1363
1400
  */
@@ -12,7 +12,7 @@
12
12
  * Do not edit the class manually.
13
13
  */
14
14
  import * as runtime from '../runtime.js';
15
- import { BaseResponseFromJSON, BuildOrder200ResponseFromJSON, BuildOrderRequestToJSON, CancelOrderRequestToJSON, CloseRequestToJSON, CompareMarketPrices200ResponseFromJSON, CompareMarketPricesRequestToJSON, CreateOrder200ResponseFromJSON, CreateOrderRequestToJSON, FetchArbitrage200ResponseFromJSON, FetchBalance200ResponseFromJSON, FetchEvent200ResponseFromJSON, FetchEventMatches200ResponseFromJSON, FetchEvents200ResponseFromJSON, FetchEventsPaginated200ResponseFromJSON, FetchMarket200ResponseFromJSON, FetchMarketMatches200ResponseFromJSON, FetchMarkets200ResponseFromJSON, FetchMarketsPaginated200ResponseFromJSON, FetchMatchedMarkets200ResponseFromJSON, FetchMyTrades200ResponseFromJSON, FetchOHLCV200ResponseFromJSON, FetchOpenOrders200ResponseFromJSON, FetchOrderBook200ResponseFromJSON, FetchOrderBooks200ResponseFromJSON, FetchOrderBooksRequestToJSON, FetchPositions200ResponseFromJSON, FetchTrades200ResponseFromJSON, FilterEventsRequestToJSON, FilterMarketsRequestToJSON, GetExecutionPrice200ResponseFromJSON, GetExecutionPriceDetailed200ResponseFromJSON, GetExecutionPriceDetailedRequestToJSON, GetExecutionPriceRequestToJSON, HealthCheck200ResponseFromJSON, LoadMarkets200ResponseFromJSON, LoadMarketsRequestToJSON, SubmitOrderRequestToJSON, } from '../models/index.js';
15
+ import { BaseResponseFromJSON, BuildOrder200ResponseFromJSON, BuildOrderRequestToJSON, CancelOrderRequestToJSON, CloseRequestToJSON, CompareMarketPrices200ResponseFromJSON, CompareMarketPricesRequestToJSON, CreateOrder200ResponseFromJSON, CreateOrderRequestToJSON, FetchArbitrage200ResponseFromJSON, FetchBalance200ResponseFromJSON, FetchEvent200ResponseFromJSON, FetchEventMatches200ResponseFromJSON, FetchEvents200ResponseFromJSON, FetchEventsPaginated200ResponseFromJSON, FetchMarket200ResponseFromJSON, FetchMarketMatches200ResponseFromJSON, FetchMarkets200ResponseFromJSON, FetchMarketsPaginated200ResponseFromJSON, FetchMatchedMarkets200ResponseFromJSON, FetchMyTrades200ResponseFromJSON, FetchOHLCV200ResponseFromJSON, FetchOpenOrders200ResponseFromJSON, FetchOrderBook200ResponseFromJSON, FetchOrderBooks200ResponseFromJSON, FetchOrderBooksRequestToJSON, FetchPositions200ResponseFromJSON, FetchSeries200ResponseFromJSON, FetchTrades200ResponseFromJSON, FilterEventsRequestToJSON, FilterMarketsRequestToJSON, GetExecutionPrice200ResponseFromJSON, GetExecutionPriceDetailed200ResponseFromJSON, GetExecutionPriceDetailedRequestToJSON, GetExecutionPriceRequestToJSON, HealthCheck200ResponseFromJSON, LoadMarkets200ResponseFromJSON, LoadMarketsRequestToJSON, SubmitOrderRequestToJSON, } from '../models/index.js';
16
16
  /**
17
17
  *
18
18
  */
@@ -356,6 +356,9 @@ export class DefaultApi extends runtime.BaseAPI {
356
356
  if (requestParameters['slug'] != null) {
357
357
  queryParameters['slug'] = requestParameters['slug'];
358
358
  }
359
+ if (requestParameters['series'] != null) {
360
+ queryParameters['series'] = requestParameters['series'];
361
+ }
359
362
  if (requestParameters['filter'] != null) {
360
363
  queryParameters['filter'] = requestParameters['filter'];
361
364
  }
@@ -475,6 +478,9 @@ export class DefaultApi extends runtime.BaseAPI {
475
478
  if (requestParameters['slug'] != null) {
476
479
  queryParameters['slug'] = requestParameters['slug'];
477
480
  }
481
+ if (requestParameters['series'] != null) {
482
+ queryParameters['series'] = requestParameters['series'];
483
+ }
478
484
  if (requestParameters['filter'] != null) {
479
485
  queryParameters['filter'] = requestParameters['filter'];
480
486
  }
@@ -1242,6 +1248,34 @@ export class DefaultApi extends runtime.BaseAPI {
1242
1248
  const response = await this.fetchRelatedMarketsRaw(requestParameters, initOverrides);
1243
1249
  return await response.value();
1244
1250
  }
1251
+ /**
1252
+ * Fetch the recurring series (fourth tier above Event -> Market -> Outcome) that this venue exposes. Returns an empty array on venues without a series concept (Limitless, Smarkets, Probable, Metaculus, Baozi, Hyperliquid, SuiBets, Polymarket US). - `params.id` -> a single matching series with its events populated where supported. - no params -> the full list, typically without nested events for payload size.
1253
+ * Fetch Series
1254
+ */
1255
+ async fetchSeriesRaw(requestParameters, initOverrides) {
1256
+ if (requestParameters['exchange'] == null) {
1257
+ throw new runtime.RequiredError('exchange', 'Required parameter "exchange" was null or undefined when calling fetchSeries().');
1258
+ }
1259
+ const queryParameters = {};
1260
+ const headerParameters = {};
1261
+ let urlPath = `/api/{exchange}/fetchSeries`;
1262
+ urlPath = urlPath.replace(`{${"exchange"}}`, encodeURIComponent(String(requestParameters['exchange'])));
1263
+ const response = await this.request({
1264
+ path: urlPath,
1265
+ method: 'GET',
1266
+ headers: headerParameters,
1267
+ query: queryParameters,
1268
+ }, initOverrides);
1269
+ return new runtime.JSONApiResponse(response, (jsonValue) => FetchSeries200ResponseFromJSON(jsonValue));
1270
+ }
1271
+ /**
1272
+ * Fetch the recurring series (fourth tier above Event -> Market -> Outcome) that this venue exposes. Returns an empty array on venues without a series concept (Limitless, Smarkets, Probable, Metaculus, Baozi, Hyperliquid, SuiBets, Polymarket US). - `params.id` -> a single matching series with its events populated where supported. - no params -> the full list, typically without nested events for payload size.
1273
+ * Fetch Series
1274
+ */
1275
+ async fetchSeries(requestParameters, initOverrides) {
1276
+ const response = await this.fetchSeriesRaw(requestParameters, initOverrides);
1277
+ return await response.value();
1278
+ }
1245
1279
  /**
1246
1280
  * Fetch raw trade history for a specific outcome.
1247
1281
  * Fetch Trades
@@ -2164,6 +2198,27 @@ export const FetchRelatedMarketsSortEnum = {
2164
2198
  Volume: 'volume',
2165
2199
  PriceDifference: 'priceDifference'
2166
2200
  };
2201
+ /**
2202
+ * @export
2203
+ */
2204
+ export const FetchSeriesExchangeEnum = {
2205
+ Polymarket: 'polymarket',
2206
+ Kalshi: 'kalshi',
2207
+ KalshiDemo: 'kalshi-demo',
2208
+ Limitless: 'limitless',
2209
+ Probable: 'probable',
2210
+ Baozi: 'baozi',
2211
+ Myriad: 'myriad',
2212
+ Opinion: 'opinion',
2213
+ Metaculus: 'metaculus',
2214
+ Smarkets: 'smarkets',
2215
+ PolymarketUs: 'polymarket_us',
2216
+ GeminiTitan: 'gemini-titan',
2217
+ Hyperliquid: 'hyperliquid',
2218
+ Suibets: 'suibets',
2219
+ Mock: 'mock',
2220
+ Router: 'router'
2221
+ };
2167
2222
  /**
2168
2223
  * @export
2169
2224
  */
@@ -70,6 +70,12 @@ export interface EventFetchParams {
70
70
  * @memberof EventFetchParams
71
71
  */
72
72
  slug?: string;
73
+ /**
74
+ * Filter events by their parent series. Accepts the venue-native series id / ticker / slug (e.g. Kalshi `"KXATPMATCH"`, Polymarket `"wta"`). Passed through to the vendor where supported, otherwise applied to `sourceMetadata` after fetch.
75
+ * @type {string}
76
+ * @memberof EventFetchParams
77
+ */
78
+ series?: string;
73
79
  /**
74
80
  * Optional client-side filter applied after fetching
75
81
  * @type {EventFilterCriteria}
@@ -60,6 +60,7 @@ export function EventFetchParamsFromJSONTyped(json, ignoreDiscriminator) {
60
60
  'searchIn': json['searchIn'] == null ? undefined : json['searchIn'],
61
61
  'eventId': json['eventId'] == null ? undefined : json['eventId'],
62
62
  'slug': json['slug'] == null ? undefined : json['slug'],
63
+ 'series': json['series'] == null ? undefined : json['series'],
63
64
  'filter': json['filter'] == null ? undefined : EventFilterCriteriaFromJSON(json['filter']),
64
65
  'category': json['category'] == null ? undefined : json['category'],
65
66
  'tags': json['tags'] == null ? undefined : json['tags'],
@@ -82,6 +83,7 @@ export function EventFetchParamsToJSONTyped(value, ignoreDiscriminator = false)
82
83
  'searchIn': value['searchIn'],
83
84
  'eventId': value['eventId'],
84
85
  'slug': value['slug'],
86
+ 'series': value['series'],
85
87
  'filter': EventFilterCriteriaToJSON(value['filter']),
86
88
  'category': value['category'],
87
89
  'tags': value['tags'],
@@ -0,0 +1,46 @@
1
+ /**
2
+ * PMXT Sidecar API
3
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
4
+ *
5
+ * The version of the OpenAPI document: 0.4.4
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { ErrorDetail } from './ErrorDetail.js';
13
+ import type { UnifiedSeries } from './UnifiedSeries.js';
14
+ /**
15
+ *
16
+ * @export
17
+ * @interface FetchSeries200Response
18
+ */
19
+ export interface FetchSeries200Response {
20
+ /**
21
+ *
22
+ * @type {boolean}
23
+ * @memberof FetchSeries200Response
24
+ */
25
+ success?: boolean;
26
+ /**
27
+ *
28
+ * @type {ErrorDetail}
29
+ * @memberof FetchSeries200Response
30
+ */
31
+ error?: ErrorDetail;
32
+ /**
33
+ *
34
+ * @type {Array<UnifiedSeries>}
35
+ * @memberof FetchSeries200Response
36
+ */
37
+ data?: Array<UnifiedSeries>;
38
+ }
39
+ /**
40
+ * Check if a given object implements the FetchSeries200Response interface.
41
+ */
42
+ export declare function instanceOfFetchSeries200Response(value: object): value is FetchSeries200Response;
43
+ export declare function FetchSeries200ResponseFromJSON(json: any): FetchSeries200Response;
44
+ export declare function FetchSeries200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): FetchSeries200Response;
45
+ export declare function FetchSeries200ResponseToJSON(json: any): FetchSeries200Response;
46
+ export declare function FetchSeries200ResponseToJSONTyped(value?: FetchSeries200Response | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,47 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * PMXT Sidecar API
5
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
6
+ *
7
+ * The version of the OpenAPI document: 0.4.4
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ import { ErrorDetailFromJSON, ErrorDetailToJSON, } from './ErrorDetail.js';
15
+ import { UnifiedSeriesFromJSON, UnifiedSeriesToJSON, } from './UnifiedSeries.js';
16
+ /**
17
+ * Check if a given object implements the FetchSeries200Response interface.
18
+ */
19
+ export function instanceOfFetchSeries200Response(value) {
20
+ return true;
21
+ }
22
+ export function FetchSeries200ResponseFromJSON(json) {
23
+ return FetchSeries200ResponseFromJSONTyped(json, false);
24
+ }
25
+ export function FetchSeries200ResponseFromJSONTyped(json, ignoreDiscriminator) {
26
+ if (json == null) {
27
+ return json;
28
+ }
29
+ return {
30
+ 'success': json['success'] == null ? undefined : json['success'],
31
+ 'error': json['error'] == null ? undefined : ErrorDetailFromJSON(json['error']),
32
+ 'data': json['data'] == null ? undefined : (json['data'].map(UnifiedSeriesFromJSON)),
33
+ };
34
+ }
35
+ export function FetchSeries200ResponseToJSON(json) {
36
+ return FetchSeries200ResponseToJSONTyped(json, false);
37
+ }
38
+ export function FetchSeries200ResponseToJSONTyped(value, ignoreDiscriminator = false) {
39
+ if (value == null) {
40
+ return value;
41
+ }
42
+ return {
43
+ 'success': value['success'],
44
+ 'error': ErrorDetailToJSON(value['error']),
45
+ 'data': value['data'] == null ? undefined : (value['data'].map(UnifiedSeriesToJSON)),
46
+ };
47
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * PMXT Sidecar API
3
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
4
+ *
5
+ * The version of the OpenAPI document: 0.4.4
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { UnifiedEvent } from './UnifiedEvent.js';
13
+ /**
14
+ * A recurring grouping of events on a venue — the fourth tier above Event -> Market -> Outcome. Examples: Kalshi `KXATPMATCH` (every ATP tennis match), Polymarket `wta` (every WTA match), Opinion's daily `collection`. Series only exists where the venue exposes a recurring-event concept; venues without one return an empty array from `fetchSeries`.
15
+ * @export
16
+ * @interface UnifiedSeries
17
+ */
18
+ export interface UnifiedSeries {
19
+ /**
20
+ * Stable venue-native series identifier (e.g. "KXATPMATCH" on Kalshi, "atp" on Polymarket Gamma, numeric Gamma id).
21
+ * @type {string}
22
+ * @memberof UnifiedSeries
23
+ */
24
+ id: string;
25
+ /**
26
+ * Venue-native ticker, when distinct from `id`.
27
+ * @type {string}
28
+ * @memberof UnifiedSeries
29
+ */
30
+ ticker?: string;
31
+ /**
32
+ * Venue-native slug.
33
+ * @type {string}
34
+ * @memberof UnifiedSeries
35
+ */
36
+ slug?: string;
37
+ /**
38
+ * Human-readable series title (e.g. "ATP Match Winner", "WTA").
39
+ * @type {string}
40
+ * @memberof UnifiedSeries
41
+ */
42
+ title: string;
43
+ /**
44
+ *
45
+ * @type {string}
46
+ * @memberof UnifiedSeries
47
+ */
48
+ description?: string | null;
49
+ /**
50
+ *
51
+ * @type {string}
52
+ * @memberof UnifiedSeries
53
+ */
54
+ recurrence?: string | null;
55
+ /**
56
+ * Child events. Populated when fetched by id; the list form usually omits this to keep payloads small.
57
+ * @type {Array<UnifiedEvent>}
58
+ * @memberof UnifiedSeries
59
+ */
60
+ events?: Array<UnifiedEvent>;
61
+ /**
62
+ *
63
+ * @type {string}
64
+ * @memberof UnifiedSeries
65
+ */
66
+ url?: string | null;
67
+ /**
68
+ *
69
+ * @type {string}
70
+ * @memberof UnifiedSeries
71
+ */
72
+ image?: string | null;
73
+ /**
74
+ * The exchange this series originates from. Populated by the Router.
75
+ * @type {string}
76
+ * @memberof UnifiedSeries
77
+ */
78
+ sourceExchange?: string;
79
+ /**
80
+ * Raw venue-specific fields not promoted to first-class columns.
81
+ * @type {{ [key: string]: any; }}
82
+ * @memberof UnifiedSeries
83
+ */
84
+ sourceMetadata?: {
85
+ [key: string]: any;
86
+ };
87
+ }
88
+ /**
89
+ * Check if a given object implements the UnifiedSeries interface.
90
+ */
91
+ export declare function instanceOfUnifiedSeries(value: object): value is UnifiedSeries;
92
+ export declare function UnifiedSeriesFromJSON(json: any): UnifiedSeries;
93
+ export declare function UnifiedSeriesFromJSONTyped(json: any, ignoreDiscriminator: boolean): UnifiedSeries;
94
+ export declare function UnifiedSeriesToJSON(json: any): UnifiedSeries;
95
+ export declare function UnifiedSeriesToJSONTyped(value?: UnifiedSeries | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,66 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * PMXT Sidecar API
5
+ * A unified local sidecar API for prediction markets (Polymarket, Kalshi, Limitless). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
6
+ *
7
+ * The version of the OpenAPI document: 0.4.4
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+ import { UnifiedEventFromJSON, UnifiedEventToJSON, } from './UnifiedEvent.js';
15
+ /**
16
+ * Check if a given object implements the UnifiedSeries interface.
17
+ */
18
+ export function instanceOfUnifiedSeries(value) {
19
+ if (!('id' in value) || value['id'] === undefined)
20
+ return false;
21
+ if (!('title' in value) || value['title'] === undefined)
22
+ return false;
23
+ return true;
24
+ }
25
+ export function UnifiedSeriesFromJSON(json) {
26
+ return UnifiedSeriesFromJSONTyped(json, false);
27
+ }
28
+ export function UnifiedSeriesFromJSONTyped(json, ignoreDiscriminator) {
29
+ if (json == null) {
30
+ return json;
31
+ }
32
+ return {
33
+ 'id': json['id'],
34
+ 'ticker': json['ticker'] == null ? undefined : json['ticker'],
35
+ 'slug': json['slug'] == null ? undefined : json['slug'],
36
+ 'title': json['title'],
37
+ 'description': json['description'] == null ? undefined : json['description'],
38
+ 'recurrence': json['recurrence'] == null ? undefined : json['recurrence'],
39
+ 'events': json['events'] == null ? undefined : (json['events'].map(UnifiedEventFromJSON)),
40
+ 'url': json['url'] == null ? undefined : json['url'],
41
+ 'image': json['image'] == null ? undefined : json['image'],
42
+ 'sourceExchange': json['sourceExchange'] == null ? undefined : json['sourceExchange'],
43
+ 'sourceMetadata': json['sourceMetadata'] == null ? undefined : json['sourceMetadata'],
44
+ };
45
+ }
46
+ export function UnifiedSeriesToJSON(json) {
47
+ return UnifiedSeriesToJSONTyped(json, false);
48
+ }
49
+ export function UnifiedSeriesToJSONTyped(value, ignoreDiscriminator = false) {
50
+ if (value == null) {
51
+ return value;
52
+ }
53
+ return {
54
+ 'id': value['id'],
55
+ 'ticker': value['ticker'],
56
+ 'slug': value['slug'],
57
+ 'title': value['title'],
58
+ 'description': value['description'],
59
+ 'recurrence': value['recurrence'],
60
+ 'events': value['events'] == null ? undefined : (value['events'].map(UnifiedEventToJSON)),
61
+ 'url': value['url'],
62
+ 'image': value['image'],
63
+ 'sourceExchange': value['sourceExchange'],
64
+ 'sourceMetadata': value['sourceMetadata'],
65
+ };
66
+ }
@@ -58,6 +58,7 @@ export * from './FetchOrderBookParams.js';
58
58
  export * from './FetchOrderBooks200Response.js';
59
59
  export * from './FetchOrderBooksRequest.js';
60
60
  export * from './FetchPositions200Response.js';
61
+ export * from './FetchSeries200Response.js';
61
62
  export * from './FetchTrades200Response.js';
62
63
  export * from './FilterEventsRequest.js';
63
64
  export * from './FilterEventsRequestArgsInner.js';
@@ -99,4 +100,5 @@ export * from './Trade.js';
99
100
  export * from './TradesParams.js';
100
101
  export * from './UnifiedEvent.js';
101
102
  export * from './UnifiedMarket.js';
103
+ export * from './UnifiedSeries.js';
102
104
  export * from './UserTrade.js';
@@ -60,6 +60,7 @@ export * from './FetchOrderBookParams.js';
60
60
  export * from './FetchOrderBooks200Response.js';
61
61
  export * from './FetchOrderBooksRequest.js';
62
62
  export * from './FetchPositions200Response.js';
63
+ export * from './FetchSeries200Response.js';
63
64
  export * from './FetchTrades200Response.js';
64
65
  export * from './FilterEventsRequest.js';
65
66
  export * from './FilterEventsRequestArgsInner.js';
@@ -101,4 +102,5 @@ export * from './Trade.js';
101
102
  export * from './TradesParams.js';
102
103
  export * from './UnifiedEvent.js';
103
104
  export * from './UnifiedMarket.js';
105
+ export * from './UnifiedSeries.js';
104
106
  export * from './UserTrade.js';
@@ -27,6 +27,7 @@ export { Router } from "./pmxt/router.js";
27
27
  export { ServerManager } from "./pmxt/server-manager.js";
28
28
  export { HOSTED_URL, LOCAL_URL, ENV, resolvePmxtBaseUrl } from "./pmxt/constants.js";
29
29
  export { MarketList } from "./pmxt/models.js";
30
+ export type { UnifiedSeries } from "./pmxt/models.js";
30
31
  export type * from "./pmxt/models.js";
31
32
  export * from "./pmxt/errors.js";
32
33
  declare function stopServer(): Promise<void>;
@@ -5,7 +5,7 @@
5
5
  * OpenAPI client, matching the Python API exactly.
6
6
  */
7
7
  import { Configuration, DefaultApi, ExchangeCredentials } from "../generated/src/index.js";
8
- import { Balance, BuiltOrder, CreateOrderParams, EventFetchParams, EventFilterCriteria, EventFilterFunction, ExecutionPriceResult, FetchOrderBookParams, MarketFetchParams, MarketFilterCriteria, MarketFilterFunction, MarketOutcome, MyTradesParams, Order, OrderBook, OrderHistoryParams, PaginatedMarketsResult, Position, PriceCandle, SubscribedAddressSnapshot, SubscriptionOption, Trade, UnifiedEvent, UnifiedMarket, UserTrade, FirehoseEvent } from "./models.js";
8
+ import { Balance, BuiltOrder, CreateOrderParams, EventFetchParams, EventFilterCriteria, EventFilterFunction, ExecutionPriceResult, FetchOrderBookParams, MarketFetchParams, MarketFilterCriteria, MarketFilterFunction, MarketOutcome, MyTradesParams, Order, OrderBook, OrderHistoryParams, PaginatedMarketsResult, Position, SeriesFetchParams, PriceCandle, SubscribedAddressSnapshot, SubscriptionOption, Trade, UnifiedEvent, UnifiedMarket, UnifiedSeries, UserTrade, FirehoseEvent } from "./models.js";
9
9
  import { ServerManager } from "./server-manager.js";
10
10
  /**
11
11
  * Base exchange client options.
@@ -178,6 +178,7 @@ export declare abstract class Exchange {
178
178
  fetchMarkets(params?: MarketFetchParams): Promise<UnifiedMarket[]>;
179
179
  fetchMarketsPaginated(params?: any): Promise<PaginatedMarketsResult>;
180
180
  fetchEvents(params?: EventFetchParams): Promise<UnifiedEvent[]>;
181
+ fetchSeries(params?: SeriesFetchParams): Promise<UnifiedSeries[]>;
181
182
  fetchMarket(params?: MarketFetchParams): Promise<UnifiedMarket>;
182
183
  fetchEvent(params?: EventFetchParams): Promise<UnifiedEvent>;
183
184
  fetchOrderBook(outcomeId: string | MarketOutcome, limit?: number, params?: FetchOrderBookParams): Promise<OrderBook | OrderBook[]>;
@@ -111,6 +111,10 @@ function convertEvent(raw) {
111
111
  const markets = MarketList.from((raw.markets || []).map(convertMarket));
112
112
  return { ...raw, markets };
113
113
  }
114
+ function convertSeries(raw) {
115
+ const events = Array.isArray(raw.events) ? raw.events.map(convertEvent) : undefined;
116
+ return { ...raw, ...(events !== undefined ? { events } : {}) };
117
+ }
114
118
  function convertSubscriptionSnapshot(raw) {
115
119
  return {
116
120
  ...raw,
@@ -692,6 +696,34 @@ export class Exchange {
692
696
  throw new PmxtError(`Failed to fetchEvents: ${error}`);
693
697
  }
694
698
  }
699
+ async fetchSeries(params) {
700
+ await this.initPromise;
701
+ try {
702
+ const args = [];
703
+ if (params !== undefined)
704
+ args.push(params);
705
+ const response = await this.fetchWithRetry(`${this.resolveBaseUrl()}/api/${this.exchangeName}/fetchSeries`, {
706
+ method: 'POST',
707
+ headers: { 'Content-Type': 'application/json', ...this.getAuthHeaders() },
708
+ body: JSON.stringify({ args, credentials: this.getCredentials() }),
709
+ });
710
+ if (!response.ok) {
711
+ const body = await response.json().catch(() => ({}));
712
+ if (body.error && typeof body.error === "object") {
713
+ throw fromServerError(body.error);
714
+ }
715
+ throw new PmxtError(body.error?.message || response.statusText);
716
+ }
717
+ const json = await response.json();
718
+ const data = this.handleResponse(json);
719
+ return data.map(convertSeries);
720
+ }
721
+ catch (error) {
722
+ if (error instanceof PmxtError)
723
+ throw error;
724
+ throw new PmxtError(`Failed to fetchSeries: ${error}`);
725
+ }
726
+ }
695
727
  async fetchMarket(params) {
696
728
  await this.initPromise;
697
729
  try {
@@ -371,6 +371,24 @@ export interface CreateOrderParams {
371
371
  }
372
372
  /** Alias matching the core MarketFetchParams name. */
373
373
  export type MarketFetchParams = MarketFilterParams;
374
+ /**
375
+ * Parameters for fetching series.
376
+ * Venues without a recurring-event concept return an empty array regardless of the filters.
377
+ */
378
+ export interface SeriesFetchParams {
379
+ /** Direct lookup by venue-native series id (e.g. "KXATPMATCH" on Kalshi, "atp" on Polymarket Gamma). When set, the result includes events where the venue supports it. */
380
+ id?: string;
381
+ /** Lookup by series slug (e.g. "wta", "nfl"). */
382
+ slug?: string;
383
+ /** Keyword search across series title / description. */
384
+ query?: string;
385
+ /** Filter by recurrence cadence ('daily', 'weekly', 'annual', ...). */
386
+ recurrence?: string;
387
+ /** Maximum number of results to return. */
388
+ limit?: number;
389
+ /** Pagination offset. */
390
+ offset?: number;
391
+ }
374
392
  /**
375
393
  * Parameters for fetching OHLCV candle data.
376
394
  */
@@ -475,6 +493,35 @@ export declare class MarketList extends Array<UnifiedMarket> {
475
493
  */
476
494
  match(query: string, searchIn?: ('title' | 'description' | 'category' | 'tags' | 'outcomes')[]): UnifiedMarket;
477
495
  }
496
+ /**
497
+ * A recurring grouping of events on a venue — the tier above Event.
498
+ * Examples: Kalshi "KXATPMATCH" (every ATP match), Polymarket "wta" (every WTA match).
499
+ * Venues without a recurring-event concept return an empty array from fetchSeries.
500
+ */
501
+ export interface UnifiedSeries {
502
+ /** Stable venue-native series identifier. */
503
+ id: string;
504
+ /** Venue-native ticker, when distinct from id. */
505
+ ticker?: string;
506
+ /** Venue-native slug. */
507
+ slug?: string;
508
+ /** Human-readable series title. */
509
+ title: string;
510
+ /** Long-form series description. */
511
+ description?: string | null;
512
+ /** Recurrence cadence the venue reports ('daily', 'weekly', 'annual', ...). */
513
+ recurrence?: string | null;
514
+ /** Child events. Populated when fetched by id; the list form usually omits this. */
515
+ events?: UnifiedEvent[];
516
+ /** Canonical venue URL for the series. */
517
+ url?: string | null;
518
+ /** Venue-hosted image. */
519
+ image?: string | null;
520
+ /** The exchange this series originates from. Populated by the Router. */
521
+ sourceExchange?: string;
522
+ /** Raw venue-specific fields not promoted to first-class columns. */
523
+ sourceMetadata?: Record<string, unknown>;
524
+ }
478
525
  /**
479
526
  * A grouped collection of related markets (e.g., "Who will be Fed Chair?" contains multiple candidate markets)
480
527
  */