opentool 0.19.5 → 0.19.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { h as WalletFullContext } from '../../types-BaTmu0gS.js';
2
2
  import { StoreOptions, StoreResponse } from '../../store/index.js';
3
- import { k as HyperliquidEnvironment, bc as NonceSource, x as HyperliquidOrderIntent, n as HyperliquidGrouping, bd as toApiDecimal, be as createL1ActionHash, bf as splitSignature } from '../../browser-Bieph3Ou.js';
4
- export { D as DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS, a as DEFAULT_HYPERLIQUID_TPSL_MARKET_SLIPPAGE_BPS, H as HYPERLIQUID_HIP3_DEXES, b as HyperliquidAbstraction, c as HyperliquidAccountMode, d as HyperliquidActiveAsset, e as HyperliquidApiError, f as HyperliquidApproximateLiquidationParams, g as HyperliquidBar, h as HyperliquidBarResolution, i as HyperliquidBuilderApprovalError, j as HyperliquidBuilderFee, l as HyperliquidExchangeClient, m as HyperliquidExchangeResponse, o as HyperliquidGuardError, p as HyperliquidHip3Dex, q as HyperliquidIndicatorBar, r as HyperliquidInfoClient, s as HyperliquidMarketDescriptor, t as HyperliquidMarketDescriptorInput, u as HyperliquidMarketIdentityInput, v as HyperliquidMarketType, w as HyperliquidOpenOrderLike, y as HyperliquidParsedSymbol, z as HyperliquidParsedSymbolKind, A as HyperliquidPerpMarketInfo, B as HyperliquidPlaceOrderWithTpSlOptions, C as HyperliquidPlacePositionTpSlOptions, E as HyperliquidProfileAsset, F as HyperliquidProfileAssetInput, G as HyperliquidProfileChain, I as HyperliquidResolvedMarketDescriptor, J as HyperliquidSpotMarketInfo, K as HyperliquidTermsError, L as HyperliquidTickSize, M as HyperliquidTimeInForce, N as HyperliquidTpSlExecutionType, O as HyperliquidTpSlLegInput, P as HyperliquidTriggerOptions, Q as HyperliquidTriggerType, R as MarketIdentity, _ as __hyperliquidMarketDataInternals, S as batchModifyHyperliquidOrders, T as buildHyperliquidMarketDescriptor, U as buildHyperliquidMarketIdentity, V as buildHyperliquidProfileAssets, W as buildHyperliquidSpotUsdPriceMap, X as cancelAllHyperliquidOrders, Y as cancelHyperliquidOrders, Z as cancelHyperliquidOrdersByCloid, $ as cancelHyperliquidTwapOrder, a0 as computeHyperliquidMarketIocLimitPrice, a1 as createHyperliquidSubAccount, a2 as createMonotonicNonceFactory, a3 as estimateHyperliquidLiquidationPrice, a4 as extractHyperliquidDex, a5 as extractHyperliquidOrderIds, a6 as fetchHyperliquidActiveAsset, a7 as fetchHyperliquidAllMids, a8 as fetchHyperliquidAssetCtxs, a9 as fetchHyperliquidBars, aa as fetchHyperliquidDexMeta, ab as fetchHyperliquidDexMetaAndAssetCtxs, ac as fetchHyperliquidFrontendOpenOrders, ad as fetchHyperliquidFrontendOpenOrdersAcrossDexes, ae as fetchHyperliquidHistoricalOrders, af as fetchHyperliquidMeta, ag as fetchHyperliquidMetaAndAssetCtxs, ah as fetchHyperliquidOpenOrders, ai as fetchHyperliquidOpenOrdersAcrossDexes, aj as fetchHyperliquidOrderStatus, ak as fetchHyperliquidPerpMarketInfo, al as fetchHyperliquidPreTransferCheck, am as fetchHyperliquidResolvedInfoCoin, an as fetchHyperliquidResolvedMarketDescriptor, ao as fetchHyperliquidSizeDecimals, ap as fetchHyperliquidSpotAccountValue, aq as fetchHyperliquidSpotAssetCtxs, ar as fetchHyperliquidSpotClearinghouseState, as as fetchHyperliquidSpotMarketInfo, at as fetchHyperliquidSpotMeta, au as fetchHyperliquidSpotMetaAndAssetCtxs, av as fetchHyperliquidSpotTickSize, aw as fetchHyperliquidSpotUsdPriceMap, ax as fetchHyperliquidTickSize, ay as fetchHyperliquidUserFills, az as fetchHyperliquidUserFillsByTime, aA as fetchHyperliquidUserRateLimit, aB as formatHyperliquidMarketablePrice, aC as formatHyperliquidOrderSize, aD as formatHyperliquidPrice, aE as formatHyperliquidSize, aF as getKnownHyperliquidDexes, aG as isHyperliquidSpotSymbol, aH as modifyHyperliquidOrder, aI as normalizeHyperliquidBaseSymbol, aJ as normalizeHyperliquidIndicatorBars, aK as normalizeHyperliquidMetaSymbol, aL as normalizeSpotTokenName, aM as parseHyperliquidSymbol, aN as parseSpotPairSymbol, aO as placeHyperliquidOrderWithTpSl, aP as placeHyperliquidPositionTpSl, aQ as placeHyperliquidTwapOrder, aR as reserveHyperliquidRequestWeight, aS as resolveHyperliquidAbstractionFromMode, aT as resolveHyperliquidErrorDetail, aU as resolveHyperliquidLeverageMode, aV as resolveHyperliquidMarketDataCoin, aW as resolveHyperliquidOrderRef, aX as resolveHyperliquidOrderSymbol, aY as resolveHyperliquidPair, aZ as resolveHyperliquidPerpSymbol, a_ as resolveHyperliquidProfileChain, a$ as resolveHyperliquidSpotSymbol, b0 as resolveHyperliquidSymbol, b1 as resolveSpotMidCandidates, b2 as resolveSpotTokenCandidates, b3 as roundHyperliquidPriceToTick, b4 as scheduleHyperliquidCancel, b5 as sendHyperliquidSpot, b6 as setHyperliquidAccountAbstractionMode, b7 as setHyperliquidPortfolioMargin, b8 as supportsHyperliquidBuilderFee, b9 as transferHyperliquidSubAccount, ba as updateHyperliquidIsolatedMargin, bb as updateHyperliquidLeverage } from '../../browser-Bieph3Ou.js';
3
+ import { k as HyperliquidEnvironment, bc as NonceSource, x as HyperliquidOrderIntent, n as HyperliquidGrouping, bd as toApiDecimal, be as createL1ActionHash, bf as splitSignature } from '../../browser-DhzKDXIg.js';
4
+ export { D as DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS, a as DEFAULT_HYPERLIQUID_TPSL_MARKET_SLIPPAGE_BPS, H as HYPERLIQUID_HIP3_DEXES, b as HyperliquidAbstraction, c as HyperliquidAccountMode, d as HyperliquidActiveAsset, e as HyperliquidApiError, f as HyperliquidApproximateLiquidationParams, g as HyperliquidBar, h as HyperliquidBarResolution, i as HyperliquidBuilderApprovalError, j as HyperliquidBuilderFee, l as HyperliquidExchangeClient, m as HyperliquidExchangeResponse, o as HyperliquidGuardError, p as HyperliquidHip3Dex, q as HyperliquidIndicatorBar, r as HyperliquidInfoClient, s as HyperliquidMarketDescriptor, t as HyperliquidMarketDescriptorInput, u as HyperliquidMarketIdentityInput, v as HyperliquidMarketType, w as HyperliquidOpenOrderLike, y as HyperliquidParsedSymbol, z as HyperliquidParsedSymbolKind, A as HyperliquidPerpMarketInfo, B as HyperliquidPlaceOrderWithTpSlOptions, C as HyperliquidPlacePositionTpSlOptions, E as HyperliquidProfileAsset, F as HyperliquidProfileAssetInput, G as HyperliquidProfileChain, I as HyperliquidResolvedMarketDescriptor, J as HyperliquidSpotMarketInfo, K as HyperliquidTermsError, L as HyperliquidTickSize, M as HyperliquidTimeInForce, N as HyperliquidTpSlExecutionType, O as HyperliquidTpSlLegInput, P as HyperliquidTriggerOptions, Q as HyperliquidTriggerType, R as MarketIdentity, _ as __hyperliquidMarketDataInternals, S as batchModifyHyperliquidOrders, T as buildHyperliquidMarketDescriptor, U as buildHyperliquidMarketIdentity, V as buildHyperliquidProfileAssets, W as buildHyperliquidSpotUsdPriceMap, X as cancelAllHyperliquidOrders, Y as cancelHyperliquidOrders, Z as cancelHyperliquidOrdersByCloid, $ as cancelHyperliquidTwapOrder, a0 as computeHyperliquidMarketIocLimitPrice, a1 as createHyperliquidSubAccount, a2 as createMonotonicNonceFactory, a3 as estimateHyperliquidLiquidationPrice, a4 as extractHyperliquidDex, a5 as extractHyperliquidOrderIds, a6 as fetchHyperliquidActiveAsset, a7 as fetchHyperliquidAllMids, a8 as fetchHyperliquidAssetCtxs, a9 as fetchHyperliquidBars, aa as fetchHyperliquidDexMeta, ab as fetchHyperliquidDexMetaAndAssetCtxs, ac as fetchHyperliquidFrontendOpenOrders, ad as fetchHyperliquidFrontendOpenOrdersAcrossDexes, ae as fetchHyperliquidHistoricalOrders, af as fetchHyperliquidMeta, ag as fetchHyperliquidMetaAndAssetCtxs, ah as fetchHyperliquidOpenOrders, ai as fetchHyperliquidOpenOrdersAcrossDexes, aj as fetchHyperliquidOrderStatus, ak as fetchHyperliquidPerpMarketInfo, al as fetchHyperliquidPreTransferCheck, am as fetchHyperliquidResolvedInfoCoin, an as fetchHyperliquidResolvedMarketDescriptor, ao as fetchHyperliquidSizeDecimals, ap as fetchHyperliquidSpotAccountValue, aq as fetchHyperliquidSpotAssetCtxs, ar as fetchHyperliquidSpotClearinghouseState, as as fetchHyperliquidSpotMarketInfo, at as fetchHyperliquidSpotMeta, au as fetchHyperliquidSpotMetaAndAssetCtxs, av as fetchHyperliquidSpotTickSize, aw as fetchHyperliquidSpotUsdPriceMap, ax as fetchHyperliquidTickSize, ay as fetchHyperliquidUserFills, az as fetchHyperliquidUserFillsByTime, aA as fetchHyperliquidUserRateLimit, aB as formatHyperliquidMarketablePrice, aC as formatHyperliquidOrderSize, aD as formatHyperliquidPrice, aE as formatHyperliquidSize, aF as getKnownHyperliquidDexes, aG as isHyperliquidSpotSymbol, aH as modifyHyperliquidOrder, aI as normalizeHyperliquidBaseSymbol, aJ as normalizeHyperliquidIndicatorBars, aK as normalizeHyperliquidMetaSymbol, aL as normalizeSpotTokenName, aM as parseHyperliquidSymbol, aN as parseSpotPairSymbol, aO as placeHyperliquidOrderWithTpSl, aP as placeHyperliquidPositionTpSl, aQ as placeHyperliquidTwapOrder, aR as reserveHyperliquidRequestWeight, aS as resolveHyperliquidAbstractionFromMode, aT as resolveHyperliquidErrorDetail, aU as resolveHyperliquidLeverageMode, aV as resolveHyperliquidMarketDataCoin, aW as resolveHyperliquidOrderRef, aX as resolveHyperliquidOrderSymbol, aY as resolveHyperliquidPair, aZ as resolveHyperliquidPerpSymbol, a_ as resolveHyperliquidProfileChain, a$ as resolveHyperliquidSpotSymbol, b0 as resolveHyperliquidSymbol, b1 as resolveSpotMidCandidates, b2 as resolveSpotTokenCandidates, b3 as roundHyperliquidPriceToTick, b4 as scheduleHyperliquidCancel, b5 as sendHyperliquidSpot, b6 as setHyperliquidAccountAbstractionMode, b7 as setHyperliquidPortfolioMargin, b8 as supportsHyperliquidBuilderFee, b9 as transferHyperliquidSubAccount, ba as updateHyperliquidIsolatedMargin, bb as updateHyperliquidLeverage } from '../../browser-DhzKDXIg.js';
5
5
  import 'viem';
6
6
  import 'viem/accounts';
7
7
 
@@ -23,12 +23,15 @@ type HyperliquidTradePlan = {
23
23
  reduceOnly: boolean;
24
24
  targetSize: number;
25
25
  };
26
- interface HyperliquidTargetSizeConfig {
27
- allocationMode: "percent_equity" | "fixed";
26
+ type HyperliquidTargetSizeConfig = {
27
+ allocationMode: "fixed";
28
+ amountUsd?: number;
29
+ } | {
30
+ allocationMode: "percent_equity";
28
31
  percentOfEquity: number;
29
32
  maxPercentOfEquity: number;
30
33
  amountUsd?: number;
31
- }
34
+ };
32
35
  interface HyperliquidTargetSizeExecution {
33
36
  size?: number;
34
37
  }
@@ -2422,6 +2422,31 @@ var StringMath = {
2422
2422
  }
2423
2423
  return digits.join("").replace(/^0+(?=\d)/, "") || "0";
2424
2424
  },
2425
+ toPrecisionDirectional(value, precision, mode) {
2426
+ if (!Number.isInteger(precision) || precision < 1) {
2427
+ throw new RangeError("Precision must be a positive integer.");
2428
+ }
2429
+ if (/^-?0+(\.0*)?$/.test(value)) return "0";
2430
+ const negative = value.startsWith("-");
2431
+ const abs = negative ? value.slice(1) : value;
2432
+ const magnitude = StringMath.log10Floor(abs);
2433
+ const shiftAmount = precision - magnitude - 1;
2434
+ const shifted = StringMath.multiplyByPow10(abs, shiftAmount);
2435
+ const rounded = StringMath.roundInteger(shifted, mode);
2436
+ const shiftedBack = StringMath.multiplyByPow10(rounded, -shiftAmount);
2437
+ return normalizeDecimalString(negative ? `-${shiftedBack}` : shiftedBack);
2438
+ },
2439
+ toFixedDirectional(value, decimals, mode) {
2440
+ if (!Number.isInteger(decimals) || decimals < 0) {
2441
+ throw new RangeError("Decimals must be a non-negative integer.");
2442
+ }
2443
+ if (decimals === 0) {
2444
+ return normalizeDecimalString(StringMath.roundInteger(value, mode));
2445
+ }
2446
+ const shifted = StringMath.multiplyByPow10(value, decimals);
2447
+ const rounded = StringMath.roundInteger(shifted, mode);
2448
+ return normalizeDecimalString(StringMath.multiplyByPow10(rounded, -decimals));
2449
+ },
2425
2450
  toPrecisionTruncate(value, precision) {
2426
2451
  if (!Number.isInteger(precision) || precision < 1) {
2427
2452
  throw new RangeError("Precision must be a positive integer.");
@@ -2514,6 +2539,26 @@ function formatHyperliquidOrderSize(value, szDecimals) {
2514
2539
  return "0";
2515
2540
  }
2516
2541
  }
2542
+ function resolveSizeDecimals(value) {
2543
+ if (typeof value !== "number" || !Number.isFinite(value)) return 8;
2544
+ return Math.max(0, Math.min(8, Math.floor(value)));
2545
+ }
2546
+ function formatDirectionalHyperliquidPrice(price, params) {
2547
+ const normalized = price.toString().trim();
2548
+ assertNumberString(normalized);
2549
+ if (/^-?\d+$/.test(normalized)) {
2550
+ return normalizeDecimalString(normalized);
2551
+ }
2552
+ const szDecimals = resolveSizeDecimals(params.szDecimals);
2553
+ const maxDecimals2 = Math.max((params.marketType === "perp" ? 6 : 8) - szDecimals, 0);
2554
+ const decimalsAdjusted = StringMath.toFixedDirectional(normalized, maxDecimals2, params.mode);
2555
+ const sigFigAdjusted = StringMath.toPrecisionDirectional(
2556
+ decimalsAdjusted,
2557
+ 5,
2558
+ params.mode
2559
+ );
2560
+ return sigFigAdjusted === "0" ? null : sigFigAdjusted;
2561
+ }
2517
2562
  function roundHyperliquidPriceToTick(price, tick, side) {
2518
2563
  if (!Number.isFinite(tick.tickDecimals) || tick.tickDecimals < 0) {
2519
2564
  throw new Error("tick.tickDecimals must be a non-negative number.");
@@ -2536,13 +2581,25 @@ function roundHyperliquidPriceToTick(price, tick, side) {
2536
2581
  return formatScaledDecimal(rounded, tick.tickDecimals);
2537
2582
  }
2538
2583
  function formatHyperliquidMarketablePrice(params) {
2539
- const { mid, side, slippageBps, tick } = params;
2584
+ const { mid, side, slippageBps, tick, szDecimals, marketType = "perp" } = params;
2540
2585
  if (!Number.isFinite(mid) || mid <= 0) {
2541
2586
  throw new Error("mid must be a positive number.");
2542
2587
  }
2543
2588
  if (!Number.isFinite(slippageBps) || slippageBps < 0) {
2544
2589
  throw new Error("slippageBps must be a non-negative number.");
2545
2590
  }
2591
+ const adjustedMid = mid * (side === "buy" ? 1 + slippageBps / 1e4 : 1 - slippageBps / 1e4);
2592
+ if (typeof szDecimals === "number" && Number.isFinite(szDecimals)) {
2593
+ const formatted = formatDirectionalHyperliquidPrice(adjustedMid, {
2594
+ szDecimals,
2595
+ marketType,
2596
+ mode: side === "buy" ? "up" : "down"
2597
+ });
2598
+ if (!formatted) {
2599
+ throw new RangeError("Marketable price is too small and was truncated to 0.");
2600
+ }
2601
+ return formatted;
2602
+ }
2546
2603
  const midString = normalizeDecimalString(mid.toString());
2547
2604
  const baseDecimals = countDecimalPlaces(midString);
2548
2605
  const workDecimals = Math.max(baseDecimals + 4, tick?.tickDecimals ?? 0, 8);
@@ -2551,12 +2608,12 @@ function formatHyperliquidMarketablePrice(params) {
2551
2608
  side === "buy" ? 1e4 + slippageBps : 1e4 - slippageBps
2552
2609
  );
2553
2610
  const adjustedScaled = side === "buy" ? ceilDiv(scaledMid * slippageNumerator, 10000n) : scaledMid * slippageNumerator / 10000n;
2554
- const adjusted = formatScaledDecimal(adjustedScaled, workDecimals);
2611
+ const adjustedString = formatScaledDecimal(adjustedScaled, workDecimals);
2555
2612
  if (tick) {
2556
- return roundHyperliquidPriceToTick(adjusted, tick, side);
2613
+ return roundHyperliquidPriceToTick(adjustedString, tick, side);
2557
2614
  }
2558
2615
  const roundedScaled = scaleDecimalToInt(
2559
- adjusted,
2616
+ adjustedString,
2560
2617
  baseDecimals,
2561
2618
  side === "buy" ? "up" : "down"
2562
2619
  );
@@ -3206,10 +3263,24 @@ async function fetchHyperliquidSizeDecimals(params) {
3206
3263
  const match = universe.find(
3207
3264
  (entry) => normalizeHyperliquidMetaSymbol(entry?.name ?? "").toUpperCase() === normalized
3208
3265
  );
3209
- if (!match || typeof match.szDecimals !== "number") {
3266
+ if (match && typeof match.szDecimals === "number") {
3267
+ return match.szDecimals;
3268
+ }
3269
+ const parsed = parseHyperliquidSymbol(symbol);
3270
+ const dex = parsed?.dex ?? null;
3271
+ if (!dex) {
3272
+ throw new Error(`No size decimals found for ${symbol}.`);
3273
+ }
3274
+ const dexMetaAndCtxs = await fetchHyperliquidDexMetaAndAssetCtxs(environment, dex);
3275
+ const dexUniverse = Array.isArray(dexMetaAndCtxs?.[0]?.universe) ? dexMetaAndCtxs[0].universe : [];
3276
+ const dexMatch = dexUniverse.find(
3277
+ (entry) => normalizeHyperliquidMetaSymbol(entry?.name ?? "").toUpperCase() === normalized
3278
+ );
3279
+ const dexSizeDecimals = readHyperliquidNumber(dexMatch?.szDecimals);
3280
+ if (dexSizeDecimals == null) {
3210
3281
  throw new Error(`No size decimals found for ${symbol}.`);
3211
3282
  }
3212
- return match.szDecimals;
3283
+ return dexSizeDecimals;
3213
3284
  }
3214
3285
  function buildHyperliquidSpotUsdPriceMap(params) {
3215
3286
  const universe = params.meta.universe ?? [];
@@ -3537,7 +3608,9 @@ async function buildTpSlChildOrder(params) {
3537
3608
  mid: triggerPxNumeric,
3538
3609
  side: childSide,
3539
3610
  slippageBps: params.triggerMarketSlippageBps,
3540
- tick
3611
+ tick,
3612
+ szDecimals,
3613
+ marketType
3541
3614
  });
3542
3615
  return {
3543
3616
  symbol: params.symbol,