Skip to content

Python SDK SuiBets class omits wallet_address constructor parameter entirely — fetch_positions() is permanently unreachable #1691

Description

@realfishsam

Gap

Core's SuiBetsExchange.fetchPositions() requires credentials.walletAddress (throws AuthenticationError otherwise). The TypeScript SDK's SuiBets class has a walletAddress constructor option; the Python SDK's SuiBets class has no wallet_address parameter at all — unlike every other wallet-gated exchange class in the same file. This is strictly worse than the TypeScript SDK, and distinct from the already-filed "TypeScript SDK SuiBetsOptions adds walletAddress but not a baseUrl credential field; Python SDK has the same gap" issue, which is about a different, single missing field (baseUrl) — not the total absence of wallet_address.

Core

core/src/exchanges/suibets/index.ts:137-148 requires credentials.walletAddress; SuibetsCredentials.walletAddress is defined at suibets/index.ts:15-20.

TypeScript SDK

Present — sdks/typescript/pmxt/client.ts:3523-3571 (SuiBetsOptions.walletAddress, plus a getCredentials() override that injects it into the sidecar payload).

Python SDK

Missing — sdks/python/pmxt/_exchanges.py:495-516. SuiBets.__init__ signature is (base_url=None, auto_start_server=None, pmxt_api_key=None) — no wallet_address parameter, and it is never passed to super().__init__(). By contrast, every other Python exchange class with wallet-gated reads in the same file accepts and forwards wallet_address: Polymarket (line 26/54), Limitless (87/111), Myriad (269/287), Opinion (307/331), Hunch (554/572).

Evidence

Grepped wallet_address across _exchanges.py and confirmed by class boundary (grep -n "^class \|wallet_address") that SuiBets (class starts line 495, next class Rain starts line 520) is the only wallet-relevant exchange class with zero wallet_address occurrences in its body.

Impact

There is no way to construct a Python SuiBets client that can ever call fetch_positions() — the attribute is never set on the instance in the first place, which is strictly worse than the TypeScript SDK, where at least the constructor plumbing exists (even though the sidecar dispatch gate, tracked separately, still blocks it end-to-end).


Found by automated Core-to-SDK surface coverage audit

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions