@stableflow/hyperliquid 0.0.0-experimental-5a8afd7389-20260703

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 StableFlow AI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # @stableflow/hyperliquid
2
+
3
+ Hyperliquid deposit helpers for the StableFlow SDK: quote via OneClick, transfer on source chain, permit + deposit to Hyperliquid, and status polling.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @stableflow/hyperliquid @stableflow/core @stableflow/bridges
9
+ ```
10
+
11
+ Install wallet adapters for the source chain (e.g. `@stableflow/wallet-evm`, `@stableflow/wallet-solana`) and an EVM wallet on Arbitrum for USDC permit signing.
12
+
13
+ ## Main exports
14
+
15
+ | Export | Description |
16
+ |--------|-------------|
17
+ | `Hyperliquid` | Service instance: `quote`, `transfer`, `deposit`, `getStatus` |
18
+ | `HyperliquidFromTokens` | Supported source tokens |
19
+ | `HyperliuquidToToken` | Destination token (USDC on Arbitrum) — note typo in export name |
20
+ | `HyperliuquidMinAmount` | Minimum `amountWei` for quotes — note typo in export name |
21
+
22
+ Types: `HyperliquidQuoteParams`, `HyperliquidTransferParams`, `HyperliquidDepositParams`, `HyperliquidGetStatusParams`, …
23
+
24
+ ## Flow
25
+
26
+ 1. `Hyperliquid.quote({ dry: true, ... })` — fast estimate (default `dry: true`)
27
+ 2. `Hyperliquid.quote({ dry: false, ... })` — obtain deposit address before transfer
28
+ 3. `Hyperliquid.transfer({ wallet, quote })` — source-chain deposit tx
29
+ 4. `Hyperliquid.deposit({ evmWallet, evmWalletAddress, quote, txhash })` — Arbitrum USDC permit + API deposit
30
+ 5. `Hyperliquid.getStatus({ depositId })` — poll deposit status
31
+
32
+ See [Developer Guide](../../DEVELOPER_GUIDE.md#hyperliquid) for details.
33
+
34
+ ## See also
35
+
36
+ - [@stableflow/bridges](../bridges/README.md)
37
+ - [@stableflow/core](../core/README.md)
@@ -0,0 +1,75 @@
1
+ import { WalletConfig, TokenConfig } from '@stableflow/core';
2
+
3
+ declare class HyperliquidService {
4
+ quote(params: HyperliquidQuoteParams): Promise<{
5
+ quote: any;
6
+ error: string | null;
7
+ }>;
8
+ transfer(params: HyperliquidTransferParams): Promise<string>;
9
+ deposit(params: HyperliquidDepositParams): Promise<HyperliquidDepositResponse>;
10
+ getStatus(params: HyperliquidGetStatusParams): Promise<HyperliquidDepositStatusResponse>;
11
+ protected generatePermit(params: HyperliquidGeneratePermitParams): Promise<{
12
+ amount: any;
13
+ deadline: any;
14
+ owner: any;
15
+ r: any;
16
+ s: any;
17
+ spender: string;
18
+ token: string;
19
+ v: any;
20
+ nonce: any;
21
+ }>;
22
+ }
23
+ declare const Hyperliquid: HyperliquidService;
24
+ declare const HyperliquidFromTokens: TokenConfig[];
25
+ declare const HyperliuquidToToken: TokenConfig;
26
+ declare const HyperliuquidMinAmount: string;
27
+ interface HyperliquidQuoteParams {
28
+ slippageTolerance: number;
29
+ refundTo: string;
30
+ recipient: string;
31
+ wallet: WalletConfig;
32
+ fromToken: TokenConfig;
33
+ prices: Record<string, string>;
34
+ amountWei: string;
35
+ dry?: boolean;
36
+ oneclickParams?: {
37
+ appFees?: {
38
+ recipient: string;
39
+ fee: number;
40
+ }[];
41
+ };
42
+ }
43
+ interface HyperliquidTransferParams {
44
+ wallet: WalletConfig;
45
+ evmWallet: WalletConfig;
46
+ evmWalletAddress: string;
47
+ quote: any;
48
+ }
49
+ interface HyperliquidGeneratePermitParams {
50
+ evmWalletAddress: string;
51
+ evmWallet: WalletConfig;
52
+ amountWei: string;
53
+ }
54
+ interface HyperliquidDepositParams extends HyperliquidTransferParams {
55
+ txhash: string;
56
+ }
57
+ interface HyperliquidGetStatusParams {
58
+ depositId: string;
59
+ }
60
+ interface HyperliquidResponse<T> {
61
+ code: number;
62
+ data: T;
63
+ }
64
+ interface HyperliquidDepositResponseData {
65
+ depositId: number;
66
+ }
67
+ type HyperliquidDepositResponse = HyperliquidResponse<HyperliquidDepositResponseData>;
68
+ type HyperliquidDepositStatus = "PROCESSING" | "SUCCESS" | "REFUNDED" | "FAILED";
69
+ interface HyperliquidDepositStatusResponseData {
70
+ status: HyperliquidDepositStatus;
71
+ txHash: string;
72
+ }
73
+ type HyperliquidDepositStatusResponse = HyperliquidResponse<HyperliquidDepositStatusResponseData>;
74
+
75
+ export { Hyperliquid, type HyperliquidDepositParams, type HyperliquidDepositResponse, type HyperliquidDepositResponseData, type HyperliquidDepositStatus, type HyperliquidDepositStatusResponse, type HyperliquidDepositStatusResponseData, HyperliquidFromTokens, type HyperliquidGeneratePermitParams, type HyperliquidGetStatusParams, type HyperliquidQuoteParams, type HyperliquidResponse, type HyperliquidTransferParams, HyperliuquidMinAmount, HyperliuquidToToken };
@@ -0,0 +1,75 @@
1
+ import { WalletConfig, TokenConfig } from '@stableflow/core';
2
+
3
+ declare class HyperliquidService {
4
+ quote(params: HyperliquidQuoteParams): Promise<{
5
+ quote: any;
6
+ error: string | null;
7
+ }>;
8
+ transfer(params: HyperliquidTransferParams): Promise<string>;
9
+ deposit(params: HyperliquidDepositParams): Promise<HyperliquidDepositResponse>;
10
+ getStatus(params: HyperliquidGetStatusParams): Promise<HyperliquidDepositStatusResponse>;
11
+ protected generatePermit(params: HyperliquidGeneratePermitParams): Promise<{
12
+ amount: any;
13
+ deadline: any;
14
+ owner: any;
15
+ r: any;
16
+ s: any;
17
+ spender: string;
18
+ token: string;
19
+ v: any;
20
+ nonce: any;
21
+ }>;
22
+ }
23
+ declare const Hyperliquid: HyperliquidService;
24
+ declare const HyperliquidFromTokens: TokenConfig[];
25
+ declare const HyperliuquidToToken: TokenConfig;
26
+ declare const HyperliuquidMinAmount: string;
27
+ interface HyperliquidQuoteParams {
28
+ slippageTolerance: number;
29
+ refundTo: string;
30
+ recipient: string;
31
+ wallet: WalletConfig;
32
+ fromToken: TokenConfig;
33
+ prices: Record<string, string>;
34
+ amountWei: string;
35
+ dry?: boolean;
36
+ oneclickParams?: {
37
+ appFees?: {
38
+ recipient: string;
39
+ fee: number;
40
+ }[];
41
+ };
42
+ }
43
+ interface HyperliquidTransferParams {
44
+ wallet: WalletConfig;
45
+ evmWallet: WalletConfig;
46
+ evmWalletAddress: string;
47
+ quote: any;
48
+ }
49
+ interface HyperliquidGeneratePermitParams {
50
+ evmWalletAddress: string;
51
+ evmWallet: WalletConfig;
52
+ amountWei: string;
53
+ }
54
+ interface HyperliquidDepositParams extends HyperliquidTransferParams {
55
+ txhash: string;
56
+ }
57
+ interface HyperliquidGetStatusParams {
58
+ depositId: string;
59
+ }
60
+ interface HyperliquidResponse<T> {
61
+ code: number;
62
+ data: T;
63
+ }
64
+ interface HyperliquidDepositResponseData {
65
+ depositId: number;
66
+ }
67
+ type HyperliquidDepositResponse = HyperliquidResponse<HyperliquidDepositResponseData>;
68
+ type HyperliquidDepositStatus = "PROCESSING" | "SUCCESS" | "REFUNDED" | "FAILED";
69
+ interface HyperliquidDepositStatusResponseData {
70
+ status: HyperliquidDepositStatus;
71
+ txHash: string;
72
+ }
73
+ type HyperliquidDepositStatusResponse = HyperliquidResponse<HyperliquidDepositStatusResponseData>;
74
+
75
+ export { Hyperliquid, type HyperliquidDepositParams, type HyperliquidDepositResponse, type HyperliquidDepositResponseData, type HyperliquidDepositStatus, type HyperliquidDepositStatusResponse, type HyperliquidDepositStatusResponseData, HyperliquidFromTokens, type HyperliquidGeneratePermitParams, type HyperliquidGetStatusParams, type HyperliquidQuoteParams, type HyperliquidResponse, type HyperliquidTransferParams, HyperliuquidMinAmount, HyperliuquidToToken };
package/dist/index.js ADDED
@@ -0,0 +1,124 @@
1
+ 'use strict';
2
+
3
+ var core = require('@stableflow/core');
4
+ var bridges = require('@stableflow/bridges');
5
+
6
+ // src/index.ts
7
+ var SPENDER = "0x2df1c51e09aecf9cacb7bc98cb1742757f163df7";
8
+ var DESTINATION_TOKEN = core.usdcChains["arb"];
9
+ var MIN_AMOUNT = 5 * 10 ** DESTINATION_TOKEN.decimals;
10
+ var HyperliquidService = class {
11
+ async quote(params) {
12
+ const result = { quote: null, error: null };
13
+ if (BigInt(params.amountWei || 0) < BigInt(MIN_AMOUNT)) {
14
+ result.error = `Amount is too low, at least ${MIN_AMOUNT}`;
15
+ return result;
16
+ }
17
+ const quoteParams = {
18
+ ...params,
19
+ dry: params.dry ?? true,
20
+ slippageTolerance: params.slippageTolerance * 100,
21
+ originAsset: params.fromToken.assetId,
22
+ toToken: DESTINATION_TOKEN,
23
+ destinationAsset: DESTINATION_TOKEN.assetId,
24
+ amount: params.amountWei,
25
+ refundType: "ORIGIN_CHAIN",
26
+ appFees: params.oneclickParams?.appFees,
27
+ swapType: "EXACT_OUTPUT",
28
+ isProxy: false
29
+ };
30
+ try {
31
+ const quoteRes = await bridges.ServiceMap[core.Service.OneClick].quote(quoteParams);
32
+ result.quote = quoteRes;
33
+ } catch (error) {
34
+ const _err = bridges.formatQuoteError(error, { service: core.Service.OneClick, fromToken: params.fromToken });
35
+ result.error = _err.error;
36
+ }
37
+ return result;
38
+ }
39
+ async transfer(params) {
40
+ const {
41
+ quote,
42
+ wallet
43
+ } = params;
44
+ const sendParams = {
45
+ wallet,
46
+ sendParam: quote?.sendParam,
47
+ fromToken: quote?.quoteParam.fromToken,
48
+ depositAddress: quote?.quote?.depositAddress,
49
+ amountWei: quote?.quote?.amountIn
50
+ };
51
+ const txhash = await bridges.ServiceMap[core.Service.OneClick].send(sendParams);
52
+ return txhash;
53
+ }
54
+ async deposit(params) {
55
+ const {
56
+ evmWallet,
57
+ evmWalletAddress,
58
+ quote,
59
+ txhash
60
+ } = params;
61
+ const permitParams = await this.generatePermit({
62
+ evmWalletAddress,
63
+ evmWallet,
64
+ amountWei: quote?.quote?.amountOut
65
+ });
66
+ const depositParams = {
67
+ deposit_address: quote?.quote?.depositAddress,
68
+ from_addr: quote?.quoteParam?.refundTo,
69
+ from_amount: quote?.quote?.amountIn,
70
+ from_chain: quote?.quoteParam?.fromToken?.blockchain,
71
+ from_hash: txhash,
72
+ from_token: quote?.quoteParam?.fromToken?.contractAddress,
73
+ sender: quote?.quoteParam?.recipient,
74
+ to_amount: quote?.quote?.amountOut,
75
+ to_chain: quote?.quoteParam?.toToken?.blockchain,
76
+ to_token: quote?.quoteParam?.toToken?.contractAddress,
77
+ type: core.Service.OneClick,
78
+ permit: permitParams
79
+ };
80
+ const depositRes = await core.postRequest("/v0/deposit", depositParams);
81
+ return depositRes;
82
+ }
83
+ getStatus(params) {
84
+ return core.getRequest("/v0/deposit/status", {
85
+ depositId: params.depositId
86
+ });
87
+ }
88
+ async generatePermit(params) {
89
+ const {
90
+ evmWalletAddress,
91
+ evmWallet,
92
+ amountWei
93
+ } = params;
94
+ const tokenAddress = DESTINATION_TOKEN.contractAddress;
95
+ const signature = await evmWallet.signTypedData({
96
+ fromToken: DESTINATION_TOKEN,
97
+ amountWei,
98
+ spender: SPENDER
99
+ });
100
+ const permitParams = {
101
+ amount: signature.value,
102
+ deadline: signature.deadline,
103
+ owner: signature.owner,
104
+ r: signature.r,
105
+ s: signature.s,
106
+ spender: SPENDER,
107
+ token: tokenAddress,
108
+ v: signature.v,
109
+ nonce: signature.nonce
110
+ };
111
+ return permitParams;
112
+ }
113
+ };
114
+ var Hyperliquid = new HyperliquidService();
115
+ var HyperliquidFromTokens = core.tokens.filter((token) => token.services.includes(core.Service.OneClick)).filter((token) => !(token.chainName === "Arbitrum" && token.symbol === "USDC"));
116
+ var HyperliuquidToToken = DESTINATION_TOKEN;
117
+ var HyperliuquidMinAmount = MIN_AMOUNT + "";
118
+
119
+ exports.Hyperliquid = Hyperliquid;
120
+ exports.HyperliquidFromTokens = HyperliquidFromTokens;
121
+ exports.HyperliuquidMinAmount = HyperliuquidMinAmount;
122
+ exports.HyperliuquidToToken = HyperliuquidToToken;
123
+ //# sourceMappingURL=index.js.map
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,119 @@
1
+ import { usdcChains, tokens, Service, postRequest, getRequest } from '@stableflow/core';
2
+ import { ServiceMap, formatQuoteError } from '@stableflow/bridges';
3
+
4
+ // src/index.ts
5
+ var SPENDER = "0x2df1c51e09aecf9cacb7bc98cb1742757f163df7";
6
+ var DESTINATION_TOKEN = usdcChains["arb"];
7
+ var MIN_AMOUNT = 5 * 10 ** DESTINATION_TOKEN.decimals;
8
+ var HyperliquidService = class {
9
+ async quote(params) {
10
+ const result = { quote: null, error: null };
11
+ if (BigInt(params.amountWei || 0) < BigInt(MIN_AMOUNT)) {
12
+ result.error = `Amount is too low, at least ${MIN_AMOUNT}`;
13
+ return result;
14
+ }
15
+ const quoteParams = {
16
+ ...params,
17
+ dry: params.dry ?? true,
18
+ slippageTolerance: params.slippageTolerance * 100,
19
+ originAsset: params.fromToken.assetId,
20
+ toToken: DESTINATION_TOKEN,
21
+ destinationAsset: DESTINATION_TOKEN.assetId,
22
+ amount: params.amountWei,
23
+ refundType: "ORIGIN_CHAIN",
24
+ appFees: params.oneclickParams?.appFees,
25
+ swapType: "EXACT_OUTPUT",
26
+ isProxy: false
27
+ };
28
+ try {
29
+ const quoteRes = await ServiceMap[Service.OneClick].quote(quoteParams);
30
+ result.quote = quoteRes;
31
+ } catch (error) {
32
+ const _err = formatQuoteError(error, { service: Service.OneClick, fromToken: params.fromToken });
33
+ result.error = _err.error;
34
+ }
35
+ return result;
36
+ }
37
+ async transfer(params) {
38
+ const {
39
+ quote,
40
+ wallet
41
+ } = params;
42
+ const sendParams = {
43
+ wallet,
44
+ sendParam: quote?.sendParam,
45
+ fromToken: quote?.quoteParam.fromToken,
46
+ depositAddress: quote?.quote?.depositAddress,
47
+ amountWei: quote?.quote?.amountIn
48
+ };
49
+ const txhash = await ServiceMap[Service.OneClick].send(sendParams);
50
+ return txhash;
51
+ }
52
+ async deposit(params) {
53
+ const {
54
+ evmWallet,
55
+ evmWalletAddress,
56
+ quote,
57
+ txhash
58
+ } = params;
59
+ const permitParams = await this.generatePermit({
60
+ evmWalletAddress,
61
+ evmWallet,
62
+ amountWei: quote?.quote?.amountOut
63
+ });
64
+ const depositParams = {
65
+ deposit_address: quote?.quote?.depositAddress,
66
+ from_addr: quote?.quoteParam?.refundTo,
67
+ from_amount: quote?.quote?.amountIn,
68
+ from_chain: quote?.quoteParam?.fromToken?.blockchain,
69
+ from_hash: txhash,
70
+ from_token: quote?.quoteParam?.fromToken?.contractAddress,
71
+ sender: quote?.quoteParam?.recipient,
72
+ to_amount: quote?.quote?.amountOut,
73
+ to_chain: quote?.quoteParam?.toToken?.blockchain,
74
+ to_token: quote?.quoteParam?.toToken?.contractAddress,
75
+ type: Service.OneClick,
76
+ permit: permitParams
77
+ };
78
+ const depositRes = await postRequest("/v0/deposit", depositParams);
79
+ return depositRes;
80
+ }
81
+ getStatus(params) {
82
+ return getRequest("/v0/deposit/status", {
83
+ depositId: params.depositId
84
+ });
85
+ }
86
+ async generatePermit(params) {
87
+ const {
88
+ evmWalletAddress,
89
+ evmWallet,
90
+ amountWei
91
+ } = params;
92
+ const tokenAddress = DESTINATION_TOKEN.contractAddress;
93
+ const signature = await evmWallet.signTypedData({
94
+ fromToken: DESTINATION_TOKEN,
95
+ amountWei,
96
+ spender: SPENDER
97
+ });
98
+ const permitParams = {
99
+ amount: signature.value,
100
+ deadline: signature.deadline,
101
+ owner: signature.owner,
102
+ r: signature.r,
103
+ s: signature.s,
104
+ spender: SPENDER,
105
+ token: tokenAddress,
106
+ v: signature.v,
107
+ nonce: signature.nonce
108
+ };
109
+ return permitParams;
110
+ }
111
+ };
112
+ var Hyperliquid = new HyperliquidService();
113
+ var HyperliquidFromTokens = tokens.filter((token) => token.services.includes(Service.OneClick)).filter((token) => !(token.chainName === "Arbitrum" && token.symbol === "USDC"));
114
+ var HyperliuquidToToken = DESTINATION_TOKEN;
115
+ var HyperliuquidMinAmount = MIN_AMOUNT + "";
116
+
117
+ export { Hyperliquid, HyperliquidFromTokens, HyperliuquidMinAmount, HyperliuquidToToken };
118
+ //# sourceMappingURL=index.mjs.map
119
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@stableflow/hyperliquid",
3
+ "version": "0.0.0-experimental-5a8afd7389-20260703",
4
+ "description": "Hyperliquid helpers for StableFlow SDK",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/stableflow-ai/stableflow-sdk.git",
9
+ "directory": "packages/hyperliquid"
10
+ },
11
+ "main": "./dist/index.js",
12
+ "module": "./dist/index.mjs",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.mjs",
18
+ "require": "./dist/index.js"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "dependencies": {
25
+ "@stableflow/core": "0.0.0-experimental-5a8afd7389-20260703",
26
+ "@stableflow/bridges": "0.0.0-experimental-5a8afd7389-20260703"
27
+ },
28
+ "devDependencies": {
29
+ "tsup": "^8.5.1",
30
+ "typescript": "^5.9.3"
31
+ },
32
+ "scripts": {
33
+ "build": "tsup",
34
+ "clean": "rm -rf dist"
35
+ }
36
+ }