opentool 0.19.6 → 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.
@@ -500,6 +500,8 @@ declare function formatHyperliquidMarketablePrice(params: {
500
500
  side: "buy" | "sell";
501
501
  slippageBps: number;
502
502
  tick?: HyperliquidTickSize | null;
503
+ szDecimals?: number | null;
504
+ marketType?: HyperliquidMarketType;
503
505
  }): string;
504
506
  declare function extractHyperliquidOrderIds(responses: HyperliquidOrderResponseLike[]): {
505
507
  cloids: string[];
package/dist/index.d.ts CHANGED
@@ -11,7 +11,7 @@ export { AgentDigestRequest, MyToolsResponse, StoreAction, StoreError, StoreEven
11
11
  export { BACKTEST_DECISION_MODE, BacktestDecisionRequest, BacktestDecisionSeriesInput, BacktestMode, BacktestResolution, ResolvedBacktestWindow, backtestDecisionRequestSchema, buildBacktestDecisionSeriesInput, estimateCountBack, parseTimeToSeconds, resolutionToSeconds, resolveBacktestAccountValueUsd, resolveBacktestMode, resolveBacktestWindow } from './backtest/index.js';
12
12
  import { ZodSchema } from 'zod';
13
13
  export { C as ChainMetadata, a as ChainReference, b as ChainTokenMap, H as Hex, c as HexAddress, N as NonceSource, R as RpcProviderOptions, d as RpcUrlResolver, T as TokenMetadata, e as TurnkeyOptions, f as TurnkeySignWith, W as WalletBaseContext, g as WalletContext, h as WalletFullContext, i as WalletOptions, j as WalletOptionsBase, k as WalletPrivateKeyOptions, l as WalletProviderType, m as WalletReadonlyContext, n as WalletReadonlyOptions, o as WalletRegistry, p as WalletSendTransactionParams, q as WalletSignerContext, r as WalletTransferParams, s as WalletTurnkeyOptions } from './types-BaTmu0gS.js';
14
- 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, k as HyperliquidEnvironment, l as HyperliquidExchangeClient, m as HyperliquidExchangeResponse, n as HyperliquidGrouping, 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, x as HyperliquidOrderIntent, 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';
14
+ 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, k as HyperliquidEnvironment, l as HyperliquidExchangeClient, m as HyperliquidExchangeResponse, n as HyperliquidGrouping, 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, x as HyperliquidOrderIntent, 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';
15
15
  import 'viem';
16
16
  import 'viem/accounts';
17
17
 
package/dist/index.js CHANGED
@@ -3669,6 +3669,31 @@ var StringMath = {
3669
3669
  }
3670
3670
  return digits.join("").replace(/^0+(?=\d)/, "") || "0";
3671
3671
  },
3672
+ toPrecisionDirectional(value, precision, mode) {
3673
+ if (!Number.isInteger(precision) || precision < 1) {
3674
+ throw new RangeError("Precision must be a positive integer.");
3675
+ }
3676
+ if (/^-?0+(\.0*)?$/.test(value)) return "0";
3677
+ const negative = value.startsWith("-");
3678
+ const abs = negative ? value.slice(1) : value;
3679
+ const magnitude = StringMath.log10Floor(abs);
3680
+ const shiftAmount = precision - magnitude - 1;
3681
+ const shifted = StringMath.multiplyByPow10(abs, shiftAmount);
3682
+ const rounded = StringMath.roundInteger(shifted, mode);
3683
+ const shiftedBack = StringMath.multiplyByPow10(rounded, -shiftAmount);
3684
+ return normalizeDecimalString(negative ? `-${shiftedBack}` : shiftedBack);
3685
+ },
3686
+ toFixedDirectional(value, decimals, mode) {
3687
+ if (!Number.isInteger(decimals) || decimals < 0) {
3688
+ throw new RangeError("Decimals must be a non-negative integer.");
3689
+ }
3690
+ if (decimals === 0) {
3691
+ return normalizeDecimalString(StringMath.roundInteger(value, mode));
3692
+ }
3693
+ const shifted = StringMath.multiplyByPow10(value, decimals);
3694
+ const rounded = StringMath.roundInteger(shifted, mode);
3695
+ return normalizeDecimalString(StringMath.multiplyByPow10(rounded, -decimals));
3696
+ },
3672
3697
  toPrecisionTruncate(value, precision) {
3673
3698
  if (!Number.isInteger(precision) || precision < 1) {
3674
3699
  throw new RangeError("Precision must be a positive integer.");
@@ -3761,6 +3786,26 @@ function formatHyperliquidOrderSize(value, szDecimals) {
3761
3786
  return "0";
3762
3787
  }
3763
3788
  }
3789
+ function resolveSizeDecimals(value) {
3790
+ if (typeof value !== "number" || !Number.isFinite(value)) return 8;
3791
+ return Math.max(0, Math.min(8, Math.floor(value)));
3792
+ }
3793
+ function formatDirectionalHyperliquidPrice(price, params) {
3794
+ const normalized = price.toString().trim();
3795
+ assertNumberString(normalized);
3796
+ if (/^-?\d+$/.test(normalized)) {
3797
+ return normalizeDecimalString(normalized);
3798
+ }
3799
+ const szDecimals = resolveSizeDecimals(params.szDecimals);
3800
+ const maxDecimals2 = Math.max((params.marketType === "perp" ? 6 : 8) - szDecimals, 0);
3801
+ const decimalsAdjusted = StringMath.toFixedDirectional(normalized, maxDecimals2, params.mode);
3802
+ const sigFigAdjusted = StringMath.toPrecisionDirectional(
3803
+ decimalsAdjusted,
3804
+ 5,
3805
+ params.mode
3806
+ );
3807
+ return sigFigAdjusted === "0" ? null : sigFigAdjusted;
3808
+ }
3764
3809
  function roundHyperliquidPriceToTick(price, tick, side) {
3765
3810
  if (!Number.isFinite(tick.tickDecimals) || tick.tickDecimals < 0) {
3766
3811
  throw new Error("tick.tickDecimals must be a non-negative number.");
@@ -3783,13 +3828,25 @@ function roundHyperliquidPriceToTick(price, tick, side) {
3783
3828
  return formatScaledDecimal(rounded, tick.tickDecimals);
3784
3829
  }
3785
3830
  function formatHyperliquidMarketablePrice(params) {
3786
- const { mid, side, slippageBps, tick } = params;
3831
+ const { mid, side, slippageBps, tick, szDecimals, marketType = "perp" } = params;
3787
3832
  if (!Number.isFinite(mid) || mid <= 0) {
3788
3833
  throw new Error("mid must be a positive number.");
3789
3834
  }
3790
3835
  if (!Number.isFinite(slippageBps) || slippageBps < 0) {
3791
3836
  throw new Error("slippageBps must be a non-negative number.");
3792
3837
  }
3838
+ const adjustedMid = mid * (side === "buy" ? 1 + slippageBps / 1e4 : 1 - slippageBps / 1e4);
3839
+ if (typeof szDecimals === "number" && Number.isFinite(szDecimals)) {
3840
+ const formatted = formatDirectionalHyperliquidPrice(adjustedMid, {
3841
+ szDecimals,
3842
+ marketType,
3843
+ mode: side === "buy" ? "up" : "down"
3844
+ });
3845
+ if (!formatted) {
3846
+ throw new RangeError("Marketable price is too small and was truncated to 0.");
3847
+ }
3848
+ return formatted;
3849
+ }
3793
3850
  const midString = normalizeDecimalString(mid.toString());
3794
3851
  const baseDecimals = countDecimalPlaces(midString);
3795
3852
  const workDecimals = Math.max(baseDecimals + 4, tick?.tickDecimals ?? 0, 8);
@@ -3798,12 +3855,12 @@ function formatHyperliquidMarketablePrice(params) {
3798
3855
  side === "buy" ? 1e4 + slippageBps : 1e4 - slippageBps
3799
3856
  );
3800
3857
  const adjustedScaled = side === "buy" ? ceilDiv(scaledMid * slippageNumerator, 10000n) : scaledMid * slippageNumerator / 10000n;
3801
- const adjusted = formatScaledDecimal(adjustedScaled, workDecimals);
3858
+ const adjustedString = formatScaledDecimal(adjustedScaled, workDecimals);
3802
3859
  if (tick) {
3803
- return roundHyperliquidPriceToTick(adjusted, tick, side);
3860
+ return roundHyperliquidPriceToTick(adjustedString, tick, side);
3804
3861
  }
3805
3862
  const roundedScaled = scaleDecimalToInt(
3806
- adjusted,
3863
+ adjustedString,
3807
3864
  baseDecimals,
3808
3865
  side === "buy" ? "up" : "down"
3809
3866
  );
@@ -4798,7 +4855,9 @@ async function buildTpSlChildOrder(params) {
4798
4855
  mid: triggerPxNumeric,
4799
4856
  side: childSide,
4800
4857
  slippageBps: params.triggerMarketSlippageBps,
4801
- tick
4858
+ tick,
4859
+ szDecimals,
4860
+ marketType
4802
4861
  });
4803
4862
  return {
4804
4863
  symbol: params.symbol,