typescript
import {
extractHyperliquidDex,
fetchHyperliquidPerpMarketInfo,
fetchHyperliquidSpotMarketInfo,
fetchHyperliquidSpotTickSize,
fetchHyperliquidTickSize,
normalizeHyperliquidBaseSymbol,
resolveHyperliquidChainConfig,
resolveHyperliquidPair,
type HyperliquidEnvironment,
type HyperliquidPerpMarketInfo,
type HyperliquidSpotMarketInfo,
type HyperliquidTickSize,
} from "opentool/adapters/hyperliquid";
export type PerpMarketInfo = HyperliquidPerpMarketInfo;
export type SpotMarketInfo = HyperliquidSpotMarketInfo;
export type TickSize = HyperliquidTickSize;
export function resolveChainConfig(environment: HyperliquidEnvironment): {
chain: string;
rpcUrl?: string;
} {
return resolveHyperliquidChainConfig(environment);
}
export function resolvePerpSymbol(asset: string): string {
const raw = asset.trim();
if (!raw) return raw;
const dex = extractHyperliquidDex(raw);
const base = normalizeHyperliquidBaseSymbol(raw) ?? raw.toUpperCase();
return dex ? `${dex}:${base}` : base;
}
export function resolveSpotSymbol(asset: string): {
symbol: string;
base: string;
quote: string;
} {
const raw = asset.trim().toUpperCase();
if (!raw) {
return { symbol: raw, base: raw, quote: "USDC" };
}
const pair = resolveHyperliquidPair(raw);
if (pair) {
const [base, quote] = pair.split("/");
return {
symbol: pair,
base: base?.trim() ?? raw,
quote: quote?.trim() ?? "USDC",
};
}
const base = normalizeHyperliquidBaseSymbol(raw) ?? raw;
return { symbol: `${base}/USDC`, base, quote: "USDC" };
}
export async function fetchPerpMarketInfo(params: {
environment: HyperliquidEnvironment;
symbol: string;
}): Promise<PerpMarketInfo> {
return fetchHyperliquidPerpMarketInfo(params);
}
export async function fetchSpotMarketInfo(params: {
environment: HyperliquidEnvironment;
base: string;
quote: string;
}): Promise<SpotMarketInfo> {
return fetchHyperliquidSpotMarketInfo(params);
}
export { fetchHyperliquidTickSize, fetchHyperliquidSpotTickSize };