@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,42 @@
|
|
|
1
|
+
import type { Address, AuthorizationsResponse, SignedAuthorization } from '@lifi/perps-types';
|
|
2
|
+
import type { PerpsSDKClient, SDKRequestOptions } from '../client/createPerpsClient.js';
|
|
3
|
+
export interface SubmitAuthorizationParams {
|
|
4
|
+
/** DEX to authorize (e.g., 'hyperliquid') */
|
|
5
|
+
dex: string;
|
|
6
|
+
/** Wallet address */
|
|
7
|
+
address: Address;
|
|
8
|
+
/** Address of the signer (for agent mode, this is the agent address) */
|
|
9
|
+
signerAddress?: Address;
|
|
10
|
+
/** Signed authorization actions */
|
|
11
|
+
actions: SignedAuthorization[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Submit signed authorizations to the DEX.
|
|
15
|
+
*
|
|
16
|
+
* @param client - The SDK client instance
|
|
17
|
+
* @param params - Request parameters
|
|
18
|
+
* @param options - Request options (e.g., AbortSignal)
|
|
19
|
+
* @returns Results for each authorization action
|
|
20
|
+
* @throws {HTTPError} On API error responses
|
|
21
|
+
* @throws {PerpsError} On network or parsing errors
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
26
|
+
* const { results } = await submitAuthorization(client, {
|
|
27
|
+
* dex: 'hyperliquid',
|
|
28
|
+
* address: '0x1234...',
|
|
29
|
+
* actions: signedActions
|
|
30
|
+
* })
|
|
31
|
+
*
|
|
32
|
+
* for (const result of results) {
|
|
33
|
+
* if (result.success) {
|
|
34
|
+
* console.log(`${result.action} authorized`)
|
|
35
|
+
* } else {
|
|
36
|
+
* console.error(`${result.action} failed: ${result.error}`)
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function submitAuthorization(client: PerpsSDKClient, params: SubmitAuthorizationParams, options?: SDKRequestOptions): Promise<AuthorizationsResponse>;
|
|
42
|
+
//# sourceMappingURL=submitAuthorization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submitAuthorization.d.ts","sourceRoot":"","sources":["../../../src/services/submitAuthorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,gCAAgC,CAAA;AAGvC,MAAM,WAAW,yBAAyB;IACxC,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAA;IACX,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mCAAmC;IACnC,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CAejC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Address, SignedOrderAction, SubmitOrderResponse } from '@lifi/perps-types';
|
|
2
|
+
import type { PerpsSDKClient, SDKRequestOptions } from '../client/createPerpsClient.js';
|
|
3
|
+
export interface SubmitOrderParams {
|
|
4
|
+
/** DEX to submit order to (e.g., 'hyperliquid') */
|
|
5
|
+
dex: string;
|
|
6
|
+
/** Wallet address */
|
|
7
|
+
address: Address;
|
|
8
|
+
/** Address of the signer (for agent mode, this is the agent address) */
|
|
9
|
+
signerAddress?: Address;
|
|
10
|
+
/** Signed order actions */
|
|
11
|
+
actions: SignedOrderAction[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Submit signed order actions to the DEX.
|
|
15
|
+
*
|
|
16
|
+
* @param client - The SDK client instance
|
|
17
|
+
* @param params - Request parameters
|
|
18
|
+
* @param options - Request options (e.g., AbortSignal)
|
|
19
|
+
* @returns Results for each order action
|
|
20
|
+
* @throws {HTTPError} On API error responses
|
|
21
|
+
* @throws {PerpsError} On network or parsing errors
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
26
|
+
*
|
|
27
|
+
* // After creating and signing order actions
|
|
28
|
+
* const { results } = await submitOrder(client, {
|
|
29
|
+
* dex: 'hyperliquid',
|
|
30
|
+
* address: '0x1234...',
|
|
31
|
+
* actions: signedActions
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* for (const result of results) {
|
|
35
|
+
* if (result.success) {
|
|
36
|
+
* console.log(`Order placed: ${result.orderId}`)
|
|
37
|
+
* } else {
|
|
38
|
+
* console.error(`Order failed: ${result.error}`)
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function submitOrder(client: PerpsSDKClient, params: SubmitOrderParams, options?: SDKRequestOptions): Promise<SubmitOrderResponse>;
|
|
44
|
+
//# sourceMappingURL=submitOrder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submitOrder.d.ts","sourceRoot":"","sources":["../../../src/services/submitOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,gCAAgC,CAAA;AAGvC,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,2BAA2B;IAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,iBAAiB,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAe9B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PerpsBaseConfig, SDKRequestOptions } from '../client/createPerpsClient.js';
|
|
2
|
+
export interface RequestOptions extends RequestInit {
|
|
3
|
+
/** Number of retries on 5xx errors. Default: 1 */
|
|
4
|
+
retries?: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Make an HTTP request to the Perps API.
|
|
8
|
+
*
|
|
9
|
+
* @param config - SDK configuration
|
|
10
|
+
* @param url - The full URL to request
|
|
11
|
+
* @param options - Fetch options plus retries
|
|
12
|
+
* @param sdkOptions - SDK-specific options (signal, etc.)
|
|
13
|
+
* @returns Parsed JSON response
|
|
14
|
+
* @throws {HTTPError} On non-2xx responses
|
|
15
|
+
* @throws {PerpsError} On network or parsing errors
|
|
16
|
+
*/
|
|
17
|
+
export declare function request<T>(config: PerpsBaseConfig, url: string, options?: RequestOptions, sdkOptions?: SDKRequestOptions): Promise<T>;
|
|
18
|
+
/**
|
|
19
|
+
* Build a URL with query parameters.
|
|
20
|
+
*
|
|
21
|
+
* @param baseUrl - The base URL
|
|
22
|
+
* @param params - Query parameters (undefined values are filtered out)
|
|
23
|
+
* @returns Full URL with query string
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildUrl(baseUrl: string, params: Record<string, string | number | boolean | undefined>): string;
|
|
26
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/utils/request.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,gCAAgC,CAAA;AAMvC,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAAC,CAAC,EAC7B,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,EAC5B,UAAU,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,CAAC,CAAC,CAgEZ;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAC5D,MAAM,CAWR"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Hex, PerpsTypedData } from '@lifi/perps-types';
|
|
2
|
+
/**
|
|
3
|
+
* Sign EIP-712 typed data with a private key.
|
|
4
|
+
*
|
|
5
|
+
* @param privateKey - The private key to sign with
|
|
6
|
+
* @param typedData - The typed data to sign
|
|
7
|
+
* @returns The signature as a hex string
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const signature = await signTypedData(agentPrivateKey, typedData)
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare function signTypedData(privateKey: Hex, typedData: PerpsTypedData): Promise<Hex>;
|
|
15
|
+
//# sourceMappingURL=signTypedData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signTypedData.d.ts","sourceRoot":"","sources":["../../../src/utils/signTypedData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAG5D;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,GAAG,EACf,SAAS,EAAE,cAAc,GACxB,OAAO,CAAC,GAAG,CAAC,CAYd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../../src/utils/sleep.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CACI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,oBAAoB,CAAA;AACrC,eAAO,MAAM,OAAO,kBAAkB,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lifi/perps-sdk",
|
|
3
|
+
"version": "0.1.1-alpha.0",
|
|
4
|
+
"description": "LI.FI Perps SDK for perpetuals trading",
|
|
5
|
+
"homepage": "https://github.com/lifinance/perps-sdk",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/lifinance/perps-sdk/issues"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/lifinance/perps-sdk.git"
|
|
12
|
+
},
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=24"
|
|
15
|
+
},
|
|
16
|
+
"license": "Apache-2.0",
|
|
17
|
+
"author": "LI.FI <dev@li.fi>",
|
|
18
|
+
"type": "module",
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"main": "./dist/cjs/index.js",
|
|
21
|
+
"module": "./dist/esm/index.js",
|
|
22
|
+
"types": "./dist/types/index.d.ts",
|
|
23
|
+
"typings": "./dist/types/index.d.ts",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./dist/types/index.d.ts",
|
|
27
|
+
"import": "./dist/esm/index.js",
|
|
28
|
+
"default": "./dist/cjs/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./package.json": "./package.json"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@lifi/perps-types": "^0.1.1-alpha.0",
|
|
34
|
+
"viem": "^2.21.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/node": "^25.2.3",
|
|
38
|
+
"@biomejs/biome": "^2.3.13",
|
|
39
|
+
"@commitlint/cli": "^20.3.1",
|
|
40
|
+
"@commitlint/config-conventional": "^20.3.1",
|
|
41
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
42
|
+
"husky": "^9.1.7",
|
|
43
|
+
"knip": "^5.82.1",
|
|
44
|
+
"madge": "^8.0.0",
|
|
45
|
+
"msw": "^2.7.0",
|
|
46
|
+
"standard-version": "^9.5.0",
|
|
47
|
+
"typescript": "^5.7.2",
|
|
48
|
+
"vitest": "^2.1.8"
|
|
49
|
+
},
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"access": "public"
|
|
52
|
+
},
|
|
53
|
+
"files": [
|
|
54
|
+
"dist/**",
|
|
55
|
+
"!dist/**/*.tsbuildinfo",
|
|
56
|
+
"src/**/*.ts",
|
|
57
|
+
"!src/**/*.spec.ts",
|
|
58
|
+
"!src/**/*.test.ts",
|
|
59
|
+
"!src/**/*.mock.ts",
|
|
60
|
+
"!src/**/*.handlers.ts",
|
|
61
|
+
"!src/**/*.tsbuildinfo",
|
|
62
|
+
"!**/__mocks__/**",
|
|
63
|
+
"!*.tmp",
|
|
64
|
+
"!*.env",
|
|
65
|
+
"!tsconfig.json"
|
|
66
|
+
],
|
|
67
|
+
"keywords": [
|
|
68
|
+
"perps",
|
|
69
|
+
"perpetuals",
|
|
70
|
+
"trading",
|
|
71
|
+
"defi",
|
|
72
|
+
"ethereum",
|
|
73
|
+
"lifi",
|
|
74
|
+
"sdk",
|
|
75
|
+
"viem",
|
|
76
|
+
"hyperliquid"
|
|
77
|
+
],
|
|
78
|
+
"scripts": {
|
|
79
|
+
"build": "pnpm clean && pnpm build:version && pnpm build:cjs && pnpm build:esm && pnpm build:types && pnpm build:clean",
|
|
80
|
+
"build:cjs": "tsc --project ./tsconfig.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && mkdir -p ./dist/cjs && printf '{\"type\":\"commonjs\"}' > ./dist/cjs/package.json",
|
|
81
|
+
"build:esm": "tsc --project ./tsconfig.json --module es2015 --outDir ./dist/esm && mkdir -p ./dist/esm && printf '{\"type\": \"module\",\"sideEffects\":false}' > ./dist/esm/package.json",
|
|
82
|
+
"build:types": "tsc --project ./tsconfig.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap",
|
|
83
|
+
"build:clean": "rm -rf tsconfig.tsbuildinfo ./dist/tsconfig.tsbuildinfo",
|
|
84
|
+
"build:version": "node scripts/version.js",
|
|
85
|
+
"clean": "pnpm build:clean && rm -rf dist",
|
|
86
|
+
"check": "biome check",
|
|
87
|
+
"check:write": "biome check --write",
|
|
88
|
+
"check:types": "tsc --noEmit",
|
|
89
|
+
"check:circular-deps": "madge --circular $(find ./src -name '*.ts')",
|
|
90
|
+
"knip:check": "knip --dependencies --files --no-config-hints --exclude binaries",
|
|
91
|
+
"knip:write": "pnpm knip:check --fix",
|
|
92
|
+
"release": "standard-version -a -s",
|
|
93
|
+
"release:alpha": "standard-version -a -s --prerelease alpha --skip.changelog",
|
|
94
|
+
"release:beta": "standard-version -a -s --prerelease beta --skip.changelog",
|
|
95
|
+
"test": "vitest --run",
|
|
96
|
+
"test:cov": "vitest --run --coverage",
|
|
97
|
+
"test:unit": "vitest --run .unit.spec.ts --passWithNoTests",
|
|
98
|
+
"pre-commit": "pnpm check && pnpm check:types && pnpm check:circular-deps && pnpm knip:check",
|
|
99
|
+
"pre-push": "pnpm test:unit",
|
|
100
|
+
"postinstall": "husky"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { Address, Hex } from '@lifi/perps-types'
|
|
2
|
+
import { PerpsErrorCode } from '@lifi/perps-types'
|
|
3
|
+
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts'
|
|
4
|
+
import { PerpsErrorMessage } from '../errors/constants.js'
|
|
5
|
+
import { PerpsError } from '../errors/PerpsError.js'
|
|
6
|
+
import { localStorageAdapter } from './storage.js'
|
|
7
|
+
import type { Agent, StorageAdapter } from './types.js'
|
|
8
|
+
|
|
9
|
+
const STORAGE_PREFIX = 'lifi-perps-agent'
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Manages agent keypairs for USER_AGENT signing mode.
|
|
13
|
+
* Agent keys are stored per user address + DEX combination.
|
|
14
|
+
*/
|
|
15
|
+
export class AgentManager {
|
|
16
|
+
private storage: StorageAdapter
|
|
17
|
+
private cache: Map<string, Agent> = new Map()
|
|
18
|
+
|
|
19
|
+
constructor(storage?: StorageAdapter) {
|
|
20
|
+
this.storage = storage ?? localStorageAdapter
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get the storage key for an agent.
|
|
25
|
+
*/
|
|
26
|
+
private storageKey(address: Address, dex: string): string {
|
|
27
|
+
return `${STORAGE_PREFIX}:${address.toLowerCase()}:${dex.toLowerCase()}`
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Get an existing agent for a user + DEX pair.
|
|
32
|
+
*
|
|
33
|
+
* @throws {PerpsError} If agent not found
|
|
34
|
+
*/
|
|
35
|
+
async getAgent(address: Address, dex: string): Promise<Agent> {
|
|
36
|
+
const key = this.storageKey(address, dex)
|
|
37
|
+
|
|
38
|
+
// Check cache first
|
|
39
|
+
const cached = this.cache.get(key)
|
|
40
|
+
if (cached) {
|
|
41
|
+
return cached
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Check storage
|
|
45
|
+
const stored = await this.storage.get(key)
|
|
46
|
+
if (stored) {
|
|
47
|
+
const agent = JSON.parse(stored) as Agent
|
|
48
|
+
this.cache.set(key, agent)
|
|
49
|
+
return agent
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
throw new PerpsError(
|
|
53
|
+
PerpsErrorCode.AgentUnauthorized,
|
|
54
|
+
PerpsErrorMessage.AgentNotFound
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Get an existing agent or create a new one.
|
|
60
|
+
*/
|
|
61
|
+
async getOrCreateAgent(address: Address, dex: string): Promise<Agent> {
|
|
62
|
+
try {
|
|
63
|
+
return await this.getAgent(address, dex)
|
|
64
|
+
} catch {
|
|
65
|
+
// Generate new agent
|
|
66
|
+
const privateKey = generatePrivateKey()
|
|
67
|
+
const account = privateKeyToAccount(privateKey)
|
|
68
|
+
|
|
69
|
+
const agent: Agent = {
|
|
70
|
+
address: account.address,
|
|
71
|
+
privateKey,
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Store
|
|
75
|
+
const key = this.storageKey(address, dex)
|
|
76
|
+
await this.storage.set(key, JSON.stringify(agent))
|
|
77
|
+
this.cache.set(key, agent)
|
|
78
|
+
|
|
79
|
+
return agent
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Check if an agent exists for a user + DEX pair.
|
|
85
|
+
*/
|
|
86
|
+
async hasAgent(address: Address, dex: string): Promise<boolean> {
|
|
87
|
+
try {
|
|
88
|
+
await this.getAgent(address, dex)
|
|
89
|
+
return true
|
|
90
|
+
} catch {
|
|
91
|
+
return false
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Remove an agent for a user + DEX pair.
|
|
97
|
+
* Call this when the user revokes agent authorization.
|
|
98
|
+
*/
|
|
99
|
+
async removeAgent(address: Address, dex: string): Promise<void> {
|
|
100
|
+
const key = this.storageKey(address, dex)
|
|
101
|
+
this.cache.delete(key)
|
|
102
|
+
await this.storage.remove(key)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Import an existing agent keypair.
|
|
107
|
+
* Useful for restoring from backup or using a specific key.
|
|
108
|
+
*/
|
|
109
|
+
async importAgent(
|
|
110
|
+
address: Address,
|
|
111
|
+
dex: string,
|
|
112
|
+
privateKey: Hex
|
|
113
|
+
): Promise<Agent> {
|
|
114
|
+
const account = privateKeyToAccount(privateKey)
|
|
115
|
+
|
|
116
|
+
const agent: Agent = {
|
|
117
|
+
address: account.address,
|
|
118
|
+
privateKey,
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const key = this.storageKey(address, dex)
|
|
122
|
+
await this.storage.set(key, JSON.stringify(agent))
|
|
123
|
+
this.cache.set(key, agent)
|
|
124
|
+
|
|
125
|
+
return agent
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Clear all cached agents.
|
|
130
|
+
* Does not remove from storage.
|
|
131
|
+
*/
|
|
132
|
+
clearCache(): void {
|
|
133
|
+
this.cache.clear()
|
|
134
|
+
}
|
|
135
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { StorageAdapter } from './types.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* localStorage adapter for browser environments.
|
|
5
|
+
* Agent keys are stored as JSON strings with the key pattern:
|
|
6
|
+
* `lifi-perps-agent:{address}:{dex}`
|
|
7
|
+
*/
|
|
8
|
+
export const localStorageAdapter: StorageAdapter = {
|
|
9
|
+
get: (key: string): Promise<string | null> => {
|
|
10
|
+
try {
|
|
11
|
+
return Promise.resolve(localStorage.getItem(key))
|
|
12
|
+
} catch {
|
|
13
|
+
// localStorage not available (e.g., SSR)
|
|
14
|
+
return Promise.resolve(null)
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
set: (key: string, value: string): Promise<void> => {
|
|
19
|
+
try {
|
|
20
|
+
localStorage.setItem(key, value)
|
|
21
|
+
} catch {
|
|
22
|
+
// localStorage not available
|
|
23
|
+
}
|
|
24
|
+
return Promise.resolve()
|
|
25
|
+
},
|
|
26
|
+
|
|
27
|
+
remove: (key: string): Promise<void> => {
|
|
28
|
+
try {
|
|
29
|
+
localStorage.removeItem(key)
|
|
30
|
+
} catch {
|
|
31
|
+
// localStorage not available
|
|
32
|
+
}
|
|
33
|
+
return Promise.resolve()
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* In-memory storage adapter for testing or server-side use.
|
|
39
|
+
*/
|
|
40
|
+
export function createMemoryStorage(): StorageAdapter {
|
|
41
|
+
const store = new Map<string, string>()
|
|
42
|
+
|
|
43
|
+
return {
|
|
44
|
+
get: (key: string): Promise<string | null> => {
|
|
45
|
+
return Promise.resolve(store.get(key) ?? null)
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
set: (key: string, value: string): Promise<void> => {
|
|
49
|
+
store.set(key, value)
|
|
50
|
+
return Promise.resolve()
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
remove: (key: string): Promise<void> => {
|
|
54
|
+
store.delete(key)
|
|
55
|
+
return Promise.resolve()
|
|
56
|
+
},
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Address, Hex } from '@lifi/perps-types'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Agent keypair for signing trading actions.
|
|
5
|
+
*/
|
|
6
|
+
export interface Agent {
|
|
7
|
+
/** Agent wallet address */
|
|
8
|
+
address: Address
|
|
9
|
+
/** Agent private key */
|
|
10
|
+
privateKey: Hex
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Storage adapter interface for persisting agent keys.
|
|
15
|
+
* Implement this interface to use custom storage (e.g., encrypted storage, database).
|
|
16
|
+
*/
|
|
17
|
+
export interface StorageAdapter {
|
|
18
|
+
/** Get a value by key */
|
|
19
|
+
get(key: string): Promise<string | null>
|
|
20
|
+
/** Set a value by key */
|
|
21
|
+
set(key: string, value: string): Promise<void>
|
|
22
|
+
/** Remove a value by key */
|
|
23
|
+
remove(key: string): Promise<void>
|
|
24
|
+
}
|