@lifi/perps-sdk-provider-hyperliquid 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/services/getAccount.d.ts.map +1 -1
- package/dist/cjs/services/getAccount.js +1 -11
- package/dist/cjs/services/getAccount.js.map +1 -1
- package/dist/cjs/types/account.d.ts +1 -0
- package/dist/cjs/types/account.d.ts.map +1 -1
- package/dist/cjs/types/account.js +1 -0
- package/dist/cjs/types/account.js.map +1 -1
- package/dist/cjs/utils/assetLogo.d.ts +5 -0
- package/dist/cjs/utils/assetLogo.d.ts.map +1 -0
- package/dist/cjs/utils/assetLogo.js +47 -0
- package/dist/cjs/utils/assetLogo.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +2 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +7 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/marketDisplay.d.ts.map +1 -1
- package/dist/cjs/utils/marketDisplay.js +5 -2
- package/dist/cjs/utils/marketDisplay.js.map +1 -1
- package/dist/cjs/utils/spotBalance.d.ts.map +1 -1
- package/dist/cjs/utils/spotBalance.js +2 -0
- package/dist/cjs/utils/spotBalance.js.map +1 -1
- package/dist/cjs/utils/spotCollateral.d.ts +7 -0
- package/dist/cjs/utils/spotCollateral.d.ts.map +1 -0
- package/dist/cjs/utils/spotCollateral.js +29 -0
- package/dist/cjs/utils/spotCollateral.js.map +1 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +15 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.js +184 -27
- package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/esm/services/getAccount.d.ts.map +1 -1
- package/dist/esm/services/getAccount.js +2 -13
- package/dist/esm/services/getAccount.js.map +1 -1
- package/dist/esm/types/account.d.ts +3 -1
- package/dist/esm/types/account.d.ts.map +1 -1
- package/dist/esm/types/account.js +3 -1
- package/dist/esm/types/account.js.map +1 -1
- package/dist/esm/utils/assetLogo.d.ts +20 -0
- package/dist/esm/utils/assetLogo.d.ts.map +1 -0
- package/dist/esm/utils/assetLogo.js +74 -0
- package/dist/esm/utils/assetLogo.js.map +1 -0
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/marketDisplay.d.ts +5 -4
- package/dist/esm/utils/marketDisplay.d.ts.map +1 -1
- package/dist/esm/utils/marketDisplay.js +10 -6
- package/dist/esm/utils/marketDisplay.js.map +1 -1
- package/dist/esm/utils/spotBalance.d.ts +3 -1
- package/dist/esm/utils/spotBalance.d.ts.map +1 -1
- package/dist/esm/utils/spotBalance.js +5 -1
- package/dist/esm/utils/spotBalance.js.map +1 -1
- package/dist/esm/utils/spotCollateral.d.ts +14 -0
- package/dist/esm/utils/spotCollateral.d.ts.map +1 -0
- package/dist/esm/utils/spotCollateral.js +39 -0
- package/dist/esm/utils/spotCollateral.js.map +1 -0
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts +23 -1
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/esm/websocket/HyperliquidWsProvider.js +223 -17
- package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/types/services/getAccount.d.ts.map +1 -1
- package/dist/types/types/account.d.ts +3 -1
- package/dist/types/types/account.d.ts.map +1 -1
- package/dist/types/utils/assetLogo.d.ts +20 -0
- package/dist/types/utils/assetLogo.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/marketDisplay.d.ts +5 -4
- package/dist/types/utils/marketDisplay.d.ts.map +1 -1
- package/dist/types/utils/spotBalance.d.ts +3 -1
- package/dist/types/utils/spotBalance.d.ts.map +1 -1
- package/dist/types/utils/spotCollateral.d.ts +14 -0
- package/dist/types/utils/spotCollateral.d.ts.map +1 -0
- package/dist/types/websocket/HyperliquidWsProvider.d.ts +23 -1
- package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/services/getAccount.ts +8 -12
- package/src/types/account.ts +3 -1
- package/src/utils/assetLogo.ts +85 -0
- package/src/utils/index.ts +6 -0
- package/src/utils/marketDisplay.ts +15 -10
- package/src/utils/spotBalance.ts +5 -1
- package/src/utils/spotCollateral.ts +50 -0
- package/src/websocket/HyperliquidWsProvider.ts +304 -18
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetLogo.d.ts","sourceRoot":"","sources":["../../../src/utils/assetLogo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAiD9C,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAEhD,CAAA;AAQD,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,GAAI,OAAO,KAAK,KAAG,KAGhD,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,WAAW,MAAM,GAAG,IAAI,KAAG,MAKpE,CAAA"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const HL_COIN_CDN = 'https://app.hyperliquid.xyz/coins';
|
|
2
|
+
const HYPE_LOGO_URI = 'https://static.debank.com/image/hyper_token/logo_url/hyper/0b3e288cfe418e9ce69eef4c96374583.png';
|
|
3
|
+
/**
|
|
4
|
+
* Per-symbol logo overrides applied on top of the derived HL CDN URL, keyed by
|
|
5
|
+
* `Asset.displaySymbol`. Each entry notes why the default URL is wrong.
|
|
6
|
+
*/
|
|
7
|
+
const BASE_ASSET_LOGO_OVERRIDES = {
|
|
8
|
+
// coins/HYPE.svg is low quality; the debank hyper_token PNG is the canonical icon.
|
|
9
|
+
HYPE: HYPE_LOGO_URI,
|
|
10
|
+
// coins/USDC_spot.svg doesn't exist — HL's app 200s with its SPA shell HTML
|
|
11
|
+
// instead of a 404, so the collateral asset needs the non-suffixed path.
|
|
12
|
+
USDC: `${HL_COIN_CDN}/USDC.svg`,
|
|
13
|
+
// Neither coins/USDT0.svg nor coins/USDT0_spot.svg serves an image (both 200
|
|
14
|
+
// with the SPA shell); USDT0 is HL's USDT deployment, so reuse USDT's icon.
|
|
15
|
+
USDT0: `${HL_COIN_CDN}/USDT.svg`,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Underlying spot symbol for each Unit-bridged token (`fullName` starts with
|
|
19
|
+
* "Unit"), keyed by the token `name`. Hand-verified that `coins/<symbol>.svg`
|
|
20
|
+
* serves a real image; the Unit-suffixed `NAME_spot.svg` path 200s with HTML
|
|
21
|
+
* instead. Unit tokens absent here have no working HL icon and intentionally
|
|
22
|
+
* resolve to '' (client letter avatar).
|
|
23
|
+
*/
|
|
24
|
+
const UNIT_UNDERLYING_SYMBOL = {
|
|
25
|
+
UBTC: 'BTC',
|
|
26
|
+
UETH: 'ETH',
|
|
27
|
+
USOL: 'SOL',
|
|
28
|
+
UFART: 'FARTCOIN',
|
|
29
|
+
UPUMP: 'PUMP',
|
|
30
|
+
UUUSPX: 'SPX',
|
|
31
|
+
UVIRT: 'VIRTUAL',
|
|
32
|
+
UBONK: 'BONK',
|
|
33
|
+
UDOGE: 'DOGE',
|
|
34
|
+
UZEC: 'ZEC',
|
|
35
|
+
UMON: 'MON',
|
|
36
|
+
UWLD: 'WLD',
|
|
37
|
+
UENA: 'ENA',
|
|
38
|
+
UXPL: 'XPL',
|
|
39
|
+
UAVAX: 'AVAX',
|
|
40
|
+
UMEGA: 'MEGA',
|
|
41
|
+
UANSEM: 'ANSEM',
|
|
42
|
+
};
|
|
43
|
+
/** Token `name`s of the Unit-bridged HL spot assets. */
|
|
44
|
+
export const UNIT_TOKEN_NAMES = new Set(Object.keys(UNIT_UNDERLYING_SYMBOL));
|
|
45
|
+
/** Logo URI for a Unit-bridged spot token; '' when the underlying is unmapped. */
|
|
46
|
+
const unitSpotLogoURI = (name) => {
|
|
47
|
+
const underlying = UNIT_UNDERLYING_SYMBOL[name];
|
|
48
|
+
return underlying === undefined ? '' : `${HL_COIN_CDN}/${underlying}.svg`;
|
|
49
|
+
};
|
|
50
|
+
/** Return `asset` with its `logoURI` replaced when a display-symbol override exists. */
|
|
51
|
+
export const applyLogoOverride = (asset) => {
|
|
52
|
+
const override = BASE_ASSET_LOGO_OVERRIDES[asset.displaySymbol];
|
|
53
|
+
return override === undefined ? asset : { ...asset, logoURI: override };
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Override-aware logo URI for a Hyperliquid spot token. Base rule is
|
|
57
|
+
* `coins/${name}_spot.svg`; a Unit-bridged token (`fullName` starts with
|
|
58
|
+
* "Unit") resolves to its underlying's icon instead; the override table wins
|
|
59
|
+
* over both.
|
|
60
|
+
*
|
|
61
|
+
* When `fullName` is absent — spot *balances* (`HlSpotBalance`) carry no
|
|
62
|
+
* `fullName` and this issue deliberately does not fetch `spotMeta` on the
|
|
63
|
+
* account path — the derivation degrades to the symbol-keyed override + base
|
|
64
|
+
* `_spot` rule, so a Unit-bridged balance uses the base rule rather than its
|
|
65
|
+
* underlying's icon. The registry path (which has `fullName`) keeps full Unit
|
|
66
|
+
* resolution.
|
|
67
|
+
*/
|
|
68
|
+
export const spotLogoURI = (name, fullName) => {
|
|
69
|
+
const base = fullName?.startsWith('Unit')
|
|
70
|
+
? unitSpotLogoURI(name)
|
|
71
|
+
: `${HL_COIN_CDN}/${name}_spot.svg`;
|
|
72
|
+
return BASE_ASSET_LOGO_OVERRIDES[name] ?? base;
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=assetLogo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetLogo.js","sourceRoot":"","sources":["../../../src/utils/assetLogo.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,mCAAmC,CAAA;AAEvD,MAAM,aAAa,GACjB,iGAAiG,CAAA;AAEnG;;;GAGG;AACH,MAAM,yBAAyB,GAAqC;IAClE,mFAAmF;IACnF,IAAI,EAAE,aAAa;IACnB,4EAA4E;IAC5E,yEAAyE;IACzE,IAAI,EAAE,GAAG,WAAW,WAAW;IAC/B,6EAA6E;IAC7E,4EAA4E;IAC5E,KAAK,EAAE,GAAG,WAAW,WAAW;CACjC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAqC;IAC/D,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,OAAO;CAChB,CAAA;AAED,wDAAwD;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAC1D,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CACpC,CAAA;AAED,kFAAkF;AAClF,MAAM,eAAe,GAAG,CAAC,IAAY,EAAU,EAAE;IAC/C,MAAM,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAC/C,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,UAAU,MAAM,CAAA;AAC3E,CAAC,CAAA;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAS,EAAE;IACvD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC/D,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AACzE,CAAC,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,QAAwB,EAAU,EAAE;IAC5E,MAAM,IAAI,GAAG,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,WAAW,CAAA;IACrC,OAAO,yBAAyB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AAChD,CAAC,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { assetIsSpot, calculateAssetId, getProviderIndex } from './assetId.js';
|
|
2
|
+
export { applyLogoOverride, spotLogoURI, UNIT_TOKEN_NAMES, } from './assetLogo.js';
|
|
2
3
|
export { decodeCompressedJson, decodeFastAssetCtxs, } from './decodeFastAssetCtxs.js';
|
|
3
4
|
export type { InfoRequestOptions } from './infoClient.js';
|
|
4
5
|
export { hlInfoOptions, infoRequest } from './infoClient.js';
|
|
@@ -13,4 +14,5 @@ export { coinAsset, perpsDexNames } from './marketDisplay.js';
|
|
|
13
14
|
export { formatOrderPrice, formatOrderSize, getMaxPriceDecimals, } from './orderFormatting.js';
|
|
14
15
|
export { priceStepToAggregation } from './priceStepToAggregation.js';
|
|
15
16
|
export { spotAssetFromToken, spotBalance, spotPriceById, } from './spotBalance.js';
|
|
17
|
+
export { partitionSpotBalances, type SpotPartition } from './spotCollateral.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// for the package's utility surface. Internal modules import per-file paths
|
|
3
3
|
// (e.g. `./assetId.js`, `./mapFill.js`) directly.
|
|
4
4
|
export { assetIsSpot, calculateAssetId, getProviderIndex } from './assetId.js';
|
|
5
|
+
export { applyLogoOverride, spotLogoURI, UNIT_TOKEN_NAMES, } from './assetLogo.js';
|
|
5
6
|
export { decodeCompressedJson, decodeFastAssetCtxs, } from './decodeFastAssetCtxs.js';
|
|
6
7
|
export { hlInfoOptions, infoRequest } from './infoClient.js';
|
|
7
8
|
export { calculateLiquidationPrice, calculateMaintenanceMarginRate, } from './liquidation.js';
|
|
@@ -15,4 +16,5 @@ export { coinAsset, perpsDexNames } from './marketDisplay.js';
|
|
|
15
16
|
export { formatOrderPrice, formatOrderSize, getMaxPriceDecimals, } from './orderFormatting.js';
|
|
16
17
|
export { priceStepToAggregation } from './priceStepToAggregation.js';
|
|
17
18
|
export { spotAssetFromToken, spotBalance, spotPriceById, } from './spotBalance.js';
|
|
19
|
+
export { partitionSpotBalances } from './spotCollateral.js';
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,kDAAkD;AAElD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4EAA4E;AAC5E,kDAAkD;AAElD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,qBAAqB,EAAsB,MAAM,qBAAqB,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Asset, Market } from '@lifi/perps-types';
|
|
2
2
|
/**
|
|
3
|
-
* Synthesise the {@link Asset} for a Hyperliquid wire coin. `id`
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* Synthesise the {@link Asset} for a Hyperliquid wire coin. `id` keeps the raw
|
|
4
|
+
* coin — the logo CDN is keyed by it, HIP-3 `dex:` prefix included.
|
|
5
|
+
* `displaySymbol` drops the prefix: the category is carried by `categoryId`,
|
|
6
|
+
* never by the display string. `logoURI` is the CDN URL corrected by the
|
|
7
|
+
* shared override table (see {@link applyLogoOverride}).
|
|
7
8
|
* @public
|
|
8
9
|
*/
|
|
9
10
|
export declare const coinAsset: (coin: string) => Asset;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketDisplay.d.ts","sourceRoot":"","sources":["../../../src/utils/marketDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"marketDisplay.d.ts","sourceRoot":"","sources":["../../../src/utils/marketDisplay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAStD;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,KAQrC,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,SAAS,MAAM,EAAE,KAAG,MAAM,EAShE,CAAA"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { MAIN_DEX_NAME, MAIN_MARKET_ID, PROVIDER_KEY, SPOT_MARKET_ID, } from '../constants.js';
|
|
2
|
+
import { applyLogoOverride } from './assetLogo.js';
|
|
2
3
|
/**
|
|
3
|
-
* Synthesise the {@link Asset} for a Hyperliquid wire coin. `id`
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Synthesise the {@link Asset} for a Hyperliquid wire coin. `id` keeps the raw
|
|
5
|
+
* coin — the logo CDN is keyed by it, HIP-3 `dex:` prefix included.
|
|
6
|
+
* `displaySymbol` drops the prefix: the category is carried by `categoryId`,
|
|
7
|
+
* never by the display string. `logoURI` is the CDN URL corrected by the
|
|
8
|
+
* shared override table (see {@link applyLogoOverride}).
|
|
7
9
|
* @public
|
|
8
10
|
*/
|
|
9
|
-
export const coinAsset = (coin) => ({
|
|
11
|
+
export const coinAsset = (coin) => applyLogoOverride({
|
|
10
12
|
providerId: PROVIDER_KEY,
|
|
11
13
|
id: coin,
|
|
12
|
-
displaySymbol: coin.includes(':')
|
|
14
|
+
displaySymbol: coin.includes(':')
|
|
15
|
+
? coin.slice(coin.indexOf(':') + 1)
|
|
16
|
+
: coin,
|
|
13
17
|
logoURI: `https://app.hyperliquid.xyz/coins/${coin}.svg`,
|
|
14
18
|
});
|
|
15
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketDisplay.js","sourceRoot":"","sources":["../../../src/utils/marketDisplay.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"marketDisplay.js","sourceRoot":"","sources":["../../../src/utils/marketDisplay.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAS,EAAE,CAC/C,iBAAiB,CAAC;IAChB,UAAU,EAAE,YAAY;IACxB,EAAE,EAAE,IAAI;IACR,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,IAAI;IACR,OAAO,EAAE,qCAAqC,IAAI,MAAM;CACzD,CAAC,CAAA;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAA0B,EAAY,EAAE;IACpE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;YACpC,SAAQ;QACV,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAA;AACnB,CAAC,CAAA"}
|
|
@@ -10,7 +10,9 @@ export declare const spotPriceById: (markets: readonly Market[], priceByMarketId
|
|
|
10
10
|
/**
|
|
11
11
|
* The held spot {@link Asset} for an HL balance: the venue token index
|
|
12
12
|
* (`b.token`) as `Asset.id` — equal to that token's spot `Market.baseAsset.id`
|
|
13
|
-
* — with display fields derived from the coin.
|
|
13
|
+
* — with display fields derived from the coin and the override-aware spot logo.
|
|
14
|
+
* `HlSpotBalance` carries no `fullName`, so Unit-bridged balances take the base
|
|
15
|
+
* `_spot` rule (see {@link spotLogoURI}).
|
|
14
16
|
*/
|
|
15
17
|
export declare const spotAssetFromToken: (b: HlSpotBalance) => Asset;
|
|
16
18
|
/** Assemble a typed spot {@link Balance} from its resolved asset and raw size. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotBalance.d.ts","sourceRoot":"","sources":["../../../src/utils/spotBalance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"spotBalance.d.ts","sourceRoot":"","sources":["../../../src/utils/spotBalance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAItD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,SAAS,MAAM,EAAE,EAC1B,iBAAiB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3C,GAAG,CAAC,MAAM,EAAE,MAAM,CAapB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAI,GAAG,aAAa,KAAG,KAIpD,CAAA;AAEF,kFAAkF;AAClF,eAAO,MAAM,WAAW,GACtB,OAAO,KAAK,EACZ,OAAO,MAAM,EACb,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAC7B,OAKD,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { stringToFloat } from '@lifi/perps-sdk';
|
|
2
2
|
import { SPOT_MARKET_ID } from '../constants.js';
|
|
3
|
+
import { spotLogoURI } from './assetLogo.js';
|
|
3
4
|
import { coinAsset } from './marketDisplay.js';
|
|
4
5
|
/**
|
|
5
6
|
* USD price keyed by spot token index: each spot market's live USD price
|
|
@@ -24,11 +25,14 @@ export const spotPriceById = (markets, priceByMarketId) => {
|
|
|
24
25
|
/**
|
|
25
26
|
* The held spot {@link Asset} for an HL balance: the venue token index
|
|
26
27
|
* (`b.token`) as `Asset.id` — equal to that token's spot `Market.baseAsset.id`
|
|
27
|
-
* — with display fields derived from the coin.
|
|
28
|
+
* — with display fields derived from the coin and the override-aware spot logo.
|
|
29
|
+
* `HlSpotBalance` carries no `fullName`, so Unit-bridged balances take the base
|
|
30
|
+
* `_spot` rule (see {@link spotLogoURI}).
|
|
28
31
|
*/
|
|
29
32
|
export const spotAssetFromToken = (b) => ({
|
|
30
33
|
...coinAsset(b.coin),
|
|
31
34
|
id: String(b.token),
|
|
35
|
+
logoURI: spotLogoURI(b.coin),
|
|
32
36
|
});
|
|
33
37
|
/** Assemble a typed spot {@link Balance} from its resolved asset and raw size. */
|
|
34
38
|
export const spotBalance = (asset, total, priceById) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotBalance.js","sourceRoot":"","sources":["../../../src/utils/spotBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA0B,EAC1B,eAA4C,EACvB,EAAE;IACvB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAA;IACrC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"spotBalance.js","sourceRoot":"","sources":["../../../src/utils/spotBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA0B,EAC1B,eAA4C,EACvB,EAAE;IACvB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAA;IACrC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAgB,EAAS,EAAE,CAAC,CAAC;IAC9D,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;CAC7B,CAAC,CAAA;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAY,EACZ,KAAa,EACb,SAA8B,EACrB,EAAE,CAAC,CAAC;IACb,UAAU,EAAE,cAAc;IAC1B,KAAK;IACL,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7E,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Balance } from '@lifi/perps-types';
|
|
2
|
+
/** @internal */
|
|
3
|
+
export interface SpotPartition {
|
|
4
|
+
collateralBalances: Balance[];
|
|
5
|
+
balances: Balance[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Split spot balances into margin collateral and flat holdings. A balance is
|
|
9
|
+
* collateral when its token is a category quote asset (full value) or, under
|
|
10
|
+
* portfolio margin, an LTV-weighted asset (HYPE/BTC); everything else is a
|
|
11
|
+
* flat holding.
|
|
12
|
+
*/
|
|
13
|
+
export declare const partitionSpotBalances: (spotBalances: readonly Balance[], quoteAssetIds: ReadonlySet<string>, portfolioMargin: boolean) => SpotPartition;
|
|
14
|
+
//# sourceMappingURL=spotCollateral.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spotCollateral.d.ts","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAehD,gBAAgB;AAChB,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,OAAO,EAAE,CAAA;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,cAAc,SAAS,OAAO,EAAE,EAChC,eAAe,WAAW,CAAC,MAAM,CAAC,EAClC,iBAAiB,OAAO,KACvB,aAkBF,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portfolio-margin collateral beyond the category quote assets, keyed by spot
|
|
3
|
+
* display symbol with its loan-to-value weight. Hyperliquid credits these
|
|
4
|
+
* toward buying power at the given fraction (0.5 for both today). Quote assets
|
|
5
|
+
* (USDC/USDT) are already full-value collateral via the category model, so
|
|
6
|
+
* they are not listed here.
|
|
7
|
+
* https://hyperliquid.gitbook.io/hyperliquid-docs/trading/portfolio-margin
|
|
8
|
+
*/
|
|
9
|
+
const PORTFOLIO_MARGIN_LTV = {
|
|
10
|
+
HYPE: 0.5,
|
|
11
|
+
UBTC: 0.5,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Split spot balances into margin collateral and flat holdings. A balance is
|
|
15
|
+
* collateral when its token is a category quote asset (full value) or, under
|
|
16
|
+
* portfolio margin, an LTV-weighted asset (HYPE/BTC); everything else is a
|
|
17
|
+
* flat holding.
|
|
18
|
+
*/
|
|
19
|
+
export const partitionSpotBalances = (spotBalances, quoteAssetIds, portfolioMargin) => {
|
|
20
|
+
const collateralBalances = [];
|
|
21
|
+
const balances = [];
|
|
22
|
+
for (const balance of spotBalances) {
|
|
23
|
+
if (quoteAssetIds.has(balance.asset.id)) {
|
|
24
|
+
collateralBalances.push(balance);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const ltv = portfolioMargin
|
|
28
|
+
? PORTFOLIO_MARGIN_LTV[balance.asset.displaySymbol]
|
|
29
|
+
: undefined;
|
|
30
|
+
if (ltv !== undefined) {
|
|
31
|
+
collateralBalances.push({ ...balance, collateralWeight: ltv });
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
balances.push(balance);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return { collateralBalances, balances };
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=spotCollateral.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spotCollateral.js","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAqC;IAC7D,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACV,CAAA;AAQD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,YAAgC,EAChC,aAAkC,EAClC,eAAwB,EACT,EAAE;IACjB,MAAM,kBAAkB,GAAc,EAAE,CAAA;IACxC,MAAM,QAAQ,GAAc,EAAE,CAAA;IAC9B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAChC,SAAQ;QACV,CAAC;QACD,MAAM,GAAG,GAAG,eAAe;YACzB,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;YACnD,CAAC,CAAC,SAAS,CAAA;QACb,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAA;AACzC,CAAC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type PerpsSDKClient, type ProviderGetQuoteParams, type QuoteListener, WsProviderBase, type WsProviderFactory } from '@lifi/perps-sdk';
|
|
1
|
+
import { type PerpsSDKClient, type ProviderGetQuoteParams, type QuoteListener, type SubscriptionListener, WsProviderBase, type WsProviderFactory, type WsStatusListener } from '@lifi/perps-sdk';
|
|
2
2
|
import { type Subscription } from '@lifi/perps-types';
|
|
3
3
|
/**
|
|
4
4
|
* `WsProviderFactory` constructor for Hyperliquid — pass to
|
|
@@ -29,6 +29,11 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
29
29
|
private readonly clearinghouseRefs;
|
|
30
30
|
private readonly client;
|
|
31
31
|
private readonly registry;
|
|
32
|
+
private readonly abstractionByUser;
|
|
33
|
+
private readonly spotRefs;
|
|
34
|
+
private readonly unifiedSummaryByUser;
|
|
35
|
+
private readonly latestPositionsByUser;
|
|
36
|
+
private readonly heldSummaryByUser;
|
|
32
37
|
private perpCtxBySubDex;
|
|
33
38
|
private spotCtxByMarketId;
|
|
34
39
|
private marketsContextByMarketId;
|
|
@@ -41,6 +46,7 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
41
46
|
private readonly sacDecodeChain;
|
|
42
47
|
private readonly orderbookDecodeChain;
|
|
43
48
|
constructor(wsUrl: string, providerKey: string, client?: PerpsSDKClient);
|
|
49
|
+
subscribe(sub: Subscription, listener: SubscriptionListener, onStatus?: WsStatusListener): Promise<() => void>;
|
|
44
50
|
subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
|
|
45
51
|
protected openChannel(sub: Subscription): Promise<() => void>;
|
|
46
52
|
/**
|
|
@@ -108,6 +114,22 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
108
114
|
private handleOrderUpdates;
|
|
109
115
|
private handleUserFills;
|
|
110
116
|
private handleAllDexsClearinghouseState;
|
|
117
|
+
/** Whether the mode's collateral lives per-dex, making the perps-only
|
|
118
|
+
* summary frame honest. Unified/portfolio hold collateral in spot. */
|
|
119
|
+
private static summaryComputableFor;
|
|
120
|
+
private acquireSpotWire;
|
|
121
|
+
/** Start or stop the spot-fed unified pipeline to match the resolved mode. */
|
|
122
|
+
private syncUnifiedPipeline;
|
|
123
|
+
private emitUnifiedSummary;
|
|
124
|
+
/** Re-read the abstraction mode this long after the previous read, so an
|
|
125
|
+
* in-session account-mode switch flips the gate within one refresh. */
|
|
126
|
+
private static readonly ABSTRACTION_TTL_MS;
|
|
127
|
+
/** Subscribe-triggered re-reads younger than this are skipped: a config
|
|
128
|
+
* change resubscribes every consumer hook in one React commit, and one
|
|
129
|
+
* read serves them all. */
|
|
130
|
+
private static readonly REFRESH_COALESCE_MS;
|
|
131
|
+
private emitSummaryIfModeAllows;
|
|
132
|
+
private fetchAbstractionMode;
|
|
111
133
|
private handleSpotState;
|
|
112
134
|
}
|
|
113
135
|
//# sourceMappingURL=HyperliquidWsProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAGlB,cAAc,EACd,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"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"}
|