@nktkas/hyperliquid 0.13.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.
Files changed (145) hide show
  1. package/CONTRIBUTING.md +59 -0
  2. package/LICENSE +21 -0
  3. package/README.md +363 -0
  4. package/SECURITY.md +7 -0
  5. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts +2 -0
  6. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts.map +1 -0
  7. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js +1 -0
  8. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts +95 -0
  9. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts.map +1 -0
  10. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.js +10 -0
  11. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/_assert.d.ts +23 -0
  12. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/_assert.d.ts.map +1 -0
  13. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/_assert.js +43 -0
  14. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/_u64.d.ts +55 -0
  15. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/_u64.d.ts.map +1 -0
  16. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/_u64.js +65 -0
  17. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/crypto.d.ts +2 -0
  18. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/crypto.d.ts.map +1 -0
  19. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/crypto.js +1 -0
  20. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/sha3.d.ts +52 -0
  21. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/sha3.d.ts.map +1 -0
  22. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/sha3.js +283 -0
  23. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/utils.d.ts +120 -0
  24. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/utils.d.ts.map +1 -0
  25. package/esm/deps/jsr.io/@noble/hashes/1.7.1/src/utils.js +211 -0
  26. package/esm/deps/jsr.io/@std/bytes/1.0.4/concat.d.ts +19 -0
  27. package/esm/deps/jsr.io/@std/bytes/1.0.4/concat.d.ts.map +1 -0
  28. package/esm/deps/jsr.io/@std/bytes/1.0.4/concat.js +32 -0
  29. package/esm/deps/jsr.io/@std/encoding/1.0.6/_validate_binary_like.d.ts +2 -0
  30. package/esm/deps/jsr.io/@std/encoding/1.0.6/_validate_binary_like.d.ts.map +1 -0
  31. package/esm/deps/jsr.io/@std/encoding/1.0.6/_validate_binary_like.js +26 -0
  32. package/esm/deps/jsr.io/@std/encoding/1.0.6/hex.d.ts +37 -0
  33. package/esm/deps/jsr.io/@std/encoding/1.0.6/hex.d.ts.map +1 -0
  34. package/esm/deps/jsr.io/@std/encoding/1.0.6/hex.js +109 -0
  35. package/esm/deps/jsr.io/@std/msgpack/1.0.2/encode.d.ts +37 -0
  36. package/esm/deps/jsr.io/@std/msgpack/1.0.2/encode.d.ts.map +1 -0
  37. package/esm/deps/jsr.io/@std/msgpack/1.0.2/encode.js +237 -0
  38. package/esm/mod.d.ts +24 -0
  39. package/esm/mod.d.ts.map +1 -0
  40. package/esm/mod.js +9 -0
  41. package/esm/package.json +3 -0
  42. package/esm/src/clients/event.d.ts +374 -0
  43. package/esm/src/clients/event.d.ts.map +1 -0
  44. package/esm/src/clients/event.js +490 -0
  45. package/esm/src/clients/public.d.ts +695 -0
  46. package/esm/src/clients/public.d.ts.map +1 -0
  47. package/esm/src/clients/public.js +704 -0
  48. package/esm/src/clients/wallet.d.ts +682 -0
  49. package/esm/src/clients/wallet.d.ts.map +1 -0
  50. package/esm/src/clients/wallet.js +984 -0
  51. package/esm/src/transports/base.d.ts +55 -0
  52. package/esm/src/transports/base.d.ts.map +1 -0
  53. package/esm/src/transports/base.js +14 -0
  54. package/esm/src/transports/http/http_transport.d.ts +78 -0
  55. package/esm/src/transports/http/http_transport.d.ts.map +1 -0
  56. package/esm/src/transports/http/http_transport.js +170 -0
  57. package/esm/src/transports/websocket/hyperliquid_event_target.d.ts +66 -0
  58. package/esm/src/transports/websocket/hyperliquid_event_target.d.ts.map +1 -0
  59. package/esm/src/transports/websocket/hyperliquid_event_target.js +33 -0
  60. package/esm/src/transports/websocket/reconnecting_websocket.d.ts +160 -0
  61. package/esm/src/transports/websocket/reconnecting_websocket.d.ts.map +1 -0
  62. package/esm/src/transports/websocket/reconnecting_websocket.js +370 -0
  63. package/esm/src/transports/websocket/websocket_request_dispatcher.d.ts +63 -0
  64. package/esm/src/transports/websocket/websocket_request_dispatcher.d.ts.map +1 -0
  65. package/esm/src/transports/websocket/websocket_request_dispatcher.js +201 -0
  66. package/esm/src/transports/websocket/websocket_transport.d.ts +117 -0
  67. package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -0
  68. package/esm/src/transports/websocket/websocket_transport.js +233 -0
  69. package/esm/src/utils/key_sort.d.ts +21 -0
  70. package/esm/src/utils/key_sort.d.ts.map +1 -0
  71. package/esm/src/utils/key_sort.js +124 -0
  72. package/esm/src/utils/signing.d.ts +109 -0
  73. package/esm/src/utils/signing.d.ts.map +1 -0
  74. package/esm/src/utils/signing.js +164 -0
  75. package/package.json +34 -0
  76. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts +2 -0
  77. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts.map +1 -0
  78. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js +17 -0
  79. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts +95 -0
  80. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts.map +1 -0
  81. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.js +14 -0
  82. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/_assert.d.ts +23 -0
  83. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/_assert.d.ts.map +1 -0
  84. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/_assert.js +49 -0
  85. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/_u64.d.ts +55 -0
  86. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/_u64.d.ts.map +1 -0
  87. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/_u64.js +88 -0
  88. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/crypto.d.ts +2 -0
  89. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/crypto.d.ts.map +1 -0
  90. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/crypto.js +4 -0
  91. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/sha3.d.ts +52 -0
  92. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/sha3.d.ts.map +1 -0
  93. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/sha3.js +288 -0
  94. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/utils.d.ts +120 -0
  95. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/utils.d.ts.map +1 -0
  96. package/script/deps/jsr.io/@noble/hashes/1.7.1/src/utils.js +235 -0
  97. package/script/deps/jsr.io/@std/bytes/1.0.4/concat.d.ts +19 -0
  98. package/script/deps/jsr.io/@std/bytes/1.0.4/concat.d.ts.map +1 -0
  99. package/script/deps/jsr.io/@std/bytes/1.0.4/concat.js +35 -0
  100. package/script/deps/jsr.io/@std/encoding/1.0.6/_validate_binary_like.d.ts +2 -0
  101. package/script/deps/jsr.io/@std/encoding/1.0.6/_validate_binary_like.d.ts.map +1 -0
  102. package/script/deps/jsr.io/@std/encoding/1.0.6/_validate_binary_like.js +29 -0
  103. package/script/deps/jsr.io/@std/encoding/1.0.6/hex.d.ts +37 -0
  104. package/script/deps/jsr.io/@std/encoding/1.0.6/hex.d.ts.map +1 -0
  105. package/script/deps/jsr.io/@std/encoding/1.0.6/hex.js +113 -0
  106. package/script/deps/jsr.io/@std/msgpack/1.0.2/encode.d.ts +37 -0
  107. package/script/deps/jsr.io/@std/msgpack/1.0.2/encode.d.ts.map +1 -0
  108. package/script/deps/jsr.io/@std/msgpack/1.0.2/encode.js +240 -0
  109. package/script/mod.d.ts +24 -0
  110. package/script/mod.d.ts.map +1 -0
  111. package/script/mod.js +27 -0
  112. package/script/package.json +3 -0
  113. package/script/src/clients/event.d.ts +374 -0
  114. package/script/src/clients/event.d.ts.map +1 -0
  115. package/script/src/clients/event.js +494 -0
  116. package/script/src/clients/public.d.ts +695 -0
  117. package/script/src/clients/public.d.ts.map +1 -0
  118. package/script/src/clients/public.js +708 -0
  119. package/script/src/clients/wallet.d.ts +682 -0
  120. package/script/src/clients/wallet.d.ts.map +1 -0
  121. package/script/src/clients/wallet.js +989 -0
  122. package/script/src/transports/base.d.ts +55 -0
  123. package/script/src/transports/base.d.ts.map +1 -0
  124. package/script/src/transports/base.js +18 -0
  125. package/script/src/transports/http/http_transport.d.ts +78 -0
  126. package/script/src/transports/http/http_transport.d.ts.map +1 -0
  127. package/script/src/transports/http/http_transport.js +175 -0
  128. package/script/src/transports/websocket/hyperliquid_event_target.d.ts +66 -0
  129. package/script/src/transports/websocket/hyperliquid_event_target.d.ts.map +1 -0
  130. package/script/src/transports/websocket/hyperliquid_event_target.js +37 -0
  131. package/script/src/transports/websocket/reconnecting_websocket.d.ts +160 -0
  132. package/script/src/transports/websocket/reconnecting_websocket.d.ts.map +1 -0
  133. package/script/src/transports/websocket/reconnecting_websocket.js +374 -0
  134. package/script/src/transports/websocket/websocket_request_dispatcher.d.ts +63 -0
  135. package/script/src/transports/websocket/websocket_request_dispatcher.d.ts.map +1 -0
  136. package/script/src/transports/websocket/websocket_request_dispatcher.js +206 -0
  137. package/script/src/transports/websocket/websocket_transport.d.ts +117 -0
  138. package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -0
  139. package/script/src/transports/websocket/websocket_transport.js +237 -0
  140. package/script/src/utils/key_sort.d.ts +21 -0
  141. package/script/src/utils/key_sort.d.ts.map +1 -0
  142. package/script/src/utils/key_sort.js +127 -0
  143. package/script/src/utils/signing.d.ts +109 -0
  144. package/script/src/utils/signing.d.ts.map +1 -0
  145. package/script/src/utils/signing.js +172 -0
@@ -0,0 +1,704 @@
1
+ /**
2
+ * Public client for interacting with the Hyperliquid API.
3
+ * @typeParam T - The type of transport used to connect to the Hyperliquid API.
4
+ */
5
+ export class PublicClient {
6
+ /**
7
+ * Initialises a new instance.
8
+ * @param args - The arguments for initialisation.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import * as hl from "@nktkas/hyperliquid";
13
+ *
14
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
15
+ * const client = new hl.PublicClient({ transport });
16
+ * ```
17
+ */
18
+ constructor(args) {
19
+ /** The transport used to connect to the Hyperliquid API. */
20
+ Object.defineProperty(this, "transport", {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value: void 0
25
+ });
26
+ this.transport = args.transport;
27
+ }
28
+ // ———————————————Info API———————————————
29
+ /**
30
+ * Request mid coin prices.
31
+ * @param signal - An optional abort signal.
32
+ * @returns Mid coin prices.
33
+ *
34
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-mids-for-all-coins | Hyperliquid GitBook}
35
+ * @example
36
+ * ```ts
37
+ * import * as hl from "@nktkas/hyperliquid";
38
+ *
39
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
40
+ * const client = new hl.PublicClient({ transport });
41
+ *
42
+ * const allMids = await client.allMids();
43
+ * ```
44
+ */
45
+ allMids(signal) {
46
+ return this.transport.request("info", { type: "allMids" }, signal);
47
+ }
48
+ /**
49
+ * Request candlestick snapshots.
50
+ * @param args - The parameters for the request.
51
+ * @param signal - An optional abort signal.
52
+ * @returns Array of candlestick data points.
53
+ *
54
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#candle-snapshot | Hyperliquid GitBook}
55
+ * @example
56
+ * ```ts
57
+ * import * as hl from "@nktkas/hyperliquid";
58
+ *
59
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
60
+ * const client = new hl.PublicClient({ transport });
61
+ *
62
+ * const candles = await client.candleSnapshot({
63
+ * coin: "ETH",
64
+ * interval: "1h",
65
+ * startTime: Date.now() - 1000 * 60 * 60 * 24
66
+ * });
67
+ * ```
68
+ */
69
+ candleSnapshot(args, signal) {
70
+ return this.transport.request("info", { type: "candleSnapshot", req: args }, signal);
71
+ }
72
+ /**
73
+ * Request clearinghouse state.
74
+ * @param args - The parameters for the request.
75
+ * @param signal - An optional abort signal.
76
+ * @returns Account summary for perpetual trading.
77
+ *
78
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-users-perpetuals-account-summary | Hyperliquid GitBook}
79
+ * @example
80
+ * ```ts
81
+ * import * as hl from "@nktkas/hyperliquid";
82
+ *
83
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
84
+ * const client = new hl.PublicClient({ transport });
85
+ *
86
+ * const state = await client.clearinghouseState({ user: "0x..." });
87
+ * ```
88
+ */
89
+ clearinghouseState(args, signal) {
90
+ return this.transport.request("info", { type: "clearinghouseState", ...args }, signal);
91
+ }
92
+ /**
93
+ * Request user's extra agents.
94
+ * @param args - The parameters for the request.
95
+ * @param signal - An optional abort signal.
96
+ * @returns User's extra agents.
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * import * as hl from "@nktkas/hyperliquid";
101
+ *
102
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
103
+ * const client = new hl.PublicClient({ transport });
104
+ *
105
+ * const extraAgents = await client.extraAgents({ user: "0x..." });
106
+ * ```
107
+ */
108
+ extraAgents(args, signal) {
109
+ return this.transport.request("info", { type: "extraAgents", ...args }, signal);
110
+ }
111
+ /**
112
+ * Request frontend open orders.
113
+ * @param args - The parameters for the request.
114
+ * @param signal - An optional abort signal.
115
+ * @returns Array of open orders with additional frontend information.
116
+ *
117
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-a-users-open-orders-with-additional-frontend-info | Hyperliquid GitBook}
118
+ * @example
119
+ * ```ts
120
+ * import * as hl from "@nktkas/hyperliquid";
121
+ *
122
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
123
+ * const client = new hl.PublicClient({ transport });
124
+ *
125
+ * const orders = await client.frontendOpenOrders({ user: "0x..." });
126
+ * ```
127
+ */
128
+ frontendOpenOrders(args, signal) {
129
+ return this.transport.request("info", { type: "frontendOpenOrders", ...args }, signal);
130
+ }
131
+ /**
132
+ * Request funding history.
133
+ * @param args - The parameters for the request.
134
+ * @param signal - An optional abort signal.
135
+ * @returns Array of historical funding rate data for an asset.
136
+ *
137
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-historical-funding-rates | Hyperliquid GitBook}
138
+ * @example
139
+ * ```ts
140
+ * import * as hl from "@nktkas/hyperliquid";
141
+ *
142
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
143
+ * const client = new hl.PublicClient({ transport });
144
+ *
145
+ * const funding = await client.fundingHistory({
146
+ * coin: "ETH",
147
+ * startTime: Date.now() - 1000 * 60 * 60 * 24
148
+ * });
149
+ * ```
150
+ */
151
+ fundingHistory(args, signal) {
152
+ return this.transport.request("info", { type: "fundingHistory", ...args }, signal);
153
+ }
154
+ /**
155
+ * Request user's historical orders.
156
+ * @param args - The parameters for the request.
157
+ * @param signal - An optional abort signal.
158
+ * @returns Array of user's historical orders.
159
+ *
160
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-a-users-historical-orders | Hyperliquid GitBook}
161
+ * @example
162
+ * ```ts
163
+ * import * as hl from "@nktkas/hyperliquid";
164
+ *
165
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
166
+ * const client = new hl.PublicClient({ transport });
167
+ *
168
+ * const orders = await client.historicalOrders({ user: "0x..." });
169
+ * ```
170
+ */
171
+ historicalOrders(args, signal) {
172
+ return this.transport.request("info", { type: "historicalOrders", ...args }, signal);
173
+ }
174
+ /**
175
+ * Request L2 order book.
176
+ * @param args - The parameters for the request.
177
+ * @param signal - An optional abort signal.
178
+ * @returns L2 order book snapshot.
179
+ *
180
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#l2-book-snapshot | Hyperliquid GitBook}
181
+ * @example
182
+ * ```ts
183
+ * import * as hl from "@nktkas/hyperliquid";
184
+ *
185
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
186
+ * const client = new hl.PublicClient({ transport });
187
+ *
188
+ * const book = await client.l2Book({ coin: "ETH", nSigFigs: 2 });
189
+ * ```
190
+ */
191
+ l2Book(args, signal) {
192
+ return this.transport.request("info", { type: "l2Book", ...args }, signal);
193
+ }
194
+ /**
195
+ * Request builder fee approval.
196
+ * @param args - The parameters for the request.
197
+ * @param signal - An optional abort signal.
198
+ * @returns Maximum builder fee approval.
199
+ *
200
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#check-builder-fee-approval | Hyperliquid GitBook}
201
+ * @example
202
+ * ```ts
203
+ * import * as hl from "@nktkas/hyperliquid";
204
+ *
205
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
206
+ * const client = new hl.PublicClient({ transport });
207
+ *
208
+ * const maxBuilderFee = await client.maxBuilderFee({ user: "0x...", builder: "0x..." });
209
+ * ```
210
+ */
211
+ maxBuilderFee(args, signal) {
212
+ return this.transport.request("info", { type: "maxBuilderFee", ...args }, signal);
213
+ }
214
+ /**
215
+ * Request trading metadata.
216
+ * @param signal - An optional abort signal.
217
+ * @returns Metadata for perpetual assets.
218
+ *
219
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-perpetuals-metadata | Hyperliquid GitBook}
220
+ * @example
221
+ * ```ts
222
+ * import * as hl from "@nktkas/hyperliquid";
223
+ *
224
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
225
+ * const client = new hl.PublicClient({ transport });
226
+ *
227
+ * const meta = await client.meta();
228
+ * ```
229
+ */
230
+ meta(signal) {
231
+ return this.transport.request("info", { type: "meta" }, signal);
232
+ }
233
+ /**
234
+ * Request metadata and asset contexts.
235
+ * @param signal - An optional abort signal.
236
+ * @returns Metadata and context information for each perpetual asset.
237
+ *
238
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-perpetuals-asset-contexts-includes-mark-price-current-funding-open-interest-etc | Hyperliquid GitBook}
239
+ * @example
240
+ * ```ts
241
+ * import * as hl from "@nktkas/hyperliquid";
242
+ *
243
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
244
+ * const client = new hl.PublicClient({ transport });
245
+ *
246
+ * const [meta, assetCtxs] = await client.metaAndAssetCtxs();
247
+ * ```
248
+ */
249
+ metaAndAssetCtxs(signal) {
250
+ return this.transport.request("info", { type: "metaAndAssetCtxs" }, signal);
251
+ }
252
+ /**
253
+ * Request open orders.
254
+ * @param args - The parameters for the request.
255
+ * @param signal - An optional abort signal.
256
+ * @returns Array of open order.
257
+ *
258
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-a-users-open-orders | Hyperliquid GitBook}
259
+ * @example
260
+ * ```ts
261
+ * import * as hl from "@nktkas/hyperliquid";
262
+ *
263
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
264
+ * const client = new hl.PublicClient({ transport });
265
+ *
266
+ * const orders = await client.openOrders({ user: "0x..." });
267
+ * ```
268
+ */
269
+ openOrders(args, signal) {
270
+ return this.transport.request("info", { type: "openOrders", ...args }, signal);
271
+ }
272
+ /**
273
+ * Request order status.
274
+ * @param args - The parameters for the request.
275
+ * @param signal - An optional abort signal.
276
+ * @returns Result of an order status lookup.
277
+ *
278
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#query-order-status-by-oid-or-cloid | Hyperliquid GitBook}
279
+ * @example
280
+ * ```ts
281
+ * import * as hl from "@nktkas/hyperliquid";
282
+ *
283
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
284
+ * const client = new hl.PublicClient({ transport });
285
+ *
286
+ * const status = await client.orderStatus({ user: "0x...", oid: 12345 });
287
+ * ```
288
+ */
289
+ orderStatus(args, signal) {
290
+ return this.transport.request("info", { type: "orderStatus", ...args }, signal);
291
+ }
292
+ /**
293
+ * Request predicted funding rates.
294
+ * @param signal - An optional abort signal.
295
+ * @returns Array of predicted funding rates.
296
+ *
297
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-predicted-funding-rates-for-different-venues | Hyperliquid GitBook}
298
+ * @example
299
+ * ```ts
300
+ * import * as hl from "@nktkas/hyperliquid";
301
+ *
302
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
303
+ * const client = new hl.PublicClient({ transport });
304
+ *
305
+ * const predictedFundings = await client.predictedFundings();
306
+ * ```
307
+ */
308
+ predictedFundings(signal) {
309
+ return this.transport.request("info", { type: "predictedFundings" }, signal);
310
+ }
311
+ /**
312
+ * Request user referral.
313
+ * @param args - The parameters for the request.
314
+ * @param signal - An optional abort signal.
315
+ * @returns Referral information for a user.
316
+ *
317
+ * @example
318
+ * ```ts
319
+ * import * as hl from "@nktkas/hyperliquid";
320
+ *
321
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
322
+ * const client = new hl.PublicClient({ transport });
323
+ *
324
+ * const referral = await client.referral({ user: "0x..." });
325
+ * ```
326
+ */
327
+ referral(args, signal) {
328
+ return this.transport.request("info", { type: "referral", ...args }, signal);
329
+ }
330
+ /**
331
+ * Request spot clearinghouse state.
332
+ * @param args - The parameters for the request.
333
+ * @param signal - An optional abort signal.
334
+ * @returns Balances for spot tokens.
335
+ *
336
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/spot#retrieve-a-users-token-balances | Hyperliquid GitBook}
337
+ * @example
338
+ * ```ts
339
+ * import * as hl from "@nktkas/hyperliquid";
340
+ *
341
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
342
+ * const client = new hl.PublicClient({ transport });
343
+ *
344
+ * const state = await client.spotClearinghouseState({ user: "0x..." });
345
+ * ```
346
+ */
347
+ spotClearinghouseState(args, signal) {
348
+ return this.transport.request("info", { type: "spotClearinghouseState", ...args }, signal);
349
+ }
350
+ /**
351
+ * Request spot deploy state.
352
+ * @param args - The parameters for the request.
353
+ * @param signal - An optional abort signal.
354
+ * @returns The deploy state of a user.
355
+ *
356
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/spot#retrieve-information-about-the-spot-deploy-auction | Hyperliquid GitBook}
357
+ */
358
+ spotDeployState(args, signal) {
359
+ return this.transport.request("info", { type: "spotDeployState", ...args }, signal);
360
+ }
361
+ /**
362
+ * Request spot trading metadata.
363
+ * @param signal - An optional abort signal.
364
+ * @returns Metadata for spot assets.
365
+ *
366
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/spot#retrieve-spot-metadata | Hyperliquid GitBook}
367
+ * @example
368
+ * ```ts
369
+ * import * as hl from "@nktkas/hyperliquid";
370
+ *
371
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
372
+ * const client = new hl.PublicClient({ transport });
373
+ *
374
+ * const meta = await client.spotMeta();
375
+ * ```
376
+ */
377
+ spotMeta(signal) {
378
+ return this.transport.request("info", { type: "spotMeta" }, signal);
379
+ }
380
+ /**
381
+ * Request spot metadata and asset contexts.
382
+ * @param signal - An optional abort signal.
383
+ * @returns Metadata and context information for each spot asset.
384
+ *
385
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/spot#retrieve-spot-asset-contexts | Hyperliquid GitBook}
386
+ * @example
387
+ * ```ts
388
+ * import * as hl from "@nktkas/hyperliquid";
389
+ *
390
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
391
+ * const client = new hl.PublicClient({ transport });
392
+ *
393
+ * const [meta, assetCtxs] = await client.spotMetaAndAssetCtxs();
394
+ * ```
395
+ */
396
+ spotMetaAndAssetCtxs(signal) {
397
+ return this.transport.request("info", { type: "spotMetaAndAssetCtxs" }, signal);
398
+ }
399
+ /**
400
+ * Request user sub-accounts.
401
+ * @param args - The parameters for the request.
402
+ * @param signal - An optional abort signal.
403
+ * @returns Array of user sub-account.
404
+ *
405
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-a-users-subaccounts | Hyperliquid GitBook}
406
+ * @example
407
+ * ```ts
408
+ * import * as hl from "@nktkas/hyperliquid";
409
+ *
410
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
411
+ * const client = new hl.PublicClient({ transport });
412
+ *
413
+ * const subAccounts = await client.subAccounts({ user: "0x..." });
414
+ * ```
415
+ */
416
+ subAccounts(args, signal) {
417
+ return this.transport.request("info", { type: "subAccounts", ...args }, signal);
418
+ }
419
+ /**
420
+ * Request token details.
421
+ * @param args - The parameters for the request.
422
+ * @param signal - An optional abort signal.
423
+ * @returns The details of a token.
424
+ *
425
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/spot#retrieve-information-about-a-token | Hyperliquid GitBook}
426
+ * @example
427
+ * ```ts
428
+ * import * as hl from "@nktkas/hyperliquid";
429
+ *
430
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
431
+ * const client = new hl.PublicClient({ transport });
432
+ *
433
+ * const details = await client.tokenDetails({ tokenId: "0x..." });
434
+ * ```
435
+ */
436
+ tokenDetails(args, signal) {
437
+ return this.transport.request("info", { type: "tokenDetails", ...args }, signal);
438
+ }
439
+ /**
440
+ * Request twap history of a user.
441
+ * @param args - The parameters for the request.
442
+ * @param signal - An optional abort signal.
443
+ * @returns The twap history of a user.
444
+ *
445
+ * @example
446
+ * ```ts
447
+ * import * as hl from "@nktkas/hyperliquid";
448
+ *
449
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
450
+ * const client = new hl.PublicClient({ transport });
451
+ *
452
+ * const twapHistory = await client.twapHistory({ user: "0x..." });
453
+ * ```
454
+ */
455
+ twapHistory(args, signal) {
456
+ return this.transport.request("info", { type: "twapHistory", ...args }, signal);
457
+ }
458
+ /**
459
+ * Request user fees.
460
+ * @param args - The parameters for the request.
461
+ * @param signal - An optional abort signal.
462
+ * @returns User fees.
463
+ *
464
+ * @example
465
+ * ```ts
466
+ * import * as hl from "@nktkas/hyperliquid";
467
+ *
468
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
469
+ * const client = new hl.PublicClient({ transport });
470
+ *
471
+ * const userFees = await client.userFees({ user: "0x..." });
472
+ * ```
473
+ */
474
+ userFees(args, signal) {
475
+ return this.transport.request("info", { type: "userFees", ...args }, signal);
476
+ }
477
+ /**
478
+ * Request user fills.
479
+ * @param args - The parameters for the request.
480
+ * @param signal - An optional abort signal.
481
+ * @returns Array of user's trade fill.
482
+ *
483
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-a-users-fills | Hyperliquid GitBook}
484
+ * @example
485
+ * ```ts
486
+ * import * as hl from "@nktkas/hyperliquid";
487
+ *
488
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
489
+ * const client = new hl.PublicClient({ transport });
490
+ *
491
+ * const fills = await client.userFills({ user: "0x..." });
492
+ * ```
493
+ */
494
+ userFills(args, signal) {
495
+ return this.transport.request("info", { type: "userFills", ...args }, signal);
496
+ }
497
+ /**
498
+ * Request user fills by time.
499
+ * @param args - The parameters for the request.
500
+ * @param signal - An optional abort signal.
501
+ * @returns Array of user's trade fill.
502
+ *
503
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-a-users-fills-by-time | Hyperliquid GitBook}
504
+ * @example
505
+ * ```ts
506
+ * import * as hl from "@nktkas/hyperliquid";
507
+ *
508
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
509
+ * const client = new hl.PublicClient({ transport });
510
+ *
511
+ * const fills = await client.userFillsByTime({
512
+ * user: "0x...",
513
+ * startTime: Date.now() - 1000 * 60 * 60 * 24
514
+ * });
515
+ * ```
516
+ */
517
+ userFillsByTime(args, signal) {
518
+ return this.transport.request("info", { type: "userFillsByTime", ...args }, signal);
519
+ }
520
+ /**
521
+ * Request user funding.
522
+ * @param args - The parameters for the request.
523
+ * @param signal - An optional abort signal.
524
+ * @returns Array of user's funding ledger update.
525
+ *
526
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-a-users-funding-history-or-non-funding-ledger-updates | Hyperliquid GitBook}
527
+ * @example
528
+ * ```ts
529
+ * import * as hl from "@nktkas/hyperliquid";
530
+ *
531
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
532
+ * const client = new hl.PublicClient({ transport });
533
+ *
534
+ * const funding = await client.userFunding({
535
+ * user: "0x...",
536
+ * startTime: Date.now() - 1000 * 60 * 60 * 24
537
+ * });
538
+ * ```
539
+ */
540
+ userFunding(args, signal) {
541
+ return this.transport.request("info", { type: "userFunding", ...args }, signal);
542
+ }
543
+ /**
544
+ * Request user non-funding ledger updates.
545
+ * @param args - The parameters for the request.
546
+ * @param signal - An optional abort signal.
547
+ * @returns Array of user's non-funding ledger update.
548
+ *
549
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint/perpetuals#retrieve-a-users-funding-history-or-non-funding-ledger-updates | Hyperliquid GitBook}
550
+ * @example
551
+ * ```ts
552
+ * import * as hl from "@nktkas/hyperliquid";
553
+ *
554
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
555
+ * const client = new hl.PublicClient({ transport });
556
+ *
557
+ * const funding = await client.userNonFundingLedgerUpdates({
558
+ * user: "0x...",
559
+ * startTime: Date.now() - 1000 * 60 * 60 * 24
560
+ * });
561
+ * ```
562
+ */
563
+ userNonFundingLedgerUpdates(args, signal) {
564
+ return this.transport.request("info", { type: "userNonFundingLedgerUpdates", ...args }, signal);
565
+ }
566
+ /**
567
+ * Request user rate limits.
568
+ * @param args - The parameters for the request.
569
+ * @param signal - An optional abort signal.
570
+ * @returns User's rate limits.
571
+ *
572
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#query-user-rate-limits | Hyperliquid GitBook}
573
+ * @example
574
+ * ```ts
575
+ * import * as hl from "@nktkas/hyperliquid";
576
+ *
577
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
578
+ * const client = new hl.PublicClient({ transport });
579
+ *
580
+ * const rateLimit = await client.userRateLimit({ user: "0x..." });
581
+ * ```
582
+ */
583
+ userRateLimit(args, signal) {
584
+ return this.transport.request("info", { type: "userRateLimit", ...args }, signal);
585
+ }
586
+ /**
587
+ * Request user twap slice fills.
588
+ * @param args - The parameters for the request.
589
+ * @param signal - An optional abort signal.
590
+ * @returns Array of user's twap slice fill.
591
+ *
592
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-a-users-twap-slice-fills | Hyperliquid GitBook}
593
+ * @example
594
+ * ```ts
595
+ * import * as hl from "@nktkas/hyperliquid";
596
+ *
597
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
598
+ * const client = new hl.PublicClient({ transport });
599
+ *
600
+ * const fills = await client.userTwapSliceFills({ user: "0x..." });
601
+ * ```
602
+ */
603
+ userTwapSliceFills(args, signal) {
604
+ return this.transport.request("info", { type: "userTwapSliceFills", ...args }, signal);
605
+ }
606
+ /**
607
+ * Request user vault deposits.
608
+ * @param args - The parameters for the request.
609
+ * @param signal - An optional abort signal.
610
+ * @returns Array of user's vault deposits.
611
+ *
612
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-a-users-vault-deposits | Hyperliquid GitBook}
613
+ * @example
614
+ * ```ts
615
+ * import * as hl from "@nktkas/hyperliquid";
616
+ *
617
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
618
+ * const client = new hl.PublicClient({ transport });
619
+ *
620
+ * const deposits = await client.userVaultDeposits({ user: "0x..." });
621
+ * ```
622
+ */
623
+ userVaultEquities(args, signal) {
624
+ return this.transport.request("info", { type: "userVaultEquities", ...args }, signal);
625
+ }
626
+ /**
627
+ * Request details of a vault.
628
+ * @param args - The parameters for the request.
629
+ * @param signal - An optional abort signal.
630
+ * @returns Details of a vault.
631
+ *
632
+ * @see {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint#retrieve-details-for-a-vault | Hyperliquid GitBook}
633
+ * @example
634
+ * ```ts
635
+ * import * as hl from "@nktkas/hyperliquid";
636
+ *
637
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
638
+ * const client = new hl.PublicClient({ transport });
639
+ *
640
+ * const vault = await client.vaultDetails({ vaultAddress: "0x..." });
641
+ * ```
642
+ */
643
+ vaultDetails(args, signal) {
644
+ return this.transport.request("info", { type: "vaultDetails", ...args }, signal);
645
+ }
646
+ /**
647
+ * Request a list of vaults less than 2 hours old.
648
+ * @param args - The parameters for the request.
649
+ * @param signal - An optional abort signal.
650
+ * @returns Array of vault summaries.
651
+ *
652
+ * @example
653
+ * ```ts
654
+ * import * as hl from "@nktkas/hyperliquid";
655
+ *
656
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
657
+ * const client = new hl.PublicClient({ transport });
658
+ *
659
+ * const vaults = await client.vaultSummaries();
660
+ * ```
661
+ */
662
+ vaultSummaries(signal) {
663
+ return this.transport.request("info", { type: "vaultSummaries" }, signal);
664
+ }
665
+ // ———————————————Explorer API———————————————
666
+ /**
667
+ * Gets the details of a block.
668
+ * @param args - The parameters for the request.
669
+ * @param signal - An optional abort signal.
670
+ * @returns A promise that resolves with the details of the block.
671
+ *
672
+ * @example
673
+ * ```ts
674
+ * import * as hl from "@nktkas/hyperliquid";
675
+ *
676
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
677
+ * const client = new hl.PublicClient({ transport });
678
+ *
679
+ * const { blockDetails } = await client.blockDetails({ height: 123 });
680
+ * ```
681
+ */
682
+ blockDetails(args, signal) {
683
+ return this.transport.request("explorer", { type: "blockDetails", ...args }, signal);
684
+ }
685
+ /**
686
+ * Gets the details of a transaction.
687
+ * @param args - The parameters for the request.
688
+ * @param signal - An optional abort signal.
689
+ * @returns A promise that resolves with the details of the transaction.
690
+ *
691
+ * @example
692
+ * ```ts
693
+ * import * as hl from "@nktkas/hyperliquid";
694
+ *
695
+ * const transport = new hl.HttpTransport(); // or WebSocketTransport
696
+ * const client = new hl.PublicClient({ transport });
697
+ *
698
+ * const { tx } = await client.txDetails({ hash: "0x..." });
699
+ * ```
700
+ */
701
+ txDetails(args, signal) {
702
+ return this.transport.request("explorer", { type: "txDetails", ...args }, signal);
703
+ }
704
+ }