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,4 +1,4 @@
1
- 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, bg as HyperliquidApproveBuilderFeeOptions, bh as HyperliquidApproveBuilderFeeResponse, f as HyperliquidApproximateLiquidationParams, i as HyperliquidBuilderApprovalError, j as HyperliquidBuilderFee, bi as HyperliquidClearinghouseState, bj as HyperliquidDepositResult, k as HyperliquidEnvironment, l as HyperliquidExchangeClient, m as HyperliquidExchangeResponse, n as HyperliquidGrouping, o as HyperliquidGuardError, p as HyperliquidHip3Dex, r as HyperliquidInfoClient, s as HyperliquidMarketDescriptor, t as HyperliquidMarketDescriptorInput, u as HyperliquidMarketIdentityInput, x as HyperliquidOrderIntent, bk as HyperliquidOrderOptions, bl as HyperliquidOrderResponse, bm as HyperliquidOrderStatus, y as HyperliquidParsedSymbol, z as HyperliquidParsedSymbolKind, B as HyperliquidPlaceOrderWithTpSlOptions, C as HyperliquidPlacePositionTpSlOptions, I as HyperliquidResolvedMarketDescriptor, K as HyperliquidTermsError, M as HyperliquidTimeInForce, N as HyperliquidTpSlExecutionType, O as HyperliquidTpSlLegInput, P as HyperliquidTriggerOptions, Q as HyperliquidTriggerType, bn as HyperliquidWithdrawResult, R as MarketIdentity, bo as approveHyperliquidBuilderFee, S as batchModifyHyperliquidOrders, T as buildHyperliquidMarketDescriptor, U as buildHyperliquidMarketIdentity, V as buildHyperliquidProfileAssets, X as cancelAllHyperliquidOrders, Y as cancelHyperliquidOrders, Z as cancelHyperliquidOrdersByCloid, $ as cancelHyperliquidTwapOrder, a0 as computeHyperliquidMarketIocLimitPrice, bp as createHyperliquidActionHash, a1 as createHyperliquidSubAccount, a2 as createMonotonicNonceFactory, bq as depositToHyperliquidBridge, a3 as estimateHyperliquidLiquidationPrice, a4 as extractHyperliquidDex, a6 as fetchHyperliquidActiveAsset, a8 as fetchHyperliquidAssetCtxs, br as fetchHyperliquidClearinghouseState, 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, al as fetchHyperliquidPreTransferCheck, am as fetchHyperliquidResolvedInfoCoin, an as fetchHyperliquidResolvedMarketDescriptor, ao as fetchHyperliquidSizeDecimals, aq as fetchHyperliquidSpotAssetCtxs, ar as fetchHyperliquidSpotClearinghouseState, at as fetchHyperliquidSpotMeta, au as fetchHyperliquidSpotMetaAndAssetCtxs, ax as fetchHyperliquidTickSize, ay as fetchHyperliquidUserFills, az as fetchHyperliquidUserFillsByTime, aA as fetchHyperliquidUserRateLimit, aB as formatHyperliquidMarketablePrice, aD as formatHyperliquidPrice, aE as formatHyperliquidSize, bs as getHyperliquidMaxBuilderFee, aF as getKnownHyperliquidDexes, aG as isHyperliquidSpotSymbol, aH as modifyHyperliquidOrder, aI as normalizeHyperliquidBaseSymbol, aK as normalizeHyperliquidMetaSymbol, aL as normalizeSpotTokenName, aM as parseHyperliquidSymbol, aN as parseSpotPairSymbol, bt as placeHyperliquidOrder, aO as placeHyperliquidOrderWithTpSl, aP as placeHyperliquidPositionTpSl, aQ as placeHyperliquidTwapOrder, aR as reserveHyperliquidRequestWeight, aS as resolveHyperliquidAbstractionFromMode, aU as resolveHyperliquidLeverageMode, aV as resolveHyperliquidMarketDataCoin, aX as resolveHyperliquidOrderSymbol, aY as resolveHyperliquidPair, aZ as resolveHyperliquidPerpSymbol, a_ as resolveHyperliquidProfileChain, a$ as resolveHyperliquidSpotSymbol, b0 as resolveHyperliquidSymbol, b1 as resolveSpotMidCandidates, b2 as resolveSpotTokenCandidates, b4 as scheduleHyperliquidCancel, b5 as sendHyperliquidSpot, b6 as setHyperliquidAccountAbstractionMode, b7 as setHyperliquidPortfolioMargin, b8 as supportsHyperliquidBuilderFee, b9 as transferHyperliquidSubAccount, ba as updateHyperliquidIsolatedMargin, bb as updateHyperliquidLeverage, bu as withdrawFromHyperliquid } from '../../browser-Bieph3Ou.js';
1
+ 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, bg as HyperliquidApproveBuilderFeeOptions, bh as HyperliquidApproveBuilderFeeResponse, f as HyperliquidApproximateLiquidationParams, i as HyperliquidBuilderApprovalError, j as HyperliquidBuilderFee, bi as HyperliquidClearinghouseState, bj as HyperliquidDepositResult, k as HyperliquidEnvironment, l as HyperliquidExchangeClient, m as HyperliquidExchangeResponse, n as HyperliquidGrouping, o as HyperliquidGuardError, p as HyperliquidHip3Dex, r as HyperliquidInfoClient, s as HyperliquidMarketDescriptor, t as HyperliquidMarketDescriptorInput, u as HyperliquidMarketIdentityInput, x as HyperliquidOrderIntent, bk as HyperliquidOrderOptions, bl as HyperliquidOrderResponse, bm as HyperliquidOrderStatus, y as HyperliquidParsedSymbol, z as HyperliquidParsedSymbolKind, B as HyperliquidPlaceOrderWithTpSlOptions, C as HyperliquidPlacePositionTpSlOptions, I as HyperliquidResolvedMarketDescriptor, K as HyperliquidTermsError, M as HyperliquidTimeInForce, N as HyperliquidTpSlExecutionType, O as HyperliquidTpSlLegInput, P as HyperliquidTriggerOptions, Q as HyperliquidTriggerType, bn as HyperliquidWithdrawResult, R as MarketIdentity, bo as approveHyperliquidBuilderFee, S as batchModifyHyperliquidOrders, T as buildHyperliquidMarketDescriptor, U as buildHyperliquidMarketIdentity, V as buildHyperliquidProfileAssets, X as cancelAllHyperliquidOrders, Y as cancelHyperliquidOrders, Z as cancelHyperliquidOrdersByCloid, $ as cancelHyperliquidTwapOrder, a0 as computeHyperliquidMarketIocLimitPrice, bp as createHyperliquidActionHash, a1 as createHyperliquidSubAccount, a2 as createMonotonicNonceFactory, bq as depositToHyperliquidBridge, a3 as estimateHyperliquidLiquidationPrice, a4 as extractHyperliquidDex, a6 as fetchHyperliquidActiveAsset, a8 as fetchHyperliquidAssetCtxs, br as fetchHyperliquidClearinghouseState, 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, al as fetchHyperliquidPreTransferCheck, am as fetchHyperliquidResolvedInfoCoin, an as fetchHyperliquidResolvedMarketDescriptor, ao as fetchHyperliquidSizeDecimals, aq as fetchHyperliquidSpotAssetCtxs, ar as fetchHyperliquidSpotClearinghouseState, at as fetchHyperliquidSpotMeta, au as fetchHyperliquidSpotMetaAndAssetCtxs, ax as fetchHyperliquidTickSize, ay as fetchHyperliquidUserFills, az as fetchHyperliquidUserFillsByTime, aA as fetchHyperliquidUserRateLimit, aB as formatHyperliquidMarketablePrice, aD as formatHyperliquidPrice, aE as formatHyperliquidSize, bs as getHyperliquidMaxBuilderFee, aF as getKnownHyperliquidDexes, aG as isHyperliquidSpotSymbol, aH as modifyHyperliquidOrder, aI as normalizeHyperliquidBaseSymbol, aK as normalizeHyperliquidMetaSymbol, aL as normalizeSpotTokenName, aM as parseHyperliquidSymbol, aN as parseSpotPairSymbol, bt as placeHyperliquidOrder, aO as placeHyperliquidOrderWithTpSl, aP as placeHyperliquidPositionTpSl, aQ as placeHyperliquidTwapOrder, aR as reserveHyperliquidRequestWeight, aS as resolveHyperliquidAbstractionFromMode, aU as resolveHyperliquidLeverageMode, aV as resolveHyperliquidMarketDataCoin, aX as resolveHyperliquidOrderSymbol, aY as resolveHyperliquidPair, aZ as resolveHyperliquidPerpSymbol, a_ as resolveHyperliquidProfileChain, a$ as resolveHyperliquidSpotSymbol, b0 as resolveHyperliquidSymbol, b1 as resolveSpotMidCandidates, b2 as resolveSpotTokenCandidates, b4 as scheduleHyperliquidCancel, b5 as sendHyperliquidSpot, b6 as setHyperliquidAccountAbstractionMode, b7 as setHyperliquidPortfolioMargin, b8 as supportsHyperliquidBuilderFee, b9 as transferHyperliquidSubAccount, ba as updateHyperliquidIsolatedMargin, bb as updateHyperliquidLeverage, bu as withdrawFromHyperliquid } from '../../browser-DhzKDXIg.js';
2
2
  import '../../types-BaTmu0gS.js';
3
3
  import 'viem';
4
4
  import 'viem/accounts';
@@ -2734,10 +2734,24 @@ async function fetchHyperliquidSizeDecimals(params) {
2734
2734
  const match = universe.find(
2735
2735
  (entry) => normalizeHyperliquidMetaSymbol(entry?.name ?? "").toUpperCase() === normalized
2736
2736
  );
2737
- if (!match || typeof match.szDecimals !== "number") {
2737
+ if (match && typeof match.szDecimals === "number") {
2738
+ return match.szDecimals;
2739
+ }
2740
+ const parsed = parseHyperliquidSymbol(symbol);
2741
+ const dex = parsed?.dex ?? null;
2742
+ if (!dex) {
2743
+ throw new Error(`No size decimals found for ${symbol}.`);
2744
+ }
2745
+ const dexMetaAndCtxs = await fetchHyperliquidDexMetaAndAssetCtxs(environment, dex);
2746
+ const dexUniverse = Array.isArray(dexMetaAndCtxs?.[0]?.universe) ? dexMetaAndCtxs[0].universe : [];
2747
+ const dexMatch = dexUniverse.find(
2748
+ (entry) => normalizeHyperliquidMetaSymbol(entry?.name ?? "").toUpperCase() === normalized
2749
+ );
2750
+ const dexSizeDecimals = readHyperliquidNumber(dexMatch?.szDecimals);
2751
+ if (dexSizeDecimals == null) {
2738
2752
  throw new Error(`No size decimals found for ${symbol}.`);
2739
2753
  }
2740
- return match.szDecimals;
2754
+ return dexSizeDecimals;
2741
2755
  }
2742
2756
 
2743
2757
  // src/adapters/hyperliquid/order-utils.ts
@@ -2818,6 +2832,31 @@ var StringMath = {
2818
2832
  }
2819
2833
  return digits.join("").replace(/^0+(?=\d)/, "") || "0";
2820
2834
  },
2835
+ toPrecisionDirectional(value, precision, mode) {
2836
+ if (!Number.isInteger(precision) || precision < 1) {
2837
+ throw new RangeError("Precision must be a positive integer.");
2838
+ }
2839
+ if (/^-?0+(\.0*)?$/.test(value)) return "0";
2840
+ const negative = value.startsWith("-");
2841
+ const abs = negative ? value.slice(1) : value;
2842
+ const magnitude = StringMath.log10Floor(abs);
2843
+ const shiftAmount = precision - magnitude - 1;
2844
+ const shifted = StringMath.multiplyByPow10(abs, shiftAmount);
2845
+ const rounded = StringMath.roundInteger(shifted, mode);
2846
+ const shiftedBack = StringMath.multiplyByPow10(rounded, -shiftAmount);
2847
+ return normalizeDecimalString(negative ? `-${shiftedBack}` : shiftedBack);
2848
+ },
2849
+ toFixedDirectional(value, decimals, mode) {
2850
+ if (!Number.isInteger(decimals) || decimals < 0) {
2851
+ throw new RangeError("Decimals must be a non-negative integer.");
2852
+ }
2853
+ if (decimals === 0) {
2854
+ return normalizeDecimalString(StringMath.roundInteger(value, mode));
2855
+ }
2856
+ const shifted = StringMath.multiplyByPow10(value, decimals);
2857
+ const rounded = StringMath.roundInteger(shifted, mode);
2858
+ return normalizeDecimalString(StringMath.multiplyByPow10(rounded, -decimals));
2859
+ },
2821
2860
  toPrecisionTruncate(value, precision) {
2822
2861
  if (!Number.isInteger(precision) || precision < 1) {
2823
2862
  throw new RangeError("Precision must be a positive integer.");
@@ -2902,6 +2941,26 @@ function formatHyperliquidSize(size, szDecimals) {
2902
2941
  }
2903
2942
  return truncated;
2904
2943
  }
2944
+ function resolveSizeDecimals(value) {
2945
+ if (typeof value !== "number" || !Number.isFinite(value)) return 8;
2946
+ return Math.max(0, Math.min(8, Math.floor(value)));
2947
+ }
2948
+ function formatDirectionalHyperliquidPrice(price, params) {
2949
+ const normalized = price.toString().trim();
2950
+ assertNumberString(normalized);
2951
+ if (/^-?\d+$/.test(normalized)) {
2952
+ return normalizeDecimalString(normalized);
2953
+ }
2954
+ const szDecimals = resolveSizeDecimals(params.szDecimals);
2955
+ const maxDecimals2 = Math.max((params.marketType === "perp" ? 6 : 8) - szDecimals, 0);
2956
+ const decimalsAdjusted = StringMath.toFixedDirectional(normalized, maxDecimals2, params.mode);
2957
+ const sigFigAdjusted = StringMath.toPrecisionDirectional(
2958
+ decimalsAdjusted,
2959
+ 5,
2960
+ params.mode
2961
+ );
2962
+ return sigFigAdjusted === "0" ? null : sigFigAdjusted;
2963
+ }
2905
2964
  function roundHyperliquidPriceToTick(price, tick, side) {
2906
2965
  if (!Number.isFinite(tick.tickDecimals) || tick.tickDecimals < 0) {
2907
2966
  throw new Error("tick.tickDecimals must be a non-negative number.");
@@ -2924,13 +2983,25 @@ function roundHyperliquidPriceToTick(price, tick, side) {
2924
2983
  return formatScaledDecimal(rounded, tick.tickDecimals);
2925
2984
  }
2926
2985
  function formatHyperliquidMarketablePrice(params) {
2927
- const { mid, side, slippageBps, tick } = params;
2986
+ const { mid, side, slippageBps, tick, szDecimals, marketType = "perp" } = params;
2928
2987
  if (!Number.isFinite(mid) || mid <= 0) {
2929
2988
  throw new Error("mid must be a positive number.");
2930
2989
  }
2931
2990
  if (!Number.isFinite(slippageBps) || slippageBps < 0) {
2932
2991
  throw new Error("slippageBps must be a non-negative number.");
2933
2992
  }
2993
+ const adjustedMid = mid * (side === "buy" ? 1 + slippageBps / 1e4 : 1 - slippageBps / 1e4);
2994
+ if (typeof szDecimals === "number" && Number.isFinite(szDecimals)) {
2995
+ const formatted = formatDirectionalHyperliquidPrice(adjustedMid, {
2996
+ szDecimals,
2997
+ marketType,
2998
+ mode: side === "buy" ? "up" : "down"
2999
+ });
3000
+ if (!formatted) {
3001
+ throw new RangeError("Marketable price is too small and was truncated to 0.");
3002
+ }
3003
+ return formatted;
3004
+ }
2934
3005
  const midString = normalizeDecimalString(mid.toString());
2935
3006
  const baseDecimals = countDecimalPlaces(midString);
2936
3007
  const workDecimals = Math.max(baseDecimals + 4, tick?.tickDecimals ?? 0, 8);
@@ -2939,12 +3010,12 @@ function formatHyperliquidMarketablePrice(params) {
2939
3010
  side === "buy" ? 1e4 + slippageBps : 1e4 - slippageBps
2940
3011
  );
2941
3012
  const adjustedScaled = side === "buy" ? ceilDiv(scaledMid * slippageNumerator, 10000n) : scaledMid * slippageNumerator / 10000n;
2942
- const adjusted = formatScaledDecimal(adjustedScaled, workDecimals);
3013
+ const adjustedString = formatScaledDecimal(adjustedScaled, workDecimals);
2943
3014
  if (tick) {
2944
- return roundHyperliquidPriceToTick(adjusted, tick, side);
3015
+ return roundHyperliquidPriceToTick(adjustedString, tick, side);
2945
3016
  }
2946
3017
  const roundedScaled = scaleDecimalToInt(
2947
- adjusted,
3018
+ adjustedString,
2948
3019
  baseDecimals,
2949
3020
  side === "buy" ? "up" : "down"
2950
3021
  );
@@ -3047,7 +3118,9 @@ async function buildTpSlChildOrder(params) {
3047
3118
  mid: triggerPxNumeric,
3048
3119
  side: childSide,
3049
3120
  slippageBps: params.triggerMarketSlippageBps,
3050
- tick
3121
+ tick,
3122
+ szDecimals,
3123
+ marketType
3051
3124
  });
3052
3125
  return {
3053
3126
  symbol: params.symbol,