opentool 0.8.18 → 0.8.21

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.
@@ -7,6 +7,16 @@ type HyperliquidEnvironment = "mainnet" | "testnet";
7
7
  type HyperliquidTimeInForce = "Gtc" | "Ioc" | "Alo" | "FrontendMarket" | "LiquidationMarket";
8
8
  type HyperliquidGrouping = "na" | "normalTpsl" | "positionTpsl";
9
9
  type HyperliquidTriggerType = "tp" | "sl";
10
+ type HyperliquidAbstraction = "unifiedAccount" | "portfolioMargin" | "disabled";
11
+ type HyperliquidAccountMode = "standard" | "unified" | "portfolio";
12
+ declare function resolveHyperliquidAbstractionFromMode(mode: HyperliquidAccountMode): HyperliquidAbstraction;
13
+ declare const DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS = 30;
14
+ declare function computeHyperliquidMarketIocLimitPrice(params: {
15
+ markPrice: number;
16
+ side: "buy" | "sell";
17
+ slippageBps?: number;
18
+ decimals?: number;
19
+ }): string;
10
20
  interface HyperliquidTriggerOptions {
11
21
  triggerPx: string | number | bigint;
12
22
  isMarket?: boolean;
@@ -234,6 +244,14 @@ declare class HyperliquidExchangeClient {
234
244
  token: string;
235
245
  amount: string | number | bigint;
236
246
  }): Promise<HyperliquidExchangeResponse<unknown>>;
247
+ setDexAbstraction(params: {
248
+ enabled: boolean;
249
+ user?: `0x${string}`;
250
+ }): Promise<HyperliquidExchangeResponse<unknown>>;
251
+ setAccountAbstractionMode(params: {
252
+ mode: HyperliquidAccountMode;
253
+ user?: `0x${string}`;
254
+ }): Promise<HyperliquidExchangeResponse<unknown>>;
237
255
  setPortfolioMargin(params: {
238
256
  enabled: boolean;
239
257
  user?: `0x${string}`;
@@ -244,6 +262,16 @@ declare function setHyperliquidPortfolioMargin(options: {
244
262
  enabled: boolean;
245
263
  user?: `0x${string}`;
246
264
  } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
265
+ declare function setHyperliquidDexAbstraction(options: {
266
+ wallet: WalletFullContext;
267
+ enabled: boolean;
268
+ user?: `0x${string}`;
269
+ } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
270
+ declare function setHyperliquidAccountAbstractionMode(options: {
271
+ wallet: WalletFullContext;
272
+ mode: HyperliquidAccountMode;
273
+ user?: `0x${string}`;
274
+ } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
247
275
  declare function cancelHyperliquidOrders(options: {
248
276
  wallet: WalletFullContext;
249
277
  cancels: CancelInput[];
@@ -420,4 +448,4 @@ declare const __hyperliquidInternals: {
420
448
  splitSignature: typeof splitSignature;
421
449
  };
422
450
 
423
- export { HyperliquidApiError, type HyperliquidApproveBuilderFeeOptions, type HyperliquidApproveBuilderFeeResponse, HyperliquidBuilderApprovalError, type HyperliquidBuilderApprovalRecordInput, type HyperliquidBuilderFee, type HyperliquidClearinghouseState, type HyperliquidDepositResult, type HyperliquidEnvironment, HyperliquidExchangeClient, type HyperliquidExchangeResponse, type HyperliquidGrouping, HyperliquidGuardError, HyperliquidInfoClient, type HyperliquidOrderIntent, type HyperliquidOrderOptions, type HyperliquidOrderResponse, type HyperliquidOrderStatus, HyperliquidTermsError, type HyperliquidTermsRecordInput, type HyperliquidTriggerOptions, type HyperliquidTriggerType, type HyperliquidWithdrawResult, type NonceSource, __hyperliquidInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, createHyperliquidSubAccount, createMonotonicNonceFactory, depositToHyperliquidBridge, fetchHyperliquidAssetCtxs, fetchHyperliquidClearinghouseState, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPreTransferCheck, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, getHyperliquidMaxBuilderFee, modifyHyperliquidOrder, placeHyperliquidOrder, placeHyperliquidTwapOrder, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, reserveHyperliquidRequestWeight, scheduleHyperliquidCancel, sendHyperliquidSpot, setHyperliquidPortfolioMargin, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, withdrawFromHyperliquid };
451
+ export { DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS, type HyperliquidAbstraction, type HyperliquidAccountMode, HyperliquidApiError, type HyperliquidApproveBuilderFeeOptions, type HyperliquidApproveBuilderFeeResponse, HyperliquidBuilderApprovalError, type HyperliquidBuilderApprovalRecordInput, type HyperliquidBuilderFee, type HyperliquidClearinghouseState, type HyperliquidDepositResult, type HyperliquidEnvironment, HyperliquidExchangeClient, type HyperliquidExchangeResponse, type HyperliquidGrouping, HyperliquidGuardError, HyperliquidInfoClient, type HyperliquidOrderIntent, type HyperliquidOrderOptions, type HyperliquidOrderResponse, type HyperliquidOrderStatus, HyperliquidTermsError, type HyperliquidTermsRecordInput, type HyperliquidTimeInForce, type HyperliquidTriggerOptions, type HyperliquidTriggerType, type HyperliquidWithdrawResult, type NonceSource, __hyperliquidInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, computeHyperliquidMarketIocLimitPrice, createHyperliquidSubAccount, createMonotonicNonceFactory, depositToHyperliquidBridge, fetchHyperliquidAssetCtxs, fetchHyperliquidClearinghouseState, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPreTransferCheck, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, getHyperliquidMaxBuilderFee, modifyHyperliquidOrder, placeHyperliquidOrder, placeHyperliquidTwapOrder, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, reserveHyperliquidRequestWeight, resolveHyperliquidAbstractionFromMode, scheduleHyperliquidCancel, sendHyperliquidSpot, setHyperliquidAccountAbstractionMode, setHyperliquidDexAbstraction, setHyperliquidPortfolioMargin, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, withdrawFromHyperliquid };
@@ -110,6 +110,45 @@ var BUILDER_CODE = {
110
110
  };
111
111
  var metaCache = /* @__PURE__ */ new Map();
112
112
  var perpDexsCache = /* @__PURE__ */ new Map();
113
+ function resolveHyperliquidAbstractionFromMode(mode) {
114
+ switch (mode) {
115
+ case "standard":
116
+ return "disabled";
117
+ case "unified":
118
+ return "unifiedAccount";
119
+ case "portfolio":
120
+ return "portfolioMargin";
121
+ default: {
122
+ const _exhaustive = mode;
123
+ return _exhaustive;
124
+ }
125
+ }
126
+ }
127
+ var DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS = 30;
128
+ function formatRoundedDecimal(value, decimals) {
129
+ const precision = Math.max(0, Math.min(12, Math.floor(decimals)));
130
+ const factor = 10 ** precision;
131
+ const rounded = Math.round(value * factor) / factor;
132
+ if (!Number.isFinite(rounded) || rounded <= 0) {
133
+ throw new Error("Price must be positive.");
134
+ }
135
+ const fixed = rounded.toFixed(precision);
136
+ return fixed.replace(/\.?0+$/, "");
137
+ }
138
+ function computeHyperliquidMarketIocLimitPrice(params) {
139
+ const bps = params.slippageBps ?? DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS;
140
+ const decimals = params.decimals ?? 6;
141
+ if (!Number.isFinite(params.markPrice) || params.markPrice <= 0) {
142
+ throw new Error("markPrice must be a positive number.");
143
+ }
144
+ if (!Number.isFinite(bps) || bps < 0) {
145
+ throw new Error("slippageBps must be a non-negative number.");
146
+ }
147
+ const slippage = bps / 1e4;
148
+ const multiplier = params.side === "buy" ? 1 + slippage : 1 - slippage;
149
+ const price = params.markPrice * multiplier;
150
+ return formatRoundedDecimal(price, decimals);
151
+ }
113
152
  var HyperliquidApiError = class extends Error {
114
153
  constructor(message, response) {
115
154
  super(message);
@@ -412,6 +451,68 @@ async function signUserPortfolioMargin(args) {
412
451
  });
413
452
  return splitSignature(signatureHex);
414
453
  }
454
+ async function signUserDexAbstraction(args) {
455
+ const { wallet, action } = args;
456
+ const domain = {
457
+ name: "HyperliquidSignTransaction",
458
+ version: "1",
459
+ chainId: Number.parseInt(action.signatureChainId, 16),
460
+ verifyingContract: ZERO_ADDRESS
461
+ };
462
+ const message = {
463
+ hyperliquidChain: action.hyperliquidChain,
464
+ user: action.user,
465
+ enabled: action.enabled,
466
+ nonce: BigInt(action.nonce)
467
+ };
468
+ const types = {
469
+ "HyperliquidTransaction:UserDexAbstraction": [
470
+ { name: "hyperliquidChain", type: "string" },
471
+ { name: "user", type: "address" },
472
+ { name: "enabled", type: "bool" },
473
+ { name: "nonce", type: "uint64" }
474
+ ]
475
+ };
476
+ const signatureHex = await wallet.walletClient.signTypedData({
477
+ account: wallet.account,
478
+ domain,
479
+ types,
480
+ primaryType: "HyperliquidTransaction:UserDexAbstraction",
481
+ message
482
+ });
483
+ return splitSignature(signatureHex);
484
+ }
485
+ async function signUserSetAbstraction(args) {
486
+ const { wallet, action } = args;
487
+ const domain = {
488
+ name: "HyperliquidSignTransaction",
489
+ version: "1",
490
+ chainId: Number.parseInt(action.signatureChainId, 16),
491
+ verifyingContract: ZERO_ADDRESS
492
+ };
493
+ const message = {
494
+ hyperliquidChain: action.hyperliquidChain,
495
+ user: action.user,
496
+ abstraction: action.abstraction,
497
+ nonce: BigInt(action.nonce)
498
+ };
499
+ const types = {
500
+ "HyperliquidTransaction:UserSetAbstraction": [
501
+ { name: "hyperliquidChain", type: "string" },
502
+ { name: "user", type: "address" },
503
+ { name: "abstraction", type: "string" },
504
+ { name: "nonce", type: "uint64" }
505
+ ]
506
+ };
507
+ const signatureHex = await wallet.walletClient.signTypedData({
508
+ account: wallet.account,
509
+ domain,
510
+ types,
511
+ primaryType: "HyperliquidTransaction:UserSetAbstraction",
512
+ message
513
+ });
514
+ return splitSignature(signatureHex);
515
+ }
415
516
  function splitSignature(signature) {
416
517
  const cleaned = signature.slice(2);
417
518
  const rHex = `0x${cleaned.slice(0, 64)}`;
@@ -787,6 +888,32 @@ var HyperliquidExchangeClient = class {
787
888
  ...params
788
889
  });
789
890
  }
891
+ setDexAbstraction(params) {
892
+ const base = {
893
+ wallet: this.wallet,
894
+ enabled: params.enabled,
895
+ environment: this.environment,
896
+ vaultAddress: this.vaultAddress,
897
+ expiresAfter: this.expiresAfter,
898
+ nonceSource: this.nonceSource
899
+ };
900
+ return setHyperliquidDexAbstraction(
901
+ params.user ? { ...base, user: params.user } : base
902
+ );
903
+ }
904
+ setAccountAbstractionMode(params) {
905
+ const base = {
906
+ wallet: this.wallet,
907
+ mode: params.mode,
908
+ environment: this.environment,
909
+ vaultAddress: this.vaultAddress,
910
+ expiresAfter: this.expiresAfter,
911
+ nonceSource: this.nonceSource
912
+ };
913
+ return setHyperliquidAccountAbstractionMode(
914
+ params.user ? { ...base, user: params.user } : base
915
+ );
916
+ }
790
917
  setPortfolioMargin(params) {
791
918
  const base = {
792
919
  wallet: this.wallet,
@@ -839,6 +966,83 @@ async function setHyperliquidPortfolioMargin(options) {
839
966
  }
840
967
  return postExchange(env, body);
841
968
  }
969
+ async function setHyperliquidDexAbstraction(options) {
970
+ const env = options.environment ?? "mainnet";
971
+ if (!options.wallet?.account || !options.wallet.walletClient) {
972
+ throw new Error(
973
+ "Wallet with signing capability is required for dex abstraction."
974
+ );
975
+ }
976
+ const nonce = options.nonce ?? options.walletNonceProvider?.() ?? options.wallet.nonceSource?.() ?? options.nonceSource?.() ?? Date.now();
977
+ const signatureChainId = getSignatureChainId(env);
978
+ const hyperliquidChain = HL_CHAIN_LABEL[env];
979
+ const user = normalizeAddress(
980
+ options.user ?? options.wallet.address
981
+ );
982
+ const action = {
983
+ type: "userDexAbstraction",
984
+ enabled: Boolean(options.enabled),
985
+ hyperliquidChain,
986
+ signatureChainId,
987
+ user,
988
+ nonce
989
+ };
990
+ const signature = await signUserDexAbstraction({
991
+ wallet: options.wallet,
992
+ action
993
+ });
994
+ const body = {
995
+ action,
996
+ nonce,
997
+ signature
998
+ };
999
+ if (options.vaultAddress) {
1000
+ body.vaultAddress = normalizeAddress(options.vaultAddress);
1001
+ }
1002
+ if (typeof options.expiresAfter === "number") {
1003
+ body.expiresAfter = options.expiresAfter;
1004
+ }
1005
+ return postExchange(env, body);
1006
+ }
1007
+ async function setHyperliquidAccountAbstractionMode(options) {
1008
+ const env = options.environment ?? "mainnet";
1009
+ if (!options.wallet?.account || !options.wallet.walletClient) {
1010
+ throw new Error(
1011
+ "Wallet with signing capability is required for account abstraction mode."
1012
+ );
1013
+ }
1014
+ const nonce = options.nonce ?? options.walletNonceProvider?.() ?? options.wallet.nonceSource?.() ?? options.nonceSource?.() ?? Date.now();
1015
+ const signatureChainId = getSignatureChainId(env);
1016
+ const hyperliquidChain = HL_CHAIN_LABEL[env];
1017
+ const user = normalizeAddress(
1018
+ options.user ?? options.wallet.address
1019
+ );
1020
+ const abstraction = resolveHyperliquidAbstractionFromMode(options.mode);
1021
+ const action = {
1022
+ type: "userSetAbstraction",
1023
+ abstraction,
1024
+ hyperliquidChain,
1025
+ signatureChainId,
1026
+ user,
1027
+ nonce
1028
+ };
1029
+ const signature = await signUserSetAbstraction({
1030
+ wallet: options.wallet,
1031
+ action
1032
+ });
1033
+ const body = {
1034
+ action,
1035
+ nonce,
1036
+ signature
1037
+ };
1038
+ if (options.vaultAddress) {
1039
+ body.vaultAddress = normalizeAddress(options.vaultAddress);
1040
+ }
1041
+ if (typeof options.expiresAfter === "number") {
1042
+ body.expiresAfter = options.expiresAfter;
1043
+ }
1044
+ return postExchange(env, body);
1045
+ }
842
1046
  async function cancelHyperliquidOrders(options) {
843
1047
  options.cancels.forEach((c) => assertSymbol(c.symbol));
844
1048
  const action = {
@@ -1584,6 +1788,6 @@ var __hyperliquidInternals = {
1584
1788
  splitSignature
1585
1789
  };
1586
1790
 
1587
- export { HyperliquidApiError, HyperliquidBuilderApprovalError, HyperliquidExchangeClient, HyperliquidGuardError, HyperliquidInfoClient, HyperliquidTermsError, __hyperliquidInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, createHyperliquidSubAccount, createMonotonicNonceFactory, depositToHyperliquidBridge, fetchHyperliquidAssetCtxs, fetchHyperliquidClearinghouseState, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPreTransferCheck, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, getHyperliquidMaxBuilderFee, modifyHyperliquidOrder, placeHyperliquidOrder, placeHyperliquidTwapOrder, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, reserveHyperliquidRequestWeight, scheduleHyperliquidCancel, sendHyperliquidSpot, setHyperliquidPortfolioMargin, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, withdrawFromHyperliquid };
1791
+ export { DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS, HyperliquidApiError, HyperliquidBuilderApprovalError, HyperliquidExchangeClient, HyperliquidGuardError, HyperliquidInfoClient, HyperliquidTermsError, __hyperliquidInternals, approveHyperliquidBuilderFee, batchModifyHyperliquidOrders, cancelAllHyperliquidOrders, cancelHyperliquidOrders, cancelHyperliquidOrdersByCloid, cancelHyperliquidTwapOrder, computeHyperliquidMarketIocLimitPrice, createHyperliquidSubAccount, createMonotonicNonceFactory, depositToHyperliquidBridge, fetchHyperliquidAssetCtxs, fetchHyperliquidClearinghouseState, fetchHyperliquidFrontendOpenOrders, fetchHyperliquidHistoricalOrders, fetchHyperliquidMeta, fetchHyperliquidMetaAndAssetCtxs, fetchHyperliquidOpenOrders, fetchHyperliquidOrderStatus, fetchHyperliquidPreTransferCheck, fetchHyperliquidSpotAssetCtxs, fetchHyperliquidSpotClearinghouseState, fetchHyperliquidSpotMeta, fetchHyperliquidSpotMetaAndAssetCtxs, fetchHyperliquidUserFills, fetchHyperliquidUserFillsByTime, fetchHyperliquidUserRateLimit, getHyperliquidMaxBuilderFee, modifyHyperliquidOrder, placeHyperliquidOrder, placeHyperliquidTwapOrder, recordHyperliquidBuilderApproval, recordHyperliquidTermsAcceptance, reserveHyperliquidRequestWeight, resolveHyperliquidAbstractionFromMode, scheduleHyperliquidCancel, sendHyperliquidSpot, setHyperliquidAccountAbstractionMode, setHyperliquidDexAbstraction, setHyperliquidPortfolioMargin, transferHyperliquidSubAccount, updateHyperliquidIsolatedMargin, updateHyperliquidLeverage, withdrawFromHyperliquid };
1588
1792
  //# sourceMappingURL=index.js.map
1589
1793
  //# sourceMappingURL=index.js.map