opentool 0.17.1 → 0.18.0

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 { i as HyperliquidEnvironment, a$ as NonceSource, r as HyperliquidOrderIntent, l as HyperliquidGrouping, b0 as toApiDecimal, b1 as createL1ActionHash, b2 as splitSignature } from '../../browser-DA4UUBo1.js';
4
- export { D as DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS, a as DEFAULT_HYPERLIQUID_TPSL_MARKET_SLIPPAGE_BPS, H as HyperliquidAbstraction, b as HyperliquidAccountMode, c as HyperliquidApiError, d as HyperliquidApproximateLiquidationParams, e as HyperliquidBar, f as HyperliquidBarResolution, g as HyperliquidBuilderApprovalError, h as HyperliquidBuilderFee, j as HyperliquidExchangeClient, k as HyperliquidExchangeResponse, m as HyperliquidGuardError, n as HyperliquidIndicatorBar, o as HyperliquidInfoClient, p as HyperliquidMarketIdentityInput, q as HyperliquidMarketType, s as HyperliquidParsedSymbol, t as HyperliquidParsedSymbolKind, u as HyperliquidPerpMarketInfo, v as HyperliquidPlaceOrderWithTpSlOptions, w as HyperliquidPlacePositionTpSlOptions, x as HyperliquidProfileAsset, y as HyperliquidProfileAssetInput, z as HyperliquidProfileChain, A as HyperliquidResolvedMarketDescriptor, B as HyperliquidSpotMarketInfo, C as HyperliquidTermsError, E as HyperliquidTickSize, F as HyperliquidTimeInForce, G as HyperliquidTpSlExecutionType, I as HyperliquidTpSlLegInput, J as HyperliquidTriggerOptions, K as HyperliquidTriggerType, M as MarketIdentity, _ as __hyperliquidMarketDataInternals, L as batchModifyHyperliquidOrders, N as buildHyperliquidMarketIdentity, O as buildHyperliquidProfileAssets, P as buildHyperliquidSpotUsdPriceMap, Q as cancelAllHyperliquidOrders, R as cancelHyperliquidOrders, S as cancelHyperliquidOrdersByCloid, T as cancelHyperliquidTwapOrder, U as computeHyperliquidMarketIocLimitPrice, V as createHyperliquidSubAccount, W as createMonotonicNonceFactory, X as estimateHyperliquidLiquidationPrice, Y as extractHyperliquidDex, Z as extractHyperliquidOrderIds, $ as fetchHyperliquidAllMids, a0 as fetchHyperliquidAssetCtxs, a1 as fetchHyperliquidBars, a2 as fetchHyperliquidDexMeta, a3 as fetchHyperliquidFrontendOpenOrders, a4 as fetchHyperliquidHistoricalOrders, a5 as fetchHyperliquidMeta, a6 as fetchHyperliquidMetaAndAssetCtxs, a7 as fetchHyperliquidOpenOrders, a8 as fetchHyperliquidOrderStatus, a9 as fetchHyperliquidPerpMarketInfo, aa as fetchHyperliquidPreTransferCheck, ab as fetchHyperliquidResolvedMarketDescriptor, ac as fetchHyperliquidSizeDecimals, ad as fetchHyperliquidSpotAccountValue, ae as fetchHyperliquidSpotAssetCtxs, af as fetchHyperliquidSpotClearinghouseState, ag as fetchHyperliquidSpotMarketInfo, ah as fetchHyperliquidSpotMeta, ai as fetchHyperliquidSpotMetaAndAssetCtxs, aj as fetchHyperliquidSpotTickSize, ak as fetchHyperliquidSpotUsdPriceMap, al as fetchHyperliquidTickSize, am as fetchHyperliquidUserFills, an as fetchHyperliquidUserFillsByTime, ao as fetchHyperliquidUserRateLimit, ap as formatHyperliquidMarketablePrice, aq as formatHyperliquidOrderSize, ar as formatHyperliquidPrice, as as formatHyperliquidSize, at as isHyperliquidSpotSymbol, au as modifyHyperliquidOrder, av as normalizeHyperliquidBaseSymbol, aw as normalizeHyperliquidIndicatorBars, ax as normalizeHyperliquidMetaSymbol, ay as normalizeSpotTokenName, az as parseHyperliquidSymbol, aA as parseSpotPairSymbol, aB as placeHyperliquidOrderWithTpSl, aC as placeHyperliquidPositionTpSl, aD as placeHyperliquidTwapOrder, aE as reserveHyperliquidRequestWeight, aF as resolveHyperliquidAbstractionFromMode, aG as resolveHyperliquidErrorDetail, aH as resolveHyperliquidLeverageMode, aI as resolveHyperliquidMarketDataCoin, aJ as resolveHyperliquidOrderRef, aK as resolveHyperliquidOrderSymbol, aL as resolveHyperliquidPair, aM as resolveHyperliquidPerpSymbol, aN as resolveHyperliquidProfileChain, aO as resolveHyperliquidSpotSymbol, aP as resolveHyperliquidSymbol, aQ as resolveSpotMidCandidates, aR as resolveSpotTokenCandidates, aS as roundHyperliquidPriceToTick, aT as scheduleHyperliquidCancel, aU as sendHyperliquidSpot, aV as setHyperliquidAccountAbstractionMode, aW as setHyperliquidPortfolioMargin, aX as supportsHyperliquidBuilderFee, aY as transferHyperliquidSubAccount, aZ as updateHyperliquidIsolatedMargin, a_ as updateHyperliquidLeverage } from '../../browser-DA4UUBo1.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';
5
5
  import 'viem';
6
6
  import 'viem/accounts';
7
7
 
@@ -914,6 +914,12 @@ function parseHyperliquidSymbol(value) {
914
914
  leverageMode: "cross"
915
915
  };
916
916
  }
917
+ function normalizeHyperliquidQuoteSymbol(value) {
918
+ if (typeof value !== "string") return null;
919
+ const trimmed = value.trim();
920
+ if (!trimmed) return null;
921
+ return canonicalizeHyperliquidTokenCase(trimmed).toUpperCase();
922
+ }
917
923
  function normalizeSpotTokenName2(value) {
918
924
  const raw = (value ?? "").trim();
919
925
  if (!raw) return "";
@@ -963,6 +969,69 @@ function resolveHyperliquidPair(value) {
963
969
  }
964
970
  return null;
965
971
  }
972
+ function buildHyperliquidMarketDescriptor(input) {
973
+ const rawSymbol = input.symbol?.trim();
974
+ if (!rawSymbol) return null;
975
+ const parsed = parseHyperliquidSymbol(rawSymbol);
976
+ if (!parsed) return null;
977
+ const explicitPair = resolveHyperliquidPair(input.pair);
978
+ const explicitQuote = normalizeHyperliquidQuoteSymbol(input.quote);
979
+ if (parsed.kind === "spot" || parsed.kind === "spotIndex") {
980
+ const canonicalPair2 = explicitPair ?? parsed.pair;
981
+ const pair = canonicalPair2;
982
+ const [pairBase, pairQuote] = (canonicalPair2 ?? "").split("/").map((part) => canonicalizeHyperliquidTokenCase(part).toUpperCase());
983
+ const base2 = pairBase || parsed.base;
984
+ const quote2 = pairQuote || explicitQuote || parsed.quote;
985
+ const normalized2 = pair ?? parsed.normalized;
986
+ const routeTicker = pair && base2 && quote2 ? `${base2}-${quote2}` : parsed.routeTicker;
987
+ const displaySymbol2 = input.displaySymbol?.trim() || (pair && base2 && quote2 ? `${base2}-${quote2}` : parsed.displaySymbol);
988
+ const orderSymbol2 = input.orderSymbol?.trim() || resolveHyperliquidOrderSymbol(normalized2);
989
+ const marketDataCoin2 = input.marketDataCoin?.trim() || (typeof input.spotIndex === "number" ? `@${input.spotIndex}` : resolveHyperliquidMarketDataCoin(normalized2));
990
+ if (!orderSymbol2 || !marketDataCoin2) return null;
991
+ return {
992
+ rawSymbol,
993
+ kind: parsed.kind,
994
+ routeTicker,
995
+ displaySymbol: displaySymbol2,
996
+ normalized: normalized2,
997
+ orderSymbol: orderSymbol2,
998
+ marketDataCoin: marketDataCoin2,
999
+ base: base2 ?? null,
1000
+ quote: quote2 ?? null,
1001
+ pair,
1002
+ canonicalPair: pair,
1003
+ dex: null,
1004
+ leverageMode: "cross",
1005
+ spotIndex: input.spotIndex ?? null,
1006
+ assetId: input.assetId ?? null
1007
+ };
1008
+ }
1009
+ const base = parsed.base;
1010
+ const quote = explicitQuote;
1011
+ const canonicalPair = base && quote ? `${base}/${quote}` : null;
1012
+ const displaySymbol = input.displaySymbol?.trim() || (canonicalPair ? canonicalPair.replace("/", "-") : parsed.dex ? base ?? parsed.normalized : parsed.displaySymbol);
1013
+ const normalized = parsed.normalized;
1014
+ const orderSymbol = input.orderSymbol?.trim() || resolveHyperliquidOrderSymbol(normalized);
1015
+ const marketDataCoin = input.marketDataCoin?.trim() || resolveHyperliquidMarketDataCoin(normalized);
1016
+ if (!orderSymbol || !marketDataCoin) return null;
1017
+ return {
1018
+ rawSymbol,
1019
+ kind: parsed.kind,
1020
+ routeTicker: parsed.routeTicker,
1021
+ displaySymbol,
1022
+ normalized,
1023
+ orderSymbol,
1024
+ marketDataCoin,
1025
+ base,
1026
+ quote,
1027
+ pair: null,
1028
+ canonicalPair,
1029
+ dex: parsed.dex,
1030
+ leverageMode: parsed.leverageMode,
1031
+ spotIndex: input.spotIndex ?? null,
1032
+ assetId: input.assetId ?? null
1033
+ };
1034
+ }
966
1035
  function resolveHyperliquidLeverageMode(symbol) {
967
1036
  return symbol.includes(":") ? "isolated" : "cross";
968
1037
  }
@@ -1106,6 +1175,14 @@ function resolveHyperliquidSpotSymbol(asset, defaultQuote = "USDC") {
1106
1175
  }
1107
1176
 
1108
1177
  // src/adapters/hyperliquid/info.ts
1178
+ var HYPERLIQUID_HIP3_DEXES = [
1179
+ "xyz",
1180
+ "flx",
1181
+ "vntl",
1182
+ "hyna",
1183
+ "km",
1184
+ "cash"
1185
+ ];
1109
1186
  async function postInfo(environment, payload) {
1110
1187
  const baseUrl = API_BASES[environment];
1111
1188
  const response = await fetch(`${baseUrl}/info`, {
@@ -1122,6 +1199,27 @@ async function postInfo(environment, payload) {
1122
1199
  }
1123
1200
  return data;
1124
1201
  }
1202
+ function mergeHyperliquidOpenOrders(batches) {
1203
+ const merged = /* @__PURE__ */ new Map();
1204
+ for (const batch of batches) {
1205
+ for (const order of batch) {
1206
+ const oid = typeof order.oid === "number" || typeof order.oid === "string" ? String(order.oid) : "no-oid";
1207
+ const cloid = typeof order.cloid === "string" && order.cloid.trim().length > 0 ? order.cloid : "no-cloid";
1208
+ merged.set(`${oid}:${cloid}`, order);
1209
+ }
1210
+ }
1211
+ return [...merged.values()];
1212
+ }
1213
+ function readNumber(value) {
1214
+ if (typeof value === "number") {
1215
+ return Number.isFinite(value) ? value : null;
1216
+ }
1217
+ if (typeof value === "string" && value.trim().length > 0) {
1218
+ const parsed = Number.parseFloat(value);
1219
+ return Number.isFinite(parsed) ? parsed : null;
1220
+ }
1221
+ return null;
1222
+ }
1125
1223
  var HyperliquidInfoClient = class {
1126
1224
  constructor(environment = "mainnet") {
1127
1225
  this.environment = environment;
@@ -1196,6 +1294,13 @@ var HyperliquidInfoClient = class {
1196
1294
  environment: this.environment
1197
1295
  });
1198
1296
  }
1297
+ activeAsset(user, symbol) {
1298
+ return fetchHyperliquidActiveAsset({
1299
+ user,
1300
+ symbol,
1301
+ environment: this.environment
1302
+ });
1303
+ }
1199
1304
  };
1200
1305
  async function fetchHyperliquidMeta(environment = "mainnet") {
1201
1306
  return postInfo(environment, { type: "meta" });
@@ -1206,6 +1311,9 @@ async function fetchHyperliquidDexMeta(environment = "mainnet", dex) {
1206
1311
  async function fetchHyperliquidMetaAndAssetCtxs(environment = "mainnet") {
1207
1312
  return postInfo(environment, { type: "metaAndAssetCtxs" });
1208
1313
  }
1314
+ async function fetchHyperliquidDexMetaAndAssetCtxs(environment = "mainnet", dex) {
1315
+ return postInfo(environment, { type: "metaAndAssetCtxs", dex });
1316
+ }
1209
1317
  async function fetchHyperliquidSpotMeta(environment = "mainnet") {
1210
1318
  return postInfo(environment, { type: "spotMeta" });
1211
1319
  }
@@ -1220,13 +1328,18 @@ async function fetchHyperliquidSpotAssetCtxs(environment = "mainnet") {
1220
1328
  }
1221
1329
  async function fetchHyperliquidOpenOrders(params) {
1222
1330
  const env = params.environment ?? "mainnet";
1223
- return postInfo(env, { type: "openOrders", user: normalizeAddress(params.user) });
1331
+ return postInfo(env, {
1332
+ type: "openOrders",
1333
+ user: normalizeAddress(params.user),
1334
+ ...params.dex ? { dex: params.dex.trim().toLowerCase() } : {}
1335
+ });
1224
1336
  }
1225
1337
  async function fetchHyperliquidFrontendOpenOrders(params) {
1226
1338
  const env = params.environment ?? "mainnet";
1227
1339
  return postInfo(env, {
1228
1340
  type: "frontendOpenOrders",
1229
- user: normalizeAddress(params.user)
1341
+ user: normalizeAddress(params.user),
1342
+ ...params.dex ? { dex: params.dex.trim().toLowerCase() } : {}
1230
1343
  });
1231
1344
  }
1232
1345
  async function fetchHyperliquidOrderStatus(params) {
@@ -1241,7 +1354,8 @@ async function fetchHyperliquidHistoricalOrders(params) {
1241
1354
  const env = params.environment ?? "mainnet";
1242
1355
  return postInfo(env, {
1243
1356
  type: "historicalOrders",
1244
- user: normalizeAddress(params.user)
1357
+ user: normalizeAddress(params.user),
1358
+ ...params.dex ? { dex: params.dex.trim().toLowerCase() } : {}
1245
1359
  });
1246
1360
  }
1247
1361
  async function fetchHyperliquidUserFills(params) {
@@ -1282,6 +1396,59 @@ async function fetchHyperliquidSpotClearinghouseState(params) {
1282
1396
  user: normalizeAddress(params.user)
1283
1397
  });
1284
1398
  }
1399
+ function getKnownHyperliquidDexes(environment = "mainnet") {
1400
+ return environment === "mainnet" ? [...HYPERLIQUID_HIP3_DEXES] : [];
1401
+ }
1402
+ async function fetchHyperliquidOpenOrdersAcrossDexes(params) {
1403
+ const environment = params.environment ?? "mainnet";
1404
+ const requests = [
1405
+ ...params.includePrimary === false ? [] : [fetchHyperliquidOpenOrders({ environment, user: params.user })],
1406
+ ...getKnownHyperliquidDexes(environment).filter((dex) => !(params.dexes && !params.dexes.includes(dex))).map(
1407
+ (dex) => fetchHyperliquidOpenOrders({
1408
+ environment,
1409
+ user: params.user,
1410
+ dex
1411
+ })
1412
+ )
1413
+ ];
1414
+ const batches = await Promise.all(requests);
1415
+ return mergeHyperliquidOpenOrders(batches);
1416
+ }
1417
+ async function fetchHyperliquidFrontendOpenOrdersAcrossDexes(params) {
1418
+ const environment = params.environment ?? "mainnet";
1419
+ const requests = [
1420
+ ...params.includePrimary === false ? [] : [fetchHyperliquidFrontendOpenOrders({ environment, user: params.user })],
1421
+ ...getKnownHyperliquidDexes(environment).filter((dex) => !(params.dexes && !params.dexes.includes(dex))).map(
1422
+ (dex) => fetchHyperliquidFrontendOpenOrders({
1423
+ environment,
1424
+ user: params.user,
1425
+ dex
1426
+ })
1427
+ )
1428
+ ];
1429
+ const batches = await Promise.all(requests);
1430
+ return mergeHyperliquidOpenOrders(batches);
1431
+ }
1432
+ async function fetchHyperliquidActiveAsset(params) {
1433
+ const environment = params.environment ?? "mainnet";
1434
+ const coin = resolveHyperliquidOrderSymbol(params.symbol);
1435
+ if (!coin) {
1436
+ throw new Error(`Unable to resolve Hyperliquid active asset symbol: ${params.symbol}`);
1437
+ }
1438
+ const raw = await postInfo(environment, {
1439
+ type: "activeAssetData",
1440
+ user: normalizeAddress(params.user),
1441
+ coin
1442
+ });
1443
+ const record = raw && typeof raw === "object" && !Array.isArray(raw) ? raw : null;
1444
+ const leverageRecord = record?.leverage && typeof record.leverage === "object" && !Array.isArray(record.leverage) ? record.leverage : null;
1445
+ return {
1446
+ coin,
1447
+ leverage: leverageRecord && "value" in leverageRecord ? readNumber(leverageRecord.value) : readNumber(record?.leverage),
1448
+ leverageType: leverageRecord && typeof leverageRecord.type === "string" ? leverageRecord.type : null,
1449
+ raw
1450
+ };
1451
+ }
1285
1452
 
1286
1453
  // src/adapters/hyperliquid/exchange.ts
1287
1454
  function resolveRequiredExchangeNonce(options) {
@@ -2884,47 +3051,47 @@ async function fetchHyperliquidResolvedMarketDescriptor(params) {
2884
3051
  quote: parsed.quote ?? "USDC",
2885
3052
  ...params.mids !== void 0 ? { mids: params.mids } : {}
2886
3053
  });
2887
- const orderSymbol2 = resolveHyperliquidOrderSymbol(spotInfo.symbol);
2888
- if (!orderSymbol2) {
3054
+ const orderSymbol = resolveHyperliquidOrderSymbol(spotInfo.symbol);
3055
+ if (!orderSymbol) {
2889
3056
  throw new Error(`Unable to resolve Hyperliquid spot order symbol: ${params.symbol}`);
2890
3057
  }
2891
- return {
2892
- rawSymbol: params.symbol,
2893
- kind: "spot",
2894
- routeTicker: `${spotInfo.base}-${spotInfo.quote}`,
3058
+ const descriptor2 = buildHyperliquidMarketDescriptor({
3059
+ symbol: params.symbol,
3060
+ pair: spotInfo.symbol,
3061
+ quote: spotInfo.quote,
2895
3062
  displaySymbol: `${spotInfo.base}-${spotInfo.quote}`,
2896
- normalized: spotInfo.symbol,
2897
- orderSymbol: orderSymbol2,
3063
+ orderSymbol,
2898
3064
  marketDataCoin: `@${spotInfo.marketIndex}`,
2899
- base: spotInfo.base,
2900
- quote: spotInfo.quote,
2901
- pair: spotInfo.symbol,
2902
- dex: null,
2903
- leverageMode: "cross",
2904
3065
  spotIndex: spotInfo.marketIndex,
2905
3066
  assetId: spotInfo.assetId
2906
- };
2907
- }
2908
- const orderSymbol = resolveHyperliquidOrderSymbol(parsed.normalized);
2909
- if (!orderSymbol) {
2910
- throw new Error(`Unable to resolve Hyperliquid order symbol: ${params.symbol}`);
3067
+ });
3068
+ if (!descriptor2) {
3069
+ throw new Error(`Unable to build Hyperliquid spot market descriptor: ${params.symbol}`);
3070
+ }
3071
+ return descriptor2;
3072
+ }
3073
+ const quote = parsed.dex ? await (async () => {
3074
+ const dex = parsed.dex;
3075
+ if (!dex) return null;
3076
+ const [dexMetaAndCtxs, spotMetaRaw] = await Promise.all([
3077
+ fetchHyperliquidDexMetaAndAssetCtxs(params.environment, dex),
3078
+ fetchHyperliquidSpotMeta(params.environment)
3079
+ ]);
3080
+ const metaHeader = Array.isArray(dexMetaAndCtxs) && dexMetaAndCtxs.length > 0 ? dexMetaAndCtxs[0] : null;
3081
+ const collateralToken = typeof metaHeader?.collateralToken === "number" ? metaHeader.collateralToken : null;
3082
+ if (collateralToken == null) return null;
3083
+ const spotMeta = spotMetaRaw;
3084
+ const token = (spotMeta.tokens ?? []).find((entry) => entry?.index === collateralToken) ?? null;
3085
+ return normalizeSpotTokenName2(token?.name).toUpperCase() || null;
3086
+ })() : "USDC";
3087
+ const descriptor = buildHyperliquidMarketDescriptor({
3088
+ symbol: params.symbol,
3089
+ ...quote ? { quote } : {}
3090
+ });
3091
+ if (!descriptor) {
3092
+ throw new Error(`Unable to build Hyperliquid market descriptor: ${params.symbol}`);
2911
3093
  }
2912
- return {
2913
- rawSymbol: params.symbol,
2914
- kind: parsed.kind,
2915
- routeTicker: parsed.routeTicker,
2916
- displaySymbol: parsed.displaySymbol,
2917
- normalized: parsed.normalized,
2918
- orderSymbol,
2919
- marketDataCoin: parsed.normalized,
2920
- base: parsed.base,
2921
- quote: parsed.quote,
2922
- pair: parsed.pair,
2923
- dex: parsed.dex,
2924
- leverageMode: parsed.leverageMode,
2925
- spotIndex: null,
2926
- assetId: null
2927
- };
3094
+ return descriptor;
2928
3095
  }
2929
3096
  async function fetchHyperliquidSizeDecimals(params) {
2930
3097
  const { symbol, environment } = params;
@@ -3916,6 +4083,6 @@ var __hyperliquidInternals = {
3916
4083
  splitSignature
3917
4084
  };
3918
4085
 
3919
- export { DEFAULT_HYPERLIQUID_CADENCE_CRON, DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS, DEFAULT_HYPERLIQUID_TPSL_MARKET_SLIPPAGE_BPS, HyperliquidApiError, HyperliquidBuilderApprovalError, HyperliquidExchangeClient, HyperliquidGuardError, HyperliquidInfoClient, HyperliquidTermsError, __hyperliquidInternals, __hyperliquidMarketDataInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, buildHyperliquidMarketIdentity, buildHyperliquidProfileAssets, buildHyperliquidSpotUsdPriceMap, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, clampHyperliquidAbs, clampHyperliquidFloat, clampHyperliquidInt, computeHyperliquidMarketIocLimitPrice, createHyperliquidSubAccount, createMonotonicNonceFactory, depositToHyperliquidBridge, estimateHyperliquidLiquidationPrice, extractHyperliquidDex, extractHyperliquidOrderIds, fetchHyperliquidAllMids, fetchHyperliquidAssetCtxs, fetchHyperliquidBars, fetchHyperliquidClearinghouseState, fetchHyperliquidDexMeta, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPerpMarketInfo, fetchHyperliquidPreTransferCheck, fetchHyperliquidResolvedMarketDescriptor, fetchHyperliquidSizeDecimals, fetchHyperliquidSpotAccountValue, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMarketInfo, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidSpotTickSize, fetchHyperliquidSpotUsdPriceMap, fetchHyperliquidTickSize, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, formatHyperliquidMarketablePrice, formatHyperliquidOrderSize, formatHyperliquidPrice, formatHyperliquidSize, getHyperliquidMaxBuilderFee, isHyperliquidSpotSymbol, modifyHyperliquidOrder, normalizeHyperliquidBaseSymbol, normalizeHyperliquidDcaEntries, normalizeHyperliquidIndicatorBars, normalizeHyperliquidMetaSymbol, normalizeSpotTokenName2 as normalizeSpotTokenName, parseHyperliquidJson, parseHyperliquidSymbol, parseSpotPairSymbol, placeHyperliquidOrder2 as placeHyperliquidOrder, placeHyperliquidOrderWithTpSl, placeHyperliquidPositionTpSl, placeHyperliquidTwapOrder, planHyperliquidTrade, readHyperliquidAccountValue, readHyperliquidNumber, readHyperliquidPerpPosition, readHyperliquidPerpPositionSize, readHyperliquidSpotAccountValue, readHyperliquidSpotBalance, readHyperliquidSpotBalanceSize, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, reserveHyperliquidRequestWeight, resolveHyperliquidAbstractionFromMode, resolveHyperliquidBudgetUsd, resolveHyperliquidCadenceCron, resolveHyperliquidCadenceFromResolution, resolveHyperliquidChain, resolveHyperliquidChainConfig, resolveHyperliquidDcaSymbolEntries, resolveHyperliquidErrorDetail, resolveHyperliquidHourlyInterval, resolveHyperliquidIntervalCron, resolveHyperliquidLeverageMode, resolveHyperliquidMarketDataCoin, resolveHyperliquidMaxPerRunUsd, resolveHyperliquidOrderRef, resolveHyperliquidOrderSymbol, resolveHyperliquidPair, resolveHyperliquidPerpSymbol, resolveHyperliquidProfileChain, resolveHyperliquidRpcEnvVar, resolveHyperliquidScheduleEvery, resolveHyperliquidScheduleUnit, resolveHyperliquidSpotSymbol, resolveHyperliquidStoreNetwork, resolveHyperliquidSymbol, resolveHyperliquidTargetSize, resolveSpotMidCandidates, resolveSpotTokenCandidates, roundHyperliquidPriceToTick, scheduleHyperliquidCancel, sendHyperliquidSpot, setHyperliquidAccountAbstractionMode, setHyperliquidPortfolioMargin, supportsHyperliquidBuilderFee, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, withdrawFromHyperliquid };
4086
+ export { DEFAULT_HYPERLIQUID_CADENCE_CRON, DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS, DEFAULT_HYPERLIQUID_TPSL_MARKET_SLIPPAGE_BPS, HYPERLIQUID_HIP3_DEXES, HyperliquidApiError, HyperliquidBuilderApprovalError, HyperliquidExchangeClient, HyperliquidGuardError, HyperliquidInfoClient, HyperliquidTermsError, __hyperliquidInternals, __hyperliquidMarketDataInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, buildHyperliquidMarketDescriptor, buildHyperliquidMarketIdentity, buildHyperliquidProfileAssets, buildHyperliquidSpotUsdPriceMap, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, clampHyperliquidAbs, clampHyperliquidFloat, clampHyperliquidInt, computeHyperliquidMarketIocLimitPrice, createHyperliquidSubAccount, createMonotonicNonceFactory, depositToHyperliquidBridge, estimateHyperliquidLiquidationPrice, extractHyperliquidDex, extractHyperliquidOrderIds, fetchHyperliquidActiveAsset, fetchHyperliquidAllMids, fetchHyperliquidAssetCtxs, fetchHyperliquidBars, fetchHyperliquidClearinghouseState, fetchHyperliquidDexMeta, fetchHyperliquidDexMetaAndAssetCtxs, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidFrontendOpenOrdersAcrossDexes, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOpenOrdersAcrossDexes, fetchHyperliquidOrderStatus, fetchHyperliquidPerpMarketInfo, fetchHyperliquidPreTransferCheck, fetchHyperliquidResolvedMarketDescriptor, fetchHyperliquidSizeDecimals, fetchHyperliquidSpotAccountValue, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMarketInfo, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidSpotTickSize, fetchHyperliquidSpotUsdPriceMap, fetchHyperliquidTickSize, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, formatHyperliquidMarketablePrice, formatHyperliquidOrderSize, formatHyperliquidPrice, formatHyperliquidSize, getHyperliquidMaxBuilderFee, getKnownHyperliquidDexes, isHyperliquidSpotSymbol, modifyHyperliquidOrder, normalizeHyperliquidBaseSymbol, normalizeHyperliquidDcaEntries, normalizeHyperliquidIndicatorBars, normalizeHyperliquidMetaSymbol, normalizeSpotTokenName2 as normalizeSpotTokenName, parseHyperliquidJson, parseHyperliquidSymbol, parseSpotPairSymbol, placeHyperliquidOrder2 as placeHyperliquidOrder, placeHyperliquidOrderWithTpSl, placeHyperliquidPositionTpSl, placeHyperliquidTwapOrder, planHyperliquidTrade, readHyperliquidAccountValue, readHyperliquidNumber, readHyperliquidPerpPosition, readHyperliquidPerpPositionSize, readHyperliquidSpotAccountValue, readHyperliquidSpotBalance, readHyperliquidSpotBalanceSize, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, reserveHyperliquidRequestWeight, resolveHyperliquidAbstractionFromMode, resolveHyperliquidBudgetUsd, resolveHyperliquidCadenceCron, resolveHyperliquidCadenceFromResolution, resolveHyperliquidChain, resolveHyperliquidChainConfig, resolveHyperliquidDcaSymbolEntries, resolveHyperliquidErrorDetail, resolveHyperliquidHourlyInterval, resolveHyperliquidIntervalCron, resolveHyperliquidLeverageMode, resolveHyperliquidMarketDataCoin, resolveHyperliquidMaxPerRunUsd, resolveHyperliquidOrderRef, resolveHyperliquidOrderSymbol, resolveHyperliquidPair, resolveHyperliquidPerpSymbol, resolveHyperliquidProfileChain, resolveHyperliquidRpcEnvVar, resolveHyperliquidScheduleEvery, resolveHyperliquidScheduleUnit, resolveHyperliquidSpotSymbol, resolveHyperliquidStoreNetwork, resolveHyperliquidSymbol, resolveHyperliquidTargetSize, resolveSpotMidCandidates, resolveSpotTokenCandidates, roundHyperliquidPriceToTick, scheduleHyperliquidCancel, sendHyperliquidSpot, setHyperliquidAccountAbstractionMode, setHyperliquidPortfolioMargin, supportsHyperliquidBuilderFee, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, withdrawFromHyperliquid };
3920
4087
  //# sourceMappingURL=index.js.map
3921
4088
  //# sourceMappingURL=index.js.map