BloxwapHyperliquid SDK
Guides

Tree-shaking

The SDK is organized into modular entry points so bundlers can eliminate unused code.

Entry points

Entry pointContains
@bloxwap/hyperliquidTransports, clients, error classes
@bloxwap/hyperliquid/signingSigning functions, wallet utilities
@bloxwap/hyperliquid/utilsformatPrice, formatSize, SymbolConverter
@bloxwap/hyperliquid/api/infoInfo methods, individually importable
@bloxwap/hyperliquid/api/exchangeExchange methods, individually importable
@bloxwap/hyperliquid/api/subscriptionSubscription methods, individually importable
@bloxwap/hyperliquid/api/explorerExplorer methods, individually importable

Each entry point has independent dependencies — e.g., importing @bloxwap/hyperliquid/utils doesn't pull in signing or validation code.

Direct method imports

Instead of creating a client, import individual methods directly: each import pulls in only that method, its validation schema, and the transport logic — not the full client with all its methods.

Each method accepts the same config as its client as the first argument:

Info methods use InfoClient config:

import { HttpTransport } from "@bloxwap/hyperliquid";
import { allMids } from "@bloxwap/hyperliquid/api/info";

const transport = new HttpTransport();
const result = await allMids({ transport });

Exchange methods use ExchangeClient config:

import { HttpTransport } from "@bloxwap/hyperliquid";
import { order } from "@bloxwap/hyperliquid/api/exchange";
import { privateKeyToAccount } from "viem/accounts";

const transport = new HttpTransport();
const wallet = privateKeyToAccount("0x...");

await order(
  { transport, wallet },
  {
    orders: [{
      a: 0,
      b: true,
      p: "50000",
      s: "0.01",
      r: false,
      t: { limit: { tif: "Gtc" } },
    }],
    grouping: "na",
  },
);

Subscription methods use SubscriptionClient config:

import { WebSocketTransport } from "@bloxwap/hyperliquid";
import { allMids } from "@bloxwap/hyperliquid/api/subscription";

const transport = new WebSocketTransport();
const subscription = await allMids({ transport }, (data) => {
  console.log(data.mids);
});

Explorer methods use ExplorerClient config:

import { HttpTransport } from "@bloxwap/hyperliquid";
import { blockDetails } from "@bloxwap/hyperliquid/api/explorer";

const transport = new HttpTransport();
const block = await blockDetails({ transport }, { height: 123 });
Edit this page on GitHub

On this page