typescript
import {
extractHyperliquidOrderIds,
fetchHyperliquidSizeDecimals,
fetchHyperliquidSpotAccountValue,
formatHyperliquidMarketablePrice,
formatHyperliquidOrderSize,
isHyperliquidSpotSymbol,
readHyperliquidAccountValue,
readHyperliquidPerpPositionSize,
readHyperliquidSpotBalanceSize,
resolveHyperliquidChainConfig,
resolveHyperliquidSymbol as resolveSharedHyperliquidSymbol,
type HyperliquidEnvironment,
type HyperliquidOrderResponse,
} from "opentool/adapters/hyperliquid";
export const DEFAULT_SLIPPAGE_BPS = 50;
export function isSpotSymbol(symbol: string): boolean {
return isHyperliquidSpotSymbol(symbol);
}
export async function fetchSizeDecimals(
symbol: string,
environment: HyperliquidEnvironment
) {
return fetchHyperliquidSizeDecimals({
symbol,
environment,
});
}
export async function fetchSpotAccountValue(params: {
environment: HyperliquidEnvironment;
balances: unknown;
}): Promise<number | null> {
return fetchHyperliquidSpotAccountValue(params);
}
export function formatOrderSize(value: number, szDecimals: number): string {
return formatHyperliquidOrderSize(value, szDecimals);
}
export function resolveHyperliquidSymbol(asset: string, override?: string): string {
return resolveSharedHyperliquidSymbol(asset, override);
}
export function resolveChainConfig(environment: HyperliquidEnvironment): {
chain: string;
rpcUrl?: string;
} {
return resolveHyperliquidChainConfig(environment);
}
export function formatMarketablePrice(
mid: number,
side: "buy" | "sell",
slippageBps: number
): string {
return formatHyperliquidMarketablePrice({
mid,
side,
slippageBps,
});
}
export function extractOrderIds(responses: HyperliquidOrderResponse[]): {
cloids: string[];
oids: string[];
} {
return extractHyperliquidOrderIds(
responses as unknown as Array<{
response?: { data?: { statuses?: Array<Record<string, unknown>> } };
}>
);
}
export function readAccountValue(payload: unknown): number | null {
return readHyperliquidAccountValue(payload);
}
export function readPositionSize(payload: unknown, symbol: string): number {
return readHyperliquidPerpPositionSize(payload, symbol, { prefixMatch: true });
}
export function readSpotPositionSize(payload: unknown, symbol: string): number {
return readHyperliquidSpotBalanceSize(payload, symbol);
}