pmxtjs 2.3.0 → 2.5.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 (127) hide show
  1. package/dist/esm/generated/src/apis/DefaultApi.d.ts +116 -1
  2. package/dist/esm/generated/src/apis/DefaultApi.js +167 -22
  3. package/dist/esm/generated/src/models/EventFetchParams.d.ts +12 -0
  4. package/dist/esm/generated/src/models/EventFetchParams.js +4 -0
  5. package/dist/esm/generated/src/models/FetchEvent200Response.d.ts +46 -0
  6. package/dist/esm/generated/src/models/{SearchEvents200Response.js → FetchEvent200Response.js} +11 -11
  7. package/dist/esm/generated/src/models/FetchMarket200Response.d.ts +46 -0
  8. package/dist/esm/generated/src/models/FetchMarket200Response.js +47 -0
  9. package/dist/esm/generated/src/models/MarketFilterParams.d.ts +18 -0
  10. package/dist/esm/generated/src/models/MarketFilterParams.js +6 -0
  11. package/dist/esm/generated/src/models/index.d.ts +2 -0
  12. package/dist/esm/generated/src/models/index.js +2 -0
  13. package/dist/esm/pmxt/client.d.ts +31 -0
  14. package/dist/esm/pmxt/client.js +93 -0
  15. package/dist/generated/src/apis/DefaultApi.d.ts +116 -1
  16. package/dist/generated/src/apis/DefaultApi.js +167 -22
  17. package/dist/generated/src/models/EventFetchParams.d.ts +12 -0
  18. package/dist/generated/src/models/EventFetchParams.js +4 -0
  19. package/dist/generated/src/models/FetchEvent200Response.d.ts +46 -0
  20. package/{generated/src/models/FetchOHLCV200Response.js → dist/generated/src/models/FetchEvent200Response.js} +16 -16
  21. package/dist/generated/src/models/FetchMarket200Response.d.ts +46 -0
  22. package/{generated/src/models/CreateOrder200Response.js → dist/generated/src/models/FetchMarket200Response.js} +16 -16
  23. package/dist/generated/src/models/MarketFilterParams.d.ts +18 -0
  24. package/dist/generated/src/models/MarketFilterParams.js +6 -0
  25. package/dist/generated/src/models/index.d.ts +2 -0
  26. package/dist/generated/src/models/index.js +2 -0
  27. package/dist/pmxt/client.d.ts +31 -0
  28. package/dist/pmxt/client.js +93 -0
  29. package/generated/.openapi-generator/FILES +5 -0
  30. package/generated/docs/DefaultApi.md +186 -42
  31. package/generated/docs/EventFetchParams.md +4 -0
  32. package/generated/docs/{SearchEvents200Response.md → FetchEvent200Response.md} +5 -5
  33. package/generated/docs/{GetMarketsBySlugRequest.md → FetchMarket200Response.md} +10 -8
  34. package/generated/docs/MarketFilterParams.md +6 -0
  35. package/generated/package.json +1 -1
  36. package/generated/src/apis/DefaultApi.ts +211 -21
  37. package/generated/src/models/EventFetchParams.ts +16 -0
  38. package/generated/src/models/{SearchEvents200Response.ts → FetchEvent200Response.ts} +18 -18
  39. package/generated/src/models/FetchMarket200Response.ts +96 -0
  40. package/generated/src/models/MarketFilterParams.ts +24 -0
  41. package/generated/src/models/index.ts +2 -0
  42. package/package.json +2 -2
  43. package/pmxt/client.ts +103 -0
  44. package/dist/esm/generated/src/models/GetMarketsBySlugRequest.d.ts +0 -39
  45. package/dist/esm/generated/src/models/GetMarketsBySlugRequest.js +0 -46
  46. package/dist/esm/generated/src/models/SearchEvents200Response.d.ts +0 -46
  47. package/dist/esm/generated/src/models/SearchEventsRequest.d.ts +0 -40
  48. package/dist/esm/generated/src/models/SearchEventsRequest.js +0 -47
  49. package/dist/esm/generated/src/models/SearchMarketsRequest.d.ts +0 -40
  50. package/dist/esm/generated/src/models/SearchMarketsRequest.js +0 -47
  51. package/dist/esm/generated/src/models/SearchMarketsRequestArgsInner.d.ts +0 -22
  52. package/dist/esm/generated/src/models/SearchMarketsRequestArgsInner.js +0 -50
  53. package/dist/generated/src/models/GetMarketsBySlugRequest.d.ts +0 -39
  54. package/dist/generated/src/models/GetMarketsBySlugRequest.js +0 -53
  55. package/dist/generated/src/models/SearchEvents200Response.d.ts +0 -46
  56. package/dist/generated/src/models/SearchEvents200Response.js +0 -54
  57. package/dist/generated/src/models/SearchEventsRequest.d.ts +0 -40
  58. package/dist/generated/src/models/SearchEventsRequest.js +0 -54
  59. package/dist/generated/src/models/SearchMarketsRequest.d.ts +0 -40
  60. package/dist/generated/src/models/SearchMarketsRequest.js +0 -54
  61. package/dist/generated/src/models/SearchMarketsRequestArgsInner.d.ts +0 -22
  62. package/dist/generated/src/models/SearchMarketsRequestArgsInner.js +0 -56
  63. package/generated/docs/SearchEventsRequest.md +0 -36
  64. package/generated/docs/SearchMarketsRequest.md +0 -36
  65. package/generated/docs/SearchMarketsRequestArgsInner.md +0 -40
  66. package/generated/src/apis/DefaultApi.js +0 -812
  67. package/generated/src/apis/index.js +0 -19
  68. package/generated/src/index.js +0 -21
  69. package/generated/src/models/Balance.js +0 -54
  70. package/generated/src/models/BaseRequest.js +0 -49
  71. package/generated/src/models/BaseResponse.js +0 -51
  72. package/generated/src/models/CancelOrderRequest.js +0 -53
  73. package/generated/src/models/CreateOrderParams.js +0 -85
  74. package/generated/src/models/CreateOrderRequest.js +0 -54
  75. package/generated/src/models/ErrorDetail.js +0 -48
  76. package/generated/src/models/ErrorResponse.js +0 -51
  77. package/generated/src/models/EventFetchParams.js +0 -63
  78. package/generated/src/models/ExchangeCredentials.js +0 -59
  79. package/generated/src/models/ExchangeCredentialsSignatureType.js +0 -49
  80. package/generated/src/models/ExecutionPriceResult.js +0 -52
  81. package/generated/src/models/FetchBalance200Response.js +0 -54
  82. package/generated/src/models/FetchEvents200Response.js +0 -54
  83. package/generated/src/models/FetchEventsRequest.js +0 -52
  84. package/generated/src/models/FetchMarkets200Response.js +0 -54
  85. package/generated/src/models/FetchMarketsRequest.js +0 -52
  86. package/generated/src/models/FetchOHLCVRequest.js +0 -54
  87. package/generated/src/models/FetchOHLCVRequestArgsInner.js +0 -56
  88. package/generated/src/models/FetchOpenOrders200Response.js +0 -54
  89. package/generated/src/models/FetchOpenOrdersRequest.js +0 -51
  90. package/generated/src/models/FetchOrderBook200Response.js +0 -54
  91. package/generated/src/models/FetchOrderBookRequest.js +0 -53
  92. package/generated/src/models/FetchPositions200Response.js +0 -54
  93. package/generated/src/models/FetchPositionsRequest.js +0 -51
  94. package/generated/src/models/FetchTrades200Response.js +0 -54
  95. package/generated/src/models/FetchTradesRequest.js +0 -54
  96. package/generated/src/models/FilterEventsRequest.js +0 -54
  97. package/generated/src/models/FilterEventsRequestArgsInner.js +0 -67
  98. package/generated/src/models/FilterMarketsRequest.js +0 -54
  99. package/generated/src/models/FilterMarketsRequestArgsInner.js +0 -67
  100. package/generated/src/models/FilterMarketsRequestArgsInnerOneOf.js +0 -47
  101. package/generated/src/models/GetExecutionPrice200Response.js +0 -53
  102. package/generated/src/models/GetExecutionPriceDetailed200Response.js +0 -54
  103. package/generated/src/models/GetExecutionPriceRequest.js +0 -54
  104. package/generated/src/models/GetExecutionPriceRequestArgsInner.js +0 -62
  105. package/generated/src/models/GetMarketsBySlugRequest.ts +0 -82
  106. package/generated/src/models/HealthCheck200Response.js +0 -50
  107. package/generated/src/models/HistoryFilterParams.js +0 -68
  108. package/generated/src/models/MarketFilterParams.js +0 -79
  109. package/generated/src/models/MarketOutcome.js +0 -56
  110. package/generated/src/models/Order.js +0 -95
  111. package/generated/src/models/OrderBook.js +0 -53
  112. package/generated/src/models/OrderLevel.js +0 -50
  113. package/generated/src/models/Position.js +0 -62
  114. package/generated/src/models/PriceCandle.js +0 -58
  115. package/generated/src/models/SearchEventsRequest.ts +0 -89
  116. package/generated/src/models/SearchMarketsRequest.ts +0 -89
  117. package/generated/src/models/SearchMarketsRequestArgsInner.ts +0 -69
  118. package/generated/src/models/Trade.js +0 -65
  119. package/generated/src/models/UnifiedEvent.js +0 -65
  120. package/generated/src/models/UnifiedMarket.js +0 -81
  121. package/generated/src/models/WatchOrderBookRequest.js +0 -54
  122. package/generated/src/models/WatchOrderBookRequestArgsInner.js +0 -49
  123. package/generated/src/models/WatchPricesRequest.js +0 -53
  124. package/generated/src/models/WatchTradesRequest.js +0 -54
  125. package/generated/src/models/WatchUserPositionsRequest.js +0 -49
  126. package/generated/src/models/index.js +0 -73
  127. package/generated/src/runtime.js +0 -338
@@ -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 { UnifiedEvent } from './UnifiedEvent.js';
14
+ /**
15
+ *
16
+ * @export
17
+ * @interface FetchEvent200Response
18
+ */
19
+ export interface FetchEvent200Response {
20
+ /**
21
+ *
22
+ * @type {boolean}
23
+ * @memberof FetchEvent200Response
24
+ */
25
+ success?: boolean;
26
+ /**
27
+ *
28
+ * @type {ErrorDetail}
29
+ * @memberof FetchEvent200Response
30
+ */
31
+ error?: ErrorDetail;
32
+ /**
33
+ *
34
+ * @type {UnifiedEvent}
35
+ * @memberof FetchEvent200Response
36
+ */
37
+ data?: UnifiedEvent;
38
+ }
39
+ /**
40
+ * Check if a given object implements the FetchEvent200Response interface.
41
+ */
42
+ export declare function instanceOfFetchEvent200Response(value: object): value is FetchEvent200Response;
43
+ export declare function FetchEvent200ResponseFromJSON(json: any): FetchEvent200Response;
44
+ export declare function FetchEvent200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): FetchEvent200Response;
45
+ export declare function FetchEvent200ResponseToJSON(json: any): FetchEvent200Response;
46
+ export declare function FetchEvent200ResponseToJSONTyped(value?: FetchEvent200Response | null, ignoreDiscriminator?: boolean): any;
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable */
3
3
  /**
4
4
  * PMXT Sidecar API
5
- * A unified local sidecar API for prediction markets (Polymarket, Kalshi). This API acts as a JSON-RPC-style gateway. Each endpoint corresponds to a specific method on the generic exchange implementation.
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
6
  *
7
7
  * The version of the OpenAPI document: 0.4.4
8
8
  *
@@ -14,34 +14,34 @@
14
14
  import { ErrorDetailFromJSON, ErrorDetailToJSON, } from './ErrorDetail.js';
15
15
  import { UnifiedEventFromJSON, UnifiedEventToJSON, } from './UnifiedEvent.js';
16
16
  /**
17
- * Check if a given object implements the SearchEvents200Response interface.
17
+ * Check if a given object implements the FetchEvent200Response interface.
18
18
  */
19
- export function instanceOfSearchEvents200Response(value) {
19
+ export function instanceOfFetchEvent200Response(value) {
20
20
  return true;
21
21
  }
22
- export function SearchEvents200ResponseFromJSON(json) {
23
- return SearchEvents200ResponseFromJSONTyped(json, false);
22
+ export function FetchEvent200ResponseFromJSON(json) {
23
+ return FetchEvent200ResponseFromJSONTyped(json, false);
24
24
  }
25
- export function SearchEvents200ResponseFromJSONTyped(json, ignoreDiscriminator) {
25
+ export function FetchEvent200ResponseFromJSONTyped(json, ignoreDiscriminator) {
26
26
  if (json == null) {
27
27
  return json;
28
28
  }
29
29
  return {
30
30
  'success': json['success'] == null ? undefined : json['success'],
31
31
  'error': json['error'] == null ? undefined : ErrorDetailFromJSON(json['error']),
32
- 'data': json['data'] == null ? undefined : (json['data'].map(UnifiedEventFromJSON)),
32
+ 'data': json['data'] == null ? undefined : UnifiedEventFromJSON(json['data']),
33
33
  };
34
34
  }
35
- export function SearchEvents200ResponseToJSON(json) {
36
- return SearchEvents200ResponseToJSONTyped(json, false);
35
+ export function FetchEvent200ResponseToJSON(json) {
36
+ return FetchEvent200ResponseToJSONTyped(json, false);
37
37
  }
38
- export function SearchEvents200ResponseToJSONTyped(value, ignoreDiscriminator = false) {
38
+ export function FetchEvent200ResponseToJSONTyped(value, ignoreDiscriminator = false) {
39
39
  if (value == null) {
40
40
  return value;
41
41
  }
42
42
  return {
43
43
  'success': value['success'],
44
44
  'error': ErrorDetailToJSON(value['error']),
45
- 'data': value['data'] == null ? undefined : (value['data'].map(UnifiedEventToJSON)),
45
+ 'data': UnifiedEventToJSON(value['data']),
46
46
  };
47
47
  }
@@ -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 { UnifiedMarket } from './UnifiedMarket.js';
14
+ /**
15
+ *
16
+ * @export
17
+ * @interface FetchMarket200Response
18
+ */
19
+ export interface FetchMarket200Response {
20
+ /**
21
+ *
22
+ * @type {boolean}
23
+ * @memberof FetchMarket200Response
24
+ */
25
+ success?: boolean;
26
+ /**
27
+ *
28
+ * @type {ErrorDetail}
29
+ * @memberof FetchMarket200Response
30
+ */
31
+ error?: ErrorDetail;
32
+ /**
33
+ *
34
+ * @type {UnifiedMarket}
35
+ * @memberof FetchMarket200Response
36
+ */
37
+ data?: UnifiedMarket;
38
+ }
39
+ /**
40
+ * Check if a given object implements the FetchMarket200Response interface.
41
+ */
42
+ export declare function instanceOfFetchMarket200Response(value: object): value is FetchMarket200Response;
43
+ export declare function FetchMarket200ResponseFromJSON(json: any): FetchMarket200Response;
44
+ export declare function FetchMarket200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): FetchMarket200Response;
45
+ export declare function FetchMarket200ResponseToJSON(json: any): FetchMarket200Response;
46
+ export declare function FetchMarket200ResponseToJSONTyped(value?: FetchMarket200Response | 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 { UnifiedMarketFromJSON, UnifiedMarketToJSON, } from './UnifiedMarket.js';
16
+ /**
17
+ * Check if a given object implements the FetchMarket200Response interface.
18
+ */
19
+ export function instanceOfFetchMarket200Response(value) {
20
+ return true;
21
+ }
22
+ export function FetchMarket200ResponseFromJSON(json) {
23
+ return FetchMarket200ResponseFromJSONTyped(json, false);
24
+ }
25
+ export function FetchMarket200ResponseFromJSONTyped(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 : UnifiedMarketFromJSON(json['data']),
33
+ };
34
+ }
35
+ export function FetchMarket200ResponseToJSON(json) {
36
+ return FetchMarket200ResponseToJSONTyped(json, false);
37
+ }
38
+ export function FetchMarket200ResponseToJSONTyped(value, ignoreDiscriminator = false) {
39
+ if (value == null) {
40
+ return value;
41
+ }
42
+ return {
43
+ 'success': value['success'],
44
+ 'error': ErrorDetailToJSON(value['error']),
45
+ 'data': UnifiedMarketToJSON(value['data']),
46
+ };
47
+ }
@@ -57,6 +57,24 @@ export interface MarketFilterParams {
57
57
  * @memberof MarketFilterParams
58
58
  */
59
59
  slug?: string;
60
+ /**
61
+ * Direct lookup by market ID
62
+ * @type {string}
63
+ * @memberof MarketFilterParams
64
+ */
65
+ marketId?: string;
66
+ /**
67
+ * Reverse lookup -- find market containing this outcome
68
+ * @type {string}
69
+ * @memberof MarketFilterParams
70
+ */
71
+ outcomeId?: string;
72
+ /**
73
+ * Find markets belonging to an event
74
+ * @type {string}
75
+ * @memberof MarketFilterParams
76
+ */
77
+ eventId?: string;
60
78
  /**
61
79
  *
62
80
  * @type {number}
@@ -56,6 +56,9 @@ export function MarketFilterParamsFromJSONTyped(json, ignoreDiscriminator) {
56
56
  'searchIn': json['searchIn'] == null ? undefined : json['searchIn'],
57
57
  'query': json['query'] == null ? undefined : json['query'],
58
58
  'slug': json['slug'] == null ? undefined : json['slug'],
59
+ 'marketId': json['marketId'] == null ? undefined : json['marketId'],
60
+ 'outcomeId': json['outcomeId'] == null ? undefined : json['outcomeId'],
61
+ 'eventId': json['eventId'] == null ? undefined : json['eventId'],
59
62
  'page': json['page'] == null ? undefined : json['page'],
60
63
  'similarityThreshold': json['similarityThreshold'] == null ? undefined : json['similarityThreshold'],
61
64
  };
@@ -75,6 +78,9 @@ export function MarketFilterParamsToJSONTyped(value, ignoreDiscriminator = false
75
78
  'searchIn': value['searchIn'],
76
79
  'query': value['query'],
77
80
  'slug': value['slug'],
81
+ 'marketId': value['marketId'],
82
+ 'outcomeId': value['outcomeId'],
83
+ 'eventId': value['eventId'],
78
84
  'page': value['page'],
79
85
  'similarityThreshold': value['similarityThreshold'],
80
86
  };
@@ -12,8 +12,10 @@ export * from './ExchangeCredentials.js';
12
12
  export * from './ExchangeCredentialsSignatureType.js';
13
13
  export * from './ExecutionPriceResult.js';
14
14
  export * from './FetchBalance200Response.js';
15
+ export * from './FetchEvent200Response.js';
15
16
  export * from './FetchEvents200Response.js';
16
17
  export * from './FetchEventsRequest.js';
18
+ export * from './FetchMarket200Response.js';
17
19
  export * from './FetchMarkets200Response.js';
18
20
  export * from './FetchMarketsRequest.js';
19
21
  export * from './FetchOHLCV200Response.js';
@@ -14,8 +14,10 @@ export * from './ExchangeCredentials.js';
14
14
  export * from './ExchangeCredentialsSignatureType.js';
15
15
  export * from './ExecutionPriceResult.js';
16
16
  export * from './FetchBalance200Response.js';
17
+ export * from './FetchEvent200Response.js';
17
18
  export * from './FetchEvents200Response.js';
18
19
  export * from './FetchEventsRequest.js';
20
+ export * from './FetchMarket200Response.js';
19
21
  export * from './FetchMarkets200Response.js';
20
22
  export * from './FetchMarketsRequest.js';
21
23
  export * from './FetchOHLCV200Response.js';
@@ -56,6 +56,37 @@ export declare abstract class Exchange {
56
56
  * ```
57
57
  */
58
58
  fetchMarkets(params?: any): Promise<UnifiedMarket[]>;
59
+ /**
60
+ * Fetch a single market by lookup parameters.
61
+ * Returns the first matching market or throws if not found.
62
+ *
63
+ * @param params - Lookup parameters (marketId, outcomeId, slug, eventId, query)
64
+ * @returns A single unified market
65
+ * @throws Error if no market matches
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * const market = await exchange.fetchMarket({ marketId: '663583' });
70
+ * const market = await exchange.fetchMarket({ outcomeId: '10991849...' });
71
+ * const market = await exchange.fetchMarket({ slug: 'will-trump-win' });
72
+ * ```
73
+ */
74
+ fetchMarket(params?: any): Promise<UnifiedMarket>;
75
+ /**
76
+ * Fetch a single event by lookup parameters.
77
+ * Returns the first matching event or throws if not found.
78
+ *
79
+ * @param params - Lookup parameters (eventId, slug, query)
80
+ * @returns A single unified event
81
+ * @throws Error if no event matches
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * const event = await exchange.fetchEvent({ eventId: 'TRUMP25DEC' });
86
+ * const event = await exchange.fetchEvent({ slug: 'us-election' });
87
+ * ```
88
+ */
89
+ fetchEvent(params?: any): Promise<UnifiedEvent>;
59
90
  /**
60
91
  * Get historical price candles.
61
92
  *
@@ -240,6 +240,99 @@ export class Exchange {
240
240
  throw new Error(`Failed to fetch markets: ${error}`);
241
241
  }
242
242
  }
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) {
259
+ await this.initPromise;
260
+ try {
261
+ const args = [];
262
+ if (params) {
263
+ args.push(params);
264
+ }
265
+ const requestBody = {
266
+ args,
267
+ credentials: this.getCredentials()
268
+ };
269
+ const url = `${this.config.basePath}/api/${this.exchangeName}/fetchMarket`;
270
+ const response = await fetch(url, {
271
+ method: 'POST',
272
+ headers: {
273
+ 'Content-Type': 'application/json',
274
+ ...this.config.headers
275
+ },
276
+ body: JSON.stringify(requestBody)
277
+ });
278
+ if (!response.ok) {
279
+ const error = await response.json().catch(() => ({}));
280
+ throw new Error(error.error?.message || response.statusText);
281
+ }
282
+ const json = await response.json();
283
+ const data = this.handleResponse(json);
284
+ return convertMarket(data);
285
+ }
286
+ catch (error) {
287
+ throw new Error(`Failed to fetch market: ${error}`);
288
+ }
289
+ }
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
+ async fetchEvent(params) {
305
+ await this.initPromise;
306
+ try {
307
+ const args = [];
308
+ if (params) {
309
+ 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, {
317
+ method: 'POST',
318
+ headers: {
319
+ 'Content-Type': 'application/json',
320
+ ...this.config.headers
321
+ },
322
+ body: JSON.stringify(requestBody)
323
+ });
324
+ if (!response.ok) {
325
+ const error = await response.json().catch(() => ({}));
326
+ throw new Error(error.error?.message || response.statusText);
327
+ }
328
+ const json = await response.json();
329
+ const data = this.handleResponse(json);
330
+ return convertEvent(data);
331
+ }
332
+ catch (error) {
333
+ throw new Error(`Failed to fetch event: ${error}`);
334
+ }
335
+ }
243
336
  /**
244
337
  * Get historical price candles.
245
338
  *