@lifi/perps-sdk-provider-hyperliquid 31.0.1 → 31.0.2

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 (57) hide show
  1. package/README.md +20 -0
  2. package/dist/cjs/constants.d.ts +1 -0
  3. package/dist/cjs/constants.d.ts.map +1 -1
  4. package/dist/cjs/constants.js +2 -1
  5. package/dist/cjs/constants.js.map +1 -1
  6. package/dist/cjs/services/getFills.d.ts.map +1 -1
  7. package/dist/cjs/services/getFills.js +14 -11
  8. package/dist/cjs/services/getFills.js.map +1 -1
  9. package/dist/cjs/services/twapSliceFills.d.ts.map +1 -1
  10. package/dist/cjs/services/twapSliceFills.js +3 -3
  11. package/dist/cjs/services/twapSliceFills.js.map +1 -1
  12. package/dist/cjs/types/ws.d.ts +6 -1
  13. package/dist/cjs/types/ws.d.ts.map +1 -1
  14. package/dist/cjs/utils/mapFill.d.ts.map +1 -1
  15. package/dist/cjs/utils/mapFill.js +2 -1
  16. package/dist/cjs/utils/mapFill.js.map +1 -1
  17. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +4 -0
  18. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  19. package/dist/cjs/websocket/HyperliquidWsProvider.js +59 -31
  20. package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
  21. package/dist/esm/constants.d.ts +6 -0
  22. package/dist/esm/constants.d.ts.map +1 -1
  23. package/dist/esm/constants.js +6 -0
  24. package/dist/esm/constants.js.map +1 -1
  25. package/dist/esm/services/getFills.d.ts +6 -3
  26. package/dist/esm/services/getFills.d.ts.map +1 -1
  27. package/dist/esm/services/getFills.js +19 -13
  28. package/dist/esm/services/getFills.js.map +1 -1
  29. package/dist/esm/services/twapSliceFills.d.ts.map +1 -1
  30. package/dist/esm/services/twapSliceFills.js +3 -4
  31. package/dist/esm/services/twapSliceFills.js.map +1 -1
  32. package/dist/esm/types/ws.d.ts +7 -1
  33. package/dist/esm/types/ws.d.ts.map +1 -1
  34. package/dist/esm/utils/mapFill.d.ts.map +1 -1
  35. package/dist/esm/utils/mapFill.js +3 -1
  36. package/dist/esm/utils/mapFill.js.map +1 -1
  37. package/dist/esm/websocket/HyperliquidWsProvider.d.ts +10 -0
  38. package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  39. package/dist/esm/websocket/HyperliquidWsProvider.js +68 -31
  40. package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
  41. package/dist/types/constants.d.ts +6 -0
  42. package/dist/types/constants.d.ts.map +1 -1
  43. package/dist/types/services/getFills.d.ts +6 -3
  44. package/dist/types/services/getFills.d.ts.map +1 -1
  45. package/dist/types/services/twapSliceFills.d.ts.map +1 -1
  46. package/dist/types/types/ws.d.ts +7 -1
  47. package/dist/types/types/ws.d.ts.map +1 -1
  48. package/dist/types/utils/mapFill.d.ts.map +1 -1
  49. package/dist/types/websocket/HyperliquidWsProvider.d.ts +10 -0
  50. package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  51. package/package.json +2 -2
  52. package/src/constants.ts +6 -0
  53. package/src/services/getFills.ts +37 -25
  54. package/src/services/twapSliceFills.ts +3 -5
  55. package/src/types/ws.ts +8 -1
  56. package/src/utils/mapFill.ts +6 -1
  57. package/src/websocket/HyperliquidWsProvider.ts +88 -32
package/README.md CHANGED
@@ -162,6 +162,26 @@ the original upper time bound, preventing subsequent pages from regrouping an
162
162
  order using newly arriving fills. Funding/ledger-only activity and ordinary fill
163
163
  pages use bounded newest-first windows instead of repeatedly downloading full history.
164
164
 
165
+ ### TWAP slice fills
166
+
167
+ Hyperliquid reports the executions of a TWAP on separate feeds. The regular
168
+ feeds (`userFills` and `userFillsByTime`) omit them. `getFills` reads
169
+ `userTwapSliceFills` or `userTwapSliceFillsByTime` next to the regular feed
170
+ of each window, and merges both into one newest-first page. A slice fill
171
+ appears regardless of the lifecycle state of its parent TWAP. The cap of 2,000
172
+ rows applies to each feed: a window that saturates either feed narrows. A
173
+ failed request on either feed rejects the read.
174
+
175
+ A slice fill maps with the same fields as a regular fill. `Fill.orderId` is
176
+ the child order ID of the slice, not the TWAP ID. The venue gives a slice fill
177
+ the zero transaction hash, so the row carries no `explorerLink`.
178
+
179
+ One `fills` WebSocket subscription opens both the `userFills` and the
180
+ `userTwapSliceFills` venue channels. Listeners share the pair, the last
181
+ release closes both, and a reconnect replays both. The snapshot frame of each
182
+ channel emits an empty event. A live `userTwapSliceFills` frame can omit
183
+ `isSnapshot`.
184
+
165
185
  ## Order reads
166
186
 
167
187
  `getOrders` returns `{ provider, orders, pagination }`. Each `Order` carries a
@@ -5,6 +5,7 @@ export declare const HYPERLIQUID_EXPLORER_RPC_URL = "https://rpc.hyperliquid.xyz
5
5
  export declare const HYPERLIQUID_FEE_TIER_FALLBACK: FeeTier;
6
6
  export declare const DEFAULT_HISTORY_LIMIT = 50;
7
7
  export declare const MAX_HISTORY_LIMIT = 200;
8
+ export declare const FILL_ROWS_CAP = 2000;
8
9
  export declare const MAIN_DEX_NAME = "";
9
10
  export declare const MAIN_MARKET_ID = "hyperliquid";
10
11
  export declare const SPOT_MARKET_ID = "spot";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAQhD,eAAO,MAAM,YAAY,gBAAgB,CAAA;AAOzC,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AASxE,eAAO,MAAM,4BAA4B,yCACD,CAAA;AASxC,eAAO,MAAM,6BAA6B,EAAE,OAG3C,CAAA;AAGD,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAQpC,eAAO,MAAM,aAAa,KAAK,CAAA;AAE/B,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,eAAO,MAAM,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAQhD,eAAO,MAAM,YAAY,gBAAgB,CAAA;AAOzC,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AASxE,eAAO,MAAM,4BAA4B,yCACD,CAAA;AASxC,eAAO,MAAM,6BAA6B,EAAE,OAG3C,CAAA;AAGD,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,eAAO,MAAM,iBAAiB,MAAM,CAAA;AAMpC,eAAO,MAAM,aAAa,OAAO,CAAA;AAQjC,eAAO,MAAM,aAAa,KAAK,CAAA;AAE/B,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAE3C,eAAO,MAAM,cAAc,SAAS,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SPOT_MARKET_ID = exports.MAIN_MARKET_ID = exports.MAIN_DEX_NAME = exports.MAX_HISTORY_LIMIT = exports.DEFAULT_HISTORY_LIMIT = exports.HYPERLIQUID_FEE_TIER_FALLBACK = exports.HYPERLIQUID_EXPLORER_RPC_URL = exports.DEFAULT_HYPERLIQUID_API_URL = exports.PROVIDER_KEY = void 0;
3
+ exports.SPOT_MARKET_ID = exports.MAIN_MARKET_ID = exports.MAIN_DEX_NAME = exports.FILL_ROWS_CAP = exports.MAX_HISTORY_LIMIT = exports.DEFAULT_HISTORY_LIMIT = exports.HYPERLIQUID_FEE_TIER_FALLBACK = exports.HYPERLIQUID_EXPLORER_RPC_URL = exports.DEFAULT_HYPERLIQUID_API_URL = exports.PROVIDER_KEY = void 0;
4
4
  exports.PROVIDER_KEY = 'hyperliquid';
5
5
  exports.DEFAULT_HYPERLIQUID_API_URL = 'https://api.hyperliquid.xyz';
6
6
  exports.HYPERLIQUID_EXPLORER_RPC_URL = 'https://rpc.hyperliquid.xyz/explorer';
@@ -10,6 +10,7 @@ exports.HYPERLIQUID_FEE_TIER_FALLBACK = {
10
10
  };
11
11
  exports.DEFAULT_HISTORY_LIMIT = 50;
12
12
  exports.MAX_HISTORY_LIMIT = 200;
13
+ exports.FILL_ROWS_CAP = 2000;
13
14
  exports.MAIN_DEX_NAME = '';
14
15
  exports.MAIN_MARKET_ID = 'hyperliquid';
15
16
  exports.SPOT_MARKET_ID = 'spot';
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAQa,QAAA,YAAY,GAAG,aAAa,CAAA;AAO5B,QAAA,2BAA2B,GAAG,6BAA6B,CAAA;AAS3D,QAAA,4BAA4B,GACvC,sCAAsC,CAAA;AAS3B,QAAA,6BAA6B,GAAY;IACpD,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;CACjB,CAAA;AAGY,QAAA,qBAAqB,GAAG,EAAE,CAAA;AAE1B,QAAA,iBAAiB,GAAG,GAAG,CAAA;AAQvB,QAAA,aAAa,GAAG,EAAE,CAAA;AAElB,QAAA,cAAc,GAAG,aAAa,CAAA;AAE9B,QAAA,cAAc,GAAG,MAAM,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAQa,QAAA,YAAY,GAAG,aAAa,CAAA;AAO5B,QAAA,2BAA2B,GAAG,6BAA6B,CAAA;AAS3D,QAAA,4BAA4B,GACvC,sCAAsC,CAAA;AAS3B,QAAA,6BAA6B,GAAY;IACpD,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;CACjB,CAAA;AAGY,QAAA,qBAAqB,GAAG,EAAE,CAAA;AAE1B,QAAA,iBAAiB,GAAG,GAAG,CAAA;AAMvB,QAAA,aAAa,GAAG,IAAI,CAAA;AAQpB,QAAA,aAAa,GAAG,EAAE,CAAA;AAElB,QAAA,cAAc,GAAG,aAAa,CAAA;AAE9B,QAAA,cAAc,GAAG,MAAM,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFills.d.ts","sourceRoot":"","sources":["../../../src/services/getFills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAQ,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAYvD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAGD,eAAO,MAAM,QAAQ,GACnB,oBAAoB,kBAAkB,EACtC,QAAQ,cAAc,EACtB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,aAAa,CAgDvB,CAAA"}
1
+ {"version":3,"file":"getFills.d.ts","sourceRoot":"","sources":["../../../src/services/getFills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAQ,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAYvD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD,eAAO,MAAM,QAAQ,GACnB,oBAAoB,kBAAkB,EACtC,QAAQ,cAAc,EACtB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,aAAa,CAyDvB,CAAA"}
@@ -17,22 +17,25 @@ const getFills = async ({ client, apiUrl }, params, options) => {
17
17
  params.startTime === undefined &&
18
18
  params.endTime === undefined;
19
19
  const page = await (0, historyPagination_js_1.historyPage)(params, limit, async (startTime, endTime) => {
20
- const fills = await (0, infoClient_js_1.infoRequest)(apiUrl, useRecent
21
- ? { type: 'userFills', user: params.address }
22
- : {
23
- type: 'userFillsByTime',
24
- user: params.address,
25
- startTime,
26
- endTime,
27
- }, infoOpts);
20
+ const user = params.address;
21
+ const [fills, sliceFills] = await Promise.all([
22
+ (0, infoClient_js_1.infoRequest)(apiUrl, useRecent
23
+ ? { type: 'userFills', user }
24
+ : { type: 'userFillsByTime', user, startTime, endTime }, infoOpts),
25
+ (0, infoClient_js_1.infoRequest)(apiUrl, useRecent
26
+ ? { type: 'userTwapSliceFills', user }
27
+ : { type: 'userTwapSliceFillsByTime', user, startTime, endTime }, infoOpts),
28
+ ]);
28
29
  useRecent = false;
29
- if (fills.length >= 2000) {
30
+ if (fills.length >= constants_js_1.FILL_ROWS_CAP || sliceFills.length >= constants_js_1.FILL_ROWS_CAP) {
30
31
  return { items: [], saturated: true };
31
32
  }
32
- const items = fills.flatMap((fill) => {
33
- if ((0, index_js_1.assetIsOutcome)(fill.coin)) {
33
+ const seen = new Set();
34
+ const items = [...fills, ...sliceFills.map(({ fill }) => fill)].flatMap((fill) => {
35
+ if ((0, index_js_1.assetIsOutcome)(fill.coin) || seen.has(fill.tid)) {
34
36
  return [];
35
37
  }
38
+ seen.add(fill.tid);
36
39
  const market = registry.get(fill.coin);
37
40
  const mapped = market && (0, index_js_1.mapFill)(fill, market, params.address);
38
41
  return mapped ? [mapped] : [];
@@ -1 +1 @@
1
- {"version":3,"file":"getFills.js","sourceRoot":"","sources":["../../../src/services/getFills.ts"],"names":[],"mappings":";;;AAAA,+CAA2E;AAG3E,kDAA8C;AAG9C,gDAA2D;AAC3D,0DAAmE;AACnE,+DAA4D;AAC5D,iEAAqE;AAoB9D,MAAM,QAAQ,GAAG,KAAK,EAC3B,EAAE,MAAM,EAAE,MAAM,EAAsB,EACtC,MAAsB,EACtB,OAA2B,EACH,EAAE;IAC1B,MAAM,KAAK,GAAG,IAAA,sCAAe,EAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAG,IAAA,6BAAa,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,IAAA,0CAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,IAAA,6BAAiB,EAAC,MAAM,EAAE,2BAAY,CAAC,CAAA;IACxD,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAErB,IAAI,SAAS,GACX,MAAM,CAAC,MAAM,KAAK,SAAS;QAC3B,MAAM,CAAC,SAAS,KAAK,SAAS;QAC9B,MAAM,CAAC,OAAO,KAAK,SAAS,CAAA;IAC9B,MAAM,IAAI,GAAG,MAAM,IAAA,kCAAW,EAC5B,MAAM,EACN,KAAK,EACL,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAW,EAC7B,MAAM,EACN,SAAS;YACP,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;YAC7C,CAAC,CAAC;gBACE,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,SAAS;gBACT,OAAO;aACR,EACL,QAAQ,CACT,CAAA;QACD,SAAS,GAAG,KAAK,CAAA;QACjB,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;QACvC,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAU,EAAE;YAC3C,IAAI,IAAA,yBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO,EAAE,CAAA;YACX,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,MAAM,GAAG,MAAM,IAAI,IAAA,kBAAO,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YAC9D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/B,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IACpC,CAAC,EACD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACT,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE;QACxC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;KACrB,CAAC,EACF,OAAO,EAAE,MAAM,CAChB,CAAA;IACD,OAAO,EAAE,QAAQ,EAAE,2BAAY,EAAE,GAAG,IAAI,EAAE,CAAA;AAC5C,CAAC,CAAA;AApDY,QAAA,QAAQ,YAoDpB"}
1
+ {"version":3,"file":"getFills.js","sourceRoot":"","sources":["../../../src/services/getFills.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"twapSliceFills.d.ts","sourceRoot":"","sources":["../../../src/services/twapSliceFills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,KAAK,kBAAkB,EAAe,MAAM,wBAAwB,CAAA;AAY7E,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,EACd,MAAM,OAAO,EACb,SAAS,SAAS,kBAAkB,EAAE,EACtC,UAAU,kBAAkB,KAC3B,OAAO,CAAC,eAAe,EAAE,CA6C3B,CAAA"}
1
+ {"version":3,"file":"twapSliceFills.d.ts","sourceRoot":"","sources":["../../../src/services/twapSliceFills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAE,KAAK,kBAAkB,EAAe,MAAM,wBAAwB,CAAA;AAS7E,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,EACd,MAAM,OAAO,EACb,SAAS,SAAS,kBAAkB,EAAE,EACtC,UAAU,kBAAkB,KAC3B,OAAO,CAAC,eAAe,EAAE,CA6C3B,CAAA"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fetchTwapSliceFills = void 0;
4
+ const constants_js_1 = require("../constants.js");
4
5
  const infoClient_js_1 = require("../utils/infoClient.js");
5
6
  const historyPagination_js_1 = require("./historyPagination.js");
6
- const TWAP_SLICE_FILLS_CAP = 2000;
7
7
  const fetchTwapSliceFills = async (apiUrl, user, entries, options) => {
8
8
  const starts = entries.flatMap((entry) => entry.twapId !== undefined && entry.status.status === 'activated'
9
9
  ? [entry.state.timestamp]
@@ -12,7 +12,7 @@ const fetchTwapSliceFills = async (apiUrl, user, entries, options) => {
12
12
  return [];
13
13
  }
14
14
  const window = await (0, infoClient_js_1.infoRequest)(apiUrl, { type: 'userTwapSliceFills', user }, options);
15
- if (window.length < TWAP_SLICE_FILLS_CAP) {
15
+ if (window.length < constants_js_1.FILL_ROWS_CAP) {
16
16
  return window;
17
17
  }
18
18
  const oldest = Math.min(...window.map(({ fill }) => fill.time));
@@ -27,7 +27,7 @@ const fetchTwapSliceFills = async (apiUrl, user, entries, options) => {
27
27
  startTime: rangeStart,
28
28
  endTime: rangeEnd,
29
29
  }, options);
30
- return fills.length >= TWAP_SLICE_FILLS_CAP
30
+ return fills.length >= constants_js_1.FILL_ROWS_CAP
31
31
  ? { items: [], saturated: true }
32
32
  : { items: fills, saturated: false };
33
33
  }, ({ fill }) => ({ time: fill.time, key: fill.tid }), options?.signal);
@@ -1 +1 @@
1
- {"version":3,"file":"twapSliceFills.js","sourceRoot":"","sources":["../../../src/services/twapSliceFills.ts"],"names":[],"mappings":";;;AAEA,0DAA6E;AAC7E,iEAAoD;AAGpD,MAAM,oBAAoB,GAAG,IAAI,CAAA;AAQ1B,MAAM,mBAAmB,GAAG,KAAK,EACtC,MAAc,EACd,IAAa,EACb,OAAsC,EACtC,OAA4B,EACA,EAAE;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW;QAC/D,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC,CAAC,EAAE,CACP,CAAA;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAW,EAC9B,MAAM,EACN,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EACpC,OAAO,CACR,CAAA;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACzC,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;IACrC,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;QACvB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,kCAAW,EAC7B,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAC9B,MAAM,CAAC,gBAAgB,EACvB,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAW,EAC7B,MAAM,EACN;YACE,IAAI,EAAE,0BAA0B;YAChC,IAAI;YACJ,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,QAAQ;SAClB,EACD,OAAO,CACR,CAAA;QACD,OAAO,KAAK,CAAC,MAAM,IAAI,oBAAoB;YACzC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;YAChC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IACxC,CAAC,EACD,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAClD,OAAO,EAAE,MAAM,CAChB,CAAA;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC,CAAA;AAlDY,QAAA,mBAAmB,uBAkD/B"}
1
+ {"version":3,"file":"twapSliceFills.js","sourceRoot":"","sources":["../../../src/services/twapSliceFills.ts"],"names":[],"mappings":";;;AACA,kDAA+C;AAE/C,0DAA6E;AAC7E,iEAAoD;AAQ7C,MAAM,mBAAmB,GAAG,KAAK,EACtC,MAAc,EACd,IAAa,EACb,OAAsC,EACtC,OAA4B,EACA,EAAE;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW;QAC/D,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC,CAAC,EAAE,CACP,CAAA;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAW,EAC9B,MAAM,EACN,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,EACpC,OAAO,CACR,CAAA;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,4BAAa,EAAE,CAAC;QAClC,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;IACrC,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;QACvB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,kCAAW,EAC7B,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAC9B,MAAM,CAAC,gBAAgB,EACvB,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,IAAA,2BAAW,EAC7B,MAAM,EACN;YACE,IAAI,EAAE,0BAA0B;YAChC,IAAI;YACJ,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,QAAQ;SAClB,EACD,OAAO,CACR,CAAA;QACD,OAAO,KAAK,CAAC,MAAM,IAAI,4BAAa;YAClC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;YAChC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;IACxC,CAAC,EACD,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAClD,OAAO,EAAE,MAAM,CAChB,CAAA;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC,CAAA;AAlDY,QAAA,mBAAmB,uBAkD/B"}
@@ -1,7 +1,7 @@
1
1
  import type { DecimalString } from '@lifi/perps-types';
2
2
  import type { HlClearinghouseState, HlSpotBalance } from './account.js';
3
3
  import type { HlCandle, HlL2Book } from './asset.js';
4
- import type { HlUserFill } from './fill.js';
4
+ import type { HlTwapSliceFill, HlUserFill } from './fill.js';
5
5
  type HlWsNumberString = string | number;
6
6
  export interface HlWsOrder {
7
7
  order: {
@@ -105,6 +105,11 @@ export type HlWsUserFillsData = {
105
105
  user: string;
106
106
  fills: HlUserFill[];
107
107
  };
108
+ export type HlWsUserTwapSliceFillsData = {
109
+ isSnapshot?: boolean;
110
+ user: string;
111
+ twapSliceFills: HlTwapSliceFill[];
112
+ };
108
113
  export type HlWsDexClearinghouseState = Pick<HlClearinghouseState, 'assetPositions'> & Partial<Pick<HlClearinghouseState, 'marginSummary'>>;
109
114
  export type HlWsAllDexsClearinghouseStateData = {
110
115
  user: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAIzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,IAAI,EAAmB,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAQ7E,OAAO,KAAK,EAAqB,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAItE,OAAO,EAAE,wBAAwB,EAAE,CAAA;AAsCnC,eAAO,MAAM,OAAO,GAClB,MAAM,UAAU,EAChB,QAAQ,aAAa,EACrB,SAAS,MAAM,KACd,IAAI,GAAG,SA+CT,CAAA"}
1
+ {"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAIzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,IAAI,EAAmB,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAS7E,OAAO,KAAK,EAAqB,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAItE,OAAO,EAAE,wBAAwB,EAAE,CAAA;AAsCnC,eAAO,MAAM,OAAO,GAClB,MAAM,UAAU,EAChB,QAAQ,aAAa,EACrB,SAAS,MAAM,KACd,IAAI,GAAG,SAmDT,CAAA"}
@@ -4,6 +4,7 @@ exports.mapFill = exports.classifyFillFromPosition = void 0;
4
4
  const perps_sdk_1 = require("@lifi/perps-sdk");
5
5
  Object.defineProperty(exports, "classifyFillFromPosition", { enumerable: true, get: function () { return perps_sdk_1.classifyFillFromPosition; } });
6
6
  const perps_types_1 = require("@lifi/perps-types");
7
+ const viem_1 = require("viem");
7
8
  const constants_js_1 = require("../constants.js");
8
9
  const rowTimestamp_js_1 = require("./rowTimestamp.js");
9
10
  const mapLiquidationMethod = (method) => {
@@ -61,7 +62,7 @@ const mapFill = (fill, market, address) => {
61
62
  ? undefined
62
63
  : { amount: fill.builderFee, asset: feeAsset },
63
64
  startPosition: fill.startPosition,
64
- explorerLink: (0, perps_sdk_1.explorerTxUrl)(perps_sdk_1.ExplorerChainId.HYPERLIQUID, fill.hash),
65
+ explorerLink: (0, perps_sdk_1.explorerTxUrl)(perps_sdk_1.ExplorerChainId.HYPERLIQUID, fill.hash === viem_1.zeroHash ? undefined : fill.hash),
65
66
  classification: market.categoryId === constants_js_1.SPOT_MARKET_ID
66
67
  ? side === perps_types_1.OrderSide.BUY
67
68
  ? perps_types_1.FillClassification.SPOT_BUY
@@ -1 +1 @@
1
- {"version":3,"file":"mapFill.js","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapFill.js","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,8 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
40
40
  private claimOrderUpdatesKey;
41
41
  private claimOrderbookKey;
42
42
  private getMarketsContextSubEntries;
43
+ private getFillsSubEntries;
44
+ private openWireEntries;
43
45
  private registerOrderbook;
44
46
  private releaseOrderbook;
45
47
  protected onClose(): void;
@@ -70,6 +72,8 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
70
72
  private handleOrderUpdates;
71
73
  private readOrderDetail;
72
74
  private handleUserFills;
75
+ private handleUserTwapSliceFills;
76
+ private emitFills;
73
77
  private handleAllDexsClearinghouseState;
74
78
  private static summaryComputableFor;
75
79
  private acquireSpotWire;
@@ -1 +1 @@
1
- {"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"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"}
@@ -125,36 +125,15 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
125
125
  await registry.sync();
126
126
  }
127
127
  if (sub.channel === 'marketsContext') {
128
- const epoch = this.spotWireEpoch;
129
- const entries = this.getMarketsContextSubEntries();
130
- let acquired = 0;
131
- const release = () => {
132
- if (epoch !== this.spotWireEpoch) {
133
- return;
134
- }
135
- for (let index = 0; index < acquired; index++) {
136
- const { subKey, payload } = entries[index];
137
- this.unregisterSub(subKey);
138
- this.rws.send(JSON.stringify({ method: 'unsubscribe', subscription: payload }));
139
- }
128
+ return this.openWireEntries(this.getMarketsContextSubEntries(), () => {
140
129
  this.perpCtxBySubDex.clear();
141
130
  this.spotCtxByMarketId = {};
142
131
  this.fastCtxByMarketId = {};
143
132
  this.marketsContextByMarketId = {};
144
- acquired = 0;
145
- };
146
- try {
147
- for (const { subKey, payload } of entries) {
148
- await this.registerSub(subKey, payload);
149
- acquired++;
150
- }
151
- await this.rws.ready();
152
- return release;
153
- }
154
- catch (error) {
155
- release();
156
- throw error;
157
- }
133
+ });
134
+ }
135
+ if (sub.channel === 'fills') {
136
+ return this.openWireEntries(this.getFillsSubEntries(sub.address));
158
137
  }
159
138
  if (sub.channel === 'spotBalances') {
160
139
  return this.acquireSpotWire(sub.address);
@@ -254,6 +233,44 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
254
233
  { subKey: 'fastAssetCtxs', payload: { type: 'fastAssetCtxs' } },
255
234
  ];
256
235
  }
236
+ getFillsSubEntries(address) {
237
+ const user = normalizeHlAddress(address);
238
+ return [
239
+ { subKey: `userFills:${user}`, payload: { type: 'userFills', user } },
240
+ {
241
+ subKey: `userTwapSliceFills:${user}`,
242
+ payload: { type: 'userTwapSliceFills', user },
243
+ },
244
+ ];
245
+ }
246
+ async openWireEntries(entries, onRelease) {
247
+ const epoch = this.spotWireEpoch;
248
+ let acquired = 0;
249
+ const release = () => {
250
+ if (epoch !== this.spotWireEpoch) {
251
+ return;
252
+ }
253
+ for (let index = 0; index < acquired; index++) {
254
+ const { subKey, payload } = entries[index];
255
+ this.unregisterSub(subKey);
256
+ this.rws.send(JSON.stringify({ method: 'unsubscribe', subscription: payload }));
257
+ }
258
+ acquired = 0;
259
+ onRelease?.();
260
+ };
261
+ try {
262
+ for (const { subKey, payload } of entries) {
263
+ await this.registerSub(subKey, payload);
264
+ acquired++;
265
+ }
266
+ await this.rws.ready();
267
+ return release;
268
+ }
269
+ catch (error) {
270
+ release();
271
+ throw error;
272
+ }
273
+ }
257
274
  registerOrderbook(marketId, orderbookKey) {
258
275
  let activeKeys = this.orderbookKeysByMarketId.get(marketId);
259
276
  if (activeKeys === undefined) {
@@ -316,7 +333,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
316
333
  case 'orderUpdates':
317
334
  return `orderUpdates:${sub.address.toLowerCase()}`;
318
335
  case 'fills':
319
- return `userFills:${sub.address.toLowerCase()}`;
336
+ return `fills:${sub.address.toLowerCase()}`;
320
337
  case 'positions':
321
338
  return `positions:${sub.address.toLowerCase()}`;
322
339
  case 'accountSummary':
@@ -458,6 +475,9 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
458
475
  case 'userFills':
459
476
  this.handleUserFills(msg.data);
460
477
  break;
478
+ case 'userTwapSliceFills':
479
+ this.handleUserTwapSliceFills(msg.data);
480
+ break;
461
481
  case 'allDexsClearinghouseState':
462
482
  this.handleAllDexsClearinghouseState(msg.data);
463
483
  break;
@@ -826,17 +846,23 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
826
846
  };
827
847
  }
828
848
  handleUserFills(data) {
829
- const items = data.isSnapshot
849
+ this.emitFills(data.user, data.isSnapshot, data.fills);
850
+ }
851
+ handleUserTwapSliceFills(data) {
852
+ this.emitFills(data.user, data.isSnapshot, data.twapSliceFills.map(({ fill }) => fill));
853
+ }
854
+ emitFills(user, isSnapshot, fills) {
855
+ const items = isSnapshot
830
856
  ? []
831
- : data.fills.flatMap((f) => {
857
+ : fills.flatMap((f) => {
832
858
  if ((0, index_js_2.assetIsOutcome)(f.coin)) {
833
859
  return [];
834
860
  }
835
861
  const market = this.registry?.get(f.coin);
836
- const mapped = market && (0, index_js_2.mapFill)(f, market, data.user);
862
+ const mapped = market && (0, index_js_2.mapFill)(f, market, user);
837
863
  return mapped ? [mapped] : [];
838
864
  });
839
- this.emit(`userFills:${data.user.toLowerCase()}`, {
865
+ this.emit(`fills:${user.toLowerCase()}`, {
840
866
  channel: 'fills',
841
867
  data: items,
842
868
  });
@@ -1302,6 +1328,8 @@ function isValidHlFrame(channel, data) {
1302
1328
  return Array.isArray(data);
1303
1329
  case 'userFills':
1304
1330
  return typeof data.user === 'string' && Array.isArray(data.fills);
1331
+ case 'userTwapSliceFills':
1332
+ return typeof data.user === 'string' && Array.isArray(data.twapSliceFills);
1305
1333
  case 'allDexsClearinghouseState':
1306
1334
  return (typeof data.user === 'string' && Array.isArray(data.clearinghouseStates));
1307
1335
  case 'spotState':