@nktkas/hyperliquid 0.24.2 → 0.25.0-beta.1
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/README.md +197 -117
- package/esm/mod.d.ts +11 -11
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +1 -1
- package/esm/src/clients/exchange.d.ts +29 -18
- package/esm/src/clients/exchange.d.ts.map +1 -1
- package/esm/src/clients/exchange.js +50 -48
- package/esm/src/clients/info.d.ts +79 -75
- package/esm/src/clients/info.d.ts.map +1 -1
- package/esm/src/clients/info.js +294 -163
- package/esm/src/clients/multiSign.d.ts +11 -7
- package/esm/src/clients/multiSign.d.ts.map +1 -1
- package/esm/src/clients/subscription.d.ts +105 -32
- package/esm/src/clients/subscription.d.ts.map +1 -1
- package/esm/src/clients/subscription.js +114 -33
- package/esm/src/{base.d.ts → errors.d.ts} +1 -1
- package/esm/src/errors.d.ts.map +1 -0
- package/esm/src/schemas/_base.d.ts +10 -0
- package/esm/src/schemas/_base.d.ts.map +1 -0
- package/esm/src/schemas/_base.js +12 -0
- package/esm/src/schemas/exchange/requests.d.ts +8953 -0
- package/esm/src/schemas/exchange/requests.d.ts.map +1 -0
- package/esm/src/schemas/exchange/requests.js +1413 -0
- package/esm/src/schemas/exchange/responses.d.ts +567 -0
- package/esm/src/schemas/exchange/responses.d.ts.map +1 -0
- package/esm/src/schemas/exchange/responses.js +243 -0
- package/esm/src/schemas/explorer/requests.d.ts +44 -0
- package/esm/src/schemas/explorer/requests.d.ts.map +1 -0
- package/esm/src/schemas/explorer/requests.js +32 -0
- package/esm/src/schemas/explorer/responses.d.ts +360 -0
- package/esm/src/schemas/explorer/responses.d.ts.map +1 -0
- package/esm/src/schemas/explorer/responses.js +56 -0
- package/esm/src/schemas/info/accounts.d.ts +2159 -0
- package/esm/src/schemas/info/accounts.d.ts.map +1 -0
- package/esm/src/schemas/info/accounts.js +622 -0
- package/esm/src/schemas/info/assets.d.ts +945 -0
- package/esm/src/schemas/info/assets.d.ts.map +1 -0
- package/esm/src/schemas/info/assets.js +265 -0
- package/esm/src/schemas/info/markets.d.ts +138 -0
- package/esm/src/schemas/info/markets.d.ts.map +1 -0
- package/esm/src/schemas/info/markets.js +58 -0
- package/esm/src/schemas/info/orders.d.ts +957 -0
- package/esm/src/schemas/info/orders.d.ts.map +1 -0
- package/esm/src/schemas/info/orders.js +297 -0
- package/esm/src/schemas/info/requests.d.ts +882 -0
- package/esm/src/schemas/info/requests.d.ts.map +1 -0
- package/esm/src/schemas/info/requests.js +655 -0
- package/esm/src/schemas/info/validators.d.ts +305 -0
- package/esm/src/schemas/info/validators.d.ts.map +1 -0
- package/esm/src/schemas/info/validators.js +112 -0
- package/esm/src/schemas/info/vaults.d.ts +447 -0
- package/esm/src/schemas/info/vaults.d.ts.map +1 -0
- package/esm/src/schemas/info/vaults.js +110 -0
- package/esm/src/schemas/mod.d.ts +100 -0
- package/esm/src/schemas/mod.d.ts.map +1 -0
- package/esm/src/schemas/mod.js +113 -0
- package/esm/src/schemas/subscriptions/requests.d.ts +332 -0
- package/esm/src/schemas/subscriptions/requests.d.ts.map +1 -0
- package/esm/src/schemas/subscriptions/requests.js +258 -0
- package/esm/src/schemas/subscriptions/responses.d.ts +3643 -0
- package/esm/src/schemas/subscriptions/responses.d.ts.map +1 -0
- package/esm/src/schemas/subscriptions/responses.js +233 -0
- package/esm/src/signing/mod.d.ts +109 -29
- package/esm/src/signing/mod.d.ts.map +1 -1
- package/esm/src/signing/mod.js +135 -29
- package/esm/src/transports/base.d.ts +2 -2
- package/esm/src/transports/base.d.ts.map +1 -1
- package/esm/src/transports/base.js +2 -2
- package/esm/src/transports/http/http_transport.d.ts +2 -1
- package/esm/src/transports/http/http_transport.d.ts.map +1 -1
- package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts +1 -1
- package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
- package/esm/src/transports/websocket/websocket_transport.d.ts +2 -1
- package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/package.json +6 -5
- package/script/mod.d.ts +11 -11
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +1 -1
- package/script/src/clients/exchange.d.ts +29 -18
- package/script/src/clients/exchange.d.ts.map +1 -1
- package/script/src/clients/exchange.js +56 -54
- package/script/src/clients/info.d.ts +79 -75
- package/script/src/clients/info.d.ts.map +1 -1
- package/script/src/clients/info.js +294 -163
- package/script/src/clients/multiSign.d.ts +11 -7
- package/script/src/clients/multiSign.d.ts.map +1 -1
- package/script/src/clients/subscription.d.ts +105 -32
- package/script/src/clients/subscription.d.ts.map +1 -1
- package/script/src/clients/subscription.js +114 -33
- package/script/src/{base.d.ts → errors.d.ts} +1 -1
- package/script/src/errors.d.ts.map +1 -0
- package/script/src/schemas/_base.d.ts +10 -0
- package/script/src/schemas/_base.d.ts.map +1 -0
- package/script/src/schemas/_base.js +48 -0
- package/script/src/schemas/exchange/requests.d.ts +8953 -0
- package/script/src/schemas/exchange/requests.d.ts.map +1 -0
- package/script/src/schemas/exchange/requests.js +1449 -0
- package/script/src/schemas/exchange/responses.d.ts +567 -0
- package/script/src/schemas/exchange/responses.d.ts.map +1 -0
- package/script/src/schemas/exchange/responses.js +279 -0
- package/script/src/schemas/explorer/requests.d.ts +44 -0
- package/script/src/schemas/explorer/requests.d.ts.map +1 -0
- package/script/src/schemas/explorer/requests.js +68 -0
- package/script/src/schemas/explorer/responses.d.ts +360 -0
- package/script/src/schemas/explorer/responses.d.ts.map +1 -0
- package/script/src/schemas/explorer/responses.js +92 -0
- package/script/src/schemas/info/accounts.d.ts +2159 -0
- package/script/src/schemas/info/accounts.d.ts.map +1 -0
- package/script/src/schemas/info/accounts.js +658 -0
- package/script/src/schemas/info/assets.d.ts +945 -0
- package/script/src/schemas/info/assets.d.ts.map +1 -0
- package/script/src/schemas/info/assets.js +301 -0
- package/script/src/schemas/info/markets.d.ts +138 -0
- package/script/src/schemas/info/markets.d.ts.map +1 -0
- package/script/src/schemas/info/markets.js +94 -0
- package/script/src/schemas/info/orders.d.ts +957 -0
- package/script/src/schemas/info/orders.d.ts.map +1 -0
- package/script/src/schemas/info/orders.js +333 -0
- package/script/src/schemas/info/requests.d.ts +882 -0
- package/script/src/schemas/info/requests.d.ts.map +1 -0
- package/script/src/schemas/info/requests.js +692 -0
- package/script/src/schemas/info/validators.d.ts +305 -0
- package/script/src/schemas/info/validators.d.ts.map +1 -0
- package/script/src/schemas/info/validators.js +148 -0
- package/script/src/schemas/info/vaults.d.ts +447 -0
- package/script/src/schemas/info/vaults.d.ts.map +1 -0
- package/script/src/schemas/info/vaults.js +146 -0
- package/script/src/schemas/mod.d.ts +100 -0
- package/script/src/schemas/mod.d.ts.map +1 -0
- package/script/src/schemas/mod.js +154 -0
- package/script/src/schemas/subscriptions/requests.d.ts +332 -0
- package/script/src/schemas/subscriptions/requests.d.ts.map +1 -0
- package/script/src/schemas/subscriptions/requests.js +294 -0
- package/script/src/schemas/subscriptions/responses.d.ts +3643 -0
- package/script/src/schemas/subscriptions/responses.d.ts.map +1 -0
- package/script/src/schemas/subscriptions/responses.js +269 -0
- package/script/src/signing/mod.d.ts +109 -29
- package/script/src/signing/mod.d.ts.map +1 -1
- package/script/src/signing/mod.js +137 -33
- package/script/src/transports/base.d.ts +2 -2
- package/script/src/transports/base.d.ts.map +1 -1
- package/script/src/transports/base.js +3 -3
- package/script/src/transports/http/http_transport.d.ts +2 -1
- package/script/src/transports/http/http_transport.d.ts.map +1 -1
- package/script/src/transports/websocket/_hyperliquid_event_target.d.ts +1 -1
- package/script/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
- package/script/src/transports/websocket/websocket_transport.d.ts +2 -1
- package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/esm/src/base.d.ts.map +0 -1
- package/esm/src/signing/_sorter.d.ts +0 -127
- package/esm/src/signing/_sorter.d.ts.map +0 -1
- package/esm/src/signing/_sorter.js +0 -693
- package/esm/src/types/exchange/requests.d.ts +0 -1345
- package/esm/src/types/exchange/requests.d.ts.map +0 -1
- package/esm/src/types/exchange/requests.js +0 -1
- package/esm/src/types/exchange/responses.d.ts +0 -233
- package/esm/src/types/exchange/responses.d.ts.map +0 -1
- package/esm/src/types/exchange/responses.js +0 -1
- package/esm/src/types/explorer/requests.d.ts +0 -32
- package/esm/src/types/explorer/requests.d.ts.map +0 -1
- package/esm/src/types/explorer/requests.js +0 -1
- package/esm/src/types/explorer/responses.d.ts +0 -58
- package/esm/src/types/explorer/responses.d.ts.map +0 -1
- package/esm/src/types/explorer/responses.js +0 -1
- package/esm/src/types/info/accounts.d.ts +0 -864
- package/esm/src/types/info/accounts.d.ts.map +0 -1
- package/esm/src/types/info/accounts.js +0 -1
- package/esm/src/types/info/assets.d.ts +0 -354
- package/esm/src/types/info/assets.d.ts.map +0 -1
- package/esm/src/types/info/assets.js +0 -1
- package/esm/src/types/info/markets.d.ts +0 -79
- package/esm/src/types/info/markets.d.ts.map +0 -1
- package/esm/src/types/info/markets.js +0 -1
- package/esm/src/types/info/orders.d.ts +0 -266
- package/esm/src/types/info/orders.d.ts.map +0 -1
- package/esm/src/types/info/orders.js +0 -1
- package/esm/src/types/info/requests.d.ts +0 -634
- package/esm/src/types/info/requests.d.ts.map +0 -1
- package/esm/src/types/info/requests.js +0 -1
- package/esm/src/types/info/validators.d.ts +0 -147
- package/esm/src/types/info/validators.d.ts.map +0 -1
- package/esm/src/types/info/validators.js +0 -1
- package/esm/src/types/info/vaults.d.ts +0 -119
- package/esm/src/types/info/vaults.d.ts.map +0 -1
- package/esm/src/types/info/vaults.js +0 -1
- package/esm/src/types/mod.d.ts +0 -38
- package/esm/src/types/mod.d.ts.map +0 -1
- package/esm/src/types/mod.js +0 -24
- package/esm/src/types/subscriptions/requests.d.ts +0 -143
- package/esm/src/types/subscriptions/requests.d.ts.map +0 -1
- package/esm/src/types/subscriptions/requests.js +0 -1
- package/esm/src/types/subscriptions/responses.d.ts +0 -213
- package/esm/src/types/subscriptions/responses.d.ts.map +0 -1
- package/esm/src/types/subscriptions/responses.js +0 -1
- package/script/src/base.d.ts.map +0 -1
- package/script/src/signing/_sorter.d.ts +0 -127
- package/script/src/signing/_sorter.d.ts.map +0 -1
- package/script/src/signing/_sorter.js +0 -696
- package/script/src/types/exchange/requests.d.ts +0 -1345
- package/script/src/types/exchange/requests.d.ts.map +0 -1
- package/script/src/types/exchange/requests.js +0 -2
- package/script/src/types/exchange/responses.d.ts +0 -233
- package/script/src/types/exchange/responses.d.ts.map +0 -1
- package/script/src/types/exchange/responses.js +0 -2
- package/script/src/types/explorer/requests.d.ts +0 -32
- package/script/src/types/explorer/requests.d.ts.map +0 -1
- package/script/src/types/explorer/requests.js +0 -2
- package/script/src/types/explorer/responses.d.ts +0 -58
- package/script/src/types/explorer/responses.d.ts.map +0 -1
- package/script/src/types/explorer/responses.js +0 -2
- package/script/src/types/info/accounts.d.ts +0 -864
- package/script/src/types/info/accounts.d.ts.map +0 -1
- package/script/src/types/info/accounts.js +0 -2
- package/script/src/types/info/assets.d.ts +0 -354
- package/script/src/types/info/assets.d.ts.map +0 -1
- package/script/src/types/info/assets.js +0 -2
- package/script/src/types/info/markets.d.ts +0 -79
- package/script/src/types/info/markets.d.ts.map +0 -1
- package/script/src/types/info/markets.js +0 -2
- package/script/src/types/info/orders.d.ts +0 -266
- package/script/src/types/info/orders.d.ts.map +0 -1
- package/script/src/types/info/orders.js +0 -2
- package/script/src/types/info/requests.d.ts +0 -634
- package/script/src/types/info/requests.d.ts.map +0 -1
- package/script/src/types/info/requests.js +0 -2
- package/script/src/types/info/validators.d.ts +0 -147
- package/script/src/types/info/validators.d.ts.map +0 -1
- package/script/src/types/info/validators.js +0 -2
- package/script/src/types/info/vaults.d.ts +0 -119
- package/script/src/types/info/vaults.d.ts.map +0 -1
- package/script/src/types/info/vaults.js +0 -2
- package/script/src/types/mod.d.ts +0 -38
- package/script/src/types/mod.d.ts.map +0 -1
- package/script/src/types/mod.js +0 -25
- package/script/src/types/subscriptions/requests.d.ts +0 -143
- package/script/src/types/subscriptions/requests.d.ts.map +0 -1
- package/script/src/types/subscriptions/requests.js +0 -2
- package/script/src/types/subscriptions/responses.d.ts +0 -213
- package/script/src/types/subscriptions/responses.d.ts.map +0 -1
- package/script/src/types/subscriptions/responses.js +0 -2
- /package/esm/src/{base.js → errors.js} +0 -0
- /package/script/src/{base.js → errors.js} +0 -0
package/esm/src/signing/mod.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* This module contains functions for generating Hyperliquid transaction signatures
|
|
3
|
-
* and interfaces to various wallet implementations.
|
|
2
|
+
* This module contains functions for generating Hyperliquid transaction signatures.
|
|
4
3
|
*
|
|
5
4
|
* @example Signing an L1 action
|
|
6
5
|
* ```ts
|
|
7
|
-
* import {
|
|
6
|
+
* import { signL1Action } from "@nktkas/hyperliquid/signing";
|
|
7
|
+
* import { CancelRequest, parser } from "@nktkas/hyperliquid/schemas";
|
|
8
8
|
*
|
|
9
9
|
* const privateKey = "0x..."; // `viem`, `ethers`, or private key directly
|
|
10
10
|
*
|
|
11
|
-
* const action =
|
|
11
|
+
* const action = parser(CancelRequest.entries.action)({ // for correct signature generation
|
|
12
12
|
* type: "cancel",
|
|
13
13
|
* cancels: [
|
|
14
14
|
* { a: 0, o: 12345 },
|
|
@@ -22,18 +22,19 @@
|
|
|
22
22
|
* const response = await fetch("https://api.hyperliquid.xyz/exchange", {
|
|
23
23
|
* method: "POST",
|
|
24
24
|
* headers: { "Content-Type": "application/json" },
|
|
25
|
-
* body: JSON.stringify({ action, signature, nonce }),
|
|
25
|
+
* body: JSON.stringify({ action, signature, nonce }),
|
|
26
26
|
* });
|
|
27
27
|
* const body = await response.json();
|
|
28
28
|
* ```
|
|
29
29
|
*
|
|
30
30
|
* @example Signing a user-signed action
|
|
31
31
|
* ```ts
|
|
32
|
-
* import {
|
|
32
|
+
* import { signUserSignedAction, userSignedActionEip712Types } from "@nktkas/hyperliquid/signing";
|
|
33
|
+
* import { ApproveAgentRequest, parser } from "@nktkas/hyperliquid/schemas";
|
|
33
34
|
*
|
|
34
35
|
* const privateKey = "0x..."; // `viem`, `ethers`, or private key directly
|
|
35
36
|
*
|
|
36
|
-
* const action =
|
|
37
|
+
* const action = parser(ApproveAgentRequest.entries.action)({ // for correct signature generation
|
|
37
38
|
* type: "approveAgent",
|
|
38
39
|
* signatureChainId: "0x66eee",
|
|
39
40
|
* hyperliquidChain: "Mainnet",
|
|
@@ -52,20 +53,21 @@
|
|
|
52
53
|
* const response = await fetch("https://api.hyperliquid.xyz/exchange", {
|
|
53
54
|
* method: "POST",
|
|
54
55
|
* headers: { "Content-Type": "application/json" },
|
|
55
|
-
* body: JSON.stringify({ action, signature, nonce: action.nonce }),
|
|
56
|
+
* body: JSON.stringify({ action, signature, nonce: action.nonce }),
|
|
56
57
|
* });
|
|
57
58
|
* const body = await response.json();
|
|
58
59
|
* ```
|
|
59
60
|
*
|
|
60
61
|
* @example Signing a multi-signature action
|
|
61
62
|
* ```ts
|
|
62
|
-
* import {
|
|
63
|
+
* import { signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
|
|
64
|
+
* import { MultiSigRequest, parser, ScheduleCancelRequest } from "@nktkas/hyperliquid/schemas";
|
|
63
65
|
* import { privateKeyToAccount } from "npm:viem/accounts";
|
|
64
66
|
*
|
|
65
67
|
* const wallet = privateKeyToAccount("0x..."); // or `ethers`, private key directly
|
|
66
68
|
* const multiSigUser = "0x...";
|
|
67
69
|
*
|
|
68
|
-
* const action =
|
|
70
|
+
* const action = parser(ScheduleCancelRequest.entries.action)({ // for correct signature generation
|
|
69
71
|
* type: "scheduleCancel",
|
|
70
72
|
* time: Date.now() + 10000,
|
|
71
73
|
* });
|
|
@@ -80,7 +82,7 @@
|
|
|
80
82
|
* });
|
|
81
83
|
* }));
|
|
82
84
|
*
|
|
83
|
-
* // or user-signed action
|
|
85
|
+
* // // or user-signed action
|
|
84
86
|
* // const signatures = await Promise.all(["0x...", "0x..."].map(async (signerPrivKey) => {
|
|
85
87
|
* // return await signUserSignedAction({
|
|
86
88
|
* // wallet: signerPrivKey as `0x${string}`,
|
|
@@ -94,7 +96,7 @@
|
|
|
94
96
|
* // }));
|
|
95
97
|
*
|
|
96
98
|
* // Then use signatures in the multi-sig action
|
|
97
|
-
* const multiSigAction =
|
|
99
|
+
* const multiSigAction = parser(MultiSigRequest.entries.action)({
|
|
98
100
|
* type: "multiSig",
|
|
99
101
|
* signatureChainId: "0x66eee",
|
|
100
102
|
* signatures,
|
|
@@ -110,7 +112,7 @@
|
|
|
110
112
|
* const response = await fetch("https://api.hyperliquid.xyz/exchange", {
|
|
111
113
|
* method: "POST",
|
|
112
114
|
* headers: { "Content-Type": "application/json" },
|
|
113
|
-
* body: JSON.stringify({ action: multiSigAction, signature: multiSigSignature, nonce }),
|
|
115
|
+
* body: JSON.stringify({ action: multiSigAction, signature: multiSigSignature, nonce }),
|
|
114
116
|
* });
|
|
115
117
|
* const body = await response.json();
|
|
116
118
|
* ```
|
|
@@ -121,15 +123,116 @@ import { keccak_256 } from "@noble/hashes/sha3";
|
|
|
121
123
|
import { etc } from "@noble/secp256k1";
|
|
122
124
|
import { encode as encodeMsgpack } from "@msgpack/msgpack";
|
|
123
125
|
import { getWalletAddress, getWalletChainId, signTypedData, } from "./_signTypedData/mod.js";
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
export { getWalletAddress, getWalletChainId };
|
|
127
|
+
/** EIP-712 type definitions for user-signed actions. */
|
|
128
|
+
export const userSignedActionEip712Types = {
|
|
129
|
+
approveAgent: {
|
|
130
|
+
"HyperliquidTransaction:ApproveAgent": [
|
|
131
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
132
|
+
{ name: "agentAddress", type: "address" },
|
|
133
|
+
{ name: "agentName", type: "string" },
|
|
134
|
+
{ name: "nonce", type: "uint64" },
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
approveBuilderFee: {
|
|
138
|
+
"HyperliquidTransaction:ApproveBuilderFee": [
|
|
139
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
140
|
+
{ name: "maxFeeRate", type: "string" },
|
|
141
|
+
{ name: "builder", type: "address" },
|
|
142
|
+
{ name: "nonce", type: "uint64" },
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
cDeposit: {
|
|
146
|
+
"HyperliquidTransaction:CDeposit": [
|
|
147
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
148
|
+
{ name: "wei", type: "uint64" },
|
|
149
|
+
{ name: "nonce", type: "uint64" },
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
convertToMultiSigUser: {
|
|
153
|
+
"HyperliquidTransaction:ConvertToMultiSigUser": [
|
|
154
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
155
|
+
{ name: "signers", type: "string" },
|
|
156
|
+
{ name: "nonce", type: "uint64" },
|
|
157
|
+
],
|
|
158
|
+
},
|
|
159
|
+
cWithdraw: {
|
|
160
|
+
"HyperliquidTransaction:CWithdraw": [
|
|
161
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
162
|
+
{ name: "wei", type: "uint64" },
|
|
163
|
+
{ name: "nonce", type: "uint64" },
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
multiSig: {
|
|
167
|
+
"HyperliquidTransaction:SendMultiSig": [
|
|
168
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
169
|
+
{ name: "multiSigActionHash", type: "bytes32" },
|
|
170
|
+
{ name: "nonce", type: "uint64" },
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
sendAsset: {
|
|
174
|
+
"HyperliquidTransaction:SendAsset": [
|
|
175
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
176
|
+
{ name: "destination", type: "string" },
|
|
177
|
+
{ name: "sourceDex", type: "string" },
|
|
178
|
+
{ name: "destinationDex", type: "string" },
|
|
179
|
+
{ name: "token", type: "string" },
|
|
180
|
+
{ name: "amount", type: "string" },
|
|
181
|
+
{ name: "fromSubAccount", type: "string" },
|
|
182
|
+
{ name: "nonce", type: "uint64" },
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
spotSend: {
|
|
186
|
+
"HyperliquidTransaction:SpotSend": [
|
|
187
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
188
|
+
{ name: "destination", type: "string" },
|
|
189
|
+
{ name: "token", type: "string" },
|
|
190
|
+
{ name: "amount", type: "string" },
|
|
191
|
+
{ name: "time", type: "uint64" },
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
tokenDelegate: {
|
|
195
|
+
"HyperliquidTransaction:TokenDelegate": [
|
|
196
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
197
|
+
{ name: "validator", type: "address" },
|
|
198
|
+
{ name: "wei", type: "uint64" },
|
|
199
|
+
{ name: "isUndelegate", type: "bool" },
|
|
200
|
+
{ name: "nonce", type: "uint64" },
|
|
201
|
+
],
|
|
202
|
+
},
|
|
203
|
+
usdClassTransfer: {
|
|
204
|
+
"HyperliquidTransaction:UsdClassTransfer": [
|
|
205
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
206
|
+
{ name: "amount", type: "string" },
|
|
207
|
+
{ name: "toPerp", type: "bool" },
|
|
208
|
+
{ name: "nonce", type: "uint64" },
|
|
209
|
+
],
|
|
210
|
+
},
|
|
211
|
+
usdSend: {
|
|
212
|
+
"HyperliquidTransaction:UsdSend": [
|
|
213
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
214
|
+
{ name: "destination", type: "string" },
|
|
215
|
+
{ name: "amount", type: "string" },
|
|
216
|
+
{ name: "time", type: "uint64" },
|
|
217
|
+
],
|
|
218
|
+
},
|
|
219
|
+
withdraw3: {
|
|
220
|
+
"HyperliquidTransaction:Withdraw": [
|
|
221
|
+
{ name: "hyperliquidChain", type: "string" },
|
|
222
|
+
{ name: "destination", type: "string" },
|
|
223
|
+
{ name: "amount", type: "string" },
|
|
224
|
+
{ name: "time", type: "uint64" },
|
|
225
|
+
],
|
|
226
|
+
},
|
|
227
|
+
};
|
|
126
228
|
/**
|
|
127
229
|
* Create a hash of the L1 action.
|
|
128
230
|
* @example
|
|
129
231
|
* ```ts
|
|
130
|
-
* import {
|
|
232
|
+
* import { signL1Action } from "@nktkas/hyperliquid/signing";
|
|
233
|
+
* import { CancelRequest, parser } from "@nktkas/hyperliquid/schemas";
|
|
131
234
|
*
|
|
132
|
-
* const action =
|
|
235
|
+
* const action = parser(CancelRequest.entries.action)({ // for correct signature generation
|
|
133
236
|
* type: "cancel",
|
|
134
237
|
* cancels: [
|
|
135
238
|
* { a: 0, o: 12345 },
|
|
@@ -166,11 +269,12 @@ function toUint64Bytes(n) {
|
|
|
166
269
|
* Sign an L1 action.
|
|
167
270
|
* @example
|
|
168
271
|
* ```ts
|
|
169
|
-
* import {
|
|
272
|
+
* import { signL1Action } from "@nktkas/hyperliquid/signing";
|
|
273
|
+
* import { CancelRequest, parser } from "@nktkas/hyperliquid/schemas";
|
|
170
274
|
*
|
|
171
275
|
* const privateKey = "0x..."; // `viem`, `ethers`, or private key directly
|
|
172
276
|
*
|
|
173
|
-
* const action =
|
|
277
|
+
* const action = parser(CancelRequest.entries.action)({ // for correct signature generation
|
|
174
278
|
* type: "cancel",
|
|
175
279
|
* cancels: [
|
|
176
280
|
* { a: 0, o: 12345 },
|
|
@@ -184,7 +288,7 @@ function toUint64Bytes(n) {
|
|
|
184
288
|
* const response = await fetch("https://api.hyperliquid.xyz/exchange", {
|
|
185
289
|
* method: "POST",
|
|
186
290
|
* headers: { "Content-Type": "application/json" },
|
|
187
|
-
* body: JSON.stringify({ action, signature, nonce }),
|
|
291
|
+
* body: JSON.stringify({ action, signature, nonce }),
|
|
188
292
|
* });
|
|
189
293
|
* const body = await response.json();
|
|
190
294
|
* ```
|
|
@@ -218,11 +322,12 @@ export async function signL1Action(args) {
|
|
|
218
322
|
* Sign a user-signed action.
|
|
219
323
|
* @example
|
|
220
324
|
* ```ts
|
|
221
|
-
* import {
|
|
325
|
+
* import { signUserSignedAction, userSignedActionEip712Types } from "@nktkas/hyperliquid/signing";
|
|
326
|
+
* import { ApproveAgentRequest, parser } from "@nktkas/hyperliquid/schemas";
|
|
222
327
|
*
|
|
223
328
|
* const privateKey = "0x..."; // `viem`, `ethers`, or private key directly
|
|
224
329
|
*
|
|
225
|
-
* const action =
|
|
330
|
+
* const action = parser(ApproveAgentRequest.entries.action)({ // for correct signature generation
|
|
226
331
|
* type: "approveAgent",
|
|
227
332
|
* signatureChainId: "0x66eee",
|
|
228
333
|
* hyperliquidChain: "Mainnet",
|
|
@@ -241,7 +346,7 @@ export async function signL1Action(args) {
|
|
|
241
346
|
* const response = await fetch("https://api.hyperliquid.xyz/exchange", {
|
|
242
347
|
* method: "POST",
|
|
243
348
|
* headers: { "Content-Type": "application/json" },
|
|
244
|
-
* body: JSON.stringify({ action, signature, nonce: action.nonce }),
|
|
349
|
+
* body: JSON.stringify({ action, signature, nonce: action.nonce }),
|
|
245
350
|
* });
|
|
246
351
|
* const body = await response.json();
|
|
247
352
|
* ```
|
|
@@ -275,13 +380,14 @@ export async function signUserSignedAction(args) {
|
|
|
275
380
|
* Sign a multi-signature action.
|
|
276
381
|
* @example
|
|
277
382
|
* ```ts
|
|
278
|
-
* import {
|
|
383
|
+
* import { signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
|
|
384
|
+
* import { MultiSigRequest, parser, ScheduleCancelRequest } from "@nktkas/hyperliquid/schemas";
|
|
279
385
|
* import { privateKeyToAccount } from "npm:viem/accounts";
|
|
280
386
|
*
|
|
281
|
-
* const wallet = privateKeyToAccount("0x..."); // or ethers
|
|
387
|
+
* const wallet = privateKeyToAccount("0x..."); // or `ethers`, private key directly
|
|
282
388
|
* const multiSigUser = "0x...";
|
|
283
389
|
*
|
|
284
|
-
* const action =
|
|
390
|
+
* const action = parser(ScheduleCancelRequest.entries.action)({ // for correct signature generation
|
|
285
391
|
* type: "scheduleCancel",
|
|
286
392
|
* time: Date.now() + 10000,
|
|
287
393
|
* });
|
|
@@ -296,7 +402,7 @@ export async function signUserSignedAction(args) {
|
|
|
296
402
|
* });
|
|
297
403
|
* }));
|
|
298
404
|
*
|
|
299
|
-
* // or user-signed action
|
|
405
|
+
* // // or user-signed action
|
|
300
406
|
* // const signatures = await Promise.all(["0x...", "0x..."].map(async (signerPrivKey) => {
|
|
301
407
|
* // return await signUserSignedAction({
|
|
302
408
|
* // wallet: signerPrivKey as `0x${string}`,
|
|
@@ -310,7 +416,7 @@ export async function signUserSignedAction(args) {
|
|
|
310
416
|
* // }));
|
|
311
417
|
*
|
|
312
418
|
* // Then use signatures in the multi-sig action
|
|
313
|
-
* const multiSigAction =
|
|
419
|
+
* const multiSigAction = parser(MultiSigRequest.entries.action)({
|
|
314
420
|
* type: "multiSig",
|
|
315
421
|
* signatureChainId: "0x66eee",
|
|
316
422
|
* signatures,
|
|
@@ -326,7 +432,7 @@ export async function signUserSignedAction(args) {
|
|
|
326
432
|
* const response = await fetch("https://api.hyperliquid.xyz/exchange", {
|
|
327
433
|
* method: "POST",
|
|
328
434
|
* headers: { "Content-Type": "application/json" },
|
|
329
|
-
* body: JSON.stringify({ action: multiSigAction, signature: multiSigSignature, nonce }),
|
|
435
|
+
* body: JSON.stringify({ action: multiSigAction, signature: multiSigSignature, nonce }),
|
|
330
436
|
* });
|
|
331
437
|
* const body = await response.json();
|
|
332
438
|
* ```
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HyperliquidError } from "../
|
|
1
|
+
import { HyperliquidError } from "../errors.js";
|
|
2
2
|
/**
|
|
3
3
|
* Interface representing a REST transport.
|
|
4
4
|
*
|
|
@@ -41,7 +41,7 @@ export interface Subscription {
|
|
|
41
41
|
/** Signal that aborts when resubscription fails during reconnection. */
|
|
42
42
|
resubscribeSignal?: AbortSignal;
|
|
43
43
|
}
|
|
44
|
-
/**
|
|
44
|
+
/** Thrown when a transport error occurs. */
|
|
45
45
|
export declare class TransportError extends HyperliquidError {
|
|
46
46
|
constructor(message?: string, options?: ErrorOptions);
|
|
47
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC/D;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9G;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,OAAO,CAAC,eAAe,CAAC;IACpE;;;;;;OAMG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACpH;AAED,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IACzB,kFAAkF;IAClF,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,WAAW,CAAC;CACnC;AAED,4CAA4C;AAC5C,qBAAa,cAAe,SAAQ,gBAAgB;gBACpC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIvD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { HyperliquidError } from "../
|
|
2
|
-
/**
|
|
1
|
+
import { HyperliquidError } from "../errors.js";
|
|
2
|
+
/** Thrown when a transport error occurs. */
|
|
3
3
|
export class TransportError extends HyperliquidError {
|
|
4
4
|
constructor(message, options) {
|
|
5
5
|
super(message, options);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TransportError } from "../base.js";
|
|
2
|
+
import type { IRequestTransport } from "../base.js";
|
|
2
3
|
type MaybePromise<T> = T | Promise<T>;
|
|
3
4
|
/** Error thrown when an HTTP request fails. */
|
|
4
5
|
export declare class HttpRequestError extends TransportError {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/http/http_transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"http_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/http/http_transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEtC,+CAA+C;AAC/C,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEF,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,YAAY;CAgBpF;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE;QACL,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QACrD,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACxD,CAAC;IAEF,2IAA2I;IAC3I,YAAY,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IAEpD;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAElF;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,YAAY,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CACzF;AAED,2DAA2D;AAC3D,qBAAa,aAAc,YAAW,iBAAiB,EAAE,oBAAoB;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE;QACJ,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QAClD,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACrD,CAAC;IACF,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAClF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,YAAY,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAEtF;;;OAGG;gBACS,OAAO,CAAC,EAAE,oBAAoB;IAkB1C;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CA4DnH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BlockDetails, TxDetails } from "../../
|
|
1
|
+
import type { BlockDetails, TxDetails } from "../../schemas/mod.js";
|
|
2
2
|
/** Response to subscribe to or unsubscribe from an event. */
|
|
3
3
|
interface SubscriptionResponse {
|
|
4
4
|
/** Type of subscription operation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_hyperliquid_event_target.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_hyperliquid_event_target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"_hyperliquid_event_target.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/_hyperliquid_event_target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAUpE,6DAA6D;AAC7D,UAAU,oBAAoB;IAC1B,sCAAsC;IACtC,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;IACpC,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;CACzB;AAED,gCAAgC;AAChC,UAAU,YAAY;IAClB,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,QAAQ;IACJ,iDAAiD;IAC/C;QACE,wDAAwD;QACxD,IAAI,EAAE,MAAM,CAAC;QACb,qCAAqC;QACrC,OAAO,EAAE;YACL,0CAA0C;YAC1C,IAAI,EAAE,MAAM,CAAC;YACb,iCAAiC;YACjC,IAAI,EAAE,OAAO,CAAC;SACjB,CAAC;KACL;IACD,yCAAyC;OACvC;QACE,iDAAiD;QACjD,IAAI,EAAE,QAAQ,CAAC;QACf,qBAAqB;QACrB,OAAO,EAAE;YACL,mEAAmE;YACnE,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC;YACrB,qCAAqC;YACrC,QAAQ,EACF;gBACE,yBAAyB;gBACzB,IAAI,EAAE,MAAM,CAAC;gBACb,oCAAoC;gBACpC,IAAI,CAAC,EAAE,OAAO,CAAC;aAClB,GACC,MAAM,CAAC;SAChB,CAAC;KACL,CAAC;CACT;AAED,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAChC,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACxD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IAChC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7B,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACzD,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;IAEvC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;CACnC;AAED,iFAAiF;AACjF,qBAAa,sBAAuB,SAAQ,WAAW;gBACvC,MAAM,EAAE,SAAS;CAiBhC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TransportError } from "../base.js";
|
|
2
|
+
import type { IRequestTransport, ISubscriptionTransport, Subscription } from "../base.js";
|
|
2
3
|
import { type MessageBufferStrategy, ReconnectingWebSocket, ReconnectingWebSocketError, type ReconnectingWebSocketOptions } from "./_reconnecting_websocket.js";
|
|
3
4
|
import { HyperliquidEventTarget } from "./_hyperliquid_event_target.js";
|
|
4
5
|
import { WebSocketAsyncRequest } from "./_websocket_async_request.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/websocket_transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"websocket_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/websocket/websocket_transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nktkas/hyperliquid",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0-beta.1",
|
|
4
4
|
"description": "Unofficial Hyperliquid API SDK for all major JS runtimes, written in TypeScript.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"api",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"import": "./esm/mod.js",
|
|
39
39
|
"require": "./script/mod.js"
|
|
40
40
|
},
|
|
41
|
-
"./
|
|
42
|
-
"import": "./esm/src/
|
|
43
|
-
"require": "./script/src/
|
|
41
|
+
"./schemas": {
|
|
42
|
+
"import": "./esm/src/schemas/mod.js",
|
|
43
|
+
"require": "./script/src/schemas/mod.js"
|
|
44
44
|
},
|
|
45
45
|
"./signing": {
|
|
46
46
|
"import": "./esm/src/signing/mod.js",
|
|
@@ -55,7 +55,8 @@
|
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"@msgpack/msgpack": "^3.1.2",
|
|
57
57
|
"@noble/hashes": "^1.8.0",
|
|
58
|
-
"@noble/secp256k1": "^2.3.0"
|
|
58
|
+
"@noble/secp256k1": "^2.3.0",
|
|
59
|
+
"valibot": "1.1.0"
|
|
59
60
|
},
|
|
60
61
|
"_generatedBy": "dnt@dev"
|
|
61
62
|
}
|
package/script/mod.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from "./src/
|
|
1
|
+
export * from "./src/errors.js";
|
|
2
2
|
export * from "./src/transports/base.js";
|
|
3
3
|
export type { AbstractWallet } from "./src/signing/mod.js";
|
|
4
4
|
export * from "./src/clients/exchange.js";
|
|
@@ -7,14 +7,14 @@ export * from "./src/clients/multiSign.js";
|
|
|
7
7
|
export * from "./src/clients/subscription.js";
|
|
8
8
|
export * from "./src/transports/http/http_transport.js";
|
|
9
9
|
export * from "./src/transports/websocket/websocket_transport.js";
|
|
10
|
-
export type { OrderParams, Signature } from "./src/
|
|
11
|
-
export type * from "./src/
|
|
12
|
-
export type * from "./src/
|
|
13
|
-
export type * from "./src/
|
|
14
|
-
export type * from "./src/
|
|
15
|
-
export type * from "./src/
|
|
16
|
-
export type * from "./src/
|
|
17
|
-
export type * from "./src/
|
|
18
|
-
export type * from "./src/
|
|
19
|
-
export type * from "./src/
|
|
10
|
+
export type { OrderParams, Signature } from "./src/schemas/exchange/requests.js";
|
|
11
|
+
export type * from "./src/schemas/exchange/responses.js";
|
|
12
|
+
export type * from "./src/schemas/explorer/responses.js";
|
|
13
|
+
export type * from "./src/schemas/info/accounts.js";
|
|
14
|
+
export type * from "./src/schemas/info/assets.js";
|
|
15
|
+
export type * from "./src/schemas/info/validators.js";
|
|
16
|
+
export type * from "./src/schemas/info/markets.js";
|
|
17
|
+
export type * from "./src/schemas/info/orders.js";
|
|
18
|
+
export type * from "./src/schemas/info/vaults.js";
|
|
19
|
+
export type * from "./src/schemas/subscriptions/responses.js";
|
|
20
20
|
//# sourceMappingURL=mod.d.ts.map
|
package/script/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AACA,cAAc,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AAGzC,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAG9C,cAAc,yCAAyC,CAAC;AACxD,cAAc,mDAAmD,CAAC;AAGlE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACjF,mBAAmB,qCAAqC,CAAC;AACzD,mBAAmB,qCAAqC,CAAC;AACzD,mBAAmB,gCAAgC,CAAC;AACpD,mBAAmB,8BAA8B,CAAC;AAClD,mBAAmB,kCAAkC,CAAC;AACtD,mBAAmB,+BAA+B,CAAC;AACnD,mBAAmB,8BAA8B,CAAC;AAClD,mBAAmB,8BAA8B,CAAC;AAClD,mBAAmB,0CAA0C,CAAC"}
|
package/script/mod.js
CHANGED
|
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
// Base interfaces
|
|
18
|
-
__exportStar(require("./src/
|
|
18
|
+
__exportStar(require("./src/errors.js"), exports);
|
|
19
19
|
__exportStar(require("./src/transports/base.js"), exports);
|
|
20
20
|
// Clients
|
|
21
21
|
__exportStar(require("./src/clients/exchange.js"), exports);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { HyperliquidError } from "../
|
|
1
|
+
import { HyperliquidError } from "../errors.js";
|
|
2
2
|
import type { IRequestTransport } from "../transports/base.js";
|
|
3
|
-
import
|
|
4
|
-
import { type AbstractWallet,
|
|
3
|
+
import { ApproveAgentRequest, ApproveBuilderFeeRequest, BatchModifyRequest, CancelByCloidRequest, CancelRequest, type CancelResponse, type CancelSuccessResponse, CDepositRequest, ClaimRewardsRequest, ConvertToMultiSigUserRequest, type ConvertToMultiSigUserRequestSigners, CreateSubAccountRequest, type CreateSubAccountResponse, CreateVaultRequest, type CreateVaultResponse, CSignerActionRequest, CValidatorActionRequest, CWithdrawRequest, type ErrorResponse, EvmUserModifyRequest, ModifyRequest, MultiSigRequest, NoopRequest, OrderRequest, type OrderResponse, type OrderSuccessResponse, PerpDeployRequest, RegisterReferrerRequest, ReserveRequestWeightRequest, ScheduleCancelRequest, SendAssetRequest, SetDisplayNameRequest, SetReferrerRequest, SpotDeployRequest, SpotSendRequest, SpotUserRequest, SubAccountModifyRequest, SubAccountSpotTransferRequest, SubAccountTransferRequest, type SuccessResponse, TokenDelegateRequest, TwapCancelRequest, type TwapCancelResponse, type TwapCancelSuccessResponse, TwapOrderRequest, type TwapOrderResponse, type TwapOrderSuccessResponse, UpdateIsolatedMarginRequest, UpdateLeverageRequest, UsdClassTransferRequest, UsdSendRequest, VaultDistributeRequest, VaultModifyRequest, VaultTransferRequest, Withdraw3Request } from "../schemas/mod.js";
|
|
4
|
+
import { type AbstractWallet, userSignedActionEip712Types } from "../signing/mod.js";
|
|
5
5
|
type MaybePromise<T> = T | Promise<T>;
|
|
6
6
|
/** @see https://github.com/microsoft/TypeScript/issues/13923#issuecomment-2191862501 */
|
|
7
7
|
type DeepImmutable<T> = {
|
|
@@ -20,7 +20,7 @@ export interface ExchangeClientParameters<T extends IRequestTransport = IRequest
|
|
|
20
20
|
*/
|
|
21
21
|
isTestnet?: boolean;
|
|
22
22
|
/** Sets a default vaultAddress to be used if no vaultAddress is explicitly passed to a method. */
|
|
23
|
-
defaultVaultAddress?:
|
|
23
|
+
defaultVaultAddress?: `0x${string}`;
|
|
24
24
|
/** Sets a default expiresAfter to be used if no expiresAfter is explicitly passed to a method. */
|
|
25
25
|
defaultExpiresAfter?: number | (() => MaybePromise<number>);
|
|
26
26
|
/**
|
|
@@ -29,7 +29,7 @@ export interface ExchangeClientParameters<T extends IRequestTransport = IRequest
|
|
|
29
29
|
*
|
|
30
30
|
* Defaults to get chain id from wallet otherwise `0x1`.
|
|
31
31
|
*/
|
|
32
|
-
signatureChainId?:
|
|
32
|
+
signatureChainId?: `0x${string}` | (() => MaybePromise<`0x${string}`>);
|
|
33
33
|
/**
|
|
34
34
|
* Function to get the next nonce for signing transactions.
|
|
35
35
|
*
|
|
@@ -56,7 +56,10 @@ export type CancelByCloidParameters = ExtractRequestAction<CancelByCloidRequest>
|
|
|
56
56
|
/** Action parameters for the {@linkcode ExchangeClient.cDeposit} method. */
|
|
57
57
|
export type CDepositParameters = ExtractRequestAction<CDepositRequest>;
|
|
58
58
|
/** Action parameters for the {@linkcode ExchangeClient.convertToMultiSigUser} method. */
|
|
59
|
-
export type ConvertToMultiSigUserParameters = ExtractRequestAction<
|
|
59
|
+
export type ConvertToMultiSigUserParameters = Omit<ExtractRequestAction<ConvertToMultiSigUserRequest>, "signers"> & {
|
|
60
|
+
/** Signers configuration. */
|
|
61
|
+
signers: ConvertToMultiSigUserRequestSigners;
|
|
62
|
+
};
|
|
60
63
|
/** Action parameters for the {@linkcode ExchangeClient.createSubAccount} method. */
|
|
61
64
|
export type CreateSubAccountParameters = ExtractRequestAction<CreateSubAccountRequest>;
|
|
62
65
|
/** Action parameters for the {@linkcode ExchangeClient.createVault} method. */
|
|
@@ -218,7 +221,7 @@ export type VaultModifyOptions = ExtractRequestOptions<VaultModifyRequest>;
|
|
|
218
221
|
export type VaultTransferOptions = ExtractRequestOptions<VaultTransferRequest>;
|
|
219
222
|
/** Request options for the {@linkcode ExchangeClient.withdraw3} method. */
|
|
220
223
|
export type Withdraw3Options = ExtractRequestOptions<Withdraw3Request>;
|
|
221
|
-
/**
|
|
224
|
+
/** Thrown when an API request fails. */
|
|
222
225
|
export declare class ApiRequestError extends HyperliquidError {
|
|
223
226
|
response: ErrorResponse | OrderResponse | CancelResponse | TwapOrderResponse | TwapCancelResponse;
|
|
224
227
|
constructor(response: ErrorResponse | OrderResponse | CancelResponse | TwapOrderResponse | TwapCancelResponse);
|
|
@@ -232,9 +235,9 @@ export declare class ExchangeClient<T extends IRequestTransport = IRequestTransp
|
|
|
232
235
|
transport: T;
|
|
233
236
|
wallet: W;
|
|
234
237
|
isTestnet: boolean;
|
|
235
|
-
defaultVaultAddress?:
|
|
238
|
+
defaultVaultAddress?: `0x${string}`;
|
|
236
239
|
defaultExpiresAfter?: number | (() => MaybePromise<number>);
|
|
237
|
-
signatureChainId:
|
|
240
|
+
signatureChainId: `0x${string}` | (() => MaybePromise<`0x${string}`>);
|
|
238
241
|
nonceManager: () => MaybePromise<number>;
|
|
239
242
|
/**
|
|
240
243
|
* Initialises a new instance.
|
|
@@ -709,7 +712,8 @@ export declare class ExchangeClient<T extends IRequestTransport = IRequestTransp
|
|
|
709
712
|
* @example
|
|
710
713
|
* ```ts
|
|
711
714
|
* import * as hl from "@nktkas/hyperliquid";
|
|
712
|
-
* import {
|
|
715
|
+
* import { signL1Action } from "@nktkas/hyperliquid/signing";
|
|
716
|
+
* import { parser, ScheduleCancelRequest } from "@nktkas/hyperliquid/schemas";
|
|
713
717
|
* import { privateKeyToAccount } from "npm:viem/accounts";
|
|
714
718
|
*
|
|
715
719
|
* const wallet = privateKeyToAccount("0x..."); // or any other wallet libraries
|
|
@@ -719,7 +723,7 @@ export declare class ExchangeClient<T extends IRequestTransport = IRequestTransp
|
|
|
719
723
|
* const exchClient = new hl.ExchangeClient({ wallet, transport });
|
|
720
724
|
*
|
|
721
725
|
* const nonce = Date.now();
|
|
722
|
-
* const action =
|
|
726
|
+
* const action = parser(ScheduleCancelRequest.entries.action)({ // for correct signature generation
|
|
723
727
|
* type: "scheduleCancel",
|
|
724
728
|
* time: Date.now() + 10000,
|
|
725
729
|
* });
|
|
@@ -733,7 +737,7 @@ export declare class ExchangeClient<T extends IRequestTransport = IRequestTransp
|
|
|
733
737
|
* });
|
|
734
738
|
* }));
|
|
735
739
|
*
|
|
736
|
-
* // or user-signed action
|
|
740
|
+
* // // or user-signed action
|
|
737
741
|
* // const signatures = await Promise.all(["0x...", "0x..."].map(async (signerPrivKey) => {
|
|
738
742
|
* // return await signUserSignedAction({
|
|
739
743
|
* // wallet: signerPrivKey as `0x${string}`,
|
|
@@ -1397,21 +1401,28 @@ export declare class ExchangeClient<T extends IRequestTransport = IRequestTransp
|
|
|
1397
1401
|
*/
|
|
1398
1402
|
withdraw3(params: DeepImmutable<Withdraw3Parameters>, opts?: Withdraw3Options): Promise<SuccessResponse>;
|
|
1399
1403
|
protected _executeL1Action<T extends SuccessResponse | CancelSuccessResponse | CreateSubAccountResponse | CreateVaultResponse | OrderSuccessResponse | TwapOrderSuccessResponse | TwapCancelSuccessResponse>(request: {
|
|
1400
|
-
action:
|
|
1401
|
-
vaultAddress?:
|
|
1404
|
+
action: Record<string, unknown>;
|
|
1405
|
+
vaultAddress?: `0x${string}`;
|
|
1402
1406
|
expiresAfter: number | undefined;
|
|
1403
1407
|
}, signal?: AbortSignal): Promise<T>;
|
|
1404
1408
|
protected _executeUserSignedAction<T extends SuccessResponse | CancelSuccessResponse | CreateSubAccountResponse | CreateVaultResponse | OrderSuccessResponse | TwapOrderSuccessResponse | TwapCancelSuccessResponse>(request: {
|
|
1405
|
-
action:
|
|
1409
|
+
action: {
|
|
1410
|
+
type: keyof typeof userSignedActionEip712Types;
|
|
1411
|
+
signatureChainId: `0x${string}`;
|
|
1412
|
+
[key: string]: unknown;
|
|
1413
|
+
};
|
|
1406
1414
|
}, signal?: AbortSignal): Promise<T>;
|
|
1407
1415
|
protected _executeMultiSigAction<T extends SuccessResponse | CancelSuccessResponse | CreateSubAccountResponse | CreateVaultResponse | OrderSuccessResponse | TwapOrderSuccessResponse | TwapCancelSuccessResponse>(request: {
|
|
1408
|
-
action:
|
|
1416
|
+
action: {
|
|
1417
|
+
signatureChainId: `0x${string}`;
|
|
1418
|
+
[key: string]: unknown;
|
|
1419
|
+
};
|
|
1409
1420
|
nonce: number;
|
|
1410
|
-
vaultAddress?:
|
|
1421
|
+
vaultAddress?: `0x${string}`;
|
|
1411
1422
|
expiresAfter?: number;
|
|
1412
1423
|
}, signal?: AbortSignal): Promise<T>;
|
|
1413
1424
|
protected _getDefaultExpiresAfter(): Promise<number | undefined>;
|
|
1414
|
-
protected _getSignatureChainId(): Promise
|
|
1425
|
+
protected _getSignatureChainId(): Promise<`0x${string}`>;
|
|
1415
1426
|
protected _getHyperliquidChain(): "Mainnet" | "Testnet";
|
|
1416
1427
|
protected _validateResponse<T extends SuccessResponse | CancelSuccessResponse | CreateSubAccountResponse | CreateVaultResponse | OrderSuccessResponse | TwapOrderSuccessResponse | TwapCancelSuccessResponse>(response: SuccessResponse | ErrorResponse | CancelResponse | CreateSubAccountResponse | CreateVaultResponse | OrderResponse | TwapOrderResponse | TwapCancelResponse): asserts response is T;
|
|
1417
1428
|
[Symbol.asyncDispose](): Promise<void>;
|