@lifi/perps-sdk-provider-hyperliquid 0.0.0-preview-c903f1e
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/LICENSE +201 -0
- package/README.md +29 -0
- package/dist/cjs/HyperliquidProvider.d.ts +15 -0
- package/dist/cjs/HyperliquidProvider.d.ts.map +1 -0
- package/dist/cjs/HyperliquidProvider.js +135 -0
- package/dist/cjs/HyperliquidProvider.js.map +1 -0
- package/dist/cjs/accountConfig.d.ts +3 -0
- package/dist/cjs/accountConfig.d.ts.map +1 -0
- package/dist/cjs/accountConfig.js +45 -0
- package/dist/cjs/accountConfig.js.map +1 -0
- package/dist/cjs/accountSummary.d.ts +3 -0
- package/dist/cjs/accountSummary.d.ts.map +1 -0
- package/dist/cjs/accountSummary.js +12 -0
- package/dist/cjs/accountSummary.js.map +1 -0
- package/dist/cjs/constants.d.ts +11 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +16 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/context.d.ts +13 -0
- package/dist/cjs/context.d.ts.map +1 -0
- package/dist/cjs/context.js +24 -0
- package/dist/cjs/context.js.map +1 -0
- package/dist/cjs/index.d.ts +22 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +47 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/services/getAccount.d.ts +6 -0
- package/dist/cjs/services/getAccount.d.ts.map +1 -0
- package/dist/cjs/services/getAccount.js +109 -0
- package/dist/cjs/services/getAccount.js.map +1 -0
- package/dist/cjs/services/getActivity.d.ts +15 -0
- package/dist/cjs/services/getActivity.d.ts.map +1 -0
- package/dist/cjs/services/getActivity.js +65 -0
- package/dist/cjs/services/getActivity.js.map +1 -0
- package/dist/cjs/services/getFills.d.ts +13 -0
- package/dist/cjs/services/getFills.d.ts.map +1 -0
- package/dist/cjs/services/getFills.js +40 -0
- package/dist/cjs/services/getFills.js.map +1 -0
- package/dist/cjs/services/getOrder.d.ts +6 -0
- package/dist/cjs/services/getOrder.d.ts.map +1 -0
- package/dist/cjs/services/getOrder.js +27 -0
- package/dist/cjs/services/getOrder.js.map +1 -0
- package/dist/cjs/services/getOrders.d.ts +11 -0
- package/dist/cjs/services/getOrders.d.ts.map +1 -0
- package/dist/cjs/services/getOrders.js +51 -0
- package/dist/cjs/services/getOrders.js.map +1 -0
- package/dist/cjs/services/getPositions.d.ts +11 -0
- package/dist/cjs/services/getPositions.d.ts.map +1 -0
- package/dist/cjs/services/getPositions.js +33 -0
- package/dist/cjs/services/getPositions.js.map +1 -0
- package/dist/cjs/signers/HyperliquidAgentStore.d.ts +19 -0
- package/dist/cjs/signers/HyperliquidAgentStore.d.ts.map +1 -0
- package/dist/cjs/signers/HyperliquidAgentStore.js +110 -0
- package/dist/cjs/signers/HyperliquidAgentStore.js.map +1 -0
- package/dist/cjs/signers/index.d.ts +4 -0
- package/dist/cjs/signers/index.d.ts.map +1 -0
- package/dist/cjs/signers/index.js +8 -0
- package/dist/cjs/signers/index.js.map +1 -0
- package/dist/cjs/signers/signActions.d.ts +7 -0
- package/dist/cjs/signers/signActions.d.ts.map +1 -0
- package/dist/cjs/signers/signActions.js +33 -0
- package/dist/cjs/signers/signActions.js.map +1 -0
- package/dist/cjs/types/account.d.ts +51 -0
- package/dist/cjs/types/account.d.ts.map +1 -0
- package/dist/cjs/types/account.js +10 -0
- package/dist/cjs/types/account.js.map +1 -0
- package/dist/cjs/types/action.d.ts +51 -0
- package/dist/cjs/types/action.d.ts.map +1 -0
- package/dist/cjs/types/action.js +11 -0
- package/dist/cjs/types/action.js.map +1 -0
- package/dist/cjs/types/asset.d.ts +66 -0
- package/dist/cjs/types/asset.d.ts.map +1 -0
- package/dist/cjs/types/asset.js +3 -0
- package/dist/cjs/types/asset.js.map +1 -0
- package/dist/cjs/types/fill.d.ts +18 -0
- package/dist/cjs/types/fill.d.ts.map +1 -0
- package/dist/cjs/types/fill.js +3 -0
- package/dist/cjs/types/fill.js.map +1 -0
- package/dist/cjs/types/index.d.ts +8 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +24 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/ledger.d.ts +53 -0
- package/dist/cjs/types/ledger.d.ts.map +1 -0
- package/dist/cjs/types/ledger.js +8 -0
- package/dist/cjs/types/ledger.js.map +1 -0
- package/dist/cjs/types/order.d.ts +46 -0
- package/dist/cjs/types/order.d.ts.map +1 -0
- package/dist/cjs/types/order.js +3 -0
- package/dist/cjs/types/order.js.map +1 -0
- package/dist/cjs/types/ws.d.ts +36 -0
- package/dist/cjs/types/ws.d.ts.map +1 -0
- package/dist/cjs/types/ws.js +3 -0
- package/dist/cjs/types/ws.js.map +1 -0
- package/dist/cjs/utils/assetId.d.ts +4 -0
- package/dist/cjs/utils/assetId.d.ts.map +1 -0
- package/dist/cjs/utils/assetId.js +21 -0
- package/dist/cjs/utils/assetId.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +15 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +49 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/infoClient.d.ts +10 -0
- package/dist/cjs/utils/infoClient.d.ts.map +1 -0
- package/dist/cjs/utils/infoClient.js +58 -0
- package/dist/cjs/utils/infoClient.js.map +1 -0
- package/dist/cjs/utils/liquidation.d.ts +3 -0
- package/dist/cjs/utils/liquidation.d.ts.map +1 -0
- package/dist/cjs/utils/liquidation.js +24 -0
- package/dist/cjs/utils/liquidation.js.map +1 -0
- package/dist/cjs/utils/mapActivity.d.ts +5 -0
- package/dist/cjs/utils/mapActivity.d.ts.map +1 -0
- package/dist/cjs/utils/mapActivity.js +133 -0
- package/dist/cjs/utils/mapActivity.js.map +1 -0
- package/dist/cjs/utils/mapFill.d.ts +6 -0
- package/dist/cjs/utils/mapFill.d.ts.map +1 -0
- package/dist/cjs/utils/mapFill.js +33 -0
- package/dist/cjs/utils/mapFill.js.map +1 -0
- package/dist/cjs/utils/mapMarket.d.ts +4 -0
- package/dist/cjs/utils/mapMarket.d.ts.map +1 -0
- package/dist/cjs/utils/mapMarket.js +22 -0
- package/dist/cjs/utils/mapMarket.js.map +1 -0
- package/dist/cjs/utils/mapMarketPrice.d.ts +4 -0
- package/dist/cjs/utils/mapMarketPrice.d.ts.map +1 -0
- package/dist/cjs/utils/mapMarketPrice.js +22 -0
- package/dist/cjs/utils/mapMarketPrice.js.map +1 -0
- package/dist/cjs/utils/mapOrder.d.ts +12 -0
- package/dist/cjs/utils/mapOrder.d.ts.map +1 -0
- package/dist/cjs/utils/mapOrder.js +156 -0
- package/dist/cjs/utils/mapOrder.js.map +1 -0
- package/dist/cjs/utils/mapPosition.d.ts +5 -0
- package/dist/cjs/utils/mapPosition.d.ts.map +1 -0
- package/dist/cjs/utils/mapPosition.js +28 -0
- package/dist/cjs/utils/mapPosition.js.map +1 -0
- package/dist/cjs/utils/marketDisplay.d.ts +4 -0
- package/dist/cjs/utils/marketDisplay.d.ts.map +1 -0
- package/dist/cjs/utils/marketDisplay.js +23 -0
- package/dist/cjs/utils/marketDisplay.js.map +1 -0
- package/dist/cjs/utils/orderFormatting.d.ts +4 -0
- package/dist/cjs/utils/orderFormatting.d.ts.map +1 -0
- package/dist/cjs/utils/orderFormatting.js +30 -0
- package/dist/cjs/utils/orderFormatting.js.map +1 -0
- package/dist/cjs/utils/priceStepToAggregation.d.ts +5 -0
- package/dist/cjs/utils/priceStepToAggregation.d.ts.map +1 -0
- package/dist/cjs/utils/priceStepToAggregation.js +36 -0
- package/dist/cjs/utils/priceStepToAggregation.js.map +1 -0
- package/dist/cjs/utils/spotBalance.d.ts +6 -0
- package/dist/cjs/utils/spotBalance.d.ts.map +1 -0
- package/dist/cjs/utils/spotBalance.js +34 -0
- package/dist/cjs/utils/spotBalance.js.map +1 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +29 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.js +359 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -0
- package/dist/cjs/websocket/index.d.ts +2 -0
- package/dist/cjs/websocket/index.d.ts.map +1 -0
- package/dist/cjs/websocket/index.js +6 -0
- package/dist/cjs/websocket/index.js.map +1 -0
- package/dist/esm/HyperliquidProvider.d.ts +64 -0
- package/dist/esm/HyperliquidProvider.d.ts.map +1 -0
- package/dist/esm/HyperliquidProvider.js +162 -0
- package/dist/esm/HyperliquidProvider.js.map +1 -0
- package/dist/esm/accountConfig.d.ts +10 -0
- package/dist/esm/accountConfig.d.ts.map +1 -0
- package/dist/esm/accountConfig.js +65 -0
- package/dist/esm/accountConfig.js.map +1 -0
- package/dist/esm/accountSummary.d.ts +10 -0
- package/dist/esm/accountSummary.d.ts.map +1 -0
- package/dist/esm/accountSummary.js +22 -0
- package/dist/esm/accountSummary.js.map +1 -0
- package/dist/esm/constants.d.ts +40 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +42 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/context.d.ts +26 -0
- package/dist/esm/context.d.ts.map +1 -0
- package/dist/esm/context.js +25 -0
- package/dist/esm/context.js.map +1 -0
- package/dist/esm/index.d.ts +31 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/services/getAccount.d.ts +28 -0
- package/dist/esm/services/getAccount.d.ts.map +1 -0
- package/dist/esm/services/getAccount.js +134 -0
- package/dist/esm/services/getAccount.js.map +1 -0
- package/dist/esm/services/getActivity.d.ts +33 -0
- package/dist/esm/services/getActivity.d.ts.map +1 -0
- package/dist/esm/services/getActivity.js +75 -0
- package/dist/esm/services/getActivity.js.map +1 -0
- package/dist/esm/services/getFills.d.ts +34 -0
- package/dist/esm/services/getFills.d.ts.map +1 -0
- package/dist/esm/services/getFills.js +49 -0
- package/dist/esm/services/getFills.js.map +1 -0
- package/dist/esm/services/getOrder.d.ts +17 -0
- package/dist/esm/services/getOrder.d.ts.map +1 -0
- package/dist/esm/services/getOrder.js +29 -0
- package/dist/esm/services/getOrder.js.map +1 -0
- package/dist/esm/services/getOrders.d.ts +27 -0
- package/dist/esm/services/getOrders.d.ts.map +1 -0
- package/dist/esm/services/getOrders.js +57 -0
- package/dist/esm/services/getOrders.js.map +1 -0
- package/dist/esm/services/getPositions.d.ts +26 -0
- package/dist/esm/services/getPositions.d.ts.map +1 -0
- package/dist/esm/services/getPositions.js +37 -0
- package/dist/esm/services/getPositions.js.map +1 -0
- package/dist/esm/signers/HyperliquidAgentStore.d.ts +54 -0
- package/dist/esm/signers/HyperliquidAgentStore.d.ts.map +1 -0
- package/dist/esm/signers/HyperliquidAgentStore.js +134 -0
- package/dist/esm/signers/HyperliquidAgentStore.js.map +1 -0
- package/dist/esm/signers/index.d.ts +4 -0
- package/dist/esm/signers/index.d.ts.map +1 -0
- package/dist/esm/signers/index.js +4 -0
- package/dist/esm/signers/index.js.map +1 -0
- package/dist/esm/signers/signActions.d.ts +15 -0
- package/dist/esm/signers/signActions.d.ts.map +1 -0
- package/dist/esm/signers/signActions.js +38 -0
- package/dist/esm/signers/signActions.js.map +1 -0
- package/dist/esm/types/account.d.ts +64 -0
- package/dist/esm/types/account.d.ts.map +1 -0
- package/dist/esm/types/account.js +13 -0
- package/dist/esm/types/account.js.map +1 -0
- package/dist/esm/types/action.d.ts +61 -0
- package/dist/esm/types/action.d.ts.map +1 -0
- package/dist/esm/types/action.js +16 -0
- package/dist/esm/types/action.js.map +1 -0
- package/dist/esm/types/asset.d.ts +82 -0
- package/dist/esm/types/asset.d.ts.map +1 -0
- package/dist/esm/types/asset.js +3 -0
- package/dist/esm/types/asset.js.map +1 -0
- package/dist/esm/types/fill.d.ts +21 -0
- package/dist/esm/types/fill.d.ts.map +1 -0
- package/dist/esm/types/fill.js +3 -0
- package/dist/esm/types/fill.js.map +1 -0
- package/dist/esm/types/index.d.ts +8 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +11 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/ledger.d.ts +93 -0
- package/dist/esm/types/ledger.d.ts.map +1 -0
- package/dist/esm/types/ledger.js +16 -0
- package/dist/esm/types/ledger.js.map +1 -0
- package/dist/esm/types/order.d.ts +51 -0
- package/dist/esm/types/order.d.ts.map +1 -0
- package/dist/esm/types/order.js +3 -0
- package/dist/esm/types/order.js.map +1 -0
- package/dist/esm/types/ws.d.ts +43 -0
- package/dist/esm/types/ws.d.ts.map +1 -0
- package/dist/esm/types/ws.js +3 -0
- package/dist/esm/types/ws.js.map +1 -0
- package/dist/esm/utils/assetId.d.ts +20 -0
- package/dist/esm/utils/assetId.d.ts.map +1 -0
- package/dist/esm/utils/assetId.js +31 -0
- package/dist/esm/utils/assetId.js.map +1 -0
- package/dist/esm/utils/index.d.ts +15 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +17 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/infoClient.d.ts +28 -0
- package/dist/esm/utils/infoClient.d.ts.map +1 -0
- package/dist/esm/utils/infoClient.js +70 -0
- package/dist/esm/utils/infoClient.js.map +1 -0
- package/dist/esm/utils/liquidation.d.ts +48 -0
- package/dist/esm/utils/liquidation.d.ts.map +1 -0
- package/dist/esm/utils/liquidation.js +65 -0
- package/dist/esm/utils/liquidation.js.map +1 -0
- package/dist/esm/utils/mapActivity.d.ts +15 -0
- package/dist/esm/utils/mapActivity.d.ts.map +1 -0
- package/dist/esm/utils/mapActivity.js +148 -0
- package/dist/esm/utils/mapActivity.js.map +1 -0
- package/dist/esm/utils/mapFill.d.ts +11 -0
- package/dist/esm/utils/mapFill.d.ts.map +1 -0
- package/dist/esm/utils/mapFill.js +34 -0
- package/dist/esm/utils/mapFill.js.map +1 -0
- package/dist/esm/utils/mapMarket.d.ts +12 -0
- package/dist/esm/utils/mapMarket.d.ts.map +1 -0
- package/dist/esm/utils/mapMarket.js +27 -0
- package/dist/esm/utils/mapMarket.js.map +1 -0
- package/dist/esm/utils/mapMarketPrice.d.ts +10 -0
- package/dist/esm/utils/mapMarketPrice.d.ts.map +1 -0
- package/dist/esm/utils/mapMarketPrice.js +24 -0
- package/dist/esm/utils/mapMarketPrice.js.map +1 -0
- package/dist/esm/utils/mapOrder.d.ts +49 -0
- package/dist/esm/utils/mapOrder.d.ts.map +1 -0
- package/dist/esm/utils/mapOrder.js +182 -0
- package/dist/esm/utils/mapOrder.js.map +1 -0
- package/dist/esm/utils/mapPosition.d.ts +12 -0
- package/dist/esm/utils/mapPosition.d.ts.map +1 -0
- package/dist/esm/utils/mapPosition.js +30 -0
- package/dist/esm/utils/mapPosition.js.map +1 -0
- package/dist/esm/utils/marketDisplay.d.ts +17 -0
- package/dist/esm/utils/marketDisplay.d.ts.map +1 -0
- package/dist/esm/utils/marketDisplay.js +31 -0
- package/dist/esm/utils/marketDisplay.js.map +1 -0
- package/dist/esm/utils/orderFormatting.d.ts +50 -0
- package/dist/esm/utils/orderFormatting.d.ts.map +1 -0
- package/dist/esm/utils/orderFormatting.js +78 -0
- package/dist/esm/utils/orderFormatting.js.map +1 -0
- package/dist/esm/utils/priceStepToAggregation.d.ts +20 -0
- package/dist/esm/utils/priceStepToAggregation.d.ts.map +1 -0
- package/dist/esm/utils/priceStepToAggregation.js +51 -0
- package/dist/esm/utils/priceStepToAggregation.js.map +1 -0
- package/dist/esm/utils/spotBalance.d.ts +18 -0
- package/dist/esm/utils/spotBalance.d.ts.map +1 -0
- package/dist/esm/utils/spotBalance.js +40 -0
- package/dist/esm/utils/spotBalance.js.map +1 -0
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts +61 -0
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -0
- package/dist/esm/websocket/HyperliquidWsProvider.js +406 -0
- package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -0
- package/dist/esm/websocket/index.d.ts +2 -0
- package/dist/esm/websocket/index.d.ts.map +1 -0
- package/dist/esm/websocket/index.js +3 -0
- package/dist/esm/websocket/index.js.map +1 -0
- package/dist/types/HyperliquidProvider.d.ts +64 -0
- package/dist/types/HyperliquidProvider.d.ts.map +1 -0
- package/dist/types/accountConfig.d.ts +10 -0
- package/dist/types/accountConfig.d.ts.map +1 -0
- package/dist/types/accountSummary.d.ts +10 -0
- package/dist/types/accountSummary.d.ts.map +1 -0
- package/dist/types/constants.d.ts +40 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/context.d.ts +26 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/services/getAccount.d.ts +28 -0
- package/dist/types/services/getAccount.d.ts.map +1 -0
- package/dist/types/services/getActivity.d.ts +33 -0
- package/dist/types/services/getActivity.d.ts.map +1 -0
- package/dist/types/services/getFills.d.ts +34 -0
- package/dist/types/services/getFills.d.ts.map +1 -0
- package/dist/types/services/getOrder.d.ts +17 -0
- package/dist/types/services/getOrder.d.ts.map +1 -0
- package/dist/types/services/getOrders.d.ts +27 -0
- package/dist/types/services/getOrders.d.ts.map +1 -0
- package/dist/types/services/getPositions.d.ts +26 -0
- package/dist/types/services/getPositions.d.ts.map +1 -0
- package/dist/types/signers/HyperliquidAgentStore.d.ts +54 -0
- package/dist/types/signers/HyperliquidAgentStore.d.ts.map +1 -0
- package/dist/types/signers/index.d.ts +4 -0
- package/dist/types/signers/index.d.ts.map +1 -0
- package/dist/types/signers/signActions.d.ts +15 -0
- package/dist/types/signers/signActions.d.ts.map +1 -0
- package/dist/types/types/account.d.ts +64 -0
- package/dist/types/types/account.d.ts.map +1 -0
- package/dist/types/types/action.d.ts +61 -0
- package/dist/types/types/action.d.ts.map +1 -0
- package/dist/types/types/asset.d.ts +82 -0
- package/dist/types/types/asset.d.ts.map +1 -0
- package/dist/types/types/fill.d.ts +21 -0
- package/dist/types/types/fill.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +8 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/ledger.d.ts +93 -0
- package/dist/types/types/ledger.d.ts.map +1 -0
- package/dist/types/types/order.d.ts +51 -0
- package/dist/types/types/order.d.ts.map +1 -0
- package/dist/types/types/ws.d.ts +43 -0
- package/dist/types/types/ws.d.ts.map +1 -0
- package/dist/types/utils/assetId.d.ts +20 -0
- package/dist/types/utils/assetId.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +15 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/infoClient.d.ts +28 -0
- package/dist/types/utils/infoClient.d.ts.map +1 -0
- package/dist/types/utils/liquidation.d.ts +48 -0
- package/dist/types/utils/liquidation.d.ts.map +1 -0
- package/dist/types/utils/mapActivity.d.ts +15 -0
- package/dist/types/utils/mapActivity.d.ts.map +1 -0
- package/dist/types/utils/mapFill.d.ts +11 -0
- package/dist/types/utils/mapFill.d.ts.map +1 -0
- package/dist/types/utils/mapMarket.d.ts +12 -0
- package/dist/types/utils/mapMarket.d.ts.map +1 -0
- package/dist/types/utils/mapMarketPrice.d.ts +10 -0
- package/dist/types/utils/mapMarketPrice.d.ts.map +1 -0
- package/dist/types/utils/mapOrder.d.ts +49 -0
- package/dist/types/utils/mapOrder.d.ts.map +1 -0
- package/dist/types/utils/mapPosition.d.ts +12 -0
- package/dist/types/utils/mapPosition.d.ts.map +1 -0
- package/dist/types/utils/marketDisplay.d.ts +17 -0
- package/dist/types/utils/marketDisplay.d.ts.map +1 -0
- package/dist/types/utils/orderFormatting.d.ts +50 -0
- package/dist/types/utils/orderFormatting.d.ts.map +1 -0
- package/dist/types/utils/priceStepToAggregation.d.ts +20 -0
- package/dist/types/utils/priceStepToAggregation.d.ts.map +1 -0
- package/dist/types/utils/spotBalance.d.ts +18 -0
- package/dist/types/utils/spotBalance.d.ts.map +1 -0
- package/dist/types/websocket/HyperliquidWsProvider.d.ts +61 -0
- package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -0
- package/dist/types/websocket/index.d.ts +2 -0
- package/dist/types/websocket/index.d.ts.map +1 -0
- package/package.json +68 -0
- package/src/HyperliquidProvider.ts +381 -0
- package/src/accountConfig.ts +89 -0
- package/src/accountSummary.ts +32 -0
- package/src/constants.ts +47 -0
- package/src/context.ts +41 -0
- package/src/index.ts +45 -0
- package/src/services/getAccount.ts +263 -0
- package/src/services/getActivity.ts +162 -0
- package/src/services/getFills.ts +96 -0
- package/src/services/getOrder.ts +61 -0
- package/src/services/getOrders.ts +101 -0
- package/src/services/getPositions.ts +76 -0
- package/src/signers/HyperliquidAgentStore.ts +176 -0
- package/src/signers/index.ts +5 -0
- package/src/signers/signActions.ts +78 -0
- package/src/types/account.ts +74 -0
- package/src/types/action.ts +66 -0
- package/src/types/asset.ts +96 -0
- package/src/types/fill.ts +24 -0
- package/src/types/index.ts +11 -0
- package/src/types/ledger.ts +111 -0
- package/src/types/order.ts +56 -0
- package/src/types/ws.ts +47 -0
- package/src/utils/assetId.ts +38 -0
- package/src/utils/index.ts +38 -0
- package/src/utils/infoClient.ts +111 -0
- package/src/utils/liquidation.ts +74 -0
- package/src/utils/mapActivity.ts +182 -0
- package/src/utils/mapFill.ts +48 -0
- package/src/utils/mapMarket.ts +33 -0
- package/src/utils/mapMarketPrice.ts +33 -0
- package/src/utils/mapOrder.ts +218 -0
- package/src/utils/mapPosition.ts +40 -0
- package/src/utils/marketDisplay.ts +38 -0
- package/src/utils/orderFormatting.ts +93 -0
- package/src/utils/priceStepToAggregation.ts +58 -0
- package/src/utils/spotBalance.ts +51 -0
- package/src/websocket/HyperliquidWsProvider.ts +533 -0
- package/src/websocket/index.ts +3 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { PerpsError } from '@lifi/perps-sdk';
|
|
2
|
+
import { ActionType, PerpsErrorCode } from '@lifi/perps-types';
|
|
3
|
+
function assertNever(value) {
|
|
4
|
+
throw new Error(`Unreachable: exhaustiveness check failed for value ${JSON.stringify(value)}`);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Project a single Hyperliquid descriptor against the typed
|
|
8
|
+
* `HyperliquidAccountConfig` into an `AccountConfigSetting`.
|
|
9
|
+
*
|
|
10
|
+
* Mapping table:
|
|
11
|
+
*
|
|
12
|
+
* | descriptor.type | projected values
|
|
13
|
+
* |-----------------------|----------------------------------------------
|
|
14
|
+
* | APPROVE_AGENT | [] (no parameters)
|
|
15
|
+
* | APPROVE_BUILDER_FEE | [] (no parameters)
|
|
16
|
+
* | ACCOUNT_MODE | [{ name: 'mode', value: config.abstractionMode }]
|
|
17
|
+
*
|
|
18
|
+
* The switch is exhaustive over `ActionType` so enum additions force a
|
|
19
|
+
* compile error in the `default` arm. ActionTypes that are not valid on
|
|
20
|
+
* `Provider.setup` / `Provider.options` for Hyperliquid throw at runtime.
|
|
21
|
+
*/
|
|
22
|
+
function projectHyperliquidDescriptor(descriptor, config) {
|
|
23
|
+
switch (descriptor.type) {
|
|
24
|
+
case ActionType.APPROVE_AGENT:
|
|
25
|
+
case ActionType.APPROVE_BUILDER_FEE:
|
|
26
|
+
return { type: descriptor.type, values: [] };
|
|
27
|
+
case ActionType.ACCOUNT_MODE:
|
|
28
|
+
return {
|
|
29
|
+
type: descriptor.type,
|
|
30
|
+
values: [{ name: 'mode', value: config.abstractionMode }],
|
|
31
|
+
};
|
|
32
|
+
case ActionType.ACCOUNT_TYPE:
|
|
33
|
+
case ActionType.SEND_ASSET:
|
|
34
|
+
case ActionType.WITHDRAWAL:
|
|
35
|
+
case ActionType.TRANSFER:
|
|
36
|
+
case ActionType.PLACE_ORDER:
|
|
37
|
+
case ActionType.PLACE_TRIGGER_ORDER:
|
|
38
|
+
case ActionType.CANCEL_ORDER:
|
|
39
|
+
case ActionType.CANCEL_ALL_ORDERS:
|
|
40
|
+
case ActionType.MODIFY_ORDER:
|
|
41
|
+
case ActionType.UPDATE_LEVERAGE:
|
|
42
|
+
case ActionType.UPDATE_POSITION_MARGIN:
|
|
43
|
+
case ActionType.REGISTER_API_KEY:
|
|
44
|
+
case ActionType.APPROVE_READ_ONLY_TOKEN:
|
|
45
|
+
case ActionType.DEPOSIT:
|
|
46
|
+
case ActionType.META_VOTE:
|
|
47
|
+
case ActionType.META_ACCEPT_TERMS:
|
|
48
|
+
throw new PerpsError(PerpsErrorCode.SDKError, `Hyperliquid account-config mapper has no projection for ` +
|
|
49
|
+
`descriptor type '${descriptor.type}' — this ActionType is not ` +
|
|
50
|
+
`valid on Provider.setup / Provider.options for Hyperliquid.`);
|
|
51
|
+
default:
|
|
52
|
+
return assertNever(descriptor.type);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Project the union of Hyperliquid setup + options descriptors against the
|
|
57
|
+
* typed `HyperliquidAccountConfig`. Produces exactly one
|
|
58
|
+
* `AccountConfigSetting` per descriptor, in `setup`-then-`options` order.
|
|
59
|
+
*
|
|
60
|
+
* @public
|
|
61
|
+
*/
|
|
62
|
+
export function projectHyperliquidConfigSettings(config, setup, options) {
|
|
63
|
+
return [...setup, ...options].map((descriptor) => projectHyperliquidDescriptor(descriptor, config));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=accountConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountConfig.js","sourceRoot":"","sources":["../../src/accountConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM5C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE9D,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,IAAI,KAAK,CACb,sDAAsD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC9E,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,4BAA4B,CACnC,UAA0B,EAC1B,MAAgC;IAEhC,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,UAAU,CAAC,aAAa,CAAC;QAC9B,KAAK,UAAU,CAAC,mBAAmB;YACjC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;QAE9C,KAAK,UAAU,CAAC,YAAY;YAC1B,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;aAC1D,CAAA;QAEH,KAAK,UAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,UAAU,CAAC,UAAU,CAAC;QAC3B,KAAK,UAAU,CAAC,UAAU,CAAC;QAC3B,KAAK,UAAU,CAAC,QAAQ,CAAC;QACzB,KAAK,UAAU,CAAC,WAAW,CAAC;QAC5B,KAAK,UAAU,CAAC,mBAAmB,CAAC;QACpC,KAAK,UAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,UAAU,CAAC,iBAAiB,CAAC;QAClC,KAAK,UAAU,CAAC,YAAY,CAAC;QAC7B,KAAK,UAAU,CAAC,eAAe,CAAC;QAChC,KAAK,UAAU,CAAC,sBAAsB,CAAC;QACvC,KAAK,UAAU,CAAC,gBAAgB,CAAC;QACjC,KAAK,UAAU,CAAC,uBAAuB,CAAC;QACxC,KAAK,UAAU,CAAC,OAAO,CAAC;QACxB,KAAK,UAAU,CAAC,SAAS,CAAC;QAC1B,KAAK,UAAU,CAAC,iBAAiB;YAC/B,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,0DAA0D;gBACxD,oBAAoB,UAAU,CAAC,IAAI,6BAA6B;gBAChE,6DAA6D,CAChE,CAAA;QAEH;YACE,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gCAAgC,CAC9C,MAAgC,EAChC,KAAuB,EACvB,OAAyB;IAEzB,OAAO,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAC/C,4BAA4B,CAAC,UAAU,EAAE,MAAM,CAAC,CACjD,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AccountResponse, AccountSummary, Position } from '@lifi/perps-types';
|
|
2
|
+
/**
|
|
3
|
+
* Roll a Hyperliquid {@link AccountResponse} up into an {@link AccountSummary},
|
|
4
|
+
* branching on the abstraction mode so the gross/free meaning of the collateral
|
|
5
|
+
* rows is interpreted correctly.
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare function getAccountSummary(account: AccountResponse, positions: Position[]): AccountSummary;
|
|
10
|
+
//# sourceMappingURL=accountSummary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountSummary.d.ts","sourceRoot":"","sources":["../../src/accountSummary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAc1B;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,QAAQ,EAAE,GACpB,cAAc,CAEhB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { summarizeAccount } from '@lifi/perps-sdk';
|
|
2
|
+
import { HlAbstractionMode } from './types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* In `unifiedAccount`/`portfolioMargin` the whole account lives in spot, so the
|
|
5
|
+
* collateral rows are already gross holdings (locked margin included). In
|
|
6
|
+
* `disabled`/`dexAbstraction` (and the unset/standard mode) the venue rows hold
|
|
7
|
+
* `accountValue`, which Hyperliquid reports net of locked margin — i.e. free.
|
|
8
|
+
*/
|
|
9
|
+
const isUnifiedMode = (account) => account.config.provider === 'hyperliquid' &&
|
|
10
|
+
(account.config.abstractionMode === HlAbstractionMode.UNIFIED_ACCOUNT ||
|
|
11
|
+
account.config.abstractionMode === HlAbstractionMode.PORTFOLIO_MARGIN);
|
|
12
|
+
/**
|
|
13
|
+
* Roll a Hyperliquid {@link AccountResponse} up into an {@link AccountSummary},
|
|
14
|
+
* branching on the abstraction mode so the gross/free meaning of the collateral
|
|
15
|
+
* rows is interpreted correctly.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export function getAccountSummary(account, positions) {
|
|
20
|
+
return summarizeAccount(account, positions, isUnifiedMode(account));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=accountSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountSummary.js","sourceRoot":"","sources":["../../src/accountSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAMlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CAAC,OAAwB,EAAW,EAAE,CAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,aAAa;IACzC,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,KAAK,iBAAiB,CAAC,eAAe;QACnE,OAAO,CAAC,MAAM,CAAC,eAAe,KAAK,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;AAE1E;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAwB,EACxB,SAAqB;IAErB,OAAO,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AACrE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { FeeTier } from '@lifi/perps-types';
|
|
2
|
+
/**
|
|
3
|
+
* Hyperliquid provider key (exported from the package index as
|
|
4
|
+
* `HYPERLIQUID_PROVIDER_KEY`).
|
|
5
|
+
*
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export declare const PROVIDER_KEY = "hyperliquid";
|
|
9
|
+
/**
|
|
10
|
+
* Default Hyperliquid REST base URL.
|
|
11
|
+
*
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_HYPERLIQUID_API_URL = "https://api.hyperliquid.xyz";
|
|
15
|
+
/**
|
|
16
|
+
* Approximate published baseline maker/taker fee tier for Hyperliquid, used to
|
|
17
|
+
* seed fee math before the live account `feeTier` resolves. Rates are fractions
|
|
18
|
+
* (not basis points): `0.00015` = 0.015% maker, `0.00045` = 0.045% taker.
|
|
19
|
+
*
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
export declare const HYPERLIQUID_FEE_TIER_FALLBACK: FeeTier;
|
|
23
|
+
/** @internal */
|
|
24
|
+
export declare const DEFAULT_HISTORY_LIMIT = 50;
|
|
25
|
+
/** @internal */
|
|
26
|
+
export declare const MAX_HISTORY_LIMIT = 200;
|
|
27
|
+
/** @internal */
|
|
28
|
+
export declare const NINETY_DAYS_MS: number;
|
|
29
|
+
/**
|
|
30
|
+
* Main perps DEX uses an empty sub-dex name on the wire; surfaced as
|
|
31
|
+
* 'hyperliquid' in normalised market IDs.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare const MAIN_DEX_NAME = "";
|
|
36
|
+
/** @internal */
|
|
37
|
+
export declare const MAIN_MARKET_ID = "hyperliquid";
|
|
38
|
+
/** @internal */
|
|
39
|
+
export declare const SPOT_MARKET_ID = "spot";
|
|
40
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,gBAAgB,CAAA;AAEzC;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,gCAAgC,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,EAAE,OAG3C,CAAA;AAED,gBAAgB;AAChB,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,MAAM,CAAA;AACpC,gBAAgB;AAChB,eAAO,MAAM,cAAc,QAA2B,CAAA;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,KAAK,CAAA;AAC/B,gBAAgB;AAChB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,gBAAgB;AAChB,eAAO,MAAM,cAAc,SAAS,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperliquid provider key (exported from the package index as
|
|
3
|
+
* `HYPERLIQUID_PROVIDER_KEY`).
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export const PROVIDER_KEY = 'hyperliquid';
|
|
8
|
+
/**
|
|
9
|
+
* Default Hyperliquid REST base URL.
|
|
10
|
+
*
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export const DEFAULT_HYPERLIQUID_API_URL = 'https://api.hyperliquid.xyz';
|
|
14
|
+
/**
|
|
15
|
+
* Approximate published baseline maker/taker fee tier for Hyperliquid, used to
|
|
16
|
+
* seed fee math before the live account `feeTier` resolves. Rates are fractions
|
|
17
|
+
* (not basis points): `0.00015` = 0.015% maker, `0.00045` = 0.045% taker.
|
|
18
|
+
*
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export const HYPERLIQUID_FEE_TIER_FALLBACK = {
|
|
22
|
+
maker: '0.00015',
|
|
23
|
+
taker: '0.00045',
|
|
24
|
+
};
|
|
25
|
+
/** @internal */
|
|
26
|
+
export const DEFAULT_HISTORY_LIMIT = 50;
|
|
27
|
+
/** @internal */
|
|
28
|
+
export const MAX_HISTORY_LIMIT = 200;
|
|
29
|
+
/** @internal */
|
|
30
|
+
export const NINETY_DAYS_MS = 90 * 24 * 60 * 60 * 1000;
|
|
31
|
+
/**
|
|
32
|
+
* Main perps DEX uses an empty sub-dex name on the wire; surfaced as
|
|
33
|
+
* 'hyperliquid' in normalised market IDs.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export const MAIN_DEX_NAME = '';
|
|
38
|
+
/** @internal */
|
|
39
|
+
export const MAIN_MARKET_ID = 'hyperliquid';
|
|
40
|
+
/** @internal */
|
|
41
|
+
export const SPOT_MARKET_ID = 'spot';
|
|
42
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAA;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;AAExE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAY;IACpD,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;CACjB,CAAA;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAA;AACvC,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAA;AACpC,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAA;AAC/B,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAA;AAC3C,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type PerpsSDKClient } from '@lifi/perps-sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Runtime context the Hyperliquid read services resolve their deps from: the
|
|
4
|
+
* bound {@link PerpsSDKClient} (config / fetch / retry / market lookups) and
|
|
5
|
+
* the resolved REST base URL. Captured once in the provider factory's closure
|
|
6
|
+
* via {@link HyperliquidContextRef.bind}; the read methods read it at call
|
|
7
|
+
* time. This is the late-bind the SDK's `bindProvider` sets up — the factory
|
|
8
|
+
* is constructed before the client exists.
|
|
9
|
+
*/
|
|
10
|
+
export interface HyperliquidContext {
|
|
11
|
+
client: PerpsSDKClient;
|
|
12
|
+
apiUrl: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Mutable, single-assignment holder for the {@link HyperliquidContext}. The
|
|
16
|
+
* provider factory creates one per instance and exposes `bind`; the read
|
|
17
|
+
* services call {@link HyperliquidContextRef.require} at call time.
|
|
18
|
+
*/
|
|
19
|
+
export declare class HyperliquidContextRef {
|
|
20
|
+
private readonly apiUrl;
|
|
21
|
+
private context;
|
|
22
|
+
constructor(apiUrl: string);
|
|
23
|
+
bind(client: PerpsSDKClient): void;
|
|
24
|
+
require(): HyperliquidContext;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGjE;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,cAAc,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,OAAO,CAAgC;gBAElB,MAAM,EAAE,MAAM;IAE3C,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIlC,OAAO,IAAI,kBAAkB;CAU9B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PerpsError } from '@lifi/perps-sdk';
|
|
2
|
+
import { PerpsErrorCode } from '@lifi/perps-types';
|
|
3
|
+
/**
|
|
4
|
+
* Mutable, single-assignment holder for the {@link HyperliquidContext}. The
|
|
5
|
+
* provider factory creates one per instance and exposes `bind`; the read
|
|
6
|
+
* services call {@link HyperliquidContextRef.require} at call time.
|
|
7
|
+
*/
|
|
8
|
+
export class HyperliquidContextRef {
|
|
9
|
+
apiUrl;
|
|
10
|
+
context;
|
|
11
|
+
constructor(apiUrl) {
|
|
12
|
+
this.apiUrl = apiUrl;
|
|
13
|
+
}
|
|
14
|
+
bind(client) {
|
|
15
|
+
this.context = { client, apiUrl: this.apiUrl };
|
|
16
|
+
}
|
|
17
|
+
require() {
|
|
18
|
+
if (this.context === undefined) {
|
|
19
|
+
throw new PerpsError(PerpsErrorCode.SDKError, 'hyperliquidProvider used before binding. Register it via ' +
|
|
20
|
+
'createPerpsClient({ providers: [hyperliquidProvider()] }).');
|
|
21
|
+
}
|
|
22
|
+
return this.context;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,iBAAiB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAelD;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAGH;IAFrB,OAAO,CAAgC;IAE/C,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,IAAI,CAAC,MAAsB;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;IAChD,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,QAAQ,EACvB,2DAA2D;gBACzD,4DAA4D,CAC/D,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperliquid provider plugin for `@lifi/perps-sdk`. Reads account-specific
|
|
3
|
+
* state directly from `${apiUrl}/info`; enriched asset metadata and
|
|
4
|
+
* public/shared data come from the LI.FI backend. Register the
|
|
5
|
+
* `hyperliquidProvider()` factory with `createPerpsClient`.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
export { projectHyperliquidConfigSettings } from './accountConfig.js';
|
|
11
|
+
export { getAccountSummary } from './accountSummary.js';
|
|
12
|
+
export { DEFAULT_HYPERLIQUID_API_URL, HYPERLIQUID_FEE_TIER_FALLBACK, PROVIDER_KEY as HYPERLIQUID_PROVIDER_KEY, } from './constants.js';
|
|
13
|
+
export { type HyperliquidPerpsProvider, type HyperliquidProviderOptions, hyperliquidProvider, } from './HyperliquidProvider.js';
|
|
14
|
+
export type { GetAccountParams } from './services/getAccount.js';
|
|
15
|
+
export { getAccount } from './services/getAccount.js';
|
|
16
|
+
export type { GetActivityParams } from './services/getActivity.js';
|
|
17
|
+
export { getActivity } from './services/getActivity.js';
|
|
18
|
+
export type { GetFillsParams } from './services/getFills.js';
|
|
19
|
+
export { getFills } from './services/getFills.js';
|
|
20
|
+
export type { GetOrderParams } from './services/getOrder.js';
|
|
21
|
+
export { getOrder } from './services/getOrder.js';
|
|
22
|
+
export type { GetOrdersParams } from './services/getOrders.js';
|
|
23
|
+
export { getOrders } from './services/getOrders.js';
|
|
24
|
+
export type { GetPositionsParams } from './services/getPositions.js';
|
|
25
|
+
export { getPositions } from './services/getPositions.js';
|
|
26
|
+
export type { HyperliquidAgent } from './signers/HyperliquidAgentStore.js';
|
|
27
|
+
export { HyperliquidAgentStore } from './signers/HyperliquidAgentStore.js';
|
|
28
|
+
export * from './types/index.js';
|
|
29
|
+
export * from './utils/index.js';
|
|
30
|
+
export { HyperliquidWsProvider, hyperliquidWsProvider, } from './websocket/HyperliquidWsProvider.js';
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,YAAY,IAAI,wBAAwB,GACzC,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sCAAsC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// biome-ignore-all lint/performance/noBarrelFile: package public entry point.
|
|
2
|
+
// biome-ignore-all lint/performance/noReExportAll: package public entry point.
|
|
3
|
+
/**
|
|
4
|
+
* Hyperliquid provider plugin for `@lifi/perps-sdk`. Reads account-specific
|
|
5
|
+
* state directly from `${apiUrl}/info`; enriched asset metadata and
|
|
6
|
+
* public/shared data come from the LI.FI backend. Register the
|
|
7
|
+
* `hyperliquidProvider()` factory with `createPerpsClient`.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export { projectHyperliquidConfigSettings } from './accountConfig.js';
|
|
13
|
+
export { getAccountSummary } from './accountSummary.js';
|
|
14
|
+
export { DEFAULT_HYPERLIQUID_API_URL, HYPERLIQUID_FEE_TIER_FALLBACK, PROVIDER_KEY as HYPERLIQUID_PROVIDER_KEY, } from './constants.js';
|
|
15
|
+
export { hyperliquidProvider, } from './HyperliquidProvider.js';
|
|
16
|
+
export { getAccount } from './services/getAccount.js';
|
|
17
|
+
export { getActivity } from './services/getActivity.js';
|
|
18
|
+
export { getFills } from './services/getFills.js';
|
|
19
|
+
export { getOrder } from './services/getOrder.js';
|
|
20
|
+
export { getOrders } from './services/getOrders.js';
|
|
21
|
+
export { getPositions } from './services/getPositions.js';
|
|
22
|
+
export { HyperliquidAgentStore } from './signers/HyperliquidAgentStore.js';
|
|
23
|
+
export * from './types/index.js';
|
|
24
|
+
export * from './utils/index.js';
|
|
25
|
+
export { HyperliquidWsProvider, hyperliquidWsProvider, } from './websocket/HyperliquidWsProvider.js';
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAE/E;;;;;;;;GAQG;AAEH,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,YAAY,IAAI,wBAAwB,GACzC,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAGL,mBAAmB,GACpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAEzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sCAAsC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module","sideEffects":false}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ProviderGetAccountParams, type SDKRequestOptions } from '@lifi/perps-sdk';
|
|
2
|
+
import type { AccountResponse } from '@lifi/perps-types';
|
|
3
|
+
import type { HyperliquidContext } from '../context.js';
|
|
4
|
+
/**
|
|
5
|
+
* Parameters for {@link getAccount}.
|
|
6
|
+
*
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export type GetAccountParams = ProviderGetAccountParams;
|
|
10
|
+
/**
|
|
11
|
+
* Fetch the Hyperliquid account snapshot for `address`: balances per
|
|
12
|
+
* sub-dex (and spot), aggregate margin used, unrealised PnL, fee tier, and
|
|
13
|
+
* the typed `HyperliquidAccountConfig`.
|
|
14
|
+
*
|
|
15
|
+
* Issues `userFees`, `userAbstraction`, `extraAgents`,
|
|
16
|
+
* `spotClearinghouseState` and one `clearinghouseState` per supported perps
|
|
17
|
+
* sub-dex, all concurrently.
|
|
18
|
+
*
|
|
19
|
+
* `config.builderFeeApproval` is intentionally omitted — that field
|
|
20
|
+
* compares the venue's `maxBuilderFee` against the integrator-specific
|
|
21
|
+
* builder address LI.FI publishes, which is not data the venue itself
|
|
22
|
+
* owns. Surfacing it belongs at a higher layer (the LI.FI backend or a
|
|
23
|
+
* thin client-side helper that has the integrator's builder config).
|
|
24
|
+
* @throws {PerpsError} On Hyperliquid REST error, network, or parsing failures.
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
export declare const getAccount: ({ client, apiUrl }: HyperliquidContext, params: GetAccountParams, options?: SDKRequestOptions) => Promise<AccountResponse>;
|
|
28
|
+
//# sourceMappingURL=getAccount.d.ts.map
|
|
@@ -0,0 +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;AAiBvD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,CAAA;AAkGvD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,UAAU,GACrB,oBAAoB,kBAAkB,EACtC,QAAQ,gBAAgB,EACxB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,eAAe,CA0GzB,CAAA"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { getMarketRegistry, getPrices, stringToFloat, } from '@lifi/perps-sdk';
|
|
2
|
+
import { PROVIDER_KEY } from '../constants.js';
|
|
3
|
+
import { HlAbstractionMode, } from '../types/index.js';
|
|
4
|
+
import { perpsDexNames, spotAssetFromToken, spotBalance, spotPriceById, } from '../utils/index.js';
|
|
5
|
+
import { hlInfoOptions, infoRequest } from '../utils/infoClient.js';
|
|
6
|
+
import { mapPosition } from '../utils/mapPosition.js';
|
|
7
|
+
const getAccountValue = (state) => Number.parseFloat(state.crossMarginSummary.accountValue || state.marginSummary.accountValue);
|
|
8
|
+
const getTotalMarginUsed = (state) => Number.parseFloat(state.crossMarginSummary.totalMarginUsed ||
|
|
9
|
+
state.marginSummary.totalMarginUsed);
|
|
10
|
+
const getMarginUsed = (abstraction, positions, stateByDex) => {
|
|
11
|
+
if (abstraction === HlAbstractionMode.UNIFIED_ACCOUNT ||
|
|
12
|
+
abstraction === HlAbstractionMode.PORTFOLIO_MARGIN) {
|
|
13
|
+
// Per HL docs, individual per-dex states are not meaningful for these
|
|
14
|
+
// modes; derive total margin from the already-mapped positions.
|
|
15
|
+
const total = positions.reduce((sum, p) => sum + Number.parseFloat(p.marginUsed), 0);
|
|
16
|
+
return total.toString();
|
|
17
|
+
}
|
|
18
|
+
if (abstraction === HlAbstractionMode.DEX_ABSTRACTION) {
|
|
19
|
+
let total = 0;
|
|
20
|
+
for (const [, state] of stateByDex) {
|
|
21
|
+
total += getTotalMarginUsed(state);
|
|
22
|
+
}
|
|
23
|
+
return total.toString();
|
|
24
|
+
}
|
|
25
|
+
const mainState = stateByDex.get('');
|
|
26
|
+
if (!mainState) {
|
|
27
|
+
return '0';
|
|
28
|
+
}
|
|
29
|
+
return getTotalMarginUsed(mainState).toString();
|
|
30
|
+
};
|
|
31
|
+
const isUnifiedMode = (abstraction) => abstraction === HlAbstractionMode.UNIFIED_ACCOUNT ||
|
|
32
|
+
abstraction === HlAbstractionMode.PORTFOLIO_MARGIN;
|
|
33
|
+
const buildBalances = (abstraction, spotState, stateByDex, quoteAssetIds, priceById, quoteAssetByCategory) => {
|
|
34
|
+
const balances = [];
|
|
35
|
+
const collateralBalances = [];
|
|
36
|
+
// Spot balances: collateral iff the token is a category quote asset.
|
|
37
|
+
for (const b of spotState.balances) {
|
|
38
|
+
const balance = spotBalance(spotAssetFromToken(b), b.total, priceById);
|
|
39
|
+
if (quoteAssetIds.has(balance.asset.id)) {
|
|
40
|
+
collateralBalances.push(balance);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
balances.push(balance);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Unified/portfolio modes hold everything in spot — per-dex equity would
|
|
47
|
+
// double-count. Only disabled/dexAbstraction carry separate venue collateral.
|
|
48
|
+
// `accountValue` is reported net of locked margin, i.e. the free collateral;
|
|
49
|
+
// the locked portion is carried by the positions' `marginUsed`.
|
|
50
|
+
if (!isUnifiedMode(abstraction)) {
|
|
51
|
+
for (const [dex, state] of stateByDex) {
|
|
52
|
+
const categoryId = dex || PROVIDER_KEY;
|
|
53
|
+
const value = getAccountValue(state);
|
|
54
|
+
collateralBalances.push({
|
|
55
|
+
categoryId,
|
|
56
|
+
// Always present: every dex in `stateByDex` derives from `markets`,
|
|
57
|
+
// which is what populates `quoteAssetByCategory`.
|
|
58
|
+
asset: quoteAssetByCategory.get(categoryId),
|
|
59
|
+
units: value.toString(),
|
|
60
|
+
valueUsd: value.toString(),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return { balances, collateralBalances };
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Fetch the Hyperliquid account snapshot for `address`: balances per
|
|
68
|
+
* sub-dex (and spot), aggregate margin used, unrealised PnL, fee tier, and
|
|
69
|
+
* the typed `HyperliquidAccountConfig`.
|
|
70
|
+
*
|
|
71
|
+
* Issues `userFees`, `userAbstraction`, `extraAgents`,
|
|
72
|
+
* `spotClearinghouseState` and one `clearinghouseState` per supported perps
|
|
73
|
+
* sub-dex, all concurrently.
|
|
74
|
+
*
|
|
75
|
+
* `config.builderFeeApproval` is intentionally omitted — that field
|
|
76
|
+
* compares the venue's `maxBuilderFee` against the integrator-specific
|
|
77
|
+
* builder address LI.FI publishes, which is not data the venue itself
|
|
78
|
+
* owns. Surfacing it belongs at a higher layer (the LI.FI backend or a
|
|
79
|
+
* thin client-side helper that has the integrator's builder config).
|
|
80
|
+
* @throws {PerpsError} On Hyperliquid REST error, network, or parsing failures.
|
|
81
|
+
* @public
|
|
82
|
+
*/
|
|
83
|
+
export const getAccount = async ({ client, apiUrl }, params, options) => {
|
|
84
|
+
const registry = getMarketRegistry(client, PROVIDER_KEY);
|
|
85
|
+
const markets = await registry.sync();
|
|
86
|
+
const dexNames = perpsDexNames(markets);
|
|
87
|
+
const quoteAssetIds = new Set(markets.map((m) => m.quoteAsset.id));
|
|
88
|
+
const quoteAssetByCategory = new Map(markets.map((m) => [m.categoryId, m.quoteAsset]));
|
|
89
|
+
const infoOpts = hlInfoOptions(client, options);
|
|
90
|
+
const [feesResult, abstractionResult, agentsResult, spotState, stateResults, { prices },] = await Promise.all([
|
|
91
|
+
infoRequest(apiUrl, { type: 'userFees', user: params.address }, infoOpts),
|
|
92
|
+
// "Never set abstraction" is a successful 200 `null` body, not an error —
|
|
93
|
+
// so a fetch failure must propagate, never be coerced to `null` (which
|
|
94
|
+
// would silently route margin/balance down the wrong, non-unified branch).
|
|
95
|
+
infoRequest(apiUrl, { type: 'userAbstraction', user: params.address }, infoOpts),
|
|
96
|
+
infoRequest(apiUrl, { type: 'extraAgents', user: params.address }, infoOpts),
|
|
97
|
+
infoRequest(apiUrl, { type: 'spotClearinghouseState', user: params.address }, infoOpts),
|
|
98
|
+
Promise.all(dexNames.map((name) => infoRequest(apiUrl, {
|
|
99
|
+
type: 'clearinghouseState',
|
|
100
|
+
user: params.address,
|
|
101
|
+
...(name ? { dex: name } : {}),
|
|
102
|
+
}, infoOpts))),
|
|
103
|
+
getPrices(client, { provider: PROVIDER_KEY }, options),
|
|
104
|
+
]);
|
|
105
|
+
const priceById = spotPriceById(markets, new Map(prices.map((p) => [p.marketId, stringToFloat(p.markPrice)])));
|
|
106
|
+
const positions = stateResults.flatMap((state) => state.assetPositions
|
|
107
|
+
.filter((ap) => Number.parseFloat(ap.position.szi) !== 0)
|
|
108
|
+
.map((ap) => mapPosition(ap, registry.require(ap.position.coin))));
|
|
109
|
+
const stateByDex = new Map();
|
|
110
|
+
stateResults.forEach((state, i) => {
|
|
111
|
+
stateByDex.set(dexNames[i], state);
|
|
112
|
+
});
|
|
113
|
+
const totalUnrealizedPnl = positions.reduce((sum, p) => sum + Number.parseFloat(p.unrealizedPnl), 0);
|
|
114
|
+
const config = {
|
|
115
|
+
provider: PROVIDER_KEY,
|
|
116
|
+
abstractionMode: abstractionResult,
|
|
117
|
+
agents: agentsResult,
|
|
118
|
+
};
|
|
119
|
+
const { balances, collateralBalances } = buildBalances(abstractionResult, spotState, stateByDex, quoteAssetIds, priceById, quoteAssetByCategory);
|
|
120
|
+
return {
|
|
121
|
+
provider: PROVIDER_KEY,
|
|
122
|
+
address: params.address,
|
|
123
|
+
balances,
|
|
124
|
+
collateralBalances,
|
|
125
|
+
marginUsed: getMarginUsed(abstractionResult, positions, stateByDex),
|
|
126
|
+
unrealizedPnl: totalUnrealizedPnl.toString(),
|
|
127
|
+
feeTier: {
|
|
128
|
+
maker: feesResult.userAddRate ?? '0',
|
|
129
|
+
taker: feesResult.userCrossRate ?? '0',
|
|
130
|
+
},
|
|
131
|
+
config,
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=getAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAccount.js","sourceRoot":"","sources":["../../../src/services/getAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type SDKRequestOptions } from '@lifi/perps-sdk';
|
|
2
|
+
import type { ActivitiesResponse } from '@lifi/perps-types';
|
|
3
|
+
import { ActivityType } from '@lifi/perps-types';
|
|
4
|
+
import type { Address } from 'viem';
|
|
5
|
+
import type { HyperliquidContext } from '../context.js';
|
|
6
|
+
/**
|
|
7
|
+
* Parameters for {@link getActivity}.
|
|
8
|
+
*
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
export interface GetActivityParams {
|
|
12
|
+
address: Address;
|
|
13
|
+
limit?: number;
|
|
14
|
+
/** `cursor` is a ms-since-epoch upper bound — items with `timestamp < cursor` are returned. */
|
|
15
|
+
cursor?: string;
|
|
16
|
+
startTime?: number;
|
|
17
|
+
endTime?: number;
|
|
18
|
+
type?: ActivityType[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Fetch a chronological activity feed (deposits, withdrawals, transfers,
|
|
22
|
+
* liquidations, funding) for `address`. Combines results from Hyperliquid's
|
|
23
|
+
* `userNonFundingLedgerUpdates` and `userFunding` endpoints, sorted
|
|
24
|
+
* newest-first.
|
|
25
|
+
*
|
|
26
|
+
* Cursor-based pagination uses the ms-since-epoch timestamp of the last
|
|
27
|
+
* item on the current page. `startTime` defaults to 90 days ago to keep
|
|
28
|
+
* unbounded queries cheap.
|
|
29
|
+
* @throws {PerpsError} On Hyperliquid REST error, network, or parsing failures.
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
export declare const getActivity: ({ client, apiUrl }: HyperliquidContext, params: GetActivityParams, options?: SDKRequestOptions) => Promise<ActivitiesResponse>;
|
|
33
|
+
//# sourceMappingURL=getActivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAOnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAYvD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AAmDD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,GACtB,oBAAoB,kBAAkB,EACtC,QAAQ,iBAAiB,EACzB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,kBAAkB,CAuD5B,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { getMarketRegistry } from '@lifi/perps-sdk';
|
|
2
|
+
import { ActivityType } from '@lifi/perps-types';
|
|
3
|
+
import { DEFAULT_HISTORY_LIMIT, MAX_HISTORY_LIMIT, NINETY_DAYS_MS, PROVIDER_KEY, } from '../constants.js';
|
|
4
|
+
import { mapFundingActivity, mapLedgerEntry } from '../utils/index.js';
|
|
5
|
+
import { hlInfoOptions, infoRequest, } from '../utils/infoClient.js';
|
|
6
|
+
const fetchActivityData = async (apiUrl, typeFilter, timeParams, resolveMarket, options) => {
|
|
7
|
+
const needLedger = !typeFilter || typeFilter.some((t) => t !== ActivityType.FUNDING);
|
|
8
|
+
const needFunding = !typeFilter || typeFilter.includes(ActivityType.FUNDING);
|
|
9
|
+
const [ledgerUpdates, fundingUpdates] = await Promise.all([
|
|
10
|
+
needLedger
|
|
11
|
+
? infoRequest(apiUrl, { type: 'userNonFundingLedgerUpdates', ...timeParams }, options)
|
|
12
|
+
: Promise.resolve([]),
|
|
13
|
+
needFunding
|
|
14
|
+
? infoRequest(apiUrl, { type: 'userFunding', ...timeParams }, options)
|
|
15
|
+
: Promise.resolve([]),
|
|
16
|
+
]);
|
|
17
|
+
const ledgerItems = ledgerUpdates
|
|
18
|
+
.map((entry) => mapLedgerEntry(entry, PROVIDER_KEY, timeParams.user, resolveMarket))
|
|
19
|
+
.filter((item) => item !== null);
|
|
20
|
+
const fundingItems = fundingUpdates.map((entry) => mapFundingActivity(entry, PROVIDER_KEY, resolveMarket));
|
|
21
|
+
const merged = [...ledgerItems, ...fundingItems].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
|
|
22
|
+
if (!typeFilter) {
|
|
23
|
+
return merged;
|
|
24
|
+
}
|
|
25
|
+
const typeSet = new Set(typeFilter);
|
|
26
|
+
return merged.filter((item) => typeSet.has(item.type));
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Fetch a chronological activity feed (deposits, withdrawals, transfers,
|
|
30
|
+
* liquidations, funding) for `address`. Combines results from Hyperliquid's
|
|
31
|
+
* `userNonFundingLedgerUpdates` and `userFunding` endpoints, sorted
|
|
32
|
+
* newest-first.
|
|
33
|
+
*
|
|
34
|
+
* Cursor-based pagination uses the ms-since-epoch timestamp of the last
|
|
35
|
+
* item on the current page. `startTime` defaults to 90 days ago to keep
|
|
36
|
+
* unbounded queries cheap.
|
|
37
|
+
* @throws {PerpsError} On Hyperliquid REST error, network, or parsing failures.
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
export const getActivity = async ({ client, apiUrl }, params, options) => {
|
|
41
|
+
const registry = getMarketRegistry(client, PROVIDER_KEY);
|
|
42
|
+
await registry.sync();
|
|
43
|
+
const infoOpts = hlInfoOptions(client, options);
|
|
44
|
+
const limit = Math.min(params.limit ?? DEFAULT_HISTORY_LIMIT, MAX_HISTORY_LIMIT);
|
|
45
|
+
const startTime = params.startTime ?? Date.now() - NINETY_DAYS_MS;
|
|
46
|
+
const endTime = params.cursor === undefined
|
|
47
|
+
? params.endTime
|
|
48
|
+
: Number.parseInt(params.cursor, 10);
|
|
49
|
+
const timeParams = {
|
|
50
|
+
user: params.address,
|
|
51
|
+
startTime,
|
|
52
|
+
...(endTime === undefined ? {} : { endTime }),
|
|
53
|
+
};
|
|
54
|
+
const merged = await fetchActivityData(apiUrl, params.type, timeParams, (coin) => registry.require(coin), infoOpts);
|
|
55
|
+
// Hyperliquid's endTime is inclusive — drop boundary items so we don't
|
|
56
|
+
// return the cursor row twice on the next page.
|
|
57
|
+
const filtered = params.cursor === undefined
|
|
58
|
+
? merged
|
|
59
|
+
: merged.filter((item) => new Date(item.timestamp).getTime() <
|
|
60
|
+
Number.parseInt(params.cursor, 10));
|
|
61
|
+
const hasMore = filtered.length > limit;
|
|
62
|
+
const items = filtered.slice(0, limit);
|
|
63
|
+
return {
|
|
64
|
+
provider: PROVIDER_KEY,
|
|
65
|
+
items,
|
|
66
|
+
pagination: {
|
|
67
|
+
limit,
|
|
68
|
+
hasMore,
|
|
69
|
+
cursor: items.length > 0
|
|
70
|
+
? String(new Date(items[items.length - 1].timestamp).getTime())
|
|
71
|
+
: undefined,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=getActivity.js.map
|