@nktkas/hyperliquid 0.22.2 → 0.23.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 +79 -67
- package/esm/mod.d.ts +1 -1
- package/esm/mod.d.ts.map +1 -1
- package/esm/src/base.d.ts +4 -1
- package/esm/src/base.d.ts.map +1 -1
- package/esm/src/base.js +2 -2
- package/esm/src/clients/exchange.d.ts +289 -207
- package/esm/src/clients/exchange.d.ts.map +1 -1
- package/esm/src/clients/exchange.js +605 -410
- package/esm/src/clients/info.d.ts +264 -48
- package/esm/src/clients/info.d.ts.map +1 -1
- package/esm/src/clients/info.js +273 -31
- package/esm/src/clients/multiSign.d.ts +285 -204
- package/esm/src/clients/multiSign.d.ts.map +1 -1
- package/esm/src/clients/multiSign.js +521 -493
- package/esm/src/clients/subscription.d.ts +38 -3
- package/esm/src/clients/subscription.d.ts.map +1 -1
- package/esm/src/clients/subscription.js +36 -3
- package/esm/src/signing/{_ethers.d.ts → _signTypedData/ethers.d.ts} +1 -1
- package/esm/src/signing/_signTypedData/ethers.d.ts.map +1 -0
- package/esm/src/signing/_signTypedData/mod.d.ts +35 -0
- package/esm/src/signing/_signTypedData/mod.d.ts.map +1 -0
- package/esm/src/signing/_signTypedData/mod.js +59 -0
- package/esm/src/signing/_signTypedData/private_key.d.ts +26 -0
- package/esm/src/signing/_signTypedData/private_key.d.ts.map +1 -0
- package/esm/src/signing/_signTypedData/private_key.js +144 -0
- package/esm/src/signing/{_viem.d.ts → _signTypedData/viem.d.ts} +2 -2
- package/esm/src/signing/_signTypedData/viem.d.ts.map +1 -0
- package/{script/src/signing/_window.d.ts → esm/src/signing/_signTypedData/window.d.ts} +18 -12
- package/esm/src/signing/_signTypedData/window.d.ts.map +1 -0
- package/esm/src/signing/{_window.js → _signTypedData/window.js} +3 -2
- package/esm/src/signing/_sorter.d.ts +56 -82
- package/esm/src/signing/_sorter.d.ts.map +1 -1
- package/esm/src/signing/_sorter.js +36 -49
- package/esm/src/signing/mod.d.ts +151 -130
- package/esm/src/signing/mod.d.ts.map +1 -1
- package/esm/src/signing/mod.js +182 -228
- package/esm/src/transports/base.d.ts +1 -1
- 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 +9 -15
- package/esm/src/transports/http/http_transport.d.ts.map +1 -1
- package/esm/src/transports/http/http_transport.js +64 -59
- 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/_hyperliquid_event_target.js +1 -1
- package/esm/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
- package/esm/src/transports/websocket/_reconnecting_websocket.js +17 -4
- package/esm/src/transports/websocket/_websocket_async_request.d.ts +0 -9
- package/esm/src/transports/websocket/_websocket_async_request.d.ts.map +1 -1
- package/esm/src/transports/websocket/_websocket_async_request.js +14 -20
- package/esm/src/transports/websocket/websocket_transport.d.ts +8 -4
- package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/esm/src/transports/websocket/websocket_transport.js +83 -54
- package/esm/src/types/exchange/requests.d.ts +27 -51
- package/esm/src/types/exchange/requests.d.ts.map +1 -1
- package/esm/src/types/explorer/requests.d.ts +5 -8
- package/esm/src/types/explorer/requests.d.ts.map +1 -1
- package/esm/src/types/info/accounts.d.ts +5 -5
- package/esm/src/types/info/accounts.d.ts.map +1 -1
- package/esm/src/types/info/markets.d.ts +6 -0
- package/esm/src/types/info/markets.d.ts.map +1 -1
- package/esm/src/types/info/orders.d.ts +1 -1
- package/esm/src/types/info/orders.d.ts.map +1 -1
- package/esm/src/types/info/requests.d.ts +129 -124
- package/esm/src/types/info/requests.d.ts.map +1 -1
- package/{script/src/types/info/delegations.d.ts → esm/src/types/info/validators.d.ts} +2 -2
- package/esm/src/types/info/validators.d.ts.map +1 -0
- package/esm/src/types/info/vaults.d.ts +7 -0
- package/esm/src/types/info/vaults.d.ts.map +1 -1
- package/esm/src/types/mod.d.ts +1 -1
- package/esm/src/types/mod.d.ts.map +1 -1
- package/esm/src/types/subscriptions/requests.d.ts +72 -18
- package/esm/src/types/subscriptions/requests.d.ts.map +1 -1
- package/esm/src/types/subscriptions/responses.d.ts +2 -0
- package/esm/src/types/subscriptions/responses.d.ts.map +1 -1
- package/package.json +8 -5
- package/script/mod.d.ts +1 -1
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +13 -23
- package/script/src/base.d.ts +4 -1
- package/script/src/base.d.ts.map +1 -1
- package/script/src/base.js +10 -20
- package/script/src/clients/exchange.d.ts +289 -207
- package/script/src/clients/exchange.d.ts.map +1 -1
- package/script/src/clients/exchange.js +2000 -1815
- package/script/src/clients/info.d.ts +264 -48
- package/script/src/clients/info.d.ts.map +1 -1
- package/script/src/clients/info.js +1442 -1210
- package/script/src/clients/multiSign.d.ts +285 -204
- package/script/src/clients/multiSign.d.ts.map +1 -1
- package/script/src/clients/multiSign.js +2043 -2025
- package/script/src/clients/subscription.d.ts +38 -3
- package/script/src/clients/subscription.d.ts.map +1 -1
- package/script/src/clients/subscription.js +568 -545
- package/script/src/signing/{_ethers.d.ts → _signTypedData/ethers.d.ts} +1 -1
- package/script/src/signing/_signTypedData/ethers.d.ts.map +1 -0
- package/script/src/signing/_signTypedData/ethers.js +16 -0
- package/script/src/signing/_signTypedData/mod.d.ts +35 -0
- package/script/src/signing/_signTypedData/mod.d.ts.map +1 -0
- package/script/src/signing/_signTypedData/mod.js +67 -0
- package/script/src/signing/_signTypedData/private_key.d.ts +26 -0
- package/script/src/signing/_signTypedData/private_key.d.ts.map +1 -0
- package/script/src/signing/_signTypedData/private_key.js +148 -0
- package/script/src/signing/{_viem.d.ts → _signTypedData/viem.d.ts} +2 -2
- package/script/src/signing/_signTypedData/viem.d.ts.map +1 -0
- package/script/src/signing/_signTypedData/viem.js +9 -0
- package/{esm/src/signing/_window.d.ts → script/src/signing/_signTypedData/window.d.ts} +18 -12
- package/script/src/signing/_signTypedData/window.d.ts.map +1 -0
- package/script/src/signing/_signTypedData/window.js +34 -0
- package/script/src/signing/_sorter.d.ts +56 -82
- package/script/src/signing/_sorter.d.ts.map +1 -1
- package/script/src/signing/_sorter.js +655 -678
- package/script/src/signing/mod.d.ts +151 -130
- package/script/src/signing/mod.d.ts.map +1 -1
- package/script/src/signing/mod.js +286 -342
- package/script/src/transports/base.d.ts +1 -1
- package/script/src/transports/base.d.ts.map +1 -1
- package/script/src/transports/base.js +11 -21
- package/script/src/transports/http/http_transport.d.ts +9 -15
- package/script/src/transports/http/http_transport.d.ts.map +1 -1
- package/script/src/transports/http/http_transport.js +97 -102
- 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/_hyperliquid_event_target.js +51 -61
- package/script/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
- package/script/src/transports/websocket/_reconnecting_websocket.js +271 -268
- package/script/src/transports/websocket/_websocket_async_request.d.ts +0 -9
- package/script/src/transports/websocket/_websocket_async_request.d.ts.map +1 -1
- package/script/src/transports/websocket/_websocket_async_request.js +157 -174
- package/script/src/transports/websocket/websocket_transport.d.ts +8 -4
- package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/script/src/transports/websocket/websocket_transport.js +209 -189
- package/script/src/types/exchange/requests.d.ts +27 -51
- package/script/src/types/exchange/requests.d.ts.map +1 -1
- package/script/src/types/exchange/requests.js +2 -12
- package/script/src/types/exchange/responses.js +2 -12
- package/script/src/types/explorer/requests.d.ts +5 -8
- package/script/src/types/explorer/requests.d.ts.map +1 -1
- package/script/src/types/explorer/requests.js +2 -12
- package/script/src/types/explorer/responses.js +2 -12
- package/script/src/types/info/accounts.d.ts +5 -5
- package/script/src/types/info/accounts.d.ts.map +1 -1
- package/script/src/types/info/accounts.js +2 -12
- package/script/src/types/info/assets.js +2 -12
- package/script/src/types/info/markets.d.ts +6 -0
- package/script/src/types/info/markets.d.ts.map +1 -1
- package/script/src/types/info/markets.js +2 -12
- package/script/src/types/info/orders.d.ts +1 -1
- package/script/src/types/info/orders.d.ts.map +1 -1
- package/script/src/types/info/orders.js +2 -12
- package/script/src/types/info/requests.d.ts +129 -124
- package/script/src/types/info/requests.d.ts.map +1 -1
- package/script/src/types/info/requests.js +2 -12
- package/{esm/src/types/info/delegations.d.ts → script/src/types/info/validators.d.ts} +2 -2
- package/script/src/types/info/validators.d.ts.map +1 -0
- package/script/src/types/info/validators.js +2 -0
- package/script/src/types/info/vaults.d.ts +7 -0
- package/script/src/types/info/vaults.d.ts.map +1 -1
- package/script/src/types/info/vaults.js +2 -12
- package/script/src/types/mod.d.ts +1 -1
- package/script/src/types/mod.d.ts.map +1 -1
- package/script/src/types/mod.js +2 -12
- package/script/src/types/subscriptions/requests.d.ts +72 -18
- package/script/src/types/subscriptions/requests.d.ts.map +1 -1
- package/script/src/types/subscriptions/requests.js +2 -12
- package/script/src/types/subscriptions/responses.d.ts +2 -0
- package/script/src/types/subscriptions/responses.d.ts.map +1 -1
- package/script/src/types/subscriptions/responses.js +2 -12
- package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts +0 -2
- package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts.map +0 -1
- package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js +0 -1
- package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts +0 -95
- package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts.map +0 -1
- package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.js +0 -10
- package/esm/deps/jsr.io/@std/async/1.0.13/delay.d.ts +0 -43
- package/esm/deps/jsr.io/@std/async/1.0.13/delay.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/async/1.0.13/delay.js +0 -63
- package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts +0 -9
- package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.js +0 -2
- package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts +0 -21
- package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.js +0 -32
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -51
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -13
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -2
- package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
- package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -87
- package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts +0 -9
- package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.js +0 -2
- package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts +0 -39
- package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.js +0 -237
- package/esm/src/signing/_ethers.d.ts.map +0 -1
- package/esm/src/signing/_private_key.d.ts +0 -22
- package/esm/src/signing/_private_key.d.ts.map +0 -1
- package/esm/src/signing/_private_key.js +0 -124
- package/esm/src/signing/_viem.d.ts.map +0 -1
- package/esm/src/signing/_window.d.ts.map +0 -1
- package/esm/src/types/info/delegations.d.ts.map +0 -1
- package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts +0 -2
- package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts.map +0 -1
- package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js +0 -27
- package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts +0 -95
- package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts.map +0 -1
- package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.js +0 -24
- package/script/deps/jsr.io/@std/async/1.0.13/delay.d.ts +0 -43
- package/script/deps/jsr.io/@std/async/1.0.13/delay.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/async/1.0.13/delay.js +0 -76
- package/script/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts +0 -9
- package/script/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/bytes/1.0.6/_types.js +0 -13
- package/script/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts +0 -21
- package/script/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/bytes/1.0.6/concat.js +0 -45
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -67
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -26
- package/script/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
- package/script/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -13
- package/script/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
- package/script/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -101
- package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts +0 -9
- package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.js +0 -13
- package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts +0 -39
- package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.js +0 -250
- package/script/src/signing/_ethers.d.ts.map +0 -1
- package/script/src/signing/_ethers.js +0 -26
- package/script/src/signing/_private_key.d.ts +0 -22
- package/script/src/signing/_private_key.d.ts.map +0 -1
- package/script/src/signing/_private_key.js +0 -138
- package/script/src/signing/_viem.d.ts.map +0 -1
- package/script/src/signing/_viem.js +0 -19
- package/script/src/signing/_window.d.ts.map +0 -1
- package/script/src/signing/_window.js +0 -43
- package/script/src/types/info/delegations.d.ts.map +0 -1
- package/script/src/types/info/delegations.js +0 -12
- /package/esm/src/signing/{_ethers.js → _signTypedData/ethers.js} +0 -0
- /package/esm/src/signing/{_viem.js → _signTypedData/viem.js} +0 -0
- /package/esm/src/types/info/{delegations.js → validators.js} +0 -0
package/esm/src/signing/mod.js
CHANGED
|
@@ -2,152 +2,162 @@
|
|
|
2
2
|
* This module contains functions for generating Hyperliquid transaction signatures
|
|
3
3
|
* and interfaces to various wallet implementations.
|
|
4
4
|
*
|
|
5
|
-
* @example
|
|
5
|
+
* @example Signing an L1 action
|
|
6
6
|
* ```ts
|
|
7
|
-
* import { signL1Action } from "@nktkas/hyperliquid/signing";
|
|
7
|
+
* import { actionSorter, signL1Action } from "@nktkas/hyperliquid/signing";
|
|
8
|
+
*
|
|
9
|
+
* const privateKey = "0x..."; // or `viem`, `ethers`
|
|
8
10
|
*
|
|
9
|
-
* const action = {
|
|
10
|
-
* type: "cancel",
|
|
11
|
-
* cancels: [{ a: 0, o: 12345 }],
|
|
12
|
-
* };
|
|
13
11
|
* const nonce = Date.now();
|
|
12
|
+
* const action = {
|
|
13
|
+
* type: "cancel",
|
|
14
|
+
* cancels: [
|
|
15
|
+
* { a: 0, o: 12345 },
|
|
16
|
+
* ],
|
|
17
|
+
* } as const;
|
|
14
18
|
*
|
|
15
19
|
* const signature = await signL1Action({
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* isTestnet: true, // Change to false for mainnet
|
|
20
|
+
* wallet: privateKey,
|
|
21
|
+
* action: actionSorter[action.type](action),
|
|
22
|
+
* nonce,
|
|
20
23
|
* });
|
|
21
24
|
* ```
|
|
22
|
-
*
|
|
25
|
+
*
|
|
26
|
+
* @example Signing a user-signed action
|
|
23
27
|
* ```ts
|
|
24
|
-
* import { signUserSignedAction } from "@nktkas/hyperliquid/signing";
|
|
28
|
+
* import { signUserSignedAction, userSignedActionEip712Types } from "@nktkas/hyperliquid/signing";
|
|
29
|
+
*
|
|
30
|
+
* const privateKey = "0x..."; // or `viem`, `ethers`
|
|
25
31
|
*
|
|
26
32
|
* const action = {
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* };
|
|
33
|
+
* type: "approveAgent",
|
|
34
|
+
* signatureChainId: "0x66eee",
|
|
35
|
+
* hyperliquidChain: "Mainnet",
|
|
36
|
+
* agentAddress: "0x...",
|
|
37
|
+
* agentName: "Agent",
|
|
38
|
+
* nonce: Date.now(),
|
|
39
|
+
* } as const;
|
|
34
40
|
*
|
|
35
41
|
* const signature = await signUserSignedAction({
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
42
|
+
* wallet: privateKey,
|
|
43
|
+
* action,
|
|
44
|
+
* types: userSignedActionEip712Types[action.type],
|
|
45
|
+
* });
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @example Signing a multi-signature action
|
|
49
|
+
* ```ts
|
|
50
|
+
* import { actionSorter, signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
|
|
51
|
+
* import { privateKeyToAccount } from "viem/accounts";
|
|
52
|
+
*
|
|
53
|
+
* const wallet = privateKeyToAccount("0x..."); // or `ethers`, private key with address
|
|
54
|
+
* const multiSigUser = "0x...";
|
|
55
|
+
*
|
|
56
|
+
* const nonce = Date.now();
|
|
57
|
+
* const action = {
|
|
58
|
+
* type: "scheduleCancel",
|
|
59
|
+
* time: Date.now() + 10000,
|
|
60
|
+
* } as const;
|
|
61
|
+
*
|
|
62
|
+
* // First, create the required number of signatures
|
|
63
|
+
* const signature = await signL1Action({
|
|
64
|
+
* wallet,
|
|
65
|
+
* action: [multiSigUser.toLowerCase(), wallet.address.toLowerCase(), actionSorter[action.type](action)],
|
|
66
|
+
* nonce,
|
|
67
|
+
* });
|
|
68
|
+
*
|
|
69
|
+
* // Then use signatures in the multi-sig action
|
|
70
|
+
* const multiSigSignature = await signMultiSigAction({
|
|
71
|
+
* wallet,
|
|
72
|
+
* action: {
|
|
73
|
+
* signatureChainId: "0x66eee",
|
|
74
|
+
* signatures: [signature],
|
|
75
|
+
* payload: {
|
|
76
|
+
* multiSigUser,
|
|
77
|
+
* outerSigner: wallet.address,
|
|
78
|
+
* action,
|
|
79
|
+
* },
|
|
80
|
+
* },
|
|
81
|
+
* nonce,
|
|
47
82
|
* });
|
|
48
83
|
* ```
|
|
49
84
|
*
|
|
50
85
|
* @module
|
|
51
86
|
*/
|
|
52
87
|
import { keccak_256 } from "@noble/hashes/sha3";
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
56
|
-
import { isAbstractEthersSigner, isAbstractEthersV5Signer, } from "./_ethers.js";
|
|
57
|
-
import { isValidPrivateKey, signTypedDataWithPrivateKey } from "./_private_key.js";
|
|
58
|
-
import { isAbstractViemWalletClient } from "./_viem.js";
|
|
59
|
-
import { isAbstractWindowEthereum, signTypedDataWithWindowEthereum } from "./_window.js";
|
|
88
|
+
import { etc } from "@noble/secp256k1";
|
|
89
|
+
import { encode as encodeMsgpack } from "@msgpack/msgpack";
|
|
90
|
+
import { isAbstractEthersSigner, isAbstractEthersV5Signer, isAbstractViemWalletClient, isAbstractWindowEthereum, isValidPrivateKey, signTypedData, } from "./_signTypedData/mod.js";
|
|
60
91
|
export { isAbstractEthersSigner, isAbstractEthersV5Signer, isAbstractViemWalletClient, isAbstractWindowEthereum, isValidPrivateKey, };
|
|
61
92
|
export * from "./_sorter.js";
|
|
62
93
|
/**
|
|
63
94
|
* Create a hash of the L1 action.
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* import { actionSorter, createL1ActionHash } from "@nktkas/hyperliquid/signing";
|
|
64
98
|
*
|
|
65
|
-
*
|
|
99
|
+
* const action = {
|
|
100
|
+
* type: "cancel",
|
|
101
|
+
* cancels: [
|
|
102
|
+
* { a: 0, o: 12345 },
|
|
103
|
+
* ],
|
|
104
|
+
* } as const;
|
|
105
|
+
* const nonce = Date.now();
|
|
66
106
|
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
107
|
+
* const actionHash = createL1ActionHash({
|
|
108
|
+
* action: actionSorter[action.type](action),
|
|
109
|
+
* nonce,
|
|
110
|
+
* vaultAddress: "0x...", // optional
|
|
111
|
+
* expiresAfter: Date.now() + 10_000, // optional
|
|
112
|
+
* });
|
|
113
|
+
* ```
|
|
72
114
|
*/
|
|
73
|
-
export function createL1ActionHash(
|
|
115
|
+
export function createL1ActionHash(args) {
|
|
116
|
+
const { action, nonce, vaultAddress, expiresAfter } = args;
|
|
74
117
|
// 1. Action
|
|
75
|
-
const actionBytes = encodeMsgpack(
|
|
118
|
+
const actionBytes = encodeMsgpack(action);
|
|
76
119
|
// 2. Nonce
|
|
77
|
-
const nonceBytes =
|
|
78
|
-
new DataView(nonceBytes.buffer).setBigUint64(0, BigInt(nonce));
|
|
120
|
+
const nonceBytes = toUint64Bytes(nonce);
|
|
79
121
|
// 3. Vault address
|
|
80
|
-
const vaultMarker = vaultAddress ? Uint8Array
|
|
81
|
-
const vaultBytes = vaultAddress ?
|
|
122
|
+
const vaultMarker = vaultAddress ? new Uint8Array([1]) : new Uint8Array([0]);
|
|
123
|
+
const vaultBytes = vaultAddress ? etc.hexToBytes(vaultAddress.slice(2)) : new Uint8Array();
|
|
82
124
|
// 4. Expires after
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
expiresBytes = new Uint8Array(8);
|
|
88
|
-
new DataView(expiresBytes.buffer).setBigUint64(0, BigInt(expiresAfter));
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
expiresMarker = new Uint8Array();
|
|
92
|
-
expiresBytes = new Uint8Array();
|
|
93
|
-
}
|
|
94
|
-
// Create a keccak256 hash
|
|
95
|
-
const bytes = concatBytes([
|
|
96
|
-
actionBytes,
|
|
97
|
-
nonceBytes,
|
|
98
|
-
vaultMarker,
|
|
99
|
-
vaultBytes,
|
|
100
|
-
expiresMarker,
|
|
101
|
-
expiresBytes,
|
|
102
|
-
]);
|
|
125
|
+
const expiresMarker = expiresAfter !== undefined ? new Uint8Array([0]) : new Uint8Array();
|
|
126
|
+
const expiresBytes = expiresAfter !== undefined ? toUint64Bytes(expiresAfter) : new Uint8Array();
|
|
127
|
+
// Create a hash
|
|
128
|
+
const bytes = etc.concatBytes(actionBytes, nonceBytes, vaultMarker, vaultBytes, expiresMarker, expiresBytes);
|
|
103
129
|
const hash = keccak_256(bytes);
|
|
104
|
-
return `0x${
|
|
130
|
+
return `0x${etc.bytesToHex(hash)}`;
|
|
105
131
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (typeof obj === "number" && Number.isInteger(obj) &&
|
|
111
|
-
obj <= Number.MAX_SAFE_INTEGER && obj >= Number.MIN_SAFE_INTEGER &&
|
|
112
|
-
(obj >= THIRTY_TWO_BITS || obj < -THIRTY_ONE_BITS)) {
|
|
113
|
-
return BigInt(obj);
|
|
114
|
-
}
|
|
115
|
-
if (Array.isArray(obj)) {
|
|
116
|
-
return obj.map(normalizeIntegersForMsgPack);
|
|
117
|
-
}
|
|
118
|
-
if (obj && typeof obj === "object" && obj !== null) {
|
|
119
|
-
return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, normalizeIntegersForMsgPack(value)]));
|
|
120
|
-
}
|
|
121
|
-
return obj;
|
|
132
|
+
function toUint64Bytes(n) {
|
|
133
|
+
const bytes = new Uint8Array(8);
|
|
134
|
+
new DataView(bytes.buffer).setBigUint64(0, BigInt(n));
|
|
135
|
+
return bytes;
|
|
122
136
|
}
|
|
123
137
|
/**
|
|
124
138
|
* Sign an L1 action.
|
|
125
|
-
*
|
|
126
|
-
* Note: Signature generation depends on the order of the action keys.
|
|
127
|
-
* @param args - Arguments for signing the action.
|
|
128
|
-
* @returns The signature components r, s, and v.
|
|
129
139
|
* @example
|
|
130
140
|
* ```ts
|
|
131
|
-
* import { signL1Action } from "@nktkas/hyperliquid/signing";
|
|
141
|
+
* import { actionSorter, signL1Action } from "@nktkas/hyperliquid/signing";
|
|
132
142
|
*
|
|
133
143
|
* const privateKey = "0x..."; // or `viem`, `ethers`
|
|
134
144
|
*
|
|
145
|
+
* const nonce = Date.now();
|
|
135
146
|
* const action = {
|
|
136
147
|
* type: "cancel",
|
|
137
148
|
* cancels: [
|
|
138
|
-
* { a: 0, o: 12345 },
|
|
149
|
+
* { a: 0, o: 12345 },
|
|
139
150
|
* ],
|
|
140
|
-
* };
|
|
141
|
-
* const nonce = Date.now();
|
|
151
|
+
* } as const;
|
|
142
152
|
*
|
|
143
153
|
* const signature = await signL1Action({
|
|
144
154
|
* wallet: privateKey,
|
|
145
|
-
* action,
|
|
155
|
+
* action: actionSorter[action.type](action),
|
|
146
156
|
* nonce,
|
|
147
|
-
* isTestnet: true, // Change to false for mainnet
|
|
148
157
|
* });
|
|
149
158
|
*
|
|
150
|
-
*
|
|
159
|
+
* // Send the signed action to the Hyperliquid API
|
|
160
|
+
* const response = await fetch("https://api.hyperliquid.xyz/exchange", {
|
|
151
161
|
* method: "POST",
|
|
152
162
|
* headers: { "Content-Type": "application/json" },
|
|
153
163
|
* body: JSON.stringify({ action, signature, nonce }),
|
|
@@ -157,63 +167,54 @@ function normalizeIntegersForMsgPack(obj) {
|
|
|
157
167
|
*/
|
|
158
168
|
export async function signL1Action(args) {
|
|
159
169
|
const { wallet, action, nonce, isTestnet = false, vaultAddress, expiresAfter, } = args;
|
|
160
|
-
const
|
|
161
|
-
name: "Exchange",
|
|
162
|
-
version: "1",
|
|
163
|
-
chainId: 1337, // hyperliquid requires a fixed chain
|
|
164
|
-
verifyingContract: "0x0000000000000000000000000000000000000000",
|
|
165
|
-
};
|
|
166
|
-
const types = {
|
|
167
|
-
Agent: [
|
|
168
|
-
{ name: "source", type: "string" },
|
|
169
|
-
{ name: "connectionId", type: "bytes32" },
|
|
170
|
-
],
|
|
171
|
-
};
|
|
172
|
-
const actionHash = createL1ActionHash(action, nonce, vaultAddress, expiresAfter);
|
|
170
|
+
const actionHash = createL1ActionHash({ action, nonce, vaultAddress, expiresAfter });
|
|
173
171
|
const message = {
|
|
174
172
|
source: isTestnet ? "b" : "a",
|
|
175
173
|
connectionId: actionHash,
|
|
176
174
|
};
|
|
177
|
-
|
|
178
|
-
|
|
175
|
+
return await signTypedData({
|
|
176
|
+
wallet,
|
|
177
|
+
domain: {
|
|
178
|
+
name: "Exchange",
|
|
179
|
+
version: "1",
|
|
180
|
+
chainId: 1337, // hyperliquid requires chainId to be 1337
|
|
181
|
+
verifyingContract: "0x0000000000000000000000000000000000000000",
|
|
182
|
+
},
|
|
183
|
+
types: {
|
|
184
|
+
Agent: [
|
|
185
|
+
{ name: "source", type: "string" },
|
|
186
|
+
{ name: "connectionId", type: "bytes32" },
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
primaryType: "Agent",
|
|
190
|
+
message,
|
|
191
|
+
});
|
|
179
192
|
}
|
|
180
193
|
/**
|
|
181
194
|
* Sign a user-signed action.
|
|
182
|
-
*
|
|
183
|
-
* Note: Signature generation depends on the order of types.
|
|
184
|
-
*
|
|
185
|
-
* @param args - Arguments for signing the action.
|
|
186
|
-
* @returns The signature components r, s, and v.
|
|
187
195
|
* @example
|
|
188
196
|
* ```ts
|
|
189
|
-
* import { signUserSignedAction } from "@nktkas/hyperliquid/signing";
|
|
197
|
+
* import { signUserSignedAction, userSignedActionEip712Types } from "@nktkas/hyperliquid/signing";
|
|
190
198
|
*
|
|
191
199
|
* const privateKey = "0x..."; // or `viem`, `ethers`
|
|
192
200
|
*
|
|
193
201
|
* const action = {
|
|
194
202
|
* type: "approveAgent",
|
|
195
|
-
* hyperliquidChain: "Testnet", // "Mainnet" or "Testnet"
|
|
196
203
|
* signatureChainId: "0x66eee",
|
|
197
|
-
*
|
|
198
|
-
* agentAddress: "0x...",
|
|
204
|
+
* hyperliquidChain: "Mainnet",
|
|
205
|
+
* agentAddress: "0x...",
|
|
199
206
|
* agentName: "Agent",
|
|
200
|
-
*
|
|
207
|
+
* nonce: Date.now(),
|
|
208
|
+
* } as const;
|
|
201
209
|
*
|
|
202
210
|
* const signature = await signUserSignedAction({
|
|
203
211
|
* wallet: privateKey,
|
|
204
212
|
* action,
|
|
205
|
-
* types:
|
|
206
|
-
* "HyperliquidTransaction:ApproveAgent": [
|
|
207
|
-
* { name: "hyperliquidChain", type: "string" },
|
|
208
|
-
* { name: "agentAddress", type: "address" },
|
|
209
|
-
* { name: "agentName", type: "string" },
|
|
210
|
-
* { name: "nonce", type: "uint64" },
|
|
211
|
-
* ],
|
|
212
|
-
* },
|
|
213
|
-
* chainId: parseInt(action.signatureChainId, 16),
|
|
213
|
+
* types: userSignedActionEip712Types[action.type],
|
|
214
214
|
* });
|
|
215
215
|
*
|
|
216
|
-
*
|
|
216
|
+
* // Send the signed action to the Hyperliquid API
|
|
217
|
+
* const response = await fetch("https://api.hyperliquid.xyz/exchange", {
|
|
217
218
|
* method: "POST",
|
|
218
219
|
* headers: { "Content-Type": "application/json" },
|
|
219
220
|
* body: JSON.stringify({ action, signature, nonce: action.nonce }),
|
|
@@ -222,76 +223,76 @@ export async function signL1Action(args) {
|
|
|
222
223
|
* ```
|
|
223
224
|
*/
|
|
224
225
|
export async function signUserSignedAction(args) {
|
|
225
|
-
const { wallet, action, types
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
226
|
+
const { wallet, action, types } = args;
|
|
227
|
+
return await signTypedData({
|
|
228
|
+
wallet,
|
|
229
|
+
domain: {
|
|
230
|
+
name: "HyperliquidSignTransaction",
|
|
231
|
+
version: "1",
|
|
232
|
+
chainId: parseInt(action.signatureChainId),
|
|
233
|
+
verifyingContract: "0x0000000000000000000000000000000000000000",
|
|
234
|
+
},
|
|
235
|
+
types,
|
|
236
|
+
primaryType: Object.keys(types)[0],
|
|
237
|
+
message: action,
|
|
238
|
+
});
|
|
234
239
|
}
|
|
235
240
|
/**
|
|
236
241
|
* Sign a multi-signature action.
|
|
237
|
-
*
|
|
238
|
-
* Note: Signature generation depends on the order of the action keys.
|
|
239
|
-
*
|
|
240
|
-
* @param args - Arguments for signing the action.
|
|
241
|
-
* @returns The signature components r, s, and v.
|
|
242
242
|
* @example
|
|
243
243
|
* ```ts
|
|
244
|
-
* import { signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
|
|
244
|
+
* import { actionSorter, signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
|
|
245
245
|
* import { privateKeyToAccount } from "viem/accounts";
|
|
246
246
|
*
|
|
247
|
-
* const wallet = privateKeyToAccount("0x...");
|
|
248
|
-
* const multiSigUser = "0x...";
|
|
247
|
+
* const wallet = privateKeyToAccount("0x..."); // or `ethers`, private key with address
|
|
248
|
+
* const multiSigUser = "0x...";
|
|
249
249
|
*
|
|
250
250
|
* const nonce = Date.now();
|
|
251
|
-
* const action = {
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
* };
|
|
251
|
+
* const action = {
|
|
252
|
+
* type: "scheduleCancel",
|
|
253
|
+
* time: Date.now() + 10000,
|
|
254
|
+
* } as const;
|
|
255
255
|
*
|
|
256
|
-
* // First, create
|
|
256
|
+
* // First, create the required number of signatures
|
|
257
257
|
* const signature = await signL1Action({
|
|
258
|
-
*
|
|
259
|
-
*
|
|
260
|
-
*
|
|
261
|
-
* isTestnet: true,
|
|
258
|
+
* wallet,
|
|
259
|
+
* action: [multiSigUser.toLowerCase(), wallet.address.toLowerCase(), actionSorter[action.type](action)],
|
|
260
|
+
* nonce,
|
|
262
261
|
* });
|
|
263
262
|
*
|
|
264
|
-
* // Then use
|
|
263
|
+
* // Then use signatures in the multi-sig action
|
|
265
264
|
* const multiSigSignature = await signMultiSigAction({
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
*
|
|
275
|
-
* }
|
|
276
|
-
*
|
|
277
|
-
* nonce,
|
|
278
|
-
* hyperliquidChain: "Testnet",
|
|
279
|
-
* signatureChainId: "0x66eee",
|
|
265
|
+
* wallet,
|
|
266
|
+
* action: {
|
|
267
|
+
* signatureChainId: "0x66eee",
|
|
268
|
+
* signatures: [signature],
|
|
269
|
+
* payload: {
|
|
270
|
+
* multiSigUser,
|
|
271
|
+
* outerSigner: wallet.address,
|
|
272
|
+
* action,
|
|
273
|
+
* },
|
|
274
|
+
* },
|
|
275
|
+
* nonce,
|
|
280
276
|
* });
|
|
281
277
|
* ```
|
|
282
278
|
*/
|
|
283
279
|
export async function signMultiSigAction(args) {
|
|
284
|
-
const { wallet, action, nonce,
|
|
285
|
-
const multiSigActionHash = createL1ActionHash(action, nonce, vaultAddress, expiresAfter);
|
|
280
|
+
const { wallet, action, nonce, isTestnet = false, vaultAddress, expiresAfter, } = args;
|
|
281
|
+
const multiSigActionHash = createL1ActionHash({ action, nonce, vaultAddress, expiresAfter });
|
|
286
282
|
const message = {
|
|
283
|
+
signatureChainId: action.signatureChainId,
|
|
284
|
+
hyperliquidChain: isTestnet ? "Testnet" : "Mainnet",
|
|
287
285
|
multiSigActionHash,
|
|
288
|
-
hyperliquidChain,
|
|
289
|
-
signatureChainId,
|
|
290
286
|
nonce,
|
|
291
287
|
};
|
|
292
|
-
return await
|
|
288
|
+
return await signTypedData({
|
|
293
289
|
wallet,
|
|
294
|
-
|
|
290
|
+
domain: {
|
|
291
|
+
name: "HyperliquidSignTransaction",
|
|
292
|
+
version: "1",
|
|
293
|
+
chainId: parseInt(message.signatureChainId),
|
|
294
|
+
verifyingContract: "0x0000000000000000000000000000000000000000",
|
|
295
|
+
},
|
|
295
296
|
types: {
|
|
296
297
|
"HyperliquidTransaction:SendMultiSig": [
|
|
297
298
|
{ name: "hyperliquidChain", type: "string" },
|
|
@@ -299,54 +300,7 @@ export async function signMultiSigAction(args) {
|
|
|
299
300
|
{ name: "nonce", type: "uint64" },
|
|
300
301
|
],
|
|
301
302
|
},
|
|
302
|
-
|
|
303
|
+
primaryType: "HyperliquidTransaction:SendMultiSig",
|
|
304
|
+
message,
|
|
303
305
|
});
|
|
304
306
|
}
|
|
305
|
-
/** Signs typed data with the provided wallet using EIP-712. */
|
|
306
|
-
async function abstractSignTypedData(args) {
|
|
307
|
-
const { wallet, domain, types, message } = args;
|
|
308
|
-
if (isValidPrivateKey(wallet)) {
|
|
309
|
-
return await signTypedDataWithPrivateKey({
|
|
310
|
-
privateKey: wallet,
|
|
311
|
-
domain,
|
|
312
|
-
types,
|
|
313
|
-
primaryType: Object.keys(types)[0],
|
|
314
|
-
message,
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
else if (isAbstractViemWalletClient(wallet)) {
|
|
318
|
-
return await wallet.signTypedData({
|
|
319
|
-
domain,
|
|
320
|
-
types: {
|
|
321
|
-
EIP712Domain: [
|
|
322
|
-
{ name: "name", type: "string" },
|
|
323
|
-
{ name: "version", type: "string" },
|
|
324
|
-
{ name: "chainId", type: "uint256" },
|
|
325
|
-
{ name: "verifyingContract", type: "address" },
|
|
326
|
-
],
|
|
327
|
-
...types,
|
|
328
|
-
},
|
|
329
|
-
primaryType: Object.keys(types)[0],
|
|
330
|
-
message,
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
else if (isAbstractEthersSigner(wallet)) {
|
|
334
|
-
return await wallet.signTypedData(domain, types, message);
|
|
335
|
-
}
|
|
336
|
-
else if (isAbstractEthersV5Signer(wallet)) {
|
|
337
|
-
return await wallet._signTypedData(domain, types, message);
|
|
338
|
-
}
|
|
339
|
-
else if (isAbstractWindowEthereum(wallet)) {
|
|
340
|
-
return await signTypedDataWithWindowEthereum(wallet, domain, types, message);
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
throw new Error("Unsupported wallet for signing typed data");
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
/** Splits a signature hexadecimal string into its components. */
|
|
347
|
-
function splitSignature(signature) {
|
|
348
|
-
const r = `0x${signature.slice(2, 66)}`;
|
|
349
|
-
const s = `0x${signature.slice(66, 130)}`;
|
|
350
|
-
const v = parseInt(signature.slice(130, 132), 16);
|
|
351
|
-
return { r, s, v };
|
|
352
|
-
}
|
|
@@ -42,6 +42,6 @@ export interface Subscription {
|
|
|
42
42
|
}
|
|
43
43
|
/** Base class for all transport-related errors. */
|
|
44
44
|
export declare class TransportError extends HyperliquidError {
|
|
45
|
-
constructor(message?: string);
|
|
45
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
46
46
|
}
|
|
47
47
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC/D;;;;;;OAMG;IACH,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,mDAAmD;AACnD,qBAAa,cAAe,SAAQ,gBAAgB;gBACpC,OAAO,CAAC,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC/D;;;;;;OAMG;IACH,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,mDAAmD;AACnD,qBAAa,cAAe,SAAQ,gBAAgB;gBACpC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIvD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { HyperliquidError } from "../base.js";
|
|
2
2
|
/** Base class for all transport-related errors. */
|
|
3
3
|
export class TransportError extends HyperliquidError {
|
|
4
|
-
constructor(message) {
|
|
5
|
-
super(message);
|
|
4
|
+
constructor(message, options) {
|
|
5
|
+
super(message, options);
|
|
6
6
|
this.name = "TransportError";
|
|
7
7
|
}
|
|
8
8
|
}
|
|
@@ -1,19 +1,13 @@
|
|
|
1
1
|
import type { MaybePromise } from "../../base.js";
|
|
2
2
|
import { type IRequestTransport, TransportError } from "../base.js";
|
|
3
|
-
/**
|
|
4
|
-
* Error thrown when an HTTP response is deemed invalid:
|
|
5
|
-
* - Non-200 status code
|
|
6
|
-
* - Unexpected content type
|
|
7
|
-
*/
|
|
3
|
+
/** Error thrown when an HTTP request fails. */
|
|
8
4
|
export declare class HttpRequestError extends TransportError {
|
|
9
|
-
response
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*/
|
|
16
|
-
constructor(response: Response, responseBody?: string | undefined);
|
|
5
|
+
response?: Response;
|
|
6
|
+
body?: string;
|
|
7
|
+
constructor(args?: {
|
|
8
|
+
response?: Response;
|
|
9
|
+
body?: string;
|
|
10
|
+
}, options?: ErrorOptions);
|
|
17
11
|
}
|
|
18
12
|
/** Configuration options for the HTTP transport layer. */
|
|
19
13
|
export interface HttpTransportOptions {
|
|
@@ -84,8 +78,8 @@ export declare class HttpTransport implements IRequestTransport, HttpTransportOp
|
|
|
84
78
|
* @param payload - The payload to send with the request.
|
|
85
79
|
* @param signal - An optional abort signal.
|
|
86
80
|
* @returns A promise that resolves with parsed JSON response body.
|
|
87
|
-
*
|
|
88
|
-
* @throws
|
|
81
|
+
*
|
|
82
|
+
* @throws {HttpRequestError} Thrown when the HTTP request fails.
|
|
89
83
|
*/
|
|
90
84
|
request<T>(endpoint: "info" | "exchange" | "explorer", payload: unknown, signal?: AbortSignal): Promise<T>;
|
|
91
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/http/http_transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,KAAK,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE
|
|
1
|
+
{"version":3,"file":"http_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/http/http_transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,KAAK,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE,+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"}
|