@nktkas/hyperliquid
Version:
Hyperliquid API SDK for all major JS runtimes, written in TypeScript.
98 lines • 4.1 kB
TypeScript
import type { HttpTransport } from "../transport/http/mod.js";
import type { WebSocketTransport } from "../transport/websocket/mod.js";
/** Options for creating a {@link SymbolConverter} instance. */
export interface SymbolConverterOptions {
/** Transport instance to use for API requests. */
transport: HttpTransport | WebSocketTransport;
/** Optional dex support: array of dex names, true for all dexs, or false/undefined to skip. */
dexs?: string[] | boolean;
}
/**
* Utility class for converting asset symbols to their corresponding IDs and size decimals.
* Supports perpetuals, spot markets, and optional builder dexs.
*
* @example
* ```ts
* import { HttpTransport } from "@nktkas/hyperliquid";
* import { SymbolConverter } from "@nktkas/hyperliquid/utils";
*
* const transport = new HttpTransport(); // or `WebSocketTransport`
* const converter = await SymbolConverter.create({ transport });
*
* // By default, dexs are not loaded; specify them when creating an instance
* // const converter = await SymbolConverter.create({ transport, dexs: ["test"] });
*
* const btcId = converter.getAssetId("BTC"); // perpetual → 0
* const hypeUsdcId = converter.getAssetId("HYPE/USDC"); // spot market → 10107
* const dexAbcId = converter.getAssetId("test:ABC"); // builder dex (if enabled) → 110000
*
* const btcSzDecimals = converter.getSzDecimals("BTC"); // perpetual → 5
* const hypeUsdcSzDecimals = converter.getSzDecimals("HYPE/USDC"); // spot market → 2
* const dexAbcSzDecimals = converter.getSzDecimals("test:ABC"); // builder dex (if enabled) → 0
*
* const spotPairId = converter.getSpotPairId("HFUN/USDC"); // → "@2"
* ```
*
* @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/asset-ids
*/
export declare class SymbolConverter {
private readonly transport;
private readonly dexOption;
private readonly nameToAssetId;
private readonly nameToSzDecimals;
private readonly nameToSpotPairId;
private constructor();
/**
* Create and initialize a SymbolConverter instance.
*
* @param options - Configuration options including transport and optional dex support.
*
* @returns Initialized SymbolConverter instance.
*
* @example
* ```ts
* import { HttpTransport } from "@nktkas/hyperliquid";
* import { SymbolConverter } from "@nktkas/hyperliquid/utils";
*
* const transport = new HttpTransport(); // or `WebSocketTransport`
* const converter = await SymbolConverter.create({ transport });
* ```
*/
static create(options: SymbolConverterOptions): Promise<SymbolConverter>;
/**
* Reload asset mappings from the API.
* Useful for refreshing data when new assets are added.
*/
reload(): Promise<void>;
private processDefaultPerps;
private processBuilderDexs;
private processBuilderDexResult;
private processSpotAssets;
/**
* Get asset ID for a coin.
* - For Perpetuals, use the coin name (e.g., "BTC").
* - For Spot markets, use the "BASE/QUOTE" format (e.g., "HYPE/USDC").
* - For Builder Dex assets, use the "DEX_NAME:ASSET_NAME" format (e.g., "test:ABC").
*
* @example "BTC" → 0, "HYPE/USDC" → 10107, "test:ABC" → 110000
*/
getAssetId(name: string): number | undefined;
/**
* Get size decimals for a coin.
* - For Perpetuals, use the coin name (e.g., "BTC").
* - For Spot markets, use the "BASE/QUOTE" format (e.g., "HYPE/USDC").
* - For Builder Dex assets, use the "DEX_NAME:ASSET_NAME" format (e.g., "test:ABC").
*
* @example "BTC" → 5, "HYPE/USDC" → 2, "test:ABC" → 0
*/
getSzDecimals(name: string): number | undefined;
/**
* Get spot pair ID for info endpoints and subscriptions (e.g., l2book, trades).
*
* Accepts spot markets in the "BASE/QUOTE" format (e.g., "HFUN/USDC").
*
* @example "HFUN/USDC" → "@2", "PURR/USDC" → "PURR/USDC"
*/
getSpotPairId(name: string): string | undefined;
}
//# sourceMappingURL=symbolConverter.d.ts.map