@lifi/perps-sdk-provider-hyperliquid 0.0.0-preview-4d148cd → 0.0.0-preview-907e82f
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/services/getActivity.d.ts.map +1 -1
- package/dist/cjs/services/getActivity.js +5 -2
- package/dist/cjs/services/getActivity.js.map +1 -1
- package/dist/cjs/utils/mapActivity.d.ts +2 -2
- package/dist/cjs/utils/mapActivity.d.ts.map +1 -1
- package/dist/cjs/utils/mapActivity.js +9 -5
- package/dist/cjs/utils/mapActivity.js.map +1 -1
- package/dist/esm/services/getActivity.d.ts.map +1 -1
- package/dist/esm/services/getActivity.js +8 -2
- package/dist/esm/services/getActivity.js.map +1 -1
- package/dist/esm/utils/mapActivity.d.ts +10 -5
- package/dist/esm/utils/mapActivity.d.ts.map +1 -1
- package/dist/esm/utils/mapActivity.js +17 -8
- package/dist/esm/utils/mapActivity.js.map +1 -1
- package/dist/types/services/getActivity.d.ts.map +1 -1
- package/dist/types/utils/mapActivity.d.ts +10 -5
- package/dist/types/utils/mapActivity.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/services/getActivity.ts +11 -4
- package/src/utils/mapActivity.ts +22 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,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;AAOnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAiBvD,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;AA0ED,eAAO,MAAM,WAAW,GACtB,oBAAoB,kBAAkB,EACtC,QAAQ,iBAAiB,EACzB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,kBAAkB,CA8D5B,CAAA"}
|
|
@@ -25,7 +25,10 @@ const fetchActivityData = async (apiUrl, typeFilter, timeParams, resolveMarket,
|
|
|
25
25
|
const ledgerItems = ledgerUpdates
|
|
26
26
|
.map((entry) => (0, index_js_1.mapLedgerEntry)(entry, constants_js_1.PROVIDER_KEY, timeParams.user, resolveMarket))
|
|
27
27
|
.filter((item) => item !== null);
|
|
28
|
-
const fundingItems = fundingUpdates.
|
|
28
|
+
const fundingItems = fundingUpdates.flatMap((entry) => {
|
|
29
|
+
const item = (0, index_js_1.mapFundingActivity)(entry, constants_js_1.PROVIDER_KEY, resolveMarket);
|
|
30
|
+
return item === null ? [] : [item];
|
|
31
|
+
});
|
|
29
32
|
const merged = [...ledgerItems, ...fundingItems].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
30
33
|
if (!typeFilter) {
|
|
31
34
|
return merged;
|
|
@@ -49,7 +52,7 @@ const getActivity = async ({ client, apiUrl }, params, options) => {
|
|
|
49
52
|
startTime,
|
|
50
53
|
...(endTime === undefined ? {} : { endTime }),
|
|
51
54
|
};
|
|
52
|
-
const merged = await fetchActivityData(apiUrl, params.type, timeParams, (coin) => registry.
|
|
55
|
+
const merged = await fetchActivityData(apiUrl, params.type, timeParams, (coin) => registry.get(coin), infoOpts);
|
|
53
56
|
const filtered = params.cursor === undefined
|
|
54
57
|
? merged
|
|
55
58
|
: merged.filter((item) => new Date(item.timestamp).getTime() <
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getActivity.js","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":";;;AAAA,+CAA2E;
|
|
1
|
+
{"version":3,"file":"getActivity.js","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ActivityItem, FundingActivity, MarketDisplay } from '@lifi/perps-types';
|
|
2
2
|
import type { HlFundingUpdate, HlLedgerUpdate } from '../types/index.js';
|
|
3
|
-
export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay) => ActivityItem | null;
|
|
4
|
-
export declare const mapFundingActivity: (entry: HlFundingUpdate, providerKey: string, resolveMarket: (coin: string) => MarketDisplay) => FundingActivity;
|
|
3
|
+
export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay | undefined) => ActivityItem | null;
|
|
4
|
+
export declare const mapFundingActivity: (entry: HlFundingUpdate, providerKey: string, resolveMarket: (coin: string) => MarketDisplay | undefined) => FundingActivity | null;
|
|
5
5
|
//# sourceMappingURL=mapActivity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAEf,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAEf,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAyBxE,eAAO,MAAM,cAAc,GACzB,OAAO,cAAc,EACrB,aAAa,MAAM,EACnB,gBAAgB,MAAM,EACtB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,YAAY,GAAG,IAiJjB,CAAA;AAaD,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EACtB,aAAa,MAAM,EACnB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,eAAe,GAAG,IAgBpB,CAAA"}
|
|
@@ -104,10 +104,10 @@ const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket) => {
|
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
if ((0, index_js_1.isLiquidationDelta)(delta)) {
|
|
107
|
-
const liquidatedPositions = (delta.liquidatedPositions ?? []).
|
|
108
|
-
market
|
|
109
|
-
size: p.szi
|
|
110
|
-
})
|
|
107
|
+
const liquidatedPositions = (delta.liquidatedPositions ?? []).flatMap((p) => {
|
|
108
|
+
const market = resolveMarket(p.coin);
|
|
109
|
+
return market === undefined ? [] : [{ market, size: p.szi }];
|
|
110
|
+
});
|
|
111
111
|
if (liquidatedPositions.length === 0) {
|
|
112
112
|
return null;
|
|
113
113
|
}
|
|
@@ -128,13 +128,17 @@ const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket) => {
|
|
|
128
128
|
};
|
|
129
129
|
exports.mapLedgerEntry = mapLedgerEntry;
|
|
130
130
|
const mapFundingActivity = (entry, providerKey, resolveMarket) => {
|
|
131
|
+
const market = resolveMarket(entry.delta.coin);
|
|
132
|
+
if (market === undefined) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
131
135
|
const timestamp = new Date(entry.time).toISOString();
|
|
132
136
|
return {
|
|
133
137
|
id: `funding:${entry.delta.coin}:${timestamp}`,
|
|
134
138
|
provider: providerKey,
|
|
135
139
|
timestamp,
|
|
136
140
|
type: perps_types_1.ActivityType.FUNDING,
|
|
137
|
-
market
|
|
141
|
+
market,
|
|
138
142
|
amount: entry.delta.usdc,
|
|
139
143
|
positionSize: entry.delta.szi,
|
|
140
144
|
fundingRate: entry.delta.fundingRate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapActivity.js","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":";;;AASA,mDAAgD;AAEhD,gDAM0B;AAG1B,MAAM,oBAAoB,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"mapActivity.js","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,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;AAOnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAYvD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AA8DD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,GACtB,oBAAoB,kBAAkB,EACtC,QAAQ,iBAAiB,EACzB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,kBAAkB,CA8D5B,CAAA"}
|
|
@@ -22,7 +22,10 @@ const fetchActivityData = async (apiUrl, typeFilter, timeParams, resolveMarket,
|
|
|
22
22
|
const ledgerItems = ledgerUpdates
|
|
23
23
|
.map((entry) => mapLedgerEntry(entry, PROVIDER_KEY, timeParams.user, resolveMarket))
|
|
24
24
|
.filter((item) => item !== null);
|
|
25
|
-
const fundingItems = fundingUpdates.
|
|
25
|
+
const fundingItems = fundingUpdates.flatMap((entry) => {
|
|
26
|
+
const item = mapFundingActivity(entry, PROVIDER_KEY, resolveMarket);
|
|
27
|
+
return item === null ? [] : [item];
|
|
28
|
+
});
|
|
26
29
|
const merged = [...ledgerItems, ...fundingItems].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
27
30
|
if (!typeFilter) {
|
|
28
31
|
return merged;
|
|
@@ -60,7 +63,10 @@ export const getActivity = async ({ client, apiUrl }, params, options) => {
|
|
|
60
63
|
startTime,
|
|
61
64
|
...(endTime === undefined ? {} : { endTime }),
|
|
62
65
|
};
|
|
63
|
-
|
|
66
|
+
// `get`, not `require`: a coin the backend market list does not hold drops
|
|
67
|
+
// only its own row instead of rejecting the whole feed. The registry warns
|
|
68
|
+
// once per unresolved id. A delisted market still resolves, so its rows stay.
|
|
69
|
+
const merged = await fetchActivityData(apiUrl, params.type, timeParams, (coin) => registry.get(coin), infoOpts);
|
|
64
70
|
// Hyperliquid's endTime is inclusive — drop boundary items so we don't
|
|
65
71
|
// return the cursor row twice on the next page.
|
|
66
72
|
const filtered = params.cursor === undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getActivity.js","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA0B,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"getActivity.js","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,18 +7,23 @@ import type { HlFundingUpdate, HlLedgerUpdate } from '../types/index.js';
|
|
|
7
7
|
* `queriedAddress` matching the delta's `user` (OUT) or `destination` (IN).
|
|
8
8
|
* Returns null for unsupported delta types and for same-account moves, where
|
|
9
9
|
* `user === destination === queriedAddress`.
|
|
10
|
+
*
|
|
11
|
+
* @param resolveMarket - Market identity for a venue coin, or `undefined` when
|
|
12
|
+
* the backend market list does not hold it. A liquidated position the resolver
|
|
13
|
+
* cannot identify is dropped.
|
|
10
14
|
* @public
|
|
11
15
|
*/
|
|
12
|
-
export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay) => ActivityItem | null;
|
|
16
|
+
export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay | undefined) => ActivityItem | null;
|
|
13
17
|
/**
|
|
14
|
-
* Map a Hyperliquid funding ledger update to a normalized funding activity
|
|
15
|
-
* `
|
|
16
|
-
*
|
|
18
|
+
* Map a Hyperliquid funding ledger update to a normalized funding activity, or
|
|
19
|
+
* `null` when `resolveMarket` cannot identify the row's coin. `amount`,
|
|
20
|
+
* `positionSize`, and `fundingRate` retain the upstream decimal strings;
|
|
21
|
+
* `resolveMarket` supplies the provider-agnostic market metadata.
|
|
17
22
|
*
|
|
18
23
|
* `userFunding` entries all carry the zero hash, so a deterministic
|
|
19
24
|
* `funding:<coin>:<ISO time>` id is synthesized — funding accrues at most
|
|
20
25
|
* once per coin per hourly settlement, so the pair is unique per account.
|
|
21
26
|
* @public
|
|
22
27
|
*/
|
|
23
|
-
export declare const mapFundingActivity: (entry: HlFundingUpdate, providerKey: string, resolveMarket: (coin: string) => MarketDisplay) => FundingActivity;
|
|
28
|
+
export declare const mapFundingActivity: (entry: HlFundingUpdate, providerKey: string, resolveMarket: (coin: string) => MarketDisplay | undefined) => FundingActivity | null;
|
|
24
29
|
//# sourceMappingURL=mapActivity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAEf,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAYxE
|
|
1
|
+
{"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAEf,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAYxE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,cAAc,EACrB,aAAa,MAAM,EACnB,gBAAgB,MAAM,EACtB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,YAAY,GAAG,IAiJjB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EACtB,aAAa,MAAM,EACnB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,eAAe,GAAG,IAgBpB,CAAA"}
|
|
@@ -9,6 +9,10 @@ const HL_COLLATERAL_SYMBOL = 'USDC';
|
|
|
9
9
|
* `queriedAddress` matching the delta's `user` (OUT) or `destination` (IN).
|
|
10
10
|
* Returns null for unsupported delta types and for same-account moves, where
|
|
11
11
|
* `user === destination === queriedAddress`.
|
|
12
|
+
*
|
|
13
|
+
* @param resolveMarket - Market identity for a venue coin, or `undefined` when
|
|
14
|
+
* the backend market list does not hold it. A liquidated position the resolver
|
|
15
|
+
* cannot identify is dropped.
|
|
12
16
|
* @public
|
|
13
17
|
*/
|
|
14
18
|
export const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket) => {
|
|
@@ -120,10 +124,10 @@ export const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket
|
|
|
120
124
|
};
|
|
121
125
|
}
|
|
122
126
|
if (isLiquidationDelta(delta)) {
|
|
123
|
-
const liquidatedPositions = (delta.liquidatedPositions ?? []).
|
|
124
|
-
market
|
|
125
|
-
size: p.szi
|
|
126
|
-
})
|
|
127
|
+
const liquidatedPositions = (delta.liquidatedPositions ?? []).flatMap((p) => {
|
|
128
|
+
const market = resolveMarket(p.coin);
|
|
129
|
+
return market === undefined ? [] : [{ market, size: p.szi }];
|
|
130
|
+
});
|
|
127
131
|
// Liquidation rows must point to at least one market. Drop entries with
|
|
128
132
|
// missing/empty positions so downstream consumers can rely on that
|
|
129
133
|
// invariant and avoid rendering a market-less liquidation card.
|
|
@@ -146,9 +150,10 @@ export const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket
|
|
|
146
150
|
return null;
|
|
147
151
|
};
|
|
148
152
|
/**
|
|
149
|
-
* Map a Hyperliquid funding ledger update to a normalized funding activity
|
|
150
|
-
* `
|
|
151
|
-
*
|
|
153
|
+
* Map a Hyperliquid funding ledger update to a normalized funding activity, or
|
|
154
|
+
* `null` when `resolveMarket` cannot identify the row's coin. `amount`,
|
|
155
|
+
* `positionSize`, and `fundingRate` retain the upstream decimal strings;
|
|
156
|
+
* `resolveMarket` supplies the provider-agnostic market metadata.
|
|
152
157
|
*
|
|
153
158
|
* `userFunding` entries all carry the zero hash, so a deterministic
|
|
154
159
|
* `funding:<coin>:<ISO time>` id is synthesized — funding accrues at most
|
|
@@ -156,13 +161,17 @@ export const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket
|
|
|
156
161
|
* @public
|
|
157
162
|
*/
|
|
158
163
|
export const mapFundingActivity = (entry, providerKey, resolveMarket) => {
|
|
164
|
+
const market = resolveMarket(entry.delta.coin);
|
|
165
|
+
if (market === undefined) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
159
168
|
const timestamp = new Date(entry.time).toISOString();
|
|
160
169
|
return {
|
|
161
170
|
id: `funding:${entry.delta.coin}:${timestamp}`,
|
|
162
171
|
provider: providerKey,
|
|
163
172
|
timestamp,
|
|
164
173
|
type: ActivityType.FUNDING,
|
|
165
|
-
market
|
|
174
|
+
market,
|
|
166
175
|
amount: entry.delta.usdc,
|
|
167
176
|
positionSize: entry.delta.szi,
|
|
168
177
|
fundingRate: entry.delta.fundingRate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapActivity.js","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,mBAAmB,CAAA;AAE1B,qEAAqE;AACrE,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEnC
|
|
1
|
+
{"version":3,"file":"mapActivity.js","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,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;AAOnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAYvD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AA8DD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,GACtB,oBAAoB,kBAAkB,EACtC,QAAQ,iBAAiB,EACzB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,kBAAkB,CA8D5B,CAAA"}
|
|
@@ -7,18 +7,23 @@ import type { HlFundingUpdate, HlLedgerUpdate } from '../types/index.js';
|
|
|
7
7
|
* `queriedAddress` matching the delta's `user` (OUT) or `destination` (IN).
|
|
8
8
|
* Returns null for unsupported delta types and for same-account moves, where
|
|
9
9
|
* `user === destination === queriedAddress`.
|
|
10
|
+
*
|
|
11
|
+
* @param resolveMarket - Market identity for a venue coin, or `undefined` when
|
|
12
|
+
* the backend market list does not hold it. A liquidated position the resolver
|
|
13
|
+
* cannot identify is dropped.
|
|
10
14
|
* @public
|
|
11
15
|
*/
|
|
12
|
-
export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay) => ActivityItem | null;
|
|
16
|
+
export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay | undefined) => ActivityItem | null;
|
|
13
17
|
/**
|
|
14
|
-
* Map a Hyperliquid funding ledger update to a normalized funding activity
|
|
15
|
-
* `
|
|
16
|
-
*
|
|
18
|
+
* Map a Hyperliquid funding ledger update to a normalized funding activity, or
|
|
19
|
+
* `null` when `resolveMarket` cannot identify the row's coin. `amount`,
|
|
20
|
+
* `positionSize`, and `fundingRate` retain the upstream decimal strings;
|
|
21
|
+
* `resolveMarket` supplies the provider-agnostic market metadata.
|
|
17
22
|
*
|
|
18
23
|
* `userFunding` entries all carry the zero hash, so a deterministic
|
|
19
24
|
* `funding:<coin>:<ISO time>` id is synthesized — funding accrues at most
|
|
20
25
|
* once per coin per hourly settlement, so the pair is unique per account.
|
|
21
26
|
* @public
|
|
22
27
|
*/
|
|
23
|
-
export declare const mapFundingActivity: (entry: HlFundingUpdate, providerKey: string, resolveMarket: (coin: string) => MarketDisplay) => FundingActivity;
|
|
28
|
+
export declare const mapFundingActivity: (entry: HlFundingUpdate, providerKey: string, resolveMarket: (coin: string) => MarketDisplay | undefined) => FundingActivity | null;
|
|
24
29
|
//# sourceMappingURL=mapActivity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAEf,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAYxE
|
|
1
|
+
{"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAEf,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAYxE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,cAAc,EACrB,aAAa,MAAM,EACnB,gBAAgB,MAAM,EACtB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,YAAY,GAAG,IAiJjB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EACtB,aAAa,MAAM,EACnB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,eAAe,GAAG,IAgBpB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/perps-sdk-provider-hyperliquid",
|
|
3
|
-
"version": "0.0.0-preview-
|
|
3
|
+
"version": "0.0.0-preview-907e82f",
|
|
4
4
|
"description": "Hyperliquid provider plugin for @lifi/perps-sdk",
|
|
5
5
|
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
6
|
"bugs": {
|
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"big.js": "^7.0.1",
|
|
51
51
|
"viem": "^2.55.18",
|
|
52
|
-
"@lifi/perps-types": "^0.0.0-preview-
|
|
52
|
+
"@lifi/perps-types": "^0.0.0-preview-907e82f"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@lifi/perps-sdk": "^0.0.0-preview-
|
|
55
|
+
"@lifi/perps-sdk": "^0.0.0-preview-907e82f"
|
|
56
56
|
},
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public"
|
|
@@ -2,6 +2,7 @@ import { getMarketRegistry, type SDKRequestOptions } from '@lifi/perps-sdk'
|
|
|
2
2
|
import type {
|
|
3
3
|
ActivitiesResponse,
|
|
4
4
|
ActivityItem,
|
|
5
|
+
FundingActivity,
|
|
5
6
|
MarketDisplay,
|
|
6
7
|
} from '@lifi/perps-types'
|
|
7
8
|
import { ActivityType } from '@lifi/perps-types'
|
|
@@ -55,7 +56,7 @@ const fetchActivityData = async (
|
|
|
55
56
|
apiUrl: string,
|
|
56
57
|
typeFilter: ActivityType[] | undefined,
|
|
57
58
|
timeParams: { user: Address; startTime: number; endTime?: number },
|
|
58
|
-
resolveMarket: (coin: string) => MarketDisplay,
|
|
59
|
+
resolveMarket: (coin: string) => MarketDisplay | undefined,
|
|
59
60
|
options?: InfoRequestOptions
|
|
60
61
|
): Promise<ActivityItem[]> => {
|
|
61
62
|
const needLedger =
|
|
@@ -85,8 +86,11 @@ const fetchActivityData = async (
|
|
|
85
86
|
)
|
|
86
87
|
.filter((item): item is ActivityItem => item !== null)
|
|
87
88
|
|
|
88
|
-
const fundingItems: ActivityItem[] = fundingUpdates.
|
|
89
|
-
|
|
89
|
+
const fundingItems: ActivityItem[] = fundingUpdates.flatMap(
|
|
90
|
+
(entry): FundingActivity[] => {
|
|
91
|
+
const item = mapFundingActivity(entry, PROVIDER_KEY, resolveMarket)
|
|
92
|
+
return item === null ? [] : [item]
|
|
93
|
+
}
|
|
90
94
|
)
|
|
91
95
|
|
|
92
96
|
const merged = [...ledgerItems, ...fundingItems].sort(
|
|
@@ -141,11 +145,14 @@ export const getActivity = async (
|
|
|
141
145
|
...(endTime === undefined ? {} : { endTime }),
|
|
142
146
|
}
|
|
143
147
|
|
|
148
|
+
// `get`, not `require`: a coin the backend market list does not hold drops
|
|
149
|
+
// only its own row instead of rejecting the whole feed. The registry warns
|
|
150
|
+
// once per unresolved id. A delisted market still resolves, so its rows stay.
|
|
144
151
|
const merged = await fetchActivityData(
|
|
145
152
|
apiUrl,
|
|
146
153
|
params.type,
|
|
147
154
|
timeParams,
|
|
148
|
-
(coin) => registry.
|
|
155
|
+
(coin) => registry.get(coin),
|
|
149
156
|
infoOpts
|
|
150
157
|
)
|
|
151
158
|
|
package/src/utils/mapActivity.ts
CHANGED
|
@@ -27,13 +27,17 @@ const HL_COLLATERAL_SYMBOL = 'USDC'
|
|
|
27
27
|
* `queriedAddress` matching the delta's `user` (OUT) or `destination` (IN).
|
|
28
28
|
* Returns null for unsupported delta types and for same-account moves, where
|
|
29
29
|
* `user === destination === queriedAddress`.
|
|
30
|
+
*
|
|
31
|
+
* @param resolveMarket - Market identity for a venue coin, or `undefined` when
|
|
32
|
+
* the backend market list does not hold it. A liquidated position the resolver
|
|
33
|
+
* cannot identify is dropped.
|
|
30
34
|
* @public
|
|
31
35
|
*/
|
|
32
36
|
export const mapLedgerEntry = (
|
|
33
37
|
entry: HlLedgerUpdate,
|
|
34
38
|
providerKey: string,
|
|
35
39
|
queriedAddress: string,
|
|
36
|
-
resolveMarket: (coin: string) => MarketDisplay
|
|
40
|
+
resolveMarket: (coin: string) => MarketDisplay | undefined
|
|
37
41
|
): ActivityItem | null => {
|
|
38
42
|
const { delta } = entry
|
|
39
43
|
const base = {
|
|
@@ -152,10 +156,12 @@ export const mapLedgerEntry = (
|
|
|
152
156
|
}
|
|
153
157
|
|
|
154
158
|
if (isLiquidationDelta(delta)) {
|
|
155
|
-
const liquidatedPositions = (delta.liquidatedPositions ?? []).
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
+
const liquidatedPositions = (delta.liquidatedPositions ?? []).flatMap(
|
|
160
|
+
(p) => {
|
|
161
|
+
const market = resolveMarket(p.coin)
|
|
162
|
+
return market === undefined ? [] : [{ market, size: p.szi }]
|
|
163
|
+
}
|
|
164
|
+
)
|
|
159
165
|
// Liquidation rows must point to at least one market. Drop entries with
|
|
160
166
|
// missing/empty positions so downstream consumers can rely on that
|
|
161
167
|
// invariant and avoid rendering a market-less liquidation card.
|
|
@@ -180,9 +186,10 @@ export const mapLedgerEntry = (
|
|
|
180
186
|
}
|
|
181
187
|
|
|
182
188
|
/**
|
|
183
|
-
* Map a Hyperliquid funding ledger update to a normalized funding activity
|
|
184
|
-
* `
|
|
185
|
-
*
|
|
189
|
+
* Map a Hyperliquid funding ledger update to a normalized funding activity, or
|
|
190
|
+
* `null` when `resolveMarket` cannot identify the row's coin. `amount`,
|
|
191
|
+
* `positionSize`, and `fundingRate` retain the upstream decimal strings;
|
|
192
|
+
* `resolveMarket` supplies the provider-agnostic market metadata.
|
|
186
193
|
*
|
|
187
194
|
* `userFunding` entries all carry the zero hash, so a deterministic
|
|
188
195
|
* `funding:<coin>:<ISO time>` id is synthesized — funding accrues at most
|
|
@@ -192,15 +199,19 @@ export const mapLedgerEntry = (
|
|
|
192
199
|
export const mapFundingActivity = (
|
|
193
200
|
entry: HlFundingUpdate,
|
|
194
201
|
providerKey: string,
|
|
195
|
-
resolveMarket: (coin: string) => MarketDisplay
|
|
196
|
-
): FundingActivity => {
|
|
202
|
+
resolveMarket: (coin: string) => MarketDisplay | undefined
|
|
203
|
+
): FundingActivity | null => {
|
|
204
|
+
const market = resolveMarket(entry.delta.coin)
|
|
205
|
+
if (market === undefined) {
|
|
206
|
+
return null
|
|
207
|
+
}
|
|
197
208
|
const timestamp = new Date(entry.time).toISOString()
|
|
198
209
|
return {
|
|
199
210
|
id: `funding:${entry.delta.coin}:${timestamp}`,
|
|
200
211
|
provider: providerKey,
|
|
201
212
|
timestamp,
|
|
202
213
|
type: ActivityType.FUNDING,
|
|
203
|
-
market
|
|
214
|
+
market,
|
|
204
215
|
amount: entry.delta.usdc,
|
|
205
216
|
positionSize: entry.delta.szi,
|
|
206
217
|
fundingRate: entry.delta.fundingRate,
|