@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.
- package/dist/cjs/types/ws.d.ts +33 -0
- package/dist/cjs/types/ws.d.ts.map +1 -1
- package/dist/cjs/utils/decodeFastAssetCtxs.d.ts +1 -0
- package/dist/cjs/utils/decodeFastAssetCtxs.d.ts.map +1 -1
- package/dist/cjs/utils/decodeFastAssetCtxs.js +5 -1
- package/dist/cjs/utils/decodeFastAssetCtxs.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +1 -1
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +2 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +13 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.js +206 -22
- package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/esm/types/ws.d.ts +37 -0
- package/dist/esm/types/ws.d.ts.map +1 -1
- package/dist/esm/utils/decodeFastAssetCtxs.d.ts +1 -0
- package/dist/esm/utils/decodeFastAssetCtxs.d.ts.map +1 -1
- package/dist/esm/utils/decodeFastAssetCtxs.js +9 -6
- package/dist/esm/utils/decodeFastAssetCtxs.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -1
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts +13 -0
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/esm/websocket/HyperliquidWsProvider.js +208 -27
- package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/types/types/ws.d.ts +37 -0
- package/dist/types/types/ws.d.ts.map +1 -1
- package/dist/types/utils/decodeFastAssetCtxs.d.ts +1 -0
- package/dist/types/utils/decodeFastAssetCtxs.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/websocket/HyperliquidWsProvider.d.ts +13 -0
- package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/types/ws.ts +35 -0
- package/src/utils/decodeFastAssetCtxs.ts +10 -6
- package/src/utils/index.ts +4 -1
- package/src/websocket/HyperliquidWsProvider.ts +271 -29
package/dist/types/types/ws.d.ts
CHANGED
|
@@ -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":"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"}
|
|
@@ -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,
|
|
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,
|
|
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,
|
|
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.
|
|
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.
|
|
51
|
+
"@lifi/perps-types": "^1.2.0"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@lifi/perps-sdk": "^1.
|
|
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
|
-
|
|
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
|
}
|
package/src/utils/index.ts
CHANGED
|
@@ -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 {
|
|
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 {
|