@lifi/perps-sdk-provider-hyperliquid 15.0.0 → 16.0.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 +4 -0
- package/dist/cjs/HyperliquidProvider.js.map +1 -1
- package/dist/cjs/accountSummary.d.ts.map +1 -1
- package/dist/cjs/accountSummary.js +34 -7
- package/dist/cjs/accountSummary.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/activeAssetData.d.ts +6 -0
- package/dist/cjs/services/activeAssetData.d.ts.map +1 -0
- package/dist/cjs/services/activeAssetData.js +7 -0
- package/dist/cjs/services/activeAssetData.js.map +1 -0
- package/dist/cjs/services/getAccount.d.ts.map +1 -1
- package/dist/cjs/services/getAccount.js +23 -35
- package/dist/cjs/services/getAccount.js.map +1 -1
- package/dist/cjs/services/getAvailableToTrade.d.ts +10 -0
- package/dist/cjs/services/getAvailableToTrade.d.ts.map +1 -0
- package/dist/cjs/services/getAvailableToTrade.js +32 -0
- package/dist/cjs/services/getAvailableToTrade.js.map +1 -0
- package/dist/cjs/services/getMarketSettings.d.ts +1 -1
- package/dist/cjs/services/getMarketSettings.d.ts.map +1 -1
- package/dist/cjs/services/getMarketSettings.js +3 -7
- package/dist/cjs/services/getMarketSettings.js.map +1 -1
- package/dist/cjs/services/getWithdrawableBalances.d.ts +5 -0
- package/dist/cjs/services/getWithdrawableBalances.d.ts.map +1 -0
- package/dist/cjs/services/getWithdrawableBalances.js +27 -0
- package/dist/cjs/services/getWithdrawableBalances.js.map +1 -0
- package/dist/cjs/types/account.d.ts +11 -8
- package/dist/cjs/types/account.d.ts.map +1 -1
- package/dist/cjs/types/account.js.map +1 -1
- package/dist/cjs/types/ws.d.ts +3 -4
- package/dist/cjs/types/ws.d.ts.map +1 -1
- package/dist/cjs/utils/abstractionMode.d.ts +1 -1
- package/dist/cjs/utils/abstractionMode.d.ts.map +1 -1
- package/dist/cjs/utils/abstractionMode.js.map +1 -1
- 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 +6 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
- package/dist/cjs/utils/mapPosition.js +1 -4
- package/dist/cjs/utils/mapPosition.js.map +1 -1
- package/dist/cjs/utils/spotCollateral.d.ts +1 -1
- package/dist/cjs/utils/spotCollateral.d.ts.map +1 -1
- package/dist/cjs/utils/spotCollateral.js +1 -12
- package/dist/cjs/utils/spotCollateral.js.map +1 -1
- package/dist/cjs/utils/venueTotals.d.ts +11 -0
- package/dist/cjs/utils/venueTotals.d.ts.map +1 -0
- package/dist/cjs/utils/venueTotals.js +24 -0
- package/dist/cjs/utils/venueTotals.js.map +1 -0
- package/dist/cjs/utils/withdrawableBalances.d.ts +4 -0
- package/dist/cjs/utils/withdrawableBalances.d.ts.map +1 -0
- package/dist/cjs/utils/withdrawableBalances.js +35 -0
- package/dist/cjs/utils/withdrawableBalances.js.map +1 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +3 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.js +102 -36
- package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/esm/HyperliquidProvider.d.ts.map +1 -1
- package/dist/esm/HyperliquidProvider.js +4 -0
- package/dist/esm/HyperliquidProvider.js.map +1 -1
- package/dist/esm/accountSummary.d.ts +4 -3
- package/dist/esm/accountSummary.d.ts.map +1 -1
- package/dist/esm/accountSummary.js +36 -18
- package/dist/esm/accountSummary.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/activeAssetData.d.ts +13 -0
- package/dist/esm/services/activeAssetData.d.ts.map +1 -0
- package/dist/esm/services/activeAssetData.js +10 -0
- package/dist/esm/services/activeAssetData.js.map +1 -0
- package/dist/esm/services/getAccount.d.ts.map +1 -1
- package/dist/esm/services/getAccount.js +19 -29
- package/dist/esm/services/getAccount.js.map +1 -1
- package/dist/esm/services/getAvailableToTrade.d.ts +26 -0
- package/dist/esm/services/getAvailableToTrade.d.ts.map +1 -0
- package/dist/esm/services/getAvailableToTrade.js +42 -0
- package/dist/esm/services/getAvailableToTrade.js.map +1 -0
- package/dist/esm/services/getMarketSettings.d.ts +1 -1
- package/dist/esm/services/getMarketSettings.d.ts.map +1 -1
- package/dist/esm/services/getMarketSettings.js +3 -7
- package/dist/esm/services/getMarketSettings.js.map +1 -1
- package/dist/esm/services/getWithdrawableBalances.d.ts +22 -0
- package/dist/esm/services/getWithdrawableBalances.d.ts.map +1 -0
- package/dist/esm/services/getWithdrawableBalances.js +35 -0
- package/dist/esm/services/getWithdrawableBalances.js.map +1 -0
- package/dist/esm/types/account.d.ts +21 -8
- package/dist/esm/types/account.d.ts.map +1 -1
- package/dist/esm/types/account.js.map +1 -1
- package/dist/esm/types/ws.d.ts +10 -4
- package/dist/esm/types/ws.d.ts.map +1 -1
- package/dist/esm/utils/abstractionMode.d.ts +1 -1
- package/dist/esm/utils/abstractionMode.d.ts.map +1 -1
- package/dist/esm/utils/abstractionMode.js.map +1 -1
- 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/mapPosition.d.ts.map +1 -1
- package/dist/esm/utils/mapPosition.js +1 -4
- package/dist/esm/utils/mapPosition.js.map +1 -1
- package/dist/esm/utils/spotCollateral.d.ts +4 -4
- package/dist/esm/utils/spotCollateral.d.ts.map +1 -1
- package/dist/esm/utils/spotCollateral.js +4 -23
- package/dist/esm/utils/spotCollateral.js.map +1 -1
- package/dist/esm/utils/venueTotals.d.ts +26 -0
- package/dist/esm/utils/venueTotals.d.ts.map +1 -0
- package/dist/esm/utils/venueTotals.js +26 -0
- package/dist/esm/utils/venueTotals.js.map +1 -0
- package/dist/esm/utils/withdrawableBalances.d.ts +14 -0
- package/dist/esm/utils/withdrawableBalances.d.ts.map +1 -0
- package/dist/esm/utils/withdrawableBalances.js +41 -0
- package/dist/esm/utils/withdrawableBalances.js.map +1 -0
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts +4 -1
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/esm/websocket/HyperliquidWsProvider.js +101 -35
- package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/types/HyperliquidProvider.d.ts.map +1 -1
- package/dist/types/accountSummary.d.ts +4 -3
- package/dist/types/accountSummary.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/services/activeAssetData.d.ts +13 -0
- package/dist/types/services/activeAssetData.d.ts.map +1 -0
- package/dist/types/services/getAccount.d.ts.map +1 -1
- package/dist/types/services/getAvailableToTrade.d.ts +26 -0
- package/dist/types/services/getAvailableToTrade.d.ts.map +1 -0
- package/dist/types/services/getMarketSettings.d.ts +1 -1
- package/dist/types/services/getMarketSettings.d.ts.map +1 -1
- package/dist/types/services/getWithdrawableBalances.d.ts +22 -0
- package/dist/types/services/getWithdrawableBalances.d.ts.map +1 -0
- package/dist/types/types/account.d.ts +21 -8
- package/dist/types/types/account.d.ts.map +1 -1
- package/dist/types/types/ws.d.ts +10 -4
- package/dist/types/types/ws.d.ts.map +1 -1
- package/dist/types/utils/abstractionMode.d.ts +1 -1
- package/dist/types/utils/abstractionMode.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/mapPosition.d.ts.map +1 -1
- package/dist/types/utils/spotCollateral.d.ts +4 -4
- package/dist/types/utils/spotCollateral.d.ts.map +1 -1
- package/dist/types/utils/venueTotals.d.ts +26 -0
- package/dist/types/utils/venueTotals.d.ts.map +1 -0
- package/dist/types/utils/withdrawableBalances.d.ts +14 -0
- package/dist/types/utils/withdrawableBalances.d.ts.map +1 -0
- package/dist/types/websocket/HyperliquidWsProvider.d.ts +4 -1
- package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/HyperliquidProvider.ts +26 -0
- package/src/accountSummary.ts +64 -19
- package/src/index.ts +2 -0
- package/src/services/activeAssetData.ts +24 -0
- package/src/services/getAccount.ts +37 -52
- package/src/services/getAvailableToTrade.ts +72 -0
- package/src/services/getMarketSettings.ts +7 -11
- package/src/services/getWithdrawableBalances.ts +84 -0
- package/src/types/account.ts +22 -8
- package/src/types/ws.ts +18 -5
- package/src/utils/abstractionMode.ts +1 -1
- package/src/utils/index.ts +6 -0
- package/src/utils/mapPosition.ts +1 -5
- package/src/utils/spotCollateral.ts +4 -25
- package/src/utils/venueTotals.ts +48 -0
- package/src/utils/withdrawableBalances.ts +57 -0
- package/src/websocket/HyperliquidWsProvider.ts +149 -42
- package/dist/cjs/websocket/decodeChain.d.ts +0 -11
- package/dist/cjs/websocket/decodeChain.d.ts.map +0 -1
- package/dist/cjs/websocket/decodeChain.js +0 -37
- package/dist/cjs/websocket/decodeChain.js.map +0 -1
- package/dist/esm/websocket/decodeChain.d.ts +0 -30
- package/dist/esm/websocket/decodeChain.d.ts.map +0 -1
- package/dist/esm/websocket/decodeChain.js +0 -44
- package/dist/esm/websocket/decodeChain.js.map +0 -1
- package/dist/types/websocket/decodeChain.d.ts +0 -30
- package/dist/types/websocket/decodeChain.d.ts.map +0 -1
- package/src/websocket/decodeChain.ts +0 -54
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractionMode.d.ts","sourceRoot":"","sources":["../../../src/utils/abstractionMode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAOvD,eAAO,MAAM,oBAAoB,GAC/B,aAAa,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"abstractionMode.d.ts","sourceRoot":"","sources":["../../../src/utils/abstractionMode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAOvD,eAAO,MAAM,oBAAoB,GAC/B,aAAa,iBAAiB,GAAG,MAAM,GAAG,IAAI,KAC7C,OAEiD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractionMode.js","sourceRoot":"","sources":["../../../src/utils/abstractionMode.ts"],"names":[],"mappings":";;;AAAA,oDAAuD;AAOhD,MAAM,oBAAoB,GAAG,CAClC,
|
|
1
|
+
{"version":3,"file":"abstractionMode.js","sourceRoot":"","sources":["../../../src/utils/abstractionMode.ts"],"names":[],"mappings":";;;AAAA,oDAAuD;AAOhD,MAAM,oBAAoB,GAAG,CAClC,WAA8C,EACrC,EAAE,CACX,WAAW,KAAK,8BAAiB,CAAC,eAAe;IACjD,WAAW,KAAK,8BAAiB,CAAC,gBAAgB,CAAA;AAJvC,QAAA,oBAAoB,wBAImB"}
|
|
@@ -17,4 +17,6 @@ export { priceStepToAggregation } from './priceStepToAggregation.js';
|
|
|
17
17
|
export { spotAssetFromToken, spotBalance, spotPriceById, } from './spotBalance.js';
|
|
18
18
|
export { partitionSpotBalances, type SpotPartition } from './spotCollateral.js';
|
|
19
19
|
export { positionMarginConstraints } from './transferMargin.js';
|
|
20
|
+
export { type DexMarginSummary, perpsTotals, sumUnrealizedPnl, } from './venueTotals.js';
|
|
21
|
+
export { hyperliquidWithdrawableBalances } from './withdrawableBalances.js';
|
|
20
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAA;AACtB,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,EACL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AACzB,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,KAAK,WAAW,EAChB,QAAQ,EACR,cAAc,EACd,YAAY,GACb,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;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAA;AACtB,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,EACL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,GACpB,MAAM,kBAAkB,CAAA;AACzB,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,KAAK,WAAW,EAChB,QAAQ,EACR,cAAc,EACd,YAAY,GACb,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;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EACL,KAAK,gBAAgB,EACrB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,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.positionMarginConstraints = 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.mapOrderType = exports.mapOrderStatus = exports.mapOrder = exports.mapMarketContext = exports.mapMarket = exports.mapFill = exports.classifyFillFromPosition = exports.mapLiquidationFills = exports.mapLedgerEntry = exports.mapFundingActivity = exports.calculateMaintenanceMarginRate = exports.calculateLiquidationPrice = exports.infoRequest = exports.hlInfoOptions = exports.matchOrderActionHash = exports.getClientOrderIds = exports.fetchUserTransactions = exports.decodeFastAssetCtxs = exports.decodeCompressedJson = exports.UNIT_TOKEN_NAMES = exports.spotLogoURI = exports.applyLogoOverride = exports.getProviderIndex = exports.calculateAssetId = exports.assetIsSpot = exports.assetIsOutcome = void 0;
|
|
3
|
+
exports.hyperliquidWithdrawableBalances = exports.sumUnrealizedPnl = exports.perpsTotals = exports.positionMarginConstraints = 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.mapOrderType = exports.mapOrderStatus = exports.mapOrder = exports.mapMarketContext = exports.mapMarket = exports.mapFill = exports.classifyFillFromPosition = exports.mapLiquidationFills = exports.mapLedgerEntry = exports.mapFundingActivity = exports.calculateMaintenanceMarginRate = exports.calculateLiquidationPrice = exports.infoRequest = exports.hlInfoOptions = exports.matchOrderActionHash = exports.getClientOrderIds = exports.fetchUserTransactions = exports.decodeFastAssetCtxs = exports.decodeCompressedJson = exports.UNIT_TOKEN_NAMES = exports.spotLogoURI = exports.applyLogoOverride = exports.getProviderIndex = exports.calculateAssetId = exports.assetIsSpot = exports.assetIsOutcome = void 0;
|
|
4
4
|
var assetId_js_1 = require("./assetId.js");
|
|
5
5
|
Object.defineProperty(exports, "assetIsOutcome", { enumerable: true, get: function () { return assetId_js_1.assetIsOutcome; } });
|
|
6
6
|
Object.defineProperty(exports, "assetIsSpot", { enumerable: true, get: function () { return assetId_js_1.assetIsSpot; } });
|
|
@@ -58,4 +58,9 @@ var spotCollateral_js_1 = require("./spotCollateral.js");
|
|
|
58
58
|
Object.defineProperty(exports, "partitionSpotBalances", { enumerable: true, get: function () { return spotCollateral_js_1.partitionSpotBalances; } });
|
|
59
59
|
var transferMargin_js_1 = require("./transferMargin.js");
|
|
60
60
|
Object.defineProperty(exports, "positionMarginConstraints", { enumerable: true, get: function () { return transferMargin_js_1.positionMarginConstraints; } });
|
|
61
|
+
var venueTotals_js_1 = require("./venueTotals.js");
|
|
62
|
+
Object.defineProperty(exports, "perpsTotals", { enumerable: true, get: function () { return venueTotals_js_1.perpsTotals; } });
|
|
63
|
+
Object.defineProperty(exports, "sumUnrealizedPnl", { enumerable: true, get: function () { return venueTotals_js_1.sumUnrealizedPnl; } });
|
|
64
|
+
var withdrawableBalances_js_1 = require("./withdrawableBalances.js");
|
|
65
|
+
Object.defineProperty(exports, "hyperliquidWithdrawableBalances", { enumerable: true, get: function () { return withdrawableBalances_js_1.hyperliquidWithdrawableBalances; } });
|
|
61
66
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAIA,2CAKqB;AAJnB,4GAAA,cAAc,OAAA;AACd,yGAAA,WAAW,OAAA;AACX,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAElB,+CAIuB;AAHrB,iHAAA,iBAAiB,OAAA;AACjB,2GAAA,WAAW,OAAA;AACX,gHAAA,gBAAgB,OAAA;AAElB,mEAGiC;AAF/B,8HAAA,oBAAoB,OAAA;AACpB,6HAAA,mBAAmB,OAAA;AAErB,6CAIsB;AAHpB,oHAAA,qBAAqB,OAAA;AACrB,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AAGtB,iDAA4D;AAAnD,8GAAA,aAAa,OAAA;AAAE,4GAAA,WAAW,OAAA;AACnC,mDAGyB;AAFvB,2HAAA,yBAAyB,OAAA;AACzB,gIAAA,8BAA8B,OAAA;AAEhC,mDAIyB;AAHvB,oHAAA,kBAAkB,OAAA;AAClB,gHAAA,cAAc,OAAA;AACd,qHAAA,mBAAmB,OAAA;AAErB,2CAAgE;AAAvD,sHAAA,wBAAwB,OAAA;AAAE,qGAAA,OAAO,OAAA;AAC1C,+CAA0C;AAAjC,yGAAA,SAAS,OAAA;AAClB,6DAAwD;AAA/C,uHAAA,gBAAgB,OAAA;AACzB,6CAKsB;AAHpB,uGAAA,QAAQ,OAAA;AACR,6GAAA,cAAc,OAAA;AACd,2GAAA,YAAY,OAAA;AAEd,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;AAC9B,yDAA+D;AAAtD,8HAAA,yBAAyB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAIA,2CAKqB;AAJnB,4GAAA,cAAc,OAAA;AACd,yGAAA,WAAW,OAAA;AACX,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAElB,+CAIuB;AAHrB,iHAAA,iBAAiB,OAAA;AACjB,2GAAA,WAAW,OAAA;AACX,gHAAA,gBAAgB,OAAA;AAElB,mEAGiC;AAF/B,8HAAA,oBAAoB,OAAA;AACpB,6HAAA,mBAAmB,OAAA;AAErB,6CAIsB;AAHpB,oHAAA,qBAAqB,OAAA;AACrB,gHAAA,iBAAiB,OAAA;AACjB,mHAAA,oBAAoB,OAAA;AAGtB,iDAA4D;AAAnD,8GAAA,aAAa,OAAA;AAAE,4GAAA,WAAW,OAAA;AACnC,mDAGyB;AAFvB,2HAAA,yBAAyB,OAAA;AACzB,gIAAA,8BAA8B,OAAA;AAEhC,mDAIyB;AAHvB,oHAAA,kBAAkB,OAAA;AAClB,gHAAA,cAAc,OAAA;AACd,qHAAA,mBAAmB,OAAA;AAErB,2CAAgE;AAAvD,sHAAA,wBAAwB,OAAA;AAAE,qGAAA,OAAO,OAAA;AAC1C,+CAA0C;AAAjC,yGAAA,SAAS,OAAA;AAClB,6DAAwD;AAA/C,uHAAA,gBAAgB,OAAA;AACzB,6CAKsB;AAHpB,uGAAA,QAAQ,OAAA;AACR,6GAAA,cAAc,OAAA;AACd,2GAAA,YAAY,OAAA;AAEd,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;AAC9B,yDAA+D;AAAtD,8HAAA,yBAAyB,OAAA;AAClC,mDAIyB;AAFvB,6GAAA,WAAW,OAAA;AACX,kHAAA,gBAAgB,OAAA;AAElB,qEAA2E;AAAlE,0IAAA,+BAA+B,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAQxD,eAAO,MAAM,mBAAmB,GAAI,IAAI,eAAe,KAAG,OAChB,CAAA;AAU1C,eAAO,MAAM,WAAW,GACtB,IAAI,eAAe,EACnB,QAAQ,kBAAkB,KACzB,
|
|
1
|
+
{"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAQxD,eAAO,MAAM,mBAAmB,GAAI,IAAI,eAAe,KAAG,OAChB,CAAA;AAU1C,eAAO,MAAM,WAAW,GACtB,IAAI,eAAe,EACnB,QAAQ,kBAAkB,KACzB,QAsBF,CAAA"}
|
|
@@ -14,9 +14,6 @@ const mapPosition = (ap, market) => {
|
|
|
14
14
|
const positionValue = new big_js_1.default(pos.positionValue).abs();
|
|
15
15
|
const leverage = new big_js_1.default(pos.leverage.value);
|
|
16
16
|
const marginMode = pos.leverage.type === 'cross' ? perps_types_1.MarginMode.CROSS : perps_types_1.MarginMode.ISOLATED;
|
|
17
|
-
const marginUsed = marginMode === perps_types_1.MarginMode.ISOLATED
|
|
18
|
-
? new big_js_1.default(pos.marginUsed).minus(pos.unrealizedPnl).toFixed()
|
|
19
|
-
: pos.marginUsed;
|
|
20
17
|
return {
|
|
21
18
|
market,
|
|
22
19
|
side: szi.gte(0) ? perps_types_1.PositionSide.LONG : perps_types_1.PositionSide.SHORT,
|
|
@@ -27,7 +24,7 @@ const mapPosition = (ap, market) => {
|
|
|
27
24
|
unrealizedPnl: pos.unrealizedPnl,
|
|
28
25
|
accruedFunding: new big_js_1.default(pos.cumFunding.sinceOpen).neg().toFixed(),
|
|
29
26
|
leverage: ap.position.leverage.value,
|
|
30
|
-
marginUsed,
|
|
27
|
+
marginUsed: pos.marginUsed,
|
|
31
28
|
initialMarginRequirement: positionValue.div(leverage).toFixed(),
|
|
32
29
|
marginMode,
|
|
33
30
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapPosition.js","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":";;;;;;AACA,mDAA4D;AAC5D,oDAAwB;AASjB,MAAM,mBAAmB,GAAG,CAAC,EAAmB,EAAW,EAAE,CAClE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAD7B,QAAA,mBAAmB,uBACU;AAUnC,MAAM,WAAW,GAAG,CACzB,EAAmB,EACnB,MAA0B,EAChB,EAAE;IACZ,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAA;IACvB,MAAM,GAAG,GAAG,IAAI,gBAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,aAAa,GAAG,IAAI,gBAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAA;IACtD,MAAM,QAAQ,GAAG,IAAI,gBAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,UAAU,GACd,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAU,CAAC,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"mapPosition.js","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":";;;;;;AACA,mDAA4D;AAC5D,oDAAwB;AASjB,MAAM,mBAAmB,GAAG,CAAC,EAAmB,EAAW,EAAE,CAClE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAD7B,QAAA,mBAAmB,uBACU;AAUnC,MAAM,WAAW,GAAG,CACzB,EAAmB,EACnB,MAA0B,EAChB,EAAE;IACZ,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAA;IACvB,MAAM,GAAG,GAAG,IAAI,gBAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,aAAa,GAAG,IAAI,gBAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAA;IACtD,MAAM,QAAQ,GAAG,IAAI,gBAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,UAAU,GACd,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAU,CAAC,QAAQ,CAAA;IAExE,OAAO;QACL,MAAM;QACN,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,0BAAY,CAAC,IAAI,CAAC,CAAC,CAAC,0BAAY,CAAC,KAAK;QACzD,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;QACzB,UAAU,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;QAC9B,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;QACnE,gBAAgB,EAAE,GAAG,CAAC,aAAa,IAAI,GAAG;QAC1C,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,cAAc,EAAE,IAAI,gBAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;QACjE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,wBAAwB,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;QAC/D,UAAU;KACX,CAAA;AACH,CAAC,CAAA;AAzBY,QAAA,WAAW,eAyBvB"}
|
|
@@ -3,5 +3,5 @@ export interface SpotPartition {
|
|
|
3
3
|
collateralBalances: Balance[];
|
|
4
4
|
balances: Balance[];
|
|
5
5
|
}
|
|
6
|
-
export declare const partitionSpotBalances: (spotBalances: readonly Balance[], quoteAssetIds: ReadonlySet<string
|
|
6
|
+
export declare const partitionSpotBalances: (spotBalances: readonly Balance[], quoteAssetIds: ReadonlySet<string>) => SpotPartition;
|
|
7
7
|
//# sourceMappingURL=spotCollateral.d.ts.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"spotCollateral.d.ts","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAQhD,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,KACjC,aAcF,CAAA"}
|
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.partitionSpotBalances = void 0;
|
|
4
4
|
const decimal_js_1 = require("./decimal.js");
|
|
5
|
-
const
|
|
6
|
-
HYPE: 0.5,
|
|
7
|
-
UBTC: 0.5,
|
|
8
|
-
};
|
|
9
|
-
const partitionSpotBalances = (spotBalances, quoteAssetIds, portfolioMargin) => {
|
|
5
|
+
const partitionSpotBalances = (spotBalances, quoteAssetIds) => {
|
|
10
6
|
const collateralBalances = [];
|
|
11
7
|
const balances = [];
|
|
12
8
|
for (const balance of spotBalances) {
|
|
@@ -15,13 +11,6 @@ const partitionSpotBalances = (spotBalances, quoteAssetIds, portfolioMargin) =>
|
|
|
15
11
|
}
|
|
16
12
|
if (quoteAssetIds.has(balance.asset.id)) {
|
|
17
13
|
collateralBalances.push(balance);
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
const ltv = portfolioMargin
|
|
21
|
-
? PORTFOLIO_MARGIN_LTV[balance.asset.displaySymbol]
|
|
22
|
-
: undefined;
|
|
23
|
-
if (ltv !== undefined) {
|
|
24
|
-
collateralBalances.push({ ...balance, collateralWeight: ltv });
|
|
25
14
|
}
|
|
26
15
|
else {
|
|
27
16
|
balances.push(balance);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotCollateral.js","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":";;;AACA,6CAAwC;
|
|
1
|
+
{"version":3,"file":"spotCollateral.js","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":";;;AACA,6CAAwC;AAkBjC,MAAM,qBAAqB,GAAG,CACnC,YAAgC,EAChC,aAAkC,EACnB,EAAE;IACjB,MAAM,kBAAkB,GAAc,EAAE,CAAA;IACxC,MAAM,QAAQ,GAAc,EAAE,CAAA;IAC9B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IAAI,CAAC,IAAA,sBAAS,EAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,SAAQ;QACV,CAAC;QACD,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClC,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;AAjBY,QAAA,qBAAqB,yBAiBjC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { HyperliquidMarginSummary, Position } from '@lifi/perps-types';
|
|
2
|
+
import Big from 'big.js';
|
|
3
|
+
export interface DexMarginSummary {
|
|
4
|
+
marginSummary?: HyperliquidMarginSummary;
|
|
5
|
+
}
|
|
6
|
+
export declare const perpsTotals: (dexStates: readonly DexMarginSummary[]) => {
|
|
7
|
+
accountValue: Big;
|
|
8
|
+
marginUsed: Big;
|
|
9
|
+
};
|
|
10
|
+
export declare const sumUnrealizedPnl: (positions: readonly Position[]) => Big;
|
|
11
|
+
//# sourceMappingURL=venueTotals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"venueTotals.d.ts","sourceRoot":"","sources":["../../../src/utils/venueTotals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,GAAG,MAAM,QAAQ,CAAA;AAQxB,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,wBAAwB,CAAA;CACzC;AAQD,eAAO,MAAM,WAAW,GACtB,WAAW,SAAS,gBAAgB,EAAE,KACrC;IAAE,YAAY,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,GAAG,CAAA;CAetC,CAAA;AAMD,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS,QAAQ,EAAE,KAAG,GAK/D,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.sumUnrealizedPnl = exports.perpsTotals = void 0;
|
|
7
|
+
const big_js_1 = __importDefault(require("big.js"));
|
|
8
|
+
const decimal_js_1 = require("./decimal.js");
|
|
9
|
+
const perpsTotals = (dexStates) => {
|
|
10
|
+
let accountValue = new big_js_1.default(0);
|
|
11
|
+
let marginUsed = new big_js_1.default(0);
|
|
12
|
+
for (const { marginSummary } of dexStates) {
|
|
13
|
+
if (marginSummary === undefined) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
accountValue = accountValue.plus((0, decimal_js_1.toWireBig)(marginSummary.accountValue, 'marginSummary.accountValue'));
|
|
17
|
+
marginUsed = marginUsed.plus((0, decimal_js_1.toWireBig)(marginSummary.totalMarginUsed, 'marginSummary.totalMarginUsed'));
|
|
18
|
+
}
|
|
19
|
+
return { accountValue, marginUsed };
|
|
20
|
+
};
|
|
21
|
+
exports.perpsTotals = perpsTotals;
|
|
22
|
+
const sumUnrealizedPnl = (positions) => positions.reduce((sum, position) => sum.plus((0, decimal_js_1.toWireBig)(position.unrealizedPnl, 'position.unrealizedPnl')), new big_js_1.default(0));
|
|
23
|
+
exports.sumUnrealizedPnl = sumUnrealizedPnl;
|
|
24
|
+
//# sourceMappingURL=venueTotals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"venueTotals.js","sourceRoot":"","sources":["../../../src/utils/venueTotals.ts"],"names":[],"mappings":";;;;;;AACA,oDAAwB;AACxB,6CAAwC;AAiBjC,MAAM,WAAW,GAAG,CACzB,SAAsC,EACE,EAAE;IAC1C,IAAI,YAAY,GAAG,IAAI,gBAAG,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,UAAU,GAAG,IAAI,gBAAG,CAAC,CAAC,CAAC,CAAA;IAC3B,KAAK,MAAM,EAAE,aAAa,EAAE,IAAI,SAAS,EAAE,CAAC;QAC1C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,SAAQ;QACV,CAAC;QACD,YAAY,GAAG,YAAY,CAAC,IAAI,CAC9B,IAAA,sBAAS,EAAC,aAAa,CAAC,YAAY,EAAE,4BAA4B,CAAC,CACpE,CAAA;QACD,UAAU,GAAG,UAAU,CAAC,IAAI,CAC1B,IAAA,sBAAS,EAAC,aAAa,CAAC,eAAe,EAAE,+BAA+B,CAAC,CAC1E,CAAA;IACH,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAA;AACrC,CAAC,CAAA;AAjBY,QAAA,WAAW,eAiBvB;AAMM,MAAM,gBAAgB,GAAG,CAAC,SAA8B,EAAO,EAAE,CACtE,SAAS,CAAC,MAAM,CACd,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAChB,GAAG,CAAC,IAAI,CAAC,IAAA,sBAAS,EAAC,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC,EACvE,IAAI,gBAAG,CAAC,CAAC,CAAC,CACX,CAAA;AALU,QAAA,gBAAgB,oBAK1B"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ProviderWithdrawableBalance } from '@lifi/perps-sdk';
|
|
2
|
+
import type { HlAbstractionMode, HlClearinghouseState, HlSpotClearinghouseState } from '../types/index.js';
|
|
3
|
+
export declare const hyperliquidWithdrawableBalances: (abstraction: HlAbstractionMode | null, state: HlClearinghouseState, spotState: HlSpotClearinghouseState, quoteAssetId: string) => ProviderWithdrawableBalance[];
|
|
4
|
+
//# sourceMappingURL=withdrawableBalances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawableBalances.d.ts","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,mBAAmB,CAAA;AAe1B,eAAO,MAAM,+BAA+B,GAC1C,aAAa,iBAAiB,GAAG,IAAI,EACrC,OAAO,oBAAoB,EAC3B,WAAW,wBAAwB,EACnC,cAAc,MAAM,KACnB,2BAA2B,EA+B7B,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hyperliquidWithdrawableBalances = void 0;
|
|
4
|
+
const abstractionMode_js_1 = require("./abstractionMode.js");
|
|
5
|
+
const assetId_js_1 = require("./assetId.js");
|
|
6
|
+
const decimal_js_1 = require("./decimal.js");
|
|
7
|
+
const hyperliquidWithdrawableBalances = (abstraction, state, spotState, quoteAssetId) => {
|
|
8
|
+
const rows = [];
|
|
9
|
+
if ((0, abstractionMode_js_1.isUnifiedAbstraction)(abstraction)) {
|
|
10
|
+
for (const balance of spotState.balances) {
|
|
11
|
+
if ((0, assetId_js_1.assetIsOutcome)(balance.coin)) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const spot = (0, decimal_js_1.toWireBig)(balance.total, 'spotBalance.total').minus((0, decimal_js_1.toWireBig)(balance.hold, 'spotBalance.hold'));
|
|
15
|
+
if (spot.gt(0)) {
|
|
16
|
+
rows.push({
|
|
17
|
+
assetId: String(balance.token),
|
|
18
|
+
route: 'spot',
|
|
19
|
+
available: spot.toFixed(),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const perps = (0, decimal_js_1.toWireBig)(state.withdrawable, 'clearinghouseState.withdrawable');
|
|
25
|
+
if (perps.gt(0)) {
|
|
26
|
+
rows.push({
|
|
27
|
+
assetId: quoteAssetId,
|
|
28
|
+
route: 'perps',
|
|
29
|
+
available: perps.toFixed(),
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return rows;
|
|
33
|
+
};
|
|
34
|
+
exports.hyperliquidWithdrawableBalances = hyperliquidWithdrawableBalances;
|
|
35
|
+
//# sourceMappingURL=withdrawableBalances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawableBalances.js","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":";;;AAMA,6DAA2D;AAC3D,6CAA6C;AAC7C,6CAAwC;AAYjC,MAAM,+BAA+B,GAAG,CAC7C,WAAqC,EACrC,KAA2B,EAC3B,SAAmC,EACnC,YAAoB,EACW,EAAE;IACjC,MAAM,IAAI,GAAkC,EAAE,CAAA;IAE9C,IAAI,IAAA,yCAAoB,EAAC,WAAW,CAAC,EAAE,CAAC;QACtC,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,IAAA,2BAAc,EAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,IAAA,sBAAS,EAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,KAAK,CAC9D,IAAA,sBAAS,EAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAC5C,CAAA;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC;oBACR,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC9B,KAAK,EAAE,MAAM;oBACb,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;iBAC1B,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,KAAK,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAA;IAC9E,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC;YACR,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;SAC3B,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AApCY,QAAA,+BAA+B,mCAoC3C"}
|
|
@@ -11,7 +11,7 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
11
11
|
private readonly abstractionByUser;
|
|
12
12
|
private readonly spotRefs;
|
|
13
13
|
private readonly unifiedSummaryByUser;
|
|
14
|
-
private readonly
|
|
14
|
+
private readonly latestPerpsByUser;
|
|
15
15
|
private readonly heldSummaryByUser;
|
|
16
16
|
private perpCtxBySubDex;
|
|
17
17
|
private spotCtxByMarketId;
|
|
@@ -70,6 +70,8 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
|
|
|
70
70
|
private static readonly REFRESH_COALESCE_MS;
|
|
71
71
|
private emitSummaryIfModeAllows;
|
|
72
72
|
private fetchAbstractionMode;
|
|
73
|
+
private handleActiveAssetData;
|
|
73
74
|
private handleSpotState;
|
|
75
|
+
private fetchAvailableAfterMaintenance;
|
|
74
76
|
}
|
|
75
77
|
//# sourceMappingURL=HyperliquidWsProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,9 @@ const constants_js_1 = require("../constants.js");
|
|
|
12
12
|
const index_js_1 = require("../types/index.js");
|
|
13
13
|
const decimal_js_1 = require("../utils/decimal.js");
|
|
14
14
|
const index_js_2 = require("../utils/index.js");
|
|
15
|
-
const decodeChain_js_1 = require("./decodeChain.js");
|
|
16
15
|
const HL_L2_BOOK_MAX_LEVELS_PER_SIDE = 20;
|
|
17
16
|
const normalizeHlAddress = (address) => (0, viem_1.isAddress)(address, { strict: false }) ? address.toLowerCase() : address;
|
|
17
|
+
const availableAfterMaintenance = (spotState, quoteAssetId) => spotState.tokenToAvailableAfterMaintenance?.find(([token]) => String(token) === quoteAssetId)?.[1];
|
|
18
18
|
const hyperliquidWsProvider = () => Object.assign(({ provider, wsUrl, client }) => new HyperliquidWsProvider(wsUrl, provider, client), { streamsCandles: true });
|
|
19
19
|
exports.hyperliquidWsProvider = hyperliquidWsProvider;
|
|
20
20
|
class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
@@ -27,7 +27,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
27
27
|
abstractionByUser = new Map();
|
|
28
28
|
spotRefs = new Map();
|
|
29
29
|
unifiedSummaryByUser = new Map();
|
|
30
|
-
|
|
30
|
+
latestPerpsByUser = new Map();
|
|
31
31
|
heldSummaryByUser = new Map();
|
|
32
32
|
perpCtxBySubDex = new Map();
|
|
33
33
|
spotCtxByMarketId = {};
|
|
@@ -36,11 +36,11 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
36
36
|
latestOrderbookByMarketId = new Map();
|
|
37
37
|
fastCtxByMarketId = {};
|
|
38
38
|
reportDecodeFailure = (error) => perps_sdk_1.wsLog.handlerFailure(this.providerKey, error);
|
|
39
|
-
fastDecodeChain = new
|
|
40
|
-
pacDecodeChain = new
|
|
41
|
-
sacDecodeChain = new
|
|
42
|
-
orderbookDecodeChain = new
|
|
43
|
-
orderUpdateChain = new
|
|
39
|
+
fastDecodeChain = new perps_sdk_1.DecodeChain('latest', this.reportDecodeFailure);
|
|
40
|
+
pacDecodeChain = new perps_sdk_1.DecodeChain('every', this.reportDecodeFailure);
|
|
41
|
+
sacDecodeChain = new perps_sdk_1.DecodeChain('every', this.reportDecodeFailure);
|
|
42
|
+
orderbookDecodeChain = new perps_sdk_1.DecodeChain('every', this.reportDecodeFailure);
|
|
43
|
+
orderUpdateChain = new perps_sdk_1.DecodeChain('every', this.reportDecodeFailure);
|
|
44
44
|
constructor(wsUrl, providerKey, client) {
|
|
45
45
|
super(new perps_sdk_1.ReconnectingWebSocket(wsUrl, { pingPayload: '{"method":"ping"}' }), providerKey);
|
|
46
46
|
this.client = client;
|
|
@@ -81,7 +81,8 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
81
81
|
(sub.channel === 'marketContext' ||
|
|
82
82
|
sub.channel === 'orderbook' ||
|
|
83
83
|
sub.channel === 'candle' ||
|
|
84
|
-
sub.channel === 'trades'
|
|
84
|
+
sub.channel === 'trades' ||
|
|
85
|
+
sub.channel === 'availableToTrade')) {
|
|
85
86
|
this.registry.requireActive(sub.marketId);
|
|
86
87
|
}
|
|
87
88
|
if (sub.channel === 'marketsContext') {
|
|
@@ -122,7 +123,7 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
122
123
|
this.clearinghouseRefs.delete(user);
|
|
123
124
|
this.abstractionByUser.delete(user);
|
|
124
125
|
this.heldSummaryByUser.delete(user);
|
|
125
|
-
this.
|
|
126
|
+
this.latestPerpsByUser.delete(user);
|
|
126
127
|
this.syncUnifiedPipeline(user, user, null);
|
|
127
128
|
this.unregisterSub(wireKey);
|
|
128
129
|
this.rws.send(JSON.stringify({ method: 'unsubscribe', subscription: payload }));
|
|
@@ -253,6 +254,8 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
253
254
|
return `accountSummary:${sub.address.toLowerCase()}`;
|
|
254
255
|
case 'spotBalances':
|
|
255
256
|
return `spotState:${sub.address.toLowerCase()}`;
|
|
257
|
+
case 'availableToTrade':
|
|
258
|
+
return `activeAssetData:${sub.address.toLowerCase()}:${sub.marketId}`;
|
|
256
259
|
}
|
|
257
260
|
}
|
|
258
261
|
orderbookAggregation(marketId, priceStep) {
|
|
@@ -311,6 +314,12 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
311
314
|
};
|
|
312
315
|
case 'spotBalances':
|
|
313
316
|
return { type: 'spotState', user: normalizeHlAddress(sub.address) };
|
|
317
|
+
case 'availableToTrade':
|
|
318
|
+
return {
|
|
319
|
+
type: 'activeAssetData',
|
|
320
|
+
user: normalizeHlAddress(sub.address),
|
|
321
|
+
coin: sub.marketId,
|
|
322
|
+
};
|
|
314
323
|
}
|
|
315
324
|
}
|
|
316
325
|
handleMessage(raw) {
|
|
@@ -379,6 +388,9 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
379
388
|
case 'spotState':
|
|
380
389
|
this.handleSpotState(msg.data);
|
|
381
390
|
break;
|
|
391
|
+
case 'activeAssetData':
|
|
392
|
+
this.handleActiveAssetData(msg.data);
|
|
393
|
+
break;
|
|
382
394
|
}
|
|
383
395
|
}
|
|
384
396
|
catch (error) {
|
|
@@ -759,22 +771,18 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
759
771
|
channel: 'positions',
|
|
760
772
|
data: positions,
|
|
761
773
|
});
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
marginUsed +=
|
|
770
|
-
Number.parseFloat(state.marginSummary?.totalMarginUsed ?? '') || 0;
|
|
771
|
-
}
|
|
772
|
-
const unrealizedPnl = positions.reduce((sum, p) => sum + (Number.parseFloat(p.unrealizedPnl) || 0), 0);
|
|
774
|
+
const { accountValue, marginUsed } = (0, index_js_2.perpsTotals)(data.clearinghouseStates.map(([, state]) => state));
|
|
775
|
+
const key = data.user.toLowerCase();
|
|
776
|
+
this.latestPerpsByUser.set(key, {
|
|
777
|
+
positions,
|
|
778
|
+
marginUsed: marginUsed.toFixed(),
|
|
779
|
+
});
|
|
780
|
+
this.emitUnifiedSummary(key);
|
|
773
781
|
this.emitSummaryIfModeAllows(data.user, {
|
|
774
|
-
portfolioValue: accountValue.
|
|
775
|
-
availableMargin: (
|
|
776
|
-
marginUsed: marginUsed.
|
|
777
|
-
unrealizedPnl:
|
|
782
|
+
portfolioValue: accountValue.toFixed(),
|
|
783
|
+
availableMargin: accountValue.minus(marginUsed).toFixed(),
|
|
784
|
+
marginUsed: marginUsed.toFixed(),
|
|
785
|
+
unrealizedPnl: (0, index_js_2.sumUnrealizedPnl)(positions).toFixed(),
|
|
778
786
|
});
|
|
779
787
|
}
|
|
780
788
|
static summaryComputableFor(mode) {
|
|
@@ -825,17 +833,24 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
825
833
|
}
|
|
826
834
|
emitUnifiedSummary(key) {
|
|
827
835
|
const pipeline = this.unifiedSummaryByUser.get(key);
|
|
828
|
-
const
|
|
829
|
-
if (pipeline?.spot === undefined ||
|
|
836
|
+
const perps = this.latestPerpsByUser.get(key);
|
|
837
|
+
if (pipeline?.spot === undefined ||
|
|
838
|
+
pipeline.availableMargin === undefined ||
|
|
839
|
+
perps === undefined) {
|
|
830
840
|
return;
|
|
831
841
|
}
|
|
832
|
-
const
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
842
|
+
const portfolioValue = [
|
|
843
|
+
...pipeline.spot.collateralBalances,
|
|
844
|
+
...pipeline.spot.balances,
|
|
845
|
+
].reduce((sum, balance) => sum.plus((0, decimal_js_1.toWireBig)(balance.valueUsd, 'spotBalance.valueUsd')), new big_js_1.default(0));
|
|
836
846
|
this.emit(`accountSummary:${key}`, {
|
|
837
847
|
channel: 'accountSummary',
|
|
838
|
-
data:
|
|
848
|
+
data: {
|
|
849
|
+
portfolioValue: portfolioValue.toFixed(),
|
|
850
|
+
availableMargin: pipeline.availableMargin,
|
|
851
|
+
marginUsed: perps.marginUsed,
|
|
852
|
+
unrealizedPnl: (0, index_js_2.sumUnrealizedPnl)(perps.positions).toFixed(),
|
|
853
|
+
},
|
|
839
854
|
});
|
|
840
855
|
}
|
|
841
856
|
static ABSTRACTION_TTL_MS = 15_000;
|
|
@@ -892,6 +907,23 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
892
907
|
perps_sdk_1.wsLog.handlerFailure(this.providerKey, error);
|
|
893
908
|
});
|
|
894
909
|
}
|
|
910
|
+
handleActiveAssetData(data) {
|
|
911
|
+
const market = this.registry?.get(data.coin);
|
|
912
|
+
if (market === undefined) {
|
|
913
|
+
throw new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ValidationError, `[${this.providerKey}] activeAssetData frame names unknown market '${data.coin}'.`);
|
|
914
|
+
}
|
|
915
|
+
const [buy, sell] = data.availableToTrade;
|
|
916
|
+
this.emit(`activeAssetData:${data.user.toLowerCase()}:${data.coin}`, {
|
|
917
|
+
channel: 'availableToTrade',
|
|
918
|
+
data: {
|
|
919
|
+
providerId: market.providerId,
|
|
920
|
+
marketId: market.id,
|
|
921
|
+
asset: (0, perps_sdk_1.toAssetDisplay)(market.quoteAsset),
|
|
922
|
+
buy,
|
|
923
|
+
sell,
|
|
924
|
+
},
|
|
925
|
+
});
|
|
926
|
+
}
|
|
895
927
|
handleSpotState(data) {
|
|
896
928
|
const user = data.user.toLowerCase();
|
|
897
929
|
const markets = this.registry?.activeMarkets ?? [];
|
|
@@ -910,14 +942,43 @@ class HyperliquidWsProvider extends perps_sdk_1.WsProviderBase {
|
|
|
910
942
|
const pipeline = this.unifiedSummaryByUser.get(user);
|
|
911
943
|
if (pipeline !== undefined) {
|
|
912
944
|
const quoteAssetIds = new Set(markets.map((m) => m.quoteAsset.id));
|
|
913
|
-
|
|
914
|
-
const
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
945
|
+
pipeline.spot = (0, index_js_2.partitionSpotBalances)(rows.map(({ balance }) => balance), quoteAssetIds);
|
|
946
|
+
const settlementAssetId = markets.find((m) => m.categoryId === this.providerKey)?.quoteAsset.id;
|
|
947
|
+
const available = availableAfterMaintenance(data.spotState, settlementAssetId);
|
|
948
|
+
if (available === undefined) {
|
|
949
|
+
this.fetchAvailableAfterMaintenance(user, data.user, settlementAssetId);
|
|
950
|
+
}
|
|
951
|
+
else {
|
|
952
|
+
pipeline.availableMargin = available;
|
|
953
|
+
}
|
|
918
954
|
this.emitUnifiedSummary(user);
|
|
919
955
|
}
|
|
920
956
|
}
|
|
957
|
+
fetchAvailableAfterMaintenance(key, user, quoteAssetId) {
|
|
958
|
+
const client = this.client;
|
|
959
|
+
const pipeline = this.unifiedSummaryByUser.get(key);
|
|
960
|
+
if (client === undefined ||
|
|
961
|
+
pipeline === undefined ||
|
|
962
|
+
pipeline.availableMarginPending) {
|
|
963
|
+
return;
|
|
964
|
+
}
|
|
965
|
+
pipeline.availableMarginPending = true;
|
|
966
|
+
(0, index_js_2.infoRequest)(constants_js_1.DEFAULT_HYPERLIQUID_API_URL, { type: 'spotClearinghouseState', user }, (0, index_js_2.hlInfoOptions)(client)).then((state) => {
|
|
967
|
+
const current = this.unifiedSummaryByUser.get(key);
|
|
968
|
+
if (current === undefined) {
|
|
969
|
+
return;
|
|
970
|
+
}
|
|
971
|
+
current.availableMarginPending = false;
|
|
972
|
+
current.availableMargin = availableAfterMaintenance(state, quoteAssetId);
|
|
973
|
+
this.emitUnifiedSummary(key);
|
|
974
|
+
}, (error) => {
|
|
975
|
+
const current = this.unifiedSummaryByUser.get(key);
|
|
976
|
+
if (current !== undefined) {
|
|
977
|
+
current.availableMarginPending = false;
|
|
978
|
+
}
|
|
979
|
+
perps_sdk_1.wsLog.handlerFailure(this.providerKey, error);
|
|
980
|
+
});
|
|
981
|
+
}
|
|
921
982
|
}
|
|
922
983
|
exports.HyperliquidWsProvider = HyperliquidWsProvider;
|
|
923
984
|
const isObject = (v) => typeof v === 'object' && v !== null;
|
|
@@ -1082,6 +1143,11 @@ function isValidHlFrame(channel, data) {
|
|
|
1082
1143
|
return (typeof data.user === 'string' &&
|
|
1083
1144
|
isObject(data.spotState) &&
|
|
1084
1145
|
Array.isArray(data.spotState.balances));
|
|
1146
|
+
case 'activeAssetData':
|
|
1147
|
+
return (typeof data.user === 'string' &&
|
|
1148
|
+
typeof data.coin === 'string' &&
|
|
1149
|
+
Array.isArray(data.availableToTrade) &&
|
|
1150
|
+
data.availableToTrade.length === 2);
|
|
1085
1151
|
default:
|
|
1086
1152
|
return true;
|
|
1087
1153
|
}
|