pmxtjs 2.33.4 → 2.34.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 (82) hide show
  1. package/dist/esm/generated/src/apis/DefaultApi.d.ts +72 -7
  2. package/dist/esm/generated/src/apis/DefaultApi.js +107 -6
  3. package/dist/esm/generated/src/models/ArbitrageOpportunity.d.ts +23 -0
  4. package/dist/esm/generated/src/models/ArbitrageOpportunity.js +14 -0
  5. package/dist/esm/generated/src/models/CompareMarketPricesRequest.d.ts +3 -3
  6. package/dist/esm/generated/src/models/CompareMarketPricesRequest.js +3 -3
  7. package/dist/esm/generated/src/models/FetchArbitrageParams.d.ts +17 -0
  8. package/dist/esm/generated/src/models/FetchArbitrageParams.js +12 -0
  9. package/dist/esm/generated/src/models/FetchEventMatchesParams.d.ts +7 -0
  10. package/dist/esm/generated/src/models/FetchEventMatchesParams.js +3 -0
  11. package/dist/esm/generated/src/models/FetchMarketMatches200Response.d.ts +46 -0
  12. package/dist/esm/generated/src/models/{FetchMatches200Response.js → FetchMarketMatches200Response.js} +8 -8
  13. package/dist/esm/generated/src/models/FetchMarketMatchesParams.d.ts +86 -0
  14. package/dist/esm/generated/src/models/{FetchMatchesParams.js → FetchMarketMatchesParams.js} +12 -9
  15. package/dist/esm/generated/src/models/UnifiedEvent.d.ts +6 -0
  16. package/dist/esm/generated/src/models/UnifiedEvent.js +2 -0
  17. package/dist/esm/generated/src/models/UnifiedMarket.d.ts +6 -0
  18. package/dist/esm/generated/src/models/UnifiedMarket.js +2 -0
  19. package/dist/esm/generated/src/models/index.d.ts +2 -2
  20. package/dist/esm/generated/src/models/index.js +2 -2
  21. package/dist/esm/index.d.ts +3 -0
  22. package/dist/esm/index.js +3 -0
  23. package/dist/esm/pmxt/client.js +2 -0
  24. package/dist/esm/pmxt/models.d.ts +66 -0
  25. package/dist/esm/pmxt/router.d.ts +133 -0
  26. package/dist/esm/pmxt/router.js +338 -0
  27. package/dist/generated/src/apis/DefaultApi.d.ts +72 -7
  28. package/dist/generated/src/apis/DefaultApi.js +108 -7
  29. package/dist/generated/src/models/ArbitrageOpportunity.d.ts +23 -0
  30. package/dist/generated/src/models/ArbitrageOpportunity.js +15 -0
  31. package/dist/generated/src/models/CompareMarketPricesRequest.d.ts +3 -3
  32. package/dist/generated/src/models/CompareMarketPricesRequest.js +3 -3
  33. package/dist/generated/src/models/FetchArbitrageParams.d.ts +17 -0
  34. package/dist/generated/src/models/FetchArbitrageParams.js +13 -0
  35. package/dist/generated/src/models/FetchEventMatchesParams.d.ts +7 -0
  36. package/dist/generated/src/models/FetchEventMatchesParams.js +3 -0
  37. package/dist/generated/src/models/FetchMarketMatches200Response.d.ts +46 -0
  38. package/dist/generated/src/models/{FetchMatches200Response.js → FetchMarketMatches200Response.js} +13 -13
  39. package/dist/generated/src/models/FetchMarketMatchesParams.d.ts +86 -0
  40. package/dist/generated/src/models/{FetchMatchesParams.js → FetchMarketMatchesParams.js} +18 -15
  41. package/dist/generated/src/models/UnifiedEvent.d.ts +6 -0
  42. package/dist/generated/src/models/UnifiedEvent.js +2 -0
  43. package/dist/generated/src/models/UnifiedMarket.d.ts +6 -0
  44. package/dist/generated/src/models/UnifiedMarket.js +2 -0
  45. package/dist/generated/src/models/index.d.ts +2 -2
  46. package/dist/generated/src/models/index.js +2 -2
  47. package/dist/index.d.ts +3 -0
  48. package/dist/index.js +5 -1
  49. package/dist/pmxt/client.js +2 -0
  50. package/dist/pmxt/models.d.ts +66 -0
  51. package/dist/pmxt/router.d.ts +133 -0
  52. package/dist/pmxt/router.js +375 -0
  53. package/generated/.openapi-generator/FILES +4 -4
  54. package/generated/docs/ArbitrageOpportunity.md +4 -0
  55. package/generated/docs/CompareMarketPricesRequest.md +1 -1
  56. package/generated/docs/DefaultApi.md +112 -10
  57. package/generated/docs/FetchArbitrageParams.md +2 -0
  58. package/generated/docs/FetchEventMatchesParams.md +2 -0
  59. package/generated/docs/{FetchMatches200Response.md → FetchMarketMatches200Response.md} +4 -4
  60. package/generated/docs/{FetchMatchesParams.md → FetchMarketMatchesParams.md} +6 -4
  61. package/generated/docs/UnifiedEvent.md +2 -0
  62. package/generated/docs/UnifiedMarket.md +2 -0
  63. package/generated/package.json +1 -1
  64. package/generated/src/apis/DefaultApi.ts +159 -10
  65. package/generated/src/models/ArbitrageOpportunity.ts +30 -0
  66. package/generated/src/models/CompareMarketPricesRequest.ts +11 -11
  67. package/generated/src/models/FetchArbitrageParams.ts +22 -0
  68. package/generated/src/models/FetchEventMatchesParams.ts +16 -0
  69. package/generated/src/models/{FetchMatches200Response.ts → FetchMarketMatches200Response.ts} +13 -13
  70. package/generated/src/models/{FetchMatchesParams.ts → FetchMarketMatchesParams.ts} +36 -20
  71. package/generated/src/models/UnifiedEvent.ts +8 -0
  72. package/generated/src/models/UnifiedMarket.ts +8 -0
  73. package/generated/src/models/index.ts +2 -2
  74. package/index.ts +3 -0
  75. package/package.json +2 -2
  76. package/pmxt/client.ts +2 -0
  77. package/pmxt/models.ts +97 -0
  78. package/pmxt/router.ts +385 -0
  79. package/dist/esm/generated/src/models/FetchMatches200Response.d.ts +0 -46
  80. package/dist/esm/generated/src/models/FetchMatchesParams.d.ts +0 -79
  81. package/dist/generated/src/models/FetchMatches200Response.d.ts +0 -46
  82. package/dist/generated/src/models/FetchMatchesParams.d.ts +0 -79
@@ -0,0 +1,338 @@
1
+ /**
2
+ * Router — cross-venue intelligence layer.
3
+ *
4
+ * Search, match, compare prices, find hedges, and detect arbitrage across
5
+ * every venue PMXT supports. Only requires a PMXT API key.
6
+ */
7
+ import { Exchange } from "./client.js";
8
+ function convertMarket(raw) {
9
+ const outcomes = (raw.outcomes || []).map((o) => ({
10
+ outcomeId: o.outcomeId,
11
+ marketId: o.marketId,
12
+ label: o.label,
13
+ price: o.price,
14
+ priceChange24h: o.priceChange24h,
15
+ metadata: o.metadata,
16
+ }));
17
+ const convertOutcome = (o) => o ? ({
18
+ outcomeId: o.outcomeId,
19
+ marketId: o.marketId,
20
+ label: o.label,
21
+ price: o.price,
22
+ priceChange24h: o.priceChange24h,
23
+ metadata: o.metadata,
24
+ }) : undefined;
25
+ return {
26
+ marketId: raw.marketId,
27
+ title: raw.title,
28
+ slug: raw.slug,
29
+ outcomes,
30
+ volume24h: raw.volume24h || 0,
31
+ liquidity: raw.liquidity || 0,
32
+ url: raw.url,
33
+ description: raw.description,
34
+ resolutionDate: raw.resolutionDate ? new Date(raw.resolutionDate) : undefined,
35
+ volume: raw.volume,
36
+ openInterest: raw.openInterest,
37
+ image: raw.image,
38
+ category: raw.category,
39
+ tags: raw.tags,
40
+ tickSize: raw.tickSize,
41
+ status: raw.status,
42
+ contractAddress: raw.contractAddress,
43
+ sourceExchange: raw.sourceExchange,
44
+ eventId: raw.eventId,
45
+ yes: convertOutcome(raw.yes),
46
+ no: convertOutcome(raw.no),
47
+ up: convertOutcome(raw.up),
48
+ down: convertOutcome(raw.down),
49
+ };
50
+ }
51
+ function convertEvent(raw) {
52
+ return {
53
+ id: raw.id,
54
+ title: raw.title,
55
+ description: raw.description,
56
+ slug: raw.slug,
57
+ markets: (raw.markets || []).map(convertMarket),
58
+ volume24h: raw.volume24h,
59
+ volume: raw.volume,
60
+ url: raw.url,
61
+ image: raw.image,
62
+ category: raw.category,
63
+ tags: raw.tags,
64
+ sourceExchange: raw.sourceExchange,
65
+ };
66
+ }
67
+ function parseMatchResult(raw) {
68
+ const marketData = raw.market || {};
69
+ return {
70
+ market: convertMarket(marketData),
71
+ relation: raw.relation || 'identity',
72
+ confidence: raw.confidence || 0,
73
+ reasoning: raw.reasoning,
74
+ bestBid: raw.bestBid ?? marketData.bestBid,
75
+ bestAsk: raw.bestAsk ?? marketData.bestAsk,
76
+ };
77
+ }
78
+ /**
79
+ * Cross-venue intelligence layer.
80
+ *
81
+ * Search markets and events across every venue, find semantically
82
+ * equivalent markets on other platforms, compare prices, discover
83
+ * hedges, and scan for arbitrage — all from a single PMXT API key.
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * import pmxt from "pmxtjs";
88
+ *
89
+ * const router = new pmxt.Router({ pmxtApiKey: "pmxt_live_..." });
90
+ * const markets = await router.fetchMarkets({ query: "election" });
91
+ * const matches = await router.fetchMarketMatches({ market: markets[0] });
92
+ * ```
93
+ */
94
+ export class Router extends Exchange {
95
+ constructor(options = {}) {
96
+ super("router", options);
97
+ }
98
+ // ------------------------------------------------------------------
99
+ // Matching
100
+ // ------------------------------------------------------------------
101
+ /**
102
+ * Find markets on other venues that correspond to a given market.
103
+ *
104
+ * @param params.market - A UnifiedMarket object (extracts marketId automatically).
105
+ * @param params.marketId - PMXT market ID.
106
+ * @param params.slug - Market slug (alternative to marketId).
107
+ * @param params.url - Market URL on the source venue.
108
+ * @param params.relation - Filter to a specific relation type.
109
+ * @param params.minConfidence - Minimum confidence threshold (0–1).
110
+ * @param params.limit - Maximum number of matches to return.
111
+ * @param params.includePrices - Attach live bestBid/bestAsk to each match.
112
+ */
113
+ async fetchMarketMatches(params = {}) {
114
+ await this.initPromise;
115
+ const query = {};
116
+ const marketId = params.marketId ?? params.market?.marketId;
117
+ if (marketId)
118
+ query.marketId = marketId;
119
+ if (params.slug)
120
+ query.slug = params.slug;
121
+ if (params.url)
122
+ query.url = params.url;
123
+ if (params.relation)
124
+ query.relation = params.relation;
125
+ if (params.minConfidence !== undefined)
126
+ query.minConfidence = params.minConfidence;
127
+ if (params.limit !== undefined)
128
+ query.limit = params.limit;
129
+ if (params.includePrices)
130
+ query.includePrices = true;
131
+ try {
132
+ const json = await this.sidecarReadRequest('fetchMatches', query, [query]);
133
+ const data = this.handleResponse(json);
134
+ if (!data)
135
+ return [];
136
+ return data.map(parseMatchResult);
137
+ }
138
+ catch (error) {
139
+ if (error instanceof Error)
140
+ throw error;
141
+ throw new Error(`Failed to fetchMarketMatches: ${error}`);
142
+ }
143
+ }
144
+ /**
145
+ * @deprecated Use {@link fetchMarketMatches} instead.
146
+ */
147
+ async fetchMatches(params = {}) {
148
+ console.warn('[pmxt] fetchMatches is deprecated, use fetchMarketMatches instead');
149
+ return this.fetchMarketMatches(params);
150
+ }
151
+ /**
152
+ * Match an entire event across venues.
153
+ *
154
+ * @param params.event - A UnifiedEvent object (extracts id automatically).
155
+ * @param params.eventId - PMXT event ID.
156
+ * @param params.slug - Event slug.
157
+ * @param params.relation - Filter market matches to a specific relation type.
158
+ * @param params.minConfidence - Minimum confidence threshold (0–1).
159
+ * @param params.limit - Maximum number of event matches to return.
160
+ * @param params.includePrices - Attach live prices to each market match.
161
+ */
162
+ async fetchEventMatches(params = {}) {
163
+ await this.initPromise;
164
+ const query = {};
165
+ const eventId = params.eventId ?? params.event?.id;
166
+ if (eventId)
167
+ query.eventId = eventId;
168
+ if (params.slug)
169
+ query.slug = params.slug;
170
+ if (params.relation)
171
+ query.relation = params.relation;
172
+ if (params.minConfidence !== undefined)
173
+ query.minConfidence = params.minConfidence;
174
+ if (params.limit !== undefined)
175
+ query.limit = params.limit;
176
+ if (params.includePrices)
177
+ query.includePrices = true;
178
+ try {
179
+ const json = await this.sidecarReadRequest('fetchEventMatches', query, [query]);
180
+ const data = this.handleResponse(json);
181
+ if (!data)
182
+ return [];
183
+ return data.map((entry) => ({
184
+ event: convertEvent(entry.event || {}),
185
+ marketMatches: (entry.marketMatches || []).map(parseMatchResult),
186
+ }));
187
+ }
188
+ catch (error) {
189
+ if (error instanceof Error)
190
+ throw error;
191
+ throw new Error(`Failed to fetchEventMatches: ${error}`);
192
+ }
193
+ }
194
+ // ------------------------------------------------------------------
195
+ // Price comparison
196
+ // ------------------------------------------------------------------
197
+ /**
198
+ * Compare prices for the same market across venues.
199
+ *
200
+ * @param params.market - A UnifiedMarket object (extracts marketId automatically).
201
+ * @param params.marketId - PMXT market ID.
202
+ * @param params.slug - Market slug.
203
+ * @param params.url - Market URL.
204
+ */
205
+ async compareMarketPrices(params = {}) {
206
+ await this.initPromise;
207
+ const query = {};
208
+ const marketId = params.marketId ?? params.market?.marketId;
209
+ if (marketId)
210
+ query.marketId = marketId;
211
+ if (params.slug)
212
+ query.slug = params.slug;
213
+ if (params.url)
214
+ query.url = params.url;
215
+ try {
216
+ const url = `${this.config.basePath}/api/${this.exchangeName}/compareMarketPrices`;
217
+ const response = await fetch(url, {
218
+ method: 'POST',
219
+ headers: { 'Content-Type': 'application/json', ...this.getAuthHeaders() },
220
+ body: JSON.stringify({ args: [query], credentials: this.getCredentials() }),
221
+ });
222
+ if (!response.ok) {
223
+ const body = await response.json().catch(() => ({}));
224
+ if (body.error && typeof body.error === 'object') {
225
+ const { fromServerError } = await import('./errors.js');
226
+ throw fromServerError(body.error);
227
+ }
228
+ throw new Error(body.error?.message || response.statusText);
229
+ }
230
+ const json = await response.json();
231
+ const data = this.handleResponse(json);
232
+ if (!data)
233
+ return [];
234
+ return data.map((r) => ({
235
+ market: convertMarket(r.market || {}),
236
+ relation: r.relation || 'identity',
237
+ confidence: r.confidence || 0,
238
+ reasoning: r.reasoning,
239
+ bestBid: r.bestBid,
240
+ bestAsk: r.bestAsk,
241
+ venue: r.venue || '',
242
+ }));
243
+ }
244
+ catch (error) {
245
+ if (error instanceof Error)
246
+ throw error;
247
+ throw new Error(`Failed to compareMarketPrices: ${error}`);
248
+ }
249
+ }
250
+ // ------------------------------------------------------------------
251
+ // Hedging
252
+ // ------------------------------------------------------------------
253
+ /**
254
+ * Find markets that partially hedge a position.
255
+ *
256
+ * @param params.market - A UnifiedMarket object (extracts marketId automatically).
257
+ * @param params.marketId - PMXT market ID.
258
+ * @param params.slug - Market slug.
259
+ * @param params.url - Market URL.
260
+ */
261
+ async fetchHedges(params = {}) {
262
+ await this.initPromise;
263
+ const query = {};
264
+ const marketId = params.marketId ?? params.market?.marketId;
265
+ if (marketId)
266
+ query.marketId = marketId;
267
+ if (params.slug)
268
+ query.slug = params.slug;
269
+ if (params.url)
270
+ query.url = params.url;
271
+ try {
272
+ const json = await this.sidecarReadRequest('fetchHedges', query, [query]);
273
+ const data = this.handleResponse(json);
274
+ if (!data)
275
+ return [];
276
+ return data.map((r) => ({
277
+ market: convertMarket(r.market || {}),
278
+ relation: r.relation || 'identity',
279
+ confidence: r.confidence || 0,
280
+ reasoning: r.reasoning,
281
+ bestBid: r.bestBid,
282
+ bestAsk: r.bestAsk,
283
+ venue: r.venue || '',
284
+ }));
285
+ }
286
+ catch (error) {
287
+ if (error instanceof Error)
288
+ throw error;
289
+ throw new Error(`Failed to fetchHedges: ${error}`);
290
+ }
291
+ }
292
+ // ------------------------------------------------------------------
293
+ // Arbitrage
294
+ // ------------------------------------------------------------------
295
+ /**
296
+ * Scan for cross-venue arbitrage opportunities.
297
+ *
298
+ * @param params.minSpread - Only return pairs with spread >= this value.
299
+ * @param params.category - Filter source markets by category.
300
+ * @param params.limit - Max source markets to scan (default: 50).
301
+ * @param params.relations - Relation types to include (default: ['identity']).
302
+ */
303
+ async fetchArbitrage(params = {}) {
304
+ await this.initPromise;
305
+ const query = {};
306
+ if (params.minSpread !== undefined)
307
+ query.minSpread = params.minSpread;
308
+ if (params.category)
309
+ query.category = params.category;
310
+ if (params.limit !== undefined)
311
+ query.limit = params.limit;
312
+ if (params.relations && params.relations.length > 0) {
313
+ query.relations = params.relations.join(',');
314
+ }
315
+ try {
316
+ const json = await this.sidecarReadRequest('fetchArbitrage', query, [query]);
317
+ const data = this.handleResponse(json);
318
+ if (!data)
319
+ return [];
320
+ return data.map((r) => ({
321
+ marketA: convertMarket(r.marketA || {}),
322
+ marketB: convertMarket(r.marketB || {}),
323
+ spread: r.spread || 0,
324
+ buyVenue: r.buyVenue || '',
325
+ sellVenue: r.sellVenue || '',
326
+ buyPrice: r.buyPrice || 0,
327
+ sellPrice: r.sellPrice || 0,
328
+ relation: r.relation,
329
+ confidence: r.confidence,
330
+ }));
331
+ }
332
+ catch (error) {
333
+ if (error instanceof Error)
334
+ throw error;
335
+ throw new Error(`Failed to fetchArbitrage: ${error}`);
336
+ }
337
+ }
338
+ }
@@ -10,7 +10,7 @@
10
10
  * Do not edit the class manually.
11
11
  */
12
12
  import * as runtime from '../runtime';
13
- import type { BaseResponse, BuildOrder200Response, BuildOrderRequest, CancelOrderRequest, CloseRequest, CompareMarketPrices200Response, CompareMarketPricesRequest, CreateOrder200Response, CreateOrderRequest, EventFilterCriteria, FetchArbitrage200Response, FetchBalance200Response, FetchEvent200Response, FetchEventMatches200Response, FetchEvents200Response, FetchMarket200Response, FetchMarkets200Response, FetchMarketsPaginated200Response, FetchMatches200Response, FetchMyTrades200Response, FetchOHLCV200Response, FetchOpenOrders200Response, FetchOrderBook200Response, FetchPositions200Response, FetchTrades200Response, FilterEventsRequest, FilterMarketsRequest, GetExecutionPrice200Response, GetExecutionPriceDetailed200Response, GetExecutionPriceDetailedRequest, GetExecutionPriceRequest, HealthCheck200Response, LoadMarkets200Response, LoadMarketsRequest, MarketFilterCriteria, SubmitOrderRequest, UnwatchAddressRequest, UnwatchOrderBookRequest, WatchAddress200Response, WatchAddressRequest, WatchOrderBookRequest, WatchTradesRequest } from '../models/index';
13
+ import type { BaseResponse, BuildOrder200Response, BuildOrderRequest, CancelOrderRequest, CloseRequest, CompareMarketPrices200Response, CompareMarketPricesRequest, CreateOrder200Response, CreateOrderRequest, EventFilterCriteria, FetchArbitrage200Response, FetchBalance200Response, FetchEvent200Response, FetchEventMatches200Response, FetchEvents200Response, FetchMarket200Response, FetchMarketMatches200Response, FetchMarkets200Response, FetchMarketsPaginated200Response, FetchMyTrades200Response, FetchOHLCV200Response, FetchOpenOrders200Response, FetchOrderBook200Response, FetchPositions200Response, FetchTrades200Response, FilterEventsRequest, FilterMarketsRequest, GetExecutionPrice200Response, GetExecutionPriceDetailed200Response, GetExecutionPriceDetailedRequest, GetExecutionPriceRequest, HealthCheck200Response, LoadMarkets200Response, LoadMarketsRequest, MarketFilterCriteria, SubmitOrderRequest, UnifiedEvent, UnifiedMarket, UnwatchAddressRequest, UnwatchOrderBookRequest, WatchAddress200Response, WatchAddressRequest, WatchOrderBookRequest, WatchTradesRequest } from '../models/index';
14
14
  export interface BuildOrderOperationRequest {
15
15
  exchange: BuildOrderOperationExchangeEnum;
16
16
  buildOrderRequest?: BuildOrderRequest;
@@ -44,6 +44,7 @@ export interface FetchArbitrageRequest {
44
44
  minSpread?: number;
45
45
  category?: string;
46
46
  limit?: number;
47
+ relations?: Array<FetchArbitrageRelationsEnum>;
47
48
  }
48
49
  export interface FetchBalanceRequest {
49
50
  exchange: FetchBalanceExchangeEnum;
@@ -73,6 +74,7 @@ export interface FetchEventRequest {
73
74
  }
74
75
  export interface FetchEventMatchesRequest {
75
76
  exchange: FetchEventMatchesExchangeEnum;
77
+ event?: UnifiedEvent;
76
78
  eventId?: string;
77
79
  slug?: string;
78
80
  relation?: FetchEventMatchesRelationEnum;
@@ -96,6 +98,7 @@ export interface FetchEventsRequest {
96
98
  }
97
99
  export interface FetchHedgesRequest {
98
100
  exchange: FetchHedgesExchangeEnum;
101
+ market?: UnifiedMarket;
99
102
  marketId?: string;
100
103
  slug?: string;
101
104
  url?: string;
@@ -119,6 +122,17 @@ export interface FetchMarketRequest {
119
122
  page?: number;
120
123
  similarityThreshold?: number;
121
124
  }
125
+ export interface FetchMarketMatchesRequest {
126
+ exchange: FetchMarketMatchesExchangeEnum;
127
+ market?: UnifiedMarket;
128
+ marketId?: string;
129
+ slug?: string;
130
+ url?: string;
131
+ relation?: FetchMarketMatchesRelationEnum;
132
+ minConfidence?: number;
133
+ limit?: number;
134
+ includePrices?: boolean;
135
+ }
122
136
  export interface FetchMarketsRequest {
123
137
  exchange: FetchMarketsExchangeEnum;
124
138
  limit?: number;
@@ -142,6 +156,7 @@ export interface FetchMarketsPaginatedRequest {
142
156
  }
143
157
  export interface FetchMatchesRequest {
144
158
  exchange: FetchMatchesExchangeEnum;
159
+ market?: UnifiedMarket;
145
160
  marketId?: string;
146
161
  slug?: string;
147
162
  url?: string;
@@ -374,6 +389,16 @@ export declare class DefaultApi extends runtime.BaseAPI {
374
389
  * Fetch Market
375
390
  */
376
391
  fetchMarket(requestParameters: FetchMarketRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchMarket200Response>;
392
+ /**
393
+ * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
394
+ * Find Similar Markets
395
+ */
396
+ fetchMarketMatchesRaw(requestParameters: FetchMarketMatchesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchMarketMatches200Response>>;
397
+ /**
398
+ * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
399
+ * Find Similar Markets
400
+ */
401
+ fetchMarketMatches(requestParameters: FetchMarketMatchesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchMarketMatches200Response>;
377
402
  /**
378
403
  * Fetch markets with optional filtering, search, or slug lookup. Always hits the exchange API — results reflect the live state at the time of the call.
379
404
  * Fetch Markets
@@ -395,15 +420,15 @@ export declare class DefaultApi extends runtime.BaseAPI {
395
420
  */
396
421
  fetchMarketsPaginated(requestParameters: FetchMarketsPaginatedRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchMarketsPaginated200Response>;
397
422
  /**
398
- * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
399
- * Find Similar Markets
423
+ * Find Similar Markets (Deprecated)
424
+ * @deprecated
400
425
  */
401
- fetchMatchesRaw(requestParameters: FetchMatchesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchMatches200Response>>;
426
+ fetchMatchesRaw(requestParameters: FetchMatchesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<FetchMarketMatches200Response>>;
402
427
  /**
403
- * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
404
- * Find Similar Markets
428
+ * Find Similar Markets (Deprecated)
429
+ * @deprecated
405
430
  */
406
- fetchMatches(requestParameters: FetchMatchesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchMatches200Response>;
431
+ fetchMatches(requestParameters: FetchMatchesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<FetchMarketMatches200Response>;
407
432
  /**
408
433
  * Fetch My Trades
409
434
  */
@@ -717,6 +742,17 @@ export declare const FetchArbitrageExchangeEnum: {
717
742
  readonly Router: "router";
718
743
  };
719
744
  export type FetchArbitrageExchangeEnum = typeof FetchArbitrageExchangeEnum[keyof typeof FetchArbitrageExchangeEnum];
745
+ /**
746
+ * @export
747
+ */
748
+ export declare const FetchArbitrageRelationsEnum: {
749
+ readonly Identity: "identity";
750
+ readonly Subset: "subset";
751
+ readonly Superset: "superset";
752
+ readonly Overlap: "overlap";
753
+ readonly Disjoint: "disjoint";
754
+ };
755
+ export type FetchArbitrageRelationsEnum = typeof FetchArbitrageRelationsEnum[keyof typeof FetchArbitrageRelationsEnum];
720
756
  /**
721
757
  * @export
722
758
  */
@@ -949,6 +985,35 @@ export declare const FetchMarketSearchInEnum: {
949
985
  readonly Both: "both";
950
986
  };
951
987
  export type FetchMarketSearchInEnum = typeof FetchMarketSearchInEnum[keyof typeof FetchMarketSearchInEnum];
988
+ /**
989
+ * @export
990
+ */
991
+ export declare const FetchMarketMatchesExchangeEnum: {
992
+ readonly Polymarket: "polymarket";
993
+ readonly Kalshi: "kalshi";
994
+ readonly KalshiDemo: "kalshi-demo";
995
+ readonly Limitless: "limitless";
996
+ readonly Probable: "probable";
997
+ readonly Baozi: "baozi";
998
+ readonly Myriad: "myriad";
999
+ readonly Opinion: "opinion";
1000
+ readonly Metaculus: "metaculus";
1001
+ readonly Smarkets: "smarkets";
1002
+ readonly PolymarketUs: "polymarket_us";
1003
+ readonly Router: "router";
1004
+ };
1005
+ export type FetchMarketMatchesExchangeEnum = typeof FetchMarketMatchesExchangeEnum[keyof typeof FetchMarketMatchesExchangeEnum];
1006
+ /**
1007
+ * @export
1008
+ */
1009
+ export declare const FetchMarketMatchesRelationEnum: {
1010
+ readonly Identity: "identity";
1011
+ readonly Subset: "subset";
1012
+ readonly Superset: "superset";
1013
+ readonly Overlap: "overlap";
1014
+ readonly Disjoint: "disjoint";
1015
+ };
1016
+ export type FetchMarketMatchesRelationEnum = typeof FetchMarketMatchesRelationEnum[keyof typeof FetchMarketMatchesRelationEnum];
952
1017
  /**
953
1018
  * @export
954
1019
  */
@@ -46,8 +46,8 @@ var __importStar = (this && this.__importStar) || (function () {
46
46
  };
47
47
  })();
48
48
  Object.defineProperty(exports, "__esModule", { value: true });
49
- exports.WatchAddressOperationExchangeEnum = exports.UnwatchOrderBookOperationExchangeEnum = exports.UnwatchAddressOperationExchangeEnum = exports.SubmitOrderOperationExchangeEnum = exports.LoadMarketsOperationExchangeEnum = exports.GetExecutionPriceDetailedOperationExchangeEnum = exports.GetExecutionPriceOperationExchangeEnum = exports.FilterMarketsOperationExchangeEnum = exports.FilterEventsOperationExchangeEnum = exports.FetchTradesExchangeEnum = exports.FetchPositionsExchangeEnum = exports.FetchOrderBookExchangeEnum = exports.FetchOrderExchangeEnum = exports.FetchOpenOrdersExchangeEnum = exports.FetchOHLCVResolutionEnum = exports.FetchOHLCVExchangeEnum = exports.FetchMyTradesExchangeEnum = exports.FetchMatchesRelationEnum = exports.FetchMatchesExchangeEnum = exports.FetchMarketsPaginatedExchangeEnum = exports.FetchMarketsSearchInEnum = exports.FetchMarketsStatusEnum = exports.FetchMarketsSortEnum = exports.FetchMarketsExchangeEnum = exports.FetchMarketSearchInEnum = exports.FetchMarketStatusEnum = exports.FetchMarketSortEnum = exports.FetchMarketExchangeEnum = exports.FetchHedgesRelationEnum = exports.FetchHedgesExchangeEnum = exports.FetchEventsSearchInEnum = exports.FetchEventsStatusEnum = exports.FetchEventsSortEnum = exports.FetchEventsExchangeEnum = exports.FetchEventMatchesRelationEnum = exports.FetchEventMatchesExchangeEnum = exports.FetchEventSearchInEnum = exports.FetchEventStatusEnum = exports.FetchEventSortEnum = exports.FetchEventExchangeEnum = exports.FetchClosedOrdersExchangeEnum = exports.FetchBalanceExchangeEnum = exports.FetchArbitrageExchangeEnum = exports.FetchAllOrdersExchangeEnum = exports.CreateOrderOperationExchangeEnum = exports.CompareMarketPricesOperationExchangeEnum = exports.CloseOperationExchangeEnum = exports.CancelOrderOperationExchangeEnum = exports.BuildOrderOperationExchangeEnum = exports.DefaultApi = void 0;
50
- exports.WatchTradesOperationExchangeEnum = exports.WatchOrderBookOperationExchangeEnum = void 0;
49
+ exports.SubmitOrderOperationExchangeEnum = exports.LoadMarketsOperationExchangeEnum = exports.GetExecutionPriceDetailedOperationExchangeEnum = exports.GetExecutionPriceOperationExchangeEnum = exports.FilterMarketsOperationExchangeEnum = exports.FilterEventsOperationExchangeEnum = exports.FetchTradesExchangeEnum = exports.FetchPositionsExchangeEnum = exports.FetchOrderBookExchangeEnum = exports.FetchOrderExchangeEnum = exports.FetchOpenOrdersExchangeEnum = exports.FetchOHLCVResolutionEnum = exports.FetchOHLCVExchangeEnum = exports.FetchMyTradesExchangeEnum = exports.FetchMatchesRelationEnum = exports.FetchMatchesExchangeEnum = exports.FetchMarketsPaginatedExchangeEnum = exports.FetchMarketsSearchInEnum = exports.FetchMarketsStatusEnum = exports.FetchMarketsSortEnum = exports.FetchMarketsExchangeEnum = exports.FetchMarketMatchesRelationEnum = exports.FetchMarketMatchesExchangeEnum = exports.FetchMarketSearchInEnum = exports.FetchMarketStatusEnum = exports.FetchMarketSortEnum = exports.FetchMarketExchangeEnum = exports.FetchHedgesRelationEnum = exports.FetchHedgesExchangeEnum = exports.FetchEventsSearchInEnum = exports.FetchEventsStatusEnum = exports.FetchEventsSortEnum = exports.FetchEventsExchangeEnum = exports.FetchEventMatchesRelationEnum = exports.FetchEventMatchesExchangeEnum = exports.FetchEventSearchInEnum = exports.FetchEventStatusEnum = exports.FetchEventSortEnum = exports.FetchEventExchangeEnum = exports.FetchClosedOrdersExchangeEnum = exports.FetchBalanceExchangeEnum = exports.FetchArbitrageRelationsEnum = exports.FetchArbitrageExchangeEnum = exports.FetchAllOrdersExchangeEnum = exports.CreateOrderOperationExchangeEnum = exports.CompareMarketPricesOperationExchangeEnum = exports.CloseOperationExchangeEnum = exports.CancelOrderOperationExchangeEnum = exports.BuildOrderOperationExchangeEnum = exports.DefaultApi = void 0;
50
+ exports.WatchTradesOperationExchangeEnum = exports.WatchOrderBookOperationExchangeEnum = exports.WatchAddressOperationExchangeEnum = exports.UnwatchOrderBookOperationExchangeEnum = exports.UnwatchAddressOperationExchangeEnum = void 0;
51
51
  const runtime = __importStar(require("../runtime"));
52
52
  const index_1 = require("../models/index");
53
53
  /**
@@ -263,6 +263,9 @@ class DefaultApi extends runtime.BaseAPI {
263
263
  if (requestParameters['limit'] != null) {
264
264
  queryParameters['limit'] = requestParameters['limit'];
265
265
  }
266
+ if (requestParameters['relations'] != null) {
267
+ queryParameters['relations'] = requestParameters['relations'];
268
+ }
266
269
  const headerParameters = {};
267
270
  let urlPath = `/api/{exchange}/fetchArbitrage`;
268
271
  urlPath = urlPath.replace(`{${"exchange"}}`, encodeURIComponent(String(requestParameters['exchange'])));
@@ -424,6 +427,9 @@ class DefaultApi extends runtime.BaseAPI {
424
427
  throw new runtime.RequiredError('exchange', 'Required parameter "exchange" was null or undefined when calling fetchEventMatches().');
425
428
  }
426
429
  const queryParameters = {};
430
+ if (requestParameters['event'] != null) {
431
+ queryParameters['event'] = requestParameters['event'];
432
+ }
427
433
  if (requestParameters['eventId'] != null) {
428
434
  queryParameters['eventId'] = requestParameters['eventId'];
429
435
  }
@@ -531,6 +537,9 @@ class DefaultApi extends runtime.BaseAPI {
531
537
  throw new runtime.RequiredError('exchange', 'Required parameter "exchange" was null or undefined when calling fetchHedges().');
532
538
  }
533
539
  const queryParameters = {};
540
+ if (requestParameters['market'] != null) {
541
+ queryParameters['market'] = requestParameters['market'];
542
+ }
534
543
  if (requestParameters['marketId'] != null) {
535
544
  queryParameters['marketId'] = requestParameters['marketId'];
536
545
  }
@@ -635,6 +644,58 @@ class DefaultApi extends runtime.BaseAPI {
635
644
  const response = await this.fetchMarketRaw(requestParameters, initOverrides);
636
645
  return await response.value();
637
646
  }
647
+ /**
648
+ * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
649
+ * Find Similar Markets
650
+ */
651
+ async fetchMarketMatchesRaw(requestParameters, initOverrides) {
652
+ if (requestParameters['exchange'] == null) {
653
+ throw new runtime.RequiredError('exchange', 'Required parameter "exchange" was null or undefined when calling fetchMarketMatches().');
654
+ }
655
+ const queryParameters = {};
656
+ if (requestParameters['market'] != null) {
657
+ queryParameters['market'] = requestParameters['market'];
658
+ }
659
+ if (requestParameters['marketId'] != null) {
660
+ queryParameters['marketId'] = requestParameters['marketId'];
661
+ }
662
+ if (requestParameters['slug'] != null) {
663
+ queryParameters['slug'] = requestParameters['slug'];
664
+ }
665
+ if (requestParameters['url'] != null) {
666
+ queryParameters['url'] = requestParameters['url'];
667
+ }
668
+ if (requestParameters['relation'] != null) {
669
+ queryParameters['relation'] = requestParameters['relation'];
670
+ }
671
+ if (requestParameters['minConfidence'] != null) {
672
+ queryParameters['minConfidence'] = requestParameters['minConfidence'];
673
+ }
674
+ if (requestParameters['limit'] != null) {
675
+ queryParameters['limit'] = requestParameters['limit'];
676
+ }
677
+ if (requestParameters['includePrices'] != null) {
678
+ queryParameters['includePrices'] = requestParameters['includePrices'];
679
+ }
680
+ const headerParameters = {};
681
+ let urlPath = `/api/{exchange}/fetchMarketMatches`;
682
+ urlPath = urlPath.replace(`{${"exchange"}}`, encodeURIComponent(String(requestParameters['exchange'])));
683
+ const response = await this.request({
684
+ path: urlPath,
685
+ method: 'GET',
686
+ headers: headerParameters,
687
+ query: queryParameters,
688
+ }, initOverrides);
689
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.FetchMarketMatches200ResponseFromJSON)(jsonValue));
690
+ }
691
+ /**
692
+ * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
693
+ * Find Similar Markets
694
+ */
695
+ async fetchMarketMatches(requestParameters, initOverrides) {
696
+ const response = await this.fetchMarketMatchesRaw(requestParameters, initOverrides);
697
+ return await response.value();
698
+ }
638
699
  /**
639
700
  * Fetch markets with optional filtering, search, or slug lookup. Always hits the exchange API — results reflect the live state at the time of the call.
640
701
  * Fetch Markets
@@ -737,14 +798,17 @@ class DefaultApi extends runtime.BaseAPI {
737
798
  return await response.value();
738
799
  }
739
800
  /**
740
- * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
741
- * Find Similar Markets
801
+ * Find Similar Markets (Deprecated)
802
+ * @deprecated
742
803
  */
743
804
  async fetchMatchesRaw(requestParameters, initOverrides) {
744
805
  if (requestParameters['exchange'] == null) {
745
806
  throw new runtime.RequiredError('exchange', 'Required parameter "exchange" was null or undefined when calling fetchMatches().');
746
807
  }
747
808
  const queryParameters = {};
809
+ if (requestParameters['market'] != null) {
810
+ queryParameters['market'] = requestParameters['market'];
811
+ }
748
812
  if (requestParameters['marketId'] != null) {
749
813
  queryParameters['marketId'] = requestParameters['marketId'];
750
814
  }
@@ -775,11 +839,11 @@ class DefaultApi extends runtime.BaseAPI {
775
839
  headers: headerParameters,
776
840
  query: queryParameters,
777
841
  }, initOverrides);
778
- return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.FetchMatches200ResponseFromJSON)(jsonValue));
842
+ return new runtime.JSONApiResponse(response, (jsonValue) => (0, index_1.FetchMarketMatches200ResponseFromJSON)(jsonValue));
779
843
  }
780
844
  /**
781
- * Find the same or related market on other venues. Given a market on one venue, discover semantically equivalent markets across every other venue PMXT ingests — each with a relation type (identity, subset, superset, overlap, disjoint), confidence score, and reasoning.
782
- * Find Similar Markets
845
+ * Find Similar Markets (Deprecated)
846
+ * @deprecated
783
847
  */
784
848
  async fetchMatches(requestParameters, initOverrides) {
785
849
  const response = await this.fetchMatchesRaw(requestParameters, initOverrides);
@@ -1521,6 +1585,16 @@ exports.FetchArbitrageExchangeEnum = {
1521
1585
  PolymarketUs: 'polymarket_us',
1522
1586
  Router: 'router'
1523
1587
  };
1588
+ /**
1589
+ * @export
1590
+ */
1591
+ exports.FetchArbitrageRelationsEnum = {
1592
+ Identity: 'identity',
1593
+ Subset: 'subset',
1594
+ Superset: 'superset',
1595
+ Overlap: 'overlap',
1596
+ Disjoint: 'disjoint'
1597
+ };
1524
1598
  /**
1525
1599
  * @export
1526
1600
  */
@@ -1735,6 +1809,33 @@ exports.FetchMarketSearchInEnum = {
1735
1809
  Description: 'description',
1736
1810
  Both: 'both'
1737
1811
  };
1812
+ /**
1813
+ * @export
1814
+ */
1815
+ exports.FetchMarketMatchesExchangeEnum = {
1816
+ Polymarket: 'polymarket',
1817
+ Kalshi: 'kalshi',
1818
+ KalshiDemo: 'kalshi-demo',
1819
+ Limitless: 'limitless',
1820
+ Probable: 'probable',
1821
+ Baozi: 'baozi',
1822
+ Myriad: 'myriad',
1823
+ Opinion: 'opinion',
1824
+ Metaculus: 'metaculus',
1825
+ Smarkets: 'smarkets',
1826
+ PolymarketUs: 'polymarket_us',
1827
+ Router: 'router'
1828
+ };
1829
+ /**
1830
+ * @export
1831
+ */
1832
+ exports.FetchMarketMatchesRelationEnum = {
1833
+ Identity: 'identity',
1834
+ Subset: 'subset',
1835
+ Superset: 'superset',
1836
+ Overlap: 'overlap',
1837
+ Disjoint: 'disjoint'
1838
+ };
1738
1839
  /**
1739
1840
  * @export
1740
1841
  */