@stableflow/hyperliquid 3.0.0-rc-a593caa0fe-20260518 → 3.0.0-rc-b42c101df2-20260520

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.
package/dist/index.js CHANGED
@@ -77,30 +77,12 @@ var HyperliquidService = class {
77
77
  type: core.Service.OneClick,
78
78
  permit: permitParams
79
79
  };
80
- const depositRes = await core.request(core.OpenAPI, {
81
- method: "POST",
82
- url: "/v0/deposit",
83
- body: depositParams,
84
- mediaType: "application/json",
85
- errors: {
86
- 400: `Bad Request - Invalid input data`,
87
- 401: `Unauthorized - JWT token is invalid`
88
- }
89
- });
80
+ const depositRes = await core.postRequest("/v0/deposit", depositParams);
90
81
  return depositRes;
91
82
  }
92
- async getStatus(params) {
93
- return core.request(core.OpenAPI, {
94
- method: "GET",
95
- url: "/v0/deposit/status",
96
- query: {
97
- depositId: params.depositId
98
- },
99
- mediaType: "application/json",
100
- errors: {
101
- 400: `Bad Request - Invalid input data`,
102
- 401: `Unauthorized - JWT token is invalid`
103
- }
83
+ getStatus(params) {
84
+ return core.getRequest("/v0/deposit/status", {
85
+ depositId: params.depositId
104
86
  });
105
87
  }
106
88
  async generatePermit(params) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["usdcChains","ServiceMap","Service","formatQuoteError","__request","OpenAPI","tokens"],"mappings":"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","file":"index.js","sourcesContent":["import {\n request as __request,\n usdcChains,\n Service,\n tokens,\n OpenAPI,\n} from '@stableflow/core';\nimport { formatQuoteError, ServiceMap } from '@stableflow/bridges';\nimport type { WalletConfig, TokenConfig } from '@stableflow/core';\n\nconst SPENDER = \"0x2df1c51e09aecf9cacb7bc98cb1742757f163df7\";\nconst DESTINATION_TOKEN = usdcChains[\"arb\"];\nconst MIN_AMOUNT = 5 * (10 ** DESTINATION_TOKEN.decimals);\n\nclass HyperliquidService {\n public async quote(params: HyperliquidQuoteParams): Promise<{ quote: any; error: string | null; }> {\n\n const result: { quote: any; error: string | null; } = { quote: null, error: null };\n\n if (BigInt(params.amountWei || 0) < BigInt(MIN_AMOUNT)) {\n result.error = `Amount is too low, at least ${MIN_AMOUNT}`;\n return result;\n }\n\n const quoteParams = {\n ...params,\n dry: params.dry ?? true,\n slippageTolerance: params.slippageTolerance * 100,\n originAsset: params.fromToken.assetId,\n toToken: DESTINATION_TOKEN,\n destinationAsset: DESTINATION_TOKEN.assetId,\n amount: params.amountWei,\n refundType: \"ORIGIN_CHAIN\",\n appFees: params.oneclickParams?.appFees,\n swapType: \"EXACT_OUTPUT\",\n isProxy: false,\n };\n\n try {\n const quoteRes = await ServiceMap[Service.OneClick].quote(quoteParams);\n result.quote = quoteRes;\n } catch (error) {\n const _err = formatQuoteError(error, { service: Service.OneClick, fromToken: params.fromToken });\n result.error = _err.error;\n }\n\n return result;\n }\n\n public async transfer(params: HyperliquidTransferParams): Promise<string> {\n const {\n quote,\n wallet,\n } = params;\n\n const sendParams = {\n wallet,\n sendParam: quote?.sendParam,\n fromToken: quote?.quoteParam.fromToken,\n depositAddress: quote?.quote?.depositAddress,\n amountWei: quote?.quote?.amountIn,\n };\n\n const txhash = await ServiceMap[Service.OneClick].send(sendParams);\n\n return txhash;\n }\n\n public async deposit(params: HyperliquidDepositParams): Promise<HyperliquidDepositResponse> {\n const {\n evmWallet,\n evmWalletAddress,\n quote,\n txhash,\n } = params;\n\n const permitParams = await this.generatePermit({\n evmWalletAddress,\n evmWallet,\n amountWei: quote?.quote?.amountOut,\n });\n\n const depositParams = {\n deposit_address: quote?.quote?.depositAddress,\n from_addr: quote?.quoteParam?.refundTo,\n from_amount: quote?.quote?.amountIn,\n from_chain: quote?.quoteParam?.fromToken?.blockchain,\n from_hash: txhash,\n from_token: quote?.quoteParam?.fromToken?.contractAddress,\n sender: quote?.quoteParam?.recipient,\n to_amount: quote?.quote?.amountOut,\n to_chain: quote?.quoteParam?.toToken?.blockchain,\n to_token: quote?.quoteParam?.toToken?.contractAddress,\n type: Service.OneClick,\n\n permit: permitParams,\n };\n\n const depositRes = await __request(OpenAPI, {\n method: \"POST\",\n url: \"/v0/deposit\",\n body: depositParams,\n mediaType: \"application/json\",\n errors: {\n 400: `Bad Request - Invalid input data`,\n 401: `Unauthorized - JWT token is invalid`,\n },\n });\n\n return depositRes as HyperliquidDepositResponse;\n }\n\n public async getStatus(params: HyperliquidGetStatusParams): Promise<HyperliquidDepositStatusResponse> {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v0/deposit/status\",\n query: {\n depositId: params.depositId,\n },\n mediaType: \"application/json\",\n errors: {\n 400: `Bad Request - Invalid input data`,\n 401: `Unauthorized - JWT token is invalid`,\n },\n });\n }\n\n protected async generatePermit(params: HyperliquidGeneratePermitParams) {\n const {\n evmWalletAddress,\n evmWallet,\n amountWei,\n } = params;\n\n const tokenAddress = DESTINATION_TOKEN.contractAddress;\n\n const signature = await (evmWallet as any).signTypedData({\n fromToken: DESTINATION_TOKEN,\n amountWei: amountWei,\n spender: SPENDER,\n });\n\n const permitParams = {\n amount: signature.value,\n deadline: signature.deadline,\n owner: signature.owner,\n r: signature.r,\n s: signature.s,\n spender: SPENDER,\n token: tokenAddress,\n v: signature.v,\n nonce: signature.nonce,\n };\n\n return permitParams;\n }\n}\n\nexport const Hyperliquid = new HyperliquidService();\n\nexport const HyperliquidFromTokens = tokens\n .filter((token) => token.services.includes(Service.OneClick))\n .filter((token) => !(token.chainName === \"Arbitrum\" && token.symbol === \"USDC\"));\nexport const HyperliuquidToToken = DESTINATION_TOKEN;\nexport const HyperliuquidMinAmount = MIN_AMOUNT + \"\";\n\nexport interface HyperliquidQuoteParams {\n slippageTolerance: number;\n refundTo: string;\n recipient: string;\n wallet: WalletConfig;\n fromToken: TokenConfig;\n prices: Record<string, string>;\n amountWei: string;\n // Whether to generate deposit address\n // false will generate a deposit address\n dry?: boolean;\n oneclickParams?: {\n appFees?: { recipient: string; fee: number; }[];\n };\n}\n\nexport interface HyperliquidTransferParams {\n // bridge wallet\n wallet: WalletConfig;\n // deposit wallet (evm wallet)\n evmWallet: WalletConfig;\n // deposit wallet address\n evmWalletAddress: string;\n // quote result with deposit address\n quote: any;\n}\n\nexport interface HyperliquidGeneratePermitParams {\n evmWalletAddress: string;\n evmWallet: WalletConfig;\n amountWei: string;\n}\n\nexport interface HyperliquidDepositParams extends HyperliquidTransferParams {\n txhash: string;\n}\n\nexport interface HyperliquidGetStatusParams {\n depositId: string;\n}\n\nexport interface HyperliquidResponse<T> {\n code: number;\n data: T;\n}\n\nexport interface HyperliquidDepositResponseData {\n depositId: number;\n}\n\nexport type HyperliquidDepositResponse = HyperliquidResponse<HyperliquidDepositResponseData>;\n\nexport type HyperliquidDepositStatus = \"PROCESSING\" | \"SUCCESS\" | \"REFUNDED\" | \"FAILED\";\n\nexport interface HyperliquidDepositStatusResponseData {\n status: HyperliquidDepositStatus;\n txHash: string;\n}\n\nexport type HyperliquidDepositStatusResponse = HyperliquidResponse<HyperliquidDepositStatusResponseData>;\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":["usdcChains","ServiceMap","Service","formatQuoteError","postRequest","getRequest","tokens"],"mappings":"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","file":"index.js","sourcesContent":["import {\n usdcChains,\n Service,\n tokens,\n postRequest,\n getRequest,\n} from '@stableflow/core';\nimport { formatQuoteError, ServiceMap } from '@stableflow/bridges';\nimport type { WalletConfig, TokenConfig } from '@stableflow/core';\n\nconst SPENDER = \"0x2df1c51e09aecf9cacb7bc98cb1742757f163df7\";\nconst DESTINATION_TOKEN = usdcChains[\"arb\"];\nconst MIN_AMOUNT = 5 * (10 ** DESTINATION_TOKEN.decimals);\n\nclass HyperliquidService {\n public async quote(params: HyperliquidQuoteParams): Promise<{ quote: any; error: string | null; }> {\n\n const result: { quote: any; error: string | null; } = { quote: null, error: null };\n\n if (BigInt(params.amountWei || 0) < BigInt(MIN_AMOUNT)) {\n result.error = `Amount is too low, at least ${MIN_AMOUNT}`;\n return result;\n }\n\n const quoteParams = {\n ...params,\n dry: params.dry ?? true,\n slippageTolerance: params.slippageTolerance * 100,\n originAsset: params.fromToken.assetId,\n toToken: DESTINATION_TOKEN,\n destinationAsset: DESTINATION_TOKEN.assetId,\n amount: params.amountWei,\n refundType: \"ORIGIN_CHAIN\",\n appFees: params.oneclickParams?.appFees,\n swapType: \"EXACT_OUTPUT\",\n isProxy: false,\n };\n\n try {\n const quoteRes = await ServiceMap[Service.OneClick].quote(quoteParams);\n result.quote = quoteRes;\n } catch (error) {\n const _err = formatQuoteError(error, { service: Service.OneClick, fromToken: params.fromToken });\n result.error = _err.error;\n }\n\n return result;\n }\n\n public async transfer(params: HyperliquidTransferParams): Promise<string> {\n const {\n quote,\n wallet,\n } = params;\n\n const sendParams = {\n wallet,\n sendParam: quote?.sendParam,\n fromToken: quote?.quoteParam.fromToken,\n depositAddress: quote?.quote?.depositAddress,\n amountWei: quote?.quote?.amountIn,\n };\n\n const txhash = await ServiceMap[Service.OneClick].send(sendParams);\n\n return txhash;\n }\n\n public async deposit(params: HyperliquidDepositParams): Promise<HyperliquidDepositResponse> {\n const {\n evmWallet,\n evmWalletAddress,\n quote,\n txhash,\n } = params;\n\n const permitParams = await this.generatePermit({\n evmWalletAddress,\n evmWallet,\n amountWei: quote?.quote?.amountOut,\n });\n\n const depositParams = {\n deposit_address: quote?.quote?.depositAddress,\n from_addr: quote?.quoteParam?.refundTo,\n from_amount: quote?.quote?.amountIn,\n from_chain: quote?.quoteParam?.fromToken?.blockchain,\n from_hash: txhash,\n from_token: quote?.quoteParam?.fromToken?.contractAddress,\n sender: quote?.quoteParam?.recipient,\n to_amount: quote?.quote?.amountOut,\n to_chain: quote?.quoteParam?.toToken?.blockchain,\n to_token: quote?.quoteParam?.toToken?.contractAddress,\n type: Service.OneClick,\n\n permit: permitParams,\n };\n\n const depositRes = await postRequest(\"/v0/deposit\", depositParams);\n\n return depositRes as HyperliquidDepositResponse;\n }\n\n public getStatus(params: HyperliquidGetStatusParams): Promise<HyperliquidDepositStatusResponse> {\n return getRequest(\"/v0/deposit/status\", {\n depositId: params.depositId,\n });\n }\n\n protected async generatePermit(params: HyperliquidGeneratePermitParams) {\n const {\n evmWalletAddress,\n evmWallet,\n amountWei,\n } = params;\n\n const tokenAddress = DESTINATION_TOKEN.contractAddress;\n\n const signature = await (evmWallet as any).signTypedData({\n fromToken: DESTINATION_TOKEN,\n amountWei: amountWei,\n spender: SPENDER,\n });\n\n const permitParams = {\n amount: signature.value,\n deadline: signature.deadline,\n owner: signature.owner,\n r: signature.r,\n s: signature.s,\n spender: SPENDER,\n token: tokenAddress,\n v: signature.v,\n nonce: signature.nonce,\n };\n\n return permitParams;\n }\n}\n\nexport const Hyperliquid = new HyperliquidService();\n\nexport const HyperliquidFromTokens = tokens\n .filter((token) => token.services.includes(Service.OneClick))\n .filter((token) => !(token.chainName === \"Arbitrum\" && token.symbol === \"USDC\"));\nexport const HyperliuquidToToken = DESTINATION_TOKEN;\nexport const HyperliuquidMinAmount = MIN_AMOUNT + \"\";\n\nexport interface HyperliquidQuoteParams {\n slippageTolerance: number;\n refundTo: string;\n recipient: string;\n wallet: WalletConfig;\n fromToken: TokenConfig;\n prices: Record<string, string>;\n amountWei: string;\n // Whether to generate deposit address\n // false will generate a deposit address\n dry?: boolean;\n oneclickParams?: {\n appFees?: { recipient: string; fee: number; }[];\n };\n}\n\nexport interface HyperliquidTransferParams {\n // bridge wallet\n wallet: WalletConfig;\n // deposit wallet (evm wallet)\n evmWallet: WalletConfig;\n // deposit wallet address\n evmWalletAddress: string;\n // quote result with deposit address\n quote: any;\n}\n\nexport interface HyperliquidGeneratePermitParams {\n evmWalletAddress: string;\n evmWallet: WalletConfig;\n amountWei: string;\n}\n\nexport interface HyperliquidDepositParams extends HyperliquidTransferParams {\n txhash: string;\n}\n\nexport interface HyperliquidGetStatusParams {\n depositId: string;\n}\n\nexport interface HyperliquidResponse<T> {\n code: number;\n data: T;\n}\n\nexport interface HyperliquidDepositResponseData {\n depositId: number;\n}\n\nexport type HyperliquidDepositResponse = HyperliquidResponse<HyperliquidDepositResponseData>;\n\nexport type HyperliquidDepositStatus = \"PROCESSING\" | \"SUCCESS\" | \"REFUNDED\" | \"FAILED\";\n\nexport interface HyperliquidDepositStatusResponseData {\n status: HyperliquidDepositStatus;\n txHash: string;\n}\n\nexport type HyperliquidDepositStatusResponse = HyperliquidResponse<HyperliquidDepositStatusResponseData>;\n"]}
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { usdcChains, tokens, Service, request, OpenAPI } from '@stableflow/core';
1
+ import { usdcChains, tokens, Service, postRequest, getRequest } from '@stableflow/core';
2
2
  import { ServiceMap, formatQuoteError } from '@stableflow/bridges';
3
3
 
4
4
  // src/index.ts
@@ -75,30 +75,12 @@ var HyperliquidService = class {
75
75
  type: Service.OneClick,
76
76
  permit: permitParams
77
77
  };
78
- const depositRes = await request(OpenAPI, {
79
- method: "POST",
80
- url: "/v0/deposit",
81
- body: depositParams,
82
- mediaType: "application/json",
83
- errors: {
84
- 400: `Bad Request - Invalid input data`,
85
- 401: `Unauthorized - JWT token is invalid`
86
- }
87
- });
78
+ const depositRes = await postRequest("/v0/deposit", depositParams);
88
79
  return depositRes;
89
80
  }
90
- async getStatus(params) {
91
- return request(OpenAPI, {
92
- method: "GET",
93
- url: "/v0/deposit/status",
94
- query: {
95
- depositId: params.depositId
96
- },
97
- mediaType: "application/json",
98
- errors: {
99
- 400: `Bad Request - Invalid input data`,
100
- 401: `Unauthorized - JWT token is invalid`
101
- }
81
+ getStatus(params) {
82
+ return getRequest("/v0/deposit/status", {
83
+ depositId: params.depositId
102
84
  });
103
85
  }
104
86
  async generatePermit(params) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":["__request"],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n request as __request,\n usdcChains,\n Service,\n tokens,\n OpenAPI,\n} from '@stableflow/core';\nimport { formatQuoteError, ServiceMap } from '@stableflow/bridges';\nimport type { WalletConfig, TokenConfig } from '@stableflow/core';\n\nconst SPENDER = \"0x2df1c51e09aecf9cacb7bc98cb1742757f163df7\";\nconst DESTINATION_TOKEN = usdcChains[\"arb\"];\nconst MIN_AMOUNT = 5 * (10 ** DESTINATION_TOKEN.decimals);\n\nclass HyperliquidService {\n public async quote(params: HyperliquidQuoteParams): Promise<{ quote: any; error: string | null; }> {\n\n const result: { quote: any; error: string | null; } = { quote: null, error: null };\n\n if (BigInt(params.amountWei || 0) < BigInt(MIN_AMOUNT)) {\n result.error = `Amount is too low, at least ${MIN_AMOUNT}`;\n return result;\n }\n\n const quoteParams = {\n ...params,\n dry: params.dry ?? true,\n slippageTolerance: params.slippageTolerance * 100,\n originAsset: params.fromToken.assetId,\n toToken: DESTINATION_TOKEN,\n destinationAsset: DESTINATION_TOKEN.assetId,\n amount: params.amountWei,\n refundType: \"ORIGIN_CHAIN\",\n appFees: params.oneclickParams?.appFees,\n swapType: \"EXACT_OUTPUT\",\n isProxy: false,\n };\n\n try {\n const quoteRes = await ServiceMap[Service.OneClick].quote(quoteParams);\n result.quote = quoteRes;\n } catch (error) {\n const _err = formatQuoteError(error, { service: Service.OneClick, fromToken: params.fromToken });\n result.error = _err.error;\n }\n\n return result;\n }\n\n public async transfer(params: HyperliquidTransferParams): Promise<string> {\n const {\n quote,\n wallet,\n } = params;\n\n const sendParams = {\n wallet,\n sendParam: quote?.sendParam,\n fromToken: quote?.quoteParam.fromToken,\n depositAddress: quote?.quote?.depositAddress,\n amountWei: quote?.quote?.amountIn,\n };\n\n const txhash = await ServiceMap[Service.OneClick].send(sendParams);\n\n return txhash;\n }\n\n public async deposit(params: HyperliquidDepositParams): Promise<HyperliquidDepositResponse> {\n const {\n evmWallet,\n evmWalletAddress,\n quote,\n txhash,\n } = params;\n\n const permitParams = await this.generatePermit({\n evmWalletAddress,\n evmWallet,\n amountWei: quote?.quote?.amountOut,\n });\n\n const depositParams = {\n deposit_address: quote?.quote?.depositAddress,\n from_addr: quote?.quoteParam?.refundTo,\n from_amount: quote?.quote?.amountIn,\n from_chain: quote?.quoteParam?.fromToken?.blockchain,\n from_hash: txhash,\n from_token: quote?.quoteParam?.fromToken?.contractAddress,\n sender: quote?.quoteParam?.recipient,\n to_amount: quote?.quote?.amountOut,\n to_chain: quote?.quoteParam?.toToken?.blockchain,\n to_token: quote?.quoteParam?.toToken?.contractAddress,\n type: Service.OneClick,\n\n permit: permitParams,\n };\n\n const depositRes = await __request(OpenAPI, {\n method: \"POST\",\n url: \"/v0/deposit\",\n body: depositParams,\n mediaType: \"application/json\",\n errors: {\n 400: `Bad Request - Invalid input data`,\n 401: `Unauthorized - JWT token is invalid`,\n },\n });\n\n return depositRes as HyperliquidDepositResponse;\n }\n\n public async getStatus(params: HyperliquidGetStatusParams): Promise<HyperliquidDepositStatusResponse> {\n return __request(OpenAPI, {\n method: \"GET\",\n url: \"/v0/deposit/status\",\n query: {\n depositId: params.depositId,\n },\n mediaType: \"application/json\",\n errors: {\n 400: `Bad Request - Invalid input data`,\n 401: `Unauthorized - JWT token is invalid`,\n },\n });\n }\n\n protected async generatePermit(params: HyperliquidGeneratePermitParams) {\n const {\n evmWalletAddress,\n evmWallet,\n amountWei,\n } = params;\n\n const tokenAddress = DESTINATION_TOKEN.contractAddress;\n\n const signature = await (evmWallet as any).signTypedData({\n fromToken: DESTINATION_TOKEN,\n amountWei: amountWei,\n spender: SPENDER,\n });\n\n const permitParams = {\n amount: signature.value,\n deadline: signature.deadline,\n owner: signature.owner,\n r: signature.r,\n s: signature.s,\n spender: SPENDER,\n token: tokenAddress,\n v: signature.v,\n nonce: signature.nonce,\n };\n\n return permitParams;\n }\n}\n\nexport const Hyperliquid = new HyperliquidService();\n\nexport const HyperliquidFromTokens = tokens\n .filter((token) => token.services.includes(Service.OneClick))\n .filter((token) => !(token.chainName === \"Arbitrum\" && token.symbol === \"USDC\"));\nexport const HyperliuquidToToken = DESTINATION_TOKEN;\nexport const HyperliuquidMinAmount = MIN_AMOUNT + \"\";\n\nexport interface HyperliquidQuoteParams {\n slippageTolerance: number;\n refundTo: string;\n recipient: string;\n wallet: WalletConfig;\n fromToken: TokenConfig;\n prices: Record<string, string>;\n amountWei: string;\n // Whether to generate deposit address\n // false will generate a deposit address\n dry?: boolean;\n oneclickParams?: {\n appFees?: { recipient: string; fee: number; }[];\n };\n}\n\nexport interface HyperliquidTransferParams {\n // bridge wallet\n wallet: WalletConfig;\n // deposit wallet (evm wallet)\n evmWallet: WalletConfig;\n // deposit wallet address\n evmWalletAddress: string;\n // quote result with deposit address\n quote: any;\n}\n\nexport interface HyperliquidGeneratePermitParams {\n evmWalletAddress: string;\n evmWallet: WalletConfig;\n amountWei: string;\n}\n\nexport interface HyperliquidDepositParams extends HyperliquidTransferParams {\n txhash: string;\n}\n\nexport interface HyperliquidGetStatusParams {\n depositId: string;\n}\n\nexport interface HyperliquidResponse<T> {\n code: number;\n data: T;\n}\n\nexport interface HyperliquidDepositResponseData {\n depositId: number;\n}\n\nexport type HyperliquidDepositResponse = HyperliquidResponse<HyperliquidDepositResponseData>;\n\nexport type HyperliquidDepositStatus = \"PROCESSING\" | \"SUCCESS\" | \"REFUNDED\" | \"FAILED\";\n\nexport interface HyperliquidDepositStatusResponseData {\n status: HyperliquidDepositStatus;\n txHash: string;\n}\n\nexport type HyperliquidDepositStatusResponse = HyperliquidResponse<HyperliquidDepositStatusResponseData>;\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n usdcChains,\n Service,\n tokens,\n postRequest,\n getRequest,\n} from '@stableflow/core';\nimport { formatQuoteError, ServiceMap } from '@stableflow/bridges';\nimport type { WalletConfig, TokenConfig } from '@stableflow/core';\n\nconst SPENDER = \"0x2df1c51e09aecf9cacb7bc98cb1742757f163df7\";\nconst DESTINATION_TOKEN = usdcChains[\"arb\"];\nconst MIN_AMOUNT = 5 * (10 ** DESTINATION_TOKEN.decimals);\n\nclass HyperliquidService {\n public async quote(params: HyperliquidQuoteParams): Promise<{ quote: any; error: string | null; }> {\n\n const result: { quote: any; error: string | null; } = { quote: null, error: null };\n\n if (BigInt(params.amountWei || 0) < BigInt(MIN_AMOUNT)) {\n result.error = `Amount is too low, at least ${MIN_AMOUNT}`;\n return result;\n }\n\n const quoteParams = {\n ...params,\n dry: params.dry ?? true,\n slippageTolerance: params.slippageTolerance * 100,\n originAsset: params.fromToken.assetId,\n toToken: DESTINATION_TOKEN,\n destinationAsset: DESTINATION_TOKEN.assetId,\n amount: params.amountWei,\n refundType: \"ORIGIN_CHAIN\",\n appFees: params.oneclickParams?.appFees,\n swapType: \"EXACT_OUTPUT\",\n isProxy: false,\n };\n\n try {\n const quoteRes = await ServiceMap[Service.OneClick].quote(quoteParams);\n result.quote = quoteRes;\n } catch (error) {\n const _err = formatQuoteError(error, { service: Service.OneClick, fromToken: params.fromToken });\n result.error = _err.error;\n }\n\n return result;\n }\n\n public async transfer(params: HyperliquidTransferParams): Promise<string> {\n const {\n quote,\n wallet,\n } = params;\n\n const sendParams = {\n wallet,\n sendParam: quote?.sendParam,\n fromToken: quote?.quoteParam.fromToken,\n depositAddress: quote?.quote?.depositAddress,\n amountWei: quote?.quote?.amountIn,\n };\n\n const txhash = await ServiceMap[Service.OneClick].send(sendParams);\n\n return txhash;\n }\n\n public async deposit(params: HyperliquidDepositParams): Promise<HyperliquidDepositResponse> {\n const {\n evmWallet,\n evmWalletAddress,\n quote,\n txhash,\n } = params;\n\n const permitParams = await this.generatePermit({\n evmWalletAddress,\n evmWallet,\n amountWei: quote?.quote?.amountOut,\n });\n\n const depositParams = {\n deposit_address: quote?.quote?.depositAddress,\n from_addr: quote?.quoteParam?.refundTo,\n from_amount: quote?.quote?.amountIn,\n from_chain: quote?.quoteParam?.fromToken?.blockchain,\n from_hash: txhash,\n from_token: quote?.quoteParam?.fromToken?.contractAddress,\n sender: quote?.quoteParam?.recipient,\n to_amount: quote?.quote?.amountOut,\n to_chain: quote?.quoteParam?.toToken?.blockchain,\n to_token: quote?.quoteParam?.toToken?.contractAddress,\n type: Service.OneClick,\n\n permit: permitParams,\n };\n\n const depositRes = await postRequest(\"/v0/deposit\", depositParams);\n\n return depositRes as HyperliquidDepositResponse;\n }\n\n public getStatus(params: HyperliquidGetStatusParams): Promise<HyperliquidDepositStatusResponse> {\n return getRequest(\"/v0/deposit/status\", {\n depositId: params.depositId,\n });\n }\n\n protected async generatePermit(params: HyperliquidGeneratePermitParams) {\n const {\n evmWalletAddress,\n evmWallet,\n amountWei,\n } = params;\n\n const tokenAddress = DESTINATION_TOKEN.contractAddress;\n\n const signature = await (evmWallet as any).signTypedData({\n fromToken: DESTINATION_TOKEN,\n amountWei: amountWei,\n spender: SPENDER,\n });\n\n const permitParams = {\n amount: signature.value,\n deadline: signature.deadline,\n owner: signature.owner,\n r: signature.r,\n s: signature.s,\n spender: SPENDER,\n token: tokenAddress,\n v: signature.v,\n nonce: signature.nonce,\n };\n\n return permitParams;\n }\n}\n\nexport const Hyperliquid = new HyperliquidService();\n\nexport const HyperliquidFromTokens = tokens\n .filter((token) => token.services.includes(Service.OneClick))\n .filter((token) => !(token.chainName === \"Arbitrum\" && token.symbol === \"USDC\"));\nexport const HyperliuquidToToken = DESTINATION_TOKEN;\nexport const HyperliuquidMinAmount = MIN_AMOUNT + \"\";\n\nexport interface HyperliquidQuoteParams {\n slippageTolerance: number;\n refundTo: string;\n recipient: string;\n wallet: WalletConfig;\n fromToken: TokenConfig;\n prices: Record<string, string>;\n amountWei: string;\n // Whether to generate deposit address\n // false will generate a deposit address\n dry?: boolean;\n oneclickParams?: {\n appFees?: { recipient: string; fee: number; }[];\n };\n}\n\nexport interface HyperliquidTransferParams {\n // bridge wallet\n wallet: WalletConfig;\n // deposit wallet (evm wallet)\n evmWallet: WalletConfig;\n // deposit wallet address\n evmWalletAddress: string;\n // quote result with deposit address\n quote: any;\n}\n\nexport interface HyperliquidGeneratePermitParams {\n evmWalletAddress: string;\n evmWallet: WalletConfig;\n amountWei: string;\n}\n\nexport interface HyperliquidDepositParams extends HyperliquidTransferParams {\n txhash: string;\n}\n\nexport interface HyperliquidGetStatusParams {\n depositId: string;\n}\n\nexport interface HyperliquidResponse<T> {\n code: number;\n data: T;\n}\n\nexport interface HyperliquidDepositResponseData {\n depositId: number;\n}\n\nexport type HyperliquidDepositResponse = HyperliquidResponse<HyperliquidDepositResponseData>;\n\nexport type HyperliquidDepositStatus = \"PROCESSING\" | \"SUCCESS\" | \"REFUNDED\" | \"FAILED\";\n\nexport interface HyperliquidDepositStatusResponseData {\n status: HyperliquidDepositStatus;\n txHash: string;\n}\n\nexport type HyperliquidDepositStatusResponse = HyperliquidResponse<HyperliquidDepositStatusResponseData>;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stableflow/hyperliquid",
3
- "version": "3.0.0-rc-a593caa0fe-20260518",
3
+ "version": "3.0.0-rc-b42c101df2-20260520",
4
4
  "description": "Hyperliquid helpers for StableFlow SDK",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -22,8 +22,8 @@
22
22
  "dist"
23
23
  ],
24
24
  "dependencies": {
25
- "@stableflow/bridges": "3.0.0-rc-a593caa0fe-20260518",
26
- "@stableflow/core": "3.0.0-rc-a593caa0fe-20260518"
25
+ "@stableflow/bridges": "3.0.0-rc-b42c101df2-20260520",
26
+ "@stableflow/core": "3.0.0-rc-b42c101df2-20260520"
27
27
  },
28
28
  "devDependencies": {
29
29
  "tsup": "^8.5.1",