Skip to content

OpinionExchangeOptions.walletAddress missing from both SDK Opinion constructors #853

@realfishsam

Description

@realfishsam

Gap

OpinionExchange in core accepts a walletAddress option at construction time, stored on the exchange instance and used by account-level methods (fetchPositions, fetchMyTrades). Neither SDK exposes walletAddress as a constructor parameter for the Opinion class, making wallet-gated operations inaccessible.

Core

core/src/exchanges/opinion/index.ts:47

export interface OpinionExchangeOptions {
    credentials?: ExchangeCredentials;
    walletAddress?: string;
    websocket?: OpinionWebSocketConfig;
}

core/src/exchanges/opinion/index.ts:71

constructor(options?: ExchangeCredentials | OpinionExchangeOptions)

The walletAddress field is stored on the exchange instance and used when calling fetchPositions() (line 302) and fetchMyTrades() (line 296).

TypeScript SDK

sdks/typescript/pmxt/client.ts:2732

class Opinion extends Exchange {
    constructor(options?: ExchangeOptions) { super("opinion", options); }
}

ExchangeOptions has no walletAddress field.

Python SDK

sdks/python/pmxt/_exchanges.py:280

class Opinion(Exchange):
    def __init__(
        self,
        api_key: Optional[str] = None,
        private_key: Optional[str] = None,
        proxy_address: Optional[str] = None,
        base_url: Optional[str] = None,
        auto_start_server: Optional[bool] = None,
        pmxt_api_key: Optional[str] = None,
    ): ...

No wallet_address parameter.

Evidence

OpinionExchangeOptions.walletAddress is defined in opinion/index.ts:47. The field is consumed by the exchange for wallet-scoped reads (fetchPositions, fetchMyTrades). Both SDK constructors omit it.

Impact

SDK users cannot pass a wallet address when constructing an Opinion exchange instance. Calls to opinion.fetchPositions() and opinion.fetchMyTrades() will either return empty results or throw, depending on how the exchange handles a missing wallet address. The option is irretrievable after construction.


Found by automated Core-to-SDK surface coverage audit

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    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