Gap
Three Limitless-specific streaming methods exist in core and are correctly implemented in the Python SDK, and are even documented in the TypeScript SDK's API_REFERENCE.md — but they are completely absent from the TypeScript SDK's client.ts. TypeScript users who follow the documented API will get a runtime TypeError: exchange.watchPrices is not a function.
Core
File: core/src/exchanges/limitless/index.ts
- Line 495:
async watchPrices(marketAddress: string, callback: (data: any) => void): Promise<void>
- Line 506:
async watchUserPositions(callback: (data: any) => void): Promise<void>
- Line 518:
async watchUserTransactions(callback: (data: any) => void): Promise<void>
These delegate to the Limitless WebSocket layer (core/src/exchanges/limitless/websocket.ts lines 206, 222, 244).
None of the three appear in core/src/server/method-verbs.json or core/src/server/openapi.yaml, but the server dispatches any method that exists on the exchange object dynamically (see core/src/server/app.ts line 413), so all three are reachable via POST /api/limitless/<method>.
TypeScript SDK
Documented in: sdks/typescript/API_REFERENCE.md
- Line 1178:
watchPrices — documented with full signature and usage example
- Line 1206:
watchUserPositions — documented with full signature and usage example
- Line 1233:
watchUserTransactions — documented with full signature and usage example
Implemented in: sdks/typescript/pmxt/client.ts — Missing — none of the three methods appear anywhere in this file.
Python SDK
File: sdks/python/pmxt/client.py
- Line 2180:
def watch_prices(self, market_address, callback=None) -> Dict[str, Any]
- Line 2216:
def watch_user_positions(self, callback=None) -> List[Position]
- Line 2253:
def watch_user_transactions(self, callback=None) -> Dict[str, Any]
All three are correctly implemented and call POST /api/{exchange}/watchPrices etc. on the sidecar.
Evidence
grep -n "watchPrices\|watchUserPositions\|watchUserTransactions" sdks/typescript/pmxt/client.ts returns no results.
grep -n "watchPrices\|watchUserPositions\|watchUserTransactions" sdks/typescript/API_REFERENCE.md returns lines 1178, 1206, 1233 with full documented signatures and examples.
- The same grep against
sdks/python/pmxt/client.py returns lines 2180, 2216, 2253.
The TypeScript SDK API reference is generated from or synchronized with the Python implementation, which means the docs were written but the corresponding TypeScript wrapper methods were never added to client.ts.
Impact
- TypeScript users who try to stream Limitless market prices, user positions, or user transaction feeds using the documented API get a runtime error, not a compile error, because the exchange base class uses
any typed params.
- The TypeScript SDK is inconsistent with both the documented API and the Python SDK for these three Limitless-specific capabilities.
- Users cannot monitor their Limitless positions or activity in real-time from TypeScript without dropping down to the raw
SidecarWsClient.
Found by automated Core-to-SDK surface coverage audit
Gap
Three Limitless-specific streaming methods exist in core and are correctly implemented in the Python SDK, and are even documented in the TypeScript SDK's
API_REFERENCE.md— but they are completely absent from the TypeScript SDK'sclient.ts. TypeScript users who follow the documented API will get a runtimeTypeError: exchange.watchPrices is not a function.Core
File:
core/src/exchanges/limitless/index.tsasync watchPrices(marketAddress: string, callback: (data: any) => void): Promise<void>async watchUserPositions(callback: (data: any) => void): Promise<void>async watchUserTransactions(callback: (data: any) => void): Promise<void>These delegate to the Limitless WebSocket layer (
core/src/exchanges/limitless/websocket.tslines 206, 222, 244).None of the three appear in
core/src/server/method-verbs.jsonorcore/src/server/openapi.yaml, but the server dispatches any method that exists on the exchange object dynamically (seecore/src/server/app.tsline 413), so all three are reachable viaPOST /api/limitless/<method>.TypeScript SDK
Documented in:
sdks/typescript/API_REFERENCE.mdwatchPrices— documented with full signature and usage examplewatchUserPositions— documented with full signature and usage examplewatchUserTransactions— documented with full signature and usage exampleImplemented in:
sdks/typescript/pmxt/client.ts— Missing — none of the three methods appear anywhere in this file.Python SDK
File:
sdks/python/pmxt/client.pydef watch_prices(self, market_address, callback=None) -> Dict[str, Any]def watch_user_positions(self, callback=None) -> List[Position]def watch_user_transactions(self, callback=None) -> Dict[str, Any]All three are correctly implemented and call
POST /api/{exchange}/watchPricesetc. on the sidecar.Evidence
grep -n "watchPrices\|watchUserPositions\|watchUserTransactions" sdks/typescript/pmxt/client.tsreturns no results.grep -n "watchPrices\|watchUserPositions\|watchUserTransactions" sdks/typescript/API_REFERENCE.mdreturns lines 1178, 1206, 1233 with full documented signatures and examples.sdks/python/pmxt/client.pyreturns lines 2180, 2216, 2253.The TypeScript SDK API reference is generated from or synchronized with the Python implementation, which means the docs were written but the corresponding TypeScript wrapper methods were never added to
client.ts.Impact
anytyped params.SidecarWsClient.Found by automated Core-to-SDK surface coverage audit