Skip to content

HyperliquidExchangeOptions.testnet missing from both SDK Hyperliquid constructors #855

@realfishsam

Description

@realfishsam

Gap

HyperliquidExchange in core accepts a testnet: boolean option to point the exchange at Hyperliquid's testnet rather than mainnet. Neither SDK exposes this option in the Hyperliquid constructor, making testnet usage impossible through the SDK.

Core

core/src/exchanges/hyperliquid/index.ts:42

export interface HyperliquidExchangeOptions {
    credentials?: ExchangeCredentials;
    testnet?: boolean;
}

core/src/exchanges/hyperliquid/index.ts:48

constructor(credentials?: ExchangeCredentials | HyperliquidExchangeOptions)

TypeScript SDK

sdks/typescript/pmxt/client.ts:2818

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

ExchangeOptions has no testnet field.

Python SDK

sdks/python/pmxt/_exchanges.py:404

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

No testnet parameter.

Evidence

HyperliquidExchangeOptions.testnet is defined in hyperliquid/index.ts:42 and routes all exchange calls to Hyperliquid's testnet endpoints when true.

Impact

Developers cannot test Hyperliquid integrations against the testnet via the SDK. All SDK Hyperliquid calls are permanently routed to mainnet. Integration testing that requires real order lifecycle (create/cancel) must use mainnet or bypass the SDK entirely.


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