@lifi/perps-sdk-provider-hyperliquid 20.0.0 → 20.1.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 (44) hide show
  1. package/README.md +45 -0
  2. package/dist/cjs/services/getActivity.d.ts.map +1 -1
  3. package/dist/cjs/services/getActivity.js +68 -44
  4. package/dist/cjs/services/getActivity.js.map +1 -1
  5. package/dist/cjs/services/getFills.d.ts.map +1 -1
  6. package/dist/cjs/services/getFills.js +30 -38
  7. package/dist/cjs/services/getFills.js.map +1 -1
  8. package/dist/cjs/services/historyPagination.d.ts +22 -0
  9. package/dist/cjs/services/historyPagination.d.ts.map +1 -0
  10. package/dist/cjs/services/historyPagination.js +125 -0
  11. package/dist/cjs/services/historyPagination.js.map +1 -0
  12. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +6 -0
  13. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  14. package/dist/cjs/websocket/HyperliquidWsProvider.js +129 -37
  15. package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
  16. package/dist/esm/services/getActivity.d.ts +3 -13
  17. package/dist/esm/services/getActivity.d.ts.map +1 -1
  18. package/dist/esm/services/getActivity.js +74 -64
  19. package/dist/esm/services/getActivity.js.map +1 -1
  20. package/dist/esm/services/getFills.d.ts +2 -14
  21. package/dist/esm/services/getFills.d.ts.map +1 -1
  22. package/dist/esm/services/getFills.js +32 -58
  23. package/dist/esm/services/getFills.js.map +1 -1
  24. package/dist/esm/services/historyPagination.d.ts +22 -0
  25. package/dist/esm/services/historyPagination.d.ts.map +1 -0
  26. package/dist/esm/services/historyPagination.js +121 -0
  27. package/dist/esm/services/historyPagination.js.map +1 -0
  28. package/dist/esm/websocket/HyperliquidWsProvider.d.ts +6 -0
  29. package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  30. package/dist/esm/websocket/HyperliquidWsProvider.js +131 -49
  31. package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
  32. package/dist/types/services/getActivity.d.ts +3 -13
  33. package/dist/types/services/getActivity.d.ts.map +1 -1
  34. package/dist/types/services/getFills.d.ts +2 -14
  35. package/dist/types/services/getFills.d.ts.map +1 -1
  36. package/dist/types/services/historyPagination.d.ts +22 -0
  37. package/dist/types/services/historyPagination.d.ts.map +1 -0
  38. package/dist/types/websocket/HyperliquidWsProvider.d.ts +6 -0
  39. package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  40. package/package.json +2 -2
  41. package/src/services/getActivity.ts +133 -104
  42. package/src/services/getFills.ts +42 -95
  43. package/src/services/historyPagination.ts +169 -0
  44. package/src/websocket/HyperliquidWsProvider.ts +141 -63
package/README.md CHANGED
@@ -35,6 +35,18 @@ Setup registers an agent keypair whose private key signs orders locally, so trad
35
35
 
36
36
  The keypair is persisted through a `StorageAdapter`. The default adapter encrypts values with AES-GCM before writing to browser `localStorage`, holding the master key as a non-extractable `CryptoKey` handle in IndexedDB, so key material is never stored as plaintext. Pass your own `StorageAdapter` to the `HyperliquidAgentStore` constructor to use a different backend — a custom adapter bypasses this encryption and is responsible for protecting the key at rest.
37
37
 
38
+ ## Live portfolio valuation
39
+
40
+ `spotBalances` and spot-funded `accountSummary` subscriptions own their shared
41
+ price feeds; neither requires a separate `marketsContext` subscriber. Price
42
+ updates revalue the latest spot snapshot without waiting for another balance
43
+ frame. Releasing another market consumer does not interrupt portfolio pricing.
44
+
45
+ For a held token with a listed spot market, balance and summary emissions wait
46
+ for its first price rather than reporting a zero USD value. Tokens without a
47
+ listed market retain their unpriced balances. Unified and portfolio-margin
48
+ summaries also wait for clearinghouse state and venue-reported buying power.
49
+
38
50
  ## Ledger asset identity
39
51
 
40
52
  Transfers carry the backend registry `Asset`, including its logo, numeric `id`,
@@ -98,6 +110,39 @@ Unknown future delta types remain outside the supported activity model.
98
110
  These exclusions do not apply to missing assets in supported transfer rows:
99
111
  the mapper rejects those rows with an error instead of silently omitting them.
100
112
 
113
+ ## History pagination
114
+
115
+ `getFills` and `getActivity` return deterministic newest-first pages. Pass the
116
+ opaque `pagination.cursor` back unchanged with the same address, time bounds
117
+ and activity filters. Malformed cursors and timestamp or `time:trade-id` cursors
118
+ from older provider releases are rejected with `PerpsErrorCode.ValidationError`.
119
+ Discard those stored cursors and restart the traversal without a cursor.
120
+
121
+ Both time bounds are inclusive. Activity cursors distinguish different event
122
+ types and IDs at the same timestamp; fill cursors also distinguish trade IDs.
123
+ Subsequent pages exclude newer arrivals beyond the first page's time boundary.
124
+
125
+ `limit` must be a positive safe integer; invalid values raise
126
+ `PerpsErrorCode.ValidationError`. It defaults to 50, and valid values above 200
127
+ are capped at 200.
128
+
129
+ Hyperliquid's [info endpoint](https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint)
130
+ paginates time ranges forwards and caps funding/ledger responses at 500 entries
131
+ or blocks, and fills at 2,000. The provider narrows saturated time windows before
132
+ returning newest-first pages. A single millisecond that saturates the venue cap
133
+ raises an error because the upstream time-only API cannot prove completeness.
134
+ Failures and cancellation reject the request rather than returning a partial page.
135
+
136
+ Only the latest 10,000 fills are available upstream, including liquidation fills;
137
+ pagination cannot recover older venue-discarded history. Liquidation-inclusive
138
+ activity reads scan this bounded retained fill history on each SDK page so all
139
+ fills of an order are aggregated before pagination. Matching ledger liquidations
140
+ are excluded using ledger history between the earliest and latest retained
141
+ liquidation fills, independently of the current SDK page. Their cursors retain
142
+ the original upper time bound, preventing subsequent pages from regrouping an
143
+ order using newly arriving fills. Funding/ledger-only activity and ordinary fill
144
+ pages use bounded newest-first windows instead of repeatedly downloading full history.
145
+
101
146
  ## Order reads
102
147
 
103
148
  `getOrders` returns `{ provider, orders, pagination }`. Each `Order` carries a
@@ -1 +1 @@
1
- {"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAMnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAiCvD,MAAM,WAAW,iBAAiB;IAChC,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;IAEhB,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AAiID,eAAO,MAAM,WAAW,GACtB,oBAAoB,kBAAkB,EACtC,QAAQ,iBAAiB,EACzB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,kBAAkB,CAiE5B,CAAA"}
1
+ {"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAkCvD,MAAM,WAAW,iBAAiB;IAChC,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;IAEhB,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AA8KD,eAAO,MAAM,WAAW,GACtB,oBAAoB,kBAAkB,EACtC,QAAQ,iBAAiB,EACzB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,kBAAkB,CAmD5B,CAAA"}
@@ -7,6 +7,7 @@ const constants_js_1 = require("../constants.js");
7
7
  const index_js_1 = require("../types/index.js");
8
8
  const index_js_2 = require("../utils/index.js");
9
9
  const infoClient_js_1 = require("../utils/infoClient.js");
10
+ const historyPagination_js_1 = require("./historyPagination.js");
10
11
  const MARKET_BEARING_TYPES = new Set([
11
12
  perps_types_1.ActivityType.FUNDING,
12
13
  perps_types_1.ActivityType.LIQUIDATION,
@@ -17,23 +18,64 @@ const ASSET_BEARING_TYPES = new Set([
17
18
  perps_types_1.ActivityType.TRANSFER,
18
19
  ]);
19
20
  const needsMarkets = (typeFilter) => !typeFilter || typeFilter.some((t) => MARKET_BEARING_TYPES.has(t));
20
- const fetchActivityData = async (apiUrl, typeFilter, timeParams, assetRegistry, resolveMarket, options) => {
21
+ const fetchLiquidationHistory = async (apiUrl, user, startTime, endTime, resolveMarket, options) => {
22
+ const retained = new Map();
23
+ while (startTime <= endTime) {
24
+ options?.signal?.throwIfAborted();
25
+ const fills = await (0, infoClient_js_1.infoRequest)(apiUrl, { type: 'userFillsByTime', user, startTime, endTime }, options);
26
+ options?.signal?.throwIfAborted();
27
+ let latest = startTime;
28
+ for (const fill of fills) {
29
+ retained.set(fill.tid, fill);
30
+ latest = Math.max(latest, fill.time);
31
+ }
32
+ if (fills.length < 2000 || retained.size >= 10000) {
33
+ break;
34
+ }
35
+ if (latest === startTime) {
36
+ throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ThirdPartyError, 'Hyperliquid fills saturate a single millisecond; liquidation history cannot be paginated safely');
37
+ }
38
+ startTime = latest;
39
+ }
40
+ const queried = user.toLowerCase();
41
+ const fills = [...retained.values()].filter((fill) => fill.liquidation?.liquidatedUser.toLowerCase() === queried);
42
+ if (fills.length === 0) {
43
+ return [];
44
+ }
45
+ const hashes = new Set();
46
+ let firstTime = Infinity;
47
+ let lastTime = 0;
48
+ for (const fill of fills) {
49
+ if (fill.hash !== undefined) {
50
+ hashes.add(fill.hash);
51
+ }
52
+ firstTime = Math.min(firstTime, fill.time);
53
+ lastTime = Math.max(lastTime, fill.time);
54
+ }
55
+ const ledger = await (0, historyPagination_js_1.historyPage)({ startTime: firstTime, endTime: lastTime }, Number.MAX_SAFE_INTEGER, async (startTime, endTime) => {
56
+ const updates = await (0, infoClient_js_1.infoRequest)(apiUrl, { type: 'userNonFundingLedgerUpdates', user, startTime, endTime }, options);
57
+ return {
58
+ items: updates.filter((entry) => (0, index_js_1.isLiquidationDelta)(entry.delta) && hashes.has(entry.hash)),
59
+ saturated: updates.length >= 500,
60
+ };
61
+ }, (entry) => ({ time: entry.time, key: entry.hash }), options?.signal);
62
+ return (0, index_js_2.mapLiquidationFills)(fills, constants_js_1.PROVIDER_KEY, user, resolveMarket, new Set(ledger.items.map((entry) => entry.hash)));
63
+ };
64
+ const fetchActivityData = async (apiUrl, typeFilter, timeParams, assetRegistry, resolveMarket, liquidationHistory, options) => {
21
65
  const needLedger = !typeFilter || typeFilter.some((t) => t !== perps_types_1.ActivityType.FUNDING);
22
66
  const needFunding = !typeFilter || typeFilter.includes(perps_types_1.ActivityType.FUNDING);
23
- const needLiquidationFills = !typeFilter || typeFilter.includes(perps_types_1.ActivityType.LIQUIDATION);
24
- const [ledgerUpdates, fundingUpdates, fills] = await Promise.all([
67
+ const [ledgerUpdates, fundingUpdates, liquidations] = await Promise.all([
25
68
  needLedger
26
69
  ? (0, infoClient_js_1.infoRequest)(apiUrl, { type: 'userNonFundingLedgerUpdates', ...timeParams }, options)
27
70
  : Promise.resolve([]),
28
71
  needFunding
29
72
  ? (0, infoClient_js_1.infoRequest)(apiUrl, { type: 'userFunding', ...timeParams }, options)
30
73
  : Promise.resolve([]),
31
- needLiquidationFills
32
- ? (0, infoClient_js_1.infoRequest)(apiUrl, timeParams.startTime === undefined
33
- ? { type: 'userFills', user: timeParams.user }
34
- : { type: 'userFillsByTime', ...timeParams }, options)
35
- : Promise.resolve([]),
74
+ liquidationHistory,
36
75
  ]);
76
+ if (ledgerUpdates.length >= 500 || fundingUpdates.length >= 500) {
77
+ return { items: [], saturated: true };
78
+ }
37
79
  const ledgerItems = ledgerUpdates.flatMap((entry) => {
38
80
  if (typeFilter !== undefined &&
39
81
  (((0, index_js_1.isDepositDelta)(entry.delta) &&
@@ -56,18 +98,14 @@ const fetchActivityData = async (apiUrl, typeFilter, timeParams, assetRegistry,
56
98
  const item = (0, index_js_2.mapFundingActivity)(entry, constants_js_1.PROVIDER_KEY, resolveMarket);
57
99
  return item === null ? [] : [item];
58
100
  });
59
- const ledgerLiquidationHashes = new Set(ledgerUpdates
60
- .filter((entry) => (0, index_js_1.isLiquidationDelta)(entry.delta))
61
- .map((entry) => entry.hash));
62
- const liquidationItems = (0, index_js_2.mapLiquidationFills)(fills, constants_js_1.PROVIDER_KEY, timeParams.user, resolveMarket, ledgerLiquidationHashes);
63
- const merged = [...ledgerItems, ...fundingItems, ...liquidationItems].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
64
- if (!typeFilter) {
65
- return merged;
66
- }
67
- const typeSet = new Set(typeFilter);
68
- return merged.filter((item) => typeSet.has(item.type));
101
+ const merged = [...ledgerItems, ...fundingItems, ...(liquidations ?? [])];
102
+ const items = typeFilter
103
+ ? merged.filter((item) => typeFilter.includes(item.type))
104
+ : merged;
105
+ return { items, saturated: false };
69
106
  };
70
107
  const getActivity = async ({ client, apiUrl }, params, options) => {
108
+ const limit = (0, historyPagination_js_1.getHistoryLimit)(params.limit);
71
109
  const registry = (0, perps_sdk_1.getMarketRegistry)(client, constants_js_1.PROVIDER_KEY);
72
110
  if (needsMarkets(params.type)) {
73
111
  await registry.sync();
@@ -78,32 +116,18 @@ const getActivity = async ({ client, apiUrl }, params, options) => {
78
116
  await assetRegistry.sync();
79
117
  }
80
118
  const infoOpts = (0, infoClient_js_1.hlInfoOptions)(client, options);
81
- const limit = Math.min(params.limit ?? constants_js_1.DEFAULT_HISTORY_LIMIT, constants_js_1.MAX_HISTORY_LIMIT);
82
- const timeParams = {
83
- user: params.address,
84
- ...(params.startTime !== undefined || params.endTime !== undefined
85
- ? { startTime: params.startTime ?? 0 }
86
- : {}),
87
- ...(params.endTime === undefined ? {} : { endTime: params.endTime }),
88
- };
89
- const merged = await fetchActivityData(apiUrl, params.type, timeParams, assetRegistry, (coin) => registry.get(coin), infoOpts);
90
- const filtered = params.cursor === undefined
91
- ? merged
92
- : merged.filter((item) => new Date(item.timestamp).getTime() <
93
- Number.parseInt(params.cursor, 10));
94
- const hasMore = filtered.length > limit;
95
- const items = filtered.slice(0, limit);
96
- return {
97
- provider: constants_js_1.PROVIDER_KEY,
98
- items,
99
- pagination: {
100
- limit,
101
- hasMore,
102
- cursor: items.length > 0
103
- ? String(new Date(items[items.length - 1].timestamp).getTime())
104
- : undefined,
105
- },
106
- };
119
+ const needLiquidationFills = !params.type || params.type.includes(perps_types_1.ActivityType.LIQUIDATION);
120
+ let liquidationHistory;
121
+ const page = await (0, historyPagination_js_1.historyPage)(params, limit, (startTime, endTime, snapshotEnd) => {
122
+ if (needLiquidationFills && liquidationHistory === undefined) {
123
+ liquidationHistory = fetchLiquidationHistory(apiUrl, params.address, params.startTime ?? 0, snapshotEnd, (coin) => registry.get(coin), infoOpts);
124
+ }
125
+ return fetchActivityData(apiUrl, params.type, { user: params.address, startTime, endTime }, assetRegistry, (coin) => registry.get(coin), liquidationHistory, infoOpts);
126
+ }, (item) => ({
127
+ time: new Date(item.timestamp).getTime(),
128
+ key: `${item.type}:${item.id}`,
129
+ }), options?.signal);
130
+ return { provider: constants_js_1.PROVIDER_KEY, ...page };
107
131
  };
108
132
  exports.getActivity = getActivity;
109
133
  //# sourceMappingURL=getActivity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getActivity.js","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getActivity.js","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"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"}
@@ -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;AAMnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAcvD,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;AAiCD,eAAO,MAAM,QAAQ,GACnB,oBAAoB,kBAAkB,EACtC,QAAQ,cAAc,EACtB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,aAAa,CA8DvB,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;AAWvD,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,CA8CvB,CAAA"}
@@ -5,49 +5,41 @@ const perps_sdk_1 = require("@lifi/perps-sdk");
5
5
  const constants_js_1 = require("../constants.js");
6
6
  const index_js_1 = require("../utils/index.js");
7
7
  const infoClient_js_1 = require("../utils/infoClient.js");
8
- const compareFillsDesc = (a, b) => b.time - a.time || b.tid - a.tid;
9
- const encodeCursor = (fill) => `${fill.time}:${fill.tid}`;
10
- const decodeCursor = (cursor) => {
11
- const [time, tid] = cursor.split(':').map(Number);
12
- return { time, tid };
13
- };
8
+ const historyPagination_js_1 = require("./historyPagination.js");
14
9
  const getFills = async ({ client, apiUrl }, params, options) => {
10
+ const limit = (0, historyPagination_js_1.getHistoryLimit)(params.limit);
15
11
  const registry = (0, perps_sdk_1.getMarketRegistry)(client, constants_js_1.PROVIDER_KEY);
16
12
  await registry.sync();
17
13
  const infoOpts = (0, infoClient_js_1.hlInfoOptions)(client, options);
18
- const limit = Math.min(params.limit ?? constants_js_1.DEFAULT_HISTORY_LIMIT, constants_js_1.MAX_HISTORY_LIMIT);
19
- const useByTime = params.startTime !== undefined || params.endTime !== undefined;
20
- const allFills = useByTime
21
- ? await (0, infoClient_js_1.infoRequest)(apiUrl, {
22
- type: 'userFillsByTime',
23
- user: params.address,
24
- startTime: params.startTime ?? 0,
25
- ...(params.endTime !== undefined ? { endTime: params.endTime } : {}),
26
- }, infoOpts)
27
- : await (0, infoClient_js_1.infoRequest)(apiUrl, { type: 'userFills', user: params.address }, infoOpts);
28
- const sorted = [...allFills].sort(compareFillsDesc);
29
- const filtered = params.cursor === undefined
30
- ? sorted
31
- : sorted.filter((f) => compareFillsDesc(f, decodeCursor(params.cursor)) > 0);
32
- const hasMore = filtered.length > limit;
33
- const page = filtered.slice(0, limit);
34
- const items = page.flatMap((f) => {
35
- if ((0, index_js_1.assetIsOutcome)(f.coin)) {
36
- return [];
14
+ let useRecent = params.cursor === undefined &&
15
+ params.startTime === undefined &&
16
+ params.endTime === undefined;
17
+ const page = await (0, historyPagination_js_1.historyPage)(params, limit, async (startTime, endTime) => {
18
+ const fills = await (0, infoClient_js_1.infoRequest)(apiUrl, useRecent
19
+ ? { type: 'userFills', user: params.address }
20
+ : {
21
+ type: 'userFillsByTime',
22
+ user: params.address,
23
+ startTime,
24
+ endTime,
25
+ }, infoOpts);
26
+ useRecent = false;
27
+ if (fills.length >= 2000) {
28
+ return { items: [], saturated: true };
37
29
  }
38
- const market = registry.get(f.coin);
39
- return market === undefined ? [] : [(0, index_js_1.mapFill)(f, market)];
40
- });
41
- const lastPageFill = page[page.length - 1];
42
- return {
43
- provider: constants_js_1.PROVIDER_KEY,
44
- items,
45
- pagination: {
46
- limit,
47
- hasMore,
48
- cursor: lastPageFill ? encodeCursor(lastPageFill) : undefined,
49
- },
50
- };
30
+ const items = fills.flatMap((fill) => {
31
+ if ((0, index_js_1.assetIsOutcome)(fill.coin)) {
32
+ return [];
33
+ }
34
+ const market = registry.get(fill.coin);
35
+ return market === undefined ? [] : [(0, index_js_1.mapFill)(fill, market)];
36
+ });
37
+ return { items, saturated: false };
38
+ }, (fill) => ({
39
+ time: new Date(fill.createdAt).getTime(),
40
+ key: Number(fill.id),
41
+ }), options?.signal);
42
+ return { provider: constants_js_1.PROVIDER_KEY, ...page };
51
43
  };
52
44
  exports.getFills = getFills;
53
45
  //# sourceMappingURL=getFills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFills.js","sourceRoot":"","sources":["../../../src/services/getFills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getFills.js","sourceRoot":"","sources":["../../../src/services/getFills.ts"],"names":[],"mappings":";;;AAAA,+CAA2E;AAG3E,kDAA8C;AAG9C,gDAA2D;AAC3D,0DAAmE;AACnE,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,6BAAiB,EAAC,MAAM,EAAE,2BAAY,CAAC,CAAA;IACxD,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IACrB,MAAM,QAAQ,GAAG,IAAA,6BAAa,EAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE/C,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,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;QAC5D,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;AAlDY,QAAA,QAAQ,YAkDpB"}
@@ -0,0 +1,22 @@
1
+ type HistoryKey = string | number;
2
+ export declare const getHistoryLimit: (limit?: number) => number;
3
+ export declare function historyPage<T>(params: {
4
+ startTime?: number;
5
+ endTime?: number;
6
+ cursor?: string;
7
+ }, limit: number, fetchWindow: (startTime: number, endTime: number, snapshotEnd: number) => Promise<{
8
+ items: T[];
9
+ saturated: boolean;
10
+ }>, identify: (item: T) => {
11
+ time: number;
12
+ key: HistoryKey;
13
+ }, signal?: AbortSignal): Promise<{
14
+ items: T[];
15
+ pagination: {
16
+ limit: number;
17
+ hasMore: boolean;
18
+ cursor?: string;
19
+ };
20
+ }>;
21
+ export {};
22
+ //# sourceMappingURL=historyPagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"historyPagination.d.ts","sourceRoot":"","sources":["../../../src/services/historyPagination.ts"],"names":[],"mappings":"AAIA,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AAiBjC,eAAO,MAAM,eAAe,GAAI,cAA6B,KAAG,MAQ/D,CAAA;AAmCD,wBAAsB,WAAW,CAAC,CAAC,EACjC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EACjE,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,EAChD,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,UAAU,CAAA;CAAE,EACxD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IACT,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACjE,CAAC,CA2FD"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getHistoryLimit = void 0;
4
+ exports.historyPage = historyPage;
5
+ const perps_sdk_1 = require("@lifi/perps-sdk");
6
+ const perps_types_1 = require("@lifi/perps-types");
7
+ const constants_js_1 = require("../constants.js");
8
+ const compareKeys = (a, b) => typeof a === 'number' && typeof b === 'number'
9
+ ? b - a
10
+ : a < b
11
+ ? 1
12
+ : a > b
13
+ ? -1
14
+ : 0;
15
+ const getHistoryLimit = (limit = constants_js_1.DEFAULT_HISTORY_LIMIT) => {
16
+ if (!Number.isSafeInteger(limit) || limit < 1) {
17
+ throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, 'Hyperliquid history limit must be a positive safe integer');
18
+ }
19
+ return Math.min(limit, constants_js_1.MAX_HISTORY_LIMIT);
20
+ };
21
+ exports.getHistoryLimit = getHistoryLimit;
22
+ const decodeCursor = (cursor) => {
23
+ let value;
24
+ try {
25
+ value = JSON.parse(cursor);
26
+ }
27
+ catch {
28
+ throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, 'Invalid Hyperliquid history cursor');
29
+ }
30
+ if (!Array.isArray(value) ||
31
+ value.length !== 4 ||
32
+ !Number.isSafeInteger(value[0]) ||
33
+ (typeof value[1] !== 'string' && typeof value[1] !== 'number') ||
34
+ !Number.isSafeInteger(value[2]) ||
35
+ value[2] > value[0] ||
36
+ !Number.isSafeInteger(value[3]) ||
37
+ value[3] < value[0]) {
38
+ throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, 'Invalid Hyperliquid history cursor');
39
+ }
40
+ return {
41
+ time: value[0],
42
+ key: value[1],
43
+ startTime: value[2],
44
+ endTime: value[3],
45
+ };
46
+ };
47
+ async function historyPage(params, limit, fetchWindow, identify, signal) {
48
+ const boundary = params.cursor === undefined ? undefined : decodeCursor(params.cursor);
49
+ const lower = params.startTime ?? 0;
50
+ const snapshotEnd = boundary?.endTime ?? params.endTime ?? Date.now();
51
+ const upper = Math.min(snapshotEnd, boundary?.time ?? Infinity);
52
+ const windows = [];
53
+ if (boundary && boundary.startTime > lower) {
54
+ windows.push({ startTime: lower, endTime: boundary.startTime - 1 });
55
+ }
56
+ windows.push({
57
+ startTime: Math.max(lower, boundary?.startTime ?? lower),
58
+ endTime: upper,
59
+ });
60
+ const items = [];
61
+ let last;
62
+ while (windows.length > 0) {
63
+ signal?.throwIfAborted();
64
+ const window = windows.pop();
65
+ if (window.startTime > window.endTime) {
66
+ continue;
67
+ }
68
+ const result = await fetchWindow(window.startTime, window.endTime, snapshotEnd);
69
+ signal?.throwIfAborted();
70
+ if (result.saturated) {
71
+ if (window.startTime === window.endTime) {
72
+ throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ThirdPartyError, 'Hyperliquid history saturates a single millisecond; its time-only API cannot paginate this timestamp safely');
73
+ }
74
+ const midpoint = window.startTime + Math.floor((window.endTime - window.startTime) / 2);
75
+ windows.push({ startTime: window.startTime, endTime: midpoint });
76
+ windows.push({ startTime: midpoint + 1, endTime: window.endTime });
77
+ continue;
78
+ }
79
+ const sorted = result.items.sort((a, b) => {
80
+ const left = identify(a);
81
+ const right = identify(b);
82
+ return right.time - left.time || compareKeys(left.key, right.key);
83
+ });
84
+ for (const item of sorted) {
85
+ const identity = identify(item);
86
+ if (identity.time < window.startTime || identity.time > window.endTime) {
87
+ continue;
88
+ }
89
+ if (boundary &&
90
+ (identity.time > boundary.time ||
91
+ (identity.time === boundary.time &&
92
+ compareKeys(identity.key, boundary.key) <= 0))) {
93
+ continue;
94
+ }
95
+ if (items.length === limit) {
96
+ return {
97
+ items,
98
+ pagination: {
99
+ limit,
100
+ hasMore: true,
101
+ cursor: last &&
102
+ JSON.stringify([
103
+ last.time,
104
+ last.key,
105
+ last.startTime,
106
+ last.endTime,
107
+ ]),
108
+ },
109
+ };
110
+ }
111
+ items.push(item);
112
+ last = { ...identity, startTime: window.startTime, endTime: snapshotEnd };
113
+ }
114
+ }
115
+ return {
116
+ items,
117
+ pagination: {
118
+ limit,
119
+ hasMore: false,
120
+ cursor: last &&
121
+ JSON.stringify([last.time, last.key, last.startTime, last.endTime]),
122
+ },
123
+ };
124
+ }
125
+ //# sourceMappingURL=historyPagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"historyPagination.js","sourceRoot":"","sources":["../../../src/services/historyPagination.ts"],"names":[],"mappings":";;;AAgEA,kCAwGC;AAxKD,+CAA4C;AAC5C,mDAAkD;AAClD,kDAA0E;AAU1E,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,CAAa,EAAU,EAAE,CAC3D,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;IAC5C,CAAC,CAAC,CAAC,GAAG,CAAC;IACP,CAAC,CAAC,CAAC,GAAG,CAAC;QACL,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,CAAC,GAAG,CAAC;YACL,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAA;AAEJ,MAAM,eAAe,GAAG,CAAC,KAAK,GAAG,oCAAqB,EAAU,EAAE;IACvE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,2DAA2D,CAC5D,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,gCAAiB,CAAC,CAAA;AAC3C,CAAC,CAAA;AARY,QAAA,eAAe,mBAQ3B;AAED,MAAM,YAAY,GAAG,CAAC,MAAc,EAAmB,EAAE;IACvD,IAAI,KAAc,CAAA;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,oCAAoC,CACrC,CAAA;IACH,CAAC;IACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;QAC9D,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACnB,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EACnB,CAAC;QACD,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,oCAAoC,CACrC,CAAA;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACd,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACb,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACnB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;KAClB,CAAA;AACH,CAAC,CAAA;AAEM,KAAK,UAAU,WAAW,CAC/B,MAAiE,EACjE,KAAa,EACb,WAIgD,EAChD,QAAwD,EACxD,MAAoB;IAKpB,MAAM,QAAQ,GACZ,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACvE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,CAAC,CAAA;IACnC,MAAM,WAAW,GAAG,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACrE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAA;IAC/D,MAAM,OAAO,GAA6C,EAAE,CAAA;IAC5D,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;QACX,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,IAAI,KAAK,CAAC;QACxD,OAAO,EAAE,KAAK;KACf,CAAC,CAAA;IACF,MAAM,KAAK,GAAQ,EAAE,CAAA;IACrB,IAAI,IAAiC,CAAA;IACrC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;QACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAG,CAAA;QAC7B,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,EACd,WAAW,CACZ,CAAA;QACD,MAAM,EAAE,cAAc,EAAE,CAAA;QACxB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAM,IAAI,sBAAU,CAClB,4BAAc,CAAC,eAAe,EAC9B,6GAA6G,CAC9G,CAAA;YACH,CAAC;YAED,MAAM,QAAQ,GACZ,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;YACxE,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA;YAChE,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;YAClE,SAAQ;QACV,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACzB,OAAO,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;QACF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC/B,IAAI,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvE,SAAQ;YACV,CAAC;YACD,IACE,QAAQ;gBACR,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;oBAC5B,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;wBAC9B,WAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAClD,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO;oBACL,KAAK;oBACL,UAAU,EAAE;wBACV,KAAK;wBACL,OAAO,EAAE,IAAI;wBACb,MAAM,EACJ,IAAI;4BACJ,IAAI,CAAC,SAAS,CAAC;gCACb,IAAI,CAAC,IAAI;gCACT,IAAI,CAAC,GAAG;gCACR,IAAI,CAAC,SAAS;gCACd,IAAI,CAAC,OAAO;6BACb,CAAC;qBACL;iBACF,CAAA;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChB,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;QAC3E,CAAC;IACH,CAAC;IACD,OAAO;QACL,KAAK;QACL,UAAU,EAAE;YACV,KAAK;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EACJ,IAAI;gBACJ,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACtE;KACF,CAAA;AACH,CAAC"}
@@ -9,7 +9,12 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
9
9
  private readonly client;
10
10
  private readonly registry;
11
11
  private readonly abstractionByUser;
12
+ private readonly summaryUsers;
13
+ private readonly abstractionReadsByUser;
12
14
  private readonly spotRefs;
15
+ private spotWireEpoch;
16
+ private readonly latestSpotByUser;
17
+ private readonly revalueSpotBalances;
13
18
  private readonly unifiedSummaryByUser;
14
19
  private readonly latestPerpsByUser;
15
20
  private readonly heldSummaryByUser;
@@ -72,6 +77,7 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
72
77
  private fetchAbstractionMode;
73
78
  private handleActiveAssetData;
74
79
  private handleSpotState;
80
+ private emitSpotBalances;
75
81
  private fetchAvailableAfterMaintenance;
76
82
  }
77
83
  //# sourceMappingURL=HyperliquidWsProvider.d.ts.map
@@ -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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"}