@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,58 @@
|
|
|
1
|
+
import type { OhlcvInterval, OhlcvResponse } from '@lifi/perps-types'
|
|
2
|
+
import type {
|
|
3
|
+
PerpsSDKClient,
|
|
4
|
+
SDKRequestOptions,
|
|
5
|
+
} from '../client/createPerpsClient.js'
|
|
6
|
+
import { buildUrl, request } from '../utils/request.js'
|
|
7
|
+
|
|
8
|
+
export interface GetOhlcvParams {
|
|
9
|
+
/** DEX to get OHLCV from (e.g., 'hyperliquid') */
|
|
10
|
+
dex: string
|
|
11
|
+
/** Market symbol (e.g., 'BTC') */
|
|
12
|
+
symbol: string
|
|
13
|
+
/** Candle interval */
|
|
14
|
+
interval: OhlcvInterval
|
|
15
|
+
/** Start time (Unix timestamp in milliseconds) */
|
|
16
|
+
startTime?: number
|
|
17
|
+
/** End time (Unix timestamp in milliseconds) */
|
|
18
|
+
endTime?: number
|
|
19
|
+
/** Maximum number of candles to return */
|
|
20
|
+
limit?: number
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get OHLCV (candlestick) data for a market.
|
|
25
|
+
*
|
|
26
|
+
* @param client - The SDK client instance
|
|
27
|
+
* @param params - Request parameters
|
|
28
|
+
* @param options - Request options (e.g., AbortSignal)
|
|
29
|
+
* @returns OHLCV candle data
|
|
30
|
+
* @throws {HTTPError} On API error responses
|
|
31
|
+
* @throws {PerpsError} On network or parsing errors
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
36
|
+
* const { candles } = await getOhlcv(client, {
|
|
37
|
+
* dex: 'hyperliquid',
|
|
38
|
+
* symbol: 'BTC',
|
|
39
|
+
* interval: '1h',
|
|
40
|
+
* limit: 100
|
|
41
|
+
* })
|
|
42
|
+
* console.log(candles) // [{ t: 1704067200000, o: '94000', h: '95000', ... }]
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export async function getOhlcv(
|
|
46
|
+
client: PerpsSDKClient,
|
|
47
|
+
params: GetOhlcvParams,
|
|
48
|
+
options?: SDKRequestOptions
|
|
49
|
+
): Promise<OhlcvResponse> {
|
|
50
|
+
const url = buildUrl(`${client.config.apiUrl}/ohlcv/${params.symbol}`, {
|
|
51
|
+
dex: params.dex,
|
|
52
|
+
interval: params.interval,
|
|
53
|
+
startTime: params.startTime,
|
|
54
|
+
endTime: params.endTime,
|
|
55
|
+
limit: params.limit,
|
|
56
|
+
})
|
|
57
|
+
return request<OhlcvResponse>(client.config, url, {}, options)
|
|
58
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Address, Order } from '@lifi/perps-types'
|
|
2
|
+
import type {
|
|
3
|
+
PerpsSDKClient,
|
|
4
|
+
SDKRequestOptions,
|
|
5
|
+
} from '../client/createPerpsClient.js'
|
|
6
|
+
import { buildUrl, request } from '../utils/request.js'
|
|
7
|
+
|
|
8
|
+
export interface GetOrderParams {
|
|
9
|
+
/** DEX to get order from (e.g., 'hyperliquid') */
|
|
10
|
+
dex: string
|
|
11
|
+
/** Wallet address */
|
|
12
|
+
address: Address
|
|
13
|
+
/** Order ID */
|
|
14
|
+
id: string
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Get a specific order by ID.
|
|
19
|
+
*
|
|
20
|
+
* @param client - The SDK client instance
|
|
21
|
+
* @param params - Request parameters
|
|
22
|
+
* @param options - Request options (e.g., AbortSignal)
|
|
23
|
+
* @returns Order details
|
|
24
|
+
* @throws {HTTPError} On API error responses (e.g., 404 if order not found)
|
|
25
|
+
* @throws {PerpsError} On network or parsing errors
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
30
|
+
* const order = await getOrder(client, {
|
|
31
|
+
* dex: 'hyperliquid',
|
|
32
|
+
* address: '0x1234...',
|
|
33
|
+
* id: '123456'
|
|
34
|
+
* })
|
|
35
|
+
* console.log(order) // { orderId: '123456', status: 'FILLED', ... }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export async function getOrder(
|
|
39
|
+
client: PerpsSDKClient,
|
|
40
|
+
params: GetOrderParams,
|
|
41
|
+
options?: SDKRequestOptions
|
|
42
|
+
): Promise<Order> {
|
|
43
|
+
const url = buildUrl(`${client.config.apiUrl}/order/${params.id}`, {
|
|
44
|
+
dex: params.dex,
|
|
45
|
+
address: params.address,
|
|
46
|
+
})
|
|
47
|
+
return request<Order>(client.config, url, {}, options)
|
|
48
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { OrderbookResponse } from '@lifi/perps-types'
|
|
2
|
+
import type {
|
|
3
|
+
PerpsSDKClient,
|
|
4
|
+
SDKRequestOptions,
|
|
5
|
+
} from '../client/createPerpsClient.js'
|
|
6
|
+
import { buildUrl, request } from '../utils/request.js'
|
|
7
|
+
|
|
8
|
+
export interface GetOrderbookParams {
|
|
9
|
+
/** DEX to get orderbook from (e.g., 'hyperliquid') */
|
|
10
|
+
dex: string
|
|
11
|
+
/** Market symbol (e.g., 'BTC') */
|
|
12
|
+
symbol: string
|
|
13
|
+
/** Number of levels to return (default varies by DEX) */
|
|
14
|
+
depth?: number
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Get orderbook for a market.
|
|
19
|
+
*
|
|
20
|
+
* @param client - The SDK client instance
|
|
21
|
+
* @param params - Request parameters
|
|
22
|
+
* @param options - Request options (e.g., AbortSignal)
|
|
23
|
+
* @returns Orderbook with bids and asks
|
|
24
|
+
* @throws {HTTPError} On API error responses
|
|
25
|
+
* @throws {PerpsError} On network or parsing errors
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
30
|
+
* const { bids, asks } = await getOrderbook(client, {
|
|
31
|
+
* dex: 'hyperliquid',
|
|
32
|
+
* symbol: 'BTC',
|
|
33
|
+
* depth: 20
|
|
34
|
+
* })
|
|
35
|
+
* console.log(bids[0]) // { price: '94999.50', size: '1.5' }
|
|
36
|
+
* console.log(asks[0]) // { price: '95000.50', size: '2.0' }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export async function getOrderbook(
|
|
40
|
+
client: PerpsSDKClient,
|
|
41
|
+
params: GetOrderbookParams,
|
|
42
|
+
options?: SDKRequestOptions
|
|
43
|
+
): Promise<OrderbookResponse> {
|
|
44
|
+
const url = buildUrl(`${client.config.apiUrl}/orderbook/${params.symbol}`, {
|
|
45
|
+
dex: params.dex,
|
|
46
|
+
depth: params.depth,
|
|
47
|
+
})
|
|
48
|
+
return request<OrderbookResponse>(client.config, url, {}, options)
|
|
49
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { PricesResponse } from '@lifi/perps-types'
|
|
2
|
+
import type {
|
|
3
|
+
PerpsSDKClient,
|
|
4
|
+
SDKRequestOptions,
|
|
5
|
+
} from '../client/createPerpsClient.js'
|
|
6
|
+
import { buildUrl, request } from '../utils/request.js'
|
|
7
|
+
|
|
8
|
+
export interface GetPricesParams {
|
|
9
|
+
/** DEX to get prices from (e.g., 'hyperliquid') */
|
|
10
|
+
dex: string
|
|
11
|
+
/** Optional list of symbols to filter (e.g., ['BTC', 'ETH']) */
|
|
12
|
+
symbols?: string[]
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Get current prices for markets.
|
|
17
|
+
*
|
|
18
|
+
* @param client - The SDK client instance
|
|
19
|
+
* @param params - Request parameters
|
|
20
|
+
* @param options - Request options (e.g., AbortSignal)
|
|
21
|
+
* @returns Map of symbol to price
|
|
22
|
+
* @throws {HTTPError} On API error responses
|
|
23
|
+
* @throws {PerpsError} On network or parsing errors
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
28
|
+
* const { prices } = await getPrices(client, { dex: 'hyperliquid' })
|
|
29
|
+
* console.log(prices) // { BTC: '95000.00', ETH: '3400.00', ... }
|
|
30
|
+
*
|
|
31
|
+
* // Filter by symbols
|
|
32
|
+
* const { prices } = await getPrices(client, {
|
|
33
|
+
* dex: 'hyperliquid',
|
|
34
|
+
* symbols: ['BTC', 'ETH']
|
|
35
|
+
* })
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export async function getPrices(
|
|
39
|
+
client: PerpsSDKClient,
|
|
40
|
+
params: GetPricesParams,
|
|
41
|
+
options?: SDKRequestOptions
|
|
42
|
+
): Promise<PricesResponse> {
|
|
43
|
+
const url = buildUrl(`${client.config.apiUrl}/prices`, {
|
|
44
|
+
dex: params.dex,
|
|
45
|
+
symbols: params.symbols?.join(','),
|
|
46
|
+
})
|
|
47
|
+
return request<PricesResponse>(client.config, url, {}, options)
|
|
48
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Address,
|
|
3
|
+
AuthorizationsResponse,
|
|
4
|
+
SignedAuthorization,
|
|
5
|
+
} from '@lifi/perps-types'
|
|
6
|
+
import type {
|
|
7
|
+
PerpsSDKClient,
|
|
8
|
+
SDKRequestOptions,
|
|
9
|
+
} from '../client/createPerpsClient.js'
|
|
10
|
+
import { request } from '../utils/request.js'
|
|
11
|
+
|
|
12
|
+
export interface SubmitAuthorizationParams {
|
|
13
|
+
/** DEX to authorize (e.g., 'hyperliquid') */
|
|
14
|
+
dex: string
|
|
15
|
+
/** Wallet address */
|
|
16
|
+
address: Address
|
|
17
|
+
/** Address of the signer (for agent mode, this is the agent address) */
|
|
18
|
+
signerAddress?: Address
|
|
19
|
+
/** Signed authorization actions */
|
|
20
|
+
actions: SignedAuthorization[]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Submit signed authorizations to the DEX.
|
|
25
|
+
*
|
|
26
|
+
* @param client - The SDK client instance
|
|
27
|
+
* @param params - Request parameters
|
|
28
|
+
* @param options - Request options (e.g., AbortSignal)
|
|
29
|
+
* @returns Results for each authorization action
|
|
30
|
+
* @throws {HTTPError} On API error responses
|
|
31
|
+
* @throws {PerpsError} On network or parsing errors
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
36
|
+
* const { results } = await submitAuthorization(client, {
|
|
37
|
+
* dex: 'hyperliquid',
|
|
38
|
+
* address: '0x1234...',
|
|
39
|
+
* actions: signedActions
|
|
40
|
+
* })
|
|
41
|
+
*
|
|
42
|
+
* for (const result of results) {
|
|
43
|
+
* if (result.success) {
|
|
44
|
+
* console.log(`${result.action} authorized`)
|
|
45
|
+
* } else {
|
|
46
|
+
* console.error(`${result.action} failed: ${result.error}`)
|
|
47
|
+
* }
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export async function submitAuthorization(
|
|
52
|
+
client: PerpsSDKClient,
|
|
53
|
+
params: SubmitAuthorizationParams,
|
|
54
|
+
options?: SDKRequestOptions
|
|
55
|
+
): Promise<AuthorizationsResponse> {
|
|
56
|
+
return request<AuthorizationsResponse>(
|
|
57
|
+
client.config,
|
|
58
|
+
`${client.config.apiUrl}/authorization`,
|
|
59
|
+
{
|
|
60
|
+
method: 'POST',
|
|
61
|
+
body: JSON.stringify({
|
|
62
|
+
dex: params.dex,
|
|
63
|
+
address: params.address,
|
|
64
|
+
signerAddress: params.signerAddress,
|
|
65
|
+
actions: params.actions,
|
|
66
|
+
}),
|
|
67
|
+
},
|
|
68
|
+
options
|
|
69
|
+
)
|
|
70
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Address,
|
|
3
|
+
SignedOrderAction,
|
|
4
|
+
SubmitOrderResponse,
|
|
5
|
+
} from '@lifi/perps-types'
|
|
6
|
+
import type {
|
|
7
|
+
PerpsSDKClient,
|
|
8
|
+
SDKRequestOptions,
|
|
9
|
+
} from '../client/createPerpsClient.js'
|
|
10
|
+
import { request } from '../utils/request.js'
|
|
11
|
+
|
|
12
|
+
export interface SubmitOrderParams {
|
|
13
|
+
/** DEX to submit order to (e.g., 'hyperliquid') */
|
|
14
|
+
dex: string
|
|
15
|
+
/** Wallet address */
|
|
16
|
+
address: Address
|
|
17
|
+
/** Address of the signer (for agent mode, this is the agent address) */
|
|
18
|
+
signerAddress?: Address
|
|
19
|
+
/** Signed order actions */
|
|
20
|
+
actions: SignedOrderAction[]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Submit signed order actions to the DEX.
|
|
25
|
+
*
|
|
26
|
+
* @param client - The SDK client instance
|
|
27
|
+
* @param params - Request parameters
|
|
28
|
+
* @param options - Request options (e.g., AbortSignal)
|
|
29
|
+
* @returns Results for each order action
|
|
30
|
+
* @throws {HTTPError} On API error responses
|
|
31
|
+
* @throws {PerpsError} On network or parsing errors
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
36
|
+
*
|
|
37
|
+
* // After creating and signing order actions
|
|
38
|
+
* const { results } = await submitOrder(client, {
|
|
39
|
+
* dex: 'hyperliquid',
|
|
40
|
+
* address: '0x1234...',
|
|
41
|
+
* actions: signedActions
|
|
42
|
+
* })
|
|
43
|
+
*
|
|
44
|
+
* for (const result of results) {
|
|
45
|
+
* if (result.success) {
|
|
46
|
+
* console.log(`Order placed: ${result.orderId}`)
|
|
47
|
+
* } else {
|
|
48
|
+
* console.error(`Order failed: ${result.error}`)
|
|
49
|
+
* }
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export async function submitOrder(
|
|
54
|
+
client: PerpsSDKClient,
|
|
55
|
+
params: SubmitOrderParams,
|
|
56
|
+
options?: SDKRequestOptions
|
|
57
|
+
): Promise<SubmitOrderResponse> {
|
|
58
|
+
return request<SubmitOrderResponse>(
|
|
59
|
+
client.config,
|
|
60
|
+
`${client.config.apiUrl}/order`,
|
|
61
|
+
{
|
|
62
|
+
method: 'POST',
|
|
63
|
+
body: JSON.stringify({
|
|
64
|
+
dex: params.dex,
|
|
65
|
+
address: params.address,
|
|
66
|
+
signerAddress: params.signerAddress,
|
|
67
|
+
actions: params.actions,
|
|
68
|
+
}),
|
|
69
|
+
},
|
|
70
|
+
options
|
|
71
|
+
)
|
|
72
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { PerpsErrorCode } from '@lifi/perps-types'
|
|
2
|
+
import type {
|
|
3
|
+
PerpsBaseConfig,
|
|
4
|
+
SDKRequestOptions,
|
|
5
|
+
} from '../client/createPerpsClient.js'
|
|
6
|
+
import { HTTPError } from '../errors/HTTPError.js'
|
|
7
|
+
import { PerpsError } from '../errors/PerpsError.js'
|
|
8
|
+
import { version } from '../version.js'
|
|
9
|
+
import { sleep } from './sleep.js'
|
|
10
|
+
|
|
11
|
+
export interface RequestOptions extends RequestInit {
|
|
12
|
+
/** Number of retries on 5xx errors. Default: 1 */
|
|
13
|
+
retries?: number
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const DEFAULT_RETRIES = 1
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Make an HTTP request to the Perps API.
|
|
20
|
+
*
|
|
21
|
+
* @param config - SDK configuration
|
|
22
|
+
* @param url - The full URL to request
|
|
23
|
+
* @param options - Fetch options plus retries
|
|
24
|
+
* @param sdkOptions - SDK-specific options (signal, etc.)
|
|
25
|
+
* @returns Parsed JSON response
|
|
26
|
+
* @throws {HTTPError} On non-2xx responses
|
|
27
|
+
* @throws {PerpsError} On network or parsing errors
|
|
28
|
+
*/
|
|
29
|
+
export async function request<T>(
|
|
30
|
+
config: PerpsBaseConfig,
|
|
31
|
+
url: string,
|
|
32
|
+
options: RequestOptions = {},
|
|
33
|
+
sdkOptions?: SDKRequestOptions
|
|
34
|
+
): Promise<T> {
|
|
35
|
+
// Wait for API health check to pass before making requests
|
|
36
|
+
if (config.readyPromise) {
|
|
37
|
+
await config.readyPromise
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const retries = options.retries ?? DEFAULT_RETRIES
|
|
41
|
+
|
|
42
|
+
const headers: Record<string, string> = {
|
|
43
|
+
'Content-Type': 'application/json',
|
|
44
|
+
'x-lifi-integrator': config.integrator,
|
|
45
|
+
'x-lifi-perps-sdk': version,
|
|
46
|
+
...(options.headers as Record<string, string>),
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (config.apiKey) {
|
|
50
|
+
headers['x-lifi-api-key'] = config.apiKey
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Merge signal from sdkOptions into options
|
|
54
|
+
let finalOptions: RequestInit = {
|
|
55
|
+
...options,
|
|
56
|
+
headers,
|
|
57
|
+
signal: sdkOptions?.signal ?? options.signal,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Apply request interceptor if configured
|
|
61
|
+
if (config.requestInterceptor) {
|
|
62
|
+
finalOptions = await config.requestInterceptor(url, finalOptions)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
try {
|
|
66
|
+
const response = await fetch(url, finalOptions)
|
|
67
|
+
|
|
68
|
+
if (!response.ok) {
|
|
69
|
+
const error = new HTTPError(response, url)
|
|
70
|
+
await error.buildAdditionalDetails()
|
|
71
|
+
|
|
72
|
+
// Retry on 5xx errors
|
|
73
|
+
if (retries > 0 && response.status >= 500) {
|
|
74
|
+
await sleep(500)
|
|
75
|
+
return request<T>(
|
|
76
|
+
config,
|
|
77
|
+
url,
|
|
78
|
+
{ ...options, retries: retries - 1 },
|
|
79
|
+
sdkOptions
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
throw error
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return (await response.json()) as T
|
|
87
|
+
} catch (error) {
|
|
88
|
+
if (error instanceof HTTPError || error instanceof PerpsError) {
|
|
89
|
+
throw error
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Network error or other fetch failure
|
|
93
|
+
throw new PerpsError(
|
|
94
|
+
PerpsErrorCode.ServerError,
|
|
95
|
+
error instanceof Error ? error.message : 'Request failed'
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Build a URL with query parameters.
|
|
102
|
+
*
|
|
103
|
+
* @param baseUrl - The base URL
|
|
104
|
+
* @param params - Query parameters (undefined values are filtered out)
|
|
105
|
+
* @returns Full URL with query string
|
|
106
|
+
*/
|
|
107
|
+
export function buildUrl(
|
|
108
|
+
baseUrl: string,
|
|
109
|
+
params: Record<string, string | number | boolean | undefined>
|
|
110
|
+
): string {
|
|
111
|
+
const searchParams = new URLSearchParams()
|
|
112
|
+
|
|
113
|
+
for (const [key, value] of Object.entries(params)) {
|
|
114
|
+
if (value !== undefined) {
|
|
115
|
+
searchParams.set(key, String(value))
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const queryString = searchParams.toString()
|
|
120
|
+
return queryString ? `${baseUrl}?${queryString}` : baseUrl
|
|
121
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Hex, PerpsTypedData } from '@lifi/perps-types'
|
|
2
|
+
import { privateKeyToAccount } from 'viem/accounts'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Sign EIP-712 typed data with a private key.
|
|
6
|
+
*
|
|
7
|
+
* @param privateKey - The private key to sign with
|
|
8
|
+
* @param typedData - The typed data to sign
|
|
9
|
+
* @returns The signature as a hex string
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const signature = await signTypedData(agentPrivateKey, typedData)
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export async function signTypedData(
|
|
17
|
+
privateKey: Hex,
|
|
18
|
+
typedData: PerpsTypedData
|
|
19
|
+
): Promise<Hex> {
|
|
20
|
+
const account = privateKeyToAccount(privateKey)
|
|
21
|
+
|
|
22
|
+
// viem's signTypedData expects the typed data in a specific format
|
|
23
|
+
const signature = await account.signTypedData({
|
|
24
|
+
domain: typedData.domain,
|
|
25
|
+
types: typedData.types,
|
|
26
|
+
primaryType: typedData.primaryType,
|
|
27
|
+
message: typedData.message,
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
return signature
|
|
31
|
+
}
|
package/src/version.ts
ADDED