@lifi/perps-sdk 0.1.1-alpha.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -20
- package/dist/cjs/client/PerpsClient.d.ts +57 -24
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +218 -208
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/client/bindProvider.d.ts +3 -0
- package/dist/cjs/client/bindProvider.d.ts.map +1 -0
- package/dist/cjs/client/bindProvider.js +9 -0
- package/dist/cjs/client/bindProvider.js.map +1 -0
- package/dist/cjs/client/createPerpsClient.d.ts +7 -25
- package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/createPerpsClient.js +28 -8
- package/dist/cjs/client/createPerpsClient.js.map +1 -1
- package/dist/cjs/client/requireProvider.d.ts +3 -0
- package/dist/cjs/client/requireProvider.d.ts.map +1 -0
- package/dist/cjs/client/requireProvider.js +16 -0
- package/dist/cjs/client/requireProvider.js.map +1 -0
- 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 +2 -12
- package/dist/cjs/errors/constants.d.ts.map +1 -1
- package/dist/cjs/errors/constants.js +3 -14
- package/dist/cjs/errors/constants.js.map +1 -1
- package/dist/cjs/index.d.ts +58 -34
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +122 -45
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/registry/assetRegistry.d.ts +11 -0
- package/dist/cjs/registry/assetRegistry.d.ts.map +1 -0
- package/dist/cjs/registry/assetRegistry.js +39 -0
- package/dist/cjs/registry/assetRegistry.js.map +1 -0
- package/dist/cjs/registry/marketRegistry.d.ts +13 -0
- package/dist/cjs/registry/marketRegistry.d.ts.map +1 -0
- package/dist/cjs/registry/marketRegistry.js +58 -0
- package/dist/cjs/registry/marketRegistry.js.map +1 -0
- package/dist/cjs/registry/referenceDataRegistry.d.ts +20 -0
- package/dist/cjs/registry/referenceDataRegistry.d.ts.map +1 -0
- package/dist/cjs/registry/referenceDataRegistry.js +59 -0
- package/dist/cjs/registry/referenceDataRegistry.js.map +1 -0
- package/dist/cjs/services/createAction.d.ts +13 -0
- package/dist/cjs/services/createAction.d.ts.map +1 -0
- package/dist/cjs/services/createAction.js +17 -0
- package/dist/cjs/services/createAction.js.map +1 -0
- package/dist/cjs/services/executeAction.d.ts +13 -0
- package/dist/cjs/services/executeAction.d.ts.map +1 -0
- package/dist/cjs/services/{submitAuthorization.js → executeAction.js} +8 -6
- package/dist/cjs/services/executeAction.js.map +1 -0
- package/dist/cjs/services/getAccount.d.ts +5 -3
- package/dist/cjs/services/getAccount.d.ts.map +1 -1
- package/dist/cjs/services/getAccount.js +2 -6
- package/dist/cjs/services/getAccount.js.map +1 -1
- package/dist/cjs/services/getActivity.d.ts +15 -0
- package/dist/cjs/services/getActivity.d.ts.map +1 -0
- package/dist/cjs/services/getActivity.js +15 -0
- package/dist/cjs/services/getActivity.js.map +1 -0
- package/dist/cjs/services/getAssets.d.ts +8 -0
- package/dist/cjs/services/getAssets.d.ts.map +1 -0
- package/dist/cjs/services/getAssets.js +11 -0
- package/dist/cjs/services/getAssets.js.map +1 -0
- package/dist/cjs/services/getFills.d.ts +14 -0
- package/dist/cjs/services/getFills.d.ts.map +1 -0
- package/dist/cjs/services/getFills.js +14 -0
- package/dist/cjs/services/getFills.js.map +1 -0
- package/dist/cjs/services/getMarket.d.ts +4 -3
- package/dist/cjs/services/getMarket.d.ts.map +1 -1
- package/dist/cjs/services/getMarket.js +6 -4
- package/dist/cjs/services/getMarket.js.map +1 -1
- package/dist/cjs/services/getMarkets.d.ts +4 -2
- package/dist/cjs/services/getMarkets.d.ts.map +1 -1
- package/dist/cjs/services/getMarkets.js +5 -2
- package/dist/cjs/services/getMarkets.js.map +1 -1
- package/dist/cjs/services/getMeta.d.ts +5 -0
- package/dist/cjs/services/getMeta.d.ts.map +1 -0
- package/dist/cjs/services/getMeta.js +8 -0
- package/dist/cjs/services/getMeta.js.map +1 -0
- package/dist/cjs/services/getOhlcv.d.ts +4 -3
- package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
- package/dist/cjs/services/getOhlcv.js +4 -3
- package/dist/cjs/services/getOhlcv.js.map +1 -1
- package/dist/cjs/services/getOrder.d.ts +5 -3
- package/dist/cjs/services/getOrder.d.ts.map +1 -1
- package/dist/cjs/services/getOrder.js +2 -6
- package/dist/cjs/services/getOrder.js.map +1 -1
- package/dist/cjs/services/getOrderbook.d.ts +4 -3
- package/dist/cjs/services/getOrderbook.d.ts.map +1 -1
- package/dist/cjs/services/getOrderbook.js +4 -3
- package/dist/cjs/services/getOrderbook.js.map +1 -1
- package/dist/cjs/services/getOrders.d.ts +13 -0
- package/dist/cjs/services/getOrders.d.ts.map +1 -0
- package/dist/cjs/services/getOrders.js +13 -0
- package/dist/cjs/services/getOrders.js.map +1 -0
- package/dist/cjs/services/getPositions.d.ts +13 -0
- package/dist/cjs/services/getPositions.d.ts.map +1 -0
- package/dist/cjs/services/getPositions.js +13 -0
- package/dist/cjs/services/getPositions.js.map +1 -0
- package/dist/cjs/services/getPrices.d.ts +4 -3
- package/dist/cjs/services/getPrices.d.ts.map +1 -1
- package/dist/cjs/services/getPrices.js +3 -3
- package/dist/cjs/services/getPrices.js.map +1 -1
- package/dist/cjs/services/getProviders.d.ts +5 -0
- package/dist/cjs/services/getProviders.d.ts.map +1 -0
- package/dist/cjs/services/getProviders.js +8 -0
- package/dist/cjs/services/getProviders.js.map +1 -0
- package/dist/cjs/services/getQuote.d.ts +12 -0
- package/dist/cjs/services/getQuote.d.ts.map +1 -0
- package/dist/cjs/services/getQuote.js +13 -0
- package/dist/cjs/services/getQuote.js.map +1 -0
- package/dist/cjs/services/getTermsAcceptance.d.ts +6 -0
- package/dist/cjs/services/getTermsAcceptance.d.ts.map +1 -0
- package/dist/cjs/services/getTermsAcceptance.js +9 -0
- package/dist/cjs/services/getTermsAcceptance.js.map +1 -0
- package/dist/cjs/services/resolveQuote.d.ts +7 -0
- package/dist/cjs/services/resolveQuote.d.ts.map +1 -0
- package/dist/cjs/services/resolveQuote.js +50 -0
- package/dist/cjs/services/resolveQuote.js.map +1 -0
- package/dist/cjs/services/resolveSubscribeQuote.d.ts +6 -0
- package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -0
- package/dist/cjs/services/resolveSubscribeQuote.js +65 -0
- package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -0
- package/dist/cjs/storage/parseStoredRecord.d.ts +4 -0
- package/dist/cjs/storage/parseStoredRecord.d.ts.map +1 -0
- package/dist/cjs/storage/parseStoredRecord.js +26 -0
- package/dist/cjs/storage/parseStoredRecord.js.map +1 -0
- package/dist/cjs/storage/storage.d.ts.map +1 -0
- package/dist/cjs/storage/storage.js.map +1 -0
- package/dist/cjs/{agent → storage}/types.d.ts +0 -5
- package/dist/cjs/storage/types.d.ts.map +1 -0
- package/dist/cjs/{agent → storage}/types.js.map +1 -1
- package/dist/cjs/transport/fetchWithRetry.d.ts +8 -0
- package/dist/cjs/transport/fetchWithRetry.d.ts.map +1 -0
- package/dist/cjs/transport/fetchWithRetry.js +81 -0
- package/dist/cjs/transport/fetchWithRetry.js.map +1 -0
- package/dist/cjs/{utils → transport}/request.d.ts +3 -2
- package/dist/cjs/transport/request.d.ts.map +1 -0
- package/dist/cjs/transport/request.js +75 -0
- package/dist/cjs/transport/request.js.map +1 -0
- package/dist/cjs/transport/retryPolicy.d.ts +37 -0
- package/dist/cjs/transport/retryPolicy.d.ts.map +1 -0
- package/dist/cjs/transport/retryPolicy.js +79 -0
- package/dist/cjs/transport/retryPolicy.js.map +1 -0
- package/dist/cjs/types/api.d.ts +85 -0
- package/dist/cjs/types/api.d.ts.map +1 -0
- package/dist/cjs/{dex/types.js → types/api.js} +1 -1
- package/dist/cjs/types/api.js.map +1 -0
- package/dist/cjs/types/config.d.ts +26 -0
- package/dist/cjs/types/config.d.ts.map +1 -0
- package/dist/cjs/{realtime/hyperliquid/types.js → types/config.js} +1 -1
- package/dist/cjs/types/config.js.map +1 -0
- package/dist/cjs/types/provider.d.ts +84 -0
- package/dist/cjs/types/provider.d.ts.map +1 -0
- package/dist/cjs/types/provider.js +3 -0
- package/dist/cjs/types/provider.js.map +1 -0
- package/dist/cjs/utils/accountSummary.d.ts +3 -0
- package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
- package/dist/cjs/utils/accountSummary.js +25 -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 +52 -0
- package/dist/cjs/utils/calculations.d.ts.map +1 -0
- package/dist/cjs/utils/calculations.js +148 -0
- package/dist/cjs/utils/calculations.js.map +1 -0
- package/dist/cjs/utils/depositChain.d.ts +6 -0
- package/dist/cjs/utils/depositChain.d.ts.map +1 -0
- package/dist/cjs/utils/depositChain.js +13 -0
- package/dist/cjs/utils/depositChain.js.map +1 -0
- package/dist/cjs/utils/explorer.d.ts +9 -0
- package/dist/cjs/utils/explorer.d.ts.map +1 -0
- package/dist/cjs/utils/explorer.js +23 -0
- package/dist/cjs/utils/explorer.js.map +1 -0
- package/dist/cjs/utils/fillClassification.d.ts +3 -0
- package/dist/cjs/utils/fillClassification.d.ts.map +1 -0
- package/dist/cjs/utils/fillClassification.js +37 -0
- package/dist/cjs/utils/fillClassification.js.map +1 -0
- package/dist/cjs/utils/format.d.ts +13 -0
- package/dist/cjs/utils/format.d.ts.map +1 -0
- package/dist/cjs/utils/format.js +117 -0
- package/dist/cjs/utils/format.js.map +1 -0
- package/dist/cjs/utils/orderClassification.d.ts +10 -0
- package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
- package/dist/cjs/utils/orderClassification.js +49 -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 +32 -0
- package/dist/cjs/utils/positionMath.d.ts.map +1 -0
- package/dist/cjs/utils/positionMath.js +52 -0
- package/dist/cjs/utils/positionMath.js.map +1 -0
- package/dist/cjs/utils/signTypedData.d.ts +3 -1
- package/dist/cjs/utils/signTypedData.d.ts.map +1 -1
- package/dist/cjs/utils/signTypedData.js +11 -3
- package/dist/cjs/utils/signTypedData.js.map +1 -1
- package/dist/cjs/utils/sleep.d.ts.map +1 -1
- package/dist/cjs/utils/sleep.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/cjs/websocket/PerpsWsClient.d.ts +27 -0
- package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -0
- package/dist/cjs/websocket/PerpsWsClient.js +84 -0
- package/dist/cjs/websocket/PerpsWsClient.js.map +1 -0
- package/dist/{esm/realtime → cjs/websocket}/ReconnectingWebSocket.d.ts +23 -7
- package/dist/cjs/websocket/ReconnectingWebSocket.d.ts.map +1 -0
- package/dist/cjs/websocket/ReconnectingWebSocket.js +213 -0
- package/dist/cjs/websocket/ReconnectingWebSocket.js.map +1 -0
- package/dist/cjs/websocket/WsProviderBase.d.ts +31 -0
- package/dist/cjs/websocket/WsProviderBase.d.ts.map +1 -0
- package/dist/cjs/websocket/WsProviderBase.js +197 -0
- package/dist/cjs/websocket/WsProviderBase.js.map +1 -0
- package/dist/cjs/websocket/cachePromise.d.ts +2 -0
- package/dist/cjs/websocket/cachePromise.d.ts.map +1 -0
- package/dist/cjs/websocket/cachePromise.js +18 -0
- package/dist/cjs/websocket/cachePromise.js.map +1 -0
- package/dist/cjs/websocket/types.d.ts +15 -0
- package/dist/cjs/websocket/types.d.ts.map +1 -0
- package/dist/cjs/{dex → websocket}/types.js.map +1 -1
- package/dist/cjs/websocket/wsLog.d.ts +10 -0
- package/dist/cjs/websocket/wsLog.d.ts.map +1 -0
- package/dist/cjs/websocket/wsLog.js +31 -0
- package/dist/cjs/websocket/wsLog.js.map +1 -0
- package/dist/esm/client/PerpsClient.d.ts +223 -136
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +399 -339
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/client/bindProvider.d.ts +13 -0
- package/dist/esm/client/bindProvider.d.ts.map +1 -0
- package/dist/esm/client/bindProvider.js +16 -0
- package/dist/esm/client/bindProvider.js.map +1 -0
- package/dist/esm/client/createPerpsClient.d.ts +24 -64
- package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
- package/dist/esm/client/createPerpsClient.js +45 -17
- package/dist/esm/client/createPerpsClient.js.map +1 -1
- package/dist/esm/client/requireProvider.d.ts +12 -0
- package/dist/esm/client/requireProvider.d.ts.map +1 -0
- package/dist/esm/client/requireProvider.js +22 -0
- package/dist/esm/client/requireProvider.js.map +1 -0
- package/dist/esm/errors/PerpsError.d.ts +10 -3
- package/dist/esm/errors/PerpsError.d.ts.map +1 -1
- package/dist/esm/errors/PerpsError.js +11 -15
- package/dist/esm/errors/PerpsError.js.map +1 -1
- package/dist/esm/errors/constants.d.ts +8 -12
- package/dist/esm/errors/constants.d.ts.map +1 -1
- package/dist/esm/errors/constants.js +8 -13
- package/dist/esm/errors/constants.js.map +1 -1
- package/dist/esm/index.d.ts +66 -34
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +49 -29
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/registry/assetRegistry.d.ts +25 -0
- package/dist/esm/registry/assetRegistry.d.ts.map +1 -0
- package/dist/esm/registry/assetRegistry.js +48 -0
- package/dist/esm/registry/assetRegistry.js.map +1 -0
- package/dist/esm/registry/marketRegistry.d.ts +42 -0
- package/dist/esm/registry/marketRegistry.d.ts.map +1 -0
- package/dist/esm/registry/marketRegistry.js +81 -0
- package/dist/esm/registry/marketRegistry.js.map +1 -0
- package/dist/esm/registry/referenceDataRegistry.d.ts +44 -0
- package/dist/esm/registry/referenceDataRegistry.d.ts.map +1 -0
- package/dist/esm/registry/referenceDataRegistry.js +79 -0
- package/dist/esm/registry/referenceDataRegistry.js.map +1 -0
- package/dist/esm/services/createAction.d.ts +26 -0
- package/dist/esm/services/createAction.d.ts.map +1 -0
- package/dist/esm/services/createAction.js +22 -0
- package/dist/esm/services/createAction.js.map +1 -0
- package/dist/esm/services/executeAction.d.ts +26 -0
- package/dist/esm/services/executeAction.d.ts.map +1 -0
- package/dist/esm/services/executeAction.js +26 -0
- package/dist/esm/services/executeAction.js.map +1 -0
- package/dist/esm/services/getAccount.d.ts +21 -18
- package/dist/esm/services/getAccount.d.ts.map +1 -1
- package/dist/esm/services/getAccount.js +13 -19
- package/dist/esm/services/getAccount.js.map +1 -1
- package/dist/esm/services/getActivity.d.ts +39 -0
- package/dist/esm/services/getActivity.d.ts.map +1 -0
- package/dist/esm/services/getActivity.js +29 -0
- package/dist/esm/services/getActivity.js.map +1 -0
- package/dist/esm/services/getAssets.d.ts +27 -0
- package/dist/esm/services/getAssets.d.ts.map +1 -0
- package/dist/esm/services/getAssets.js +22 -0
- package/dist/esm/services/getAssets.js.map +1 -0
- package/dist/esm/services/getFills.d.ts +38 -0
- package/dist/esm/services/getFills.d.ts.map +1 -0
- package/dist/esm/services/getFills.js +28 -0
- package/dist/esm/services/getFills.js.map +1 -0
- package/dist/esm/services/getMarket.d.ts +22 -15
- package/dist/esm/services/getMarket.d.ts.map +1 -1
- package/dist/esm/services/getMarket.js +14 -14
- package/dist/esm/services/getMarket.js.map +1 -1
- package/dist/esm/services/getMarkets.d.ts +16 -13
- package/dist/esm/services/getMarkets.d.ts.map +1 -1
- package/dist/esm/services/getMarkets.js +11 -12
- package/dist/esm/services/getMarkets.js.map +1 -1
- package/dist/esm/services/getMeta.d.ts +19 -0
- package/dist/esm/services/getMeta.d.ts.map +1 -0
- package/dist/esm/services/getMeta.js +19 -0
- package/dist/esm/services/getMeta.js.map +1 -0
- package/dist/esm/services/getOhlcv.d.ts +17 -21
- package/dist/esm/services/getOhlcv.d.ts.map +1 -1
- package/dist/esm/services/getOhlcv.js +9 -15
- package/dist/esm/services/getOhlcv.js.map +1 -1
- package/dist/esm/services/getOrder.d.ts +18 -18
- package/dist/esm/services/getOrder.d.ts.map +1 -1
- package/dist/esm/services/getOrder.js +10 -18
- package/dist/esm/services/getOrder.js.map +1 -1
- package/dist/esm/services/getOrderbook.d.ts +14 -24
- package/dist/esm/services/getOrderbook.d.ts.map +1 -1
- package/dist/esm/services/getOrderbook.js +8 -22
- package/dist/esm/services/getOrderbook.js.map +1 -1
- package/dist/esm/services/getOrders.d.ts +35 -0
- package/dist/esm/services/getOrders.d.ts.map +1 -0
- package/dist/esm/services/getOrders.js +26 -0
- package/dist/esm/services/getOrders.js.map +1 -0
- package/dist/esm/services/getPositions.d.ts +35 -0
- package/dist/esm/services/getPositions.d.ts.map +1 -0
- package/dist/esm/services/getPositions.js +26 -0
- package/dist/esm/services/getPositions.js.map +1 -0
- package/dist/esm/services/getPrices.d.ts +13 -25
- package/dist/esm/services/getPrices.d.ts.map +1 -1
- package/dist/esm/services/getPrices.js +6 -23
- 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 +20 -0
- package/dist/esm/services/getProviders.js.map +1 -0
- package/dist/esm/services/getQuote.d.ts +42 -0
- package/dist/esm/services/getQuote.d.ts.map +1 -0
- package/dist/esm/services/getQuote.js +33 -0
- package/dist/esm/services/getQuote.js.map +1 -0
- package/dist/esm/services/getTermsAcceptance.d.ts +24 -0
- package/dist/esm/services/getTermsAcceptance.d.ts.map +1 -0
- package/dist/esm/services/getTermsAcceptance.js +24 -0
- package/dist/esm/services/getTermsAcceptance.js.map +1 -0
- package/dist/esm/services/resolveQuote.d.ts +36 -0
- package/dist/esm/services/resolveQuote.d.ts.map +1 -0
- package/dist/esm/services/resolveQuote.js +74 -0
- package/dist/esm/services/resolveQuote.js.map +1 -0
- package/dist/esm/services/resolveSubscribeQuote.d.ts +31 -0
- package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -0
- package/dist/esm/services/resolveSubscribeQuote.js +86 -0
- package/dist/esm/services/resolveSubscribeQuote.js.map +1 -0
- package/dist/esm/storage/parseStoredRecord.d.ts +29 -0
- package/dist/esm/storage/parseStoredRecord.d.ts.map +1 -0
- package/dist/esm/storage/parseStoredRecord.js +47 -0
- package/dist/esm/storage/parseStoredRecord.js.map +1 -0
- package/dist/{types/agent → esm/storage}/storage.d.ts +6 -3
- package/dist/esm/storage/storage.d.ts.map +1 -0
- package/dist/esm/{agent → storage}/storage.js +6 -4
- package/dist/esm/storage/storage.js.map +1 -0
- package/dist/esm/storage/types.d.ts +14 -0
- package/dist/esm/storage/types.d.ts.map +1 -0
- package/dist/{cjs/client → esm/storage}/types.js.map +1 -1
- package/dist/esm/transport/fetchWithRetry.d.ts +22 -0
- package/dist/esm/transport/fetchWithRetry.d.ts.map +1 -0
- package/dist/esm/transport/fetchWithRetry.js +87 -0
- package/dist/esm/transport/fetchWithRetry.js.map +1 -0
- package/dist/esm/transport/request.d.ts +25 -0
- package/dist/esm/transport/request.d.ts.map +1 -0
- package/dist/esm/transport/request.js +82 -0
- package/dist/esm/transport/request.js.map +1 -0
- package/dist/esm/transport/retryPolicy.d.ts +106 -0
- package/dist/esm/transport/retryPolicy.d.ts.map +1 -0
- package/dist/esm/transport/retryPolicy.js +99 -0
- package/dist/esm/transport/retryPolicy.js.map +1 -0
- package/dist/esm/types/api.d.ts +214 -0
- package/dist/esm/types/api.d.ts.map +1 -0
- package/dist/esm/types/api.js +2 -0
- package/dist/esm/types/api.js.map +1 -0
- package/dist/esm/types/config.d.ts +70 -0
- package/dist/esm/types/config.d.ts.map +1 -0
- package/dist/esm/types/config.js +2 -0
- package/dist/esm/types/config.js.map +1 -0
- package/dist/esm/types/provider.d.ts +330 -0
- package/dist/esm/types/provider.d.ts.map +1 -0
- package/dist/esm/types/provider.js +2 -0
- package/dist/esm/types/provider.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 +32 -0
- package/dist/esm/utils/accountSummary.js.map +1 -0
- package/dist/esm/utils/assertNever.d.ts +20 -0
- package/dist/esm/utils/assertNever.d.ts.map +1 -0
- package/dist/esm/utils/assertNever.js +22 -0
- package/dist/esm/utils/assertNever.js.map +1 -0
- package/dist/esm/utils/calculations.d.ts +225 -0
- package/dist/esm/utils/calculations.d.ts.map +1 -0
- package/dist/esm/utils/calculations.js +291 -0
- package/dist/esm/utils/calculations.js.map +1 -0
- package/dist/esm/utils/depositChain.d.ts +25 -0
- package/dist/esm/utils/depositChain.d.ts.map +1 -0
- package/dist/esm/utils/depositChain.js +23 -0
- package/dist/esm/utils/depositChain.js.map +1 -0
- package/dist/esm/utils/explorer.d.ts +33 -0
- package/dist/esm/utils/explorer.d.ts.map +1 -0
- package/dist/esm/utils/explorer.js +38 -0
- package/dist/esm/utils/explorer.js.map +1 -0
- package/dist/esm/utils/fillClassification.d.ts +13 -0
- package/dist/esm/utils/fillClassification.d.ts.map +1 -0
- package/dist/esm/utils/fillClassification.js +44 -0
- package/dist/esm/utils/fillClassification.js.map +1 -0
- package/dist/esm/utils/format.d.ts +66 -0
- package/dist/esm/utils/format.d.ts.map +1 -0
- package/dist/esm/utils/format.js +171 -0
- package/dist/esm/utils/format.js.map +1 -0
- package/dist/esm/utils/orderClassification.d.ts +47 -0
- package/dist/esm/utils/orderClassification.d.ts.map +1 -0
- package/dist/esm/utils/orderClassification.js +78 -0
- package/dist/esm/utils/orderClassification.js.map +1 -0
- package/dist/esm/utils/orderMath.d.ts +44 -0
- package/dist/esm/utils/orderMath.d.ts.map +1 -0
- package/dist/esm/utils/orderMath.js +103 -0
- package/dist/esm/utils/orderMath.js.map +1 -0
- package/dist/esm/utils/parse.d.ts +21 -0
- package/dist/esm/utils/parse.d.ts.map +1 -0
- package/dist/esm/utils/parse.js +30 -0
- package/dist/esm/utils/parse.js.map +1 -0
- package/dist/esm/utils/positionMath.d.ts +107 -0
- package/dist/esm/utils/positionMath.d.ts.map +1 -0
- package/dist/esm/utils/positionMath.js +119 -0
- package/dist/esm/utils/positionMath.js.map +1 -0
- package/dist/esm/utils/signTypedData.d.ts +13 -10
- package/dist/esm/utils/signTypedData.d.ts.map +1 -1
- package/dist/esm/utils/signTypedData.js +20 -13
- package/dist/esm/utils/signTypedData.js.map +1 -1
- package/dist/esm/utils/sleep.d.ts +5 -0
- package/dist/esm/utils/sleep.d.ts.map +1 -1
- package/dist/esm/utils/sleep.js +5 -0
- package/dist/esm/utils/sleep.js.map +1 -1
- package/dist/esm/utils/units.d.ts +27 -0
- package/dist/esm/utils/units.d.ts.map +1 -0
- package/dist/esm/utils/units.js +38 -0
- package/dist/esm/utils/units.js.map +1 -0
- package/dist/esm/utils/validation.d.ts +18 -0
- package/dist/esm/utils/validation.d.ts.map +1 -0
- package/dist/esm/utils/validation.js +29 -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/esm/websocket/PerpsWsClient.d.ts +100 -0
- package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -0
- package/dist/esm/websocket/PerpsWsClient.js +121 -0
- package/dist/esm/websocket/PerpsWsClient.js.map +1 -0
- package/dist/esm/websocket/ReconnectingWebSocket.d.ts +130 -0
- package/dist/esm/websocket/ReconnectingWebSocket.d.ts.map +1 -0
- package/dist/esm/websocket/ReconnectingWebSocket.js +288 -0
- package/dist/esm/websocket/ReconnectingWebSocket.js.map +1 -0
- package/dist/esm/websocket/WsProviderBase.d.ts +89 -0
- package/dist/esm/websocket/WsProviderBase.d.ts.map +1 -0
- package/dist/esm/websocket/WsProviderBase.js +246 -0
- package/dist/esm/websocket/WsProviderBase.js.map +1 -0
- package/dist/esm/websocket/cachePromise.d.ts +14 -0
- package/dist/esm/websocket/cachePromise.d.ts.map +1 -0
- package/dist/esm/websocket/cachePromise.js +27 -0
- package/dist/esm/websocket/cachePromise.js.map +1 -0
- package/dist/esm/websocket/types.d.ts +60 -0
- package/dist/esm/websocket/types.d.ts.map +1 -0
- package/dist/{cjs/realtime → esm/websocket}/types.js.map +1 -1
- package/dist/esm/websocket/wsLog.d.ts +50 -0
- package/dist/esm/websocket/wsLog.d.ts.map +1 -0
- package/dist/esm/websocket/wsLog.js +68 -0
- package/dist/esm/websocket/wsLog.js.map +1 -0
- package/dist/types/client/PerpsClient.d.ts +223 -136
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/client/bindProvider.d.ts +13 -0
- package/dist/types/client/bindProvider.d.ts.map +1 -0
- package/dist/types/client/createPerpsClient.d.ts +24 -64
- package/dist/types/client/createPerpsClient.d.ts.map +1 -1
- package/dist/types/client/requireProvider.d.ts +12 -0
- package/dist/types/client/requireProvider.d.ts.map +1 -0
- package/dist/types/errors/PerpsError.d.ts +10 -3
- package/dist/types/errors/PerpsError.d.ts.map +1 -1
- package/dist/types/errors/constants.d.ts +8 -12
- package/dist/types/errors/constants.d.ts.map +1 -1
- package/dist/types/index.d.ts +66 -34
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/registry/assetRegistry.d.ts +25 -0
- package/dist/types/registry/assetRegistry.d.ts.map +1 -0
- package/dist/types/registry/marketRegistry.d.ts +42 -0
- package/dist/types/registry/marketRegistry.d.ts.map +1 -0
- package/dist/types/registry/referenceDataRegistry.d.ts +44 -0
- package/dist/types/registry/referenceDataRegistry.d.ts.map +1 -0
- package/dist/types/services/createAction.d.ts +26 -0
- package/dist/types/services/createAction.d.ts.map +1 -0
- package/dist/types/services/executeAction.d.ts +26 -0
- package/dist/types/services/executeAction.d.ts.map +1 -0
- package/dist/types/services/getAccount.d.ts +21 -18
- package/dist/types/services/getAccount.d.ts.map +1 -1
- package/dist/types/services/getActivity.d.ts +39 -0
- package/dist/types/services/getActivity.d.ts.map +1 -0
- package/dist/types/services/getAssets.d.ts +27 -0
- package/dist/types/services/getAssets.d.ts.map +1 -0
- package/dist/types/services/getFills.d.ts +38 -0
- package/dist/types/services/getFills.d.ts.map +1 -0
- package/dist/types/services/getMarket.d.ts +22 -15
- package/dist/types/services/getMarket.d.ts.map +1 -1
- package/dist/types/services/getMarkets.d.ts +16 -13
- package/dist/types/services/getMarkets.d.ts.map +1 -1
- package/dist/types/services/getMeta.d.ts +19 -0
- package/dist/types/services/getMeta.d.ts.map +1 -0
- package/dist/types/services/getOhlcv.d.ts +17 -21
- package/dist/types/services/getOhlcv.d.ts.map +1 -1
- package/dist/types/services/getOrder.d.ts +18 -18
- package/dist/types/services/getOrder.d.ts.map +1 -1
- package/dist/types/services/getOrderbook.d.ts +14 -24
- package/dist/types/services/getOrderbook.d.ts.map +1 -1
- package/dist/types/services/getOrders.d.ts +35 -0
- package/dist/types/services/getOrders.d.ts.map +1 -0
- package/dist/types/services/getPositions.d.ts +35 -0
- package/dist/types/services/getPositions.d.ts.map +1 -0
- package/dist/types/services/getPrices.d.ts +13 -25
- 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/services/getQuote.d.ts +42 -0
- package/dist/types/services/getQuote.d.ts.map +1 -0
- package/dist/types/services/getTermsAcceptance.d.ts +24 -0
- package/dist/types/services/getTermsAcceptance.d.ts.map +1 -0
- package/dist/types/services/resolveQuote.d.ts +36 -0
- package/dist/types/services/resolveQuote.d.ts.map +1 -0
- package/dist/types/services/resolveSubscribeQuote.d.ts +31 -0
- package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -0
- package/dist/types/storage/parseStoredRecord.d.ts +29 -0
- package/dist/types/storage/parseStoredRecord.d.ts.map +1 -0
- package/dist/{esm/agent → types/storage}/storage.d.ts +6 -3
- package/dist/types/storage/storage.d.ts.map +1 -0
- package/dist/types/storage/types.d.ts +14 -0
- package/dist/types/storage/types.d.ts.map +1 -0
- package/dist/types/transport/fetchWithRetry.d.ts +22 -0
- package/dist/types/transport/fetchWithRetry.d.ts.map +1 -0
- package/dist/types/transport/request.d.ts +25 -0
- package/dist/types/transport/request.d.ts.map +1 -0
- package/dist/types/transport/retryPolicy.d.ts +106 -0
- package/dist/types/transport/retryPolicy.d.ts.map +1 -0
- package/dist/types/types/api.d.ts +214 -0
- package/dist/types/types/api.d.ts.map +1 -0
- package/dist/types/types/config.d.ts +70 -0
- package/dist/types/types/config.d.ts.map +1 -0
- package/dist/types/types/provider.d.ts +330 -0
- package/dist/types/types/provider.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 +20 -0
- package/dist/types/utils/assertNever.d.ts.map +1 -0
- package/dist/types/utils/calculations.d.ts +225 -0
- package/dist/types/utils/calculations.d.ts.map +1 -0
- package/dist/types/utils/depositChain.d.ts +25 -0
- package/dist/types/utils/depositChain.d.ts.map +1 -0
- package/dist/types/utils/explorer.d.ts +33 -0
- package/dist/types/utils/explorer.d.ts.map +1 -0
- package/dist/types/utils/fillClassification.d.ts +13 -0
- package/dist/types/utils/fillClassification.d.ts.map +1 -0
- package/dist/types/utils/format.d.ts +66 -0
- package/dist/types/utils/format.d.ts.map +1 -0
- package/dist/types/utils/orderClassification.d.ts +47 -0
- package/dist/types/utils/orderClassification.d.ts.map +1 -0
- package/dist/types/utils/orderMath.d.ts +44 -0
- package/dist/types/utils/orderMath.d.ts.map +1 -0
- package/dist/types/utils/parse.d.ts +21 -0
- package/dist/types/utils/parse.d.ts.map +1 -0
- package/dist/types/utils/positionMath.d.ts +107 -0
- package/dist/types/utils/positionMath.d.ts.map +1 -0
- package/dist/types/utils/signTypedData.d.ts +13 -10
- package/dist/types/utils/signTypedData.d.ts.map +1 -1
- package/dist/types/utils/sleep.d.ts +5 -0
- package/dist/types/utils/sleep.d.ts.map +1 -1
- package/dist/types/utils/units.d.ts +27 -0
- package/dist/types/utils/units.d.ts.map +1 -0
- package/dist/types/utils/validation.d.ts +18 -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/dist/types/websocket/PerpsWsClient.d.ts +100 -0
- package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -0
- package/dist/types/websocket/ReconnectingWebSocket.d.ts +130 -0
- package/dist/types/websocket/ReconnectingWebSocket.d.ts.map +1 -0
- package/dist/types/websocket/WsProviderBase.d.ts +89 -0
- package/dist/types/websocket/WsProviderBase.d.ts.map +1 -0
- package/dist/types/websocket/cachePromise.d.ts +14 -0
- package/dist/types/websocket/cachePromise.d.ts.map +1 -0
- package/dist/types/websocket/types.d.ts +60 -0
- package/dist/types/websocket/types.d.ts.map +1 -0
- package/dist/types/websocket/wsLog.d.ts +50 -0
- package/dist/types/websocket/wsLog.d.ts.map +1 -0
- package/package.json +12 -50
- package/src/client/PerpsClient.ts +549 -435
- package/src/client/bindProvider.ts +24 -0
- package/src/client/createPerpsClient.ts +61 -80
- package/src/client/requireProvider.ts +29 -0
- package/src/errors/PerpsError.ts +11 -22
- package/src/errors/constants.ts +8 -13
- package/src/index.ts +189 -65
- package/src/registry/assetRegistry.ts +62 -0
- package/src/registry/marketRegistry.ts +100 -0
- package/src/registry/referenceDataRegistry.ts +95 -0
- package/src/services/createAction.ts +52 -0
- package/src/services/executeAction.ts +56 -0
- package/src/services/getAccount.ts +26 -27
- package/src/services/getActivity.ts +57 -0
- package/src/services/getAssets.ts +38 -0
- package/src/services/getFills.ts +55 -0
- package/src/services/getMarket.ts +34 -23
- package/src/services/getMarkets.ts +21 -18
- package/src/services/getMeta.ts +30 -0
- package/src/services/getOhlcv.ts +21 -27
- package/src/services/getOrder.ts +23 -27
- package/src/services/getOrderbook.ts +18 -30
- package/src/services/getOrders.ts +51 -0
- package/src/services/getPositions.ts +51 -0
- package/src/services/getPrices.ts +16 -31
- package/src/services/getProviders.ts +31 -0
- package/src/services/getQuote.ts +58 -0
- package/src/services/getTermsAcceptance.ts +32 -0
- package/src/services/resolveQuote.ts +122 -0
- package/src/services/resolveSubscribeQuote.ts +109 -0
- package/src/storage/parseStoredRecord.ts +55 -0
- package/src/{agent → storage}/storage.ts +6 -4
- package/src/storage/types.ts +13 -0
- package/src/transport/fetchWithRetry.ts +116 -0
- package/src/transport/request.ts +123 -0
- package/src/transport/retryPolicy.ts +202 -0
- package/src/types/api.ts +239 -0
- package/src/types/config.ts +79 -0
- package/src/types/provider.ts +429 -0
- package/src/utils/accountSummary.ts +46 -0
- package/src/utils/assertNever.ts +23 -0
- package/src/utils/calculations.ts +406 -0
- package/src/utils/depositChain.ts +37 -0
- package/src/utils/explorer.ts +51 -0
- package/src/utils/fillClassification.ts +51 -0
- package/src/utils/format.ts +212 -0
- package/src/utils/orderClassification.ts +96 -0
- package/src/utils/orderMath.ts +134 -0
- package/src/utils/parse.ts +29 -0
- package/src/utils/positionMath.ts +149 -0
- package/src/utils/signTypedData.ts +25 -15
- package/src/utils/sleep.ts +5 -0
- package/src/utils/units.ts +39 -0
- package/src/utils/validation.ts +38 -0
- package/src/version.ts +1 -1
- package/src/websocket/PerpsWsClient.ts +204 -0
- package/src/websocket/ReconnectingWebSocket.ts +353 -0
- package/src/websocket/WsProviderBase.ts +333 -0
- package/src/websocket/cachePromise.ts +30 -0
- package/src/websocket/types.ts +75 -0
- package/src/websocket/wsLog.ts +82 -0
- package/dist/cjs/agent/AgentManager.d.ts +0 -15
- package/dist/cjs/agent/AgentManager.d.ts.map +0 -1
- package/dist/cjs/agent/AgentManager.js +0 -80
- package/dist/cjs/agent/AgentManager.js.map +0 -1
- package/dist/cjs/agent/storage.d.ts.map +0 -1
- package/dist/cjs/agent/storage.js.map +0 -1
- package/dist/cjs/agent/types.d.ts.map +0 -1
- package/dist/cjs/client/types.d.ts +0 -62
- package/dist/cjs/client/types.d.ts.map +0 -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/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/realtime/PerpsWsClient.d.ts +0 -14
- package/dist/cjs/realtime/PerpsWsClient.d.ts.map +0 -1
- package/dist/cjs/realtime/PerpsWsClient.js +0 -56
- package/dist/cjs/realtime/PerpsWsClient.js.map +0 -1
- package/dist/cjs/realtime/ReconnectingWebSocket.d.ts +0 -36
- package/dist/cjs/realtime/ReconnectingWebSocket.d.ts.map +0 -1
- package/dist/cjs/realtime/ReconnectingWebSocket.js +0 -132
- package/dist/cjs/realtime/ReconnectingWebSocket.js.map +0 -1
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts +0 -26
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +0 -1
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js +0 -225
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js.map +0 -1
- package/dist/cjs/realtime/hyperliquid/types.d.ts +0 -35
- package/dist/cjs/realtime/hyperliquid/types.d.ts.map +0 -1
- package/dist/cjs/realtime/hyperliquid/types.js.map +0 -1
- package/dist/cjs/realtime/types.d.ts +0 -10
- package/dist/cjs/realtime/types.d.ts.map +0 -1
- package/dist/cjs/realtime/types.js +0 -3
- 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 +0 -8
- 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 +0 -14
- package/dist/cjs/services/getHistory.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 +0 -16
- 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/cjs/utils/request.d.ts.map +0 -1
- package/dist/cjs/utils/request.js +0 -60
- package/dist/cjs/utils/request.js.map +0 -1
- package/dist/esm/agent/AgentManager.d.ts +0 -45
- package/dist/esm/agent/AgentManager.d.ts.map +0 -1
- package/dist/esm/agent/AgentManager.js +0 -110
- package/dist/esm/agent/AgentManager.js.map +0 -1
- package/dist/esm/agent/storage.d.ts.map +0 -1
- package/dist/esm/agent/storage.js.map +0 -1
- package/dist/esm/agent/types.d.ts +0 -23
- package/dist/esm/agent/types.d.ts.map +0 -1
- package/dist/esm/agent/types.js.map +0 -1
- package/dist/esm/client/types.d.ts +0 -134
- package/dist/esm/client/types.d.ts.map +0 -1
- package/dist/esm/client/types.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/realtime/PerpsWsClient.d.ts +0 -14
- package/dist/esm/realtime/PerpsWsClient.d.ts.map +0 -1
- package/dist/esm/realtime/PerpsWsClient.js +0 -52
- package/dist/esm/realtime/PerpsWsClient.js.map +0 -1
- package/dist/esm/realtime/ReconnectingWebSocket.d.ts.map +0 -1
- package/dist/esm/realtime/ReconnectingWebSocket.js +0 -128
- package/dist/esm/realtime/ReconnectingWebSocket.js.map +0 -1
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts +0 -26
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +0 -1
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js +0 -222
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js.map +0 -1
- package/dist/esm/realtime/hyperliquid/types.d.ts +0 -35
- package/dist/esm/realtime/hyperliquid/types.d.ts.map +0 -1
- package/dist/esm/realtime/hyperliquid/types.js +0 -4
- package/dist/esm/realtime/hyperliquid/types.js.map +0 -1
- package/dist/esm/realtime/types.d.ts +0 -10
- package/dist/esm/realtime/types.d.ts.map +0 -1
- package/dist/esm/realtime/types.js +0 -2
- package/dist/esm/realtime/types.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 +0 -45
- package/dist/esm/services/getHistory.d.ts.map +0 -1
- package/dist/esm/services/getHistory.js +0 -42
- package/dist/esm/services/getHistory.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/esm/utils/request.d.ts +0 -26
- package/dist/esm/utils/request.d.ts.map +0 -1
- package/dist/esm/utils/request.js +0 -78
- package/dist/esm/utils/request.js.map +0 -1
- package/dist/types/agent/AgentManager.d.ts +0 -45
- package/dist/types/agent/AgentManager.d.ts.map +0 -1
- package/dist/types/agent/storage.d.ts.map +0 -1
- package/dist/types/agent/types.d.ts +0 -23
- package/dist/types/agent/types.d.ts.map +0 -1
- package/dist/types/client/types.d.ts +0 -134
- package/dist/types/client/types.d.ts.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/realtime/PerpsWsClient.d.ts +0 -14
- package/dist/types/realtime/PerpsWsClient.d.ts.map +0 -1
- package/dist/types/realtime/ReconnectingWebSocket.d.ts +0 -36
- package/dist/types/realtime/ReconnectingWebSocket.d.ts.map +0 -1
- package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts +0 -26
- package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +0 -1
- package/dist/types/realtime/hyperliquid/types.d.ts +0 -35
- package/dist/types/realtime/hyperliquid/types.d.ts.map +0 -1
- package/dist/types/realtime/types.d.ts +0 -10
- package/dist/types/realtime/types.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 +0 -45
- package/dist/types/services/getHistory.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/dist/types/utils/request.d.ts +0 -26
- package/dist/types/utils/request.d.ts.map +0 -1
- package/src/agent/AgentManager.ts +0 -135
- package/src/agent/types.ts +0 -24
- package/src/client/types.ts +0 -162
- 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/realtime/PerpsWsClient.ts +0 -73
- package/src/realtime/ReconnectingWebSocket.ts +0 -156
- package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +0 -278
- package/src/realtime/hyperliquid/types.ts +0 -48
- package/src/realtime/types.ts +0 -16
- 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/getDexes.ts +0 -34
- package/src/services/getHistory.ts +0 -62
- package/src/services/submitAuthorization.ts +0 -70
- package/src/services/submitOrder.ts +0 -72
- package/src/services/submitWithdrawal.ts +0 -67
- package/src/utils/request.ts +0 -116
- /package/dist/cjs/{agent → storage}/storage.d.ts +0 -0
- /package/dist/cjs/{agent → storage}/storage.js +0 -0
- /package/dist/cjs/{agent → storage}/types.js +0 -0
- /package/dist/cjs/{client → websocket}/types.js +0 -0
- /package/dist/esm/{agent → storage}/types.js +0 -0
- /package/dist/esm/{client → websocket}/types.js +0 -0
|
@@ -1,572 +1,686 @@
|
|
|
1
1
|
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
AccountResponse,
|
|
3
|
+
AccountSummary,
|
|
4
|
+
ActionParamsMap,
|
|
5
|
+
ActionStep,
|
|
6
|
+
CreateActionResponse,
|
|
7
|
+
ExecuteActionResponse,
|
|
8
|
+
MarketRef,
|
|
9
|
+
Position,
|
|
10
|
+
Provider,
|
|
11
|
+
ProviderAction,
|
|
12
|
+
SignedActionStep,
|
|
13
13
|
} from '@lifi/perps-types'
|
|
14
|
-
import { PerpsErrorCode } from '@lifi/perps-types'
|
|
15
|
-
import {
|
|
16
|
-
import { PerpsErrorMessage } from '../errors/constants.js'
|
|
14
|
+
import { ActionType, PerpsErrorCode } from '@lifi/perps-types'
|
|
15
|
+
import type { Address } from 'viem'
|
|
17
16
|
import { PerpsError } from '../errors/PerpsError.js'
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import type { SubmitAuthorizationParams } from '../services/submitAuthorization.js'
|
|
23
|
-
import { submitAuthorization } from '../services/submitAuthorization.js'
|
|
24
|
-
import type { SubmitOrderParams } from '../services/submitOrder.js'
|
|
25
|
-
import { submitOrder } from '../services/submitOrder.js'
|
|
26
|
-
import type { SubmitWithdrawalParams } from '../services/submitWithdrawal.js'
|
|
27
|
-
import { submitWithdrawal } from '../services/submitWithdrawal.js'
|
|
28
|
-
import { signTypedData } from '../utils/signTypedData.js'
|
|
29
|
-
import { createPerpsClient, type PerpsSDKClient } from './createPerpsClient.js'
|
|
17
|
+
import { createAction } from '../services/createAction.js'
|
|
18
|
+
import { executeAction } from '../services/executeAction.js'
|
|
19
|
+
import { getAccount as fetchAccount } from '../services/getAccount.js'
|
|
20
|
+
import { getProviders } from '../services/getProviders.js'
|
|
30
21
|
import type {
|
|
31
|
-
|
|
32
|
-
BuildWithdrawalParams,
|
|
22
|
+
BuildProviderSetupParams,
|
|
33
23
|
CancelOrdersParams,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
24
|
+
ExecuteProviderSetupParams,
|
|
25
|
+
ExecuteProviderSetupResult,
|
|
26
|
+
GetAccountResult,
|
|
27
|
+
GetSetupParams,
|
|
28
|
+
ModifyOrdersParams,
|
|
37
29
|
PerpsClientOptions,
|
|
38
30
|
PlaceOrderParams,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
PlaceTriggerOrderParams,
|
|
32
|
+
ProviderSetup,
|
|
33
|
+
WithdrawParams,
|
|
34
|
+
} from '../types/api.js'
|
|
35
|
+
import type {
|
|
36
|
+
ActionSignerContribution,
|
|
37
|
+
PerpsProvider,
|
|
38
|
+
PerpsSDKClient,
|
|
39
|
+
SignActionsContext,
|
|
40
|
+
} from '../types/provider.js'
|
|
41
|
+
import { createPerpsClient } from './createPerpsClient.js'
|
|
42
|
+
import { requireProvider as resolveProvider } from './requireProvider.js'
|
|
42
43
|
|
|
43
44
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
* // ... sign actions with user wallet ...
|
|
45
|
+
* Look up an action's descriptor in the provider's metadata. Throws if the
|
|
46
|
+
* action isn't declared — defensive: better to fail loudly than to mis-sign.
|
|
47
|
+
*/
|
|
48
|
+
function findActionDescriptor(
|
|
49
|
+
metadata: Provider,
|
|
50
|
+
action: ActionType
|
|
51
|
+
): ProviderAction {
|
|
52
|
+
const descriptor = [
|
|
53
|
+
...metadata.setup,
|
|
54
|
+
...metadata.options,
|
|
55
|
+
...metadata.actions,
|
|
56
|
+
].find((d) => d.type === action)
|
|
57
|
+
if (!descriptor) {
|
|
58
|
+
throw new PerpsError(
|
|
59
|
+
PerpsErrorCode.SDKError,
|
|
60
|
+
`Provider '${metadata.key}' does not declare action '${action}'.`
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
return descriptor
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The primary high-level perps API: wraps a {@link PerpsSDKClient} and owns the
|
|
68
|
+
* end-to-end signing pipeline for provider setup, orders, and account-level
|
|
69
|
+
* actions. Construct via `new PerpsClient(options)` or the SDK's higher-level
|
|
70
|
+
* wiring.
|
|
72
71
|
*
|
|
73
|
-
*
|
|
74
|
-
* const result = await perps.placeOrder({
|
|
75
|
-
* address: userAddress,
|
|
76
|
-
* dex: 'hyperliquid',
|
|
77
|
-
* symbol: 'BTC',
|
|
78
|
-
* side: 'BUY',
|
|
79
|
-
* type: 'MARKET',
|
|
80
|
-
* size: '0.1',
|
|
81
|
-
* price: '95000.00'
|
|
82
|
-
* })
|
|
83
|
-
* ```
|
|
72
|
+
* @public
|
|
84
73
|
*/
|
|
85
74
|
export class PerpsClient {
|
|
86
75
|
private sdkClient: PerpsSDKClient
|
|
87
|
-
private
|
|
76
|
+
private providerMetadataCache: Map<string, Provider> = new Map()
|
|
77
|
+
private _userWallet: PerpsSDKClient['userWallet'] | undefined
|
|
88
78
|
|
|
89
79
|
constructor(options: PerpsClientOptions) {
|
|
90
80
|
this.sdkClient = createPerpsClient({
|
|
91
81
|
integrator: options.integrator,
|
|
92
82
|
apiKey: options.apiKey,
|
|
93
83
|
apiUrl: options.apiUrl,
|
|
94
|
-
|
|
84
|
+
providers: options.providers,
|
|
95
85
|
})
|
|
96
86
|
}
|
|
97
87
|
|
|
98
88
|
/**
|
|
99
|
-
*
|
|
89
|
+
* Set or update the end-user's wallet. Used whenever an action's descriptor
|
|
90
|
+
* names the user wallet in its `signers` list. Pass undefined to clear.
|
|
91
|
+
*
|
|
92
|
+
* @public
|
|
100
93
|
*/
|
|
101
|
-
|
|
102
|
-
|
|
94
|
+
setUserWallet(userWallet: PerpsSDKClient['userWallet']): void {
|
|
95
|
+
this._userWallet = userWallet
|
|
96
|
+
Object.defineProperty(this.sdkClient, 'userWallet', {
|
|
97
|
+
get: () => this._userWallet,
|
|
98
|
+
configurable: true,
|
|
99
|
+
})
|
|
103
100
|
}
|
|
104
101
|
|
|
105
102
|
/**
|
|
106
|
-
*
|
|
103
|
+
* The underlying low-level {@link PerpsSDKClient} (config, user wallet,
|
|
104
|
+
* provider registry) backing this instance.
|
|
105
|
+
*
|
|
106
|
+
* @public
|
|
107
107
|
*/
|
|
108
|
-
|
|
109
|
-
return
|
|
108
|
+
get client(): PerpsSDKClient {
|
|
109
|
+
return this.sdkClient
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
await this.sdkClient.agentManager.getOrCreateAgent(address, dex)
|
|
112
|
+
private async getProviderMetadata(provider: string): Promise<Provider> {
|
|
113
|
+
const cached = this.providerMetadataCache.get(provider)
|
|
114
|
+
if (cached) {
|
|
115
|
+
return cached
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const { providers } = await getProviders(this.sdkClient)
|
|
119
|
+
for (const d of providers) {
|
|
120
|
+
this.providerMetadataCache.set(d.key, d)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const metadata = this.providerMetadataCache.get(provider)
|
|
124
|
+
if (!metadata) {
|
|
125
|
+
const error = new PerpsError(
|
|
126
|
+
PerpsErrorCode.SDKError,
|
|
127
|
+
`Unsupported provider: ${provider}`
|
|
128
|
+
)
|
|
129
|
+
error.tool = '@lifi/perps-sdk'
|
|
130
|
+
throw error
|
|
132
131
|
}
|
|
132
|
+
return metadata
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
136
|
+
* Resolve the registered provider plugin for `provider`, throwing a
|
|
137
|
+
* `PerpsError` when the caller has not registered one via the SDK's
|
|
138
|
+
* `providers` option. The plugin owns signer identity and write-side signing.
|
|
138
139
|
*/
|
|
139
|
-
|
|
140
|
-
return
|
|
140
|
+
private requireProvider(provider: string): PerpsProvider {
|
|
141
|
+
return resolveProvider(this.sdkClient, provider)
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
/**
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
145
|
+
* Ask the provider plugin for the signer-bearing wire fields of `action` —
|
|
146
|
+
* the on-wire `signerAddress` and any signer-derived params (e.g.
|
|
147
|
+
* Hyperliquid's `agentAddress` for `APPROVE_AGENT`). Forwards the descriptor's
|
|
148
|
+
* `signers` so the plugin can branch on signer role. Returns empty when the
|
|
149
|
+
* plugin signs as the user or with a non-EVM credential. Core constructs no
|
|
150
|
+
* `signerAddress` itself; signer identity is plugin-owned.
|
|
147
151
|
*/
|
|
148
|
-
async
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
private async resolveActionRequest(
|
|
153
|
+
provider: string,
|
|
154
|
+
descriptor: ProviderAction,
|
|
155
|
+
address: Address
|
|
156
|
+
): Promise<ActionSignerContribution> {
|
|
157
|
+
const plugin = this.requireProvider(provider)
|
|
158
|
+
if (typeof plugin.resolveActionRequest !== 'function') {
|
|
159
|
+
return {}
|
|
160
|
+
}
|
|
161
|
+
return plugin.resolveActionRequest(
|
|
162
|
+
descriptor.type,
|
|
163
|
+
address,
|
|
164
|
+
descriptor.signers
|
|
165
|
+
)
|
|
151
166
|
}
|
|
152
167
|
|
|
153
168
|
/**
|
|
154
|
-
*
|
|
169
|
+
* Delegate signing of `actions` to the provider plugin. The plugin owns
|
|
170
|
+
* every signing arm and branches on the descriptor's `signers` internally,
|
|
171
|
+
* reading the end-user's wallet from the {@link SignActionsContext} when an
|
|
172
|
+
* arm signs as the user.
|
|
155
173
|
*/
|
|
156
|
-
async
|
|
157
|
-
|
|
174
|
+
private async delegateSignActions(
|
|
175
|
+
provider: string,
|
|
176
|
+
address: Address,
|
|
177
|
+
descriptor: ProviderAction,
|
|
178
|
+
actions: ActionStep[]
|
|
179
|
+
): Promise<SignedActionStep[]> {
|
|
180
|
+
const plugin = this.requireProvider(provider)
|
|
181
|
+
if (typeof plugin.signActions !== 'function') {
|
|
182
|
+
throw new PerpsError(
|
|
183
|
+
PerpsErrorCode.SDKError,
|
|
184
|
+
`Provider '${provider}' does not implement signActions for ` +
|
|
185
|
+
`signingMethod '${descriptor.signingMethod}'.`
|
|
186
|
+
)
|
|
187
|
+
}
|
|
188
|
+
return plugin.signActions(
|
|
189
|
+
descriptor.signingMethod,
|
|
190
|
+
actions,
|
|
191
|
+
address,
|
|
192
|
+
this.buildSignActionsContext(descriptor)
|
|
193
|
+
)
|
|
158
194
|
}
|
|
159
195
|
|
|
160
196
|
/**
|
|
161
|
-
*
|
|
162
|
-
*
|
|
197
|
+
* Assemble the per-call context the provider plugin needs in order to sign:
|
|
198
|
+
* the end-user's wallet and the descriptor's declared `signers`. Core
|
|
199
|
+
* forwards `signers` as data so the plugin can pick WHO signs; it does not
|
|
200
|
+
* branch on them. Provider-owned session credentials (the Hyperliquid agent
|
|
201
|
+
* keypair, Lighter's API key) are resolved inside the provider's
|
|
202
|
+
* `signActions`, not threaded through here.
|
|
163
203
|
*/
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
204
|
+
private buildSignActionsContext(
|
|
205
|
+
descriptor: ProviderAction
|
|
206
|
+
): SignActionsContext {
|
|
207
|
+
const ctx: SignActionsContext = { signers: descriptor.signers }
|
|
208
|
+
if (this.sdkClient.userWallet !== undefined) {
|
|
209
|
+
ctx.userWallet = this.sdkClient.userWallet
|
|
210
|
+
}
|
|
211
|
+
return ctx
|
|
167
212
|
}
|
|
168
213
|
|
|
169
214
|
/**
|
|
170
|
-
*
|
|
215
|
+
* Sign a single provider setup action step by delegating to the provider
|
|
216
|
+
* plugin, which branches on the step's signing scheme internally. Lets
|
|
217
|
+
* consumers collect signed setup actions without embedding per-method
|
|
218
|
+
* signing logic.
|
|
171
219
|
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
220
|
+
* @throws {PerpsError} When the step's action is not declared by the provider.
|
|
221
|
+
* @public
|
|
222
|
+
*/
|
|
223
|
+
async signProviderSetupAction(
|
|
224
|
+
provider: string,
|
|
225
|
+
address: Address,
|
|
226
|
+
step: ActionStep
|
|
227
|
+
): Promise<SignedActionStep> {
|
|
228
|
+
const metadata = await this.getProviderMetadata(provider)
|
|
229
|
+
const descriptor = findActionDescriptor(metadata, step.action)
|
|
230
|
+
const [signed] = await this.delegateSignActions(
|
|
231
|
+
provider,
|
|
232
|
+
address,
|
|
233
|
+
descriptor,
|
|
234
|
+
[step]
|
|
235
|
+
)
|
|
236
|
+
return signed
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Build (but do not sign or submit) the unsigned action steps for `action`,
|
|
241
|
+
* letting the provider plugin contribute any signer-bearing request fields.
|
|
174
242
|
*
|
|
175
|
-
* @
|
|
176
|
-
* @returns Authorization actions with typed data for signing
|
|
243
|
+
* @public
|
|
177
244
|
*/
|
|
178
|
-
async
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
params.
|
|
187
|
-
|
|
245
|
+
async buildAction<T extends ActionType>(
|
|
246
|
+
action: T,
|
|
247
|
+
params: { provider: string; address: Address; params: ActionParamsMap[T] }
|
|
248
|
+
): Promise<CreateActionResponse> {
|
|
249
|
+
const metadata = await this.getProviderMetadata(params.provider)
|
|
250
|
+
const descriptor = findActionDescriptor(metadata, action)
|
|
251
|
+
const { signerAddress, params: signerParams } =
|
|
252
|
+
await this.resolveActionRequest(
|
|
253
|
+
params.provider,
|
|
254
|
+
descriptor,
|
|
255
|
+
params.address
|
|
188
256
|
)
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
return createAuthorization(this.sdkClient, {
|
|
193
|
-
...params,
|
|
257
|
+
return createAction(this.sdkClient, {
|
|
258
|
+
provider: params.provider,
|
|
259
|
+
address: params.address,
|
|
194
260
|
signerAddress,
|
|
261
|
+
action,
|
|
262
|
+
params: {
|
|
263
|
+
...params.params,
|
|
264
|
+
...signerParams,
|
|
265
|
+
} as ActionParamsMap[T],
|
|
195
266
|
})
|
|
196
267
|
}
|
|
197
268
|
|
|
198
269
|
/**
|
|
199
|
-
*
|
|
270
|
+
* Fetch the user's account state from the backend and attach the
|
|
271
|
+
* SDK-projected `settings` array — one `AccountConfigSetting` per
|
|
272
|
+
* descriptor on `Provider.setup` + `Provider.options`. Callers read
|
|
273
|
+
* `result.settings` directly without re-deriving values from the typed
|
|
274
|
+
* `AccountConfig`.
|
|
200
275
|
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
276
|
+
* @throws {PerpsError} When the provider plugin is not registered, or the
|
|
277
|
+
* backend account fetch fails.
|
|
278
|
+
* @public
|
|
279
|
+
*/
|
|
280
|
+
async getAccount(params: {
|
|
281
|
+
provider: string
|
|
282
|
+
address: Address
|
|
283
|
+
}): Promise<GetAccountResult> {
|
|
284
|
+
const plugin = this.requireProvider(params.provider)
|
|
285
|
+
const [response, metadata] = await Promise.all([
|
|
286
|
+
fetchAccount(this.sdkClient, params),
|
|
287
|
+
this.getProviderMetadata(params.provider),
|
|
288
|
+
])
|
|
289
|
+
const settings = plugin.projectConfig(
|
|
290
|
+
response.config,
|
|
291
|
+
metadata.setup,
|
|
292
|
+
metadata.options
|
|
293
|
+
)
|
|
294
|
+
return { ...response, settings }
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Roll an already-fetched {@link AccountResponse} (plus its positions) up
|
|
299
|
+
* into an {@link AccountSummary}, delegating to the owning provider so the
|
|
300
|
+
* venue-specific collateral and margin semantics are applied correctly.
|
|
301
|
+
*/
|
|
302
|
+
getAccountSummary(
|
|
303
|
+
account: AccountResponse,
|
|
304
|
+
positions: Position[]
|
|
305
|
+
): AccountSummary {
|
|
306
|
+
return this.requireProvider(account.provider).getAccountSummary(
|
|
307
|
+
account,
|
|
308
|
+
positions
|
|
309
|
+
)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Thin existence check for a provider account at `address`. Returns
|
|
314
|
+
* `true` when `getAccount` resolves, `false` when the backend reports
|
|
315
|
+
* `PerpsErrorCode.AccountNotFound`, and re-throws on any other error
|
|
316
|
+
* (transport failures, validation errors, server errors).
|
|
203
317
|
*
|
|
204
|
-
* @
|
|
318
|
+
* @throws {PerpsError} On any backend error other than
|
|
319
|
+
* `PerpsErrorCode.AccountNotFound`.
|
|
320
|
+
* @public
|
|
205
321
|
*/
|
|
206
|
-
async
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
322
|
+
async accountExists(provider: string, address: Address): Promise<boolean> {
|
|
323
|
+
try {
|
|
324
|
+
await fetchAccount(this.sdkClient, { provider, address })
|
|
325
|
+
return true
|
|
326
|
+
} catch (err) {
|
|
327
|
+
if (
|
|
328
|
+
err instanceof PerpsError &&
|
|
329
|
+
err.code === PerpsErrorCode.AccountNotFound
|
|
330
|
+
) {
|
|
331
|
+
return false
|
|
332
|
+
}
|
|
333
|
+
throw err
|
|
218
334
|
}
|
|
219
|
-
|
|
220
|
-
return submitAuthorization(this.sdkClient, { ...params, signerAddress })
|
|
221
335
|
}
|
|
222
336
|
|
|
223
337
|
/**
|
|
224
|
-
*
|
|
338
|
+
* Return the unsatisfied entries on `Provider.setup` for this account as a
|
|
339
|
+
* flat, self-describing list. Trading is gated on `isReady === true`.
|
|
225
340
|
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
341
|
+
* `Provider.options` descriptors are NEVER returned here — options are
|
|
342
|
+
* post-setup tunables and never gate trading. Option state is surfaced
|
|
343
|
+
* separately via `getAccount().settings`.
|
|
228
344
|
*
|
|
229
|
-
* @
|
|
230
|
-
* @returns Order actions with typed data for signing
|
|
345
|
+
* @public
|
|
231
346
|
*/
|
|
232
|
-
async
|
|
233
|
-
const
|
|
234
|
-
let signerAddress: Address | undefined
|
|
235
|
-
|
|
236
|
-
if (mode === 'USER_AGENT') {
|
|
237
|
-
const agent = await this.sdkClient.agentManager.getAgent(
|
|
238
|
-
params.address,
|
|
239
|
-
params.dex
|
|
240
|
-
)
|
|
241
|
-
signerAddress = agent.address
|
|
242
|
-
}
|
|
347
|
+
async checkSetup(params: GetSetupParams): Promise<ProviderSetup> {
|
|
348
|
+
const { provider, address } = params
|
|
243
349
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
price: params.price,
|
|
254
|
-
leverage: params.leverage,
|
|
255
|
-
reduceOnly: params.reduceOnly,
|
|
256
|
-
timeInForce: params.timeInForce,
|
|
257
|
-
expiresAt: params.expiresAt,
|
|
258
|
-
takeProfit: params.takeProfit,
|
|
259
|
-
stopLoss: params.stopLoss,
|
|
260
|
-
})
|
|
350
|
+
// The backend filters already-satisfied setup actions and returns typed
|
|
351
|
+
// data for those still outstanding; each plugin contributes its own
|
|
352
|
+
// signer-bearing request fields.
|
|
353
|
+
const { actions } = await this.buildProviderSetup({ provider, address })
|
|
354
|
+
|
|
355
|
+
return {
|
|
356
|
+
setup: actions,
|
|
357
|
+
isReady: actions.length === 0,
|
|
358
|
+
}
|
|
261
359
|
}
|
|
262
360
|
|
|
263
361
|
/**
|
|
264
|
-
* Build
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
362
|
+
* Build the unsigned setup `ActionStep`s still outstanding for an account,
|
|
363
|
+
* ordered by descriptor `sequence`. The backend filters already-satisfied
|
|
364
|
+
* setup; each plugin contributes its own signer-bearing request fields and
|
|
365
|
+
* any local-state params (e.g. Lighter's known pubkey).
|
|
268
366
|
*
|
|
269
|
-
* @
|
|
270
|
-
* @returns Cancel actions with typed data for signing
|
|
367
|
+
* @public
|
|
271
368
|
*/
|
|
272
|
-
async
|
|
273
|
-
params:
|
|
274
|
-
): Promise<
|
|
275
|
-
const
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
369
|
+
async buildProviderSetup(
|
|
370
|
+
params: BuildProviderSetupParams
|
|
371
|
+
): Promise<CreateActionResponse> {
|
|
372
|
+
const { provider, address } = params
|
|
373
|
+
|
|
374
|
+
const metadata = await this.getProviderMetadata(provider)
|
|
375
|
+
const orderedSetup = [...metadata.setup].sort(
|
|
376
|
+
(a, b) =>
|
|
377
|
+
(a.sequence ?? Number.MAX_SAFE_INTEGER) -
|
|
378
|
+
(b.sequence ?? Number.MAX_SAFE_INTEGER)
|
|
379
|
+
)
|
|
380
|
+
|
|
381
|
+
const plugin = this.sdkClient.getProvider(provider)
|
|
382
|
+
const allActions: ActionStep[] = []
|
|
383
|
+
for (const descriptor of orderedSetup) {
|
|
384
|
+
const action = descriptor.type
|
|
385
|
+
const { signerAddress, params: signerParams } =
|
|
386
|
+
await this.resolveActionRequest(provider, descriptor, address)
|
|
387
|
+
const localParams = plugin?.resolveSetupParams
|
|
388
|
+
? await plugin.resolveSetupParams(action, address)
|
|
389
|
+
: {}
|
|
390
|
+
const { actions } = await createAction(this.sdkClient, {
|
|
391
|
+
provider,
|
|
392
|
+
address,
|
|
393
|
+
signerAddress,
|
|
394
|
+
action,
|
|
395
|
+
params: {
|
|
396
|
+
...signerParams,
|
|
397
|
+
...localParams,
|
|
398
|
+
} as Record<string, never>,
|
|
399
|
+
})
|
|
400
|
+
allActions.push(...actions)
|
|
284
401
|
}
|
|
285
402
|
|
|
286
|
-
return
|
|
287
|
-
dex: params.dex,
|
|
288
|
-
address: params.address,
|
|
289
|
-
signerAddress,
|
|
290
|
-
ids: params.ids,
|
|
291
|
-
})
|
|
403
|
+
return { actions: allActions }
|
|
292
404
|
}
|
|
293
405
|
|
|
294
406
|
/**
|
|
295
|
-
*
|
|
407
|
+
* Submit the signed setup steps returned by `checkSetup` (and signed by the
|
|
408
|
+
* caller / `signProviderSetupAction`). Routes the batch on the first step's
|
|
409
|
+
* action and lets the plugin contribute that action's `signerAddress`.
|
|
410
|
+
* Throws on any per-step venue rejection.
|
|
296
411
|
*
|
|
297
|
-
*
|
|
298
|
-
*
|
|
299
|
-
* @param params - Order parameters
|
|
300
|
-
* @returns Order submission results
|
|
301
|
-
* @throws {PerpsError} If not in USER_AGENT mode
|
|
412
|
+
* @public
|
|
302
413
|
*/
|
|
303
|
-
async
|
|
304
|
-
|
|
414
|
+
async executeProviderSetup(
|
|
415
|
+
params: ExecuteProviderSetupParams
|
|
416
|
+
): Promise<ExecuteProviderSetupResult> {
|
|
417
|
+
const { provider, address, setup, signedActions } = params
|
|
305
418
|
|
|
306
|
-
if (
|
|
307
|
-
|
|
308
|
-
PerpsErrorCode.ValidationError,
|
|
309
|
-
`${PerpsErrorMessage.InvalidSigningMode} placeOrder() requires USER_AGENT mode. Use createOrder() + submitOrder() for USER mode.`
|
|
310
|
-
)
|
|
419
|
+
if (signedActions.length === 0) {
|
|
420
|
+
return { results: { results: [] } }
|
|
311
421
|
}
|
|
312
422
|
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
|
|
423
|
+
const action = setup[0]?.action ?? signedActions[0].action
|
|
424
|
+
const metadata = await this.getProviderMetadata(provider)
|
|
425
|
+
const descriptor = findActionDescriptor(metadata, action)
|
|
426
|
+
const { signerAddress } = await this.resolveActionRequest(
|
|
427
|
+
provider,
|
|
428
|
+
descriptor,
|
|
429
|
+
address
|
|
316
430
|
)
|
|
317
431
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
type: params.type,
|
|
327
|
-
size: params.size,
|
|
328
|
-
price: params.price,
|
|
329
|
-
leverage: params.leverage,
|
|
330
|
-
reduceOnly: params.reduceOnly,
|
|
331
|
-
timeInForce: params.timeInForce,
|
|
332
|
-
expiresAt: params.expiresAt,
|
|
333
|
-
takeProfit: params.takeProfit,
|
|
334
|
-
stopLoss: params.stopLoss,
|
|
432
|
+
const results = await executeAction(this.sdkClient, {
|
|
433
|
+
provider,
|
|
434
|
+
address,
|
|
435
|
+
// The submitting account: the plugin-resolved signer (Hyperliquid's
|
|
436
|
+
// agent) when present, else the end-user's address.
|
|
437
|
+
signerAddress: signerAddress ?? address,
|
|
438
|
+
action,
|
|
439
|
+
actions: signedActions,
|
|
335
440
|
})
|
|
336
441
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
typedData: a.typedData,
|
|
342
|
-
signature: await signTypedData(agent.privateKey, a.typedData),
|
|
343
|
-
}))
|
|
344
|
-
)
|
|
442
|
+
const failure = results.results.find((r) => !r.success)
|
|
443
|
+
if (failure) {
|
|
444
|
+
throw new PerpsError(PerpsErrorCode.ExchangeRejected, failure.error)
|
|
445
|
+
}
|
|
345
446
|
|
|
346
|
-
|
|
347
|
-
return submitOrder(this.sdkClient, {
|
|
348
|
-
dex: params.dex,
|
|
349
|
-
address: params.address,
|
|
350
|
-
signerAddress: agent.address,
|
|
351
|
-
actions: signedActions,
|
|
352
|
-
})
|
|
447
|
+
return { results }
|
|
353
448
|
}
|
|
354
449
|
|
|
355
450
|
/**
|
|
356
|
-
*
|
|
451
|
+
* Sign and submit one pre-staged setup `ActionStep` end-to-end.
|
|
357
452
|
*
|
|
358
|
-
*
|
|
453
|
+
* The caller is expected to have already obtained the step from a prior
|
|
454
|
+
* {@link checkSetup} call (typically cached by the widget's react-query) —
|
|
455
|
+
* we do NOT refetch. This avoids the double `createAction` round-trip and
|
|
456
|
+
* keeps the nonce that was allocated at staging time committed all the way
|
|
457
|
+
* through submit. If the cached step has gone stale (Lighter's `/nextNonce`
|
|
458
|
+
* advanced underneath us), `executeProviderSetup` will surface a nonce
|
|
459
|
+
* conflict that the caller invalidates on, refetches `checkSetup`, and
|
|
460
|
+
* retries with a fresh step.
|
|
359
461
|
*
|
|
360
|
-
* @
|
|
361
|
-
*
|
|
362
|
-
* @
|
|
462
|
+
* @throws {PerpsError} When the step's action is not in the provider's
|
|
463
|
+
* `setup` descriptors.
|
|
464
|
+
* @public
|
|
363
465
|
*/
|
|
364
|
-
async
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
466
|
+
async executeProviderSetupAction(params: {
|
|
467
|
+
provider: string
|
|
468
|
+
address: Address
|
|
469
|
+
step: ActionStep
|
|
470
|
+
}): Promise<void> {
|
|
471
|
+
const { provider, address, step } = params
|
|
472
|
+
|
|
473
|
+
const metadata = await this.getProviderMetadata(provider)
|
|
474
|
+
const descriptor = metadata.setup.find((d) => d.type === step.action)
|
|
475
|
+
if (!descriptor) {
|
|
368
476
|
throw new PerpsError(
|
|
369
|
-
PerpsErrorCode.
|
|
370
|
-
|
|
477
|
+
PerpsErrorCode.SDKError,
|
|
478
|
+
`Action '${step.action}' is not in '${provider}'.setup`
|
|
371
479
|
)
|
|
372
480
|
}
|
|
373
481
|
|
|
374
|
-
const
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
const { actions } = await cancelOrder(this.sdkClient, {
|
|
381
|
-
dex: params.dex,
|
|
382
|
-
address: params.address,
|
|
383
|
-
signerAddress: agent.address,
|
|
384
|
-
ids: params.ids,
|
|
385
|
-
})
|
|
386
|
-
|
|
387
|
-
// 2. Sign each action with agent key
|
|
388
|
-
const signedActions: SignedOrderAction[] = await Promise.all(
|
|
389
|
-
actions.map(async (a) => ({
|
|
390
|
-
action: a.action as OrderActionType,
|
|
391
|
-
typedData: a.typedData,
|
|
392
|
-
signature: await signTypedData(agent.privateKey, a.typedData),
|
|
393
|
-
}))
|
|
394
|
-
)
|
|
395
|
-
|
|
396
|
-
// 3. Submit
|
|
397
|
-
return submitOrder(this.sdkClient, {
|
|
398
|
-
dex: params.dex,
|
|
399
|
-
address: params.address,
|
|
400
|
-
signerAddress: agent.address,
|
|
401
|
-
actions: signedActions,
|
|
482
|
+
const signed = await this.signProviderSetupAction(provider, address, step)
|
|
483
|
+
await this.executeProviderSetup({
|
|
484
|
+
provider,
|
|
485
|
+
address,
|
|
486
|
+
setup: [step],
|
|
487
|
+
signedActions: [signed],
|
|
402
488
|
})
|
|
403
489
|
}
|
|
404
490
|
|
|
405
491
|
/**
|
|
406
|
-
*
|
|
492
|
+
* Sign and submit a single provider-option change (a `Provider.options`
|
|
493
|
+
* tunable such as Lighter `ACCOUNT_TYPE` or Hyperliquid `ACCOUNT_MODE`)
|
|
494
|
+
* end-to-end, throwing on a venue rejection.
|
|
495
|
+
*
|
|
496
|
+
* Options are dispatched through the same {@link execute} pipeline as
|
|
497
|
+
* trades, but unlike a trade an option change is a single mandatory action:
|
|
498
|
+
* a per-action `success: false` (returned as a 200 OK) means the user's
|
|
499
|
+
* selection was rejected and must surface, not be silently dropped. This
|
|
500
|
+
* wrapper inspects the result and throws a {@link PerpsError} carrying the
|
|
501
|
+
* venue `error`, giving options the same throw contract that setup has via
|
|
502
|
+
* {@link executeProviderSetupAction}. The only structural difference is that
|
|
503
|
+
* an option carries `params` (the selected value) rather than a pre-staged
|
|
504
|
+
* step.
|
|
407
505
|
*
|
|
408
|
-
*
|
|
409
|
-
*
|
|
506
|
+
* `execute` itself is unchanged — it still returns results without throwing,
|
|
507
|
+
* which the trade hooks rely on for partial-fill handling.
|
|
410
508
|
*
|
|
411
|
-
* @
|
|
509
|
+
* @throws {PerpsError} `PerpsErrorCode.ExchangeRejected` carrying the venue
|
|
510
|
+
* error when any returned result has `success: false`; also the errors
|
|
511
|
+
* `execute` itself can throw (unregistered provider, no signer, signing
|
|
512
|
+
* failure).
|
|
513
|
+
* @public
|
|
412
514
|
*/
|
|
413
|
-
async
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
515
|
+
async executeProviderOption<T extends ActionType>(params: {
|
|
516
|
+
provider: string
|
|
517
|
+
address: Address
|
|
518
|
+
action: T
|
|
519
|
+
params: ActionParamsMap[T]
|
|
520
|
+
}): Promise<void> {
|
|
521
|
+
const { results } = await this.execute(params)
|
|
522
|
+
const failure = results.find((r) => !r.success)
|
|
523
|
+
if (failure) {
|
|
524
|
+
throw new PerpsError(PerpsErrorCode.ExchangeRejected, failure.error)
|
|
525
|
+
}
|
|
417
526
|
}
|
|
418
527
|
|
|
419
528
|
/**
|
|
420
|
-
*
|
|
529
|
+
* Place a market or limit order. Convenience wrapper over {@link execute}
|
|
530
|
+
* with `ActionType.PLACE_ORDER`.
|
|
421
531
|
*
|
|
422
|
-
*
|
|
423
|
-
*
|
|
532
|
+
* @throws {PerpsError} When the provider is unregistered or the action
|
|
533
|
+
* cannot be signed/submitted.
|
|
534
|
+
* @example
|
|
535
|
+
* ```ts
|
|
536
|
+
* await client.placeOrder({
|
|
537
|
+
* provider: 'hyperliquid',
|
|
538
|
+
* address: '0xUser',
|
|
539
|
+
* market: { symbol: 'ETH' },
|
|
540
|
+
* side: 'buy',
|
|
541
|
+
* size: '0.1',
|
|
542
|
+
* })
|
|
543
|
+
* ```
|
|
544
|
+
* @public
|
|
545
|
+
*/
|
|
546
|
+
async placeOrder(params: PlaceOrderParams): Promise<ExecuteActionResponse> {
|
|
547
|
+
return this.execute({ ...params, action: ActionType.PLACE_ORDER, params })
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* Place a trigger (take-profit / stop-loss) order. Convenience wrapper over
|
|
552
|
+
* {@link execute} with `ActionType.PLACE_TRIGGER_ORDER`.
|
|
424
553
|
*
|
|
425
|
-
* @
|
|
426
|
-
*
|
|
554
|
+
* @throws {PerpsError} When the provider is unregistered or the action
|
|
555
|
+
* cannot be signed/submitted.
|
|
556
|
+
* @public
|
|
427
557
|
*/
|
|
428
|
-
async
|
|
429
|
-
params:
|
|
430
|
-
): Promise<
|
|
431
|
-
return
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
558
|
+
async placeTriggerOrder(
|
|
559
|
+
params: PlaceTriggerOrderParams
|
|
560
|
+
): Promise<ExecuteActionResponse> {
|
|
561
|
+
return this.execute({
|
|
562
|
+
...params,
|
|
563
|
+
action: ActionType.PLACE_TRIGGER_ORDER,
|
|
564
|
+
params,
|
|
435
565
|
})
|
|
436
566
|
}
|
|
437
567
|
|
|
438
568
|
/**
|
|
439
|
-
*
|
|
569
|
+
* Cancel one or more open orders. Convenience wrapper over {@link execute}
|
|
570
|
+
* with `ActionType.CANCEL_ORDER`.
|
|
440
571
|
*
|
|
441
|
-
*
|
|
442
|
-
*
|
|
443
|
-
* @
|
|
444
|
-
* @returns Withdrawal result
|
|
572
|
+
* @throws {PerpsError} When the provider is unregistered or the action
|
|
573
|
+
* cannot be signed/submitted.
|
|
574
|
+
* @public
|
|
445
575
|
*/
|
|
446
|
-
async
|
|
447
|
-
params:
|
|
448
|
-
): Promise<
|
|
449
|
-
return
|
|
576
|
+
async cancelOrders(
|
|
577
|
+
params: CancelOrdersParams
|
|
578
|
+
): Promise<ExecuteActionResponse> {
|
|
579
|
+
return this.execute({ ...params, action: ActionType.CANCEL_ORDER, params })
|
|
450
580
|
}
|
|
451
581
|
|
|
452
582
|
/**
|
|
453
|
-
*
|
|
454
|
-
*
|
|
455
|
-
* Uses the dex auth provider to determine what authorizations to request,
|
|
456
|
-
* then calls buildAuthorization — the backend filters already-valid auths
|
|
457
|
-
* and returns only what's needed.
|
|
583
|
+
* Modify one or more open orders. Convenience wrapper over {@link execute}
|
|
584
|
+
* with `ActionType.MODIFY_ORDER`.
|
|
458
585
|
*
|
|
459
|
-
* @
|
|
460
|
-
*
|
|
586
|
+
* @throws {PerpsError} When the provider is unregistered or the action
|
|
587
|
+
* cannot be signed/submitted.
|
|
588
|
+
* @public
|
|
461
589
|
*/
|
|
462
|
-
async
|
|
463
|
-
params:
|
|
464
|
-
): Promise<
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
const provider = getDexAuthProvider(dex)
|
|
468
|
-
|
|
469
|
-
// Ensure agent exists in USER_AGENT mode
|
|
470
|
-
let agentAddress: Address | undefined
|
|
471
|
-
if (mode === 'USER_AGENT') {
|
|
472
|
-
const agent = await this.sdkClient.agentManager.getOrCreateAgent(
|
|
473
|
-
address,
|
|
474
|
-
dex
|
|
475
|
-
)
|
|
476
|
-
agentAddress = agent.address
|
|
477
|
-
}
|
|
590
|
+
async modifyOrders(
|
|
591
|
+
params: ModifyOrdersParams
|
|
592
|
+
): Promise<ExecuteActionResponse> {
|
|
593
|
+
return this.execute({ ...params, action: ActionType.MODIFY_ORDER, params })
|
|
594
|
+
}
|
|
478
595
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
596
|
+
/**
|
|
597
|
+
* Add or remove isolated-position margin. Convenience wrapper over
|
|
598
|
+
* {@link execute} with `ActionType.UPDATE_POSITION_MARGIN`.
|
|
599
|
+
*
|
|
600
|
+
* @throws {PerpsError} When the provider is unregistered or the action
|
|
601
|
+
* cannot be signed/submitted.
|
|
602
|
+
* @public
|
|
603
|
+
*/
|
|
604
|
+
async updatePositionMargin(params: {
|
|
605
|
+
provider: string
|
|
606
|
+
address: Address
|
|
607
|
+
market: MarketRef
|
|
608
|
+
action: 'add' | 'remove'
|
|
609
|
+
amount: string
|
|
610
|
+
}): Promise<ExecuteActionResponse> {
|
|
611
|
+
return this.execute({
|
|
612
|
+
...params,
|
|
613
|
+
action: ActionType.UPDATE_POSITION_MARGIN,
|
|
614
|
+
params,
|
|
483
615
|
})
|
|
616
|
+
}
|
|
484
617
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
618
|
+
/**
|
|
619
|
+
* Withdraw funds from the provider account. Convenience wrapper over
|
|
620
|
+
* {@link execute} with `ActionType.WITHDRAWAL`.
|
|
621
|
+
*
|
|
622
|
+
* @throws {PerpsError} When the provider is unregistered or the action
|
|
623
|
+
* cannot be signed/submitted.
|
|
624
|
+
* @public
|
|
625
|
+
*/
|
|
626
|
+
async withdraw(params: WithdrawParams): Promise<ExecuteActionResponse> {
|
|
627
|
+
return this.execute({
|
|
628
|
+
provider: params.provider,
|
|
629
|
+
address: params.address,
|
|
630
|
+
action: ActionType.WITHDRAWAL,
|
|
631
|
+
params: params.withdrawal,
|
|
495
632
|
})
|
|
496
|
-
|
|
497
|
-
if (actions.length === 0) {
|
|
498
|
-
return { userAuthorizations: [], agentAuthorizations: [], isReady: true }
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
// Categorize backend results using provider's original key sets
|
|
502
|
-
const agentKeys = new Set(authInputs.agent.map((a) => a.key))
|
|
503
|
-
const userAuthorizations = actions.filter((a) => !agentKeys.has(a.action))
|
|
504
|
-
const agentAuthorizations = actions.filter((a) => agentKeys.has(a.action))
|
|
505
|
-
|
|
506
|
-
return {
|
|
507
|
-
userAuthorizations,
|
|
508
|
-
agentAuthorizations,
|
|
509
|
-
isReady: false,
|
|
510
|
-
}
|
|
511
633
|
}
|
|
512
634
|
|
|
513
635
|
/**
|
|
514
|
-
* Execute
|
|
515
|
-
*
|
|
636
|
+
* Execute any action through the SDK's signing pipeline: fetch the unsigned
|
|
637
|
+
* steps, delegate signing to the provider plugin (which branches on the
|
|
638
|
+
* descriptor's scheme and signer internally), and submit. Core stays
|
|
639
|
+
* signer-agnostic — the plugin owns WHO signs and HOW.
|
|
516
640
|
*
|
|
517
|
-
* @
|
|
518
|
-
*
|
|
641
|
+
* @throws {PerpsError} When the action is not declared by the provider,
|
|
642
|
+
* the plugin cannot sign it, or submission fails.
|
|
643
|
+
* @public
|
|
519
644
|
*/
|
|
520
|
-
async
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
return { userResults }
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
// 2. Auto-sign and submit agent authorizations (if any)
|
|
548
|
-
// Typed data already built by getRequiredAuthorizations — just sign and submit
|
|
549
|
-
if (required.agentAuthorizations.length > 0 && mode === 'USER_AGENT') {
|
|
550
|
-
const agent = await this.sdkClient.agentManager.getAgent(address, dex)
|
|
551
|
-
|
|
552
|
-
const signedAgentActions: SignedAuthorization[] = await Promise.all(
|
|
553
|
-
required.agentAuthorizations.map(async (action) => ({
|
|
554
|
-
action: action.action,
|
|
555
|
-
typedData: action.typedData,
|
|
556
|
-
signature: await signTypedData(agent.privateKey, action.typedData),
|
|
557
|
-
}))
|
|
558
|
-
)
|
|
559
|
-
|
|
560
|
-
const agentResults = await submitAuthorization(this.sdkClient, {
|
|
561
|
-
dex,
|
|
562
|
-
address,
|
|
563
|
-
signerAddress: agent.address,
|
|
564
|
-
actions: signedAgentActions,
|
|
565
|
-
})
|
|
645
|
+
async execute<T extends ActionType>(params: {
|
|
646
|
+
provider: string
|
|
647
|
+
address: Address
|
|
648
|
+
action: T
|
|
649
|
+
params: ActionParamsMap[T]
|
|
650
|
+
}): Promise<ExecuteActionResponse> {
|
|
651
|
+
const { provider, address, action } = params
|
|
652
|
+
const metadata = await this.getProviderMetadata(provider)
|
|
653
|
+
const descriptor = findActionDescriptor(metadata, action)
|
|
654
|
+
|
|
655
|
+
const { signerAddress, params: signerParams } =
|
|
656
|
+
await this.resolveActionRequest(provider, descriptor, address)
|
|
657
|
+
|
|
658
|
+
const { actions } = await createAction(this.sdkClient, {
|
|
659
|
+
provider,
|
|
660
|
+
address,
|
|
661
|
+
signerAddress,
|
|
662
|
+
action,
|
|
663
|
+
params: {
|
|
664
|
+
...params.params,
|
|
665
|
+
...signerParams,
|
|
666
|
+
} as ActionParamsMap[T],
|
|
667
|
+
})
|
|
566
668
|
|
|
567
|
-
|
|
568
|
-
|
|
669
|
+
const signedActions = await this.delegateSignActions(
|
|
670
|
+
provider,
|
|
671
|
+
address,
|
|
672
|
+
descriptor,
|
|
673
|
+
actions
|
|
674
|
+
)
|
|
569
675
|
|
|
570
|
-
return {
|
|
676
|
+
return executeAction(this.sdkClient, {
|
|
677
|
+
provider,
|
|
678
|
+
address,
|
|
679
|
+
// The submitting account: the plugin-resolved signer (Hyperliquid's
|
|
680
|
+
// agent) when present, else the end-user's address.
|
|
681
|
+
signerAddress: signerAddress ?? address,
|
|
682
|
+
action,
|
|
683
|
+
actions: signedActions,
|
|
684
|
+
})
|
|
571
685
|
}
|
|
572
686
|
}
|