@stableflow/hyperliquid 3.1.1-beta-a6a26eeb19-20260721 → 3.1.1-beta-3c46f81730-20260722
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.d.mts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -30,7 +30,11 @@ interface HyperliquidQuoteParams {
|
|
|
30
30
|
recipient: string;
|
|
31
31
|
wallet: WalletConfig;
|
|
32
32
|
fromToken: TokenConfig;
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* @deprecated The SDK now fetches trusted token prices internally. Any value
|
|
35
|
+
* passed here is ignored and overridden by the built-in price source.
|
|
36
|
+
*/
|
|
37
|
+
prices?: Record<string, string>;
|
|
34
38
|
/**
|
|
35
39
|
* Desired output amount in the smallest unit of the destination token
|
|
36
40
|
* (Arbitrum USDC / HyperliuquidToToken), not fromToken.
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,11 @@ interface HyperliquidQuoteParams {
|
|
|
30
30
|
recipient: string;
|
|
31
31
|
wallet: WalletConfig;
|
|
32
32
|
fromToken: TokenConfig;
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* @deprecated The SDK now fetches trusted token prices internally. Any value
|
|
35
|
+
* passed here is ignored and overridden by the built-in price source.
|
|
36
|
+
*/
|
|
37
|
+
prices?: Record<string, string>;
|
|
34
38
|
/**
|
|
35
39
|
* Desired output amount in the smallest unit of the destination token
|
|
36
40
|
* (Arbitrum USDC / HyperliuquidToToken), not fromToken.
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["usdcChains","OneClickSwapType","ServiceMap","Service","formatQuoteError","postRequest","getRequest","tokens"],"mappings":"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","file":"index.js","sourcesContent":["import {\n usdcChains,\n Service,\n OneClickSwapType,\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: OneClickSwapType.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 /**\n * Desired output amount in the smallest unit of the destination token\n * (Arbitrum USDC / HyperliuquidToToken), not fromToken.\n * Hyperliquid.quote uses OneClick EXACT_OUTPUT and forwards this value as-is.\n */\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","getPrices","OneClickSwapType","ServiceMap","Service","formatQuoteError","postRequest","getRequest","tokens"],"mappings":";;;;;;AAYA,IAAM,OAAA,GAAU,4CAAA;AAChB,IAAM,iBAAA,GAAoBA,gBAAW,KAAK,CAAA;AAC1C,IAAM,UAAA,GAAa,CAAA,GAAK,EAAA,IAAM,iBAAA,CAAkB,QAAA;AAEhD,IAAM,qBAAN,MAAyB;AAAA,EACvB,MAAa,MAAM,MAAA,EAAgF;AAEjG,IAAA,MAAM,MAAA,GAAgD,EAAE,KAAA,EAAO,IAAA,EAAM,OAAO,IAAA,EAAK;AAEjF,IAAA,IAAI,OAAO,MAAA,CAAO,SAAA,IAAa,CAAC,CAAA,GAAI,MAAA,CAAO,UAAU,CAAA,EAAG;AACtD,MAAA,MAAA,CAAO,KAAA,GAAQ,+BAA+B,UAAU,CAAA,CAAA;AACxD,MAAA,OAAO,MAAA;AAAA,IACT;AAGA,IAAA,MAAA,CAAO,MAAA,GAAS,MAAMC,cAAA,EAAU;AAEhC,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,GAAG,MAAA;AAAA,MACH,GAAA,EAAK,OAAO,GAAA,IAAO,IAAA;AAAA,MACnB,iBAAA,EAAmB,OAAO,iBAAA,GAAoB,GAAA;AAAA,MAC9C,WAAA,EAAa,OAAO,SAAA,CAAU,OAAA;AAAA,MAC9B,OAAA,EAAS,iBAAA;AAAA,MACT,kBAAkB,iBAAA,CAAkB,OAAA;AAAA,MACpC,QAAQ,MAAA,CAAO,SAAA;AAAA,MACf,UAAA,EAAY,cAAA;AAAA,MACZ,OAAA,EAAS,OAAO,cAAA,EAAgB,OAAA;AAAA,MAChC,UAAUC,qBAAA,CAAiB,MAAA;AAAA,MAC3B,OAAA,EAAS;AAAA,KACX;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,MAAMC,kBAAA,CAAWC,aAAQ,QAAQ,CAAA,CAAE,MAAM,WAAW,CAAA;AACrE,MAAA,MAAA,CAAO,KAAA,GAAQ,QAAA;AAAA,IACjB,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,IAAA,GAAOC,wBAAA,CAAiB,KAAA,EAAO,EAAE,OAAA,EAASD,aAAQ,QAAA,EAAU,SAAA,EAAW,MAAA,CAAO,SAAA,EAAW,CAAA;AAC/F,MAAA,MAAA,CAAO,QAAQ,IAAA,CAAK,KAAA;AAAA,IACtB;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAa,SAAS,MAAA,EAAoD;AACxE,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA;AAAA,KACF,GAAI,MAAA;AAEJ,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,MAAA;AAAA,MACA,WAAW,KAAA,EAAO,SAAA;AAAA,MAClB,SAAA,EAAW,OAAO,UAAA,CAAW,SAAA;AAAA,MAC7B,cAAA,EAAgB,OAAO,KAAA,EAAO,cAAA;AAAA,MAC9B,SAAA,EAAW,OAAO,KAAA,EAAO;AAAA,KAC3B;AAEA,IAAA,MAAM,SAAS,MAAMD,kBAAA,CAAWC,aAAQ,QAAQ,CAAA,CAAE,KAAK,UAAU,CAAA;AAEjE,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAa,QAAQ,MAAA,EAAuE;AAC1F,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF,GAAI,MAAA;AAEJ,IAAA,MAAM,YAAA,GAAe,MAAM,IAAA,CAAK,cAAA,CAAe;AAAA,MAC7C,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA,EAAW,OAAO,KAAA,EAAO;AAAA,KAC1B,CAAA;AAED,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,eAAA,EAAiB,OAAO,KAAA,EAAO,cAAA;AAAA,MAC/B,SAAA,EAAW,OAAO,UAAA,EAAY,QAAA;AAAA,MAC9B,WAAA,EAAa,OAAO,KAAA,EAAO,QAAA;AAAA,MAC3B,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,SAAA,EAAW,UAAA;AAAA,MAC1C,SAAA,EAAW,MAAA;AAAA,MACX,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,SAAA,EAAW,eAAA;AAAA,MAC1C,MAAA,EAAQ,OAAO,UAAA,EAAY,SAAA;AAAA,MAC3B,SAAA,EAAW,OAAO,KAAA,EAAO,SAAA;AAAA,MACzB,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,UAAA;AAAA,MACtC,QAAA,EAAU,KAAA,EAAO,UAAA,EAAY,OAAA,EAAS,eAAA;AAAA,MACtC,MAAMA,YAAA,CAAQ,QAAA;AAAA,MAEd,MAAA,EAAQ;AAAA,KACV;AAEA,IAAA,MAAM,UAAA,GAAa,MAAME,gBAAA,CAAY,aAAA,EAAe,aAAa,CAAA;AAEjE,IAAA,OAAO,UAAA;AAAA,EACT;AAAA,EAEO,UAAU,MAAA,EAA+E;AAC9F,IAAA,OAAOC,gBAAW,oBAAA,EAAsB;AAAA,MACtC,WAAW,MAAA,CAAO;AAAA,KACnB,CAAA;AAAA,EACH;AAAA,EAEA,MAAgB,eAAe,MAAA,EAAyC;AACtE,IAAA,MAAM;AAAA,MACJ,gBAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF,GAAI,MAAA;AAEJ,IAAA,MAAM,eAAe,iBAAA,CAAkB,eAAA;AAEvC,IAAA,MAAM,SAAA,GAAY,MAAO,SAAA,CAAkB,aAAA,CAAc;AAAA,MACvD,SAAA,EAAW,iBAAA;AAAA,MACX,SAAA;AAAA,MACA,OAAA,EAAS;AAAA,KACV,CAAA;AAED,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB,QAAQ,SAAA,CAAU,KAAA;AAAA,MAClB,UAAU,SAAA,CAAU,QAAA;AAAA,MACpB,OAAO,SAAA,CAAU,KAAA;AAAA,MACjB,GAAG,SAAA,CAAU,CAAA;AAAA,MACb,GAAG,SAAA,CAAU,CAAA;AAAA,MACb,OAAA,EAAS,OAAA;AAAA,MACT,KAAA,EAAO,YAAA;AAAA,MACP,GAAG,SAAA,CAAU,CAAA;AAAA,MACb,OAAO,SAAA,CAAU;AAAA,KACnB;AAEA,IAAA,OAAO,YAAA;AAAA,EACT;AACF,CAAA;AAEO,IAAM,WAAA,GAAc,IAAI,kBAAA;AAExB,IAAM,qBAAA,GAAwBC,YAClC,MAAA,CAAO,CAAC,UAAU,KAAA,CAAM,QAAA,CAAS,SAASJ,YAAA,CAAQ,QAAQ,CAAC,CAAA,CAC3D,MAAA,CAAO,CAAC,KAAA,KAAU,EAAE,MAAM,SAAA,KAAc,UAAA,IAAc,KAAA,CAAM,MAAA,KAAW,MAAA,CAAO;AAC1E,IAAM,mBAAA,GAAsB;AAC5B,IAAM,wBAAwB,UAAA,GAAa","file":"index.js","sourcesContent":["import {\n usdcChains,\n Service,\n OneClickSwapType,\n tokens,\n postRequest,\n getRequest,\n getPrices,\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 // Always use trusted prices fetched by the SDK; ignore any caller-supplied value.\n params.prices = await getPrices();\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: OneClickSwapType.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 /**\n * @deprecated The SDK now fetches trusted token prices internally. Any value\n * passed here is ignored and overridden by the built-in price source.\n */\n prices?: Record<string, string>;\n /**\n * Desired output amount in the smallest unit of the destination token\n * (Arbitrum USDC / HyperliuquidToToken), not fromToken.\n * Hyperliquid.quote uses OneClick EXACT_OUTPUT and forwards this value as-is.\n */\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, OneClickSwapType, postRequest, getRequest } from '@stableflow/core';
|
|
1
|
+
import { usdcChains, tokens, Service, getPrices, OneClickSwapType, postRequest, getRequest } from '@stableflow/core';
|
|
2
2
|
import { ServiceMap, formatQuoteError } from '@stableflow/bridges';
|
|
3
3
|
|
|
4
4
|
// src/index.ts
|
|
@@ -12,6 +12,7 @@ var HyperliquidService = class {
|
|
|
12
12
|
result.error = `Amount is too low, at least ${MIN_AMOUNT}`;
|
|
13
13
|
return result;
|
|
14
14
|
}
|
|
15
|
+
params.prices = await getPrices();
|
|
15
16
|
const quoteParams = {
|
|
16
17
|
...params,
|
|
17
18
|
dry: params.dry ?? true,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n usdcChains,\n Service,\n OneClickSwapType,\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: OneClickSwapType.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 /**\n * Desired output amount in the smallest unit of the destination token\n * (Arbitrum USDC / HyperliuquidToToken), not fromToken.\n * Hyperliquid.quote uses OneClick EXACT_OUTPUT and forwards this value as-is.\n */\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 OneClickSwapType,\n tokens,\n postRequest,\n getRequest,\n getPrices,\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 // Always use trusted prices fetched by the SDK; ignore any caller-supplied value.\n params.prices = await getPrices();\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: OneClickSwapType.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 /**\n * @deprecated The SDK now fetches trusted token prices internally. Any value\n * passed here is ignored and overridden by the built-in price source.\n */\n prices?: Record<string, string>;\n /**\n * Desired output amount in the smallest unit of the destination token\n * (Arbitrum USDC / HyperliuquidToToken), not fromToken.\n * Hyperliquid.quote uses OneClick EXACT_OUTPUT and forwards this value as-is.\n */\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.1.1-beta-
|
|
3
|
+
"version": "3.1.1-beta-3c46f81730-20260722",
|
|
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.1.1-beta-
|
|
26
|
-
"@stableflow/core": "3.1.1-beta-
|
|
25
|
+
"@stableflow/bridges": "3.1.1-beta-3c46f81730-20260722",
|
|
26
|
+
"@stableflow/core": "3.1.1-beta-3c46f81730-20260722"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"tsup": "^8.5.1",
|