@nktkas/hyperliquid 0.17.1 → 0.17.3

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.
Files changed (87) hide show
  1. package/README.md +42 -4
  2. package/esm/deps/jsr.io/@std/encoding/1.0.9/_common16.d.ts +23 -0
  3. package/esm/deps/jsr.io/@std/encoding/1.0.9/_common16.d.ts.map +1 -0
  4. package/esm/deps/jsr.io/@std/encoding/1.0.9/_common16.js +51 -0
  5. package/esm/deps/jsr.io/@std/encoding/1.0.9/_common_detach.d.ts +4 -0
  6. package/esm/deps/jsr.io/@std/encoding/1.0.9/_common_detach.d.ts.map +1 -0
  7. package/esm/deps/jsr.io/@std/encoding/1.0.9/_common_detach.js +13 -0
  8. package/{script/deps/jsr.io/@std/encoding/1.0.7 → esm/deps/jsr.io/@std/encoding/1.0.9}/_types.d.ts.map +1 -1
  9. package/esm/deps/jsr.io/@std/encoding/1.0.9/hex.d.ts.map +1 -0
  10. package/esm/deps/jsr.io/@std/encoding/1.0.9/hex.js +87 -0
  11. package/esm/src/clients/event.d.ts +25 -2
  12. package/esm/src/clients/event.d.ts.map +1 -1
  13. package/esm/src/clients/event.js +31 -0
  14. package/esm/src/clients/public.d.ts +86 -86
  15. package/esm/src/clients/public.d.ts.map +1 -1
  16. package/esm/src/clients/public.js +111 -111
  17. package/esm/src/clients/wallet.d.ts +36 -13
  18. package/esm/src/clients/wallet.d.ts.map +1 -1
  19. package/esm/src/clients/wallet.js +53 -12
  20. package/esm/src/signing.js +1 -1
  21. package/esm/src/transports/http/http_transport.d.ts.map +1 -1
  22. package/esm/src/transports/http/http_transport.js +8 -2
  23. package/esm/src/types/exchange/requests.d.ts +36 -22
  24. package/esm/src/types/exchange/requests.d.ts.map +1 -1
  25. package/esm/src/types/explorer/requests.d.ts +3 -3
  26. package/esm/src/types/info/accounts.d.ts +14 -1
  27. package/esm/src/types/info/accounts.d.ts.map +1 -1
  28. package/esm/src/types/info/orders.d.ts +3 -1
  29. package/esm/src/types/info/orders.d.ts.map +1 -1
  30. package/esm/src/types/info/requests.d.ts +2 -2
  31. package/esm/src/types/info/vaults.d.ts +22 -17
  32. package/esm/src/types/info/vaults.d.ts.map +1 -1
  33. package/esm/src/types/subscriptions/requests.d.ts +29 -22
  34. package/esm/src/types/subscriptions/requests.d.ts.map +1 -1
  35. package/esm/src/types/subscriptions/responses.d.ts +48 -48
  36. package/esm/src/types/subscriptions/responses.d.ts.map +1 -1
  37. package/package.json +1 -1
  38. package/script/deps/jsr.io/@std/encoding/1.0.9/_common16.d.ts +23 -0
  39. package/script/deps/jsr.io/@std/encoding/1.0.9/_common16.d.ts.map +1 -0
  40. package/script/deps/jsr.io/@std/encoding/1.0.9/_common16.js +67 -0
  41. package/script/deps/jsr.io/@std/encoding/1.0.9/_common_detach.d.ts +4 -0
  42. package/script/deps/jsr.io/@std/encoding/1.0.9/_common_detach.d.ts.map +1 -0
  43. package/script/deps/jsr.io/@std/encoding/1.0.9/_common_detach.js +26 -0
  44. package/{esm/deps/jsr.io/@std/encoding/1.0.7 → script/deps/jsr.io/@std/encoding/1.0.9}/_types.d.ts.map +1 -1
  45. package/script/deps/jsr.io/@std/encoding/1.0.9/hex.d.ts.map +1 -0
  46. package/script/deps/jsr.io/@std/encoding/{1.0.7 → 1.0.9}/hex.js +23 -45
  47. package/script/src/clients/event.d.ts +25 -2
  48. package/script/src/clients/event.d.ts.map +1 -1
  49. package/script/src/clients/event.js +31 -0
  50. package/script/src/clients/public.d.ts +86 -86
  51. package/script/src/clients/public.d.ts.map +1 -1
  52. package/script/src/clients/public.js +111 -111
  53. package/script/src/clients/wallet.d.ts +36 -13
  54. package/script/src/clients/wallet.d.ts.map +1 -1
  55. package/script/src/clients/wallet.js +53 -12
  56. package/script/src/signing.js +2 -2
  57. package/script/src/transports/http/http_transport.d.ts.map +1 -1
  58. package/script/src/transports/http/http_transport.js +8 -2
  59. package/script/src/types/exchange/requests.d.ts +36 -22
  60. package/script/src/types/exchange/requests.d.ts.map +1 -1
  61. package/script/src/types/explorer/requests.d.ts +3 -3
  62. package/script/src/types/info/accounts.d.ts +14 -1
  63. package/script/src/types/info/accounts.d.ts.map +1 -1
  64. package/script/src/types/info/orders.d.ts +3 -1
  65. package/script/src/types/info/orders.d.ts.map +1 -1
  66. package/script/src/types/info/requests.d.ts +2 -2
  67. package/script/src/types/info/vaults.d.ts +22 -17
  68. package/script/src/types/info/vaults.d.ts.map +1 -1
  69. package/script/src/types/subscriptions/requests.d.ts +29 -22
  70. package/script/src/types/subscriptions/requests.d.ts.map +1 -1
  71. package/script/src/types/subscriptions/responses.d.ts +48 -48
  72. package/script/src/types/subscriptions/responses.d.ts.map +1 -1
  73. package/esm/deps/jsr.io/@std/encoding/1.0.7/_validate_binary_like.d.ts +0 -2
  74. package/esm/deps/jsr.io/@std/encoding/1.0.7/_validate_binary_like.d.ts.map +0 -1
  75. package/esm/deps/jsr.io/@std/encoding/1.0.7/_validate_binary_like.js +0 -26
  76. package/esm/deps/jsr.io/@std/encoding/1.0.7/hex.d.ts.map +0 -1
  77. package/esm/deps/jsr.io/@std/encoding/1.0.7/hex.js +0 -109
  78. package/script/deps/jsr.io/@std/encoding/1.0.7/_validate_binary_like.d.ts +0 -2
  79. package/script/deps/jsr.io/@std/encoding/1.0.7/_validate_binary_like.d.ts.map +0 -1
  80. package/script/deps/jsr.io/@std/encoding/1.0.7/_validate_binary_like.js +0 -39
  81. package/script/deps/jsr.io/@std/encoding/1.0.7/hex.d.ts.map +0 -1
  82. /package/esm/deps/jsr.io/@std/encoding/{1.0.7 → 1.0.9}/_types.d.ts +0 -0
  83. /package/esm/deps/jsr.io/@std/encoding/{1.0.7 → 1.0.9}/_types.js +0 -0
  84. /package/esm/deps/jsr.io/@std/encoding/{1.0.7 → 1.0.9}/hex.d.ts +0 -0
  85. /package/script/deps/jsr.io/@std/encoding/{1.0.7 → 1.0.9}/_types.d.ts +0 -0
  86. /package/script/deps/jsr.io/@std/encoding/{1.0.7 → 1.0.9}/_types.js +0 -0
  87. /package/script/deps/jsr.io/@std/encoding/{1.0.7 → 1.0.9}/hex.d.ts +0 -0
package/README.md CHANGED
@@ -11,13 +11,12 @@ runtimes, written in TypeScript and provided with tests.
11
11
  ## Features
12
12
 
13
13
  - 🖋️ **Typed**: Source code is 100% TypeScript.
14
- - 🧪 **Tested**: Good code coverage and guarantee of type validity.
14
+ - 🧪 **Tested**: Good code coverage and type-safe API responses.
15
15
  - 📦 **Minimal dependencies**: A few small trusted dependencies.
16
16
  - 🌐 **Cross-Environment Support**: Compatible with all major JS runtimes.
17
17
  - 🔧 **Integratable**: Easy to use with [viem](https://github.com/wevm/viem),
18
18
  [ethers](https://github.com/ethers-io/ethers.js) and other wallet libraries.
19
- - 📚 **Documented**: Comprehensive documentation and usage examples, provided directly in JSDoc annotations within the
20
- source code.
19
+ - 📚 **Documented**: JSDoc annotations with usage examples in source code.
21
20
 
22
21
  ## Installation
23
22
 
@@ -38,7 +37,44 @@ bun i @nktkas/hyperliquid
38
37
  deno add jsr:@nktkas/hyperliquid
39
38
 
40
39
  # web (import directly)
41
- import * as hl from "https://esm.sh/jsr/@nktkas/hyperliquid"
40
+ import * as hl from "https://esm.sh/jsr/@nktkas/hyperliquid";
41
+ ```
42
+
43
+ ## Quick Start
44
+
45
+ ```ts
46
+ import * as hl from "@nktkas/hyperliquid";
47
+
48
+ const transport = new hl.HttpTransport();
49
+ const publicClient = new hl.PublicClient({ transport });
50
+
51
+ const openOrders = await publicClient.openOrders({ user: "0x..." });
52
+ ```
53
+
54
+ ```ts
55
+ import * as hl from "@nktkas/hyperliquid";
56
+ import { privateKeyToAccount } from "viem/accounts";
57
+
58
+ const account = privateKeyToAccount("0x..."); // Change to your private key
59
+
60
+ const transport = new hl.HttpTransport();
61
+ const walletClient = new hl.WalletClient({ wallet: account, transport });
62
+
63
+ const result = await walletClient.order({
64
+ orders: [{
65
+ a: 0, // Asset index
66
+ b: true, // Buy order
67
+ p: "30000", // Price
68
+ s: "0.1", // Size
69
+ r: false, // Not reduce-only
70
+ t: {
71
+ limit: {
72
+ tif: "Gtc", // Good-til-cancelled
73
+ },
74
+ },
75
+ }],
76
+ grouping: "na", // No grouping
77
+ });
42
78
  ```
43
79
 
44
80
  ## Usage
@@ -321,6 +357,7 @@ class WalletClient {
321
357
  claimRewards(): Promise<SuccessResponse>;
322
358
  createSubAccount(args: CreateSubAccountParameters): Promise<CreateSubAccountResponse>;
323
359
  evmUserModify(args: EvmUserModifyParameters): Promise<SuccessResponse>;
360
+ registerReferrer(args: RegisterReferrerParameters): Promise<SuccessResponse>;
324
361
  reserveRequestWeight(args: ReserveRequestWeightParameters): Promise<SuccessResponse>;
325
362
  setDisplayName(args: SetDisplayNameParameters): Promise<SuccessResponse>;
326
363
  setReferrer(args: SetReferrerParameters): Promise<SuccessResponse>;
@@ -369,6 +406,7 @@ class EventClient {
369
406
  activeAssetCtx(args: EventActiveAssetCtxParameters, listener: (data: WsActiveAssetCtx | WsActiveSpotAssetCtx) => void): Promise<Subscription>;
370
407
  activeAssetData(args: EventActiveAssetDataParameters, listener: (data: WsActiveAssetData) => void): Promise<Subscription>;
371
408
  allMids(listener: (data: WsAllMids) => void): Promise<Subscription>;
409
+ bbo(args: EventBboParameters, listener: (data: WsBbo) => void): Promise<Subscription>;
372
410
  candle(args: EventCandleParameters, listener: (data: Candle) => void): Promise<Subscription>;
373
411
  l2Book(args: EventL2BookParameters, listener: (data: Book) => void): Promise<Subscription>;
374
412
  trades(args: EventTradesParameters, listener: (data: WsTrade[]) => void): Promise<Subscription>;
@@ -0,0 +1,23 @@
1
+ import type { Uint8Array_ } from "./_types.js";
2
+ export type { Uint8Array_ };
3
+ export declare const alphabet: Uint8Array;
4
+ export declare const rAlphabet: Uint8Array;
5
+ /**
6
+ * Calculate the output size needed to encode a given input size for
7
+ * {@linkcode encodeRawHex}.
8
+ *
9
+ * @param originalSize The size of the input buffer.
10
+ * @returns The size of the output buffer.
11
+ *
12
+ * @example Basic Usage
13
+ * ```ts
14
+ * import { assertEquals } from "@std/assert";
15
+ * import { calcSizeHex } from "@std/encoding/unstable-hex";
16
+ *
17
+ * assertEquals(calcSizeHex(1), 2);
18
+ * ```
19
+ */
20
+ export declare function calcSizeHex(originalSize: number): number;
21
+ export declare function encode(buffer: Uint8Array_, i: number, o: number, alphabet: Uint8Array): number;
22
+ export declare function decode(buffer: Uint8Array_, i: number, o: number, alphabet: Uint8Array): number;
23
+ //# sourceMappingURL=_common16.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_common16.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/encoding/1.0.9/_common16.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,eAAO,MAAM,QAAQ,YAA+C,CAAC;AACrE,eAAO,MAAM,SAAS,YAA+B,CAAC;AAMtD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,MAAM,CACpB,MAAM,EAAE,WAAW,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,UAAU,GACnB,MAAM,CAOR;AAED,wBAAgB,MAAM,CACpB,MAAM,EAAE,WAAW,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,UAAU,GACnB,MAAM,CAeR"}
@@ -0,0 +1,51 @@
1
+ // Copyright 2018-2025 the Deno authors. MIT license.
2
+ export const alphabet = new TextEncoder().encode("0123456789abcdef");
3
+ export const rAlphabet = new Uint8Array(128).fill(16); // alphabet.Hex.length
4
+ alphabet.forEach((byte, i) => rAlphabet[byte] = i);
5
+ new TextEncoder()
6
+ .encode("ABCDEF")
7
+ .forEach((byte, i) => rAlphabet[byte] = i + 10);
8
+ /**
9
+ * Calculate the output size needed to encode a given input size for
10
+ * {@linkcode encodeRawHex}.
11
+ *
12
+ * @param originalSize The size of the input buffer.
13
+ * @returns The size of the output buffer.
14
+ *
15
+ * @example Basic Usage
16
+ * ```ts
17
+ * import { assertEquals } from "@std/assert";
18
+ * import { calcSizeHex } from "@std/encoding/unstable-hex";
19
+ *
20
+ * assertEquals(calcSizeHex(1), 2);
21
+ * ```
22
+ */
23
+ export function calcSizeHex(originalSize) {
24
+ return originalSize * 2;
25
+ }
26
+ export function encode(buffer, i, o, alphabet) {
27
+ for (; i < buffer.length; ++i) {
28
+ const x = buffer[i];
29
+ buffer[o++] = alphabet[x >> 4];
30
+ buffer[o++] = alphabet[x & 0xF];
31
+ }
32
+ return o;
33
+ }
34
+ export function decode(buffer, i, o, alphabet) {
35
+ if ((buffer.length - o) % 2 === 1) {
36
+ throw new RangeError(`Cannot decode input as hex: Length (${buffer.length - o}) must be divisible by 2`);
37
+ }
38
+ i += 1;
39
+ for (; i < buffer.length; i += 2) {
40
+ buffer[o++] = (getByte(buffer[i - 1], alphabet) << 4) |
41
+ getByte(buffer[i], alphabet);
42
+ }
43
+ return o;
44
+ }
45
+ function getByte(char, alphabet) {
46
+ const byte = alphabet[char] ?? 16;
47
+ if (byte === 16) { // alphabet.Hex.length
48
+ throw new TypeError(`Cannot decode input as hex: Invalid character (${String.fromCharCode(char)})`);
49
+ }
50
+ return byte;
51
+ }
@@ -0,0 +1,4 @@
1
+ import type { Uint8Array_ } from "./_types.js";
2
+ export type { Uint8Array_ };
3
+ export declare function detach(buffer: Uint8Array_, maxSize: number): [Uint8Array_, number];
4
+ //# sourceMappingURL=_common_detach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_common_detach.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/encoding/1.0.9/_common_detach.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,wBAAgB,MAAM,CACpB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,GACd,CAAC,WAAW,EAAE,MAAM,CAAC,CAWvB"}
@@ -0,0 +1,13 @@
1
+ // Copyright 2018-2025 the Deno authors. MIT license.
2
+ export function detach(buffer, maxSize) {
3
+ const originalSize = buffer.length;
4
+ if (buffer.byteOffset) {
5
+ const b = new Uint8Array(buffer.buffer);
6
+ b.set(buffer);
7
+ buffer = b.subarray(0, originalSize);
8
+ }
9
+ // deno-lint-ignore no-explicit-any
10
+ buffer = new Uint8Array(buffer.buffer.transfer(maxSize));
11
+ buffer.set(buffer.subarray(0, originalSize), maxSize - originalSize);
12
+ return [buffer, maxSize - originalSize];
13
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/encoding/1.0.7/_types.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/encoding/1.0.9/_types.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/encoding/1.0.9/hex.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,CAAC;AAU5B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAWxE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAKlD"}
@@ -0,0 +1,87 @@
1
+ // Copyright 2009 The Go Authors. All rights reserved.
2
+ // https://github.com/golang/go/blob/master/LICENSE
3
+ // Copyright 2018-2025 the Deno authors. MIT license.
4
+ // This module is browser compatible.
5
+ /**
6
+ * Port of the Go
7
+ * {@link https://github.com/golang/go/blob/go1.12.5/src/encoding/hex/hex.go | encoding/hex}
8
+ * library.
9
+ *
10
+ * ```ts
11
+ * import {
12
+ * decodeHex,
13
+ * encodeHex,
14
+ * } from "@std/encoding/hex";
15
+ * import { assertEquals } from "@std/assert";
16
+ *
17
+ * assertEquals(encodeHex("abc"), "616263");
18
+ *
19
+ * assertEquals(
20
+ * decodeHex("616263"),
21
+ * new TextEncoder().encode("abc"),
22
+ * );
23
+ * ```
24
+ *
25
+ * @module
26
+ */
27
+ import { calcSizeHex, decode, encode } from "./_common16.js";
28
+ import { detach } from "./_common_detach.js";
29
+ const alphabet = new TextEncoder()
30
+ .encode("0123456789abcdef");
31
+ const rAlphabet = new Uint8Array(128).fill(16); // alphabet.length
32
+ alphabet.forEach((byte, i) => rAlphabet[byte] = i);
33
+ new TextEncoder()
34
+ .encode("ABCDEF")
35
+ .forEach((byte, i) => rAlphabet[byte] = i + 10);
36
+ /**
37
+ * Converts data into a hex-encoded string.
38
+ *
39
+ * @param src The data to encode.
40
+ *
41
+ * @returns The hex-encoded string.
42
+ *
43
+ * @example Usage
44
+ * ```ts
45
+ * import { encodeHex } from "@std/encoding/hex";
46
+ * import { assertEquals } from "@std/assert";
47
+ *
48
+ * assertEquals(encodeHex("abc"), "616263");
49
+ * ```
50
+ */
51
+ export function encodeHex(src) {
52
+ if (typeof src === "string") {
53
+ src = new TextEncoder().encode(src);
54
+ }
55
+ else if (src instanceof ArrayBuffer)
56
+ src = new Uint8Array(src).slice();
57
+ else
58
+ src = src.slice();
59
+ const [output, i] = detach(src, calcSizeHex(src.length));
60
+ encode(output, i, 0, alphabet);
61
+ return new TextDecoder().decode(output);
62
+ }
63
+ /**
64
+ * Decodes the given hex-encoded string. If the input is malformed, an error is
65
+ * thrown.
66
+ *
67
+ * @param src The hex-encoded string to decode.
68
+ *
69
+ * @returns The decoded data.
70
+ *
71
+ * @example Usage
72
+ * ```ts
73
+ * import { decodeHex } from "@std/encoding/hex";
74
+ * import { assertEquals } from "@std/assert";
75
+ *
76
+ * assertEquals(
77
+ * decodeHex("616263"),
78
+ * new TextEncoder().encode("abc"),
79
+ * );
80
+ * ```
81
+ */
82
+ export function decodeHex(src) {
83
+ const output = new TextEncoder().encode(src);
84
+ // deno-lint-ignore no-explicit-any
85
+ return new Uint8Array(output.buffer
86
+ .transfer(decode(output, 0, 0, rAlphabet)));
87
+ }
@@ -1,6 +1,6 @@
1
1
  import type { ISubscriptionTransport, Subscription } from "../base.js";
2
- import type { WsActiveAssetCtxRequest, WsActiveAssetDataRequest, WsCandleRequest, WsL2BookRequest, WsNotificationRequest, WsOrderUpdatesRequest, WsTradesRequest, WsUserEventsRequest, WsUserFillsRequest, WsUserFundingsRequest, WsUserNonFundingLedgerUpdatesRequest, WsUserTwapHistoryRequest, WsUserTwapSliceFillsRequest, WsWebData2Request } from "../types/subscriptions/requests.js";
3
- import type { WsActiveAssetCtx, WsActiveAssetData, WsActiveSpotAssetCtx, WsAllMids, WsBlockDetails, WsNotification, WsTrade, WsUserEvent, WsUserFills, WsUserFundings, WsUserNonFundingLedgerUpdates, WsUserTwapHistory, WsUserTwapSliceFills, WsWebData2 } from "../types/subscriptions/responses.js";
2
+ import type { WsActiveAssetCtxRequest, WsActiveAssetDataRequest, WsBboRequest, WsCandleRequest, WsL2BookRequest, WsNotificationRequest, WsOrderUpdatesRequest, WsTradesRequest, WsUserEventsRequest, WsUserFillsRequest, WsUserFundingsRequest, WsUserNonFundingLedgerUpdatesRequest, WsUserTwapHistoryRequest, WsUserTwapSliceFillsRequest, WsWebData2Request } from "../types/subscriptions/requests.js";
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";
6
6
  import type { TxDetails } from "../types/explorer/responses.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.bbo} method. */
17
+ export type EventBboParameters = Omit<WsBboRequest, "type">;
16
18
  /** Parameters for the {@linkcode EventClient.candle} method. */
17
19
  export type EventCandleParameters = Omit<WsCandleRequest, "type">;
18
20
  /** Parameters for the {@linkcode EventClient.l2Book} method. */
@@ -119,6 +121,27 @@ export declare class EventClient<T extends ISubscriptionTransport = ISubscriptio
119
121
  * ```
120
122
  */
121
123
  allMids(listener: (data: WsAllMids) => void, signal?: AbortSignal): Promise<Subscription>;
124
+ /**
125
+ * Subscribe to best bid and offer updates for a specific asset.
126
+ * @param args - The parameters for the subscription.
127
+ * @param listener - The callback function to be called when the event is received.
128
+ * @param signal - An optional abort signal for canceling the subscription request.
129
+ * @returns A promise that resolves with a {@link Subscription} object to manage the subscription lifecycle.
130
+ *
131
+ * @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/subscriptions
132
+ * @example
133
+ * ```ts
134
+ * import * as hl from "@nktkas/hyperliquid";
135
+ *
136
+ * const transport = new hl.WebSocketTransport();
137
+ * const client = new hl.EventClient({ transport });
138
+ *
139
+ * const sub = await client.bbo({ coin: "BTC" }, (data) => {
140
+ * console.log(data);
141
+ * });
142
+ * ```
143
+ */
144
+ bbo(args: EventBboParameters, listener: (data: WsBbo) => void, signal?: AbortSignal): Promise<Subscription>;
122
145
  /**
123
146
  * Subscribe to candlestick data updates for a specific asset.
124
147
  * @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,YAAY,CAAC;AACvE,OAAO,KAAK,EACR,uBAAuB,EACvB,wBAAwB,EAExB,eAAe,EAGf,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,oCAAoC,EACpC,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EACR,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,SAAS,EACT,cAAc,EACd,cAAc,EACd,OAAO,EACP,WAAW,EACX,WAAW,EACX,cAAc,EACd,6BAA6B,EAC7B,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACb,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,sBAAsB,GAAG,sBAAsB;IAC5F,4DAA4D;IAC5D,SAAS,EAAE,CAAC,CAAC;CAChB;AAED,wEAAwE;AACxE,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAElF,yEAAyE;AACzE,MAAM,MAAM,8BAA8B,GAAG,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAEpF,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAElE,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAElE,sEAAsE;AACtE,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE9E,sEAAsE;AACtE,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE9E,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AAElE,oEAAoE;AACpE,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAE1E,mEAAmE;AACnE,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAExE,sEAAsE;AACtE,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE9E,qFAAqF;AACrF,MAAM,MAAM,0CAA0C,GAAG,IAAI,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;AAE5G,yEAAyE;AACzE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAE1E,4EAA4E;AAC5E,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;AAEhF,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAEtE;;;GAGG;AACH,qBAAa,WAAW,CAAC,CAAC,SAAS,sBAAsB,GAAG,sBAAsB;IAC9E,4DAA4D;IAC5D,SAAS,EAAE,CAAC,CAAC;IAEb;;;;;;;;;;;OAWG;gBACS,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAI1C;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CACV,IAAI,EAAE,6BAA6B,EACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,KAAK,IAAI,EACjE,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAkBxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CACX,IAAI,EAAE,8BAA8B,EACpC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC3C,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAkBxB;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CACH,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,EACnC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAcxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CACF,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAChC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAkBxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CACT,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,IAAI,EAC1C,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAcxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,WAAW,CACP,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,IAAI,EACrC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAcxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CACF,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,EAC9B,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAmBxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CACR,IAAI,EAAE,2BAA2B,EACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,EACxC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAexB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CACR,IAAI,EAAE,2BAA2B,EACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAC9C,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAexB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CACF,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EACnC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAiBxB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,UAAU,CACN,IAAI,EAAE,yBAAyB,EAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,EACrC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAexB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAS,CACL,IAAI,EAAE,wBAAwB,EAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,EACrC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAkBxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAY,CACR,IAAI,EAAE,2BAA2B,EACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,EACxC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAiBxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,2BAA2B,CACvB,IAAI,EAAE,0CAA0C,EAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,6BAA6B,KAAK,IAAI,EACvD,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAiBxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CACX,IAAI,EAAE,oBAAoB,EAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC3C,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAiBxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,kBAAkB,CACd,IAAI,EAAE,uBAAuB,EAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,IAAI,EAC9C,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;IAiBxB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CACJ,IAAI,EAAE,uBAAuB,EAC7B,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,EACpC,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,YAAY,CAAC;CAgB3B"}
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/src/clients/event.ts"],"names":[],"mappings":"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"}
@@ -116,6 +116,37 @@ export class EventClient {
116
116
  listener(event.detail);
117
117
  }, signal);
118
118
  }
119
+ /**
120
+ * Subscribe to best bid and offer updates for a specific asset.
121
+ * @param args - The parameters for the subscription.
122
+ * @param listener - The callback function to be called when the event is received.
123
+ * @param signal - An optional abort signal for canceling the subscription request.
124
+ * @returns A promise that resolves with a {@link Subscription} object to manage the subscription lifecycle.
125
+ *
126
+ * @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/subscriptions
127
+ * @example
128
+ * ```ts
129
+ * import * as hl from "@nktkas/hyperliquid";
130
+ *
131
+ * const transport = new hl.WebSocketTransport();
132
+ * const client = new hl.EventClient({ transport });
133
+ *
134
+ * const sub = await client.bbo({ coin: "BTC" }, (data) => {
135
+ * console.log(data);
136
+ * });
137
+ * ```
138
+ */
139
+ bbo(args, listener, signal) {
140
+ const payload = {
141
+ type: "bbo",
142
+ coin: args.coin,
143
+ };
144
+ return this.transport.subscribe(payload.type, payload, (event) => {
145
+ if (event.detail.coin === args.coin) {
146
+ listener(event.detail);
147
+ }
148
+ }, signal);
149
+ }
119
150
  /**
120
151
  * Subscribe to candlestick data updates for a specific asset.
121
152
  * @param args - The parameters for the subscription.