@lifi/perps-sdk 0.1.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +54 -0
- package/dist/cjs/agent/AgentManager.d.ts +15 -0
- package/dist/cjs/agent/AgentManager.d.ts.map +1 -0
- package/dist/cjs/agent/AgentManager.js +80 -0
- package/dist/cjs/agent/AgentManager.js.map +1 -0
- package/dist/cjs/agent/storage.d.ts +4 -0
- package/dist/cjs/agent/storage.d.ts.map +1 -0
- package/dist/cjs/agent/storage.js +47 -0
- package/dist/cjs/agent/storage.js.map +1 -0
- package/dist/cjs/agent/types.d.ts +11 -0
- package/dist/cjs/agent/types.d.ts.map +1 -0
- package/dist/cjs/agent/types.js +3 -0
- package/dist/cjs/agent/types.js.map +1 -0
- package/dist/cjs/client/PerpsClient.d.ts +29 -0
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -0
- package/dist/cjs/client/PerpsClient.js +328 -0
- package/dist/cjs/client/PerpsClient.js.map +1 -0
- package/dist/cjs/client/createPerpsClient.d.ts +30 -0
- package/dist/cjs/client/createPerpsClient.d.ts.map +1 -0
- package/dist/cjs/client/createPerpsClient.js +56 -0
- package/dist/cjs/client/createPerpsClient.js.map +1 -0
- package/dist/cjs/client/types.d.ts +61 -0
- package/dist/cjs/client/types.d.ts.map +1 -0
- package/dist/cjs/client/types.js +3 -0
- package/dist/cjs/client/types.js.map +1 -0
- package/dist/cjs/errors/AgentError.d.ts +10 -0
- package/dist/cjs/errors/AgentError.d.ts.map +1 -0
- package/dist/cjs/errors/AgentError.js +23 -0
- package/dist/cjs/errors/AgentError.js.map +1 -0
- package/dist/cjs/errors/HTTPError.d.ts +11 -0
- package/dist/cjs/errors/HTTPError.d.ts.map +1 -0
- package/dist/cjs/errors/HTTPError.js +62 -0
- package/dist/cjs/errors/HTTPError.js.map +1 -0
- package/dist/cjs/errors/PerpsError.d.ts +9 -0
- package/dist/cjs/errors/PerpsError.d.ts.map +1 -0
- package/dist/cjs/errors/PerpsError.js +27 -0
- package/dist/cjs/errors/PerpsError.js.map +1 -0
- package/dist/cjs/errors/PerpsSDKError.d.ts +9 -0
- package/dist/cjs/errors/PerpsSDKError.d.ts.map +1 -0
- package/dist/cjs/errors/PerpsSDKError.js +36 -0
- package/dist/cjs/errors/PerpsSDKError.js.map +1 -0
- package/dist/cjs/errors/ServerError.d.ts +10 -0
- package/dist/cjs/errors/ServerError.d.ts.map +1 -0
- package/dist/cjs/errors/ServerError.js +24 -0
- package/dist/cjs/errors/ServerError.js.map +1 -0
- package/dist/cjs/errors/ValidationError.d.ts +9 -0
- package/dist/cjs/errors/ValidationError.d.ts.map +1 -0
- package/dist/cjs/errors/ValidationError.js +23 -0
- package/dist/cjs/errors/ValidationError.js.map +1 -0
- package/dist/cjs/errors/constants.d.ts +15 -0
- package/dist/cjs/errors/constants.d.ts.map +1 -0
- package/dist/cjs/errors/constants.js +20 -0
- package/dist/cjs/errors/constants.js.map +1 -0
- package/dist/cjs/errors/utils/rootCause.d.ts +6 -0
- package/dist/cjs/errors/utils/rootCause.d.ts.map +1 -0
- package/dist/cjs/errors/utils/rootCause.js +41 -0
- package/dist/cjs/errors/utils/rootCause.js.map +1 -0
- package/dist/cjs/index.d.ts +46 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +82 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/services/cancelOrder.d.ts +10 -0
- package/dist/cjs/services/cancelOrder.d.ts.map +1 -0
- package/dist/cjs/services/cancelOrder.js +16 -0
- package/dist/cjs/services/cancelOrder.js.map +1 -0
- package/dist/cjs/services/createAuthorization.d.ts +10 -0
- package/dist/cjs/services/createAuthorization.d.ts.map +1 -0
- package/dist/cjs/services/createAuthorization.js +16 -0
- package/dist/cjs/services/createAuthorization.js.map +1 -0
- package/dist/cjs/services/createOrder.d.ts +21 -0
- package/dist/cjs/services/createOrder.d.ts.map +1 -0
- package/dist/cjs/services/createOrder.js +27 -0
- package/dist/cjs/services/createOrder.js.map +1 -0
- package/dist/cjs/services/getAccount.d.ts +8 -0
- package/dist/cjs/services/getAccount.d.ts.map +1 -0
- package/dist/cjs/services/getAccount.js +12 -0
- package/dist/cjs/services/getAccount.js.map +1 -0
- package/dist/cjs/services/getDexes.d.ts +4 -0
- package/dist/cjs/services/getDexes.d.ts.map +1 -0
- package/dist/cjs/services/getDexes.js +8 -0
- package/dist/cjs/services/getDexes.js.map +1 -0
- package/dist/cjs/services/getHistory.d.ts +10 -0
- package/dist/cjs/services/getHistory.d.ts.map +1 -0
- package/dist/cjs/services/getHistory.js +14 -0
- package/dist/cjs/services/getHistory.js.map +1 -0
- package/dist/cjs/services/getMarket.d.ts +8 -0
- package/dist/cjs/services/getMarket.d.ts.map +1 -0
- package/dist/cjs/services/getMarket.js +11 -0
- package/dist/cjs/services/getMarket.js.map +1 -0
- package/dist/cjs/services/getMarkets.d.ts +7 -0
- package/dist/cjs/services/getMarkets.d.ts.map +1 -0
- package/dist/cjs/services/getMarkets.js +9 -0
- package/dist/cjs/services/getMarkets.js.map +1 -0
- package/dist/cjs/services/getOhlcv.d.ts +12 -0
- package/dist/cjs/services/getOhlcv.d.ts.map +1 -0
- package/dist/cjs/services/getOhlcv.js +15 -0
- package/dist/cjs/services/getOhlcv.js.map +1 -0
- package/dist/cjs/services/getOrder.d.ts +9 -0
- package/dist/cjs/services/getOrder.d.ts.map +1 -0
- package/dist/cjs/services/getOrder.js +12 -0
- package/dist/cjs/services/getOrder.js.map +1 -0
- package/dist/cjs/services/getOrderbook.d.ts +9 -0
- package/dist/cjs/services/getOrderbook.d.ts.map +1 -0
- package/dist/cjs/services/getOrderbook.js +12 -0
- package/dist/cjs/services/getOrderbook.js.map +1 -0
- package/dist/cjs/services/getPrices.d.ts +8 -0
- package/dist/cjs/services/getPrices.d.ts.map +1 -0
- package/dist/cjs/services/getPrices.js +12 -0
- package/dist/cjs/services/getPrices.js.map +1 -0
- package/dist/cjs/services/submitAuthorization.d.ts +10 -0
- package/dist/cjs/services/submitAuthorization.d.ts.map +1 -0
- package/dist/cjs/services/submitAuthorization.js +16 -0
- package/dist/cjs/services/submitAuthorization.js.map +1 -0
- package/dist/cjs/services/submitOrder.d.ts +10 -0
- package/dist/cjs/services/submitOrder.d.ts.map +1 -0
- package/dist/cjs/services/submitOrder.js +16 -0
- package/dist/cjs/services/submitOrder.js.map +1 -0
- package/dist/cjs/utils/request.d.ts +7 -0
- package/dist/cjs/utils/request.d.ts.map +1 -0
- package/dist/cjs/utils/request.js +63 -0
- package/dist/cjs/utils/request.js.map +1 -0
- package/dist/cjs/utils/signTypedData.d.ts +3 -0
- package/dist/cjs/utils/signTypedData.d.ts.map +1 -0
- package/dist/cjs/utils/signTypedData.js +15 -0
- package/dist/cjs/utils/signTypedData.js.map +1 -0
- package/dist/cjs/utils/sleep.d.ts +2 -0
- package/dist/cjs/utils/sleep.d.ts.map +1 -0
- package/dist/cjs/utils/sleep.js +6 -0
- package/dist/cjs/utils/sleep.js.map +1 -0
- package/dist/cjs/version.d.ts +3 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +6 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/agent/AgentManager.d.ts +45 -0
- package/dist/esm/agent/AgentManager.d.ts.map +1 -0
- package/dist/esm/agent/AgentManager.js +110 -0
- package/dist/esm/agent/AgentManager.js.map +1 -0
- package/dist/esm/agent/storage.d.ts +12 -0
- package/dist/esm/agent/storage.d.ts.map +1 -0
- package/dist/esm/agent/storage.js +54 -0
- package/dist/esm/agent/storage.js.map +1 -0
- package/dist/esm/agent/types.d.ts +23 -0
- package/dist/esm/agent/types.d.ts.map +1 -0
- package/dist/esm/agent/types.js +2 -0
- package/dist/esm/agent/types.js.map +1 -0
- package/dist/esm/client/PerpsClient.d.ts +188 -0
- package/dist/esm/client/PerpsClient.d.ts.map +1 -0
- package/dist/esm/client/PerpsClient.js +512 -0
- package/dist/esm/client/PerpsClient.js.map +1 -0
- package/dist/esm/client/createPerpsClient.d.ts +82 -0
- package/dist/esm/client/createPerpsClient.d.ts.map +1 -0
- package/dist/esm/client/createPerpsClient.js +80 -0
- package/dist/esm/client/createPerpsClient.js.map +1 -0
- package/dist/esm/client/types.d.ts +131 -0
- package/dist/esm/client/types.d.ts.map +1 -0
- package/dist/esm/client/types.js +2 -0
- package/dist/esm/client/types.js.map +1 -0
- package/dist/esm/errors/AgentError.d.ts +25 -0
- package/dist/esm/errors/AgentError.d.ts.map +1 -0
- package/dist/esm/errors/AgentError.js +35 -0
- package/dist/esm/errors/AgentError.js.map +1 -0
- package/dist/esm/errors/HTTPError.d.ts +11 -0
- package/dist/esm/errors/HTTPError.d.ts.map +1 -0
- package/dist/esm/errors/HTTPError.js +61 -0
- package/dist/esm/errors/HTTPError.js.map +1 -0
- package/dist/esm/errors/PerpsError.d.ts +9 -0
- package/dist/esm/errors/PerpsError.d.ts.map +1 -0
- package/dist/esm/errors/PerpsError.js +23 -0
- package/dist/esm/errors/PerpsError.js.map +1 -0
- package/dist/esm/errors/PerpsSDKError.d.ts +40 -0
- package/dist/esm/errors/PerpsSDKError.d.ts.map +1 -0
- package/dist/esm/errors/PerpsSDKError.js +67 -0
- package/dist/esm/errors/PerpsSDKError.js.map +1 -0
- package/dist/esm/errors/ServerError.d.ts +23 -0
- package/dist/esm/errors/ServerError.d.ts.map +1 -0
- package/dist/esm/errors/ServerError.js +34 -0
- package/dist/esm/errors/ServerError.js.map +1 -0
- package/dist/esm/errors/ValidationError.d.ts +23 -0
- package/dist/esm/errors/ValidationError.d.ts.map +1 -0
- package/dist/esm/errors/ValidationError.js +34 -0
- package/dist/esm/errors/ValidationError.js.map +1 -0
- package/dist/esm/errors/constants.d.ts +15 -0
- package/dist/esm/errors/constants.d.ts.map +1 -0
- package/dist/esm/errors/constants.js +17 -0
- package/dist/esm/errors/constants.js.map +1 -0
- package/dist/esm/errors/utils/rootCause.d.ts +71 -0
- package/dist/esm/errors/utils/rootCause.d.ts.map +1 -0
- package/dist/esm/errors/utils/rootCause.js +99 -0
- package/dist/esm/errors/utils/rootCause.js.map +1 -0
- package/dist/esm/index.d.ts +46 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +37 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/services/cancelOrder.d.ts +51 -0
- package/dist/esm/services/cancelOrder.d.ts.map +1 -0
- package/dist/esm/services/cancelOrder.js +50 -0
- package/dist/esm/services/cancelOrder.js.map +1 -0
- package/dist/esm/services/createAuthorization.d.ts +47 -0
- package/dist/esm/services/createAuthorization.d.ts.map +1 -0
- package/dist/esm/services/createAuthorization.js +46 -0
- package/dist/esm/services/createAuthorization.js.map +1 -0
- package/dist/esm/services/createOrder.d.ts +71 -0
- package/dist/esm/services/createOrder.d.ts.map +1 -0
- package/dist/esm/services/createOrder.js +59 -0
- package/dist/esm/services/createOrder.js.map +1 -0
- package/dist/esm/services/getAccount.d.ts +32 -0
- package/dist/esm/services/getAccount.d.ts.map +1 -0
- package/dist/esm/services/getAccount.js +31 -0
- package/dist/esm/services/getAccount.js.map +1 -0
- package/dist/esm/services/getDexes.d.ts +20 -0
- package/dist/esm/services/getDexes.d.ts.map +1 -0
- package/dist/esm/services/getDexes.js +21 -0
- package/dist/esm/services/getDexes.js.map +1 -0
- package/dist/esm/services/getHistory.d.ts +45 -0
- package/dist/esm/services/getHistory.d.ts.map +1 -0
- package/dist/esm/services/getHistory.js +42 -0
- package/dist/esm/services/getHistory.js.map +1 -0
- package/dist/esm/services/getMarket.d.ts +27 -0
- package/dist/esm/services/getMarket.d.ts.map +1 -0
- package/dist/esm/services/getMarket.js +25 -0
- package/dist/esm/services/getMarket.js.map +1 -0
- package/dist/esm/services/getMarkets.d.ts +25 -0
- package/dist/esm/services/getMarkets.d.ts.map +1 -0
- package/dist/esm/services/getMarkets.js +23 -0
- package/dist/esm/services/getMarkets.js.map +1 -0
- package/dist/esm/services/getOhlcv.d.ts +40 -0
- package/dist/esm/services/getOhlcv.d.ts.map +1 -0
- package/dist/esm/services/getOhlcv.js +34 -0
- package/dist/esm/services/getOhlcv.js.map +1 -0
- package/dist/esm/services/getOrder.d.ts +33 -0
- package/dist/esm/services/getOrder.d.ts.map +1 -0
- package/dist/esm/services/getOrder.js +30 -0
- package/dist/esm/services/getOrder.js.map +1 -0
- package/dist/esm/services/getOrderbook.d.ts +34 -0
- package/dist/esm/services/getOrderbook.d.ts.map +1 -0
- package/dist/esm/services/getOrderbook.js +31 -0
- package/dist/esm/services/getOrderbook.js.map +1 -0
- package/dist/esm/services/getPrices.d.ts +33 -0
- package/dist/esm/services/getPrices.d.ts.map +1 -0
- package/dist/esm/services/getPrices.js +32 -0
- package/dist/esm/services/getPrices.js.map +1 -0
- package/dist/esm/services/submitAuthorization.d.ts +42 -0
- package/dist/esm/services/submitAuthorization.d.ts.map +1 -0
- package/dist/esm/services/submitAuthorization.js +41 -0
- package/dist/esm/services/submitAuthorization.js.map +1 -0
- package/dist/esm/services/submitOrder.d.ts +44 -0
- package/dist/esm/services/submitOrder.d.ts.map +1 -0
- package/dist/esm/services/submitOrder.js +43 -0
- package/dist/esm/services/submitOrder.js.map +1 -0
- package/dist/esm/utils/request.d.ts +26 -0
- package/dist/esm/utils/request.d.ts.map +1 -0
- package/dist/esm/utils/request.js +82 -0
- package/dist/esm/utils/request.js.map +1 -0
- package/dist/esm/utils/signTypedData.d.ts +15 -0
- package/dist/esm/utils/signTypedData.d.ts.map +1 -0
- package/dist/esm/utils/signTypedData.js +25 -0
- package/dist/esm/utils/signTypedData.js.map +1 -0
- package/dist/esm/utils/sleep.d.ts +2 -0
- package/dist/esm/utils/sleep.d.ts.map +1 -0
- package/dist/esm/utils/sleep.js +2 -0
- package/dist/esm/utils/sleep.js.map +1 -0
- package/dist/esm/version.d.ts +3 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/types/agent/AgentManager.d.ts +45 -0
- package/dist/types/agent/AgentManager.d.ts.map +1 -0
- package/dist/types/agent/storage.d.ts +12 -0
- package/dist/types/agent/storage.d.ts.map +1 -0
- package/dist/types/agent/types.d.ts +23 -0
- package/dist/types/agent/types.d.ts.map +1 -0
- package/dist/types/client/PerpsClient.d.ts +188 -0
- package/dist/types/client/PerpsClient.d.ts.map +1 -0
- package/dist/types/client/createPerpsClient.d.ts +82 -0
- package/dist/types/client/createPerpsClient.d.ts.map +1 -0
- package/dist/types/client/types.d.ts +131 -0
- package/dist/types/client/types.d.ts.map +1 -0
- package/dist/types/errors/AgentError.d.ts +25 -0
- package/dist/types/errors/AgentError.d.ts.map +1 -0
- package/dist/types/errors/HTTPError.d.ts +11 -0
- package/dist/types/errors/HTTPError.d.ts.map +1 -0
- package/dist/types/errors/PerpsError.d.ts +9 -0
- package/dist/types/errors/PerpsError.d.ts.map +1 -0
- package/dist/types/errors/PerpsSDKError.d.ts +40 -0
- package/dist/types/errors/PerpsSDKError.d.ts.map +1 -0
- package/dist/types/errors/ServerError.d.ts +23 -0
- package/dist/types/errors/ServerError.d.ts.map +1 -0
- package/dist/types/errors/ValidationError.d.ts +23 -0
- package/dist/types/errors/ValidationError.d.ts.map +1 -0
- package/dist/types/errors/constants.d.ts +15 -0
- package/dist/types/errors/constants.d.ts.map +1 -0
- package/dist/types/errors/utils/rootCause.d.ts +71 -0
- package/dist/types/errors/utils/rootCause.d.ts.map +1 -0
- package/dist/types/index.d.ts +46 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/services/cancelOrder.d.ts +51 -0
- package/dist/types/services/cancelOrder.d.ts.map +1 -0
- package/dist/types/services/createAuthorization.d.ts +47 -0
- package/dist/types/services/createAuthorization.d.ts.map +1 -0
- package/dist/types/services/createOrder.d.ts +71 -0
- package/dist/types/services/createOrder.d.ts.map +1 -0
- package/dist/types/services/getAccount.d.ts +32 -0
- package/dist/types/services/getAccount.d.ts.map +1 -0
- package/dist/types/services/getDexes.d.ts +20 -0
- package/dist/types/services/getDexes.d.ts.map +1 -0
- package/dist/types/services/getHistory.d.ts +45 -0
- package/dist/types/services/getHistory.d.ts.map +1 -0
- package/dist/types/services/getMarket.d.ts +27 -0
- package/dist/types/services/getMarket.d.ts.map +1 -0
- package/dist/types/services/getMarkets.d.ts +25 -0
- package/dist/types/services/getMarkets.d.ts.map +1 -0
- package/dist/types/services/getOhlcv.d.ts +40 -0
- package/dist/types/services/getOhlcv.d.ts.map +1 -0
- package/dist/types/services/getOrder.d.ts +33 -0
- package/dist/types/services/getOrder.d.ts.map +1 -0
- package/dist/types/services/getOrderbook.d.ts +34 -0
- package/dist/types/services/getOrderbook.d.ts.map +1 -0
- package/dist/types/services/getPrices.d.ts +33 -0
- package/dist/types/services/getPrices.d.ts.map +1 -0
- package/dist/types/services/submitAuthorization.d.ts +42 -0
- package/dist/types/services/submitAuthorization.d.ts.map +1 -0
- package/dist/types/services/submitOrder.d.ts +44 -0
- package/dist/types/services/submitOrder.d.ts.map +1 -0
- package/dist/types/utils/request.d.ts +26 -0
- package/dist/types/utils/request.d.ts.map +1 -0
- package/dist/types/utils/signTypedData.d.ts +15 -0
- package/dist/types/utils/signTypedData.d.ts.map +1 -0
- package/dist/types/utils/sleep.d.ts +2 -0
- package/dist/types/utils/sleep.d.ts.map +1 -0
- package/dist/types/version.d.ts +3 -0
- package/dist/types/version.d.ts.map +1 -0
- package/package.json +102 -0
- package/src/agent/AgentManager.ts +135 -0
- package/src/agent/storage.ts +58 -0
- package/src/agent/types.ts +24 -0
- package/src/client/PerpsClient.ts +654 -0
- package/src/client/createPerpsClient.ts +164 -0
- package/src/client/types.ts +156 -0
- package/src/errors/AgentError.ts +43 -0
- package/src/errors/HTTPError.ts +72 -0
- package/src/errors/PerpsError.ts +34 -0
- package/src/errors/PerpsSDKError.ts +79 -0
- package/src/errors/ServerError.ts +41 -0
- package/src/errors/ValidationError.ts +38 -0
- package/src/errors/constants.ts +15 -0
- package/src/errors/utils/rootCause.ts +112 -0
- package/src/index.ts +77 -0
- package/src/services/cancelOrder.ts +75 -0
- package/src/services/createAuthorization.ts +75 -0
- package/src/services/createOrder.ts +113 -0
- package/src/services/getAccount.ts +47 -0
- package/src/services/getDexes.ts +34 -0
- package/src/services/getHistory.ts +62 -0
- package/src/services/getMarket.ts +41 -0
- package/src/services/getMarkets.ts +37 -0
- package/src/services/getOhlcv.ts +58 -0
- package/src/services/getOrder.ts +48 -0
- package/src/services/getOrderbook.ts +49 -0
- package/src/services/getPrices.ts +48 -0
- package/src/services/submitAuthorization.ts +70 -0
- package/src/services/submitOrder.ts +72 -0
- package/src/utils/request.ts +121 -0
- package/src/utils/signTypedData.ts +31 -0
- package/src/utils/sleep.ts +2 -0
- package/src/version.ts +2 -0
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
import { PerpsErrorCode } from '@lifi/perps-types';
|
|
2
|
+
import { PerpsErrorMessage } from '../errors/constants.js';
|
|
3
|
+
import { PerpsError } from '../errors/PerpsError.js';
|
|
4
|
+
import { cancelOrder } from '../services/cancelOrder.js';
|
|
5
|
+
import { createAuthorization } from '../services/createAuthorization.js';
|
|
6
|
+
import { createOrder } from '../services/createOrder.js';
|
|
7
|
+
import { getAccount } from '../services/getAccount.js';
|
|
8
|
+
import { getDexes } from '../services/getDexes.js';
|
|
9
|
+
import { submitAuthorization } from '../services/submitAuthorization.js';
|
|
10
|
+
import { submitOrder } from '../services/submitOrder.js';
|
|
11
|
+
import { signTypedData } from '../utils/signTypedData.js';
|
|
12
|
+
import { createPerpsClient } from './createPerpsClient.js';
|
|
13
|
+
/**
|
|
14
|
+
* Stateful client for managing signing modes and trading operations.
|
|
15
|
+
*
|
|
16
|
+
* The PerpsClient provides two signing modes:
|
|
17
|
+
* - `USER`: User wallet signs each action (wallet popup per action)
|
|
18
|
+
* - `USER_AGENT`: SDK-generated agent signs actions (no popups after setup)
|
|
19
|
+
*
|
|
20
|
+
* In `USER_AGENT` mode, the client:
|
|
21
|
+
* - Generates an agent keypair stored in localStorage (or custom storage)
|
|
22
|
+
* - Auto-injects agent address into authorization requests
|
|
23
|
+
* - Auto-signs trading actions with the agent key
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const perps = new PerpsClient({ integrator: 'my-app' })
|
|
28
|
+
*
|
|
29
|
+
* // Set up agent signing for a user + DEX pair
|
|
30
|
+
* await perps.setSigningMode(userAddress, 'hyperliquid', 'USER_AGENT')
|
|
31
|
+
*
|
|
32
|
+
* // Build authorization (agent address auto-injected)
|
|
33
|
+
* const { actions } = await perps.buildAuthorization({
|
|
34
|
+
* dex: 'hyperliquid',
|
|
35
|
+
* address: userAddress,
|
|
36
|
+
* authorizations: [
|
|
37
|
+
* { key: 'ApproveAgent' },
|
|
38
|
+
* { key: 'ApproveBuilderFee' }
|
|
39
|
+
* ]
|
|
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
|
+
*/
|
|
56
|
+
export class PerpsClient {
|
|
57
|
+
sdkClient;
|
|
58
|
+
signingModes = new Map();
|
|
59
|
+
constructor(options) {
|
|
60
|
+
this.sdkClient = createPerpsClient({
|
|
61
|
+
integrator: options.integrator,
|
|
62
|
+
apiKey: options.apiKey,
|
|
63
|
+
apiUrl: options.apiUrl,
|
|
64
|
+
storage: options.storage,
|
|
65
|
+
healthCheck: options.healthCheck,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get the underlying SDK client for use with service functions.
|
|
70
|
+
*/
|
|
71
|
+
get client() {
|
|
72
|
+
return this.sdkClient;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Promise that resolves when the API health check passes.
|
|
76
|
+
* Await this before making requests if you need to handle readiness explicitly.
|
|
77
|
+
*/
|
|
78
|
+
get ready() {
|
|
79
|
+
return this.sdkClient.ready;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get the storage key for a user + DEX pair.
|
|
83
|
+
*/
|
|
84
|
+
modeKey(address, dex) {
|
|
85
|
+
return `${address.toLowerCase()}:${dex.toLowerCase()}`;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Set the signing mode for a user + DEX pair.
|
|
89
|
+
*
|
|
90
|
+
* In `USER_AGENT` mode, generates an agent keypair if one doesn't exist.
|
|
91
|
+
*
|
|
92
|
+
* @param address - User wallet address
|
|
93
|
+
* @param dex - DEX identifier
|
|
94
|
+
* @param mode - Signing mode to set
|
|
95
|
+
*/
|
|
96
|
+
async setSigningMode(address, dex, mode) {
|
|
97
|
+
const key = this.modeKey(address, dex);
|
|
98
|
+
this.signingModes.set(key, mode);
|
|
99
|
+
if (mode === 'USER_AGENT') {
|
|
100
|
+
// Generate agent keypair if not exists
|
|
101
|
+
await this.sdkClient.agentManager.getOrCreateAgent(address, dex);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the current signing mode for a user + DEX pair.
|
|
106
|
+
* Defaults to `USER` if not set.
|
|
107
|
+
*/
|
|
108
|
+
getSigningMode(address, dex) {
|
|
109
|
+
return this.signingModes.get(this.modeKey(address, dex)) ?? 'USER';
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get the agent address for a user + DEX pair.
|
|
113
|
+
*
|
|
114
|
+
* @throws {PerpsError} If in USER mode or agent not found
|
|
115
|
+
*/
|
|
116
|
+
async getAgentAddress(address, dex) {
|
|
117
|
+
const agent = await this.sdkClient.agentManager.getAgent(address, dex);
|
|
118
|
+
return agent.address;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Check if an agent exists for a user + DEX pair.
|
|
122
|
+
*/
|
|
123
|
+
async hasAgent(address, dex) {
|
|
124
|
+
return this.sdkClient.agentManager.hasAgent(address, dex);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Remove the agent for a user + DEX pair.
|
|
128
|
+
* Also resets signing mode to USER.
|
|
129
|
+
*/
|
|
130
|
+
async removeAgent(address, dex) {
|
|
131
|
+
await this.sdkClient.agentManager.removeAgent(address, dex);
|
|
132
|
+
this.signingModes.delete(this.modeKey(address, dex));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Build authorization payloads for signing.
|
|
136
|
+
*
|
|
137
|
+
* In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
|
|
138
|
+
* In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`
|
|
139
|
+
* and `agentAddress` param for `ApproveAgent` authorization.
|
|
140
|
+
*
|
|
141
|
+
* @param params - Authorization parameters
|
|
142
|
+
* @returns Authorization actions with typed data for signing
|
|
143
|
+
*/
|
|
144
|
+
async buildAuthorization(params) {
|
|
145
|
+
const mode = this.getSigningMode(params.address, params.dex);
|
|
146
|
+
let { signerAddress, authorizations } = params;
|
|
147
|
+
if (mode === 'USER_AGENT') {
|
|
148
|
+
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
149
|
+
signerAddress = signerAddress ?? agent.address;
|
|
150
|
+
// Auto-inject agentAddress for ApproveAgent authorization
|
|
151
|
+
authorizations = authorizations.map((auth) => {
|
|
152
|
+
if (auth.key === 'ApproveAgent' && !auth.params?.agentAddress) {
|
|
153
|
+
return {
|
|
154
|
+
...auth,
|
|
155
|
+
params: { ...auth.params, agentAddress: agent.address },
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
return auth;
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
return createAuthorization(this.sdkClient, {
|
|
162
|
+
...params,
|
|
163
|
+
signerAddress,
|
|
164
|
+
authorizations,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Submit signed authorizations.
|
|
169
|
+
*
|
|
170
|
+
* In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
|
|
171
|
+
* In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
|
|
172
|
+
*
|
|
173
|
+
* @param params - Signed authorization parameters
|
|
174
|
+
*/
|
|
175
|
+
async submitAuthorizations(params) {
|
|
176
|
+
const mode = this.getSigningMode(params.address, params.dex);
|
|
177
|
+
let { signerAddress } = params;
|
|
178
|
+
if (mode === 'USER_AGENT') {
|
|
179
|
+
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
180
|
+
signerAddress = signerAddress ?? agent.address;
|
|
181
|
+
}
|
|
182
|
+
return submitAuthorization(this.sdkClient, { ...params, signerAddress });
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Build order payloads for signing.
|
|
186
|
+
*
|
|
187
|
+
* In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
|
|
188
|
+
* In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
|
|
189
|
+
*
|
|
190
|
+
* @param params - Order parameters
|
|
191
|
+
* @returns Order actions with typed data for signing
|
|
192
|
+
*/
|
|
193
|
+
async buildOrder(params) {
|
|
194
|
+
const mode = this.getSigningMode(params.address, params.dex);
|
|
195
|
+
let signerAddress;
|
|
196
|
+
if (mode === 'USER_AGENT') {
|
|
197
|
+
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
198
|
+
signerAddress = agent.address;
|
|
199
|
+
}
|
|
200
|
+
return createOrder(this.sdkClient, {
|
|
201
|
+
dex: params.dex,
|
|
202
|
+
address: params.address,
|
|
203
|
+
signerAddress,
|
|
204
|
+
clientOrderId: params.clientOrderId,
|
|
205
|
+
symbol: params.symbol,
|
|
206
|
+
side: params.side,
|
|
207
|
+
type: params.type,
|
|
208
|
+
size: params.size,
|
|
209
|
+
price: params.price,
|
|
210
|
+
leverage: params.leverage,
|
|
211
|
+
reduceOnly: params.reduceOnly,
|
|
212
|
+
timeInForce: params.timeInForce,
|
|
213
|
+
expiresAt: params.expiresAt,
|
|
214
|
+
takeProfit: params.takeProfit,
|
|
215
|
+
stopLoss: params.stopLoss,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Build cancel order payloads for signing.
|
|
220
|
+
*
|
|
221
|
+
* In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
|
|
222
|
+
* In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
|
|
223
|
+
*
|
|
224
|
+
* @param params - Cancel parameters
|
|
225
|
+
* @returns Cancel actions with typed data for signing
|
|
226
|
+
*/
|
|
227
|
+
async buildCancelOrder(params) {
|
|
228
|
+
const mode = this.getSigningMode(params.address, params.dex);
|
|
229
|
+
let signerAddress;
|
|
230
|
+
if (mode === 'USER_AGENT') {
|
|
231
|
+
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
232
|
+
signerAddress = agent.address;
|
|
233
|
+
}
|
|
234
|
+
return cancelOrder(this.sdkClient, {
|
|
235
|
+
dex: params.dex,
|
|
236
|
+
address: params.address,
|
|
237
|
+
signerAddress,
|
|
238
|
+
ids: params.ids,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Place an order with automatic agent signing.
|
|
243
|
+
*
|
|
244
|
+
* **Requires USER_AGENT mode.** For USER mode, use `buildOrder()` + `submitSignedOrder()`.
|
|
245
|
+
*
|
|
246
|
+
* @param params - Order parameters
|
|
247
|
+
* @returns Order submission results
|
|
248
|
+
* @throws {PerpsError} If not in USER_AGENT mode
|
|
249
|
+
*/
|
|
250
|
+
async placeOrder(params) {
|
|
251
|
+
const mode = this.getSigningMode(params.address, params.dex);
|
|
252
|
+
if (mode !== 'USER_AGENT') {
|
|
253
|
+
throw new PerpsError(PerpsErrorCode.ValidationError, `${PerpsErrorMessage.InvalidSigningMode} placeOrder() requires USER_AGENT mode. Use createOrder() + submitOrder() for USER mode.`);
|
|
254
|
+
}
|
|
255
|
+
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
256
|
+
// 1. Create order payloads
|
|
257
|
+
const { actions } = await createOrder(this.sdkClient, {
|
|
258
|
+
dex: params.dex,
|
|
259
|
+
address: params.address,
|
|
260
|
+
signerAddress: agent.address,
|
|
261
|
+
clientOrderId: params.clientOrderId,
|
|
262
|
+
symbol: params.symbol,
|
|
263
|
+
side: params.side,
|
|
264
|
+
type: params.type,
|
|
265
|
+
size: params.size,
|
|
266
|
+
price: params.price,
|
|
267
|
+
leverage: params.leverage,
|
|
268
|
+
reduceOnly: params.reduceOnly,
|
|
269
|
+
timeInForce: params.timeInForce,
|
|
270
|
+
expiresAt: params.expiresAt,
|
|
271
|
+
takeProfit: params.takeProfit,
|
|
272
|
+
stopLoss: params.stopLoss,
|
|
273
|
+
});
|
|
274
|
+
// 2. Sign each action with agent key
|
|
275
|
+
const signedActions = await Promise.all(actions.map(async (a) => ({
|
|
276
|
+
action: a.action,
|
|
277
|
+
typedData: a.typedData,
|
|
278
|
+
signature: await signTypedData(agent.privateKey, a.typedData),
|
|
279
|
+
})));
|
|
280
|
+
// 3. Submit
|
|
281
|
+
return submitOrder(this.sdkClient, {
|
|
282
|
+
dex: params.dex,
|
|
283
|
+
address: params.address,
|
|
284
|
+
signerAddress: agent.address,
|
|
285
|
+
actions: signedActions,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Cancel orders with automatic agent signing.
|
|
290
|
+
*
|
|
291
|
+
* **Requires USER_AGENT mode.** For USER mode, use `buildCancelOrder()` + `submitSignedOrder()`.
|
|
292
|
+
*
|
|
293
|
+
* @param params - Cancel parameters
|
|
294
|
+
* @returns Cancel submission results
|
|
295
|
+
* @throws {PerpsError} If not in USER_AGENT mode
|
|
296
|
+
*/
|
|
297
|
+
async cancelOrders(params) {
|
|
298
|
+
const mode = this.getSigningMode(params.address, params.dex);
|
|
299
|
+
if (mode !== 'USER_AGENT') {
|
|
300
|
+
throw new PerpsError(PerpsErrorCode.ValidationError, `${PerpsErrorMessage.InvalidSigningMode} cancelOrders() requires USER_AGENT mode. Use cancelOrder() + submitOrder() for USER mode.`);
|
|
301
|
+
}
|
|
302
|
+
const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
|
|
303
|
+
// 1. Create cancel payloads
|
|
304
|
+
const { actions } = await cancelOrder(this.sdkClient, {
|
|
305
|
+
dex: params.dex,
|
|
306
|
+
address: params.address,
|
|
307
|
+
signerAddress: agent.address,
|
|
308
|
+
ids: params.ids,
|
|
309
|
+
});
|
|
310
|
+
// 2. Sign each action with agent key
|
|
311
|
+
const signedActions = await Promise.all(actions.map(async (a) => ({
|
|
312
|
+
action: a.action,
|
|
313
|
+
typedData: a.typedData,
|
|
314
|
+
signature: await signTypedData(agent.privateKey, a.typedData),
|
|
315
|
+
})));
|
|
316
|
+
// 3. Submit
|
|
317
|
+
return submitOrder(this.sdkClient, {
|
|
318
|
+
dex: params.dex,
|
|
319
|
+
address: params.address,
|
|
320
|
+
signerAddress: agent.address,
|
|
321
|
+
actions: signedActions,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Submit pre-signed order actions.
|
|
326
|
+
*
|
|
327
|
+
* Use this for USER mode when you've already signed the actions with the user's wallet.
|
|
328
|
+
* Auto-injects `signerAddress` if not provided (defaults to `address`).
|
|
329
|
+
*
|
|
330
|
+
* @param params - Signed order parameters
|
|
331
|
+
*/
|
|
332
|
+
async submitSignedOrder(params) {
|
|
333
|
+
return submitOrder(this.sdkClient, params);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Determine which authorizations (if any) the user needs to sign before trading.
|
|
337
|
+
*
|
|
338
|
+
* Fetches account state and checks the current signing mode to build
|
|
339
|
+
* a precise list of required authorizations.
|
|
340
|
+
*
|
|
341
|
+
* @param params - Parameters including dex, address, and asset requirements
|
|
342
|
+
* @returns Which authorizations are needed and whether the user is ready to trade
|
|
343
|
+
*/
|
|
344
|
+
async getRequiredAuthorizations(params) {
|
|
345
|
+
const { dex, address, requireAbstraction = false } = params;
|
|
346
|
+
const mode = this.getSigningMode(address, dex);
|
|
347
|
+
// Fetch account state and dex config in parallel
|
|
348
|
+
const [account, dexesResponse] = await Promise.all([
|
|
349
|
+
getAccount(this.sdkClient, { dex, address }),
|
|
350
|
+
getDexes(this.sdkClient),
|
|
351
|
+
]);
|
|
352
|
+
const dexConfig = dexesResponse.dexes.find((d) => d.key === dex);
|
|
353
|
+
const hasBuilderFee = dexConfig?.authorizations.some((a) => a.key === 'ApproveBuilderFee') ??
|
|
354
|
+
false;
|
|
355
|
+
const rawAbstraction = account.config.abstractionStatus;
|
|
356
|
+
const abstractionStatus = rawAbstraction ?? null;
|
|
357
|
+
const agents = account.config.agents;
|
|
358
|
+
const userAuthorizations = [];
|
|
359
|
+
const agentAuthorizations = [];
|
|
360
|
+
if (mode === 'USER') {
|
|
361
|
+
// USER mode: no agent-related authorizations
|
|
362
|
+
if (requireAbstraction && !isAbstractionEnabled(abstractionStatus)) {
|
|
363
|
+
userAuthorizations.push({
|
|
364
|
+
key: 'UserSetAbstraction',
|
|
365
|
+
params: { abstraction: 'unifiedAccount' },
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
return {
|
|
369
|
+
userAuthorizations,
|
|
370
|
+
agentAuthorizations,
|
|
371
|
+
agentValid: false,
|
|
372
|
+
abstractionStatus,
|
|
373
|
+
isReady: userAuthorizations.length === 0,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
// USER_AGENT mode: check agent validity
|
|
377
|
+
const agentValid = await this.validateAgent(address, dex, agents);
|
|
378
|
+
if (!agentValid) {
|
|
379
|
+
// Need to approve agent (+ builder fee if configured)
|
|
380
|
+
userAuthorizations.push({ key: 'ApproveAgent' });
|
|
381
|
+
if (hasBuilderFee) {
|
|
382
|
+
userAuthorizations.push({ key: 'ApproveBuilderFee' });
|
|
383
|
+
}
|
|
384
|
+
// Abstraction handling when agent is not yet valid
|
|
385
|
+
if (requireAbstraction && !isAbstractionEnabled(abstractionStatus)) {
|
|
386
|
+
if (abstractionStatus === null) {
|
|
387
|
+
// null → agent can't auto-enable yet (not approved), user must set it
|
|
388
|
+
userAuthorizations.push({
|
|
389
|
+
key: 'UserSetAbstraction',
|
|
390
|
+
params: { abstraction: 'unifiedAccount' },
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
// 'disabled' → user must re-enable
|
|
395
|
+
userAuthorizations.push({
|
|
396
|
+
key: 'UserSetAbstraction',
|
|
397
|
+
params: { abstraction: 'unifiedAccount' },
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
// Agent is valid - check abstraction only
|
|
404
|
+
if (requireAbstraction && !isAbstractionEnabled(abstractionStatus)) {
|
|
405
|
+
if (abstractionStatus === null) {
|
|
406
|
+
// null → agent can auto-enable (no user signature needed)
|
|
407
|
+
agentAuthorizations.push({
|
|
408
|
+
key: 'AgentSetAbstraction',
|
|
409
|
+
params: { abstraction: 'unifiedAccount' },
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
// 'disabled' → user must re-enable
|
|
414
|
+
userAuthorizations.push({
|
|
415
|
+
key: 'UserSetAbstraction',
|
|
416
|
+
params: { abstraction: 'unifiedAccount' },
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
const isReady = userAuthorizations.length === 0 && agentAuthorizations.length === 0;
|
|
422
|
+
return {
|
|
423
|
+
userAuthorizations,
|
|
424
|
+
agentAuthorizations,
|
|
425
|
+
agentValid,
|
|
426
|
+
abstractionStatus,
|
|
427
|
+
isReady,
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Execute authorizations: submit user-signed actions, then auto-sign and submit
|
|
432
|
+
* any agent authorizations.
|
|
433
|
+
*
|
|
434
|
+
* @param params - User-signed actions and the required authorizations result
|
|
435
|
+
* @returns Combined results from user and agent submissions
|
|
436
|
+
*/
|
|
437
|
+
async executeAuthorizations(params) {
|
|
438
|
+
const { dex, address, required, userSignedActions } = params;
|
|
439
|
+
const mode = this.getSigningMode(address, dex);
|
|
440
|
+
// 1. Submit user-signed actions (if any)
|
|
441
|
+
let userResults = { results: [] };
|
|
442
|
+
if (userSignedActions.length > 0) {
|
|
443
|
+
const signerAddress = mode === 'USER_AGENT'
|
|
444
|
+
? (await this.sdkClient.agentManager.getAgent(address, dex)).address
|
|
445
|
+
: address;
|
|
446
|
+
userResults = await submitAuthorization(this.sdkClient, {
|
|
447
|
+
dex,
|
|
448
|
+
address,
|
|
449
|
+
signerAddress,
|
|
450
|
+
actions: userSignedActions,
|
|
451
|
+
});
|
|
452
|
+
// Check for failures - return early if any user auth failed
|
|
453
|
+
const failed = userResults.results.find((r) => !r.success);
|
|
454
|
+
if (failed) {
|
|
455
|
+
return { userResults };
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
// 2. Auto-sign and submit agent authorizations (if any)
|
|
459
|
+
if (required.agentAuthorizations.length > 0 && mode === 'USER_AGENT') {
|
|
460
|
+
const agent = await this.sdkClient.agentManager.getAgent(address, dex);
|
|
461
|
+
// Build typed data for agent authorizations
|
|
462
|
+
const { actions } = await createAuthorization(this.sdkClient, {
|
|
463
|
+
dex,
|
|
464
|
+
address,
|
|
465
|
+
signerAddress: agent.address,
|
|
466
|
+
authorizations: required.agentAuthorizations,
|
|
467
|
+
});
|
|
468
|
+
// Sign with agent key
|
|
469
|
+
const signedAgentActions = await Promise.all(actions.map(async (action) => ({
|
|
470
|
+
action: action.action,
|
|
471
|
+
typedData: action.typedData,
|
|
472
|
+
signature: await signTypedData(agent.privateKey, action.typedData),
|
|
473
|
+
})));
|
|
474
|
+
// Submit agent-signed actions
|
|
475
|
+
const agentResults = await submitAuthorization(this.sdkClient, {
|
|
476
|
+
dex,
|
|
477
|
+
address,
|
|
478
|
+
signerAddress: agent.address,
|
|
479
|
+
actions: signedAgentActions,
|
|
480
|
+
});
|
|
481
|
+
return { userResults, agentResults };
|
|
482
|
+
}
|
|
483
|
+
return { userResults };
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Check if the local agent is registered and valid on the backend.
|
|
487
|
+
*/
|
|
488
|
+
async validateAgent(address, dex, backendAgents) {
|
|
489
|
+
const hasLocal = await this.sdkClient.agentManager.hasAgent(address, dex);
|
|
490
|
+
if (!hasLocal) {
|
|
491
|
+
return false;
|
|
492
|
+
}
|
|
493
|
+
const agent = await this.sdkClient.agentManager.getAgent(address, dex);
|
|
494
|
+
if (!backendAgents) {
|
|
495
|
+
return false;
|
|
496
|
+
}
|
|
497
|
+
const match = backendAgents.find((a) => a.address.toLowerCase() === agent.address.toLowerCase());
|
|
498
|
+
if (!match) {
|
|
499
|
+
return false;
|
|
500
|
+
}
|
|
501
|
+
return match.validUntil > Date.now();
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Check if abstraction is enabled based on the status string.
|
|
506
|
+
* Enabled statuses: 'unifiedAccount', 'portfolioMargin'
|
|
507
|
+
* Not enabled: null (never set), 'disabled'
|
|
508
|
+
*/
|
|
509
|
+
function isAbstractionEnabled(status) {
|
|
510
|
+
return status !== null && status !== 'disabled';
|
|
511
|
+
}
|
|
512
|
+
//# sourceMappingURL=PerpsClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerpsClient.js","sourceRoot":"","sources":["../../../src/client/PerpsClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { AgentManager } from '../agent/AgentManager.js';
|
|
2
|
+
import type { StorageAdapter } from '../agent/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration options for creating a Perps SDK client.
|
|
5
|
+
*/
|
|
6
|
+
export interface PerpsConfig {
|
|
7
|
+
/** Integrator identifier (required) */
|
|
8
|
+
integrator: string;
|
|
9
|
+
/** Optional API key for authenticated requests */
|
|
10
|
+
apiKey?: string;
|
|
11
|
+
/** Base API URL. Defaults to https://li.quest/v1/perps */
|
|
12
|
+
apiUrl?: string;
|
|
13
|
+
/** Disable version update check in development mode */
|
|
14
|
+
disableVersionCheck?: boolean;
|
|
15
|
+
/** Custom storage adapter for agent keys. Defaults to localStorage. */
|
|
16
|
+
storage?: StorageAdapter;
|
|
17
|
+
/** Optional request interceptor for custom handling */
|
|
18
|
+
requestInterceptor?: RequestInterceptor;
|
|
19
|
+
/** Whether to perform a health check on startup before allowing requests. Default: true */
|
|
20
|
+
healthCheck?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolved configuration with required fields.
|
|
24
|
+
*/
|
|
25
|
+
export interface PerpsBaseConfig {
|
|
26
|
+
/** Integrator identifier (required) */
|
|
27
|
+
integrator: string;
|
|
28
|
+
/** Optional API key for authenticated requests */
|
|
29
|
+
apiKey?: string;
|
|
30
|
+
/** Resolved API URL (always set) */
|
|
31
|
+
apiUrl: string;
|
|
32
|
+
/** Disable version update check in development mode */
|
|
33
|
+
disableVersionCheck?: boolean;
|
|
34
|
+
/** Optional request interceptor for custom handling */
|
|
35
|
+
requestInterceptor?: RequestInterceptor;
|
|
36
|
+
/** Promise that resolves when the API is ready. Requests wait for this. */
|
|
37
|
+
readyPromise?: Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Request interceptor function type.
|
|
41
|
+
* Called before each request is made, allowing modification of fetch options.
|
|
42
|
+
*/
|
|
43
|
+
export type RequestInterceptor = (url: string, options: RequestInit) => RequestInit | Promise<RequestInit>;
|
|
44
|
+
/**
|
|
45
|
+
* Options passed to service functions for request control.
|
|
46
|
+
*/
|
|
47
|
+
export interface SDKRequestOptions {
|
|
48
|
+
/** AbortSignal to cancel the request */
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The Perps SDK client instance.
|
|
53
|
+
* Holds configuration and agent manager for making API requests.
|
|
54
|
+
*/
|
|
55
|
+
export interface PerpsSDKClient {
|
|
56
|
+
/** SDK configuration */
|
|
57
|
+
readonly config: PerpsBaseConfig;
|
|
58
|
+
/** Agent manager for USER_AGENT signing mode */
|
|
59
|
+
readonly agentManager: AgentManager;
|
|
60
|
+
/** Promise that resolves when the API health check passes. */
|
|
61
|
+
readonly ready: Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create a new Perps SDK client.
|
|
65
|
+
*
|
|
66
|
+
* @param options - Configuration options
|
|
67
|
+
* @returns A new SDK client instance
|
|
68
|
+
* @throws {PerpsError} If integrator is not provided
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* const client = createPerpsClient({
|
|
73
|
+
* integrator: 'my-app',
|
|
74
|
+
* apiKey: 'optional-api-key',
|
|
75
|
+
* })
|
|
76
|
+
*
|
|
77
|
+
* // Use with service functions
|
|
78
|
+
* const { dexes } = await getDexes(client)
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function createPerpsClient(options: PerpsConfig): PerpsSDKClient;
|
|
82
|
+
//# sourceMappingURL=createPerpsClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPerpsClient.d.ts","sourceRoot":"","sources":["../../../src/client/createPerpsClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AASvD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,uEAAuE;IACvE,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,KACjB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAEvC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;IAChC,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAqCtE"}
|