Skip to content

Commit 5c000a8

Browse files
committed
fix: add missing exchanges to all SDK layers (gemini-titan, hyperliquid, mock, polymarket_us)
1 parent 3954b9c commit 5c000a8

7 files changed

Lines changed: 187 additions & 30 deletions

File tree

core/scripts/generate-openapi.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2282,7 +2282,7 @@ function buildSpec(methodSpecs) {
22822282
name: 'exchange',
22832283
schema: {
22842284
type: 'string',
2285-
enum: ['polymarket', 'kalshi', 'kalshi-demo', 'limitless', 'probable', 'baozi', 'myriad', 'opinion', 'metaculus', 'smarkets', 'polymarket_us', 'router'],
2285+
enum: ['polymarket', 'kalshi', 'kalshi-demo', 'limitless', 'probable', 'baozi', 'myriad', 'opinion', 'metaculus', 'smarkets', 'polymarket_us', 'gemini-titan', 'hyperliquid', 'mock', 'router'],
22862286
},
22872287
required: true,
22882288
description: 'The prediction market exchange to target.',

core/src/server/openapi.yaml

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -730,16 +730,7 @@ paths:
730730
summary: Fetch Order Books
731731
operationId: fetchOrderBooks
732732
parameters:
733-
- in: path
734-
name: exchange
735-
schema:
736-
type: string
737-
enum:
738-
- polymarket
739-
- kalshi
740-
- kalshi-demo
741-
required: true
742-
description: The prediction market exchange to target.
733+
- $ref: '#/components/parameters/ExchangeParam'
743734
requestBody:
744735
content:
745736
application/json:
@@ -2757,6 +2748,9 @@ components:
27572748
- metaculus
27582749
- smarkets
27592750
- polymarket_us
2751+
- gemini-titan
2752+
- hyperliquid
2753+
- mock
27602754
- router
27612755
required: true
27622756
description: The prediction market exchange to target.

docs/api-reference/openapi.json

Lines changed: 124 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2310,18 +2310,7 @@
23102310
"operationId": "fetchOrderBooks",
23112311
"parameters": [
23122312
{
2313-
"in": "path",
2314-
"name": "exchange",
2315-
"schema": {
2316-
"type": "string",
2317-
"enum": [
2318-
"polymarket",
2319-
"kalshi",
2320-
"kalshi-demo"
2321-
]
2322-
},
2323-
"required": true,
2324-
"description": "The prediction market exchange to target."
2313+
"$ref": "#/components/parameters/ExchangeParam"
23252314
}
23262315
],
23272316
"requestBody": {
@@ -2388,6 +2377,11 @@
23882377
"label": "Polymarket",
23892378
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Polymarket(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
23902379
},
2380+
{
2381+
"lang": "python",
2382+
"label": "Limitless",
2383+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Limitless(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2384+
},
23912385
{
23922386
"lang": "python",
23932387
"label": "Kalshi",
@@ -2398,11 +2392,71 @@
23982392
"label": "KalshiDemo",
23992393
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.KalshiDemo(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
24002394
},
2395+
{
2396+
"lang": "python",
2397+
"label": "Probable",
2398+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Probable(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2399+
},
2400+
{
2401+
"lang": "python",
2402+
"label": "Baozi",
2403+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Baozi(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2404+
},
2405+
{
2406+
"lang": "python",
2407+
"label": "Myriad",
2408+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Myriad(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2409+
},
2410+
{
2411+
"lang": "python",
2412+
"label": "Opinion",
2413+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Opinion(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2414+
},
2415+
{
2416+
"lang": "python",
2417+
"label": "Metaculus",
2418+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Metaculus(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2419+
},
2420+
{
2421+
"lang": "python",
2422+
"label": "Smarkets",
2423+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Smarkets(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2424+
},
2425+
{
2426+
"lang": "python",
2427+
"label": "PolymarketUs",
2428+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.PolymarketUs(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2429+
},
2430+
{
2431+
"lang": "python",
2432+
"label": "Hyperliquid",
2433+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Hyperliquid(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2434+
},
2435+
{
2436+
"lang": "python",
2437+
"label": "GeminiTitan",
2438+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.GeminiTitan(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2439+
},
2440+
{
2441+
"lang": "python",
2442+
"label": "Mock",
2443+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Mock(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2444+
},
2445+
{
2446+
"lang": "python",
2447+
"label": "Router",
2448+
"source": "import pmxt\n\n# API key optional — enables faster catalog-backed lookups\nexchange = pmxt.Router(\n pmxt_api_key=\"YOUR_PMXT_API_KEY\",\n)\nresult = exchange.fetch_order_books()"
2449+
},
24012450
{
24022451
"lang": "javascript",
24032452
"label": "Polymarket",
24042453
"source": "import { Polymarket } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Polymarket({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
24052454
},
2455+
{
2456+
"lang": "javascript",
2457+
"label": "Limitless",
2458+
"source": "import { Limitless } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Limitless({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2459+
},
24062460
{
24072461
"lang": "javascript",
24082462
"label": "Kalshi",
@@ -2412,6 +2466,61 @@
24122466
"lang": "javascript",
24132467
"label": "KalshiDemo",
24142468
"source": "import { KalshiDemo } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new KalshiDemo({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2469+
},
2470+
{
2471+
"lang": "javascript",
2472+
"label": "Probable",
2473+
"source": "import { Probable } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Probable({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2474+
},
2475+
{
2476+
"lang": "javascript",
2477+
"label": "Baozi",
2478+
"source": "import { Baozi } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Baozi({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2479+
},
2480+
{
2481+
"lang": "javascript",
2482+
"label": "Myriad",
2483+
"source": "import { Myriad } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Myriad({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2484+
},
2485+
{
2486+
"lang": "javascript",
2487+
"label": "Opinion",
2488+
"source": "import { Opinion } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Opinion({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2489+
},
2490+
{
2491+
"lang": "javascript",
2492+
"label": "Metaculus",
2493+
"source": "import { Metaculus } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Metaculus({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2494+
},
2495+
{
2496+
"lang": "javascript",
2497+
"label": "Smarkets",
2498+
"source": "import { Smarkets } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Smarkets({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2499+
},
2500+
{
2501+
"lang": "javascript",
2502+
"label": "PolymarketUs",
2503+
"source": "import { PolymarketUs } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new PolymarketUs({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2504+
},
2505+
{
2506+
"lang": "javascript",
2507+
"label": "Hyperliquid",
2508+
"source": "import { Hyperliquid } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Hyperliquid({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2509+
},
2510+
{
2511+
"lang": "javascript",
2512+
"label": "GeminiTitan",
2513+
"source": "import { GeminiTitan } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new GeminiTitan({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2514+
},
2515+
{
2516+
"lang": "javascript",
2517+
"label": "Mock",
2518+
"source": "import { Mock } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Mock({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
2519+
},
2520+
{
2521+
"lang": "javascript",
2522+
"label": "Router",
2523+
"source": "import { Router } from \"pmxtjs\";\n\n// API key optional — enables faster catalog-backed lookups\nconst exchange = new Router({\n pmxtApiKey: \"YOUR_PMXT_API_KEY\",\n});\nconst result = await exchange.fetchOrderBooks();"
24152524
}
24162525
]
24172526
}
@@ -9093,6 +9202,9 @@
90939202
"metaculus",
90949203
"smarkets",
90959204
"polymarket_us",
9205+
"gemini-titan",
9206+
"hyperliquid",
9207+
"mock",
90969208
"router"
90979209
]
90989210
},

sdks/python/pmxt/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"""
1818

1919
from .client import Exchange
20-
from ._exchanges import Polymarket, Limitless, Kalshi, KalshiDemo, Probable, Baozi, Myriad, Opinion, Metaculus, Smarkets, Polymarket_us, Hyperliquid, GeminiTitan, Mock, Router
20+
from ._exchanges import Polymarket, Limitless, Kalshi, KalshiDemo, Probable, Baozi, Myriad, Opinion, Metaculus, Smarkets, PolymarketUs, Hyperliquid, GeminiTitan, Mock, Router
2121
from .router import Router
2222
from .server_manager import ServerManager
2323
from .errors import (
@@ -143,7 +143,7 @@ def restart_server():
143143
"Opinion",
144144
"Metaculus",
145145
"Smarkets",
146-
"Polymarket_us",
146+
"PolymarketUs",
147147
"Hyperliquid",
148148
"GeminiTitan",
149149
"Mock",

sdks/python/pmxt/_exchanges.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -365,8 +365,8 @@ def __init__(
365365
)
366366

367367

368-
class Polymarket_us(Exchange):
369-
"""Polymarket_us exchange client."""
368+
class PolymarketUs(Exchange):
369+
"""PolymarketUs exchange client."""
370370

371371
def __init__(
372372
self,
@@ -377,7 +377,7 @@ def __init__(
377377
pmxt_api_key: Optional[str] = None,
378378
):
379379
"""
380-
Initialize Polymarket_us client.
380+
Initialize PolymarketUs client.
381381
382382
Args:
383383
api_key: API key for authentication (optional)

sdks/typescript/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@
1919
*/
2020

2121

22-
import { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS } from "./pmxt/client.js";
22+
import { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, Mock } from "./pmxt/client.js";
2323
import { Router } from "./pmxt/router.js";
2424
import { ServerManager } from "./pmxt/server-manager.js";
2525
import * as models from "./pmxt/models.js";
2626
import * as errors from "./pmxt/errors.js";
2727

28-
export { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, PolymarketOptions } from "./pmxt/client.js";
28+
export { Exchange, Polymarket, Kalshi, KalshiDemo, Limitless, Myriad, Probable, Baozi, Opinion, Metaculus, Smarkets, PolymarketUS, GeminiTitan, Hyperliquid, Mock, PolymarketOptions } from "./pmxt/client.js";
2929
export { Router } from "./pmxt/router.js";
3030
export { ServerManager } from "./pmxt/server-manager.js";
3131
export { MarketList } from "./pmxt/models.js";
@@ -79,6 +79,9 @@ const pmxt = {
7979
Metaculus,
8080
Smarkets,
8181
PolymarketUS,
82+
GeminiTitan,
83+
Hyperliquid,
84+
Mock,
8285
Router,
8386
ServerManager,
8487
server,

sdks/typescript/pmxt/client.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2675,3 +2675,51 @@ export class PolymarketUS extends Exchange {
26752675
super("polymarket_us", options);
26762676
}
26772677
}
2678+
2679+
/**
2680+
* Gemini Titan exchange client.
2681+
*
2682+
* @example
2683+
* ```typescript
2684+
* const titan = new GeminiTitan();
2685+
* const markets = await titan.fetchMarkets();
2686+
* ```
2687+
*/
2688+
export class GeminiTitan extends Exchange {
2689+
constructor(options: ExchangeOptions = {}) {
2690+
super("gemini-titan", options);
2691+
}
2692+
}
2693+
2694+
/**
2695+
* Hyperliquid exchange client.
2696+
*
2697+
* @example
2698+
* ```typescript
2699+
* const hl = new Hyperliquid();
2700+
* const markets = await hl.fetchMarkets();
2701+
* ```
2702+
*/
2703+
export class Hyperliquid extends Exchange {
2704+
constructor(options: ExchangeOptions = {}) {
2705+
super("hyperliquid", options);
2706+
}
2707+
}
2708+
2709+
/**
2710+
* Mock exchange client.
2711+
*
2712+
* Offline deterministic exchange for testing and development.
2713+
* No credentials required.
2714+
*
2715+
* @example
2716+
* ```typescript
2717+
* const mock = new Mock();
2718+
* const markets = await mock.fetchMarkets();
2719+
* ```
2720+
*/
2721+
export class Mock extends Exchange {
2722+
constructor(options: ExchangeOptions = {}) {
2723+
super("mock", options);
2724+
}
2725+
}

0 commit comments

Comments
 (0)