@lifi/perps-sdk-provider-hyperliquid 1.1.0 → 1.3.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 +48 -1
- 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 +20 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.js +359 -29
- package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/esm/types/ws.d.ts +65 -1
- 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 +25 -8
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/esm/websocket/HyperliquidWsProvider.js +368 -48
- package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/types/types/ws.d.ts +65 -1
- 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 +25 -8
- package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/types/ws.ts +67 -1
- package/src/utils/decodeFastAssetCtxs.ts +10 -6
- package/src/utils/index.ts +4 -1
- package/src/websocket/HyperliquidWsProvider.ts +464 -50
package/dist/esm/types/ws.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { HlClearinghouseState, HlSpotBalance } from './account.js';
|
|
2
2
|
import type { HlCandle, HlL2Book } from './asset.js';
|
|
3
3
|
import type { HlUserFill } from './fill.js';
|
|
4
|
+
type HlWsNumberString = string | number;
|
|
4
5
|
/**
|
|
5
6
|
* Perp asset context as carried on the `allDexsAssetCtxs` WS feed. Extends the
|
|
6
7
|
* REST `/info` `HlAssetCtx` shape with the wire-only `coin` tag, the order-book
|
|
@@ -17,14 +18,24 @@ export type HlWsPerpAssetCtx = {
|
|
|
17
18
|
midPx: string | null;
|
|
18
19
|
oraclePx: string;
|
|
19
20
|
};
|
|
21
|
+
/** @public */
|
|
22
|
+
export type HlWsPerpAssetCtxPayload = Partial<HlWsPerpAssetCtx>;
|
|
20
23
|
/**
|
|
21
24
|
* `allDexsAssetCtxs` carries one `[dex, ctxs]` pair per perp sub-DEX, mirroring
|
|
22
25
|
* `allDexsClearinghouseState`. Spot contexts arrive separately.
|
|
23
26
|
* @public
|
|
24
27
|
*/
|
|
25
28
|
export type HlWsAllDexsAssetCtxsData = {
|
|
26
|
-
assetCtxs
|
|
29
|
+
assetCtxs?: [string, HlWsPerpAssetCtx[]][];
|
|
30
|
+
ctxs?: [string, HlWsPerpAssetCtxPayload[]][];
|
|
27
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Compressed perp asset-context feed. Snapshot/update frames carry one
|
|
34
|
+
* `[dex, ctxs]` pair per perp sub-DEX. Updates can omit unchanged fields inside
|
|
35
|
+
* each context.
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
export type HlWsPacData = [string, HlWsPerpAssetCtxPayload[]][];
|
|
28
39
|
/** @public */
|
|
29
40
|
export type HlWsMessage = {
|
|
30
41
|
channel: string;
|
|
@@ -41,10 +52,52 @@ export type HlWsFastAssetCtx = {
|
|
|
41
52
|
midPx?: string | null;
|
|
42
53
|
};
|
|
43
54
|
/** @public */
|
|
55
|
+
export type HlWsSpotAssetCtx = {
|
|
56
|
+
dayNtlVlm?: HlWsNumberString;
|
|
57
|
+
prevDayPx?: HlWsNumberString;
|
|
58
|
+
markPx?: HlWsNumberString;
|
|
59
|
+
midPx?: HlWsNumberString | null;
|
|
60
|
+
dayBaseVlm?: HlWsNumberString;
|
|
61
|
+
circulatingSupply?: HlWsNumberString;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Compressed spot asset-context feed. The first frame is a broad snapshot; later
|
|
65
|
+
* frames only carry changed fields.
|
|
66
|
+
* @public
|
|
67
|
+
*/
|
|
68
|
+
export type HlWsSacData = Record<string, HlWsSpotAssetCtx>;
|
|
69
|
+
/** @public */
|
|
44
70
|
export type HlWsL2BookData = HlL2Book & {
|
|
45
71
|
coin: string;
|
|
46
72
|
};
|
|
47
73
|
/** @public */
|
|
74
|
+
export type HlWsL2Data = {
|
|
75
|
+
s?: HlL2Book & {
|
|
76
|
+
coin: string;
|
|
77
|
+
};
|
|
78
|
+
c?: string;
|
|
79
|
+
u?: HlWsCompressedL2Data;
|
|
80
|
+
};
|
|
81
|
+
/** @public */
|
|
82
|
+
export type HlWsCompressedL2Level = {
|
|
83
|
+
p: string;
|
|
84
|
+
s: string;
|
|
85
|
+
};
|
|
86
|
+
/** @public */
|
|
87
|
+
export type HlWsCompressedL2Data = {
|
|
88
|
+
c: string;
|
|
89
|
+
t: number;
|
|
90
|
+
l: [HlWsCompressedL2Level[], HlWsCompressedL2Level[]];
|
|
91
|
+
r?: [
|
|
92
|
+
Array<number | string | {
|
|
93
|
+
p: string;
|
|
94
|
+
}>,
|
|
95
|
+
Array<number | string | {
|
|
96
|
+
p: string;
|
|
97
|
+
}>
|
|
98
|
+
];
|
|
99
|
+
};
|
|
100
|
+
/** @public */
|
|
48
101
|
export type HlWsCandleData = HlCandle & {
|
|
49
102
|
T: number;
|
|
50
103
|
s: string;
|
|
@@ -52,6 +105,16 @@ export type HlWsCandleData = HlCandle & {
|
|
|
52
105
|
n: number;
|
|
53
106
|
};
|
|
54
107
|
/** @public */
|
|
108
|
+
export type HlWsTrade = {
|
|
109
|
+
coin: string;
|
|
110
|
+
side: string;
|
|
111
|
+
px: string;
|
|
112
|
+
sz: string;
|
|
113
|
+
time: number;
|
|
114
|
+
tid?: number;
|
|
115
|
+
hash?: string;
|
|
116
|
+
};
|
|
117
|
+
/** @public */
|
|
55
118
|
export type HlWsUserFillsData = {
|
|
56
119
|
isSnapshot: boolean;
|
|
57
120
|
user: string;
|
|
@@ -69,4 +132,5 @@ export type HlWsSpotStateData = {
|
|
|
69
132
|
balances: HlSpotBalance[];
|
|
70
133
|
};
|
|
71
134
|
};
|
|
135
|
+
export {};
|
|
72
136
|
//# sourceMappingURL=ws.d.ts.map
|
|
@@ -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;
|
|
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,3 +1,11 @@
|
|
|
1
|
+
export async function decodeCompressedJson(base64) {
|
|
2
|
+
const bytes = Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
|
|
3
|
+
const stream = new Blob([bytes])
|
|
4
|
+
.stream()
|
|
5
|
+
.pipeThrough(new DecompressionStream('deflate-raw'));
|
|
6
|
+
const text = await new Response(stream).text();
|
|
7
|
+
return JSON.parse(text);
|
|
8
|
+
}
|
|
1
9
|
/**
|
|
2
10
|
* Decode a Hyperliquid `fastAssetCtxs` frame. HL sends the payload as a
|
|
3
11
|
* base64-encoded, raw-DEFLATE-compressed (RFC 1951 — no zlib/gzip wrapper) JSON
|
|
@@ -7,11 +15,6 @@
|
|
|
7
15
|
* @throws If the input is not valid base64 / raw-DEFLATE / JSON.
|
|
8
16
|
*/
|
|
9
17
|
export async function decodeFastAssetCtxs(base64) {
|
|
10
|
-
|
|
11
|
-
const stream = new Blob([bytes])
|
|
12
|
-
.stream()
|
|
13
|
-
.pipeThrough(new DecompressionStream('deflate-raw'));
|
|
14
|
-
const text = await new Response(stream).text();
|
|
15
|
-
return JSON.parse(text);
|
|
18
|
+
return decodeCompressedJson(base64);
|
|
16
19
|
}
|
|
17
20
|
//# sourceMappingURL=decodeFastAssetCtxs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decodeFastAssetCtxs.js","sourceRoot":"","sources":["../../../src/utils/decodeFastAssetCtxs.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"decodeFastAssetCtxs.js","sourceRoot":"","sources":["../../../src/utils/decodeFastAssetCtxs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAI,MAAc;IAC1D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACnE,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;SAC7B,MAAM,EAAE;SACR,WAAW,CAAC,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAA;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc;IAEd,OAAO,oBAAoB,CAAmC,MAAM,CAAC,CAAA;AACvE,CAAC"}
|
|
@@ -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"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// for the package's utility surface. Internal modules import per-file paths
|
|
3
3
|
// (e.g. `./assetId.js`, `./mapFill.js`) directly.
|
|
4
4
|
export { assetIsSpot, calculateAssetId, getProviderIndex } from './assetId.js';
|
|
5
|
-
export { decodeFastAssetCtxs } from './decodeFastAssetCtxs.js';
|
|
5
|
+
export { decodeCompressedJson, decodeFastAssetCtxs, } from './decodeFastAssetCtxs.js';
|
|
6
6
|
export { hlInfoOptions, infoRequest } from './infoClient.js';
|
|
7
7
|
export { calculateLiquidationPrice, calculateMaintenanceMarginRate, } from './liquidation.js';
|
|
8
8
|
export { mapFundingActivity, mapLedgerEntry } from './mapActivity.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,kDAAkD;AAElD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,kDAAkD;AAElD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,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,14 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
29
29
|
private readonly client;
|
|
30
30
|
private readonly registry;
|
|
31
31
|
private perpCtxBySubDex;
|
|
32
|
+
private spotCtxByMarketId;
|
|
33
|
+
private orderbookKeysByMarketId;
|
|
34
|
+
private latestOrderbookByMarketId;
|
|
32
35
|
private fastCtxByMarketId;
|
|
33
36
|
private fastDecodeChain;
|
|
37
|
+
private pacDecodeChain;
|
|
38
|
+
private sacDecodeChain;
|
|
39
|
+
private orderbookDecodeChain;
|
|
34
40
|
constructor(wsUrl: string, providerKey: string, client?: PerpsSDKClient);
|
|
35
41
|
subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
|
|
36
42
|
protected openChannel(sub: Subscription): Promise<() => void>;
|
|
@@ -41,18 +47,27 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
41
47
|
* so a wallet switch needn't wait out the teardown linger; a live one throws.
|
|
42
48
|
*/
|
|
43
49
|
private claimOrderUpdatesKey;
|
|
50
|
+
private claimOrderbookKey;
|
|
44
51
|
/**
|
|
45
|
-
* Sub-key + payload pairs for the markets-context aggregation:
|
|
46
|
-
* perp
|
|
52
|
+
* Sub-key + payload pairs for the markets-context aggregation: compressed
|
|
53
|
+
* all-perp (`pac`) and all-spot (`sac`) asset contexts plus the documented
|
|
47
54
|
* `fastAssetCtxs` feed (high-frequency mid + mark across every dex).
|
|
48
55
|
*/
|
|
49
56
|
private getMarketsContextSubEntries;
|
|
57
|
+
private registerOrderbook;
|
|
58
|
+
private releaseOrderbook;
|
|
50
59
|
protected onClose(): void;
|
|
51
60
|
protected sendSubscribe(payload: object): void;
|
|
52
61
|
protected toKey(sub: Subscription): string;
|
|
62
|
+
private orderbookAggregation;
|
|
63
|
+
private orderbookAggregationKey;
|
|
53
64
|
private toHlPayload;
|
|
54
65
|
protected handleMessage(raw: string): void;
|
|
55
66
|
private handleAllDexsAssetCtxs;
|
|
67
|
+
private handlePac;
|
|
68
|
+
private mergePerpAssetCtxEntries;
|
|
69
|
+
private handleSac;
|
|
70
|
+
private spotMarketIdBySacKey;
|
|
56
71
|
/**
|
|
57
72
|
* Decode a `fastAssetCtxs` frame (base64 + raw-DEFLATE) and merge its changed
|
|
58
73
|
* coins into the per-market fast-context store. Frames are incremental, so a
|
|
@@ -61,17 +76,19 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
61
76
|
*/
|
|
62
77
|
private handleFastAssetCtxs;
|
|
63
78
|
/**
|
|
64
|
-
* Build the all-markets context map
|
|
65
|
-
*
|
|
66
|
-
* high-frequency `fastAssetCtxs` feed. A market present in `fastAssetCtxs` but
|
|
67
|
-
* without an asset-context frame yet (the aggregate feed is slow/idle) still
|
|
68
|
-
* gets a mid+mark entry, so price ticks without waiting on the aggregate.
|
|
79
|
+
* Build the all-markets context map from perp + spot asset contexts, with mid
|
|
80
|
+
* + mark overlaid from `fastAssetCtxs`.
|
|
69
81
|
*/
|
|
70
82
|
private emitMarketsContext;
|
|
71
|
-
/** Latest mid per `Market.id` across
|
|
83
|
+
/** Latest mid per `Market.id` across asset-context and fast feeds. */
|
|
72
84
|
private mergedMids;
|
|
85
|
+
private orderbookReferencePrice;
|
|
73
86
|
private handleL2Book;
|
|
87
|
+
private handleL2;
|
|
88
|
+
private handleCompactL2Delta;
|
|
89
|
+
private emitOrderbook;
|
|
74
90
|
private handleCandle;
|
|
91
|
+
private handleTrades;
|
|
75
92
|
private handleOrderUpdates;
|
|
76
93
|
private handleUserFills;
|
|
77
94
|
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;AA2C1B;;;;;;;;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,iBAAiB,CAAuC;IAChE,OAAO,CAAC,uBAAuB,CAAiC;IAChE,OAAO,CAAC,yBAAyB,CAAuC;IAKxE,OAAO,CAAC,iBAAiB,CAAuC;IAGhE,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,cAAc,CAAmC;IACzD,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;IAWnC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;cAcL,OAAO,IAAI,IAAI;IAalC,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;IAwEnC,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,oBAAoB;IAe5B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA6C1B,sEAAsE;IACtE,OAAO,CAAC,UAAU;IAuBlB,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"}
|