@lifi/perps-sdk-provider-hyperliquid 4.0.0 → 4.2.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/HyperliquidProvider.d.ts.map +1 -1
- package/dist/cjs/HyperliquidProvider.js +1 -0
- package/dist/cjs/HyperliquidProvider.js.map +1 -1
- 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/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +3 -1
- package/dist/cjs/utils/index.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/HyperliquidProvider.d.ts.map +1 -1
- package/dist/esm/HyperliquidProvider.js +1 -0
- package/dist/esm/HyperliquidProvider.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/index.d.ts +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.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/HyperliquidProvider.d.ts.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/index.d.ts +1 -0
- package/dist/types/utils/index.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/HyperliquidProvider.ts +2 -0
- package/src/services/getAccount.ts +8 -12
- package/src/types/account.ts +3 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/spotCollateral.ts +50 -0
- package/src/websocket/HyperliquidWsProvider.ts +304 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperliquidProvider.d.ts","sourceRoot":"","sources":["../../src/HyperliquidProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,mBAAmB,EAaxB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAA;AAuBxB,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAa,MAAM,MAAM,CAAA;AAiBxD,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,oCAAoC,CAAA;AAY3C,MAAM,WAAW,0BAA0B;IAOzC,MAAM,CAAC,EAAE,MAAM,CAAA;IAMf,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB;AAUD,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IAEnE,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnD,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE5C,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAC1E;AAuBD,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,0BAA+B,GACvC,wBAAwB,
|
|
1
|
+
{"version":3,"file":"HyperliquidProvider.d.ts","sourceRoot":"","sources":["../../src/HyperliquidProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,mBAAmB,EAaxB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAA;AAuBxB,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,GAAG,EAAa,MAAM,MAAM,CAAA;AAiBxD,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,oCAAoC,CAAA;AAY3C,MAAM,WAAW,0BAA0B;IAOzC,MAAM,CAAC,EAAE,MAAM,CAAA;IAMf,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB;AAUD,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IAEnE,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnD,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAE5C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE5C,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;CAC1E;AAuBD,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,0BAA+B,GACvC,wBAAwB,CAkQ1B"}
|
|
@@ -75,6 +75,7 @@ function hyperliquidProvider(options = {}) {
|
|
|
75
75
|
};
|
|
76
76
|
return {
|
|
77
77
|
type: constants_js_1.PROVIDER_KEY,
|
|
78
|
+
internalSetupActions: [perps_types_1.ActionType.SET_REFERRAL],
|
|
78
79
|
bind: (client) => contextRef.bind(client),
|
|
79
80
|
getAgentAddress: async (address) => (await agentStore.get(address)).address,
|
|
80
81
|
hasAgent: (address) => agentStore.has(address),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperliquidProvider.js","sourceRoot":"","sources":["../../src/HyperliquidProvider.ts"],"names":[],"mappings":";;AAkIA,
|
|
1
|
+
{"version":3,"file":"HyperliquidProvider.js","sourceRoot":"","sources":["../../src/HyperliquidProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAccount.d.ts","sourceRoot":"","sources":["../../../src/services/getAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"getAccount.d.ts","sourceRoot":"","sources":["../../../src/services/getAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAuBvD,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,CAAA;AA4GvD,eAAO,MAAM,UAAU,GACrB,oBAAoB,kBAAkB,EACtC,QAAQ,gBAAgB,EACxB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,eAAe,CA2GzB,CAAA"}
|
|
@@ -31,17 +31,7 @@ const getMarginUsed = (abstraction, positions, stateByDex) => {
|
|
|
31
31
|
const isUnifiedMode = (abstraction) => abstraction === index_js_1.HlAbstractionMode.UNIFIED_ACCOUNT ||
|
|
32
32
|
abstraction === index_js_1.HlAbstractionMode.PORTFOLIO_MARGIN;
|
|
33
33
|
const buildBalances = (abstraction, spotState, stateByDex, quoteAssetIds, priceById, quoteAssetByCategory) => {
|
|
34
|
-
const balances =
|
|
35
|
-
const collateralBalances = [];
|
|
36
|
-
for (const b of spotState.balances) {
|
|
37
|
-
const balance = (0, index_js_2.spotBalance)((0, index_js_2.spotAssetFromToken)(b), b.total, priceById);
|
|
38
|
-
if (quoteAssetIds.has(balance.asset.id)) {
|
|
39
|
-
collateralBalances.push(balance);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
balances.push(balance);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
34
|
+
const { balances, collateralBalances } = (0, index_js_2.partitionSpotBalances)(spotState.balances.map((b) => (0, index_js_2.spotBalance)((0, index_js_2.spotAssetFromToken)(b), b.total, priceById)), quoteAssetIds, abstraction === index_js_1.HlAbstractionMode.PORTFOLIO_MARGIN);
|
|
45
35
|
if (!isUnifiedMode(abstraction)) {
|
|
46
36
|
for (const [dex, state] of stateByDex) {
|
|
47
37
|
const categoryId = dex || constants_js_1.PROVIDER_KEY;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAccount.js","sourceRoot":"","sources":["../../../src/services/getAccount.ts"],"names":[],"mappings":";;;AAAA,+CAMwB;AAQxB,kDAA8C;AAE9C,gDAM0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"getAccount.js","sourceRoot":"","sources":["../../../src/services/getAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,7 @@ export type HlPreTransferCheck = {
|
|
|
45
45
|
userExists: boolean;
|
|
46
46
|
};
|
|
47
47
|
export declare const HlAbstractionMode: {
|
|
48
|
+
readonly DEFAULT: "default";
|
|
48
49
|
readonly DISABLED: "disabled";
|
|
49
50
|
readonly UNIFIED_ACCOUNT: "unifiedAccount";
|
|
50
51
|
readonly PORTFOLIO_MARGIN: "portfolioMargin";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAGD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,UAAU,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,eAAe,EAAE,CAAA;IACjC,aAAa,EAAE;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;IACD,kBAAkB,EAAE;QAClB,YAAY,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF,CAAA;AAGD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAGD,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B,CAAA;AAGD,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,MAAM,CAAA;CAC/B,CAAA;AAGD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;AAQrD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAGD,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,UAAU,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,eAAe,EAAE,CAAA;IACjC,aAAa,EAAE;QACb,YAAY,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;IACD,kBAAkB,EAAE;QAClB,YAAY,EAAE,MAAM,CAAA;QACpB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF,CAAA;AAGD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAGD,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAC1B,CAAA;AAGD,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,MAAM,CAAA;CAC/B,CAAA;AAGD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;AAQrD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAQD,eAAO,MAAM,iBAAiB;;;;;;CAMpB,CAAA;AAGV,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":";;;AA2Ea,QAAA,iBAAiB,GAAG;IAC/B,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,iBAAiB;IACnC,eAAe,EAAE,gBAAgB;CACzB,CAAA"}
|
|
@@ -13,4 +13,5 @@ export { coinAsset, perpsDexNames } from './marketDisplay.js';
|
|
|
13
13
|
export { formatOrderPrice, formatOrderSize, getMaxPriceDecimals, } from './orderFormatting.js';
|
|
14
14
|
export { priceStepToAggregation } from './priceStepToAggregation.js';
|
|
15
15
|
export { spotAssetFromToken, spotBalance, spotPriceById, } from './spotBalance.js';
|
|
16
|
+
export { partitionSpotBalances, type SpotPartition } from './spotCollateral.js';
|
|
16
17
|
//# 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,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/cjs/utils/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.spotPriceById = exports.spotBalance = exports.spotAssetFromToken = exports.priceStepToAggregation = exports.getMaxPriceDecimals = exports.formatOrderSize = exports.formatOrderPrice = exports.perpsDexNames = exports.coinAsset = exports.mapPosition = exports.isOpenAssetPosition = exports.mapTriggerOrder = exports.mapStatusReason = exports.mapOrderType = exports.mapOrderStatus = exports.mapOrder = exports.mapOpenOrder = exports.isTriggerType = exports.isTriggerOrder = exports.mapMarketContext = exports.mapMarket = exports.mapFill = exports.classifyFillFromPosition = exports.mapLedgerEntry = exports.mapFundingActivity = exports.calculateMaintenanceMarginRate = exports.calculateLiquidationPrice = exports.infoRequest = exports.hlInfoOptions = exports.decodeFastAssetCtxs = exports.decodeCompressedJson = exports.getProviderIndex = exports.calculateAssetId = exports.assetIsSpot = void 0;
|
|
3
|
+
exports.partitionSpotBalances = exports.spotPriceById = exports.spotBalance = exports.spotAssetFromToken = exports.priceStepToAggregation = exports.getMaxPriceDecimals = exports.formatOrderSize = exports.formatOrderPrice = exports.perpsDexNames = exports.coinAsset = exports.mapPosition = exports.isOpenAssetPosition = exports.mapTriggerOrder = exports.mapStatusReason = exports.mapOrderType = exports.mapOrderStatus = exports.mapOrder = exports.mapOpenOrder = exports.isTriggerType = exports.isTriggerOrder = exports.mapMarketContext = exports.mapMarket = exports.mapFill = exports.classifyFillFromPosition = exports.mapLedgerEntry = exports.mapFundingActivity = exports.calculateMaintenanceMarginRate = exports.calculateLiquidationPrice = exports.infoRequest = exports.hlInfoOptions = exports.decodeFastAssetCtxs = exports.decodeCompressedJson = exports.getProviderIndex = exports.calculateAssetId = exports.assetIsSpot = void 0;
|
|
4
4
|
var assetId_js_1 = require("./assetId.js");
|
|
5
5
|
Object.defineProperty(exports, "assetIsSpot", { enumerable: true, get: function () { return assetId_js_1.assetIsSpot; } });
|
|
6
6
|
Object.defineProperty(exports, "calculateAssetId", { enumerable: true, get: function () { return assetId_js_1.calculateAssetId; } });
|
|
@@ -49,4 +49,6 @@ var spotBalance_js_1 = require("./spotBalance.js");
|
|
|
49
49
|
Object.defineProperty(exports, "spotAssetFromToken", { enumerable: true, get: function () { return spotBalance_js_1.spotAssetFromToken; } });
|
|
50
50
|
Object.defineProperty(exports, "spotBalance", { enumerable: true, get: function () { return spotBalance_js_1.spotBalance; } });
|
|
51
51
|
Object.defineProperty(exports, "spotPriceById", { enumerable: true, get: function () { return spotBalance_js_1.spotPriceById; } });
|
|
52
|
+
var spotCollateral_js_1 = require("./spotCollateral.js");
|
|
53
|
+
Object.defineProperty(exports, "partitionSpotBalances", { enumerable: true, get: function () { return spotCollateral_js_1.partitionSpotBalances; } });
|
|
52
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAIA,2CAA8E;AAArE,yGAAA,WAAW,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AACxD,mEAGiC;AAF/B,8HAAA,oBAAoB,OAAA;AACpB,6HAAA,mBAAmB,OAAA;AAGrB,iDAA4D;AAAnD,8GAAA,aAAa,OAAA;AAAE,4GAAA,WAAW,OAAA;AACnC,mDAGyB;AAFvB,2HAAA,yBAAyB,OAAA;AACzB,gIAAA,8BAA8B,OAAA;AAEhC,mDAAqE;AAA5D,oHAAA,kBAAkB,OAAA;AAAE,gHAAA,cAAc,OAAA;AAC3C,2CAAgE;AAAvD,sHAAA,wBAAwB,OAAA;AAAE,qGAAA,OAAO,OAAA;AAC1C,+CAA0C;AAAjC,yGAAA,SAAS,OAAA;AAClB,6DAAwD;AAA/C,uHAAA,gBAAgB,OAAA;AACzB,6CASsB;AARpB,6GAAA,cAAc,OAAA;AACd,4GAAA,aAAa,OAAA;AACb,2GAAA,YAAY,OAAA;AACZ,uGAAA,QAAQ,OAAA;AACR,6GAAA,cAAc,OAAA;AACd,2GAAA,YAAY,OAAA;AACZ,8GAAA,eAAe,OAAA;AACf,8GAAA,eAAe,OAAA;AAEjB,mDAAmE;AAA1D,qHAAA,mBAAmB,OAAA;AAAE,6GAAA,WAAW,OAAA;AACzC,uDAA6D;AAApD,6GAAA,SAAS,OAAA;AAAE,iHAAA,aAAa,OAAA;AACjC,2DAI6B;AAH3B,sHAAA,gBAAgB,OAAA;AAChB,qHAAA,eAAe,OAAA;AACf,yHAAA,mBAAmB,OAAA;AAErB,yEAAoE;AAA3D,mIAAA,sBAAsB,OAAA;AAC/B,mDAIyB;AAHvB,oHAAA,kBAAkB,OAAA;AAClB,6GAAA,WAAW,OAAA;AACX,+GAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAIA,2CAA8E;AAArE,yGAAA,WAAW,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AACxD,mEAGiC;AAF/B,8HAAA,oBAAoB,OAAA;AACpB,6HAAA,mBAAmB,OAAA;AAGrB,iDAA4D;AAAnD,8GAAA,aAAa,OAAA;AAAE,4GAAA,WAAW,OAAA;AACnC,mDAGyB;AAFvB,2HAAA,yBAAyB,OAAA;AACzB,gIAAA,8BAA8B,OAAA;AAEhC,mDAAqE;AAA5D,oHAAA,kBAAkB,OAAA;AAAE,gHAAA,cAAc,OAAA;AAC3C,2CAAgE;AAAvD,sHAAA,wBAAwB,OAAA;AAAE,qGAAA,OAAO,OAAA;AAC1C,+CAA0C;AAAjC,yGAAA,SAAS,OAAA;AAClB,6DAAwD;AAA/C,uHAAA,gBAAgB,OAAA;AACzB,6CASsB;AARpB,6GAAA,cAAc,OAAA;AACd,4GAAA,aAAa,OAAA;AACb,2GAAA,YAAY,OAAA;AACZ,uGAAA,QAAQ,OAAA;AACR,6GAAA,cAAc,OAAA;AACd,2GAAA,YAAY,OAAA;AACZ,8GAAA,eAAe,OAAA;AACf,8GAAA,eAAe,OAAA;AAEjB,mDAAmE;AAA1D,qHAAA,mBAAmB,OAAA;AAAE,6GAAA,WAAW,OAAA;AACzC,uDAA6D;AAApD,6GAAA,SAAS,OAAA;AAAE,iHAAA,aAAa,OAAA;AACjC,2DAI6B;AAH3B,sHAAA,gBAAgB,OAAA;AAChB,qHAAA,eAAe,OAAA;AACf,yHAAA,mBAAmB,OAAA;AAErB,yEAAoE;AAA3D,mIAAA,sBAAsB,OAAA;AAC/B,mDAIyB;AAHvB,oHAAA,kBAAkB,OAAA;AAClB,6GAAA,WAAW,OAAA;AACX,+GAAA,aAAa,OAAA;AAEf,yDAA+E;AAAtE,0HAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Balance } from '@lifi/perps-types';
|
|
2
|
+
export interface SpotPartition {
|
|
3
|
+
collateralBalances: Balance[];
|
|
4
|
+
balances: Balance[];
|
|
5
|
+
}
|
|
6
|
+
export declare const partitionSpotBalances: (spotBalances: readonly Balance[], quoteAssetIds: ReadonlySet<string>, portfolioMargin: boolean) => SpotPartition;
|
|
7
|
+
//# 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;AAgBhD,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,OAAO,EAAE,CAAA;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AAQD,eAAO,MAAM,qBAAqB,GAChC,cAAc,SAAS,OAAO,EAAE,EAChC,eAAe,WAAW,CAAC,MAAM,CAAC,EAClC,iBAAiB,OAAO,KACvB,aAkBF,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.partitionSpotBalances = void 0;
|
|
4
|
+
const PORTFOLIO_MARGIN_LTV = {
|
|
5
|
+
HYPE: 0.5,
|
|
6
|
+
UBTC: 0.5,
|
|
7
|
+
};
|
|
8
|
+
const partitionSpotBalances = (spotBalances, quoteAssetIds, portfolioMargin) => {
|
|
9
|
+
const collateralBalances = [];
|
|
10
|
+
const balances = [];
|
|
11
|
+
for (const balance of spotBalances) {
|
|
12
|
+
if (quoteAssetIds.has(balance.asset.id)) {
|
|
13
|
+
collateralBalances.push(balance);
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
const ltv = portfolioMargin
|
|
17
|
+
? PORTFOLIO_MARGIN_LTV[balance.asset.displaySymbol]
|
|
18
|
+
: undefined;
|
|
19
|
+
if (ltv !== undefined) {
|
|
20
|
+
collateralBalances.push({ ...balance, collateralWeight: ltv });
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
balances.push(balance);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return { collateralBalances, balances };
|
|
27
|
+
};
|
|
28
|
+
exports.partitionSpotBalances = partitionSpotBalances;
|
|
29
|
+
//# sourceMappingURL=spotCollateral.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spotCollateral.js","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":";;;AAUA,MAAM,oBAAoB,GAAqC;IAC7D,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;CACV,CAAA;AAcM,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;AAtBY,QAAA,qBAAqB,yBAsBjC"}
|
|
@@ -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
|
export declare const hyperliquidWsProvider: () => WsProviderFactory;
|
|
4
4
|
export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
@@ -6,6 +6,11 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
6
6
|
private readonly clearinghouseRefs;
|
|
7
7
|
private readonly client;
|
|
8
8
|
private readonly registry;
|
|
9
|
+
private readonly abstractionByUser;
|
|
10
|
+
private readonly spotRefs;
|
|
11
|
+
private readonly unifiedSummaryByUser;
|
|
12
|
+
private readonly latestPositionsByUser;
|
|
13
|
+
private readonly heldSummaryByUser;
|
|
9
14
|
private perpCtxBySubDex;
|
|
10
15
|
private spotCtxByMarketId;
|
|
11
16
|
private marketsContextByMarketId;
|
|
@@ -18,6 +23,7 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
18
23
|
private readonly sacDecodeChain;
|
|
19
24
|
private readonly orderbookDecodeChain;
|
|
20
25
|
constructor(wsUrl: string, providerKey: string, client?: PerpsSDKClient);
|
|
26
|
+
subscribe(sub: Subscription, listener: SubscriptionListener, onStatus?: WsStatusListener): Promise<() => void>;
|
|
21
27
|
subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
|
|
22
28
|
protected openChannel(sub: Subscription): Promise<() => void>;
|
|
23
29
|
private claimOrderUpdatesKey;
|
|
@@ -53,6 +59,14 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
53
59
|
private handleOrderUpdates;
|
|
54
60
|
private handleUserFills;
|
|
55
61
|
private handleAllDexsClearinghouseState;
|
|
62
|
+
private static summaryComputableFor;
|
|
63
|
+
private acquireSpotWire;
|
|
64
|
+
private syncUnifiedPipeline;
|
|
65
|
+
private emitUnifiedSummary;
|
|
66
|
+
private static readonly ABSTRACTION_TTL_MS;
|
|
67
|
+
private static readonly REFRESH_COALESCE_MS;
|
|
68
|
+
private emitSummaryIfModeAllows;
|
|
69
|
+
private fetchAbstractionMode;
|
|
56
70
|
private handleSpotState;
|
|
57
71
|
}
|
|
58
72
|
//# 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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"}
|
|
@@ -8,7 +8,8 @@ const perps_sdk_1 = require("@lifi/perps-sdk");
|
|
|
8
8
|
const perps_types_1 = require("@lifi/perps-types");
|
|
9
9
|
const big_js_1 = __importDefault(require("big.js"));
|
|
10
10
|
const constants_js_1 = require("../constants.js");
|
|
11
|
-
const index_js_1 = require("../
|
|
11
|
+
const index_js_1 = require("../types/index.js");
|
|
12
|
+
const index_js_2 = require("../utils/index.js");
|
|
12
13
|
const decodeChain_js_1 = require("./decodeChain.js");
|
|
13
14
|
const HL_L2_BOOK_MAX_LEVELS_PER_SIDE = 20;
|
|
14
15
|
const hyperliquidWsProvider = () => ({ provider, wsUrl, client }) => new HyperliquidWsProvider(wsUrl, provider, client);
|
|
@@ -18,6 +19,11 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
18
19
|
clearinghouseRefs = new Map();
|
|
19
20
|
client;
|
|
20
21
|
registry;
|
|
22
|
+
abstractionByUser = new Map();
|
|
23
|
+
spotRefs = new Map();
|
|
24
|
+
unifiedSummaryByUser = new Map();
|
|
25
|
+
latestPositionsByUser = new Map();
|
|
26
|
+
heldSummaryByUser = new Map();
|
|
21
27
|
perpCtxBySubDex = new Map();
|
|
22
28
|
spotCtxByMarketId = {};
|
|
23
29
|
marketsContextByMarketId = {};
|
|
@@ -34,6 +40,21 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
34
40
|
this.client = client;
|
|
35
41
|
this.registry = client && (0, perps_sdk_1.getMarketRegistry)(client, providerKey);
|
|
36
42
|
}
|
|
43
|
+
async subscribe(sub, listener, onStatus) {
|
|
44
|
+
const unsubscribe = await super.subscribe(sub, listener, onStatus);
|
|
45
|
+
if (sub.channel === 'accountSummary') {
|
|
46
|
+
const user = sub.address.toLowerCase();
|
|
47
|
+
const entry = this.abstractionByUser.get(user);
|
|
48
|
+
if (entry === undefined) {
|
|
49
|
+
this.fetchAbstractionMode(sub.address, user);
|
|
50
|
+
}
|
|
51
|
+
else if (entry !== 'pending' &&
|
|
52
|
+
Date.now() - entry.readAt > HyperliquidWsProvider.REFRESH_COALESCE_MS) {
|
|
53
|
+
this.fetchAbstractionMode(sub.address, user, entry);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return unsubscribe;
|
|
57
|
+
}
|
|
37
58
|
async subscribeQuote(params, onQuote) {
|
|
38
59
|
const client = this.client;
|
|
39
60
|
if (client === undefined) {
|
|
@@ -64,6 +85,11 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
64
85
|
this.marketsContextByMarketId = {};
|
|
65
86
|
};
|
|
66
87
|
}
|
|
88
|
+
if (sub.channel === 'spotBalances') {
|
|
89
|
+
const release = await this.acquireSpotWire(sub.address);
|
|
90
|
+
await this.rws.ready();
|
|
91
|
+
return release;
|
|
92
|
+
}
|
|
67
93
|
if (sub.channel === 'positions' || sub.channel === 'accountSummary') {
|
|
68
94
|
const user = sub.address.toLowerCase();
|
|
69
95
|
const wireKey = `clearinghouse:${user}`;
|
|
@@ -78,6 +104,10 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
78
104
|
const remaining = (this.clearinghouseRefs.get(user) ?? 1) - 1;
|
|
79
105
|
if (remaining <= 0) {
|
|
80
106
|
this.clearinghouseRefs.delete(user);
|
|
107
|
+
this.abstractionByUser.delete(user);
|
|
108
|
+
this.heldSummaryByUser.delete(user);
|
|
109
|
+
this.latestPositionsByUser.delete(user);
|
|
110
|
+
this.syncUnifiedPipeline(user, user, null);
|
|
81
111
|
this.unregisterSub(wireKey);
|
|
82
112
|
this.rws.send(JSON.stringify({ method: 'unsubscribe', subscription: payload }));
|
|
83
113
|
}
|
|
@@ -207,7 +237,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
207
237
|
if (priceStep === undefined) {
|
|
208
238
|
return {};
|
|
209
239
|
}
|
|
210
|
-
return (0,
|
|
240
|
+
return (0, index_js_2.priceStepToAggregation)(priceStep, this.orderbookReferencePrice(marketId));
|
|
211
241
|
}
|
|
212
242
|
orderbookAggregationKey(marketId, priceStep) {
|
|
213
243
|
const aggregation = this.orderbookAggregation(marketId, priceStep);
|
|
@@ -335,7 +365,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
335
365
|
}
|
|
336
366
|
handlePac(base64) {
|
|
337
367
|
this.pacDecodeChain.push(async () => {
|
|
338
|
-
this.emitMarketsContext(this.mergePerpAssetCtxEntries(await (0,
|
|
368
|
+
this.emitMarketsContext(this.mergePerpAssetCtxEntries(await (0, index_js_2.decodeCompressedJson)(base64)));
|
|
339
369
|
});
|
|
340
370
|
}
|
|
341
371
|
mergePerpAssetCtxEntries(entries) {
|
|
@@ -363,7 +393,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
363
393
|
handleSac(base64) {
|
|
364
394
|
this.sacDecodeChain.push(async () => {
|
|
365
395
|
const spotMarketIdBySacKey = this.spotMarketIdBySacKey();
|
|
366
|
-
const ctxs = await (0,
|
|
396
|
+
const ctxs = await (0, index_js_2.decodeCompressedJson)(base64);
|
|
367
397
|
const touched = new Set();
|
|
368
398
|
for (const [sacKey, ctx] of Object.entries(ctxs)) {
|
|
369
399
|
const marketId = spotMarketIdBySacKey.get(sacKey);
|
|
@@ -392,7 +422,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
392
422
|
}
|
|
393
423
|
handleFastAssetCtxs(base64) {
|
|
394
424
|
this.fastDecodeChain.push(async () => {
|
|
395
|
-
const ctxs = await (0,
|
|
425
|
+
const ctxs = await (0, index_js_2.decodeFastAssetCtxs)(base64);
|
|
396
426
|
for (const [marketId, ctx] of Object.entries(ctxs)) {
|
|
397
427
|
const prev = this.fastCtxByMarketId[marketId];
|
|
398
428
|
this.fastCtxByMarketId[marketId] = {
|
|
@@ -433,7 +463,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
433
463
|
perpCtx = byMarketId[marketId] ?? perpCtx;
|
|
434
464
|
}
|
|
435
465
|
if (perpCtx !== undefined) {
|
|
436
|
-
const base = (0,
|
|
466
|
+
const base = (0, index_js_2.mapMarketContext)(marketId, perpCtx);
|
|
437
467
|
return {
|
|
438
468
|
...base,
|
|
439
469
|
midPrice: fast?.midPx != null ? fast.midPx : base.midPrice,
|
|
@@ -455,7 +485,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
455
485
|
}
|
|
456
486
|
this.emit(`marketContext:${data.coin}`, {
|
|
457
487
|
channel: 'marketContext',
|
|
458
|
-
data: (0,
|
|
488
|
+
data: (0, index_js_2.mapMarketContext)(data.coin, ctx),
|
|
459
489
|
});
|
|
460
490
|
}
|
|
461
491
|
handleActiveSpotAssetCtx(data) {
|
|
@@ -530,7 +560,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
530
560
|
}
|
|
531
561
|
const compressed = data.c;
|
|
532
562
|
this.orderbookDecodeChain.push(async () => {
|
|
533
|
-
this.handleCompactL2Delta(await (0,
|
|
563
|
+
this.handleCompactL2Delta(await (0, index_js_2.decodeCompressedJson)(compressed));
|
|
534
564
|
});
|
|
535
565
|
}
|
|
536
566
|
handleCompactL2Delta(delta) {
|
|
@@ -602,17 +632,17 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
602
632
|
for (const detail of data) {
|
|
603
633
|
const o = detail.order;
|
|
604
634
|
const orderId = String(o.oid);
|
|
605
|
-
if (!(0, perps_sdk_1.isActiveOrderStatus)((0,
|
|
635
|
+
if (!(0, perps_sdk_1.isActiveOrderStatus)((0, index_js_2.mapOrderStatus)(detail.status))) {
|
|
606
636
|
terminated.push(orderId);
|
|
607
637
|
continue;
|
|
608
638
|
}
|
|
609
|
-
const type = (0,
|
|
639
|
+
const type = (0, index_js_2.mapOrderType)(o.orderType);
|
|
610
640
|
const market = this.registry?.get(o.coin);
|
|
611
641
|
if (!market) {
|
|
612
642
|
continue;
|
|
613
643
|
}
|
|
614
644
|
const createdAt = new Date(o.timestamp).toISOString();
|
|
615
|
-
if ((0,
|
|
645
|
+
if ((0, index_js_2.isTriggerOrder)(o)) {
|
|
616
646
|
const isLimit = type === perps_types_1.OrderType.TAKE_PROFIT_LIMIT || type === perps_types_1.OrderType.STOP_LIMIT;
|
|
617
647
|
triggerOrders.push({
|
|
618
648
|
orderId,
|
|
@@ -650,7 +680,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
650
680
|
? []
|
|
651
681
|
: data.fills.flatMap((f) => {
|
|
652
682
|
const market = this.registry?.get(f.coin);
|
|
653
|
-
return market ? [(0,
|
|
683
|
+
return market ? [(0, index_js_2.mapFill)(f, market)] : [];
|
|
654
684
|
});
|
|
655
685
|
this.emit(`userFills:${data.user.toLowerCase()}`, {
|
|
656
686
|
channel: 'fills',
|
|
@@ -659,16 +689,18 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
659
689
|
}
|
|
660
690
|
handleAllDexsClearinghouseState(data) {
|
|
661
691
|
const positions = data.clearinghouseStates.flatMap(([, state]) => state.assetPositions.flatMap((ap) => {
|
|
662
|
-
if (!(0,
|
|
692
|
+
if (!(0, index_js_2.isOpenAssetPosition)(ap)) {
|
|
663
693
|
return [];
|
|
664
694
|
}
|
|
665
695
|
const market = this.registry?.get(ap.position.coin);
|
|
666
|
-
return market ? [(0,
|
|
696
|
+
return market ? [(0, index_js_2.mapPosition)(ap, market)] : [];
|
|
667
697
|
}));
|
|
668
698
|
this.emit(`positions:${data.user.toLowerCase()}`, {
|
|
669
699
|
channel: 'positions',
|
|
670
700
|
data: positions,
|
|
671
701
|
});
|
|
702
|
+
this.latestPositionsByUser.set(data.user.toLowerCase(), positions);
|
|
703
|
+
this.emitUnifiedSummary(data.user.toLowerCase());
|
|
672
704
|
let accountValue = 0;
|
|
673
705
|
let marginUsed = 0;
|
|
674
706
|
for (const [, state] of data.clearinghouseStates) {
|
|
@@ -678,25 +710,150 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
678
710
|
Number.parseFloat(state.marginSummary?.totalMarginUsed ?? '') || 0;
|
|
679
711
|
}
|
|
680
712
|
const unrealizedPnl = positions.reduce((sum, p) => sum + (Number.parseFloat(p.unrealizedPnl) || 0), 0);
|
|
681
|
-
this.
|
|
713
|
+
this.emitSummaryIfModeAllows(data.user, {
|
|
714
|
+
portfolioValue: accountValue.toString(),
|
|
715
|
+
availableMargin: (accountValue - marginUsed).toString(),
|
|
716
|
+
marginUsed: marginUsed.toString(),
|
|
717
|
+
unrealizedPnl: unrealizedPnl.toString(),
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
static summaryComputableFor(mode) {
|
|
721
|
+
return (mode !== index_js_1.HlAbstractionMode.UNIFIED_ACCOUNT &&
|
|
722
|
+
mode !== index_js_1.HlAbstractionMode.PORTFOLIO_MARGIN);
|
|
723
|
+
}
|
|
724
|
+
async acquireSpotWire(address) {
|
|
725
|
+
const user = address.toLowerCase();
|
|
726
|
+
const wireKey = `spot:${user}`;
|
|
727
|
+
const payload = { type: 'spotState', user };
|
|
728
|
+
const count = this.spotRefs.get(user) ?? 0;
|
|
729
|
+
this.spotRefs.set(user, count + 1);
|
|
730
|
+
if (count === 0) {
|
|
731
|
+
await this.registerSub(wireKey, payload);
|
|
732
|
+
}
|
|
733
|
+
let released = false;
|
|
734
|
+
return () => {
|
|
735
|
+
if (released) {
|
|
736
|
+
return;
|
|
737
|
+
}
|
|
738
|
+
released = true;
|
|
739
|
+
const remaining = (this.spotRefs.get(user) ?? 1) - 1;
|
|
740
|
+
if (remaining <= 0) {
|
|
741
|
+
this.spotRefs.delete(user);
|
|
742
|
+
this.unregisterSub(wireKey);
|
|
743
|
+
this.rws.send(JSON.stringify({ method: 'unsubscribe', subscription: payload }));
|
|
744
|
+
}
|
|
745
|
+
else {
|
|
746
|
+
this.spotRefs.set(user, remaining);
|
|
747
|
+
}
|
|
748
|
+
};
|
|
749
|
+
}
|
|
750
|
+
syncUnifiedPipeline(key, address, mode) {
|
|
751
|
+
const unified = !HyperliquidWsProvider.summaryComputableFor(mode);
|
|
752
|
+
const existing = this.unifiedSummaryByUser.get(key);
|
|
753
|
+
if (unified && existing === undefined) {
|
|
754
|
+
this.unifiedSummaryByUser.set(key, {
|
|
755
|
+
releaseSpot: this.acquireSpotWire(address).catch((error) => {
|
|
756
|
+
perps_sdk_1.wsLog.handlerFailure(this.providerKey, error);
|
|
757
|
+
return () => { };
|
|
758
|
+
}),
|
|
759
|
+
});
|
|
760
|
+
}
|
|
761
|
+
else if (!unified && existing !== undefined) {
|
|
762
|
+
this.unifiedSummaryByUser.delete(key);
|
|
763
|
+
void existing.releaseSpot.then((release) => release());
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
emitUnifiedSummary(key) {
|
|
767
|
+
const pipeline = this.unifiedSummaryByUser.get(key);
|
|
768
|
+
const positions = this.latestPositionsByUser.get(key);
|
|
769
|
+
if (pipeline?.spot === undefined || positions === undefined) {
|
|
770
|
+
return;
|
|
771
|
+
}
|
|
772
|
+
const summary = (0, perps_sdk_1.summarizeAccount)({
|
|
773
|
+
collateralBalances: pipeline.spot.collateralBalances,
|
|
774
|
+
balances: pipeline.spot.balances,
|
|
775
|
+
}, positions, 'gross');
|
|
776
|
+
this.emit(`accountSummary:${key}`, {
|
|
682
777
|
channel: 'accountSummary',
|
|
683
|
-
data:
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
778
|
+
data: summary,
|
|
779
|
+
});
|
|
780
|
+
}
|
|
781
|
+
static ABSTRACTION_TTL_MS = 15_000;
|
|
782
|
+
static REFRESH_COALESCE_MS = 200;
|
|
783
|
+
emitSummaryIfModeAllows(user, summary) {
|
|
784
|
+
const key = user.toLowerCase();
|
|
785
|
+
if (this.client === undefined) {
|
|
786
|
+
this.emit(`accountSummary:${key}`, {
|
|
787
|
+
channel: 'accountSummary',
|
|
788
|
+
data: summary,
|
|
789
|
+
});
|
|
790
|
+
return;
|
|
791
|
+
}
|
|
792
|
+
const entry = this.abstractionByUser.get(key);
|
|
793
|
+
if (entry === undefined || entry === 'pending') {
|
|
794
|
+
this.heldSummaryByUser.set(key, summary);
|
|
795
|
+
if (entry === undefined) {
|
|
796
|
+
this.fetchAbstractionMode(user, key);
|
|
797
|
+
}
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
if (Date.now() - entry.readAt > HyperliquidWsProvider.ABSTRACTION_TTL_MS) {
|
|
801
|
+
this.fetchAbstractionMode(user, key, entry);
|
|
802
|
+
}
|
|
803
|
+
if (!HyperliquidWsProvider.summaryComputableFor(entry.mode)) {
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
this.emit(`accountSummary:${key}`, {
|
|
807
|
+
channel: 'accountSummary',
|
|
808
|
+
data: summary,
|
|
809
|
+
});
|
|
810
|
+
}
|
|
811
|
+
fetchAbstractionMode(user, key, refreshing) {
|
|
812
|
+
const client = this.client;
|
|
813
|
+
if (client === undefined) {
|
|
814
|
+
return;
|
|
815
|
+
}
|
|
816
|
+
this.abstractionByUser.set(key, refreshing ? { ...refreshing, readAt: Date.now() } : 'pending');
|
|
817
|
+
(0, index_js_2.infoRequest)(constants_js_1.DEFAULT_HYPERLIQUID_API_URL, { type: 'userAbstraction', user }, (0, index_js_2.hlInfoOptions)(client)).then((mode) => {
|
|
818
|
+
this.abstractionByUser.set(key, { mode, readAt: Date.now() });
|
|
819
|
+
this.syncUnifiedPipeline(key, user, mode);
|
|
820
|
+
const held = this.heldSummaryByUser.get(key);
|
|
821
|
+
this.heldSummaryByUser.delete(key);
|
|
822
|
+
if (held && HyperliquidWsProvider.summaryComputableFor(mode)) {
|
|
823
|
+
this.emit(`accountSummary:${key}`, {
|
|
824
|
+
channel: 'accountSummary',
|
|
825
|
+
data: held,
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
}, (error) => {
|
|
829
|
+
if (!refreshing) {
|
|
830
|
+
this.abstractionByUser.delete(key);
|
|
831
|
+
}
|
|
832
|
+
perps_sdk_1.wsLog.handlerFailure(this.providerKey, error);
|
|
689
833
|
});
|
|
690
834
|
}
|
|
691
835
|
handleSpotState(data) {
|
|
692
|
-
const
|
|
693
|
-
this.
|
|
836
|
+
const user = data.user.toLowerCase();
|
|
837
|
+
const markets = this.registry?.markets ?? [];
|
|
838
|
+
const priceById = (0, index_js_2.spotPriceById)(markets, this.mergedMids());
|
|
839
|
+
const rows = data.spotState.balances.map((b) => ({
|
|
840
|
+
balance: (0, index_js_2.spotBalance)((0, index_js_2.spotAssetFromToken)(b), b.total, priceById),
|
|
841
|
+
hold: b.hold,
|
|
842
|
+
}));
|
|
843
|
+
this.emit(`spotState:${user}`, {
|
|
694
844
|
channel: 'spotBalances',
|
|
695
|
-
data:
|
|
696
|
-
...(0, index_js_1.spotBalance)((0, index_js_1.spotAssetFromToken)(b), b.total, priceById),
|
|
697
|
-
locked: b.hold,
|
|
698
|
-
})),
|
|
845
|
+
data: rows.map(({ balance, hold }) => ({ ...balance, locked: hold })),
|
|
699
846
|
});
|
|
847
|
+
const pipeline = this.unifiedSummaryByUser.get(user);
|
|
848
|
+
if (pipeline !== undefined) {
|
|
849
|
+
const quoteAssetIds = new Set(markets.map((m) => m.quoteAsset.id));
|
|
850
|
+
const entry = this.abstractionByUser.get(user);
|
|
851
|
+
const portfolioMargin = entry !== undefined &&
|
|
852
|
+
entry !== 'pending' &&
|
|
853
|
+
entry.mode === index_js_1.HlAbstractionMode.PORTFOLIO_MARGIN;
|
|
854
|
+
pipeline.spot = (0, index_js_2.partitionSpotBalances)(rows.map(({ balance }) => balance), quoteAssetIds, portfolioMargin);
|
|
855
|
+
this.emitUnifiedSummary(user);
|
|
856
|
+
}
|
|
700
857
|
}
|
|
701
858
|
}
|
|
702
859
|
exports.HyperliquidWsProvider = HyperliquidWsProvider;
|