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,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, bb as NonceSource, x as HyperliquidOrderIntent, n as HyperliquidGrouping, bc as toApiDecimal, bd as createL1ActionHash, be as splitSignature } from '../../browser-CnpOj35m.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 fetchHyperliquidResolvedMarketDescriptor, an as fetchHyperliquidSizeDecimals, ao as fetchHyperliquidSpotAccountValue, ap as fetchHyperliquidSpotAssetCtxs, aq as fetchHyperliquidSpotClearinghouseState, ar as fetchHyperliquidSpotMarketInfo, as as fetchHyperliquidSpotMeta, at as fetchHyperliquidSpotMetaAndAssetCtxs, au as fetchHyperliquidSpotTickSize, av as fetchHyperliquidSpotUsdPriceMap, aw as fetchHyperliquidTickSize, ax as fetchHyperliquidUserFills, ay as fetchHyperliquidUserFillsByTime, az as fetchHyperliquidUserRateLimit, aA as formatHyperliquidMarketablePrice, aB as formatHyperliquidOrderSize, aC as formatHyperliquidPrice, aD as formatHyperliquidSize, aE as getKnownHyperliquidDexes, aF as isHyperliquidSpotSymbol, aG as modifyHyperliquidOrder, aH as normalizeHyperliquidBaseSymbol, aI as normalizeHyperliquidIndicatorBars, aJ as normalizeHyperliquidMetaSymbol, aK as normalizeSpotTokenName, aL as parseHyperliquidSymbol, aM as parseSpotPairSymbol, aN as placeHyperliquidOrderWithTpSl, aO as placeHyperliquidPositionTpSl, aP as placeHyperliquidTwapOrder, aQ as reserveHyperliquidRequestWeight, aR as resolveHyperliquidAbstractionFromMode, aS as resolveHyperliquidErrorDetail, aT as resolveHyperliquidLeverageMode, aU as resolveHyperliquidMarketDataCoin, aV as resolveHyperliquidOrderRef, aW as resolveHyperliquidOrderSymbol, aX as resolveHyperliquidPair, aY as resolveHyperliquidPerpSymbol, aZ as resolveHyperliquidProfileChain, a_ as resolveHyperliquidSpotSymbol, a$ as resolveHyperliquidSymbol, b0 as resolveSpotMidCandidates, b1 as resolveSpotTokenCandidates, b2 as roundHyperliquidPriceToTick, b3 as scheduleHyperliquidCancel, b4 as sendHyperliquidSpot, b5 as setHyperliquidAccountAbstractionMode, b6 as setHyperliquidPortfolioMargin, b7 as supportsHyperliquidBuilderFee, b8 as transferHyperliquidSubAccount, b9 as updateHyperliquidIsolatedMargin, ba as updateHyperliquidLeverage } from '../../browser-CnpOj35m.js';
3
+ import { k as HyperliquidEnvironment, bb as NonceSource, x as HyperliquidOrderIntent, n as HyperliquidGrouping, bc as toApiDecimal, bd as createL1ActionHash, be as splitSignature } from '../../browser-DxqvU3eA.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 fetchHyperliquidResolvedMarketDescriptor, an as fetchHyperliquidSizeDecimals, ao as fetchHyperliquidSpotAccountValue, ap as fetchHyperliquidSpotAssetCtxs, aq as fetchHyperliquidSpotClearinghouseState, ar as fetchHyperliquidSpotMarketInfo, as as fetchHyperliquidSpotMeta, at as fetchHyperliquidSpotMetaAndAssetCtxs, au as fetchHyperliquidSpotTickSize, av as fetchHyperliquidSpotUsdPriceMap, aw as fetchHyperliquidTickSize, ax as fetchHyperliquidUserFills, ay as fetchHyperliquidUserFillsByTime, az as fetchHyperliquidUserRateLimit, aA as formatHyperliquidMarketablePrice, aB as formatHyperliquidOrderSize, aC as formatHyperliquidPrice, aD as formatHyperliquidSize, aE as getKnownHyperliquidDexes, aF as isHyperliquidSpotSymbol, aG as modifyHyperliquidOrder, aH as normalizeHyperliquidBaseSymbol, aI as normalizeHyperliquidIndicatorBars, aJ as normalizeHyperliquidMetaSymbol, aK as normalizeSpotTokenName, aL as parseHyperliquidSymbol, aM as parseSpotPairSymbol, aN as placeHyperliquidOrderWithTpSl, aO as placeHyperliquidPositionTpSl, aP as placeHyperliquidTwapOrder, aQ as reserveHyperliquidRequestWeight, aR as resolveHyperliquidAbstractionFromMode, aS as resolveHyperliquidErrorDetail, aT as resolveHyperliquidLeverageMode, aU as resolveHyperliquidMarketDataCoin, aV as resolveHyperliquidOrderRef, aW as resolveHyperliquidOrderSymbol, aX as resolveHyperliquidPair, aY as resolveHyperliquidPerpSymbol, aZ as resolveHyperliquidProfileChain, a_ as resolveHyperliquidSpotSymbol, a$ as resolveHyperliquidSymbol, b0 as resolveSpotMidCandidates, b1 as resolveSpotTokenCandidates, b2 as roundHyperliquidPriceToTick, b3 as scheduleHyperliquidCancel, b4 as sendHyperliquidSpot, b5 as setHyperliquidAccountAbstractionMode, b6 as setHyperliquidPortfolioMargin, b7 as supportsHyperliquidBuilderFee, b8 as transferHyperliquidSubAccount, b9 as updateHyperliquidIsolatedMargin, ba as updateHyperliquidLeverage } from '../../browser-DxqvU3eA.js';
5
5
  import 'viem';
6
6
  import 'viem/accounts';
7
7
 
@@ -1210,6 +1210,16 @@ function mergeHyperliquidOpenOrders(batches) {
1210
1210
  }
1211
1211
  return [...merged.values()];
1212
1212
  }
1213
+ function applyHyperliquidOpenOrderDexContext(orders, dex) {
1214
+ const resolvedDex = typeof dex === "string" && dex.trim().length > 0 ? dex.trim().toLowerCase() : null;
1215
+ return orders.map((order) => {
1216
+ const existingDex = typeof order.dex === "string" && order.dex.trim().length > 0 ? order.dex.trim().toLowerCase() : null;
1217
+ return {
1218
+ ...order,
1219
+ dex: existingDex ?? resolvedDex
1220
+ };
1221
+ });
1222
+ }
1213
1223
  function readNumber(value) {
1214
1224
  if (typeof value === "number") {
1215
1225
  return Number.isFinite(value) ? value : null;
@@ -1328,19 +1338,21 @@ async function fetchHyperliquidSpotAssetCtxs(environment = "mainnet") {
1328
1338
  }
1329
1339
  async function fetchHyperliquidOpenOrders(params) {
1330
1340
  const env = params.environment ?? "mainnet";
1331
- return postInfo(env, {
1341
+ const orders = await postInfo(env, {
1332
1342
  type: "openOrders",
1333
1343
  user: normalizeAddress(params.user),
1334
1344
  ...params.dex ? { dex: params.dex.trim().toLowerCase() } : {}
1335
1345
  });
1346
+ return applyHyperliquidOpenOrderDexContext(orders, params.dex);
1336
1347
  }
1337
1348
  async function fetchHyperliquidFrontendOpenOrders(params) {
1338
1349
  const env = params.environment ?? "mainnet";
1339
- return postInfo(env, {
1350
+ const orders = await postInfo(env, {
1340
1351
  type: "frontendOpenOrders",
1341
1352
  user: normalizeAddress(params.user),
1342
1353
  ...params.dex ? { dex: params.dex.trim().toLowerCase() } : {}
1343
1354
  });
1355
+ return applyHyperliquidOpenOrderDexContext(orders, params.dex);
1344
1356
  }
1345
1357
  async function fetchHyperliquidOrderStatus(params) {
1346
1358
  const env = params.environment ?? "mainnet";
@@ -1451,6 +1463,8 @@ async function fetchHyperliquidActiveAsset(params) {
1451
1463
  }
1452
1464
 
1453
1465
  // src/adapters/hyperliquid/exchange.ts
1466
+ var DEFAULT_HYPERLIQUID_LEVERAGE_VERIFY_ATTEMPTS = 4;
1467
+ var DEFAULT_HYPERLIQUID_LEVERAGE_VERIFY_DELAY_MS = 250;
1454
1468
  function resolveRequiredExchangeNonce(options) {
1455
1469
  if (typeof options.nonce === "number") {
1456
1470
  return options.nonce;
@@ -1461,6 +1475,51 @@ function resolveRequiredExchangeNonce(options) {
1461
1475
  }
1462
1476
  return resolved;
1463
1477
  }
1478
+ function sleep(ms) {
1479
+ return new Promise((resolve) => {
1480
+ setTimeout(resolve, ms);
1481
+ });
1482
+ }
1483
+ function normalizeReportedLeverageMode(value) {
1484
+ if (!value) return null;
1485
+ const normalized = value.trim().toLowerCase();
1486
+ if (normalized === "cross" || normalized === "isolated") {
1487
+ return normalized;
1488
+ }
1489
+ return null;
1490
+ }
1491
+ function resolveLeverageVerificationUser(options) {
1492
+ return normalizeAddress(
1493
+ options.input.verifyUser ?? options.vaultAddress ?? options.wallet.address
1494
+ );
1495
+ }
1496
+ async function verifyAppliedHyperliquidLeverage(params) {
1497
+ 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;
1498
+ 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;
1499
+ let lastReportedLeverage = null;
1500
+ let lastReportedMode = null;
1501
+ for (let index = 0; index < attempts; index += 1) {
1502
+ const asset = await fetchHyperliquidActiveAsset({
1503
+ environment: params.environment,
1504
+ user: params.user,
1505
+ symbol: params.symbol
1506
+ });
1507
+ lastReportedLeverage = asset.leverage;
1508
+ lastReportedMode = normalizeReportedLeverageMode(asset.leverageType);
1509
+ const leverageMatches = asset.leverage === params.leverage;
1510
+ const modeMatches = lastReportedMode == null || lastReportedMode === params.leverageMode;
1511
+ if (leverageMatches && modeMatches) {
1512
+ return asset;
1513
+ }
1514
+ if (index < attempts - 1 && delayMs > 0) {
1515
+ await sleep(delayMs);
1516
+ }
1517
+ }
1518
+ const reportedLabel = lastReportedLeverage != null ? `${lastReportedLeverage}x${lastReportedMode ? ` ${lastReportedMode}` : ""}` : "unknown leverage";
1519
+ throw new Error(
1520
+ `Hyperliquid still reports ${reportedLabel} for ${params.symbol} after requesting ${params.leverage}x ${params.leverageMode}.`
1521
+ );
1522
+ }
1464
1523
  var HyperliquidExchangeClient = class {
1465
1524
  constructor(args) {
1466
1525
  this.wallet = args.wallet;
@@ -1810,7 +1869,20 @@ async function updateHyperliquidLeverage(options) {
1810
1869
  isCross: options.input.leverageMode === "cross",
1811
1870
  leverage: options.input.leverage
1812
1871
  };
1813
- return submitExchangeAction(options, action);
1872
+ const response = await submitExchangeAction(options, action);
1873
+ if (options.input.verifyApplied === false) {
1874
+ return response;
1875
+ }
1876
+ await verifyAppliedHyperliquidLeverage({
1877
+ environment: env,
1878
+ user: resolveLeverageVerificationUser(options),
1879
+ symbol: options.input.symbol,
1880
+ leverage: options.input.leverage,
1881
+ leverageMode: options.input.leverageMode,
1882
+ ...typeof options.input.verifyAttempts === "number" ? { attempts: options.input.verifyAttempts } : {},
1883
+ ...typeof options.input.verifyDelayMs === "number" ? { delayMs: options.input.verifyDelayMs } : {}
1884
+ });
1885
+ return response;
1814
1886
  }
1815
1887
  async function updateHyperliquidIsolatedMargin(options) {
1816
1888
  assertSymbol(options.input.symbol);
@@ -3367,6 +3439,13 @@ function toPositiveNumber(value, label) {
3367
3439
  function normalizeExecutionType(value) {
3368
3440
  return value ?? "market";
3369
3441
  }
3442
+ function assertSupportedParentOrder(parent) {
3443
+ if (parent.reduceOnly) {
3444
+ throw new Error(
3445
+ "Reduce-only parent orders are not supported with attached TP/SL. Use placeHyperliquidPositionTpSl for existing positions."
3446
+ );
3447
+ }
3448
+ }
3370
3449
  function resolveTriggerDirection(params) {
3371
3450
  const isLong = params.parentSide === "buy";
3372
3451
  if (params.leg === "tp") {
@@ -3474,6 +3553,7 @@ async function buildAttachedTpSlOrders(params) {
3474
3553
  return legs.filter((entry) => Boolean(entry));
3475
3554
  }
3476
3555
  async function placeHyperliquidOrderWithTpSl(options) {
3556
+ assertSupportedParentOrder(options.parent);
3477
3557
  const env = options.environment ?? "mainnet";
3478
3558
  const childOrders = await buildAttachedTpSlOrders({
3479
3559
  symbol: options.parent.symbol,