@lifi/perps-sdk-provider-hyperliquid 1.1.0 → 1.2.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 (41) hide show
  1. package/dist/cjs/types/ws.d.ts +33 -0
  2. package/dist/cjs/types/ws.d.ts.map +1 -1
  3. package/dist/cjs/utils/decodeFastAssetCtxs.d.ts +1 -0
  4. package/dist/cjs/utils/decodeFastAssetCtxs.d.ts.map +1 -1
  5. package/dist/cjs/utils/decodeFastAssetCtxs.js +5 -1
  6. package/dist/cjs/utils/decodeFastAssetCtxs.js.map +1 -1
  7. package/dist/cjs/utils/index.d.ts +1 -1
  8. package/dist/cjs/utils/index.d.ts.map +1 -1
  9. package/dist/cjs/utils/index.js +2 -1
  10. package/dist/cjs/utils/index.js.map +1 -1
  11. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +13 -0
  12. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  13. package/dist/cjs/websocket/HyperliquidWsProvider.js +206 -22
  14. package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
  15. package/dist/esm/types/ws.d.ts +37 -0
  16. package/dist/esm/types/ws.d.ts.map +1 -1
  17. package/dist/esm/utils/decodeFastAssetCtxs.d.ts +1 -0
  18. package/dist/esm/utils/decodeFastAssetCtxs.d.ts.map +1 -1
  19. package/dist/esm/utils/decodeFastAssetCtxs.js +9 -6
  20. package/dist/esm/utils/decodeFastAssetCtxs.js.map +1 -1
  21. package/dist/esm/utils/index.d.ts +1 -1
  22. package/dist/esm/utils/index.d.ts.map +1 -1
  23. package/dist/esm/utils/index.js +1 -1
  24. package/dist/esm/utils/index.js.map +1 -1
  25. package/dist/esm/websocket/HyperliquidWsProvider.d.ts +13 -0
  26. package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  27. package/dist/esm/websocket/HyperliquidWsProvider.js +208 -27
  28. package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
  29. package/dist/types/types/ws.d.ts +37 -0
  30. package/dist/types/types/ws.d.ts.map +1 -1
  31. package/dist/types/utils/decodeFastAssetCtxs.d.ts +1 -0
  32. package/dist/types/utils/decodeFastAssetCtxs.d.ts.map +1 -1
  33. package/dist/types/utils/index.d.ts +1 -1
  34. package/dist/types/utils/index.d.ts.map +1 -1
  35. package/dist/types/websocket/HyperliquidWsProvider.d.ts +13 -0
  36. package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  37. package/package.json +3 -3
  38. package/src/types/ws.ts +35 -0
  39. package/src/utils/decodeFastAssetCtxs.ts +10 -6
  40. package/src/utils/index.ts +4 -1
  41. package/src/websocket/HyperliquidWsProvider.ts +271 -29
@@ -45,6 +45,33 @@ export type HlWsL2BookData = HlL2Book & {
45
45
  coin: string;
46
46
  };
47
47
  /** @public */
48
+ export type HlWsL2Data = {
49
+ s?: HlL2Book & {
50
+ coin: string;
51
+ };
52
+ c?: string;
53
+ u?: HlWsCompressedL2Data;
54
+ };
55
+ /** @public */
56
+ export type HlWsCompressedL2Level = {
57
+ p: string;
58
+ s: string;
59
+ };
60
+ /** @public */
61
+ export type HlWsCompressedL2Data = {
62
+ c: string;
63
+ t: number;
64
+ l: [HlWsCompressedL2Level[], HlWsCompressedL2Level[]];
65
+ r?: [
66
+ Array<number | string | {
67
+ p: string;
68
+ }>,
69
+ Array<number | string | {
70
+ p: string;
71
+ }>
72
+ ];
73
+ };
74
+ /** @public */
48
75
  export type HlWsCandleData = HlCandle & {
49
76
  T: number;
50
77
  s: string;
@@ -52,6 +79,16 @@ export type HlWsCandleData = HlCandle & {
52
79
  n: number;
53
80
  };
54
81
  /** @public */
82
+ export type HlWsTrade = {
83
+ coin: string;
84
+ side: string;
85
+ px: string;
86
+ sz: string;
87
+ time: number;
88
+ tid?: number;
89
+ hash?: string;
90
+ };
91
+ /** @public */
55
92
  export type HlWsUserFillsData = {
56
93
  isSnapshot: boolean;
57
94
  user: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAA;CAC1C,CAAA;AAED,cAAc;AACd,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,cAAc;AACd,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAExD,cAAc;AACd,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IACtC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,cAAc;AACd,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAA;AAED,cAAc;AACd,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAA;CAC9E,CAAA;AAED,cAAc;AACd,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE,CAAA;CACzC,CAAA"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAA;CAC1C,CAAA;AAED,cAAc;AACd,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,cAAc;AACd,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAExD,cAAc;AACd,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,CAAC,EAAE,QAAQ,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/B,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,CAAC,EAAE,oBAAoB,CAAA;CACzB,CAAA;AAED,cAAc;AACd,MAAM,MAAM,qBAAqB,GAAG;IAClC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,cAAc;AACd,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,CAAC,qBAAqB,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAA;IACrD,CAAC,CAAC,EAAE;QACF,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG;YAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACtC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG;YAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACvC,CAAA;CACF,CAAA;AAED,cAAc;AACd,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IACtC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,cAAc;AACd,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,cAAc;AACd,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAA;AAED,cAAc;AACd,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAA;CAC9E,CAAA;AAED,cAAc;AACd,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE,CAAA;CACzC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import type { HlWsFastAssetCtx } from '../types/index.js';
2
+ export declare function decodeCompressedJson<T>(base64: string): Promise<T>;
2
3
  /**
3
4
  * Decode a Hyperliquid `fastAssetCtxs` frame. HL sends the payload as a
4
5
  * base64-encoded, raw-DEFLATE-compressed (RFC 1951 — no zlib/gzip wrapper) JSON
@@ -1 +1 @@
1
- {"version":3,"file":"decodeFastAssetCtxs.d.ts","sourceRoot":"","sources":["../../../src/utils/decodeFastAssetCtxs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAO3C"}
1
+ {"version":3,"file":"decodeFastAssetCtxs.d.ts","sourceRoot":"","sources":["../../../src/utils/decodeFastAssetCtxs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,wBAAsB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAOxE;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAE3C"}
@@ -1,5 +1,5 @@
1
1
  export { assetIsSpot, calculateAssetId, getProviderIndex } from './assetId.js';
2
- export { decodeFastAssetCtxs } from './decodeFastAssetCtxs.js';
2
+ export { decodeCompressedJson, decodeFastAssetCtxs, } from './decodeFastAssetCtxs.js';
3
3
  export type { InfoRequestOptions } from './infoClient.js';
4
4
  export { hlInfoOptions, infoRequest } from './infoClient.js';
5
5
  export { calculateLiquidationPrice, calculateMaintenanceMarginRate, } from './liquidation.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAA"}
@@ -29,8 +29,11 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
29
29
  private readonly client;
30
30
  private readonly registry;
31
31
  private perpCtxBySubDex;
32
+ private orderbookKeysByMarketId;
33
+ private latestOrderbookByMarketId;
32
34
  private fastCtxByMarketId;
33
35
  private fastDecodeChain;
36
+ private orderbookDecodeChain;
34
37
  constructor(wsUrl: string, providerKey: string, client?: PerpsSDKClient);
35
38
  subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
36
39
  protected openChannel(sub: Subscription): Promise<() => void>;
@@ -41,15 +44,20 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
41
44
  * so a wallet switch needn't wait out the teardown linger; a live one throws.
42
45
  */
43
46
  private claimOrderUpdatesKey;
47
+ private claimOrderbookKey;
44
48
  /**
45
49
  * Sub-key + payload pairs for the markets-context aggregation: the all-dexs
46
50
  * perp asset-context feed (oracle/funding/OI/metadata) plus the compressed
47
51
  * `fastAssetCtxs` feed (high-frequency mid + mark across every dex).
48
52
  */
49
53
  private getMarketsContextSubEntries;
54
+ private registerOrderbook;
55
+ private releaseOrderbook;
50
56
  protected onClose(): void;
51
57
  protected sendSubscribe(payload: object): void;
52
58
  protected toKey(sub: Subscription): string;
59
+ private orderbookAggregation;
60
+ private orderbookAggregationKey;
53
61
  private toHlPayload;
54
62
  protected handleMessage(raw: string): void;
55
63
  private handleAllDexsAssetCtxs;
@@ -70,8 +78,13 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
70
78
  private emitMarketsContext;
71
79
  /** Latest mid per `Market.id` across the perp ctx feed and `fastAssetCtxs`. */
72
80
  private mergedMids;
81
+ private orderbookReferencePrice;
73
82
  private handleL2Book;
83
+ private handleL2;
84
+ private handleCompactL2Delta;
85
+ private emitOrderbook;
74
86
  private handleCandle;
87
+ private handleTrades;
75
88
  private handleOrderUpdates;
76
89
  private handleUserFills;
77
90
  private handleAllDexsClearinghouseState;
@@ -1 +1 @@
1
- {"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAGlB,cAAc,EACd,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAKL,KAAK,YAAY,EAElB,MAAM,mBAAmB,CAAA;AAkC1B;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,QAC5B,iBAEgD,CAAA;AAEtD;;;;;;;;;;;;;GAaG;AACH,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAC/D,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,eAAe,CAAsD;IAK7E,OAAO,CAAC,iBAAiB,CAAuC;IAGhE,OAAO,CAAC,eAAe,CAAmC;gBAE9C,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;IASjE,cAAc,CAClB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;cAkBN,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IAmDnE;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;cAUhB,OAAO,IAAI,IAAI;IAMlC,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM9C,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAmB1C,OAAO,CAAC,WAAW;IAqCnB,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM;IA4DnC,OAAO,CAAC,sBAAsB;IAW9B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,+EAA+E;IAC/E,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,kBAAkB;IA0D1B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,+BAA+B;IAkBvC,OAAO,CAAC,eAAe;CAaxB"}
1
+ {"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAGlB,cAAc,EACd,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAOL,KAAK,YAAY,EAElB,MAAM,mBAAmB,CAAA;AAsC1B;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,QAC5B,iBAEgD,CAAA;AAEtD;;;;;;;;;;;;;GAaG;AACH,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAC/D,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,eAAe,CAAsD;IAC7E,OAAO,CAAC,uBAAuB,CAAiC;IAChE,OAAO,CAAC,yBAAyB,CAAuC;IAKxE,OAAO,CAAC,iBAAiB,CAAuC;IAGhE,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,oBAAoB,CAAmC;gBAEnD,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;IASjE,cAAc,CAClB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,IAAI,CAAC;cAkBN,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC;IA+DnE;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,iBAAiB;IAmBzB;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;cAcL,OAAO,IAAI,IAAI;IAQlC,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM9C,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM;IAwB1C,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,uBAAuB;IAa/B,OAAO,CAAC,WAAW;IAwCnB,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM;IAkEnC,OAAO,CAAC,sBAAsB;IAW9B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IA4B1B,+EAA+E;IAC/E,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,oBAAoB;IA2B5B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,kBAAkB;IA0D1B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,+BAA+B;IAkBvC,OAAO,CAAC,eAAe;CAaxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-hyperliquid",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Hyperliquid provider plugin for @lifi/perps-sdk",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -48,10 +48,10 @@
48
48
  "dependencies": {
49
49
  "big.js": "^7.0.1",
50
50
  "viem": "^2.48.8",
51
- "@lifi/perps-types": "^1.1.0"
51
+ "@lifi/perps-types": "^1.2.0"
52
52
  },
53
53
  "peerDependencies": {
54
- "@lifi/perps-sdk": "^1.1.0"
54
+ "@lifi/perps-sdk": "^1.2.0"
55
55
  },
56
56
  "publishConfig": {
57
57
  "access": "public"
package/src/types/ws.ts CHANGED
@@ -50,6 +50,30 @@ export type HlWsFastAssetCtx = {
50
50
  /** @public */
51
51
  export type HlWsL2BookData = HlL2Book & { coin: string }
52
52
 
53
+ /** @public */
54
+ export type HlWsL2Data = {
55
+ s?: HlL2Book & { coin: string }
56
+ c?: string
57
+ u?: HlWsCompressedL2Data
58
+ }
59
+
60
+ /** @public */
61
+ export type HlWsCompressedL2Level = {
62
+ p: string
63
+ s: string
64
+ }
65
+
66
+ /** @public */
67
+ export type HlWsCompressedL2Data = {
68
+ c: string
69
+ t: number
70
+ l: [HlWsCompressedL2Level[], HlWsCompressedL2Level[]]
71
+ r?: [
72
+ Array<number | string | { p: string }>,
73
+ Array<number | string | { p: string }>,
74
+ ]
75
+ }
76
+
53
77
  /** @public */
54
78
  export type HlWsCandleData = HlCandle & {
55
79
  T: number
@@ -58,6 +82,17 @@ export type HlWsCandleData = HlCandle & {
58
82
  n: number
59
83
  }
60
84
 
85
+ /** @public */
86
+ export type HlWsTrade = {
87
+ coin: string
88
+ side: string
89
+ px: string
90
+ sz: string
91
+ time: number
92
+ tid?: number
93
+ hash?: string
94
+ }
95
+
61
96
  /** @public */
62
97
  export type HlWsUserFillsData = {
63
98
  isSnapshot: boolean
@@ -1,5 +1,14 @@
1
1
  import type { HlWsFastAssetCtx } from '../types/index.js'
2
2
 
3
+ export async function decodeCompressedJson<T>(base64: string): Promise<T> {
4
+ const bytes = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0))
5
+ const stream = new Blob([bytes])
6
+ .stream()
7
+ .pipeThrough(new DecompressionStream('deflate-raw'))
8
+ const text = await new Response(stream).text()
9
+ return JSON.parse(text) as T
10
+ }
11
+
3
12
  /**
4
13
  * Decode a Hyperliquid `fastAssetCtxs` frame. HL sends the payload as a
5
14
  * base64-encoded, raw-DEFLATE-compressed (RFC 1951 — no zlib/gzip wrapper) JSON
@@ -11,10 +20,5 @@ import type { HlWsFastAssetCtx } from '../types/index.js'
11
20
  export async function decodeFastAssetCtxs(
12
21
  base64: string
13
22
  ): Promise<Record<string, HlWsFastAssetCtx>> {
14
- const bytes = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0))
15
- const stream = new Blob([bytes])
16
- .stream()
17
- .pipeThrough(new DecompressionStream('deflate-raw'))
18
- const text = await new Response(stream).text()
19
- return JSON.parse(text)
23
+ return decodeCompressedJson<Record<string, HlWsFastAssetCtx>>(base64)
20
24
  }
@@ -3,7 +3,10 @@
3
3
  // (e.g. `./assetId.js`, `./mapFill.js`) directly.
4
4
 
5
5
  export { assetIsSpot, calculateAssetId, getProviderIndex } from './assetId.js'
6
- export { decodeFastAssetCtxs } from './decodeFastAssetCtxs.js'
6
+ export {
7
+ decodeCompressedJson,
8
+ decodeFastAssetCtxs,
9
+ } from './decodeFastAssetCtxs.js'
7
10
  export type { InfoRequestOptions } from './infoClient.js'
8
11
  export { hlInfoOptions, infoRequest } from './infoClient.js'
9
12
  export {