• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nktkas / hyperliquid / 20260168111

16 Dec 2025 07:33AM UTC coverage: 95.34% (-1.3%) from 96.688%
20260168111

push

github

nktkas
docs: improve code documentation

661 of 881 branches covered (75.03%)

Branch coverage included in aggregate %.

5 of 5 new or added lines in 2 files covered. (100.0%)

151 existing lines in 17 files now uncovered.

12843 of 13283 relevant lines covered (96.69%)

1103.6 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.27
/src/api/subscription/client.ts
1
import type { SubscriptionConfig } from "./_methods/_types.ts";
2
import type { ISubscription } from "../../transport/mod.ts";
3

4
// =============================================================
5
// Methods Imports
6
// =============================================================
7

8
import { activeAssetCtx, type ActiveAssetCtxEvent, type ActiveAssetCtxParameters } from "./_methods/activeAssetCtx.ts";
364✔
9
import {
364✔
10
  activeAssetData,
364✔
11
  type ActiveAssetDataEvent,
12
  type ActiveAssetDataParameters,
13
} from "./_methods/activeAssetData.ts";
364✔
14
import {
364✔
15
  activeSpotAssetCtx,
364✔
16
  type ActiveSpotAssetCtxEvent,
17
  type ActiveSpotAssetCtxParameters,
18
} from "./_methods/activeSpotAssetCtx.ts";
364✔
19
import { allDexsAssetCtxs, type AllDexsAssetCtxsEvent } from "./_methods/allDexsAssetCtxs.ts";
364✔
20
import {
364✔
21
  allDexsClearinghouseState,
364✔
22
  type AllDexsClearinghouseStateEvent,
23
  type AllDexsClearinghouseStateParameters,
24
} from "./_methods/allDexsClearinghouseState.ts";
364✔
25
import { allMids, type AllMidsEvent, type AllMidsParameters } from "./_methods/allMids.ts";
364✔
26
import { assetCtxs, type AssetCtxsEvent, type AssetCtxsParameters } from "./_methods/assetCtxs.ts";
364✔
27
import { bbo, type BboEvent, type BboParameters } from "./_methods/bbo.ts";
364✔
28
import { candle, type CandleEvent, type CandleParameters } from "./_methods/candle.ts";
364✔
29
import {
364✔
30
  clearinghouseState,
364✔
31
  type ClearinghouseStateEvent,
32
  type ClearinghouseStateParameters,
33
} from "./_methods/clearinghouseState.ts";
364✔
34
import { explorerBlock, type ExplorerBlockEvent } from "./_methods/explorerBlock.ts";
364✔
35
import { explorerTxs, type ExplorerTxsEvent } from "./_methods/explorerTxs.ts";
364✔
36
import { l2Book, type L2BookEvent, type L2BookParameters } from "./_methods/l2Book.ts";
364✔
37
import { notification, type NotificationEvent, type NotificationParameters } from "./_methods/notification.ts";
364✔
38
import { openOrders, type OpenOrdersEvent, type OpenOrdersParameters } from "./_methods/openOrders.ts";
364✔
39
import { orderUpdates, type OrderUpdatesEvent, type OrderUpdatesParameters } from "./_methods/orderUpdates.ts";
364✔
40
import { spotAssetCtxs, type SpotAssetCtxsEvent } from "./_methods/spotAssetCtxs.ts";
364✔
41
import { spotState, type SpotStateEvent, type SpotStateParameters } from "./_methods/spotState.ts";
364✔
42
import { trades, type TradesEvent, type TradesParameters } from "./_methods/trades.ts";
364✔
43
import { twapStates, type TwapStatesEvent, type TwapStatesParameters } from "./_methods/twapStates.ts";
364✔
44
import { userEvents, type UserEventsEvent, type UserEventsParameters } from "./_methods/userEvents.ts";
364✔
45
import { userFills, type UserFillsEvent, type UserFillsParameters } from "./_methods/userFills.ts";
364✔
46
import { userFundings, type UserFundingsEvent, type UserFundingsParameters } from "./_methods/userFundings.ts";
364✔
47
import {
364✔
48
  userHistoricalOrders,
364✔
49
  type UserHistoricalOrdersEvent,
50
  type UserHistoricalOrdersParameters,
51
} from "./_methods/userHistoricalOrders.ts";
364✔
52
import {
364✔
53
  userNonFundingLedgerUpdates,
364✔
54
  type UserNonFundingLedgerUpdatesEvent,
55
  type UserNonFundingLedgerUpdatesParameters,
56
} from "./_methods/userNonFundingLedgerUpdates.ts";
364✔
57
import {
364✔
58
  userTwapHistory,
364✔
59
  type UserTwapHistoryEvent,
60
  type UserTwapHistoryParameters,
61
} from "./_methods/userTwapHistory.ts";
364✔
62
import {
364✔
63
  userTwapSliceFills,
364✔
64
  type UserTwapSliceFillsEvent,
65
  type UserTwapSliceFillsParameters,
66
} from "./_methods/userTwapSliceFills.ts";
364✔
67
import { webData2, type WebData2Event, type WebData2Parameters } from "./_methods/webData2.ts";
364✔
68
import { webData3, type WebData3Event, type WebData3Parameters } from "./_methods/webData3.ts";
364✔
69

70
// =============================================================
71
// Client
72
// =============================================================
73

74
/**
75
 * Real-time data via WebSocket subscriptions.
76
 *
77
 * Corresponds to {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/subscriptions | WebSocket subscriptions}.
78
 */
79
export class SubscriptionClient<C extends SubscriptionConfig = SubscriptionConfig> {
364✔
80
  config_: C;
364✔
81

82
  /**
83
   * Creates an instance of the SubscriptionClient.
84
   *
85
   * @param config - Configuration for Subscription API requests. See {@link SubscriptionConfig}.
86
   *
87
   * @example
88
   * ```ts
89
   * import * as hl from "@nktkas/hyperliquid";
90
   *
91
   * const transport = new hl.WebSocketTransport(); // only `WebSocketTransport`
92
   *
93
   * const subsClient = new hl.SubscriptionClient({ transport });
94
   * ```
95
   */
96
  constructor(config: C) {
364✔
97
    this.config_ = config;
393✔
98
  }
393✔
99

100
  /** @see {@link activeAssetCtx} */
101
  activeAssetCtx(
364✔
102
    params: ActiveAssetCtxParameters,
364✔
103
    listener: (data: ActiveAssetCtxEvent) => void,
364✔
104
  ): Promise<ISubscription> {
364✔
105
    return activeAssetCtx(this.config_, params, listener);
366✔
106
  }
366✔
107

108
  /** @see {@link activeAssetData} */
109
  activeAssetData(
364✔
110
    params: ActiveAssetDataParameters,
364✔
111
    listener: (data: ActiveAssetDataEvent) => void,
364✔
112
  ): Promise<ISubscription> {
364✔
113
    return activeAssetData(this.config_, params, listener);
366✔
114
  }
366✔
115

116
  /** @see {@link activeSpotAssetCtx} */
117
  activeSpotAssetCtx(
364✔
118
    params: ActiveSpotAssetCtxParameters,
364✔
119
    listener: (data: ActiveSpotAssetCtxEvent) => void,
364✔
120
  ): Promise<ISubscription> {
364✔
121
    return activeSpotAssetCtx(this.config_, params, listener);
366✔
122
  }
366✔
123

124
  /** @see {@link allDexsAssetCtxs} */
125
  allDexsAssetCtxs(
364✔
126
    listener: (data: AllDexsAssetCtxsEvent) => void,
364✔
127
  ): Promise<ISubscription> {
364✔
128
    return allDexsAssetCtxs(this.config_, listener);
365✔
129
  }
365✔
130

131
  /** @see {@link allDexsClearinghouseState} */
132
  allDexsClearinghouseState(
364✔
133
    params: AllDexsClearinghouseStateParameters,
364✔
134
    listener: (data: AllDexsClearinghouseStateEvent) => void,
364✔
135
  ): Promise<ISubscription> {
364✔
136
    return allDexsClearinghouseState(this.config_, params, listener);
365✔
137
  }
365✔
138

139
  /** @see {@link allMids} */
140
  allMids(
141
    listener: (data: AllMidsEvent) => void,
142
  ): Promise<ISubscription>;
143
  allMids(
144
    params: AllMidsParameters,
145
    listener: (data: AllMidsEvent) => void,
146
  ): Promise<ISubscription>;
147
  allMids(
364✔
148
    paramsOrListener: AllMidsParameters | ((data: AllMidsEvent) => void),
364✔
149
    maybeListener?: (data: AllMidsEvent) => void,
364✔
150
  ): Promise<ISubscription> {
364✔
151
    const params = typeof paramsOrListener === "function" ? {} : paramsOrListener;
366✔
152
    const listener = typeof paramsOrListener === "function" ? paramsOrListener : maybeListener!;
366✔
153
    return allMids(this.config_, params, listener);
366✔
154
  }
366✔
155

156
  /** @see {@link assetCtxs} */
157
  assetCtxs(
158
    listener: (data: AssetCtxsEvent) => void,
159
  ): Promise<ISubscription>;
160
  assetCtxs(
161
    params: AssetCtxsParameters,
162
    listener: (data: AssetCtxsEvent) => void,
163
  ): Promise<ISubscription>;
164
  assetCtxs(
364✔
165
    paramsOrListener: AssetCtxsParameters | ((data: AssetCtxsEvent) => void),
364✔
166
    maybeListener?: (data: AssetCtxsEvent) => void,
364✔
167
  ): Promise<ISubscription> {
364✔
UNCOV
168
    const params = typeof paramsOrListener === "function" ? {} : paramsOrListener;
×
UNCOV
169
    const listener = typeof paramsOrListener === "function" ? paramsOrListener : maybeListener!;
×
170
    return assetCtxs(this.config_, params, listener);
365✔
171
  }
365✔
172

173
  /** @see {@link bbo} */
174
  bbo(
364✔
175
    params: BboParameters,
364✔
176
    listener: (data: BboEvent) => void,
364✔
177
  ): Promise<ISubscription> {
364✔
178
    return bbo(this.config_, params, listener);
367✔
179
  }
367✔
180

181
  /** @see {@link candle} */
182
  candle(
364✔
183
    params: CandleParameters,
364✔
184
    listener: (data: CandleEvent) => void,
364✔
185
  ): Promise<ISubscription> {
364✔
186
    return candle(this.config_, params, listener);
367✔
187
  }
367✔
188

189
  /** @see {@link clearinghouseState} */
190
  clearinghouseState(
364✔
191
    params: ClearinghouseStateParameters,
364✔
192
    listener: (data: ClearinghouseStateEvent) => void,
364✔
193
  ): Promise<ISubscription> {
364✔
194
    return clearinghouseState(this.config_, params, listener);
365✔
195
  }
365✔
196

197
  /** @see {@link explorerBlock} */
198
  explorerBlock(
364✔
199
    listener: (data: ExplorerBlockEvent) => void,
364✔
200
  ): Promise<ISubscription> {
364✔
201
    return explorerBlock(this.config_, listener);
365✔
202
  }
365✔
203

204
  /** @see {@link explorerTxs} */
205
  explorerTxs(
364✔
206
    listener: (data: ExplorerTxsEvent) => void,
364✔
207
  ): Promise<ISubscription> {
364✔
208
    return explorerTxs(this.config_, listener);
365✔
209
  }
365✔
210

211
  /** @see {@link l2Book} */
212
  l2Book(
364✔
213
    params: L2BookParameters,
364✔
214
    listener: (data: L2BookEvent) => void,
364✔
215
  ): Promise<ISubscription> {
364✔
216
    return l2Book(this.config_, params, listener);
365✔
217
  }
365✔
218

219
  /** @see {@link notification} */
220
  notification(
364✔
221
    params: NotificationParameters,
364✔
222
    listener: (data: NotificationEvent) => void,
364✔
223
  ): Promise<ISubscription> {
364✔
224
    return notification(this.config_, params, listener);
365✔
225
  }
365✔
226

227
  /** @see {@link openOrders} */
228
  openOrders(
364✔
229
    params: OpenOrdersParameters,
364✔
230
    listener: (data: OpenOrdersEvent) => void,
364✔
231
  ): Promise<ISubscription> {
364✔
232
    return openOrders(this.config_, params, listener);
365✔
233
  }
365✔
234

235
  /** @see {@link orderUpdates} */
236
  orderUpdates(
364✔
237
    params: OrderUpdatesParameters,
364✔
238
    listener: (data: OrderUpdatesEvent) => void,
364✔
239
  ): Promise<ISubscription> {
364✔
240
    return orderUpdates(this.config_, params, listener);
365✔
241
  }
365✔
242

243
  /** @see {@link spotAssetCtxs} */
244
  spotAssetCtxs(
364✔
245
    listener: (data: SpotAssetCtxsEvent) => void,
364✔
246
  ): Promise<ISubscription> {
364✔
247
    return spotAssetCtxs(this.config_, listener);
365✔
248
  }
365✔
249

250
  /** @see {@link spotState} */
251
  spotState(
364✔
252
    params: SpotStateParameters,
364✔
253
    listener: (data: SpotStateEvent) => void,
364✔
254
  ): Promise<ISubscription> {
364✔
255
    return spotState(this.config_, params, listener);
368✔
256
  }
368✔
257

258
  /** @see {@link trades} */
259
  trades(
364✔
260
    params: TradesParameters,
364✔
261
    listener: (data: TradesEvent) => void,
364✔
262
  ): Promise<ISubscription> {
364✔
263
    return trades(this.config_, params, listener);
365✔
264
  }
365✔
265

266
  /** @see {@link twapStates} */
267
  twapStates(
364✔
268
    params: TwapStatesParameters,
364✔
269
    listener: (data: TwapStatesEvent) => void,
364✔
270
  ): Promise<ISubscription> {
364✔
271
    return twapStates(this.config_, params, listener);
365✔
272
  }
365✔
273

274
  /** @see {@link userEvents} */
275
  userEvents(
364✔
276
    params: UserEventsParameters,
364✔
277
    listener: (data: UserEventsEvent) => void,
364✔
278
  ): Promise<ISubscription> {
364✔
279
    return userEvents(this.config_, params, listener);
365✔
280
  }
365✔
281

282
  /** @see {@link userFills} */
283
  userFills(
364✔
284
    params: UserFillsParameters,
364✔
285
    listener: (data: UserFillsEvent) => void,
364✔
286
  ): Promise<ISubscription> {
364✔
287
    return userFills(this.config_, params, listener);
366✔
288
  }
366✔
289

290
  /** @see {@link userFundings} */
291
  userFundings(
364✔
292
    params: UserFundingsParameters,
364✔
293
    listener: (data: UserFundingsEvent) => void,
364✔
294
  ): Promise<ISubscription> {
364✔
295
    return userFundings(this.config_, params, listener);
365✔
296
  }
365✔
297

298
  /** @see {@link userHistoricalOrders} */
299
  userHistoricalOrders(
364✔
300
    params: UserHistoricalOrdersParameters,
364✔
301
    listener: (data: UserHistoricalOrdersEvent) => void,
364✔
302
  ): Promise<ISubscription> {
364✔
303
    return userHistoricalOrders(this.config_, params, listener);
366✔
304
  }
366✔
305

306
  /** @see {@link userNonFundingLedgerUpdates} */
307
  userNonFundingLedgerUpdates(
364✔
308
    params: UserNonFundingLedgerUpdatesParameters,
364✔
309
    listener: (data: UserNonFundingLedgerUpdatesEvent) => void,
364✔
310
  ): Promise<ISubscription> {
364✔
311
    return userNonFundingLedgerUpdates(this.config_, params, listener);
366✔
312
  }
366✔
313

314
  /** @see {@link userTwapHistory} */
315
  userTwapHistory(
364✔
316
    params: UserTwapHistoryParameters,
364✔
317
    listener: (data: UserTwapHistoryEvent) => void,
364✔
318
  ): Promise<ISubscription> {
364✔
319
    return userTwapHistory(this.config_, params, listener);
366✔
320
  }
366✔
321

322
  /** @see {@link userTwapSliceFills} */
323
  userTwapSliceFills(
364✔
324
    params: UserTwapSliceFillsParameters,
364✔
325
    listener: (data: UserTwapSliceFillsEvent) => void,
364✔
326
  ): Promise<ISubscription> {
364✔
327
    return userTwapSliceFills(this.config_, params, listener);
366✔
328
  }
366✔
329

330
  /** @see {@link webData2} */
331
  webData2(
364✔
332
    params: WebData2Parameters,
364✔
333
    listener: (data: WebData2Event) => void,
364✔
334
  ): Promise<ISubscription> {
364✔
335
    return webData2(this.config_, params, listener);
368✔
336
  }
368✔
337

338
  /** @see {@link webData3} */
339
  webData3(
364✔
340
    params: WebData3Parameters,
364✔
341
    listener: (data: WebData3Event) => void,
364✔
342
  ): Promise<ISubscription> {
364✔
343
    return webData3(this.config_, params, listener);
367✔
344
  }
367✔
345
}
364✔
346

347
// =============================================================
348
// Type Re-exports
349
// =============================================================
350

351
export type { SubscriptionConfig } from "./_methods/_types.ts";
352

353
export type {
354
  ActiveAssetCtxEvent as ActiveAssetCtxWsEvent,
355
  ActiveAssetCtxParameters as ActiveAssetCtxWsParameters,
356
} from "./_methods/activeAssetCtx.ts";
357
export type {
358
  ActiveAssetDataEvent as ActiveAssetDataWsEvent,
359
  ActiveAssetDataParameters as ActiveAssetDataWsParameters,
360
} from "./_methods/activeAssetData.ts";
361
export type {
362
  ActiveSpotAssetCtxEvent as ActiveSpotAssetCtxWsEvent,
363
  ActiveSpotAssetCtxParameters as ActiveSpotAssetCtxWsParameters,
364
} from "./_methods/activeSpotAssetCtx.ts";
365
export type { AllDexsAssetCtxsEvent as AllDexsAssetCtxsWsEvent } from "./_methods/allDexsAssetCtxs.ts";
366
export type {
367
  AllDexsClearinghouseStateEvent as AllDexsClearinghouseStateWsEvent,
368
  AllDexsClearinghouseStateParameters as AllDexsClearinghouseStateWsParameters,
369
} from "./_methods/allDexsClearinghouseState.ts";
370
export type { AllMidsEvent as AllMidsWsEvent, AllMidsParameters as AllMidsWsParameters } from "./_methods/allMids.ts";
371
export type {
372
  AssetCtxsEvent as AssetCtxsWsEvent,
373
  AssetCtxsParameters as AssetCtxsWsParameters,
374
} from "./_methods/assetCtxs.ts";
375
export type { BboEvent as BboWsEvent, BboParameters as BboWsParameters } from "./_methods/bbo.ts";
376
export type { CandleEvent as CandleWsEvent, CandleParameters as CandleWsParameters } from "./_methods/candle.ts";
377
export type {
378
  ClearinghouseStateEvent as ClearinghouseStateWsEvent,
379
  ClearinghouseStateParameters as ClearinghouseStateWsParameters,
380
} from "./_methods/clearinghouseState.ts";
381
export type { ExplorerBlockEvent as ExplorerBlockWsEvent } from "./_methods/explorerBlock.ts";
382
export type { ExplorerTxsEvent as ExplorerTxsWsEvent } from "./_methods/explorerTxs.ts";
383
export type { L2BookEvent as L2BookWsEvent, L2BookParameters as L2BookWsParameters } from "./_methods/l2Book.ts";
384
export type {
385
  NotificationEvent as NotificationWsEvent,
386
  NotificationParameters as NotificationWsParameters,
387
} from "./_methods/notification.ts";
388
export type {
389
  OpenOrdersEvent as OpenOrdersWsEvent,
390
  OpenOrdersParameters as OpenOrdersWsParameters,
391
} from "./_methods/openOrders.ts";
392
export type {
393
  OrderUpdatesEvent as OrderUpdatesWsEvent,
394
  OrderUpdatesParameters as OrderUpdatesWsParameters,
395
} from "./_methods/orderUpdates.ts";
396
export type { SpotAssetCtxsEvent as SpotAssetCtxsWsEvent } from "./_methods/spotAssetCtxs.ts";
397
export type {
398
  SpotStateEvent as SpotStateWsEvent,
399
  SpotStateParameters as SpotStateWsParameters,
400
} from "./_methods/spotState.ts";
401
export type { TradesEvent as TradesWsEvent, TradesParameters as TradesWsParameters } from "./_methods/trades.ts";
402
export type {
403
  TwapStatesEvent as TwapStatesWsEvent,
404
  TwapStatesParameters as TwapStatesWsParameters,
405
} from "./_methods/twapStates.ts";
406
export type {
407
  UserEventsEvent as UserEventsWsEvent,
408
  UserEventsParameters as UserEventsWsParameters,
409
} from "./_methods/userEvents.ts";
410
export type {
411
  UserFillsEvent as UserFillsWsEvent,
412
  UserFillsParameters as UserFillsWsParameters,
413
} from "./_methods/userFills.ts";
414
export type {
415
  UserFundingsEvent as UserFundingsWsEvent,
416
  UserFundingsParameters as UserFundingsWsParameters,
417
} from "./_methods/userFundings.ts";
418
export type {
419
  UserHistoricalOrdersEvent as UserHistoricalOrdersWsEvent,
420
  UserHistoricalOrdersParameters as UserHistoricalOrdersWsParameters,
421
} from "./_methods/userHistoricalOrders.ts";
422
export type {
423
  UserNonFundingLedgerUpdatesEvent as UserNonFundingLedgerUpdatesWsEvent,
424
  UserNonFundingLedgerUpdatesParameters as UserNonFundingLedgerUpdatesWsParameters,
425
} from "./_methods/userNonFundingLedgerUpdates.ts";
426
export type {
427
  UserTwapHistoryEvent as UserTwapHistoryWsEvent,
428
  UserTwapHistoryParameters as UserTwapHistoryWsParameters,
429
} from "./_methods/userTwapHistory.ts";
430
export type {
431
  UserTwapSliceFillsEvent as UserTwapSliceFillsWsEvent,
432
  UserTwapSliceFillsParameters as UserTwapSliceFillsWsParameters,
433
} from "./_methods/userTwapSliceFills.ts";
434
export type {
435
  WebData2Event as WebData2WsEvent,
436
  WebData2Parameters as WebData2WsParameters,
437
} from "./_methods/webData2.ts";
438
export type {
439
  WebData3Event as WebData3WsEvent,
440
  WebData3Parameters as WebData3WsParameters,
441
} from "./_methods/webData3.ts";
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc