@lifi/perps-sdk 0.1.1-alpha.4 → 0.1.1-alpha.40
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 +70 -21
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +323 -175
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/client/createPerpsClient.d.ts +12 -2
- package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/createPerpsClient.js +6 -5
- package/dist/cjs/client/createPerpsClient.js.map +1 -1
- package/dist/cjs/client/types.d.ts +42 -25
- 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 +31 -32
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +58 -42
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/realtime/PerpsWsClient.d.ts +1 -0
- package/dist/cjs/realtime/PerpsWsClient.d.ts.map +1 -1
- package/dist/cjs/realtime/PerpsWsClient.js +28 -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 +162 -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/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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/utils/accountSummary.d.ts +9 -0
- package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
- package/dist/cjs/utils/accountSummary.js +81 -0
- package/dist/cjs/utils/accountSummary.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/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/request.d.ts.map +1 -1
- package/dist/cjs/utils/request.js +16 -4
- package/dist/cjs/utils/request.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.d.ts.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- 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 +70 -189
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +355 -361
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/client/createPerpsClient.d.ts +30 -7
- package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
- package/dist/esm/client/createPerpsClient.js +6 -6
- package/dist/esm/client/createPerpsClient.js.map +1 -1
- package/dist/esm/client/types.d.ts +75 -48
- 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 +31 -32
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +22 -23
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/realtime/PerpsWsClient.d.ts +1 -0
- package/dist/esm/realtime/PerpsWsClient.d.ts.map +1 -1
- package/dist/esm/realtime/PerpsWsClient.js +30 -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 +174 -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/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 +3 -3
- 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 +3 -3
- 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 +3 -3
- 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/utils/accountSummary.d.ts +13 -0
- package/dist/esm/utils/accountSummary.d.ts.map +1 -0
- package/dist/esm/utils/accountSummary.js +92 -0
- package/dist/esm/utils/accountSummary.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/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/request.d.ts +1 -2
- package/dist/esm/utils/request.d.ts.map +1 -1
- package/dist/esm/utils/request.js +20 -7
- package/dist/esm/utils/request.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.d.ts.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- 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 +70 -189
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/client/createPerpsClient.d.ts +30 -7
- package/dist/types/client/createPerpsClient.d.ts.map +1 -1
- package/dist/types/client/types.d.ts +75 -48
- 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 +31 -32
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/realtime/PerpsWsClient.d.ts +1 -0
- 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/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/utils/accountSummary.d.ts +13 -0
- package/dist/types/utils/accountSummary.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/parse.d.ts +18 -0
- package/dist/types/utils/parse.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/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/dist/types/version.d.ts.map +1 -1
- package/package.json +8 -4
- package/src/agent/AgentManager.ts +21 -19
- package/src/agent/storage.ts +1 -1
- package/src/client/PerpsClient.ts +569 -446
- package/src/client/createPerpsClient.ts +36 -11
- package/src/client/types.ts +84 -51
- package/src/errors/PerpsError.ts +3 -22
- package/src/errors/constants.ts +0 -11
- package/src/index.ts +70 -47
- package/src/realtime/PerpsWsClient.ts +47 -31
- package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +203 -64
- package/src/realtime/hyperliquid/types.ts +8 -10
- 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 +34 -0
- package/src/services/getAssets.ts +32 -0
- package/src/services/{getHistory.ts → getFills.ts} +23 -17
- package/src/services/getOhlcv.ts +5 -5
- package/src/services/getOrder.ts +5 -5
- package/src/services/getOrderbook.ts +5 -5
- 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/utils/accountSummary.ts +124 -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/parse.ts +28 -0
- package/src/utils/request.ts +22 -7
- package/src/utils/units.ts +32 -0
- package/src/utils/validation.ts +35 -0
- package/src/version.ts +1 -1
- 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/dex/types.js +0 -3
- package/dist/cjs/dex/types.js.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
|
@@ -1,438 +1,432 @@
|
|
|
1
|
-
import { PerpsErrorCode } from '@lifi/perps-types';
|
|
2
|
-
import {
|
|
1
|
+
import { ActionType, PerpsErrorCode, PerpsSigner } from '@lifi/perps-types';
|
|
2
|
+
import { localStorageAdapter } from '../agent/storage.js';
|
|
3
3
|
import { PerpsErrorMessage } from '../errors/constants.js';
|
|
4
4
|
import { PerpsError } from '../errors/PerpsError.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { createWithdrawal } from '../services/createWithdrawal.js';
|
|
9
|
-
import { submitAuthorization } from '../services/submitAuthorization.js';
|
|
10
|
-
import { submitOrder } from '../services/submitOrder.js';
|
|
11
|
-
import { submitWithdrawal } from '../services/submitWithdrawal.js';
|
|
5
|
+
import { createAction } from '../services/createAction.js';
|
|
6
|
+
import { executeAction } from '../services/executeAction.js';
|
|
7
|
+
import { getProviders } from '../services/getProviders.js';
|
|
12
8
|
import { signTypedData } from '../utils/signTypedData.js';
|
|
13
9
|
import { createPerpsClient } from './createPerpsClient.js';
|
|
14
|
-
|
|
15
|
-
* Stateful client for managing signing modes and trading operations.
|
|
16
|
-
*
|
|
17
|
-
* The PerpsClient provides two signing modes:
|
|
18
|
-
* - `USER`: User wallet signs each action (wallet popup per action)
|
|
19
|
-
* - `USER_AGENT`: SDK-generated agent signs actions (no popups after setup)
|
|
20
|
-
*
|
|
21
|
-
* In `USER_AGENT` mode, the client:
|
|
22
|
-
* - Generates an agent keypair stored in localStorage (or custom storage)
|
|
23
|
-
* - Auto-injects agent address into authorization requests
|
|
24
|
-
* - Auto-signs trading actions with the agent key
|
|
25
|
-
*
|
|
26
|
-
* @remarks
|
|
27
|
-
* The example below uses Hyperliquid. Authorization keys and parameters are DEX-specific.
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* ```ts
|
|
31
|
-
* const perps = new PerpsClient({ integrator: 'my-app' })
|
|
32
|
-
*
|
|
33
|
-
* // Set up agent signing for a user + DEX pair
|
|
34
|
-
* await perps.setSigningMode(userAddress, 'hyperliquid', 'USER_AGENT')
|
|
35
|
-
*
|
|
36
|
-
* // Check and execute required authorizations
|
|
37
|
-
* const required = await perps.getRequiredAuthorizations({
|
|
38
|
-
* dex: 'hyperliquid',
|
|
39
|
-
* address: userAddress,
|
|
40
|
-
* })
|
|
41
|
-
*
|
|
42
|
-
* // ... sign actions with user wallet ...
|
|
43
|
-
*
|
|
44
|
-
* // Place orders (agent signs automatically)
|
|
45
|
-
* const result = await perps.placeOrder({
|
|
46
|
-
* address: userAddress,
|
|
47
|
-
* dex: 'hyperliquid',
|
|
48
|
-
* symbol: 'BTC',
|
|
49
|
-
* side: 'BUY',
|
|
50
|
-
* type: 'MARKET',
|
|
51
|
-
* size: '0.1',
|
|
52
|
-
* price: '95000.00'
|
|
53
|
-
* })
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
10
|
+
import { SigningMode, } from './types.js';
|
|
56
11
|
export class PerpsClient {
|
|
57
12
|
sdkClient;
|
|
13
|
+
storage;
|
|
58
14
|
signingModes = new Map();
|
|
15
|
+
providerMetadataCache = new Map();
|
|
59
16
|
constructor(options) {
|
|
17
|
+
this.storage = options.storage ?? localStorageAdapter;
|
|
60
18
|
this.sdkClient = createPerpsClient({
|
|
61
19
|
integrator: options.integrator,
|
|
62
20
|
apiKey: options.apiKey,
|
|
63
21
|
apiUrl: options.apiUrl,
|
|
64
|
-
storage:
|
|
22
|
+
storage: this.storage,
|
|
23
|
+
providers: options.providers,
|
|
65
24
|
});
|
|
66
25
|
}
|
|
67
|
-
/**
|
|
68
|
-
* Get the underlying SDK client for use with service functions.
|
|
69
|
-
*/
|
|
70
26
|
get client() {
|
|
71
27
|
return this.sdkClient;
|
|
72
28
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
*/
|
|
76
|
-
modeKey(address, dex) {
|
|
77
|
-
return `${address.toLowerCase()}:${dex.toLowerCase()}`;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Set the signing mode for a user + DEX pair.
|
|
81
|
-
*
|
|
82
|
-
* In `USER_AGENT` mode, generates an agent keypair if one doesn't exist.
|
|
83
|
-
*
|
|
84
|
-
* @param address - User wallet address
|
|
85
|
-
* @param dex - DEX identifier
|
|
86
|
-
* @param mode - Signing mode to set
|
|
87
|
-
*/
|
|
88
|
-
async setSigningMode(address, dex, mode) {
|
|
89
|
-
const key = this.modeKey(address, dex);
|
|
90
|
-
this.signingModes.set(key, mode);
|
|
91
|
-
if (mode === 'USER_AGENT') {
|
|
92
|
-
// Generate agent keypair if not exists
|
|
93
|
-
await this.sdkClient.agentManager.getOrCreateAgent(address, dex);
|
|
94
|
-
}
|
|
29
|
+
modeKey(address, provider) {
|
|
30
|
+
return `${address.toLowerCase()}:${provider.toLowerCase()}`;
|
|
95
31
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
* Defaults to `USER` if not set.
|
|
99
|
-
*/
|
|
100
|
-
getSigningMode(address, dex) {
|
|
101
|
-
return this.signingModes.get(this.modeKey(address, dex)) ?? 'USER';
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Get the agent address for a user + DEX pair.
|
|
105
|
-
*
|
|
106
|
-
* @throws {PerpsError} If in USER mode or agent not found
|
|
107
|
-
*/
|
|
108
|
-
async getAgentAddress(address, dex) {
|
|
109
|
-
const agent = await this.sdkClient.agentManager.getAgent(address, dex);
|
|
110
|
-
return agent.address;
|
|
32
|
+
signingModeStorageKey(address, provider) {
|
|
33
|
+
return `lifi-perps-mode:${address.toLowerCase()}:${provider.toLowerCase()}`;
|
|
111
34
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
return this.sdkClient.agentManager.hasAgent(address, dex);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Remove the agent for a user + DEX pair.
|
|
120
|
-
* Also resets signing mode to USER.
|
|
121
|
-
*/
|
|
122
|
-
async removeAgent(address, dex) {
|
|
123
|
-
await this.sdkClient.agentManager.removeAgent(address, dex);
|
|
124
|
-
this.signingModes.delete(this.modeKey(address, dex));
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Build authorization payloads for signing.
|
|
128
|
-
*
|
|
129
|
-
* In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
|
|
130
|
-
* In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
|
|
131
|
-
*
|
|
132
|
-
* @param params - Authorization parameters
|
|
133
|
-
* @returns Authorization actions with typed data for signing
|
|
134
|
-
*/
|
|
135
|
-
async buildAuthorization(params) {
|
|
136
|
-
const mode = this.getSigningMode(params.address, params.dex);
|
|
137
|
-
let { signerAddress } = params;
|
|
138
|
-
if (mode === 'USER_AGENT') {
|
|
139
|
-
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
140
|
-
signerAddress = signerAddress ?? agent.address;
|
|
35
|
+
async getProviderMetadata(provider) {
|
|
36
|
+
const cached = this.providerMetadataCache.get(provider);
|
|
37
|
+
if (cached) {
|
|
38
|
+
return cached;
|
|
141
39
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Submit signed authorizations.
|
|
149
|
-
*
|
|
150
|
-
* In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
|
|
151
|
-
* In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
|
|
152
|
-
*
|
|
153
|
-
* @param params - Signed authorization parameters
|
|
154
|
-
*/
|
|
155
|
-
async submitAuthorizations(params) {
|
|
156
|
-
const mode = this.getSigningMode(params.address, params.dex);
|
|
157
|
-
let { signerAddress } = params;
|
|
158
|
-
if (mode === 'USER_AGENT') {
|
|
159
|
-
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
160
|
-
signerAddress = signerAddress ?? agent.address;
|
|
40
|
+
const { providers } = await getProviders(this.sdkClient);
|
|
41
|
+
for (const d of providers) {
|
|
42
|
+
this.providerMetadataCache.set(d.key, d);
|
|
161
43
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
* In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
|
|
168
|
-
* In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
|
|
169
|
-
*
|
|
170
|
-
* @param params - Order parameters
|
|
171
|
-
* @returns Order actions with typed data for signing
|
|
172
|
-
*/
|
|
173
|
-
async buildOrder(params) {
|
|
174
|
-
const mode = this.getSigningMode(params.address, params.dex);
|
|
175
|
-
let signerAddress;
|
|
176
|
-
if (mode === 'USER_AGENT') {
|
|
177
|
-
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
178
|
-
signerAddress = agent.address;
|
|
44
|
+
const metadata = this.providerMetadataCache.get(provider);
|
|
45
|
+
if (!metadata) {
|
|
46
|
+
const error = new PerpsError(PerpsErrorCode.SDKError, `Unsupported provider: ${provider}`);
|
|
47
|
+
error.tool = '@lifi/perps-sdk';
|
|
48
|
+
throw error;
|
|
179
49
|
}
|
|
180
|
-
return
|
|
181
|
-
dex: params.dex,
|
|
182
|
-
address: params.address,
|
|
183
|
-
signerAddress,
|
|
184
|
-
clientOrderId: params.clientOrderId,
|
|
185
|
-
symbol: params.symbol,
|
|
186
|
-
side: params.side,
|
|
187
|
-
type: params.type,
|
|
188
|
-
size: params.size,
|
|
189
|
-
price: params.price,
|
|
190
|
-
leverage: params.leverage,
|
|
191
|
-
reduceOnly: params.reduceOnly,
|
|
192
|
-
timeInForce: params.timeInForce,
|
|
193
|
-
expiresAt: params.expiresAt,
|
|
194
|
-
takeProfit: params.takeProfit,
|
|
195
|
-
stopLoss: params.stopLoss,
|
|
196
|
-
});
|
|
50
|
+
return metadata;
|
|
197
51
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
52
|
+
buildPrerequisiteInputs(prerequisites, mode, agentAddress) {
|
|
53
|
+
return prerequisites
|
|
54
|
+
.filter((p) => {
|
|
55
|
+
if (mode === SigningMode.USER) {
|
|
56
|
+
if (!p.signers.includes(PerpsSigner.USER)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (p.type === ActionType.APPROVE_AGENT) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
if (p.signers.includes(PerpsSigner.USER) &&
|
|
65
|
+
!p.signers.includes(PerpsSigner.AGENT) &&
|
|
66
|
+
p.type === ActionType.USER_SET_ABSTRACTION) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return true;
|
|
70
|
+
})
|
|
71
|
+
.map((p) => {
|
|
72
|
+
const params = {};
|
|
73
|
+
if (p.type === ActionType.APPROVE_AGENT && agentAddress) {
|
|
74
|
+
params.agentAddress = agentAddress;
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
key: p.type,
|
|
78
|
+
...(Object.keys(params).length > 0 ? { params } : {}),
|
|
79
|
+
};
|
|
219
80
|
});
|
|
220
81
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
*
|
|
226
|
-
* @param params - Order parameters
|
|
227
|
-
* @returns Order submission results
|
|
228
|
-
* @throws {PerpsError} If not in USER_AGENT mode
|
|
229
|
-
*/
|
|
230
|
-
async placeOrder(params) {
|
|
231
|
-
const mode = this.getSigningMode(params.address, params.dex);
|
|
232
|
-
if (mode !== 'USER_AGENT') {
|
|
233
|
-
throw new PerpsError(PerpsErrorCode.ValidationError, `${PerpsErrorMessage.InvalidSigningMode} placeOrder() requires USER_AGENT mode. Use createOrder() + submitOrder() for USER mode.`);
|
|
82
|
+
async resolveSignerForAction(action, address, provider) {
|
|
83
|
+
const mode = await this.loadSigningMode(address, provider);
|
|
84
|
+
if (mode !== SigningMode.USER_AGENT) {
|
|
85
|
+
return undefined;
|
|
234
86
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
type: params.type,
|
|
245
|
-
size: params.size,
|
|
246
|
-
price: params.price,
|
|
247
|
-
leverage: params.leverage,
|
|
248
|
-
reduceOnly: params.reduceOnly,
|
|
249
|
-
timeInForce: params.timeInForce,
|
|
250
|
-
expiresAt: params.expiresAt,
|
|
251
|
-
takeProfit: params.takeProfit,
|
|
252
|
-
stopLoss: params.stopLoss,
|
|
253
|
-
});
|
|
254
|
-
// 2. Sign each action with agent key
|
|
255
|
-
const signedActions = await Promise.all(actions.map(async (a) => ({
|
|
256
|
-
action: a.action,
|
|
257
|
-
typedData: a.typedData,
|
|
258
|
-
signature: await signTypedData(agent.privateKey, a.typedData),
|
|
259
|
-
})));
|
|
260
|
-
// 3. Submit
|
|
261
|
-
return submitOrder(this.sdkClient, {
|
|
262
|
-
dex: params.dex,
|
|
263
|
-
address: params.address,
|
|
264
|
-
signerAddress: agent.address,
|
|
265
|
-
actions: signedActions,
|
|
266
|
-
});
|
|
87
|
+
// Check if this action supports agent signing
|
|
88
|
+
const metadata = await this.getProviderMetadata(provider);
|
|
89
|
+
const allActions = [...metadata.prepareAccountActions, ...metadata.actions];
|
|
90
|
+
const descriptor = allActions.find((d) => d.type === action);
|
|
91
|
+
if (!descriptor?.signers.includes(PerpsSigner.AGENT)) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
const agent = await this.sdkClient.agentManager.getAgent(address, provider);
|
|
95
|
+
return agent.address;
|
|
267
96
|
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
* @returns Cancel submission results
|
|
275
|
-
* @throws {PerpsError} If not in USER_AGENT mode
|
|
276
|
-
*/
|
|
277
|
-
async cancelOrders(params) {
|
|
278
|
-
const mode = this.getSigningMode(params.address, params.dex);
|
|
279
|
-
if (mode !== 'USER_AGENT') {
|
|
280
|
-
throw new PerpsError(PerpsErrorCode.ValidationError, `${PerpsErrorMessage.InvalidSigningMode} cancelOrders() requires USER_AGENT mode. Use cancelOrder() + submitOrder() for USER mode.`);
|
|
97
|
+
requireAgentMode(address, provider, method) {
|
|
98
|
+
const mode = this.getSigningMode(address, provider);
|
|
99
|
+
if (mode !== SigningMode.USER_AGENT) {
|
|
100
|
+
const error = new PerpsError(PerpsErrorCode.SDKError, `${PerpsErrorMessage.InvalidSigningMode} ${method} requires USER_AGENT mode.`);
|
|
101
|
+
error.tool = '@lifi/perps-sdk';
|
|
102
|
+
throw error;
|
|
281
103
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
const
|
|
285
|
-
dex: params.dex,
|
|
286
|
-
address: params.address,
|
|
287
|
-
signerAddress: agent.address,
|
|
288
|
-
ids: params.ids,
|
|
289
|
-
});
|
|
290
|
-
// 2. Sign each action with agent key
|
|
104
|
+
}
|
|
105
|
+
async autoSignAndExecute(provider, address, action, actions) {
|
|
106
|
+
const agent = await this.sdkClient.agentManager.getAgent(address, provider);
|
|
291
107
|
const signedActions = await Promise.all(actions.map(async (a) => ({
|
|
292
108
|
action: a.action,
|
|
293
109
|
typedData: a.typedData,
|
|
294
110
|
signature: await signTypedData(agent.privateKey, a.typedData),
|
|
295
111
|
})));
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
address: params.address,
|
|
112
|
+
return executeAction(this.sdkClient, {
|
|
113
|
+
provider,
|
|
114
|
+
address,
|
|
300
115
|
signerAddress: agent.address,
|
|
116
|
+
action,
|
|
301
117
|
actions: signedActions,
|
|
302
118
|
});
|
|
303
119
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
*/
|
|
312
|
-
async submitSignedOrder(params) {
|
|
313
|
-
return submitOrder(this.sdkClient, params);
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Build a withdrawal payload for the user to sign.
|
|
317
|
-
*
|
|
318
|
-
* Withdrawals are user-signed only — agents cannot initiate withdrawals.
|
|
319
|
-
* No agent injection is performed regardless of signing mode.
|
|
320
|
-
*
|
|
321
|
-
* @param params - Withdrawal parameters
|
|
322
|
-
* @returns Withdrawal action with typed data for signing
|
|
323
|
-
*/
|
|
324
|
-
async buildWithdrawal(params) {
|
|
325
|
-
return createWithdrawal(this.sdkClient, {
|
|
326
|
-
dex: params.dex,
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
// Generic action helpers
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
async buildAction(action, params) {
|
|
124
|
+
const signerAddress = await this.resolveSignerForAction(action, params.address, params.provider);
|
|
125
|
+
return createAction(this.sdkClient, {
|
|
126
|
+
provider: params.provider,
|
|
327
127
|
address: params.address,
|
|
328
|
-
|
|
128
|
+
signerAddress,
|
|
129
|
+
action,
|
|
130
|
+
params: params.params,
|
|
329
131
|
});
|
|
330
132
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
const
|
|
355
|
-
const
|
|
356
|
-
|
|
133
|
+
async submitSignedAction(action, params) {
|
|
134
|
+
return executeAction(this.sdkClient, { ...params, action });
|
|
135
|
+
}
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
// Signing mode management
|
|
138
|
+
// ---------------------------------------------------------------------------
|
|
139
|
+
async setSigningMode(address, provider, mode) {
|
|
140
|
+
const key = this.modeKey(address, provider);
|
|
141
|
+
this.signingModes.set(key, mode);
|
|
142
|
+
await this.storage.set(this.signingModeStorageKey(address, provider), mode);
|
|
143
|
+
if (mode === SigningMode.USER_AGENT) {
|
|
144
|
+
await this.sdkClient.agentManager.getOrCreateAgent(address, provider);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
getSigningMode(address, provider) {
|
|
148
|
+
return (this.signingModes.get(this.modeKey(address, provider)) ??
|
|
149
|
+
SigningMode.USER_AGENT);
|
|
150
|
+
}
|
|
151
|
+
async loadSigningMode(address, provider) {
|
|
152
|
+
const key = this.modeKey(address, provider);
|
|
153
|
+
if (this.signingModes.has(key)) {
|
|
154
|
+
return this.signingModes.get(key);
|
|
155
|
+
}
|
|
156
|
+
const stored = await this.storage.get(this.signingModeStorageKey(address, provider));
|
|
157
|
+
const mode = stored === SigningMode.USER_AGENT || stored === SigningMode.USER
|
|
158
|
+
? stored
|
|
159
|
+
: SigningMode.USER_AGENT;
|
|
160
|
+
this.signingModes.set(key, mode);
|
|
161
|
+
return mode;
|
|
162
|
+
}
|
|
163
|
+
async loadAgentMode(address, provider) {
|
|
164
|
+
const mode = await this.loadSigningMode(address, provider);
|
|
165
|
+
return mode === SigningMode.USER_AGENT;
|
|
166
|
+
}
|
|
167
|
+
async setAgentMode(address, provider, useAgent) {
|
|
168
|
+
await this.setSigningMode(address, provider, useAgent ? SigningMode.USER_AGENT : SigningMode.USER);
|
|
169
|
+
}
|
|
170
|
+
async getAgentAddress(address, provider) {
|
|
171
|
+
const agent = await this.sdkClient.agentManager.getAgent(address, provider);
|
|
172
|
+
return agent.address;
|
|
173
|
+
}
|
|
174
|
+
async hasAgent(address, provider) {
|
|
175
|
+
return this.sdkClient.agentManager.hasAgent(address, provider);
|
|
176
|
+
}
|
|
177
|
+
async removeAgent(address, provider) {
|
|
178
|
+
await this.sdkClient.agentManager.removeAgent(address, provider);
|
|
179
|
+
this.signingModes.delete(this.modeKey(address, provider));
|
|
180
|
+
await this.storage.remove(this.signingModeStorageKey(address, provider));
|
|
181
|
+
}
|
|
182
|
+
// ---------------------------------------------------------------------------
|
|
183
|
+
// Prerequisites (was: authorizations)
|
|
184
|
+
// ---------------------------------------------------------------------------
|
|
185
|
+
async checkPrerequisites(params) {
|
|
186
|
+
const { provider, address } = params;
|
|
187
|
+
const mode = await this.loadSigningMode(address, provider);
|
|
357
188
|
let agentAddress;
|
|
358
|
-
if (mode ===
|
|
359
|
-
const agent = await this.sdkClient.agentManager.getOrCreateAgent(address,
|
|
189
|
+
if (mode === SigningMode.USER_AGENT) {
|
|
190
|
+
const agent = await this.sdkClient.agentManager.getOrCreateAgent(address, provider);
|
|
360
191
|
agentAddress = agent.address;
|
|
361
192
|
}
|
|
362
|
-
|
|
363
|
-
const
|
|
364
|
-
signingMode: mode,
|
|
365
|
-
agentAddress,
|
|
366
|
-
});
|
|
367
|
-
const allInputs = [...authInputs.user, ...authInputs.agent];
|
|
193
|
+
const metadata = await this.getProviderMetadata(provider);
|
|
194
|
+
const allInputs = this.buildPrerequisiteInputs(metadata.prepareAccountActions, mode, agentAddress);
|
|
368
195
|
if (allInputs.length === 0) {
|
|
369
|
-
return {
|
|
196
|
+
return { userPrerequisites: [], agentPrerequisites: [], isReady: true };
|
|
197
|
+
}
|
|
198
|
+
// Build a signer lookup from action descriptors
|
|
199
|
+
const signersByAction = new Map();
|
|
200
|
+
for (const desc of metadata.prepareAccountActions) {
|
|
201
|
+
signersByAction.set(desc.type, desc.signers);
|
|
370
202
|
}
|
|
371
|
-
// Send
|
|
372
|
-
|
|
373
|
-
|
|
203
|
+
// Send all to backend via createAction for the first prerequisite type
|
|
204
|
+
// The backend filters already-satisfied ones and returns typed data
|
|
205
|
+
const { actions } = await this.buildPrerequisites({
|
|
206
|
+
provider,
|
|
374
207
|
address,
|
|
375
|
-
|
|
208
|
+
signerAddress: agentAddress,
|
|
376
209
|
});
|
|
377
210
|
if (actions.length === 0) {
|
|
378
|
-
return {
|
|
211
|
+
return { userPrerequisites: [], agentPrerequisites: [], isReady: true };
|
|
379
212
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
213
|
+
const userPrerequisites = actions.filter((a) => {
|
|
214
|
+
const signers = signersByAction.get(a.action) ?? [];
|
|
215
|
+
return signers.includes(PerpsSigner.USER);
|
|
216
|
+
});
|
|
217
|
+
const agentPrerequisites = actions.filter((a) => {
|
|
218
|
+
const signers = signersByAction.get(a.action) ?? [];
|
|
219
|
+
return signers.includes(PerpsSigner.AGENT);
|
|
220
|
+
});
|
|
384
221
|
return {
|
|
385
|
-
|
|
386
|
-
|
|
222
|
+
userPrerequisites,
|
|
223
|
+
agentPrerequisites,
|
|
387
224
|
isReady: false,
|
|
388
225
|
};
|
|
389
226
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
const
|
|
399
|
-
|
|
400
|
-
//
|
|
227
|
+
async buildPrerequisites(params) {
|
|
228
|
+
const mode = await this.loadSigningMode(params.address, params.provider);
|
|
229
|
+
let { signerAddress } = params;
|
|
230
|
+
if (mode === SigningMode.USER_AGENT && !signerAddress) {
|
|
231
|
+
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.provider);
|
|
232
|
+
signerAddress = agent.address;
|
|
233
|
+
}
|
|
234
|
+
const metadata = await this.getProviderMetadata(params.provider);
|
|
235
|
+
const allInputs = this.buildPrerequisiteInputs(metadata.prepareAccountActions, mode, signerAddress);
|
|
236
|
+
// Use the first prerequisite type as the action type for the batch
|
|
237
|
+
// The backend handles all prerequisites in a single createPrerequisite call
|
|
238
|
+
const allActions = [];
|
|
239
|
+
for (const input of allInputs) {
|
|
240
|
+
const { actions } = await createAction(this.sdkClient, {
|
|
241
|
+
provider: params.provider,
|
|
242
|
+
address: params.address,
|
|
243
|
+
signerAddress,
|
|
244
|
+
action: input.key,
|
|
245
|
+
params: (input.params ?? {}),
|
|
246
|
+
});
|
|
247
|
+
allActions.push(...actions);
|
|
248
|
+
}
|
|
249
|
+
return { actions: allActions };
|
|
250
|
+
}
|
|
251
|
+
async executePrerequisites(params) {
|
|
252
|
+
const { provider, address, required, userSignedActions } = params;
|
|
253
|
+
const mode = await this.loadSigningMode(address, provider);
|
|
254
|
+
// 1. Submit user-signed prerequisites
|
|
401
255
|
let userResults = { results: [] };
|
|
402
256
|
if (userSignedActions.length > 0) {
|
|
403
|
-
const signerAddress = mode ===
|
|
404
|
-
? (await this.sdkClient.agentManager.getAgent(address,
|
|
257
|
+
const signerAddress = mode === SigningMode.USER_AGENT
|
|
258
|
+
? (await this.sdkClient.agentManager.getAgent(address, provider))
|
|
259
|
+
.address
|
|
405
260
|
: address;
|
|
406
|
-
|
|
407
|
-
|
|
261
|
+
// Submit all user-signed actions — use first action's type for routing
|
|
262
|
+
const firstAction = required.userPrerequisites[0]?.action;
|
|
263
|
+
userResults = await executeAction(this.sdkClient, {
|
|
264
|
+
provider,
|
|
408
265
|
address,
|
|
409
266
|
signerAddress,
|
|
267
|
+
action: (firstAction ?? ActionType.APPROVE_AGENT),
|
|
410
268
|
actions: userSignedActions,
|
|
411
269
|
});
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
if (failed) {
|
|
270
|
+
const mandatoryFailure = userResults.results.find((r) => !r.success);
|
|
271
|
+
if (mandatoryFailure) {
|
|
415
272
|
return { userResults };
|
|
416
273
|
}
|
|
417
274
|
}
|
|
418
|
-
// 2. Auto-sign and submit agent
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
const agent = await this.sdkClient.agentManager.getAgent(address,
|
|
422
|
-
const signedAgentActions = await Promise.all(required.
|
|
275
|
+
// 2. Auto-sign and submit agent prerequisites
|
|
276
|
+
if (required.agentPrerequisites.length > 0 &&
|
|
277
|
+
mode === SigningMode.USER_AGENT) {
|
|
278
|
+
const agent = await this.sdkClient.agentManager.getAgent(address, provider);
|
|
279
|
+
const signedAgentActions = await Promise.all(required.agentPrerequisites.map(async (action) => ({
|
|
423
280
|
action: action.action,
|
|
424
281
|
typedData: action.typedData,
|
|
425
282
|
signature: await signTypedData(agent.privateKey, action.typedData),
|
|
426
283
|
})));
|
|
427
|
-
const
|
|
428
|
-
|
|
284
|
+
const firstAction = required.agentPrerequisites[0]?.action;
|
|
285
|
+
const agentResults = await executeAction(this.sdkClient, {
|
|
286
|
+
provider,
|
|
429
287
|
address,
|
|
430
288
|
signerAddress: agent.address,
|
|
289
|
+
action: (firstAction ?? ActionType.AGENT_SET_ABSTRACTION),
|
|
431
290
|
actions: signedAgentActions,
|
|
432
291
|
});
|
|
292
|
+
// If AGENT_SET_ABSTRACTION failed (e.g. dexAbstraction → unified upgrade),
|
|
293
|
+
// fall back to USER_SET_ABSTRACTION so the user can sign it manually.
|
|
294
|
+
const abstractionFailed = agentResults.results.some((r) => !r.success && r.action === ActionType.AGENT_SET_ABSTRACTION);
|
|
295
|
+
if (abstractionFailed) {
|
|
296
|
+
const { actions: fallbackActions } = await createAction(this.sdkClient, {
|
|
297
|
+
provider,
|
|
298
|
+
address,
|
|
299
|
+
action: ActionType.USER_SET_ABSTRACTION,
|
|
300
|
+
params: {},
|
|
301
|
+
});
|
|
302
|
+
if (fallbackActions.length > 0) {
|
|
303
|
+
return {
|
|
304
|
+
userResults,
|
|
305
|
+
agentResults,
|
|
306
|
+
fallbackUserPrerequisites: fallbackActions,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
433
310
|
return { userResults, agentResults };
|
|
434
311
|
}
|
|
435
312
|
return { userResults };
|
|
436
313
|
}
|
|
314
|
+
// ---------------------------------------------------------------------------
|
|
315
|
+
// Trading — build (USER mode) methods
|
|
316
|
+
// ---------------------------------------------------------------------------
|
|
317
|
+
async buildOrder(params) {
|
|
318
|
+
return this.buildAction(ActionType.PLACE_ORDER, {
|
|
319
|
+
provider: params.provider,
|
|
320
|
+
address: params.address,
|
|
321
|
+
params: {
|
|
322
|
+
asset: params.asset,
|
|
323
|
+
side: params.side,
|
|
324
|
+
type: params.type,
|
|
325
|
+
size: params.size,
|
|
326
|
+
price: params.price,
|
|
327
|
+
leverage: params.leverage,
|
|
328
|
+
reduceOnly: params.reduceOnly,
|
|
329
|
+
timeInForce: params.timeInForce,
|
|
330
|
+
expiresAt: params.expiresAt,
|
|
331
|
+
takeProfit: params.takeProfit,
|
|
332
|
+
stopLoss: params.stopLoss,
|
|
333
|
+
},
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
async buildTriggerOrder(params) {
|
|
337
|
+
return this.buildAction(ActionType.PLACE_TRIGGER_ORDER, {
|
|
338
|
+
provider: params.provider,
|
|
339
|
+
address: params.address,
|
|
340
|
+
params: {
|
|
341
|
+
asset: params.asset,
|
|
342
|
+
side: params.side,
|
|
343
|
+
takeProfit: params.takeProfit,
|
|
344
|
+
stopLoss: params.stopLoss,
|
|
345
|
+
},
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
async buildCancelOrder(params) {
|
|
349
|
+
return this.buildAction(ActionType.CANCEL_ORDER, {
|
|
350
|
+
provider: params.provider,
|
|
351
|
+
address: params.address,
|
|
352
|
+
params: { ids: params.ids },
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
async buildModifyOrder(params) {
|
|
356
|
+
return this.buildAction(ActionType.MODIFY_ORDER, {
|
|
357
|
+
provider: params.provider,
|
|
358
|
+
address: params.address,
|
|
359
|
+
params: {
|
|
360
|
+
modifications: params.modifications,
|
|
361
|
+
},
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
async buildPositionMargin(params) {
|
|
365
|
+
return this.buildAction(ActionType.UPDATE_POSITION_MARGIN, {
|
|
366
|
+
provider: params.provider,
|
|
367
|
+
address: params.address,
|
|
368
|
+
params: {
|
|
369
|
+
asset: params.asset,
|
|
370
|
+
action: params.action,
|
|
371
|
+
amount: params.amount,
|
|
372
|
+
},
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
async buildWithdrawal(params) {
|
|
376
|
+
return this.buildAction(ActionType.WITHDRAWAL, {
|
|
377
|
+
provider: params.provider,
|
|
378
|
+
address: params.address,
|
|
379
|
+
params: params.withdrawal,
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
// ---------------------------------------------------------------------------
|
|
383
|
+
// Trading — submit signed actions (USER mode)
|
|
384
|
+
// ---------------------------------------------------------------------------
|
|
385
|
+
async submitSignedOrder(params) {
|
|
386
|
+
return this.submitSignedAction(ActionType.PLACE_ORDER, params);
|
|
387
|
+
}
|
|
388
|
+
async submitSignedPosition(params) {
|
|
389
|
+
return this.submitSignedAction(ActionType.UPDATE_POSITION_MARGIN, params);
|
|
390
|
+
}
|
|
391
|
+
async submitWithdrawal(params) {
|
|
392
|
+
return this.submitSignedAction(ActionType.WITHDRAWAL, {
|
|
393
|
+
provider: params.provider,
|
|
394
|
+
address: params.address,
|
|
395
|
+
actions: [params.action],
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
// ---------------------------------------------------------------------------
|
|
399
|
+
// Trading — auto-sign (USER_AGENT mode)
|
|
400
|
+
// ---------------------------------------------------------------------------
|
|
401
|
+
async placeOrder(params) {
|
|
402
|
+
await this.loadSigningMode(params.address, params.provider);
|
|
403
|
+
this.requireAgentMode(params.address, params.provider, 'placeOrder()');
|
|
404
|
+
const { actions } = await this.buildOrder(params);
|
|
405
|
+
return this.autoSignAndExecute(params.provider, params.address, ActionType.PLACE_ORDER, actions);
|
|
406
|
+
}
|
|
407
|
+
async placeTriggerOrder(params) {
|
|
408
|
+
await this.loadSigningMode(params.address, params.provider);
|
|
409
|
+
this.requireAgentMode(params.address, params.provider, 'placeTriggerOrder()');
|
|
410
|
+
const { actions } = await this.buildTriggerOrder(params);
|
|
411
|
+
return this.autoSignAndExecute(params.provider, params.address, ActionType.PLACE_TRIGGER_ORDER, actions);
|
|
412
|
+
}
|
|
413
|
+
async cancelOrders(params) {
|
|
414
|
+
await this.loadSigningMode(params.address, params.provider);
|
|
415
|
+
this.requireAgentMode(params.address, params.provider, 'cancelOrders()');
|
|
416
|
+
const { actions } = await this.buildCancelOrder(params);
|
|
417
|
+
return this.autoSignAndExecute(params.provider, params.address, ActionType.CANCEL_ORDER, actions);
|
|
418
|
+
}
|
|
419
|
+
async modifyOrders(params) {
|
|
420
|
+
await this.loadSigningMode(params.address, params.provider);
|
|
421
|
+
this.requireAgentMode(params.address, params.provider, 'modifyOrders()');
|
|
422
|
+
const { actions } = await this.buildModifyOrder(params);
|
|
423
|
+
return this.autoSignAndExecute(params.provider, params.address, ActionType.MODIFY_ORDER, actions);
|
|
424
|
+
}
|
|
425
|
+
async updatePositionMargin(params) {
|
|
426
|
+
await this.loadSigningMode(params.address, params.provider);
|
|
427
|
+
this.requireAgentMode(params.address, params.provider, 'updatePositionMargin()');
|
|
428
|
+
const { actions } = await this.buildPositionMargin(params);
|
|
429
|
+
return this.autoSignAndExecute(params.provider, params.address, ActionType.UPDATE_POSITION_MARGIN, actions);
|
|
430
|
+
}
|
|
437
431
|
}
|
|
438
432
|
//# sourceMappingURL=PerpsClient.js.map
|