opentool 0.19.3 → 0.19.4

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, bf as HyperliquidApproveBuilderFeeOptions, bg as HyperliquidApproveBuilderFeeResponse, f as HyperliquidApproximateLiquidationParams, i as HyperliquidBuilderApprovalError, j as HyperliquidBuilderFee, bh as HyperliquidClearinghouseState, bi 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, bj as HyperliquidOrderOptions, bk as HyperliquidOrderResponse, bl 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, bm as HyperliquidWithdrawResult, R as MarketIdentity, bn 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, bo as createHyperliquidActionHash, a1 as createHyperliquidSubAccount, a2 as createMonotonicNonceFactory, bp as depositToHyperliquidBridge, a3 as estimateHyperliquidLiquidationPrice, a4 as extractHyperliquidDex, a6 as fetchHyperliquidActiveAsset, a8 as fetchHyperliquidAssetCtxs, bq 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 fetchHyperliquidResolvedMarketDescriptor, an as fetchHyperliquidSizeDecimals, ap as fetchHyperliquidSpotAssetCtxs, aq as fetchHyperliquidSpotClearinghouseState, as as fetchHyperliquidSpotMeta, at as fetchHyperliquidSpotMetaAndAssetCtxs, aw as fetchHyperliquidTickSize, ax as fetchHyperliquidUserFills, ay as fetchHyperliquidUserFillsByTime, az as fetchHyperliquidUserRateLimit, aA as formatHyperliquidMarketablePrice, aC as formatHyperliquidPrice, aD as formatHyperliquidSize, br as getHyperliquidMaxBuilderFee, aE as getKnownHyperliquidDexes, aF as isHyperliquidSpotSymbol, aG as modifyHyperliquidOrder, aH as normalizeHyperliquidBaseSymbol, aJ as normalizeHyperliquidMetaSymbol, aK as normalizeSpotTokenName, aL as parseHyperliquidSymbol, aM as parseSpotPairSymbol, bs as placeHyperliquidOrder, aN as placeHyperliquidOrderWithTpSl, aO as placeHyperliquidPositionTpSl, aP as placeHyperliquidTwapOrder, aQ as reserveHyperliquidRequestWeight, aR as resolveHyperliquidAbstractionFromMode, aT as resolveHyperliquidLeverageMode, aU as resolveHyperliquidMarketDataCoin, aW as resolveHyperliquidOrderSymbol, aX as resolveHyperliquidPair, aY as resolveHyperliquidPerpSymbol, aZ as resolveHyperliquidProfileChain, a_ as resolveHyperliquidSpotSymbol, a$ as resolveHyperliquidSymbol, b0 as resolveSpotMidCandidates, b1 as resolveSpotTokenCandidates, b3 as scheduleHyperliquidCancel, b4 as sendHyperliquidSpot, b5 as setHyperliquidAccountAbstractionMode, b6 as setHyperliquidPortfolioMargin, b7 as supportsHyperliquidBuilderFee, b8 as transferHyperliquidSubAccount, b9 as updateHyperliquidIsolatedMargin, ba as updateHyperliquidLeverage, bt as withdrawFromHyperliquid } from '../../browser-CnpOj35m.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, bf as HyperliquidApproveBuilderFeeOptions, bg as HyperliquidApproveBuilderFeeResponse, f as HyperliquidApproximateLiquidationParams, i as HyperliquidBuilderApprovalError, j as HyperliquidBuilderFee, bh as HyperliquidClearinghouseState, bi 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, bj as HyperliquidOrderOptions, bk as HyperliquidOrderResponse, bl 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, bm as HyperliquidWithdrawResult, R as MarketIdentity, bn 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, bo as createHyperliquidActionHash, a1 as createHyperliquidSubAccount, a2 as createMonotonicNonceFactory, bp as depositToHyperliquidBridge, a3 as estimateHyperliquidLiquidationPrice, a4 as extractHyperliquidDex, a6 as fetchHyperliquidActiveAsset, a8 as fetchHyperliquidAssetCtxs, bq 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 fetchHyperliquidResolvedMarketDescriptor, an as fetchHyperliquidSizeDecimals, ap as fetchHyperliquidSpotAssetCtxs, aq as fetchHyperliquidSpotClearinghouseState, as as fetchHyperliquidSpotMeta, at as fetchHyperliquidSpotMetaAndAssetCtxs, aw as fetchHyperliquidTickSize, ax as fetchHyperliquidUserFills, ay as fetchHyperliquidUserFillsByTime, az as fetchHyperliquidUserRateLimit, aA as formatHyperliquidMarketablePrice, aC as formatHyperliquidPrice, aD as formatHyperliquidSize, br as getHyperliquidMaxBuilderFee, aE as getKnownHyperliquidDexes, aF as isHyperliquidSpotSymbol, aG as modifyHyperliquidOrder, aH as normalizeHyperliquidBaseSymbol, aJ as normalizeHyperliquidMetaSymbol, aK as normalizeSpotTokenName, aL as parseHyperliquidSymbol, aM as parseSpotPairSymbol, bs as placeHyperliquidOrder, aN as placeHyperliquidOrderWithTpSl, aO as placeHyperliquidPositionTpSl, aP as placeHyperliquidTwapOrder, aQ as reserveHyperliquidRequestWeight, aR as resolveHyperliquidAbstractionFromMode, aT as resolveHyperliquidLeverageMode, aU as resolveHyperliquidMarketDataCoin, aW as resolveHyperliquidOrderSymbol, aX as resolveHyperliquidPair, aY as resolveHyperliquidPerpSymbol, aZ as resolveHyperliquidProfileChain, a_ as resolveHyperliquidSpotSymbol, a$ as resolveHyperliquidSymbol, b0 as resolveSpotMidCandidates, b1 as resolveSpotTokenCandidates, b3 as scheduleHyperliquidCancel, b4 as sendHyperliquidSpot, b5 as setHyperliquidAccountAbstractionMode, b6 as setHyperliquidPortfolioMargin, b7 as supportsHyperliquidBuilderFee, b8 as transferHyperliquidSubAccount, b9 as updateHyperliquidIsolatedMargin, ba as updateHyperliquidLeverage, bt as withdrawFromHyperliquid } from '../../browser-DxqvU3eA.js';
2
2
  import '../../types-BaTmu0gS.js';
3
3
  import 'viem';
4
4
  import 'viem/accounts';
@@ -1050,6 +1050,16 @@ function mergeHyperliquidOpenOrders(batches) {
1050
1050
  }
1051
1051
  return [...merged.values()];
1052
1052
  }
1053
+ function applyHyperliquidOpenOrderDexContext(orders, dex) {
1054
+ const resolvedDex = typeof dex === "string" && dex.trim().length > 0 ? dex.trim().toLowerCase() : null;
1055
+ return orders.map((order) => {
1056
+ const existingDex = typeof order.dex === "string" && order.dex.trim().length > 0 ? order.dex.trim().toLowerCase() : null;
1057
+ return {
1058
+ ...order,
1059
+ dex: existingDex ?? resolvedDex
1060
+ };
1061
+ });
1062
+ }
1053
1063
  function readNumber(value) {
1054
1064
  if (typeof value === "number") {
1055
1065
  return Number.isFinite(value) ? value : null;
@@ -1165,19 +1175,21 @@ async function fetchHyperliquidSpotAssetCtxs(environment = "mainnet") {
1165
1175
  }
1166
1176
  async function fetchHyperliquidOpenOrders(params) {
1167
1177
  const env = params.environment ?? "mainnet";
1168
- return postInfo(env, {
1178
+ const orders = await postInfo(env, {
1169
1179
  type: "openOrders",
1170
1180
  user: normalizeAddress(params.user),
1171
1181
  ...params.dex ? { dex: params.dex.trim().toLowerCase() } : {}
1172
1182
  });
1183
+ return applyHyperliquidOpenOrderDexContext(orders, params.dex);
1173
1184
  }
1174
1185
  async function fetchHyperliquidFrontendOpenOrders(params) {
1175
1186
  const env = params.environment ?? "mainnet";
1176
- return postInfo(env, {
1187
+ const orders = await postInfo(env, {
1177
1188
  type: "frontendOpenOrders",
1178
1189
  user: normalizeAddress(params.user),
1179
1190
  ...params.dex ? { dex: params.dex.trim().toLowerCase() } : {}
1180
1191
  });
1192
+ return applyHyperliquidOpenOrderDexContext(orders, params.dex);
1181
1193
  }
1182
1194
  async function fetchHyperliquidOrderStatus(params) {
1183
1195
  const env = params.environment ?? "mainnet";
@@ -1288,6 +1300,8 @@ async function fetchHyperliquidActiveAsset(params) {
1288
1300
  }
1289
1301
 
1290
1302
  // src/adapters/hyperliquid/exchange.ts
1303
+ var DEFAULT_HYPERLIQUID_LEVERAGE_VERIFY_ATTEMPTS = 4;
1304
+ var DEFAULT_HYPERLIQUID_LEVERAGE_VERIFY_DELAY_MS = 250;
1291
1305
  function resolveRequiredExchangeNonce(options) {
1292
1306
  if (typeof options.nonce === "number") {
1293
1307
  return options.nonce;
@@ -1298,6 +1312,51 @@ function resolveRequiredExchangeNonce(options) {
1298
1312
  }
1299
1313
  return resolved;
1300
1314
  }
1315
+ function sleep(ms) {
1316
+ return new Promise((resolve) => {
1317
+ setTimeout(resolve, ms);
1318
+ });
1319
+ }
1320
+ function normalizeReportedLeverageMode(value) {
1321
+ if (!value) return null;
1322
+ const normalized = value.trim().toLowerCase();
1323
+ if (normalized === "cross" || normalized === "isolated") {
1324
+ return normalized;
1325
+ }
1326
+ return null;
1327
+ }
1328
+ function resolveLeverageVerificationUser(options) {
1329
+ return normalizeAddress(
1330
+ options.input.verifyUser ?? options.vaultAddress ?? options.wallet.address
1331
+ );
1332
+ }
1333
+ async function verifyAppliedHyperliquidLeverage(params) {
1334
+ const attempts = typeof params.attempts === "number" && Number.isFinite(params.attempts) && params.attempts > 0 ? Math.max(1, Math.floor(params.attempts)) : DEFAULT_HYPERLIQUID_LEVERAGE_VERIFY_ATTEMPTS;
1335
+ const delayMs = typeof params.delayMs === "number" && Number.isFinite(params.delayMs) && params.delayMs >= 0 ? Math.max(0, Math.floor(params.delayMs)) : DEFAULT_HYPERLIQUID_LEVERAGE_VERIFY_DELAY_MS;
1336
+ let lastReportedLeverage = null;
1337
+ let lastReportedMode = null;
1338
+ for (let index = 0; index < attempts; index += 1) {
1339
+ const asset = await fetchHyperliquidActiveAsset({
1340
+ environment: params.environment,
1341
+ user: params.user,
1342
+ symbol: params.symbol
1343
+ });
1344
+ lastReportedLeverage = asset.leverage;
1345
+ lastReportedMode = normalizeReportedLeverageMode(asset.leverageType);
1346
+ const leverageMatches = asset.leverage === params.leverage;
1347
+ const modeMatches = lastReportedMode == null || lastReportedMode === params.leverageMode;
1348
+ if (leverageMatches && modeMatches) {
1349
+ return asset;
1350
+ }
1351
+ if (index < attempts - 1 && delayMs > 0) {
1352
+ await sleep(delayMs);
1353
+ }
1354
+ }
1355
+ const reportedLabel = lastReportedLeverage != null ? `${lastReportedLeverage}x${lastReportedMode ? ` ${lastReportedMode}` : ""}` : "unknown leverage";
1356
+ throw new Error(
1357
+ `Hyperliquid still reports ${reportedLabel} for ${params.symbol} after requesting ${params.leverage}x ${params.leverageMode}.`
1358
+ );
1359
+ }
1301
1360
  var HyperliquidExchangeClient = class {
1302
1361
  constructor(args) {
1303
1362
  this.wallet = args.wallet;
@@ -1647,7 +1706,20 @@ async function updateHyperliquidLeverage(options) {
1647
1706
  isCross: options.input.leverageMode === "cross",
1648
1707
  leverage: options.input.leverage
1649
1708
  };
1650
- return submitExchangeAction(options, action);
1709
+ const response = await submitExchangeAction(options, action);
1710
+ if (options.input.verifyApplied === false) {
1711
+ return response;
1712
+ }
1713
+ await verifyAppliedHyperliquidLeverage({
1714
+ environment: env,
1715
+ user: resolveLeverageVerificationUser(options),
1716
+ symbol: options.input.symbol,
1717
+ leverage: options.input.leverage,
1718
+ leverageMode: options.input.leverageMode,
1719
+ ...typeof options.input.verifyAttempts === "number" ? { attempts: options.input.verifyAttempts } : {},
1720
+ ...typeof options.input.verifyDelayMs === "number" ? { delayMs: options.input.verifyDelayMs } : {}
1721
+ });
1722
+ return response;
1651
1723
  }
1652
1724
  async function updateHyperliquidIsolatedMargin(options) {
1653
1725
  assertSymbol(options.input.symbol);
@@ -2877,6 +2949,13 @@ function toPositiveNumber(value, label) {
2877
2949
  function normalizeExecutionType(value) {
2878
2950
  return value ?? "market";
2879
2951
  }
2952
+ function assertSupportedParentOrder(parent) {
2953
+ if (parent.reduceOnly) {
2954
+ throw new Error(
2955
+ "Reduce-only parent orders are not supported with attached TP/SL. Use placeHyperliquidPositionTpSl for existing positions."
2956
+ );
2957
+ }
2958
+ }
2880
2959
  function resolveTriggerDirection(params) {
2881
2960
  const isLong = params.parentSide === "buy";
2882
2961
  if (params.leg === "tp") {
@@ -2984,6 +3063,7 @@ async function buildAttachedTpSlOrders(params) {
2984
3063
  return legs.filter((entry) => Boolean(entry));
2985
3064
  }
2986
3065
  async function placeHyperliquidOrderWithTpSl(options) {
3066
+ assertSupportedParentOrder(options.parent);
2987
3067
  const env = options.environment ?? "mainnet";
2988
3068
  const childOrders = await buildAttachedTpSlOrders({
2989
3069
  symbol: options.parent.symbol,