@lifi/perps-sdk 0.1.1-alpha.8 → 0.2.0-alpha.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/README.md +38 -15
- package/dist/cjs/agent/AgentManager.d.ts +5 -5
- package/dist/cjs/agent/AgentManager.d.ts.map +1 -1
- package/dist/cjs/agent/AgentManager.js +16 -14
- package/dist/cjs/agent/AgentManager.js.map +1 -1
- package/dist/cjs/client/PerpsClient.d.ts +75 -21
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +642 -173
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/client/createPerpsClient.d.ts +15 -2
- package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/createPerpsClient.js +6 -3
- package/dist/cjs/client/createPerpsClient.js.map +1 -1
- package/dist/cjs/client/projectAccountConfigSettings.d.ts +3 -0
- package/dist/cjs/client/projectAccountConfigSettings.d.ts.map +1 -0
- package/dist/cjs/client/projectAccountConfigSettings.js +17 -0
- package/dist/cjs/client/projectAccountConfigSettings.js.map +1 -0
- package/dist/cjs/client/types.d.ts +49 -26
- package/dist/cjs/client/types.d.ts.map +1 -1
- package/dist/cjs/client/types.js +6 -0
- package/dist/cjs/client/types.js.map +1 -1
- package/dist/cjs/errors/PerpsError.d.ts +2 -3
- package/dist/cjs/errors/PerpsError.d.ts.map +1 -1
- package/dist/cjs/errors/PerpsError.js +3 -15
- package/dist/cjs/errors/PerpsError.js.map +1 -1
- package/dist/cjs/errors/constants.d.ts +0 -10
- package/dist/cjs/errors/constants.d.ts.map +1 -1
- package/dist/cjs/errors/constants.js +1 -12
- package/dist/cjs/errors/constants.js.map +1 -1
- package/dist/cjs/index.d.ts +37 -31
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +87 -42
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/hyperliquid/accountConfig.d.ts +3 -0
- package/dist/cjs/providers/hyperliquid/accountConfig.d.ts.map +1 -0
- package/dist/cjs/providers/hyperliquid/accountConfig.js +41 -0
- package/dist/cjs/providers/hyperliquid/accountConfig.js.map +1 -0
- package/dist/cjs/providers/lighter/accountConfig.d.ts +3 -0
- package/dist/cjs/providers/lighter/accountConfig.d.ts.map +1 -0
- package/dist/cjs/providers/lighter/accountConfig.js +45 -0
- package/dist/cjs/providers/lighter/accountConfig.js.map +1 -0
- package/dist/cjs/realtime/PerpsWsClient.d.ts +7 -1
- package/dist/cjs/realtime/PerpsWsClient.d.ts.map +1 -1
- package/dist/cjs/realtime/PerpsWsClient.js +36 -23
- package/dist/cjs/realtime/PerpsWsClient.js.map +1 -1
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts +9 -5
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js +158 -52
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
- package/dist/cjs/realtime/hyperliquid/types.d.ts +11 -9
- package/dist/cjs/realtime/hyperliquid/types.d.ts.map +1 -1
- package/dist/cjs/realtime/lighter/LighterWsProvider.d.ts +48 -0
- package/dist/cjs/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
- package/dist/cjs/realtime/lighter/LighterWsProvider.js +424 -0
- package/dist/cjs/realtime/lighter/LighterWsProvider.js.map +1 -0
- package/dist/cjs/realtime/lighter/types.d.ts +84 -0
- package/dist/cjs/realtime/lighter/types.d.ts.map +1 -0
- package/dist/cjs/{dex → realtime/lighter}/types.js.map +1 -1
- package/dist/cjs/services/createAction.d.ts +11 -0
- package/dist/cjs/services/createAction.d.ts.map +1 -0
- package/dist/cjs/services/{submitAuthorization.js → createAction.js} +7 -6
- package/dist/cjs/services/createAction.js.map +1 -0
- package/dist/cjs/services/executeAction.d.ts +11 -0
- package/dist/cjs/services/executeAction.d.ts.map +1 -0
- package/dist/cjs/services/{submitOrder.js → executeAction.js} +6 -5
- package/dist/cjs/services/executeAction.js.map +1 -0
- package/dist/cjs/services/getAccount.d.ts +1 -1
- package/dist/cjs/services/getAccount.d.ts.map +1 -1
- package/dist/cjs/services/getAccount.js +1 -1
- package/dist/cjs/services/getAccount.js.map +1 -1
- package/dist/cjs/services/getActivity.d.ts +13 -0
- package/dist/cjs/services/getActivity.d.ts.map +1 -0
- package/dist/cjs/services/getActivity.js +21 -0
- package/dist/cjs/services/getActivity.js.map +1 -0
- package/dist/cjs/services/getAsset.d.ts +8 -0
- package/dist/cjs/services/getAsset.d.ts.map +1 -0
- package/dist/cjs/services/{getMarkets.js → getAsset.js} +6 -4
- package/dist/cjs/services/getAsset.js.map +1 -0
- package/dist/cjs/services/getAssets.d.ts +7 -0
- package/dist/cjs/services/getAssets.d.ts.map +1 -0
- package/dist/cjs/services/{getMarket.js → getAssets.js} +5 -5
- package/dist/cjs/services/getAssets.js.map +1 -0
- package/dist/cjs/services/getFills.d.ts +12 -0
- package/dist/cjs/services/getFills.d.ts.map +1 -0
- package/dist/cjs/services/{getHistory.js → getFills.js} +7 -5
- package/dist/cjs/services/getFills.js.map +1 -0
- package/dist/cjs/services/getOhlcv.d.ts +1 -1
- package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
- package/dist/cjs/services/getOhlcv.js +2 -2
- package/dist/cjs/services/getOhlcv.js.map +1 -1
- package/dist/cjs/services/getOrder.d.ts +1 -1
- package/dist/cjs/services/getOrder.d.ts.map +1 -1
- package/dist/cjs/services/getOrder.js +2 -2
- package/dist/cjs/services/getOrder.js.map +1 -1
- package/dist/cjs/services/getOrderbook.d.ts +1 -1
- package/dist/cjs/services/getOrderbook.d.ts.map +1 -1
- package/dist/cjs/services/getOrderbook.js +2 -2
- package/dist/cjs/services/getOrderbook.js.map +1 -1
- 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 +15 -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 +15 -0
- package/dist/cjs/services/getPositions.js.map +1 -0
- package/dist/cjs/services/getPrices.d.ts +1 -1
- package/dist/cjs/services/getPrices.d.ts.map +1 -1
- package/dist/cjs/services/getPrices.js +1 -1
- package/dist/cjs/services/getPrices.js.map +1 -1
- package/dist/cjs/services/getProviders.d.ts +4 -0
- package/dist/cjs/services/getProviders.d.ts.map +1 -0
- package/dist/cjs/services/{getDexes.js → getProviders.js} +4 -4
- package/dist/cjs/services/getProviders.js.map +1 -0
- package/dist/cjs/signers/lighter/LighterKeyStore.d.ts +20 -0
- package/dist/cjs/signers/lighter/LighterKeyStore.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/LighterKeyStore.js +42 -0
- package/dist/cjs/signers/lighter/LighterKeyStore.js.map +1 -0
- package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.d.ts +66 -0
- package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.js +141 -0
- package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.js.map +1 -0
- package/dist/cjs/signers/lighter/LighterSigner.d.ts +41 -0
- package/dist/cjs/signers/lighter/LighterSigner.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/LighterSigner.js +176 -0
- package/dist/cjs/signers/lighter/LighterSigner.js.map +1 -0
- package/dist/cjs/signers/lighter/index.d.ts +9 -0
- package/dist/cjs/signers/lighter/index.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/index.js +20 -0
- package/dist/cjs/signers/lighter/index.js.map +1 -0
- package/dist/cjs/signers/lighter/wasmLoader.d.ts +42 -0
- package/dist/cjs/signers/lighter/wasmLoader.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/wasmLoader.js +166 -0
- package/dist/cjs/signers/lighter/wasmLoader.js.map +1 -0
- package/dist/cjs/utils/accountSummary.d.ts +9 -0
- package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
- package/dist/cjs/utils/accountSummary.js +83 -0
- package/dist/cjs/utils/accountSummary.js.map +1 -0
- package/dist/cjs/utils/assertNever.d.ts +2 -0
- package/dist/cjs/utils/assertNever.d.ts.map +1 -0
- package/dist/cjs/utils/assertNever.js +7 -0
- package/dist/cjs/utils/assertNever.js.map +1 -0
- package/dist/cjs/utils/calculations.d.ts +16 -0
- package/dist/cjs/utils/calculations.d.ts.map +1 -0
- package/dist/cjs/utils/calculations.js +71 -0
- package/dist/cjs/utils/calculations.js.map +1 -0
- package/dist/cjs/utils/hyperliquid/index.d.ts +3 -0
- package/dist/cjs/utils/hyperliquid/index.d.ts.map +1 -0
- package/dist/cjs/utils/hyperliquid/index.js +11 -0
- package/dist/cjs/utils/hyperliquid/index.js.map +1 -0
- package/dist/cjs/utils/hyperliquid/liquidation.d.ts +3 -0
- package/dist/cjs/utils/hyperliquid/liquidation.d.ts.map +1 -0
- package/dist/cjs/utils/hyperliquid/liquidation.js +24 -0
- package/dist/cjs/utils/hyperliquid/liquidation.js.map +1 -0
- package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts +4 -0
- package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
- package/dist/cjs/utils/hyperliquid/orderFormatting.js +33 -0
- package/dist/cjs/utils/hyperliquid/orderFormatting.js.map +1 -0
- package/dist/cjs/utils/orderClassification.d.ts +8 -0
- package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
- package/dist/cjs/utils/orderClassification.js +39 -0
- package/dist/cjs/utils/orderClassification.js.map +1 -0
- package/dist/cjs/utils/orderMath.d.ts +6 -0
- package/dist/cjs/utils/orderMath.d.ts.map +1 -0
- package/dist/cjs/utils/orderMath.js +71 -0
- package/dist/cjs/utils/orderMath.js.map +1 -0
- package/dist/cjs/utils/parse.d.ts +2 -0
- package/dist/cjs/utils/parse.d.ts.map +1 -0
- package/dist/cjs/utils/parse.js +14 -0
- package/dist/cjs/utils/parse.js.map +1 -0
- package/dist/cjs/utils/positionMath.d.ts +26 -0
- package/dist/cjs/utils/positionMath.d.ts.map +1 -0
- package/dist/cjs/utils/positionMath.js +38 -0
- package/dist/cjs/utils/positionMath.js.map +1 -0
- package/dist/cjs/utils/request.d.ts.map +1 -1
- package/dist/cjs/utils/request.js +19 -4
- package/dist/cjs/utils/request.js.map +1 -1
- package/dist/cjs/utils/signTypedData.d.ts +2 -0
- package/dist/cjs/utils/signTypedData.d.ts.map +1 -1
- package/dist/cjs/utils/signTypedData.js +10 -3
- package/dist/cjs/utils/signTypedData.js.map +1 -1
- package/dist/cjs/utils/units.d.ts +3 -0
- package/dist/cjs/utils/units.d.ts.map +1 -0
- package/dist/cjs/utils/units.js +18 -0
- package/dist/cjs/utils/units.js.map +1 -0
- package/dist/cjs/utils/validation.d.ts +2 -0
- package/dist/cjs/utils/validation.d.ts.map +1 -0
- package/dist/cjs/utils/validation.js +16 -0
- package/dist/cjs/utils/validation.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wasm/lighter-signer.wasm +0 -0
- package/dist/cjs/wasm/wasm_exec.js +575 -0
- package/dist/esm/agent/AgentManager.d.ts +9 -9
- package/dist/esm/agent/AgentManager.d.ts.map +1 -1
- package/dist/esm/agent/AgentManager.js +20 -18
- package/dist/esm/agent/AgentManager.js.map +1 -1
- package/dist/esm/agent/storage.d.ts +1 -1
- package/dist/esm/agent/storage.js +1 -1
- package/dist/esm/client/PerpsClient.d.ts +226 -144
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +869 -320
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/client/createPerpsClient.d.ts +30 -51
- package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
- package/dist/esm/client/createPerpsClient.js +6 -21
- package/dist/esm/client/createPerpsClient.js.map +1 -1
- package/dist/esm/client/projectAccountConfigSettings.d.ts +18 -0
- package/dist/esm/client/projectAccountConfigSettings.d.ts.map +1 -0
- package/dist/esm/client/projectAccountConfigSettings.js +29 -0
- package/dist/esm/client/projectAccountConfigSettings.js.map +1 -0
- package/dist/esm/client/types.d.ts +115 -49
- package/dist/esm/client/types.d.ts.map +1 -1
- package/dist/esm/client/types.js +11 -1
- package/dist/esm/client/types.js.map +1 -1
- package/dist/esm/errors/PerpsError.d.ts +2 -3
- package/dist/esm/errors/PerpsError.d.ts.map +1 -1
- package/dist/esm/errors/PerpsError.js +3 -15
- package/dist/esm/errors/PerpsError.js.map +1 -1
- package/dist/esm/errors/constants.d.ts +0 -10
- package/dist/esm/errors/constants.d.ts.map +1 -1
- package/dist/esm/errors/constants.js +0 -11
- package/dist/esm/errors/constants.js.map +1 -1
- package/dist/esm/index.d.ts +37 -31
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +27 -22
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers/hyperliquid/accountConfig.d.ts +13 -0
- package/dist/esm/providers/hyperliquid/accountConfig.d.ts.map +1 -0
- package/dist/esm/providers/hyperliquid/accountConfig.js +69 -0
- package/dist/esm/providers/hyperliquid/accountConfig.js.map +1 -0
- package/dist/esm/providers/lighter/accountConfig.d.ts +13 -0
- package/dist/esm/providers/lighter/accountConfig.d.ts.map +1 -0
- package/dist/esm/providers/lighter/accountConfig.js +79 -0
- package/dist/esm/providers/lighter/accountConfig.js.map +1 -0
- package/dist/esm/realtime/PerpsWsClient.d.ts +13 -1
- package/dist/esm/realtime/PerpsWsClient.d.ts.map +1 -1
- package/dist/esm/realtime/PerpsWsClient.js +36 -23
- package/dist/esm/realtime/PerpsWsClient.js.map +1 -1
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js +170 -53
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
- package/dist/esm/realtime/hyperliquid/types.d.ts +11 -9
- package/dist/esm/realtime/hyperliquid/types.d.ts.map +1 -1
- package/dist/esm/realtime/lighter/LighterWsProvider.d.ts +68 -0
- package/dist/esm/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
- package/dist/esm/realtime/lighter/LighterWsProvider.js +474 -0
- package/dist/esm/realtime/lighter/LighterWsProvider.js.map +1 -0
- package/dist/esm/realtime/lighter/types.d.ts +108 -0
- package/dist/esm/realtime/lighter/types.d.ts.map +1 -0
- package/dist/esm/realtime/lighter/types.js +14 -0
- package/dist/esm/realtime/lighter/types.js.map +1 -0
- package/dist/esm/services/createAction.d.ts +11 -0
- package/dist/esm/services/createAction.d.ts.map +1 -0
- package/dist/esm/services/createAction.js +14 -0
- package/dist/esm/services/createAction.js.map +1 -0
- package/dist/esm/services/executeAction.d.ts +11 -0
- package/dist/esm/services/executeAction.d.ts.map +1 -0
- package/dist/esm/services/executeAction.js +14 -0
- package/dist/esm/services/executeAction.js.map +1 -0
- package/dist/esm/services/getAccount.d.ts +7 -7
- package/dist/esm/services/getAccount.d.ts.map +1 -1
- package/dist/esm/services/getAccount.js +6 -6
- package/dist/esm/services/getAccount.js.map +1 -1
- package/dist/esm/services/getActivity.d.ts +49 -0
- package/dist/esm/services/getActivity.d.ts.map +1 -0
- package/dist/esm/services/getActivity.js +47 -0
- package/dist/esm/services/getActivity.js.map +1 -0
- package/dist/esm/services/getAsset.d.ts +20 -0
- package/dist/esm/services/getAsset.d.ts.map +1 -0
- package/dist/esm/services/getAsset.js +18 -0
- package/dist/esm/services/getAsset.js.map +1 -0
- package/dist/esm/services/getAssets.d.ts +18 -0
- package/dist/esm/services/getAssets.d.ts.map +1 -0
- package/dist/esm/services/getAssets.js +18 -0
- package/dist/esm/services/getAssets.js.map +1 -0
- package/dist/{types/services/getHistory.d.ts → esm/services/getFills.d.ts} +17 -13
- package/dist/esm/services/getFills.d.ts.map +1 -0
- package/dist/esm/services/{getHistory.js → getFills.js} +13 -11
- package/dist/esm/services/getFills.js.map +1 -0
- package/dist/esm/services/getOhlcv.d.ts +4 -4
- package/dist/esm/services/getOhlcv.d.ts.map +1 -1
- package/dist/esm/services/getOhlcv.js +4 -4
- package/dist/esm/services/getOhlcv.js.map +1 -1
- package/dist/esm/services/getOrder.d.ts +4 -4
- package/dist/esm/services/getOrder.d.ts.map +1 -1
- package/dist/esm/services/getOrder.js +4 -4
- package/dist/esm/services/getOrder.js.map +1 -1
- package/dist/esm/services/getOrderbook.d.ts +4 -4
- package/dist/esm/services/getOrderbook.d.ts.map +1 -1
- package/dist/esm/services/getOrderbook.js +4 -4
- package/dist/esm/services/getOrderbook.js.map +1 -1
- 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 +23 -0
- package/dist/esm/services/getOrders.js.map +1 -0
- package/dist/esm/services/getPositions.d.ts +27 -0
- package/dist/esm/services/getPositions.d.ts.map +1 -0
- package/dist/esm/services/getPositions.js +23 -0
- package/dist/esm/services/getPositions.js.map +1 -0
- package/dist/esm/services/getPrices.d.ts +5 -5
- package/dist/esm/services/getPrices.d.ts.map +1 -1
- package/dist/esm/services/getPrices.js +4 -4
- package/dist/esm/services/getPrices.js.map +1 -1
- package/dist/esm/services/getProviders.d.ts +20 -0
- package/dist/esm/services/getProviders.d.ts.map +1 -0
- package/dist/esm/services/getProviders.js +21 -0
- package/dist/esm/services/getProviders.js.map +1 -0
- package/dist/esm/signers/lighter/LighterKeyStore.d.ts +29 -0
- package/dist/esm/signers/lighter/LighterKeyStore.d.ts.map +1 -0
- package/dist/esm/signers/lighter/LighterKeyStore.js +53 -0
- package/dist/esm/signers/lighter/LighterKeyStore.js.map +1 -0
- package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.d.ts +174 -0
- package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.js +214 -0
- package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.js.map +1 -0
- package/dist/esm/signers/lighter/LighterSigner.d.ts +88 -0
- package/dist/esm/signers/lighter/LighterSigner.d.ts.map +1 -0
- package/dist/esm/signers/lighter/LighterSigner.js +226 -0
- package/dist/esm/signers/lighter/LighterSigner.js.map +1 -0
- package/dist/esm/signers/lighter/index.d.ts +9 -0
- package/dist/esm/signers/lighter/index.d.ts.map +1 -0
- package/dist/esm/signers/lighter/index.js +5 -0
- package/dist/esm/signers/lighter/index.js.map +1 -0
- package/dist/esm/signers/lighter/wasmLoader.d.ts +71 -0
- package/dist/esm/signers/lighter/wasmLoader.d.ts.map +1 -0
- package/dist/esm/signers/lighter/wasmLoader.js +181 -0
- package/dist/esm/signers/lighter/wasmLoader.js.map +1 -0
- package/dist/esm/utils/accountSummary.d.ts +13 -0
- package/dist/esm/utils/accountSummary.d.ts.map +1 -0
- package/dist/esm/utils/accountSummary.js +97 -0
- package/dist/esm/utils/accountSummary.js.map +1 -0
- package/dist/esm/utils/assertNever.d.ts +19 -0
- package/dist/esm/utils/assertNever.d.ts.map +1 -0
- package/dist/esm/utils/assertNever.js +21 -0
- package/dist/esm/utils/assertNever.js.map +1 -0
- package/dist/esm/utils/calculations.d.ts +109 -0
- package/dist/esm/utils/calculations.d.ts.map +1 -0
- package/dist/esm/utils/calculations.js +154 -0
- package/dist/esm/utils/calculations.js.map +1 -0
- package/dist/esm/utils/hyperliquid/index.d.ts +3 -0
- package/dist/esm/utils/hyperliquid/index.d.ts.map +1 -0
- package/dist/esm/utils/hyperliquid/index.js +3 -0
- package/dist/esm/utils/hyperliquid/index.js.map +1 -0
- package/dist/esm/utils/hyperliquid/liquidation.d.ts +46 -0
- package/dist/esm/utils/hyperliquid/liquidation.d.ts.map +1 -0
- package/dist/esm/utils/hyperliquid/liquidation.js +63 -0
- package/dist/esm/utils/hyperliquid/liquidation.js.map +1 -0
- package/dist/esm/utils/hyperliquid/orderFormatting.d.ts +44 -0
- package/dist/esm/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
- package/dist/esm/utils/hyperliquid/orderFormatting.js +79 -0
- package/dist/esm/utils/hyperliquid/orderFormatting.js.map +1 -0
- package/dist/esm/utils/orderClassification.d.ts +29 -0
- package/dist/esm/utils/orderClassification.d.ts.map +1 -0
- package/dist/esm/utils/orderClassification.js +53 -0
- package/dist/esm/utils/orderClassification.js.map +1 -0
- package/dist/esm/utils/orderMath.d.ts +40 -0
- package/dist/esm/utils/orderMath.d.ts.map +1 -0
- package/dist/esm/utils/orderMath.js +99 -0
- package/dist/esm/utils/orderMath.js.map +1 -0
- package/dist/esm/utils/parse.d.ts +18 -0
- package/dist/esm/utils/parse.d.ts.map +1 -0
- package/dist/esm/utils/parse.js +28 -0
- package/dist/esm/utils/parse.js.map +1 -0
- package/dist/esm/utils/positionMath.d.ts +78 -0
- package/dist/esm/utils/positionMath.d.ts.map +1 -0
- package/dist/esm/utils/positionMath.js +83 -0
- package/dist/esm/utils/positionMath.js.map +1 -0
- package/dist/esm/utils/request.d.ts +1 -2
- package/dist/esm/utils/request.d.ts.map +1 -1
- package/dist/esm/utils/request.js +23 -7
- package/dist/esm/utils/request.js.map +1 -1
- package/dist/esm/utils/signTypedData.d.ts +8 -10
- package/dist/esm/utils/signTypedData.d.ts.map +1 -1
- package/dist/esm/utils/signTypedData.js +15 -14
- package/dist/esm/utils/signTypedData.js.map +1 -1
- package/dist/esm/utils/units.d.ts +20 -0
- package/dist/esm/utils/units.d.ts.map +1 -0
- package/dist/esm/utils/units.js +31 -0
- package/dist/esm/utils/units.js.map +1 -0
- package/dist/esm/utils/validation.d.ts +15 -0
- package/dist/esm/utils/validation.d.ts.map +1 -0
- package/dist/esm/utils/validation.js +26 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wasm/lighter-signer.wasm +0 -0
- package/dist/esm/wasm/wasm_exec.js +575 -0
- package/dist/types/agent/AgentManager.d.ts +9 -9
- package/dist/types/agent/AgentManager.d.ts.map +1 -1
- package/dist/types/agent/storage.d.ts +1 -1
- package/dist/types/client/PerpsClient.d.ts +226 -144
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/client/createPerpsClient.d.ts +30 -51
- package/dist/types/client/createPerpsClient.d.ts.map +1 -1
- package/dist/types/client/projectAccountConfigSettings.d.ts +18 -0
- package/dist/types/client/projectAccountConfigSettings.d.ts.map +1 -0
- package/dist/types/client/types.d.ts +115 -49
- package/dist/types/client/types.d.ts.map +1 -1
- package/dist/types/errors/PerpsError.d.ts +2 -3
- package/dist/types/errors/PerpsError.d.ts.map +1 -1
- package/dist/types/errors/constants.d.ts +0 -10
- package/dist/types/errors/constants.d.ts.map +1 -1
- package/dist/types/index.d.ts +37 -31
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/providers/hyperliquid/accountConfig.d.ts +13 -0
- package/dist/types/providers/hyperliquid/accountConfig.d.ts.map +1 -0
- package/dist/types/providers/lighter/accountConfig.d.ts +13 -0
- package/dist/types/providers/lighter/accountConfig.d.ts.map +1 -0
- package/dist/types/realtime/PerpsWsClient.d.ts +13 -1
- package/dist/types/realtime/PerpsWsClient.d.ts.map +1 -1
- package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
- package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/types/realtime/hyperliquid/types.d.ts +11 -9
- package/dist/types/realtime/hyperliquid/types.d.ts.map +1 -1
- package/dist/types/realtime/lighter/LighterWsProvider.d.ts +68 -0
- package/dist/types/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
- package/dist/types/realtime/lighter/types.d.ts +108 -0
- package/dist/types/realtime/lighter/types.d.ts.map +1 -0
- package/dist/types/services/createAction.d.ts +11 -0
- package/dist/types/services/createAction.d.ts.map +1 -0
- package/dist/types/services/executeAction.d.ts +11 -0
- package/dist/types/services/executeAction.d.ts.map +1 -0
- package/dist/types/services/getAccount.d.ts +7 -7
- package/dist/types/services/getAccount.d.ts.map +1 -1
- package/dist/types/services/getActivity.d.ts +49 -0
- package/dist/types/services/getActivity.d.ts.map +1 -0
- package/dist/types/services/getAsset.d.ts +20 -0
- package/dist/types/services/getAsset.d.ts.map +1 -0
- package/dist/types/services/getAssets.d.ts +18 -0
- package/dist/types/services/getAssets.d.ts.map +1 -0
- package/dist/{esm/services/getHistory.d.ts → types/services/getFills.d.ts} +17 -13
- package/dist/types/services/getFills.d.ts.map +1 -0
- package/dist/types/services/getOhlcv.d.ts +4 -4
- package/dist/types/services/getOhlcv.d.ts.map +1 -1
- package/dist/types/services/getOrder.d.ts +4 -4
- package/dist/types/services/getOrder.d.ts.map +1 -1
- package/dist/types/services/getOrderbook.d.ts +4 -4
- package/dist/types/services/getOrderbook.d.ts.map +1 -1
- 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 +27 -0
- package/dist/types/services/getPositions.d.ts.map +1 -0
- package/dist/types/services/getPrices.d.ts +5 -5
- package/dist/types/services/getPrices.d.ts.map +1 -1
- package/dist/types/services/getProviders.d.ts +20 -0
- package/dist/types/services/getProviders.d.ts.map +1 -0
- package/dist/types/signers/lighter/LighterKeyStore.d.ts +29 -0
- package/dist/types/signers/lighter/LighterKeyStore.d.ts.map +1 -0
- package/dist/types/signers/lighter/LighterReadOnlyTokenManager.d.ts +174 -0
- package/dist/types/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/types/signers/lighter/LighterSigner.d.ts +88 -0
- package/dist/types/signers/lighter/LighterSigner.d.ts.map +1 -0
- package/dist/types/signers/lighter/index.d.ts +9 -0
- package/dist/types/signers/lighter/index.d.ts.map +1 -0
- package/dist/types/signers/lighter/wasmLoader.d.ts +71 -0
- package/dist/types/signers/lighter/wasmLoader.d.ts.map +1 -0
- package/dist/types/utils/accountSummary.d.ts +13 -0
- package/dist/types/utils/accountSummary.d.ts.map +1 -0
- package/dist/types/utils/assertNever.d.ts +19 -0
- package/dist/types/utils/assertNever.d.ts.map +1 -0
- package/dist/types/utils/calculations.d.ts +109 -0
- package/dist/types/utils/calculations.d.ts.map +1 -0
- package/dist/types/utils/hyperliquid/index.d.ts +3 -0
- package/dist/types/utils/hyperliquid/index.d.ts.map +1 -0
- package/dist/types/utils/hyperliquid/liquidation.d.ts +46 -0
- package/dist/types/utils/hyperliquid/liquidation.d.ts.map +1 -0
- package/dist/types/utils/hyperliquid/orderFormatting.d.ts +44 -0
- package/dist/types/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
- package/dist/types/utils/orderClassification.d.ts +29 -0
- package/dist/types/utils/orderClassification.d.ts.map +1 -0
- package/dist/types/utils/orderMath.d.ts +40 -0
- package/dist/types/utils/orderMath.d.ts.map +1 -0
- package/dist/types/utils/parse.d.ts +18 -0
- package/dist/types/utils/parse.d.ts.map +1 -0
- package/dist/types/utils/positionMath.d.ts +78 -0
- package/dist/types/utils/positionMath.d.ts.map +1 -0
- package/dist/types/utils/request.d.ts +1 -2
- package/dist/types/utils/request.d.ts.map +1 -1
- package/dist/types/utils/signTypedData.d.ts +8 -10
- package/dist/types/utils/signTypedData.d.ts.map +1 -1
- package/dist/types/utils/units.d.ts +20 -0
- package/dist/types/utils/units.d.ts.map +1 -0
- package/dist/types/utils/validation.d.ts +15 -0
- package/dist/types/utils/validation.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +16 -8
- package/src/agent/AgentManager.ts +21 -19
- package/src/agent/storage.ts +1 -1
- package/src/client/PerpsClient.ts +1221 -396
- package/src/client/createPerpsClient.ts +39 -54
- package/src/client/projectAccountConfigSettings.ts +39 -0
- package/src/client/types.ts +130 -52
- package/src/errors/PerpsError.ts +3 -22
- package/src/errors/constants.ts +0 -11
- package/src/index.ts +115 -47
- package/src/providers/hyperliquid/accountConfig.ts +92 -0
- package/src/providers/lighter/accountConfig.ts +103 -0
- package/src/realtime/PerpsWsClient.ts +67 -32
- package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +199 -64
- package/src/realtime/hyperliquid/types.ts +8 -10
- package/src/realtime/lighter/LighterWsProvider.ts +682 -0
- package/src/realtime/lighter/types.ts +121 -0
- package/src/services/createAction.ts +41 -0
- package/src/services/executeAction.ts +41 -0
- package/src/services/getAccount.ts +8 -8
- package/src/services/getActivity.ts +77 -0
- package/src/services/getAsset.ts +37 -0
- package/src/services/getAssets.ts +32 -0
- package/src/services/{getHistory.ts → getFills.ts} +23 -17
- package/src/services/getOhlcv.ts +14 -11
- package/src/services/getOrder.ts +11 -8
- package/src/services/getOrderbook.ts +11 -8
- package/src/services/getOrders.ts +45 -0
- package/src/services/getPositions.ts +45 -0
- package/src/services/getPrices.ts +6 -6
- package/src/services/{getDexes.ts → getProviders.ts} +10 -10
- package/src/signers/lighter/LighterKeyStore.ts +74 -0
- package/src/signers/lighter/LighterReadOnlyTokenManager.ts +358 -0
- package/src/signers/lighter/LighterSigner.ts +396 -0
- package/src/signers/lighter/index.ts +36 -0
- package/src/signers/lighter/wasmLoader.ts +291 -0
- package/src/utils/accountSummary.ts +130 -0
- package/src/utils/assertNever.ts +22 -0
- package/src/utils/calculations.ts +209 -0
- package/src/utils/hyperliquid/index.ts +9 -0
- package/src/utils/hyperliquid/liquidation.ts +71 -0
- package/src/utils/hyperliquid/orderFormatting.ts +96 -0
- package/src/utils/orderClassification.ts +64 -0
- package/src/utils/orderMath.ts +130 -0
- package/src/utils/parse.ts +28 -0
- package/src/utils/positionMath.ts +107 -0
- package/src/utils/request.ts +26 -7
- package/src/utils/signTypedData.ts +19 -15
- package/src/utils/units.ts +32 -0
- package/src/utils/validation.ts +35 -0
- package/src/version.ts +1 -1
- package/wasm/lighter-signer.wasm +0 -0
- package/wasm/wasm_exec.js +575 -0
- package/dist/cjs/dex/hyperliquid.d.ts +0 -3
- package/dist/cjs/dex/hyperliquid.d.ts.map +0 -1
- package/dist/cjs/dex/hyperliquid.js +0 -21
- package/dist/cjs/dex/hyperliquid.js.map +0 -1
- package/dist/cjs/dex/registry.d.ts +0 -3
- package/dist/cjs/dex/registry.d.ts.map +0 -1
- package/dist/cjs/dex/registry.js +0 -16
- package/dist/cjs/dex/registry.js.map +0 -1
- package/dist/cjs/dex/types.d.ts +0 -13
- package/dist/cjs/dex/types.d.ts.map +0 -1
- package/dist/cjs/errors/AgentError.d.ts +0 -10
- package/dist/cjs/errors/AgentError.d.ts.map +0 -1
- package/dist/cjs/errors/AgentError.js +0 -23
- package/dist/cjs/errors/AgentError.js.map +0 -1
- package/dist/cjs/errors/HTTPError.d.ts +0 -11
- package/dist/cjs/errors/HTTPError.d.ts.map +0 -1
- package/dist/cjs/errors/HTTPError.js +0 -62
- package/dist/cjs/errors/HTTPError.js.map +0 -1
- package/dist/cjs/errors/PerpsSDKError.d.ts +0 -9
- package/dist/cjs/errors/PerpsSDKError.d.ts.map +0 -1
- package/dist/cjs/errors/PerpsSDKError.js +0 -36
- package/dist/cjs/errors/PerpsSDKError.js.map +0 -1
- package/dist/cjs/errors/ServerError.d.ts +0 -10
- package/dist/cjs/errors/ServerError.d.ts.map +0 -1
- package/dist/cjs/errors/ServerError.js +0 -24
- package/dist/cjs/errors/ServerError.js.map +0 -1
- package/dist/cjs/errors/ValidationError.d.ts +0 -9
- package/dist/cjs/errors/ValidationError.d.ts.map +0 -1
- package/dist/cjs/errors/ValidationError.js +0 -23
- package/dist/cjs/errors/ValidationError.js.map +0 -1
- package/dist/cjs/errors/utils/rootCause.d.ts +0 -6
- package/dist/cjs/errors/utils/rootCause.d.ts.map +0 -1
- package/dist/cjs/errors/utils/rootCause.js +0 -41
- package/dist/cjs/errors/utils/rootCause.js.map +0 -1
- package/dist/cjs/services/cancelOrder.d.ts +0 -10
- package/dist/cjs/services/cancelOrder.d.ts.map +0 -1
- package/dist/cjs/services/cancelOrder.js +0 -16
- package/dist/cjs/services/cancelOrder.js.map +0 -1
- package/dist/cjs/services/createAuthorization.d.ts +0 -10
- package/dist/cjs/services/createAuthorization.d.ts.map +0 -1
- package/dist/cjs/services/createAuthorization.js +0 -16
- package/dist/cjs/services/createAuthorization.js.map +0 -1
- package/dist/cjs/services/createOrder.d.ts +0 -21
- package/dist/cjs/services/createOrder.d.ts.map +0 -1
- package/dist/cjs/services/createOrder.js +0 -27
- package/dist/cjs/services/createOrder.js.map +0 -1
- package/dist/cjs/services/createWithdrawal.d.ts +0 -9
- package/dist/cjs/services/createWithdrawal.d.ts.map +0 -1
- package/dist/cjs/services/createWithdrawal.js +0 -15
- package/dist/cjs/services/createWithdrawal.js.map +0 -1
- package/dist/cjs/services/getDexes.d.ts +0 -4
- package/dist/cjs/services/getDexes.d.ts.map +0 -1
- package/dist/cjs/services/getDexes.js.map +0 -1
- package/dist/cjs/services/getHistory.d.ts +0 -10
- package/dist/cjs/services/getHistory.d.ts.map +0 -1
- package/dist/cjs/services/getHistory.js.map +0 -1
- package/dist/cjs/services/getMarket.d.ts +0 -8
- package/dist/cjs/services/getMarket.d.ts.map +0 -1
- package/dist/cjs/services/getMarket.js.map +0 -1
- package/dist/cjs/services/getMarkets.d.ts +0 -7
- package/dist/cjs/services/getMarkets.d.ts.map +0 -1
- package/dist/cjs/services/getMarkets.js.map +0 -1
- package/dist/cjs/services/submitAuthorization.d.ts +0 -10
- package/dist/cjs/services/submitAuthorization.d.ts.map +0 -1
- package/dist/cjs/services/submitAuthorization.js.map +0 -1
- package/dist/cjs/services/submitOrder.d.ts +0 -10
- package/dist/cjs/services/submitOrder.d.ts.map +0 -1
- package/dist/cjs/services/submitOrder.js.map +0 -1
- package/dist/cjs/services/submitWithdrawal.d.ts +0 -9
- package/dist/cjs/services/submitWithdrawal.d.ts.map +0 -1
- package/dist/cjs/services/submitWithdrawal.js +0 -15
- package/dist/cjs/services/submitWithdrawal.js.map +0 -1
- package/dist/esm/dex/hyperliquid.d.ts +0 -3
- package/dist/esm/dex/hyperliquid.d.ts.map +0 -1
- package/dist/esm/dex/hyperliquid.js +0 -19
- package/dist/esm/dex/hyperliquid.js.map +0 -1
- package/dist/esm/dex/registry.d.ts +0 -3
- package/dist/esm/dex/registry.d.ts.map +0 -1
- package/dist/esm/dex/registry.js +0 -13
- package/dist/esm/dex/registry.js.map +0 -1
- package/dist/esm/dex/types.d.ts +0 -15
- package/dist/esm/dex/types.d.ts.map +0 -1
- package/dist/esm/dex/types.js +0 -2
- package/dist/esm/dex/types.js.map +0 -1
- package/dist/esm/errors/AgentError.d.ts +0 -25
- package/dist/esm/errors/AgentError.d.ts.map +0 -1
- package/dist/esm/errors/AgentError.js +0 -35
- package/dist/esm/errors/AgentError.js.map +0 -1
- package/dist/esm/errors/HTTPError.d.ts +0 -11
- package/dist/esm/errors/HTTPError.d.ts.map +0 -1
- package/dist/esm/errors/HTTPError.js +0 -61
- package/dist/esm/errors/HTTPError.js.map +0 -1
- package/dist/esm/errors/PerpsSDKError.d.ts +0 -40
- package/dist/esm/errors/PerpsSDKError.d.ts.map +0 -1
- package/dist/esm/errors/PerpsSDKError.js +0 -67
- package/dist/esm/errors/PerpsSDKError.js.map +0 -1
- package/dist/esm/errors/ServerError.d.ts +0 -23
- package/dist/esm/errors/ServerError.d.ts.map +0 -1
- package/dist/esm/errors/ServerError.js +0 -34
- package/dist/esm/errors/ServerError.js.map +0 -1
- package/dist/esm/errors/ValidationError.d.ts +0 -23
- package/dist/esm/errors/ValidationError.d.ts.map +0 -1
- package/dist/esm/errors/ValidationError.js +0 -34
- package/dist/esm/errors/ValidationError.js.map +0 -1
- package/dist/esm/errors/utils/rootCause.d.ts +0 -71
- package/dist/esm/errors/utils/rootCause.d.ts.map +0 -1
- package/dist/esm/errors/utils/rootCause.js +0 -99
- package/dist/esm/errors/utils/rootCause.js.map +0 -1
- package/dist/esm/services/cancelOrder.d.ts +0 -51
- package/dist/esm/services/cancelOrder.d.ts.map +0 -1
- package/dist/esm/services/cancelOrder.js +0 -50
- package/dist/esm/services/cancelOrder.js.map +0 -1
- package/dist/esm/services/createAuthorization.d.ts +0 -51
- package/dist/esm/services/createAuthorization.d.ts.map +0 -1
- package/dist/esm/services/createAuthorization.js +0 -50
- package/dist/esm/services/createAuthorization.js.map +0 -1
- package/dist/esm/services/createOrder.d.ts +0 -74
- package/dist/esm/services/createOrder.d.ts.map +0 -1
- package/dist/esm/services/createOrder.js +0 -62
- package/dist/esm/services/createOrder.js.map +0 -1
- package/dist/esm/services/createWithdrawal.d.ts +0 -49
- package/dist/esm/services/createWithdrawal.d.ts.map +0 -1
- package/dist/esm/services/createWithdrawal.js +0 -49
- package/dist/esm/services/createWithdrawal.js.map +0 -1
- package/dist/esm/services/getDexes.d.ts +0 -20
- package/dist/esm/services/getDexes.d.ts.map +0 -1
- package/dist/esm/services/getDexes.js +0 -21
- package/dist/esm/services/getDexes.js.map +0 -1
- package/dist/esm/services/getHistory.d.ts.map +0 -1
- package/dist/esm/services/getHistory.js.map +0 -1
- package/dist/esm/services/getMarket.d.ts +0 -27
- package/dist/esm/services/getMarket.d.ts.map +0 -1
- package/dist/esm/services/getMarket.js +0 -25
- package/dist/esm/services/getMarket.js.map +0 -1
- package/dist/esm/services/getMarkets.d.ts +0 -25
- package/dist/esm/services/getMarkets.d.ts.map +0 -1
- package/dist/esm/services/getMarkets.js +0 -23
- package/dist/esm/services/getMarkets.js.map +0 -1
- package/dist/esm/services/submitAuthorization.d.ts +0 -42
- package/dist/esm/services/submitAuthorization.d.ts.map +0 -1
- package/dist/esm/services/submitAuthorization.js +0 -41
- package/dist/esm/services/submitAuthorization.js.map +0 -1
- package/dist/esm/services/submitOrder.d.ts +0 -44
- package/dist/esm/services/submitOrder.d.ts.map +0 -1
- package/dist/esm/services/submitOrder.js +0 -43
- package/dist/esm/services/submitOrder.js.map +0 -1
- package/dist/esm/services/submitWithdrawal.d.ts +0 -40
- package/dist/esm/services/submitWithdrawal.d.ts.map +0 -1
- package/dist/esm/services/submitWithdrawal.js +0 -40
- package/dist/esm/services/submitWithdrawal.js.map +0 -1
- package/dist/types/dex/hyperliquid.d.ts +0 -3
- package/dist/types/dex/hyperliquid.d.ts.map +0 -1
- package/dist/types/dex/registry.d.ts +0 -3
- package/dist/types/dex/registry.d.ts.map +0 -1
- package/dist/types/dex/types.d.ts +0 -15
- package/dist/types/dex/types.d.ts.map +0 -1
- package/dist/types/errors/AgentError.d.ts +0 -25
- package/dist/types/errors/AgentError.d.ts.map +0 -1
- package/dist/types/errors/HTTPError.d.ts +0 -11
- package/dist/types/errors/HTTPError.d.ts.map +0 -1
- package/dist/types/errors/PerpsSDKError.d.ts +0 -40
- package/dist/types/errors/PerpsSDKError.d.ts.map +0 -1
- package/dist/types/errors/ServerError.d.ts +0 -23
- package/dist/types/errors/ServerError.d.ts.map +0 -1
- package/dist/types/errors/ValidationError.d.ts +0 -23
- package/dist/types/errors/ValidationError.d.ts.map +0 -1
- package/dist/types/errors/utils/rootCause.d.ts +0 -71
- package/dist/types/errors/utils/rootCause.d.ts.map +0 -1
- package/dist/types/services/cancelOrder.d.ts +0 -51
- package/dist/types/services/cancelOrder.d.ts.map +0 -1
- package/dist/types/services/createAuthorization.d.ts +0 -51
- package/dist/types/services/createAuthorization.d.ts.map +0 -1
- package/dist/types/services/createOrder.d.ts +0 -74
- package/dist/types/services/createOrder.d.ts.map +0 -1
- package/dist/types/services/createWithdrawal.d.ts +0 -49
- package/dist/types/services/createWithdrawal.d.ts.map +0 -1
- package/dist/types/services/getDexes.d.ts +0 -20
- package/dist/types/services/getDexes.d.ts.map +0 -1
- package/dist/types/services/getHistory.d.ts.map +0 -1
- package/dist/types/services/getMarket.d.ts +0 -27
- package/dist/types/services/getMarket.d.ts.map +0 -1
- package/dist/types/services/getMarkets.d.ts +0 -25
- package/dist/types/services/getMarkets.d.ts.map +0 -1
- package/dist/types/services/submitAuthorization.d.ts +0 -42
- package/dist/types/services/submitAuthorization.d.ts.map +0 -1
- package/dist/types/services/submitOrder.d.ts +0 -44
- package/dist/types/services/submitOrder.d.ts.map +0 -1
- package/dist/types/services/submitWithdrawal.d.ts +0 -40
- package/dist/types/services/submitWithdrawal.d.ts.map +0 -1
- package/src/dex/hyperliquid.ts +0 -20
- package/src/dex/registry.ts +0 -15
- package/src/dex/types.ts +0 -16
- package/src/errors/AgentError.ts +0 -43
- package/src/errors/HTTPError.ts +0 -72
- package/src/errors/PerpsSDKError.ts +0 -79
- package/src/errors/ServerError.ts +0 -41
- package/src/errors/ValidationError.ts +0 -38
- package/src/errors/utils/rootCause.ts +0 -112
- package/src/services/cancelOrder.ts +0 -75
- package/src/services/createAuthorization.ts +0 -79
- package/src/services/createOrder.ts +0 -116
- package/src/services/createWithdrawal.ts +0 -76
- package/src/services/getMarket.ts +0 -41
- package/src/services/getMarkets.ts +0 -37
- package/src/services/submitAuthorization.ts +0 -70
- package/src/services/submitOrder.ts +0 -72
- package/src/services/submitWithdrawal.ts +0 -67
- /package/dist/cjs/{dex → realtime/lighter}/types.js +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperliquid-specific liquidation price calculation.
|
|
3
|
+
*
|
|
4
|
+
* Uses the exact formula from Hyperliquid docs:
|
|
5
|
+
* https://hyperliquid.gitbook.io/hyperliquid-docs/trading/liquidations
|
|
6
|
+
*
|
|
7
|
+
* liq_price = price - side * margin_available / position_size / (1 - l * side)
|
|
8
|
+
*
|
|
9
|
+
* Where:
|
|
10
|
+
* - l = 1 / (2 * maxLeverage) (maintenance margin fraction)
|
|
11
|
+
* - side = 1 (long) or -1 (short)
|
|
12
|
+
* - margin_available = isolated_margin - maintenance_margin_required
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Calculate the maintenance margin fraction for a Hyperliquid asset.
|
|
17
|
+
*
|
|
18
|
+
* Maintenance margin is half of the initial margin at max leverage.
|
|
19
|
+
*
|
|
20
|
+
* @param maxLeverage - Maximum leverage for the asset (e.g., 50 for BTC)
|
|
21
|
+
* @returns Maintenance margin fraction (e.g., 0.01 for 50x max leverage),
|
|
22
|
+
* or undefined if maxLeverage is zero
|
|
23
|
+
*/
|
|
24
|
+
export function calculateMaintenanceMarginRate(
|
|
25
|
+
maxLeverage: number
|
|
26
|
+
): number | undefined {
|
|
27
|
+
if (maxLeverage === 0) {
|
|
28
|
+
return undefined
|
|
29
|
+
}
|
|
30
|
+
return 1 / (2 * maxLeverage)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Calculate liquidation price using the exact Hyperliquid formula.
|
|
35
|
+
*
|
|
36
|
+
* For isolated margin, new position prediction. For existing positions,
|
|
37
|
+
* prefer Position.liquidationPrice from the API.
|
|
38
|
+
*
|
|
39
|
+
* Formula derivation (isolated margin, single position):
|
|
40
|
+
* margin_per_unit = entryPrice / leverage
|
|
41
|
+
* maintenance_per_unit = entryPrice * mmr
|
|
42
|
+
* margin_available = margin_per_unit - maintenance_per_unit
|
|
43
|
+
* liq_price = entryPrice - side * margin_available / (1 - mmr * side)
|
|
44
|
+
*
|
|
45
|
+
* Where mmr = 1 / (2 * maxLeverage).
|
|
46
|
+
*
|
|
47
|
+
* @param entryPrice - Position entry price
|
|
48
|
+
* @param leverage - User-selected leverage (e.g., 10)
|
|
49
|
+
* @param isLong - True if long position, false if short
|
|
50
|
+
* @param maxLeverage - Asset's maximum leverage (e.g., 50 for BTC). Determines
|
|
51
|
+
* the maintenance margin rate: mmr = 1 / (2 * maxLeverage)
|
|
52
|
+
* @returns Estimated liquidation price, or undefined if inputs are invalid
|
|
53
|
+
*/
|
|
54
|
+
export function calculateLiquidationPrice(
|
|
55
|
+
entryPrice: number,
|
|
56
|
+
leverage: number,
|
|
57
|
+
isLong: boolean,
|
|
58
|
+
maxLeverage: number
|
|
59
|
+
): number | undefined {
|
|
60
|
+
if (leverage === 0 || maxLeverage === 0) {
|
|
61
|
+
return undefined
|
|
62
|
+
}
|
|
63
|
+
const mmr = 1 / (2 * maxLeverage)
|
|
64
|
+
const side = isLong ? 1 : -1
|
|
65
|
+
const denominator = 1 - mmr * side
|
|
66
|
+
if (denominator === 0) {
|
|
67
|
+
return undefined
|
|
68
|
+
}
|
|
69
|
+
const marginAvailable = entryPrice * (1 / leverage - mmr)
|
|
70
|
+
return entryPrice - (side * marginAvailable) / denominator
|
|
71
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hyperliquid order size and price formatting for exchange submission.
|
|
3
|
+
*
|
|
4
|
+
* These encode Hyperliquid-specific order submission rules. Getting size/price
|
|
5
|
+
* formatting wrong causes rejected orders.
|
|
6
|
+
*
|
|
7
|
+
* @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/tick-and-lot-size
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { stringToFloat } from '../parse.js'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Max combined decimals (size + price) enforced by Hyperliquid.
|
|
14
|
+
* Perps: 6, Spot: 8
|
|
15
|
+
*/
|
|
16
|
+
const MAX_DECIMALS_PERPS = 6
|
|
17
|
+
const MAX_DECIMALS_SPOT = 8
|
|
18
|
+
|
|
19
|
+
function getMaxDecimals(market?: string): number {
|
|
20
|
+
return market === 'spot' ? MAX_DECIMALS_SPOT : MAX_DECIMALS_PERPS
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Derive the maximum number of price decimal places for a given asset.
|
|
25
|
+
*
|
|
26
|
+
* @param szDecimals - The asset's szDecimals (from market meta)
|
|
27
|
+
* @param market - Optional market type (e.g. 'spot'). Defaults to perps rules.
|
|
28
|
+
* @returns Maximum allowed price decimals
|
|
29
|
+
*/
|
|
30
|
+
export function getMaxPriceDecimals(
|
|
31
|
+
szDecimals: number,
|
|
32
|
+
market?: string
|
|
33
|
+
): number {
|
|
34
|
+
return Math.max(0, getMaxDecimals(market) - szDecimals)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Format a size value for order submission.
|
|
39
|
+
*
|
|
40
|
+
* Per Hyperliquid docs (tick-and-lot-size):
|
|
41
|
+
* - Size must be rounded to the asset's szDecimals
|
|
42
|
+
* - Trailing zeroes must be removed for signing
|
|
43
|
+
*
|
|
44
|
+
* @param size - The size value to format
|
|
45
|
+
* @param szDecimals - Number of decimal places allowed for this asset (from meta)
|
|
46
|
+
* @returns Size as a string with correct precision, no trailing zeros
|
|
47
|
+
*/
|
|
48
|
+
export function formatOrderSize(size: number, szDecimals: number): string {
|
|
49
|
+
// Truncate (don't round up) to avoid exceeding available balance
|
|
50
|
+
const multiplier = 10 ** szDecimals
|
|
51
|
+
const truncated = Math.floor(size * multiplier) / multiplier
|
|
52
|
+
// Remove trailing zeros by round-tripping through stringToFloat
|
|
53
|
+
return stringToFloat(truncated.toFixed(szDecimals)).toString()
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Format a price value for order submission.
|
|
58
|
+
*
|
|
59
|
+
* Per Hyperliquid docs (tick-and-lot-size):
|
|
60
|
+
* - Maximum 5 significant figures
|
|
61
|
+
* - Max decimals = MAX_DECIMALS - szDecimals (6 for perps, 8 for spot)
|
|
62
|
+
* - Integer prices always allowed regardless of significant figures
|
|
63
|
+
* - Trailing zeroes must be removed for signing
|
|
64
|
+
*
|
|
65
|
+
* @param price - The price value to format
|
|
66
|
+
* @param szDecimals - The asset's szDecimals (affects max price decimals)
|
|
67
|
+
* @param market - Optional market type (e.g. 'spot'). Defaults to perps rules.
|
|
68
|
+
* @returns Price as a string with correct precision, no trailing zeros
|
|
69
|
+
*/
|
|
70
|
+
export function formatOrderPrice(
|
|
71
|
+
price: number,
|
|
72
|
+
szDecimals: number,
|
|
73
|
+
market?: string
|
|
74
|
+
): string {
|
|
75
|
+
const maxPriceDecimals = getMaxPriceDecimals(szDecimals, market)
|
|
76
|
+
|
|
77
|
+
// Round to max allowed decimals
|
|
78
|
+
let rounded = stringToFloat(price.toFixed(maxPriceDecimals))
|
|
79
|
+
|
|
80
|
+
// Integer prices are always allowed regardless of significant figures
|
|
81
|
+
if (Number.isInteger(rounded)) {
|
|
82
|
+
return rounded.toString()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Count significant figures (digits excluding leading zeros)
|
|
86
|
+
const absStr = Math.abs(rounded).toString().replace('.', '')
|
|
87
|
+
const sigFigs = absStr.replace(/^0+/, '').length
|
|
88
|
+
|
|
89
|
+
// If more than 5 significant figures, round to 5
|
|
90
|
+
if (sigFigs > 5) {
|
|
91
|
+
rounded = stringToFloat(rounded.toPrecision(5))
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Return without trailing zeros
|
|
95
|
+
return rounded.toString()
|
|
96
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order classification utilities.
|
|
3
|
+
*
|
|
4
|
+
* Type guards and classifiers that operate on SDK types to determine
|
|
5
|
+
* order categories (TP/SL, open/close). These use the OrderType enum
|
|
6
|
+
* for classification — no string matching.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { OpenOrder } from '@lifi/perps-types'
|
|
10
|
+
import { FillClassification, OrderSide, OrderType } from '@lifi/perps-types'
|
|
11
|
+
import { stringToFloat } from './parse.js'
|
|
12
|
+
|
|
13
|
+
export { FillClassification }
|
|
14
|
+
|
|
15
|
+
const TP_TYPES = new Set<OrderType>([
|
|
16
|
+
OrderType.TAKE_PROFIT_MARKET,
|
|
17
|
+
OrderType.TAKE_PROFIT_LIMIT,
|
|
18
|
+
])
|
|
19
|
+
|
|
20
|
+
const SL_TYPES = new Set<OrderType>([
|
|
21
|
+
OrderType.STOP_MARKET,
|
|
22
|
+
OrderType.STOP_LIMIT,
|
|
23
|
+
])
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Check if an open order is a Take Profit trigger order.
|
|
27
|
+
*/
|
|
28
|
+
export function isTakeProfitOrder(order: Pick<OpenOrder, 'type'>): boolean {
|
|
29
|
+
return TP_TYPES.has(order.type)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Check if an open order is a Stop Loss trigger order.
|
|
34
|
+
*/
|
|
35
|
+
export function isStopLossOrder(order: Pick<OpenOrder, 'type'>): boolean {
|
|
36
|
+
return SL_TYPES.has(order.type)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Check if an open order is a TP or SL trigger order.
|
|
41
|
+
*/
|
|
42
|
+
export function isTpSlOrder(order: Pick<OpenOrder, 'type'>): boolean {
|
|
43
|
+
return TP_TYPES.has(order.type) || SL_TYPES.has(order.type)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Classify a fill as open or close based on realizedPnl.
|
|
48
|
+
* @deprecated Use `Fill.classification` instead — it uses startPosition
|
|
49
|
+
* for accurate open/increase/reduce/close/reverse classification.
|
|
50
|
+
*/
|
|
51
|
+
export function classifyFill(
|
|
52
|
+
side: OrderSide,
|
|
53
|
+
realizedPnl: string | null | undefined
|
|
54
|
+
): FillClassification {
|
|
55
|
+
const isClose = realizedPnl != null && stringToFloat(realizedPnl) !== 0
|
|
56
|
+
if (side === OrderSide.BUY) {
|
|
57
|
+
return isClose
|
|
58
|
+
? FillClassification.CLOSED_SHORT
|
|
59
|
+
: FillClassification.OPENED_LONG
|
|
60
|
+
}
|
|
61
|
+
return isClose
|
|
62
|
+
? FillClassification.CLOSED_LONG
|
|
63
|
+
: FillClassification.OPENED_SHORT
|
|
64
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type OpenOrder,
|
|
3
|
+
OrderSide,
|
|
4
|
+
type Position,
|
|
5
|
+
PositionSide,
|
|
6
|
+
type TriggerOrder,
|
|
7
|
+
} from '@lifi/perps-types'
|
|
8
|
+
import { realizedPnlOnClose } from './positionMath.js'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Pick the matching open position for an order's asset, if any.
|
|
12
|
+
*
|
|
13
|
+
* @param assetId - The order's `asset.assetId`.
|
|
14
|
+
* @param positions - Open positions list (any symbol).
|
|
15
|
+
*/
|
|
16
|
+
export function findMatchingPosition(
|
|
17
|
+
assetId: string,
|
|
18
|
+
positions: readonly Position[]
|
|
19
|
+
): Position | undefined {
|
|
20
|
+
return positions.find((p) => p.asset.assetId === assetId)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Resolve the close-size against a position, applying the spec's cap rules:
|
|
25
|
+
* - `orderSize === 0` is the Hyperliquid convention for "close entire
|
|
26
|
+
* position" → close the full position size.
|
|
27
|
+
* - Otherwise cap at the absolute position size; an order larger than the
|
|
28
|
+
* position can only close what's open.
|
|
29
|
+
*
|
|
30
|
+
* Inputs are non-negative magnitudes.
|
|
31
|
+
*/
|
|
32
|
+
export function resolveCloseSize(
|
|
33
|
+
orderSize: number,
|
|
34
|
+
positionSize: number
|
|
35
|
+
): number {
|
|
36
|
+
if (orderSize === 0) {
|
|
37
|
+
return positionSize
|
|
38
|
+
}
|
|
39
|
+
return Math.min(orderSize, positionSize)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Expected rPnL for a resting limit order against a matching position.
|
|
44
|
+
*
|
|
45
|
+
* Reducing requires opposite sides (long position + SELL, short position +
|
|
46
|
+
* BUY). Same-side orders add to the position and have no rPnL → `null`.
|
|
47
|
+
*
|
|
48
|
+
* @returns Realised PnL if the order would reduce the position, otherwise
|
|
49
|
+
* `null`.
|
|
50
|
+
*/
|
|
51
|
+
export function expectedRealizedPnlForOpenOrder(
|
|
52
|
+
order: OpenOrder,
|
|
53
|
+
position: Position | undefined
|
|
54
|
+
): number | null {
|
|
55
|
+
if (!position) {
|
|
56
|
+
return null
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const isLong = position.side === PositionSide.LONG
|
|
60
|
+
const reducesPosition =
|
|
61
|
+
(isLong && order.side === OrderSide.SELL) ||
|
|
62
|
+
(!isLong && order.side === OrderSide.BUY)
|
|
63
|
+
if (!reducesPosition) {
|
|
64
|
+
return null
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const limitPrice = Number.parseFloat(order.price)
|
|
68
|
+
const entryPrice = Number.parseFloat(position.entryPrice)
|
|
69
|
+
const orderSize = Math.abs(Number.parseFloat(order.size))
|
|
70
|
+
const positionSize = Math.abs(Number.parseFloat(position.size))
|
|
71
|
+
if (
|
|
72
|
+
!Number.isFinite(limitPrice) ||
|
|
73
|
+
!Number.isFinite(entryPrice) ||
|
|
74
|
+
!Number.isFinite(orderSize) ||
|
|
75
|
+
!Number.isFinite(positionSize) ||
|
|
76
|
+
positionSize <= 0
|
|
77
|
+
) {
|
|
78
|
+
return null
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const closeSize = resolveCloseSize(orderSize, positionSize)
|
|
82
|
+
return realizedPnlOnClose({
|
|
83
|
+
entryPrice,
|
|
84
|
+
closePrice: limitPrice,
|
|
85
|
+
closeSize,
|
|
86
|
+
isLong,
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Expected rPnL for a TP/SL trigger order against a matching position.
|
|
92
|
+
*
|
|
93
|
+
* A trigger order is by construction a closing leg — its direction is the
|
|
94
|
+
* opposite of the position's. With no matching position there is nothing to
|
|
95
|
+
* close, so rPnL is `null`. The trigger price (always present on the SDK
|
|
96
|
+
* `TriggerOrder` shape) is used as the rPnL price; the optional `limitPrice`
|
|
97
|
+
* for STOP_LIMIT / TAKE_PROFIT_LIMIT is the post-trigger limit, not the rPnL
|
|
98
|
+
* price.
|
|
99
|
+
*/
|
|
100
|
+
export function expectedRealizedPnlForTriggerOrder(
|
|
101
|
+
order: TriggerOrder,
|
|
102
|
+
position: Position | undefined
|
|
103
|
+
): number | null {
|
|
104
|
+
if (!position) {
|
|
105
|
+
return null
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const isLong = position.side === PositionSide.LONG
|
|
109
|
+
const triggerPrice = Number.parseFloat(order.triggerPrice)
|
|
110
|
+
const entryPrice = Number.parseFloat(position.entryPrice)
|
|
111
|
+
const orderSize = Math.abs(Number.parseFloat(order.size))
|
|
112
|
+
const positionSize = Math.abs(Number.parseFloat(position.size))
|
|
113
|
+
if (
|
|
114
|
+
!Number.isFinite(triggerPrice) ||
|
|
115
|
+
!Number.isFinite(entryPrice) ||
|
|
116
|
+
!Number.isFinite(orderSize) ||
|
|
117
|
+
!Number.isFinite(positionSize) ||
|
|
118
|
+
positionSize <= 0
|
|
119
|
+
) {
|
|
120
|
+
return null
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const closeSize = resolveCloseSize(orderSize, positionSize)
|
|
124
|
+
return realizedPnlOnClose({
|
|
125
|
+
entryPrice,
|
|
126
|
+
closePrice: triggerPrice,
|
|
127
|
+
closeSize,
|
|
128
|
+
isLong,
|
|
129
|
+
})
|
|
130
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Robust string-to-number parsing utilities.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Parse a string to a float, stripping common formatting artefacts.
|
|
7
|
+
*
|
|
8
|
+
* Handles:
|
|
9
|
+
* - Currency prefixes/suffixes ($, USD, etc.)
|
|
10
|
+
* - Explicit sign prefixes (+/-)
|
|
11
|
+
* - Thousands separators (commas)
|
|
12
|
+
* - Percentage suffixes (%)
|
|
13
|
+
* - Whitespace
|
|
14
|
+
*
|
|
15
|
+
* @param value - The string to parse
|
|
16
|
+
* @returns Parsed number, or NaN if the string contains no valid number
|
|
17
|
+
*/
|
|
18
|
+
export function stringToFloat(value: string): number {
|
|
19
|
+
if (!value) {
|
|
20
|
+
return 0
|
|
21
|
+
}
|
|
22
|
+
// Strip whitespace, currency symbols, thousands commas, and % suffix
|
|
23
|
+
const cleaned = value.trim().replace(/[$%]/g, '').replace(/,/g, '').trim()
|
|
24
|
+
if (!cleaned) {
|
|
25
|
+
return 0
|
|
26
|
+
}
|
|
27
|
+
return parseFloat(cleaned)
|
|
28
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure-function helpers for predicting how a perp position changes after a
|
|
3
|
+
* fill.
|
|
4
|
+
*
|
|
5
|
+
* Sign convention: long = +1, short = -1. Sizes passed to these helpers are
|
|
6
|
+
* always non-negative magnitudes; direction is carried by `isLong`.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Direction sign for a position.
|
|
11
|
+
*
|
|
12
|
+
* @param isLong - True for long positions, false for short.
|
|
13
|
+
* @returns +1 for long, -1 for short.
|
|
14
|
+
*/
|
|
15
|
+
export function directionSign(isLong: boolean): 1 | -1 {
|
|
16
|
+
return isLong ? 1 : -1
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Predicted average entry price after adding to an existing position.
|
|
21
|
+
*
|
|
22
|
+
* Weighted average of the current entry and the new fill price, weighted by
|
|
23
|
+
* the size of each leg in coin units. Both legs assumed in the same direction
|
|
24
|
+
* (this helper is for adding to, not flipping, a position).
|
|
25
|
+
*
|
|
26
|
+
* @param currentSize - Existing position size in coin units (>= 0).
|
|
27
|
+
* @param currentEntry - Existing position's average entry price.
|
|
28
|
+
* @param addSize - Size being added in coin units (>= 0).
|
|
29
|
+
* @param fillPrice - Price the new size is expected to fill at (mid for
|
|
30
|
+
* market, limitPrice for limit orders).
|
|
31
|
+
* @returns The new weighted-average entry price, or undefined if the inputs
|
|
32
|
+
* cannot produce a valid average (zero combined size, non-finite values).
|
|
33
|
+
*/
|
|
34
|
+
export function predictAverageEntryPrice(params: {
|
|
35
|
+
currentSize: number
|
|
36
|
+
currentEntry: number
|
|
37
|
+
addSize: number
|
|
38
|
+
fillPrice: number
|
|
39
|
+
}): number | undefined {
|
|
40
|
+
const { currentSize, currentEntry, addSize, fillPrice } = params
|
|
41
|
+
const totalSize = currentSize + addSize
|
|
42
|
+
if (totalSize <= 0) {
|
|
43
|
+
return undefined
|
|
44
|
+
}
|
|
45
|
+
if (!Number.isFinite(currentEntry) || !Number.isFinite(fillPrice)) {
|
|
46
|
+
return undefined
|
|
47
|
+
}
|
|
48
|
+
return (currentSize * currentEntry + addSize * fillPrice) / totalSize
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Predicted effective leverage after adding margin and notional.
|
|
53
|
+
*
|
|
54
|
+
* leverage = totalNotional / totalMargin. The caller computes notional from
|
|
55
|
+
* size and price (`calculateNotionalValue`) and supplies the additional
|
|
56
|
+
* margin the user is about to put up.
|
|
57
|
+
*
|
|
58
|
+
* @returns The new effective leverage, or undefined if total margin is
|
|
59
|
+
* non-positive.
|
|
60
|
+
*/
|
|
61
|
+
export function predictNewLeverage(params: {
|
|
62
|
+
currentNotional: number
|
|
63
|
+
currentMargin: number
|
|
64
|
+
addNotional: number
|
|
65
|
+
addMargin: number
|
|
66
|
+
}): number | undefined {
|
|
67
|
+
const { currentNotional, currentMargin, addNotional, addMargin } = params
|
|
68
|
+
const totalMargin = currentMargin + addMargin
|
|
69
|
+
if (totalMargin <= 0) {
|
|
70
|
+
return undefined
|
|
71
|
+
}
|
|
72
|
+
return (currentNotional + addNotional) / totalMargin
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Predicted unrealised PnL at the current mark price.
|
|
77
|
+
*
|
|
78
|
+
* `pnl = (markPrice - entryPrice) * size * directionSign(isLong)`
|
|
79
|
+
*
|
|
80
|
+
* @param size - Position size as a non-negative magnitude.
|
|
81
|
+
*/
|
|
82
|
+
export function predictUnrealizedPnl(params: {
|
|
83
|
+
entryPrice: number
|
|
84
|
+
markPrice: number
|
|
85
|
+
size: number
|
|
86
|
+
isLong: boolean
|
|
87
|
+
}): number {
|
|
88
|
+
const { entryPrice, markPrice, size, isLong } = params
|
|
89
|
+
return (markPrice - entryPrice) * size * directionSign(isLong)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Realised PnL on the portion of a position being closed.
|
|
94
|
+
*
|
|
95
|
+
* `rPnl = (closePrice - entryPrice) * closeSize * directionSign(isLong)`
|
|
96
|
+
*
|
|
97
|
+
* @param closeSize - Size being closed as a non-negative magnitude.
|
|
98
|
+
*/
|
|
99
|
+
export function realizedPnlOnClose(params: {
|
|
100
|
+
entryPrice: number
|
|
101
|
+
closePrice: number
|
|
102
|
+
closeSize: number
|
|
103
|
+
isLong: boolean
|
|
104
|
+
}): number {
|
|
105
|
+
const { entryPrice, closePrice, closeSize, isLong } = params
|
|
106
|
+
return (closePrice - entryPrice) * closeSize * directionSign(isLong)
|
|
107
|
+
}
|
package/src/utils/request.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import type { PerpsErrorBody } from '@lifi/perps-types'
|
|
1
2
|
import { PerpsErrorCode } from '@lifi/perps-types'
|
|
2
3
|
import type {
|
|
3
4
|
PerpsBaseConfig,
|
|
4
5
|
SDKRequestOptions,
|
|
5
6
|
} from '../client/createPerpsClient.js'
|
|
6
|
-
import { HTTPError } from '../errors/HTTPError.js'
|
|
7
7
|
import { PerpsError } from '../errors/PerpsError.js'
|
|
8
8
|
import { version } from '../version.js'
|
|
9
9
|
import { sleep } from './sleep.js'
|
|
@@ -23,8 +23,7 @@ const DEFAULT_RETRIES = 1
|
|
|
23
23
|
* @param options - Fetch options plus retries
|
|
24
24
|
* @param sdkOptions - SDK-specific options (signal, etc.)
|
|
25
25
|
* @returns Parsed JSON response
|
|
26
|
-
* @throws {
|
|
27
|
-
* @throws {PerpsError} On network or parsing errors
|
|
26
|
+
* @throws {PerpsError} On non-2xx responses or network errors
|
|
28
27
|
*/
|
|
29
28
|
export async function request<T>(
|
|
30
29
|
config: PerpsBaseConfig,
|
|
@@ -45,6 +44,10 @@ export async function request<T>(
|
|
|
45
44
|
headers['x-lifi-api-key'] = config.apiKey
|
|
46
45
|
}
|
|
47
46
|
|
|
47
|
+
if (sdkOptions?.lighterAuthToken) {
|
|
48
|
+
headers.Authorization = `Bearer ${sdkOptions.lighterAuthToken}`
|
|
49
|
+
}
|
|
50
|
+
|
|
48
51
|
// Merge signal from sdkOptions into options
|
|
49
52
|
let finalOptions: RequestInit = {
|
|
50
53
|
...options,
|
|
@@ -61,10 +64,13 @@ export async function request<T>(
|
|
|
61
64
|
const response = await fetch(url, finalOptions)
|
|
62
65
|
|
|
63
66
|
if (!response.ok) {
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
// Parse the backend's error body
|
|
68
|
+
let body: PerpsErrorBody | undefined
|
|
69
|
+
try {
|
|
70
|
+
body = await response.json()
|
|
71
|
+
} catch {}
|
|
66
72
|
|
|
67
|
-
// Retry on 5xx
|
|
73
|
+
// Retry on 5xx before throwing
|
|
68
74
|
if (retries > 0 && response.status >= 500) {
|
|
69
75
|
await sleep(500)
|
|
70
76
|
return request<T>(
|
|
@@ -75,12 +81,25 @@ export async function request<T>(
|
|
|
75
81
|
)
|
|
76
82
|
}
|
|
77
83
|
|
|
84
|
+
// Rehydrate backend error — code/message/tool come straight from the response
|
|
85
|
+
const fallbackMessage = `Request failed with status code ${response.status}`
|
|
86
|
+
if (
|
|
87
|
+
body &&
|
|
88
|
+
typeof body.code === 'number' &&
|
|
89
|
+
typeof body.message === 'string'
|
|
90
|
+
) {
|
|
91
|
+
const error = new PerpsError(body.code, body.message)
|
|
92
|
+
error.tool = body.tool ?? 'unknown'
|
|
93
|
+
throw error
|
|
94
|
+
}
|
|
95
|
+
const error = new PerpsError(PerpsErrorCode.DefaultError, fallbackMessage)
|
|
96
|
+
error.tool = 'unknown'
|
|
78
97
|
throw error
|
|
79
98
|
}
|
|
80
99
|
|
|
81
100
|
return (await response.json()) as T
|
|
82
101
|
} catch (error) {
|
|
83
|
-
if (error instanceof
|
|
102
|
+
if (error instanceof PerpsError) {
|
|
84
103
|
throw error
|
|
85
104
|
}
|
|
86
105
|
|
|
@@ -1,31 +1,35 @@
|
|
|
1
1
|
import type { Hex, PerpsTypedData } from '@lifi/perps-types'
|
|
2
|
+
import type { Account, WalletClient } from 'viem'
|
|
2
3
|
import { privateKeyToAccount } from 'viem/accounts'
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
|
-
* Sign EIP-712 typed data with a private key.
|
|
6
|
-
*
|
|
7
|
-
* @param privateKey - The private key to sign with
|
|
8
|
-
* @param typedData - The typed data to sign
|
|
9
|
-
* @returns The signature as a hex string
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* const signature = await signTypedData(agentPrivateKey, typedData)
|
|
14
|
-
* ```
|
|
6
|
+
* Sign EIP-712 typed data with a raw private key (agent keypair).
|
|
15
7
|
*/
|
|
16
8
|
export async function signTypedData(
|
|
17
9
|
privateKey: Hex,
|
|
18
10
|
typedData: PerpsTypedData
|
|
19
11
|
): Promise<Hex> {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// viem's signTypedData expects the typed data in a specific format
|
|
23
|
-
const signature = await account.signTypedData({
|
|
12
|
+
return privateKeyToAccount(privateKey).signTypedData({
|
|
24
13
|
domain: typedData.domain,
|
|
25
14
|
types: typedData.types,
|
|
26
15
|
primaryType: typedData.primaryType,
|
|
27
16
|
message: typedData.message,
|
|
28
17
|
})
|
|
18
|
+
}
|
|
29
19
|
|
|
30
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Sign EIP-712 typed data with an externally-provided WalletClient. Works
|
|
22
|
+
* with browser wallets (wagmi), private keys, mnemonics — any viem
|
|
23
|
+
* WalletClient.
|
|
24
|
+
*/
|
|
25
|
+
export async function signTypedDataWithSigner(
|
|
26
|
+
signer: WalletClient<any, any, Account>,
|
|
27
|
+
typedData: PerpsTypedData
|
|
28
|
+
): Promise<Hex> {
|
|
29
|
+
return signer.signTypedData({
|
|
30
|
+
domain: typedData.domain,
|
|
31
|
+
types: typedData.types,
|
|
32
|
+
primaryType: typedData.primaryType,
|
|
33
|
+
message: typedData.message,
|
|
34
|
+
})
|
|
31
35
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token unit conversion utilities.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { formatUnits } from 'viem'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Convert a base-unit amount (bigint string) to a human-readable decimal string.
|
|
9
|
+
*
|
|
10
|
+
* @param amount - Amount in base units (e.g. "1000000" for 1 USDC)
|
|
11
|
+
* @param decimals - Token decimals (e.g. 6 for USDC)
|
|
12
|
+
* @returns Decimal string (e.g. "1.0")
|
|
13
|
+
*/
|
|
14
|
+
export function fromBaseUnits(amount: string, decimals: number): string {
|
|
15
|
+
try {
|
|
16
|
+
return formatUnits(BigInt(amount), decimals)
|
|
17
|
+
} catch {
|
|
18
|
+
return '0'
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Convert a base-unit amount to a number.
|
|
24
|
+
*
|
|
25
|
+
* @param amount - Amount in base units
|
|
26
|
+
* @param decimals - Token decimals
|
|
27
|
+
* @returns Numeric value, or 0 if parsing fails
|
|
28
|
+
*/
|
|
29
|
+
export function fromBaseUnitsNumber(amount: string, decimals: number): number {
|
|
30
|
+
const value = Number(fromBaseUnits(amount, decimals))
|
|
31
|
+
return Number.isFinite(value) ? value : 0
|
|
32
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Order validation utilities.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Validate margin input against available balance and exchange minimums.
|
|
7
|
+
*
|
|
8
|
+
* @param margin - Margin amount in USD
|
|
9
|
+
* @param _leverage - Position leverage (reserved for future use)
|
|
10
|
+
* @param availableBalance - Available balance, or null if unknown
|
|
11
|
+
* @param _feeRate - Fee rate as decimal, or null if unknown (reserved for future use)
|
|
12
|
+
* @param minMarginUsd - Minimum margin requirement in USD (exchange-specific)
|
|
13
|
+
* @returns Error code: 'insufficient' | 'below-minimum' | '' (valid)
|
|
14
|
+
*/
|
|
15
|
+
export function validateMargin(
|
|
16
|
+
margin: number,
|
|
17
|
+
_leverage: number,
|
|
18
|
+
availableBalance: number | null,
|
|
19
|
+
_feeRate: number | null,
|
|
20
|
+
minMarginUsd: number
|
|
21
|
+
): string {
|
|
22
|
+
if (margin <= 0) {
|
|
23
|
+
return ''
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (availableBalance !== null && margin > availableBalance) {
|
|
27
|
+
return 'insufficient'
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (margin < minMarginUsd) {
|
|
31
|
+
return 'below-minimum'
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return ''
|
|
35
|
+
}
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/perps-sdk'
|
|
2
|
-
export const version = '0.
|
|
2
|
+
export const version = '0.2.0-alpha.0'
|