@nktkas/hyperliquid 0.19.1 → 0.20.0
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/CONTRIBUTING.md +4 -2
- package/README.md +36 -35
- package/esm/_dnt.polyfills.d.ts +20 -0
- package/esm/_dnt.polyfills.d.ts.map +1 -0
- package/esm/_dnt.polyfills.js +12 -0
- package/esm/mod.d.ts +3 -0
- package/esm/mod.d.ts.map +1 -1
- package/esm/mod.js +2 -0
- package/esm/src/base.d.ts +1 -47
- package/esm/src/base.d.ts.map +1 -1
- package/esm/src/base.js +1 -8
- package/esm/src/clients/event.d.ts +6 -4
- package/esm/src/clients/event.d.ts.map +1 -1
- package/esm/src/clients/event.js +58 -77
- package/esm/src/clients/public.d.ts +26 -5
- package/esm/src/clients/public.d.ts.map +1 -1
- package/esm/src/clients/public.js +29 -41
- package/esm/src/clients/wallet.d.ts +200 -26
- package/esm/src/clients/wallet.d.ts.map +1 -1
- package/esm/src/clients/wallet.js +306 -284
- package/esm/src/signing.d.ts +80 -5
- package/esm/src/signing.d.ts.map +1 -1
- package/esm/src/signing.js +96 -7
- package/esm/src/transports/base.d.ts +49 -0
- package/esm/src/transports/base.d.ts.map +1 -0
- package/esm/src/transports/base.js +8 -0
- package/esm/src/transports/http/http_transport.d.ts +8 -5
- package/esm/src/transports/http/http_transport.d.ts.map +1 -1
- package/esm/src/transports/http/http_transport.js +15 -62
- package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts +36 -39
- package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
- package/esm/src/transports/websocket/_reconnecting_websocket.d.ts +18 -25
- package/esm/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
- package/esm/src/transports/websocket/_reconnecting_websocket.js +80 -179
- package/{script/src/transports/websocket/_websocket_request_dispatcher.d.ts → esm/src/transports/websocket/_websocket_async_request.d.ts} +14 -18
- package/esm/src/transports/websocket/_websocket_async_request.d.ts.map +1 -0
- package/esm/src/transports/websocket/{_websocket_request_dispatcher.js → _websocket_async_request.js} +42 -75
- package/esm/src/transports/websocket/websocket_transport.d.ts +38 -28
- package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/esm/src/transports/websocket/websocket_transport.js +61 -76
- package/esm/src/types/exchange/requests.d.ts +278 -66
- package/esm/src/types/exchange/requests.d.ts.map +1 -1
- package/esm/src/types/info/assets.d.ts +0 -48
- package/esm/src/types/info/assets.d.ts.map +1 -1
- package/esm/src/types/info/markets.d.ts +52 -0
- package/esm/src/types/info/markets.d.ts.map +1 -0
- package/esm/src/types/info/markets.js +1 -0
- 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 +14 -5
- package/esm/src/types/info/requests.d.ts.map +1 -1
- package/esm/src/types/mod.d.ts +4 -0
- package/esm/src/types/mod.d.ts.map +1 -1
- package/esm/src/types/mod.js +3 -1
- package/esm/src/types/subscriptions/requests.d.ts +2 -0
- package/esm/src/types/subscriptions/requests.d.ts.map +1 -1
- package/package.json +12 -9
- package/script/_dnt.polyfills.d.ts +20 -0
- package/script/_dnt.polyfills.d.ts.map +1 -0
- package/script/_dnt.polyfills.js +23 -0
- package/script/mod.d.ts +3 -0
- package/script/mod.d.ts.map +1 -1
- package/script/mod.js +3 -1
- package/script/src/base.d.ts +1 -47
- package/script/src/base.d.ts.map +1 -1
- package/script/src/base.js +2 -10
- package/script/src/clients/event.d.ts +6 -4
- package/script/src/clients/event.d.ts.map +1 -1
- package/script/src/clients/event.js +58 -77
- package/script/src/clients/public.d.ts +26 -5
- package/script/src/clients/public.d.ts.map +1 -1
- package/script/src/clients/public.js +29 -41
- package/script/src/clients/wallet.d.ts +200 -26
- package/script/src/clients/wallet.d.ts.map +1 -1
- package/script/src/clients/wallet.js +305 -283
- package/script/src/signing.d.ts +80 -5
- package/script/src/signing.d.ts.map +1 -1
- package/script/src/signing.js +148 -58
- package/script/src/transports/base.d.ts +49 -0
- package/script/src/transports/base.d.ts.map +1 -0
- package/script/src/transports/base.js +22 -0
- package/script/src/transports/http/http_transport.d.ts +8 -5
- package/script/src/transports/http/http_transport.d.ts.map +1 -1
- package/script/src/transports/http/http_transport.js +16 -63
- package/script/src/transports/websocket/_hyperliquid_event_target.d.ts +36 -39
- package/script/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
- package/script/src/transports/websocket/_reconnecting_websocket.d.ts +18 -25
- package/script/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
- package/script/src/transports/websocket/_reconnecting_websocket.js +81 -180
- package/{esm/src/transports/websocket/_websocket_request_dispatcher.d.ts → script/src/transports/websocket/_websocket_async_request.d.ts} +14 -18
- package/script/src/transports/websocket/_websocket_async_request.d.ts.map +1 -0
- package/script/src/transports/websocket/{_websocket_request_dispatcher.js → _websocket_async_request.js} +45 -78
- package/script/src/transports/websocket/websocket_transport.d.ts +38 -28
- package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -1
- package/script/src/transports/websocket/websocket_transport.js +63 -78
- package/script/src/types/exchange/requests.d.ts +278 -66
- package/script/src/types/exchange/requests.d.ts.map +1 -1
- package/script/src/types/info/assets.d.ts +0 -48
- package/script/src/types/info/assets.d.ts.map +1 -1
- package/script/src/types/info/markets.d.ts +52 -0
- package/script/src/types/info/markets.d.ts.map +1 -0
- package/script/{deps/jsr.io/@noble/hashes/1.8.0/src/crypto.js → src/types/info/markets.js} +0 -2
- 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/requests.d.ts +14 -5
- package/script/src/types/info/requests.d.ts.map +1 -1
- package/script/src/types/mod.d.ts +4 -0
- package/script/src/types/mod.d.ts.map +1 -1
- package/script/src/types/mod.js +25 -22
- package/script/src/types/subscriptions/requests.d.ts +2 -0
- package/script/src/types/subscriptions/requests.d.ts.map +1 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.d.ts +0 -55
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.d.ts.map +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.js +0 -66
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.d.ts +0 -2
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.d.ts.map +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.js +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.d.ts +0 -53
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.d.ts.map +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.js +0 -294
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/utils.d.ts +0 -161
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/utils.d.ts.map +0 -1
- package/esm/deps/jsr.io/@noble/hashes/1.8.0/src/utils.js +0 -280
- package/esm/src/transports/websocket/_websocket_request_dispatcher.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.d.ts +0 -55
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/_u64.js +0 -99
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.d.ts +0 -2
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/crypto.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.d.ts +0 -53
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/sha3.js +0 -309
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/utils.d.ts +0 -161
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/utils.d.ts.map +0 -1
- package/script/deps/jsr.io/@noble/hashes/1.8.0/src/utils.js +0 -322
- package/script/src/transports/websocket/_websocket_request_dispatcher.d.ts.map +0 -1
package/CONTRIBUTING.md
CHANGED
|
@@ -42,10 +42,12 @@ git push origin feature/your-feature-name
|
|
|
42
42
|
|
|
43
43
|
#### Coding Guidelines
|
|
44
44
|
|
|
45
|
-
- **TypeScript**: Ensure your code passes TypeScript compilation without errors.
|
|
45
|
+
- **TypeScript**: Ensure your code passes TypeScript compilation without errors. Try not to ignore typescript errors and
|
|
46
|
+
avoid creating unsafe types.
|
|
46
47
|
- **Style**: Follow Deno formatting convention ([deno fmt](https://docs.deno.com/runtime/reference/cli/fmt/)) and code
|
|
47
48
|
style ([deno lint](https://docs.deno.com/runtime/reference/cli/lint/)).
|
|
48
|
-
- **Dependencies**:
|
|
49
|
+
- **Dependencies**: Try to use trusted small dependencies (e.g. [@noble](https://github.com/paulmillr/noble-hashes) or
|
|
50
|
+
[deno @std](https://github.com/denoland/std)).
|
|
49
51
|
- **Docs**: Update or add JSDoc comments where appropriate.
|
|
50
52
|
|
|
51
53
|
#### Testing
|
package/README.md
CHANGED
|
@@ -20,21 +20,23 @@ runtimes, written in TypeScript and provided with tests.
|
|
|
20
20
|
|
|
21
21
|
## Installation
|
|
22
22
|
|
|
23
|
+
> [!NOTE]
|
|
24
|
+
> While this library is in TypeScript, it can also be used in JavaScript and there is support for ESM/CommonJS.
|
|
25
|
+
|
|
26
|
+
### Node.js (choose your package manager)
|
|
27
|
+
|
|
23
28
|
```
|
|
24
|
-
# npm
|
|
25
29
|
npm i @nktkas/hyperliquid
|
|
26
30
|
|
|
27
|
-
|
|
28
|
-
deno add jsr:@nktkas/hyperliquid
|
|
31
|
+
pnpm add @nktkas/hyperliquid
|
|
29
32
|
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
yarn add @nktkas/hyperliquid
|
|
34
|
+
```
|
|
32
35
|
|
|
33
|
-
|
|
34
|
-
yarn add jsr:@nktkas/hyperliquid
|
|
36
|
+
### Deno
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
```
|
|
39
|
+
deno add jsr:@nktkas/hyperliquid
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
## Quick Start
|
|
@@ -52,7 +54,7 @@ const openOrders = await client.openOrders({ user: "0x..." }); // Change to your
|
|
|
52
54
|
import * as hl from "@nktkas/hyperliquid";
|
|
53
55
|
import { privateKeyToAccount } from "viem/accounts";
|
|
54
56
|
|
|
55
|
-
const wallet = privateKeyToAccount("0x..."); //
|
|
57
|
+
const wallet = privateKeyToAccount("0x..."); // Your private key
|
|
56
58
|
|
|
57
59
|
const transport = new hl.HttpTransport();
|
|
58
60
|
const client = new hl.WalletClient({ wallet, transport });
|
|
@@ -80,9 +82,7 @@ import * as hl from "@nktkas/hyperliquid";
|
|
|
80
82
|
const transport = new hl.WebSocketTransport();
|
|
81
83
|
const client = new hl.EventClient({ transport });
|
|
82
84
|
|
|
83
|
-
// Subscribe to events
|
|
84
85
|
const sub = await client.allMids((event) => {
|
|
85
|
-
// Handle the event
|
|
86
86
|
console.log(event);
|
|
87
87
|
});
|
|
88
88
|
|
|
@@ -96,7 +96,7 @@ await sub.unsubscribe(); // Unsubscribe from the event
|
|
|
96
96
|
First, choose and configure your transport layer (more details in the [API Reference](#transports)):
|
|
97
97
|
|
|
98
98
|
```ts
|
|
99
|
-
import * as hl from "@nktkas/hyperliquid";
|
|
99
|
+
import * as hl from "@nktkas/hyperliquid";
|
|
100
100
|
|
|
101
101
|
// HTTP Transport
|
|
102
102
|
const httpTransport = new hl.HttpTransport(); // Accepts optional parameters
|
|
@@ -112,7 +112,7 @@ Next, initialize a client with the transport layer (more details in the [API Ref
|
|
|
112
112
|
#### Create PublicClient
|
|
113
113
|
|
|
114
114
|
```ts
|
|
115
|
-
import * as hl from "@nktkas/hyperliquid";
|
|
115
|
+
import * as hl from "@nktkas/hyperliquid";
|
|
116
116
|
|
|
117
117
|
const transport = new hl.HttpTransport(); // or WebSocketTransport
|
|
118
118
|
const client = new hl.PublicClient({ transport });
|
|
@@ -121,7 +121,7 @@ const client = new hl.PublicClient({ transport });
|
|
|
121
121
|
#### Create WalletClient
|
|
122
122
|
|
|
123
123
|
```ts
|
|
124
|
-
import * as hl from "@nktkas/hyperliquid";
|
|
124
|
+
import * as hl from "@nktkas/hyperliquid";
|
|
125
125
|
import { createWalletClient, custom } from "viem";
|
|
126
126
|
import { privateKeyToAccount } from "viem/accounts";
|
|
127
127
|
import { ethers } from "ethers";
|
|
@@ -148,7 +148,7 @@ const windowMetamaskClient = new hl.WalletClient({ wallet: window.ethereum, tran
|
|
|
148
148
|
#### Create EventClient
|
|
149
149
|
|
|
150
150
|
```ts
|
|
151
|
-
import * as hl from "@nktkas/hyperliquid";
|
|
151
|
+
import * as hl from "@nktkas/hyperliquid";
|
|
152
152
|
|
|
153
153
|
const transport = new hl.WebSocketTransport(); // only WebSocketTransport
|
|
154
154
|
const client = new hl.EventClient({ transport });
|
|
@@ -225,22 +225,19 @@ const transport = new hl.WebSocketTransport();
|
|
|
225
225
|
const client = new hl.EventClient({ transport });
|
|
226
226
|
|
|
227
227
|
// L2 Book updates
|
|
228
|
-
|
|
228
|
+
await client.l2Book({ coin: "BTC" }, (data) => {
|
|
229
229
|
console.log(data);
|
|
230
230
|
});
|
|
231
|
-
await sub.unsubscribe();
|
|
232
231
|
|
|
233
232
|
// User fills
|
|
234
|
-
|
|
233
|
+
await client.userFills({ user: "0x..." }, (data) => {
|
|
235
234
|
console.log(data);
|
|
236
235
|
});
|
|
237
|
-
await sub.unsubscribe();
|
|
238
236
|
|
|
239
237
|
// Explorer block updates
|
|
240
|
-
|
|
238
|
+
await client.explorerBlock((data) => {
|
|
241
239
|
console.log(data);
|
|
242
240
|
});
|
|
243
|
-
await sub.unsubscribe();
|
|
244
241
|
```
|
|
245
242
|
|
|
246
243
|
## API Reference
|
|
@@ -264,12 +261,13 @@ class PublicClient {
|
|
|
264
261
|
});
|
|
265
262
|
|
|
266
263
|
// Market
|
|
267
|
-
allMids(
|
|
264
|
+
allMids(): Promise<AllMids>;
|
|
268
265
|
candleSnapshot(args: CandleSnapshotParameters): Promise<Candle[]>;
|
|
269
266
|
fundingHistory(args: FundingHistoryParameters): Promise<FundingHistory[]>;
|
|
270
267
|
l2Book(args: L2BookParameters): Promise<Book>;
|
|
271
|
-
meta(
|
|
268
|
+
meta(): Promise<PerpsMeta>;
|
|
272
269
|
metaAndAssetCtxs(): Promise<PerpsMetaAndAssetCtxs>;
|
|
270
|
+
perpDeployAuctionStatus(): Promise<DeployAuctionStatus>;
|
|
273
271
|
perpDexs(): Promise<(PerpDex | null)[]>;
|
|
274
272
|
perpsAtOpenInterestCap(): Promise<string[]>;
|
|
275
273
|
predictedFundings(): Promise<PredictedFunding[]>;
|
|
@@ -358,7 +356,7 @@ class WalletClient {
|
|
|
358
356
|
cancelByCloid(args: CancelByCloidParameters): Promise<CancelResponseSuccess>;
|
|
359
357
|
modify(args: ModifyParameters): Promise<SuccessResponse>;
|
|
360
358
|
order(args: OrderParameters): Promise<OrderResponseSuccess>;
|
|
361
|
-
scheduleCancel(args
|
|
359
|
+
scheduleCancel(args?: ScheduleCancelParameters): Promise<SuccessResponse>;
|
|
362
360
|
twapCancel(args: TwapCancelParameters): Promise<TwapCancelResponseSuccess>;
|
|
363
361
|
twapOrder(args: TwapOrderParameters): Promise<TwapOrderResponseSuccess>;
|
|
364
362
|
updateIsolatedMargin(args: UpdateIsolatedMarginParameters): Promise<SuccessResponse>;
|
|
@@ -368,6 +366,7 @@ class WalletClient {
|
|
|
368
366
|
approveAgent(args: ApproveAgentParameters): Promise<SuccessResponse>;
|
|
369
367
|
approveBuilderFee(args: ApproveBuilderFeeParameters): Promise<SuccessResponse>;
|
|
370
368
|
claimRewards(): Promise<SuccessResponse>;
|
|
369
|
+
convertToMultiSigUser(args: ConvertToMultiSigUserParameters): Promise<SuccessResponse>;
|
|
371
370
|
createSubAccount(args: CreateSubAccountParameters): Promise<CreateSubAccountResponse>;
|
|
372
371
|
evmUserModify(args: EvmUserModifyParameters): Promise<SuccessResponse>;
|
|
373
372
|
registerReferrer(args: RegisterReferrerParameters): Promise<SuccessResponse>;
|
|
@@ -377,6 +376,7 @@ class WalletClient {
|
|
|
377
376
|
spotUser(args: SpotUserParameters): Promise<SuccessResponse>;
|
|
378
377
|
|
|
379
378
|
// Transfers & Withdrawals
|
|
379
|
+
perpDexClassTransfer(args: PerpDexClassTransferParameters): Promise<SuccessResponse>;
|
|
380
380
|
spotSend(args: SpotSendParameters): Promise<SuccessResponse>;
|
|
381
381
|
subAccountSpotTransfer(args: SubAccountSpotTransferParameters): Promise<SuccessResponse>;
|
|
382
382
|
subAccountTransfer(args: SubAccountTransferParameters): Promise<SuccessResponse>;
|
|
@@ -398,6 +398,13 @@ class WalletClient {
|
|
|
398
398
|
vaultDistribute(args: VaultDistributeParameters): Promise<SuccessResponse>;
|
|
399
399
|
vaultModify(args: VaultModifyParameters): Promise<SuccessResponse>;
|
|
400
400
|
vaultTransfer(args: VaultTransferParameters): Promise<SuccessResponse>;
|
|
401
|
+
|
|
402
|
+
// Multi-Sign
|
|
403
|
+
multiSig(args: MultiSigParameters): Promise<BaseExchangeResponse>;
|
|
404
|
+
|
|
405
|
+
// Validator
|
|
406
|
+
cSignerAction(args: CSignerActionParameters): Promise<SuccessResponse>;
|
|
407
|
+
cValidatorAction(args: CValidatorActionParameters): Promise<SuccessResponse>;
|
|
401
408
|
}
|
|
402
409
|
```
|
|
403
410
|
|
|
@@ -462,7 +469,6 @@ class HttpTransport {
|
|
|
462
469
|
constructor(options?: {
|
|
463
470
|
isTestnet?: boolean; // Whether to use testnet url (default: false)
|
|
464
471
|
timeout?: number; // Request timeout in ms (default: 10_000)
|
|
465
|
-
server?: "api" | "api2" | "api-ui"; // Server URL (default: "api" = "https://api.hyperliquid.xyz")
|
|
466
472
|
fetchOptions?: RequestInit; // A custom fetch options
|
|
467
473
|
onRequest?: (request: Request) => MaybePromise<Request | void | null | undefined>; // A callback before request is sent
|
|
468
474
|
onResponse?: (response: Response) => MaybePromise<Response | void | null | undefined>; // A callback after response is received
|
|
@@ -483,7 +489,8 @@ class WebSocketTransport {
|
|
|
483
489
|
url?: string | URL; // WebSocket URL (default: "wss://api.hyperliquid.xyz/ws")
|
|
484
490
|
timeout?: number; // Request timeout in ms (default: 10_000)
|
|
485
491
|
keepAlive?: { // Keep-alive configuration
|
|
486
|
-
interval?: number; // Ping interval in ms (default:
|
|
492
|
+
interval?: number; // Ping interval in ms (default: 30_000)
|
|
493
|
+
timeout?: number; // Pong timeout in ms (default: same as `timeout` for requests)
|
|
487
494
|
};
|
|
488
495
|
reconnect?: { // Reconnection policy configuration for closed connections
|
|
489
496
|
maxRetries?: number; // Maximum number of reconnection attempts (default: 3)
|
|
@@ -509,21 +516,15 @@ class WebSocketTransport {
|
|
|
509
516
|
|
|
510
517
|
## Additional Import Points
|
|
511
518
|
|
|
512
|
-
The SDK exports additional import points to access internal functions.
|
|
513
|
-
|
|
514
519
|
### `/types`
|
|
515
520
|
|
|
516
521
|
The import point gives access to all Hyperliquid-related types, including the base types on which class methods are
|
|
517
522
|
based.
|
|
518
523
|
|
|
519
|
-
Useful if you want to get all Hyperliquid types.
|
|
520
|
-
|
|
521
524
|
### `/signing`
|
|
522
525
|
|
|
523
526
|
The import point gives access to functions that generate signatures for Hyperliquid transactions.
|
|
524
527
|
|
|
525
|
-
Useful if you want to sign a Hyperliquid transaction yourself.
|
|
526
|
-
|
|
527
528
|
### Examples
|
|
528
529
|
|
|
529
530
|
#### Cancel an order without a client
|
|
@@ -532,7 +533,7 @@ Useful if you want to sign a Hyperliquid transaction yourself.
|
|
|
532
533
|
import { signL1Action } from "@nktkas/hyperliquid/signing";
|
|
533
534
|
import { privateKeyToAccount } from "viem/accounts";
|
|
534
535
|
|
|
535
|
-
const wallet = privateKeyToAccount("0x..."); //
|
|
536
|
+
const wallet = privateKeyToAccount("0x..."); // Your private key
|
|
536
537
|
|
|
537
538
|
const action = {
|
|
538
539
|
type: "cancel",
|
|
@@ -563,7 +564,7 @@ const body = await response.json();
|
|
|
563
564
|
import { signUserSignedAction } from "@nktkas/hyperliquid/signing";
|
|
564
565
|
import { privateKeyToAccount } from "viem/accounts";
|
|
565
566
|
|
|
566
|
-
const wallet = privateKeyToAccount("0x..."); //
|
|
567
|
+
const wallet = privateKeyToAccount("0x..."); // Your private key
|
|
567
568
|
|
|
568
569
|
const action = {
|
|
569
570
|
type: "approveAgent",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
interface PromiseConstructor {
|
|
3
|
+
/**
|
|
4
|
+
* Creates a Promise that can be resolved or rejected using provided functions.
|
|
5
|
+
* @returns An object containing `promise` promise object, `resolve` and `reject` functions.
|
|
6
|
+
*/
|
|
7
|
+
withResolvers<T>(): {
|
|
8
|
+
promise: Promise<T>;
|
|
9
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
10
|
+
reject: (reason?: any) => void;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
declare global {
|
|
15
|
+
interface Error {
|
|
16
|
+
cause?: unknown;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=_dnt.polyfills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_dnt.polyfills.d.ts","sourceRoot":"","sources":["../src/_dnt.polyfills.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,kBAAkB;QAC1B;;;WAGG;QACH,aAAa,CAAC,CAAC,KAAK;YAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;YAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;SAAE,CAAC;KAC3H;CACF;AAaD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// https://github.com/tc39/proposal-promise-with-resolvers/blob/3a78801e073e99217dbeb2c43ba7212f3bdc8b83/polyfills.js#L1C1-L9C2
|
|
2
|
+
if (Promise.withResolvers === undefined) {
|
|
3
|
+
Promise.withResolvers = () => {
|
|
4
|
+
const out = {};
|
|
5
|
+
out.promise = new Promise((resolve_, reject_) => {
|
|
6
|
+
out.resolve = resolve_;
|
|
7
|
+
out.reject = reject_;
|
|
8
|
+
});
|
|
9
|
+
return out;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export {};
|
package/esm/mod.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import "./_dnt.polyfills.js";
|
|
1
2
|
export * from "./src/base.js";
|
|
3
|
+
export * from "./src/transports/base.js";
|
|
2
4
|
export type { AbstractEthersSigner, AbstractEthersV5Signer, AbstractExtendedViemWalletClient, AbstractViemWalletClient, AbstractWindowEthereum, } from "./src/signing.js";
|
|
3
5
|
export * from "./src/clients/event.js";
|
|
4
6
|
export * from "./src/clients/public.js";
|
|
@@ -10,6 +12,7 @@ export type * from "./src/types/explorer/responses.js";
|
|
|
10
12
|
export type * from "./src/types/info/accounts.js";
|
|
11
13
|
export type * from "./src/types/info/assets.js";
|
|
12
14
|
export type * from "./src/types/info/delegations.js";
|
|
15
|
+
export type * from "./src/types/info/markets.js";
|
|
13
16
|
export type * from "./src/types/info/orders.js";
|
|
14
17
|
export type * from "./src/types/info/vaults.js";
|
|
15
18
|
export type * from "./src/types/subscriptions/responses.js";
|
package/esm/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,CAAC;AAE7B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AAGzC,YAAY,EACR,oBAAoB,EACpB,sBAAsB,EACtB,gCAAgC,EAChC,wBAAwB,EACxB,sBAAsB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,yCAAyC,CAAC;AACxD,cAAc,mDAAmD,CAAC;AAGlE,mBAAmB,mCAAmC,CAAC;AACvD,mBAAmB,mCAAmC,CAAC;AACvD,mBAAmB,8BAA8B,CAAC;AAClD,mBAAmB,4BAA4B,CAAC;AAChD,mBAAmB,iCAAiC,CAAC;AACrD,mBAAmB,6BAA6B,CAAC;AACjD,mBAAmB,4BAA4B,CAAC;AAChD,mBAAmB,4BAA4B,CAAC;AAChD,mBAAmB,wCAAwC,CAAC"}
|
package/esm/mod.js
CHANGED
package/esm/src/base.d.ts
CHANGED
|
@@ -1,53 +1,7 @@
|
|
|
1
|
-
/** Hexadecimal string starting with `0x`. */
|
|
2
1
|
export type Hex = `0x${string}`;
|
|
3
2
|
export type MaybePromise<T> = T | Promise<T>;
|
|
4
|
-
/**
|
|
5
|
-
* Interface representing a REST transport.
|
|
6
|
-
* Handles communication with Hyperliquid API endpoints.
|
|
7
|
-
* @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint | Info endpoint}
|
|
8
|
-
* @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint | Exchange endpoint}
|
|
9
|
-
* @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/post-requests | Websocket post requests}
|
|
10
|
-
*/
|
|
11
|
-
export interface IRequestTransport extends Partial<AsyncDisposable> {
|
|
12
|
-
/**
|
|
13
|
-
* Sends a request to the Hyperliquid API.
|
|
14
|
-
* @param endpoint - The API endpoint to send the request to.
|
|
15
|
-
* @param payload - The payload to send with the request.
|
|
16
|
-
* @param signal - An ptional abort signal.
|
|
17
|
-
* @returns A promise that resolves with parsed JSON response body.
|
|
18
|
-
*/
|
|
19
|
-
request(endpoint: "info" | "exchange" | "explorer", payload: unknown, signal?: AbortSignal): Promise<unknown>;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Interface representing an event subscription transport.
|
|
23
|
-
* Handles WebSocket subscriptions for real-time updates.
|
|
24
|
-
* @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/subscriptions | Websocket subscriptions}
|
|
25
|
-
*/
|
|
26
|
-
export interface ISubscriptionTransport extends Partial<AsyncDisposable> {
|
|
27
|
-
/**
|
|
28
|
-
* Subscribes to a Hyperliquid event channel.
|
|
29
|
-
* @param channel - The event channel to listen to.
|
|
30
|
-
* @param payload - The payload to send with the subscription request.
|
|
31
|
-
* @param listener - The function to call when the event is dispatched.
|
|
32
|
-
* @param signal - An optional abort signal for canceling the subscription request.
|
|
33
|
-
* @returns A promise that resolves with a {@link Subscription} object to manage the subscription lifecycle.
|
|
34
|
-
*/
|
|
35
|
-
subscribe(channel: string, payload: unknown, listener: (data: CustomEvent) => void, signal?: AbortSignal): Promise<Subscription>;
|
|
36
|
-
}
|
|
37
|
-
/** Controls event subscription lifecycle. */
|
|
38
|
-
export interface Subscription {
|
|
39
|
-
/**
|
|
40
|
-
* Unsubscribes from the event and sends an unsubscribe request to the server.
|
|
41
|
-
* @param signal - An optional abort signal for canceling the unsubscribe request.
|
|
42
|
-
*/
|
|
43
|
-
unsubscribe(signal?: AbortSignal): Promise<void>;
|
|
44
|
-
}
|
|
45
|
-
/** Base class for all Hyperliquid SDK errors. */
|
|
3
|
+
/** Base error class for all SDK errors. */
|
|
46
4
|
export declare class HyperliquidError extends Error {
|
|
47
5
|
constructor(message?: string);
|
|
48
6
|
}
|
|
49
|
-
/** Base class for all transport-related errors. */
|
|
50
|
-
export declare class TransportError extends HyperliquidError {
|
|
51
|
-
constructor(message?: string);
|
|
52
|
-
}
|
|
53
7
|
//# sourceMappingURL=base.d.ts.map
|
package/esm/src/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/src/base.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/src/base.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,EAAE,CAAC;AAEhC,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,2CAA2C;AAC3C,qBAAa,gBAAiB,SAAQ,KAAK;gBAC3B,OAAO,CAAC,EAAE,MAAM;CAI/B"}
|
package/esm/src/base.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
/** Base class for all
|
|
1
|
+
/** Base error class for all SDK errors. */
|
|
2
2
|
export class HyperliquidError extends Error {
|
|
3
3
|
constructor(message) {
|
|
4
4
|
super(message);
|
|
5
5
|
this.name = "HyperliquidError";
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
/** Base class for all transport-related errors. */
|
|
9
|
-
export class TransportError extends HyperliquidError {
|
|
10
|
-
constructor(message) {
|
|
11
|
-
super(message);
|
|
12
|
-
this.name = "TransportError";
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ISubscriptionTransport, Subscription } from "../base.js";
|
|
2
|
-
import type { WsActiveAssetCtxRequest, WsActiveAssetDataRequest, WsBboRequest, WsCandleRequest, WsL2BookRequest, WsNotificationRequest, WsOrderUpdatesRequest, WsTradesRequest, WsUserEventsRequest, WsUserFillsRequest, WsUserFundingsRequest, WsUserNonFundingLedgerUpdatesRequest, WsUserTwapHistoryRequest, WsUserTwapSliceFillsRequest, WsWebData2Request } from "../types/subscriptions/requests.js";
|
|
1
|
+
import type { ISubscriptionTransport, Subscription } from "../transports/base.js";
|
|
2
|
+
import type { WsActiveAssetCtxRequest, WsActiveAssetDataRequest, WsAllMidsRequest, WsBboRequest, WsCandleRequest, WsL2BookRequest, WsNotificationRequest, WsOrderUpdatesRequest, WsTradesRequest, WsUserEventsRequest, WsUserFillsRequest, WsUserFundingsRequest, WsUserNonFundingLedgerUpdatesRequest, WsUserTwapHistoryRequest, WsUserTwapSliceFillsRequest, WsWebData2Request } from "../types/subscriptions/requests.js";
|
|
3
3
|
import type { WsActiveAssetCtx, WsActiveAssetData, WsActiveSpotAssetCtx, WsAllMids, WsBbo, WsBlockDetails, WsNotification, WsTrade, WsUserEvent, WsUserFills, WsUserFundings, WsUserNonFundingLedgerUpdates, WsUserTwapHistory, WsUserTwapSliceFills, WsWebData2 } from "../types/subscriptions/responses.js";
|
|
4
4
|
import type { Candle } from "../types/info/assets.js";
|
|
5
5
|
import type { Book, Order, OrderStatus } from "../types/info/orders.js";
|
|
@@ -13,6 +13,8 @@ export interface EventClientParameters<T extends ISubscriptionTransport = ISubsc
|
|
|
13
13
|
export type EventActiveAssetCtxParameters = Omit<WsActiveAssetCtxRequest, "type">;
|
|
14
14
|
/** Parameters for the {@linkcode EventClient.activeAssetData} method. */
|
|
15
15
|
export type EventActiveAssetDataParameters = Omit<WsActiveAssetDataRequest, "type">;
|
|
16
|
+
/** Parameters for the {@linkcode EventClient.allMids} method. */
|
|
17
|
+
export type WsAllMidsParameters = Omit<WsAllMidsRequest, "type">;
|
|
16
18
|
/** Parameters for the {@linkcode EventClient.bbo} method. */
|
|
17
19
|
export type EventBboParameters = Omit<WsBboRequest, "type">;
|
|
18
20
|
/** Parameters for the {@linkcode EventClient.candle} method. */
|
|
@@ -43,8 +45,7 @@ export type EventWebData2Parameters = Omit<WsWebData2Request, "type">;
|
|
|
43
45
|
* Event client for subscribing to various Hyperliquid events.
|
|
44
46
|
* @typeParam T The type of transport used to connect to the Hyperliquid Websocket API.
|
|
45
47
|
*/
|
|
46
|
-
export declare class EventClient<T extends ISubscriptionTransport = ISubscriptionTransport> implements AsyncDisposable {
|
|
47
|
-
/** The transport used to connect to the Hyperliquid API. */
|
|
48
|
+
export declare class EventClient<T extends ISubscriptionTransport = ISubscriptionTransport> implements EventClientParameters, AsyncDisposable {
|
|
48
49
|
transport: T;
|
|
49
50
|
/**
|
|
50
51
|
* Initialises a new instance.
|
|
@@ -121,6 +122,7 @@ export declare class EventClient<T extends ISubscriptionTransport = ISubscriptio
|
|
|
121
122
|
* ```
|
|
122
123
|
*/
|
|
123
124
|
allMids(listener: (data: WsAllMids) => void, signal?: AbortSignal): Promise<Subscription>;
|
|
125
|
+
allMids(args: WsAllMidsParameters, listener: (data: WsAllMids) => void, signal?: AbortSignal): Promise<Subscription>;
|
|
124
126
|
/**
|
|
125
127
|
* Subscribe to best bid and offer updates for a specific asset.
|
|
126
128
|
* @param args - The parameters for the subscription.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/src/clients/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/src/clients/event.ts"],"names":[],"mappings":"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"}
|