@lifi/perps-sdk 0.1.1-alpha.9 → 0.2.0-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/README.md +38 -15
- package/dist/cjs/agent/AgentManager.d.ts +5 -5
- package/dist/cjs/agent/AgentManager.d.ts.map +1 -1
- package/dist/cjs/agent/AgentManager.js +16 -14
- package/dist/cjs/agent/AgentManager.js.map +1 -1
- package/dist/cjs/client/PerpsClient.d.ts +75 -21
- package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/PerpsClient.js +642 -173
- package/dist/cjs/client/PerpsClient.js.map +1 -1
- package/dist/cjs/client/createPerpsClient.d.ts +15 -2
- package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
- package/dist/cjs/client/createPerpsClient.js +6 -3
- package/dist/cjs/client/createPerpsClient.js.map +1 -1
- package/dist/cjs/client/projectAccountConfigSettings.d.ts +3 -0
- package/dist/cjs/client/projectAccountConfigSettings.d.ts.map +1 -0
- package/dist/cjs/client/projectAccountConfigSettings.js +17 -0
- package/dist/cjs/client/projectAccountConfigSettings.js.map +1 -0
- package/dist/cjs/client/types.d.ts +49 -26
- package/dist/cjs/client/types.d.ts.map +1 -1
- package/dist/cjs/client/types.js +6 -0
- package/dist/cjs/client/types.js.map +1 -1
- package/dist/cjs/errors/PerpsError.d.ts +2 -3
- package/dist/cjs/errors/PerpsError.d.ts.map +1 -1
- package/dist/cjs/errors/PerpsError.js +3 -15
- package/dist/cjs/errors/PerpsError.js.map +1 -1
- package/dist/cjs/errors/constants.d.ts +0 -10
- package/dist/cjs/errors/constants.d.ts.map +1 -1
- package/dist/cjs/errors/constants.js +1 -12
- package/dist/cjs/errors/constants.js.map +1 -1
- package/dist/cjs/index.d.ts +37 -31
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +87 -42
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/hyperliquid/accountConfig.d.ts +3 -0
- package/dist/cjs/providers/hyperliquid/accountConfig.d.ts.map +1 -0
- package/dist/cjs/providers/hyperliquid/accountConfig.js +41 -0
- package/dist/cjs/providers/hyperliquid/accountConfig.js.map +1 -0
- package/dist/cjs/providers/lighter/accountConfig.d.ts +3 -0
- package/dist/cjs/providers/lighter/accountConfig.d.ts.map +1 -0
- package/dist/cjs/providers/lighter/accountConfig.js +45 -0
- package/dist/cjs/providers/lighter/accountConfig.js.map +1 -0
- package/dist/cjs/realtime/PerpsWsClient.d.ts +7 -1
- package/dist/cjs/realtime/PerpsWsClient.d.ts.map +1 -1
- package/dist/cjs/realtime/PerpsWsClient.js +36 -23
- package/dist/cjs/realtime/PerpsWsClient.js.map +1 -1
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts +9 -5
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js +158 -52
- package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
- package/dist/cjs/realtime/hyperliquid/types.d.ts +11 -9
- package/dist/cjs/realtime/hyperliquid/types.d.ts.map +1 -1
- package/dist/cjs/realtime/lighter/LighterWsProvider.d.ts +48 -0
- package/dist/cjs/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
- package/dist/cjs/realtime/lighter/LighterWsProvider.js +424 -0
- package/dist/cjs/realtime/lighter/LighterWsProvider.js.map +1 -0
- package/dist/cjs/realtime/lighter/types.d.ts +84 -0
- package/dist/cjs/realtime/lighter/types.d.ts.map +1 -0
- package/dist/cjs/{dex → realtime/lighter}/types.js.map +1 -1
- package/dist/cjs/services/createAction.d.ts +11 -0
- package/dist/cjs/services/createAction.d.ts.map +1 -0
- package/dist/cjs/services/{submitAuthorization.js → createAction.js} +7 -6
- package/dist/cjs/services/createAction.js.map +1 -0
- package/dist/cjs/services/executeAction.d.ts +11 -0
- package/dist/cjs/services/executeAction.d.ts.map +1 -0
- package/dist/cjs/services/{submitOrder.js → executeAction.js} +6 -5
- package/dist/cjs/services/executeAction.js.map +1 -0
- package/dist/cjs/services/getAccount.d.ts +1 -1
- package/dist/cjs/services/getAccount.d.ts.map +1 -1
- package/dist/cjs/services/getAccount.js +1 -1
- package/dist/cjs/services/getAccount.js.map +1 -1
- package/dist/cjs/services/getActivity.d.ts +13 -0
- package/dist/cjs/services/getActivity.d.ts.map +1 -0
- package/dist/cjs/services/getActivity.js +21 -0
- package/dist/cjs/services/getActivity.js.map +1 -0
- package/dist/cjs/services/getAsset.d.ts +8 -0
- package/dist/cjs/services/getAsset.d.ts.map +1 -0
- package/dist/cjs/services/{getMarkets.js → getAsset.js} +6 -4
- package/dist/cjs/services/getAsset.js.map +1 -0
- package/dist/cjs/services/getAssets.d.ts +7 -0
- package/dist/cjs/services/getAssets.d.ts.map +1 -0
- package/dist/cjs/services/{getMarket.js → getAssets.js} +5 -5
- package/dist/cjs/services/getAssets.js.map +1 -0
- package/dist/cjs/services/getFills.d.ts +12 -0
- package/dist/cjs/services/getFills.d.ts.map +1 -0
- package/dist/cjs/services/{getHistory.js → getFills.js} +7 -5
- package/dist/cjs/services/getFills.js.map +1 -0
- package/dist/cjs/services/getOhlcv.d.ts +1 -1
- package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
- package/dist/cjs/services/getOhlcv.js +2 -2
- package/dist/cjs/services/getOhlcv.js.map +1 -1
- package/dist/cjs/services/getOrder.d.ts +1 -1
- package/dist/cjs/services/getOrder.d.ts.map +1 -1
- package/dist/cjs/services/getOrder.js +2 -2
- package/dist/cjs/services/getOrder.js.map +1 -1
- package/dist/cjs/services/getOrderbook.d.ts +1 -1
- package/dist/cjs/services/getOrderbook.d.ts.map +1 -1
- package/dist/cjs/services/getOrderbook.js +2 -2
- package/dist/cjs/services/getOrderbook.js.map +1 -1
- package/dist/cjs/services/getOrders.d.ts +11 -0
- package/dist/cjs/services/getOrders.d.ts.map +1 -0
- package/dist/cjs/services/getOrders.js +15 -0
- package/dist/cjs/services/getOrders.js.map +1 -0
- package/dist/cjs/services/getPositions.d.ts +11 -0
- package/dist/cjs/services/getPositions.d.ts.map +1 -0
- package/dist/cjs/services/getPositions.js +15 -0
- package/dist/cjs/services/getPositions.js.map +1 -0
- package/dist/cjs/services/getPrices.d.ts +1 -1
- package/dist/cjs/services/getPrices.d.ts.map +1 -1
- package/dist/cjs/services/getPrices.js +1 -1
- package/dist/cjs/services/getPrices.js.map +1 -1
- package/dist/cjs/services/getProviders.d.ts +4 -0
- package/dist/cjs/services/getProviders.d.ts.map +1 -0
- package/dist/cjs/services/{getDexes.js → getProviders.js} +4 -4
- package/dist/cjs/services/getProviders.js.map +1 -0
- package/dist/cjs/signers/lighter/LighterKeyStore.d.ts +20 -0
- package/dist/cjs/signers/lighter/LighterKeyStore.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/LighterKeyStore.js +42 -0
- package/dist/cjs/signers/lighter/LighterKeyStore.js.map +1 -0
- package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.d.ts +66 -0
- package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.js +141 -0
- package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.js.map +1 -0
- package/dist/cjs/signers/lighter/LighterSigner.d.ts +41 -0
- package/dist/cjs/signers/lighter/LighterSigner.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/LighterSigner.js +176 -0
- package/dist/cjs/signers/lighter/LighterSigner.js.map +1 -0
- package/dist/cjs/signers/lighter/index.d.ts +9 -0
- package/dist/cjs/signers/lighter/index.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/index.js +20 -0
- package/dist/cjs/signers/lighter/index.js.map +1 -0
- package/dist/cjs/signers/lighter/wasmLoader.d.ts +42 -0
- package/dist/cjs/signers/lighter/wasmLoader.d.ts.map +1 -0
- package/dist/cjs/signers/lighter/wasmLoader.js +166 -0
- package/dist/cjs/signers/lighter/wasmLoader.js.map +1 -0
- package/dist/cjs/utils/accountSummary.d.ts +9 -0
- package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
- package/dist/cjs/utils/accountSummary.js +83 -0
- package/dist/cjs/utils/accountSummary.js.map +1 -0
- package/dist/cjs/utils/assertNever.d.ts +2 -0
- package/dist/cjs/utils/assertNever.d.ts.map +1 -0
- package/dist/cjs/utils/assertNever.js +7 -0
- package/dist/cjs/utils/assertNever.js.map +1 -0
- package/dist/cjs/utils/calculations.d.ts +16 -0
- package/dist/cjs/utils/calculations.d.ts.map +1 -0
- package/dist/cjs/utils/calculations.js +71 -0
- package/dist/cjs/utils/calculations.js.map +1 -0
- package/dist/cjs/utils/hyperliquid/index.d.ts +3 -0
- package/dist/cjs/utils/hyperliquid/index.d.ts.map +1 -0
- package/dist/cjs/utils/hyperliquid/index.js +11 -0
- package/dist/cjs/utils/hyperliquid/index.js.map +1 -0
- package/dist/cjs/utils/hyperliquid/liquidation.d.ts +3 -0
- package/dist/cjs/utils/hyperliquid/liquidation.d.ts.map +1 -0
- package/dist/cjs/utils/hyperliquid/liquidation.js +24 -0
- package/dist/cjs/utils/hyperliquid/liquidation.js.map +1 -0
- package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts +4 -0
- package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
- package/dist/cjs/utils/hyperliquid/orderFormatting.js +33 -0
- package/dist/cjs/utils/hyperliquid/orderFormatting.js.map +1 -0
- package/dist/cjs/utils/orderClassification.d.ts +8 -0
- package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
- package/dist/cjs/utils/orderClassification.js +39 -0
- package/dist/cjs/utils/orderClassification.js.map +1 -0
- package/dist/cjs/utils/orderMath.d.ts +6 -0
- package/dist/cjs/utils/orderMath.d.ts.map +1 -0
- package/dist/cjs/utils/orderMath.js +71 -0
- package/dist/cjs/utils/orderMath.js.map +1 -0
- package/dist/cjs/utils/parse.d.ts +2 -0
- package/dist/cjs/utils/parse.d.ts.map +1 -0
- package/dist/cjs/utils/parse.js +14 -0
- package/dist/cjs/utils/parse.js.map +1 -0
- package/dist/cjs/utils/positionMath.d.ts +26 -0
- package/dist/cjs/utils/positionMath.d.ts.map +1 -0
- package/dist/cjs/utils/positionMath.js +38 -0
- package/dist/cjs/utils/positionMath.js.map +1 -0
- package/dist/cjs/utils/request.d.ts.map +1 -1
- package/dist/cjs/utils/request.js +19 -4
- package/dist/cjs/utils/request.js.map +1 -1
- package/dist/cjs/utils/signTypedData.d.ts +2 -0
- package/dist/cjs/utils/signTypedData.d.ts.map +1 -1
- package/dist/cjs/utils/signTypedData.js +10 -3
- package/dist/cjs/utils/signTypedData.js.map +1 -1
- package/dist/cjs/utils/units.d.ts +3 -0
- package/dist/cjs/utils/units.d.ts.map +1 -0
- package/dist/cjs/utils/units.js +18 -0
- package/dist/cjs/utils/units.js.map +1 -0
- package/dist/cjs/utils/validation.d.ts +2 -0
- package/dist/cjs/utils/validation.d.ts.map +1 -0
- package/dist/cjs/utils/validation.js +16 -0
- package/dist/cjs/utils/validation.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wasm/lighter-signer.wasm +0 -0
- package/dist/cjs/wasm/wasm_exec.js +575 -0
- package/dist/esm/agent/AgentManager.d.ts +9 -9
- package/dist/esm/agent/AgentManager.d.ts.map +1 -1
- package/dist/esm/agent/AgentManager.js +20 -18
- package/dist/esm/agent/AgentManager.js.map +1 -1
- package/dist/esm/agent/storage.d.ts +1 -1
- package/dist/esm/agent/storage.js +1 -1
- package/dist/esm/client/PerpsClient.d.ts +226 -144
- package/dist/esm/client/PerpsClient.d.ts.map +1 -1
- package/dist/esm/client/PerpsClient.js +869 -320
- package/dist/esm/client/PerpsClient.js.map +1 -1
- package/dist/esm/client/createPerpsClient.d.ts +30 -51
- package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
- package/dist/esm/client/createPerpsClient.js +6 -21
- package/dist/esm/client/createPerpsClient.js.map +1 -1
- package/dist/esm/client/projectAccountConfigSettings.d.ts +18 -0
- package/dist/esm/client/projectAccountConfigSettings.d.ts.map +1 -0
- package/dist/esm/client/projectAccountConfigSettings.js +29 -0
- package/dist/esm/client/projectAccountConfigSettings.js.map +1 -0
- package/dist/esm/client/types.d.ts +115 -49
- package/dist/esm/client/types.d.ts.map +1 -1
- package/dist/esm/client/types.js +11 -1
- package/dist/esm/client/types.js.map +1 -1
- package/dist/esm/errors/PerpsError.d.ts +2 -3
- package/dist/esm/errors/PerpsError.d.ts.map +1 -1
- package/dist/esm/errors/PerpsError.js +3 -15
- package/dist/esm/errors/PerpsError.js.map +1 -1
- package/dist/esm/errors/constants.d.ts +0 -10
- package/dist/esm/errors/constants.d.ts.map +1 -1
- package/dist/esm/errors/constants.js +0 -11
- package/dist/esm/errors/constants.js.map +1 -1
- package/dist/esm/index.d.ts +37 -31
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +27 -22
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers/hyperliquid/accountConfig.d.ts +13 -0
- package/dist/esm/providers/hyperliquid/accountConfig.d.ts.map +1 -0
- package/dist/esm/providers/hyperliquid/accountConfig.js +69 -0
- package/dist/esm/providers/hyperliquid/accountConfig.js.map +1 -0
- package/dist/esm/providers/lighter/accountConfig.d.ts +13 -0
- package/dist/esm/providers/lighter/accountConfig.d.ts.map +1 -0
- package/dist/esm/providers/lighter/accountConfig.js +79 -0
- package/dist/esm/providers/lighter/accountConfig.js.map +1 -0
- package/dist/esm/realtime/PerpsWsClient.d.ts +13 -1
- package/dist/esm/realtime/PerpsWsClient.d.ts.map +1 -1
- package/dist/esm/realtime/PerpsWsClient.js +36 -23
- package/dist/esm/realtime/PerpsWsClient.js.map +1 -1
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js +170 -53
- package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
- package/dist/esm/realtime/hyperliquid/types.d.ts +11 -9
- package/dist/esm/realtime/hyperliquid/types.d.ts.map +1 -1
- package/dist/esm/realtime/lighter/LighterWsProvider.d.ts +68 -0
- package/dist/esm/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
- package/dist/esm/realtime/lighter/LighterWsProvider.js +474 -0
- package/dist/esm/realtime/lighter/LighterWsProvider.js.map +1 -0
- package/dist/esm/realtime/lighter/types.d.ts +108 -0
- package/dist/esm/realtime/lighter/types.d.ts.map +1 -0
- package/dist/esm/realtime/lighter/types.js +14 -0
- package/dist/esm/realtime/lighter/types.js.map +1 -0
- package/dist/esm/services/createAction.d.ts +11 -0
- package/dist/esm/services/createAction.d.ts.map +1 -0
- package/dist/esm/services/createAction.js +14 -0
- package/dist/esm/services/createAction.js.map +1 -0
- package/dist/esm/services/executeAction.d.ts +11 -0
- package/dist/esm/services/executeAction.d.ts.map +1 -0
- package/dist/esm/services/executeAction.js +14 -0
- package/dist/esm/services/executeAction.js.map +1 -0
- package/dist/esm/services/getAccount.d.ts +7 -7
- package/dist/esm/services/getAccount.d.ts.map +1 -1
- package/dist/esm/services/getAccount.js +6 -6
- package/dist/esm/services/getAccount.js.map +1 -1
- package/dist/esm/services/getActivity.d.ts +49 -0
- package/dist/esm/services/getActivity.d.ts.map +1 -0
- package/dist/esm/services/getActivity.js +47 -0
- package/dist/esm/services/getActivity.js.map +1 -0
- package/dist/esm/services/getAsset.d.ts +20 -0
- package/dist/esm/services/getAsset.d.ts.map +1 -0
- package/dist/esm/services/getAsset.js +18 -0
- package/dist/esm/services/getAsset.js.map +1 -0
- package/dist/esm/services/getAssets.d.ts +18 -0
- package/dist/esm/services/getAssets.d.ts.map +1 -0
- package/dist/esm/services/getAssets.js +18 -0
- package/dist/esm/services/getAssets.js.map +1 -0
- package/dist/{types/services/getHistory.d.ts → esm/services/getFills.d.ts} +17 -13
- package/dist/esm/services/getFills.d.ts.map +1 -0
- package/dist/esm/services/{getHistory.js → getFills.js} +13 -11
- package/dist/esm/services/getFills.js.map +1 -0
- package/dist/esm/services/getOhlcv.d.ts +4 -4
- package/dist/esm/services/getOhlcv.d.ts.map +1 -1
- package/dist/esm/services/getOhlcv.js +4 -4
- package/dist/esm/services/getOhlcv.js.map +1 -1
- package/dist/esm/services/getOrder.d.ts +4 -4
- package/dist/esm/services/getOrder.d.ts.map +1 -1
- package/dist/esm/services/getOrder.js +4 -4
- package/dist/esm/services/getOrder.js.map +1 -1
- package/dist/esm/services/getOrderbook.d.ts +4 -4
- package/dist/esm/services/getOrderbook.d.ts.map +1 -1
- package/dist/esm/services/getOrderbook.js +4 -4
- package/dist/esm/services/getOrderbook.js.map +1 -1
- package/dist/esm/services/getOrders.d.ts +27 -0
- package/dist/esm/services/getOrders.d.ts.map +1 -0
- package/dist/esm/services/getOrders.js +23 -0
- package/dist/esm/services/getOrders.js.map +1 -0
- package/dist/esm/services/getPositions.d.ts +27 -0
- package/dist/esm/services/getPositions.d.ts.map +1 -0
- package/dist/esm/services/getPositions.js +23 -0
- package/dist/esm/services/getPositions.js.map +1 -0
- package/dist/esm/services/getPrices.d.ts +5 -5
- package/dist/esm/services/getPrices.d.ts.map +1 -1
- package/dist/esm/services/getPrices.js +4 -4
- package/dist/esm/services/getPrices.js.map +1 -1
- package/dist/esm/services/getProviders.d.ts +20 -0
- package/dist/esm/services/getProviders.d.ts.map +1 -0
- package/dist/esm/services/getProviders.js +21 -0
- package/dist/esm/services/getProviders.js.map +1 -0
- package/dist/esm/signers/lighter/LighterKeyStore.d.ts +29 -0
- package/dist/esm/signers/lighter/LighterKeyStore.d.ts.map +1 -0
- package/dist/esm/signers/lighter/LighterKeyStore.js +53 -0
- package/dist/esm/signers/lighter/LighterKeyStore.js.map +1 -0
- package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.d.ts +174 -0
- package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.js +214 -0
- package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.js.map +1 -0
- package/dist/esm/signers/lighter/LighterSigner.d.ts +88 -0
- package/dist/esm/signers/lighter/LighterSigner.d.ts.map +1 -0
- package/dist/esm/signers/lighter/LighterSigner.js +226 -0
- package/dist/esm/signers/lighter/LighterSigner.js.map +1 -0
- package/dist/esm/signers/lighter/index.d.ts +9 -0
- package/dist/esm/signers/lighter/index.d.ts.map +1 -0
- package/dist/esm/signers/lighter/index.js +5 -0
- package/dist/esm/signers/lighter/index.js.map +1 -0
- package/dist/esm/signers/lighter/wasmLoader.d.ts +71 -0
- package/dist/esm/signers/lighter/wasmLoader.d.ts.map +1 -0
- package/dist/esm/signers/lighter/wasmLoader.js +181 -0
- package/dist/esm/signers/lighter/wasmLoader.js.map +1 -0
- package/dist/esm/utils/accountSummary.d.ts +13 -0
- package/dist/esm/utils/accountSummary.d.ts.map +1 -0
- package/dist/esm/utils/accountSummary.js +97 -0
- package/dist/esm/utils/accountSummary.js.map +1 -0
- package/dist/esm/utils/assertNever.d.ts +19 -0
- package/dist/esm/utils/assertNever.d.ts.map +1 -0
- package/dist/esm/utils/assertNever.js +21 -0
- package/dist/esm/utils/assertNever.js.map +1 -0
- package/dist/esm/utils/calculations.d.ts +109 -0
- package/dist/esm/utils/calculations.d.ts.map +1 -0
- package/dist/esm/utils/calculations.js +154 -0
- package/dist/esm/utils/calculations.js.map +1 -0
- package/dist/esm/utils/hyperliquid/index.d.ts +3 -0
- package/dist/esm/utils/hyperliquid/index.d.ts.map +1 -0
- package/dist/esm/utils/hyperliquid/index.js +3 -0
- package/dist/esm/utils/hyperliquid/index.js.map +1 -0
- package/dist/esm/utils/hyperliquid/liquidation.d.ts +46 -0
- package/dist/esm/utils/hyperliquid/liquidation.d.ts.map +1 -0
- package/dist/esm/utils/hyperliquid/liquidation.js +63 -0
- package/dist/esm/utils/hyperliquid/liquidation.js.map +1 -0
- package/dist/esm/utils/hyperliquid/orderFormatting.d.ts +44 -0
- package/dist/esm/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
- package/dist/esm/utils/hyperliquid/orderFormatting.js +79 -0
- package/dist/esm/utils/hyperliquid/orderFormatting.js.map +1 -0
- package/dist/esm/utils/orderClassification.d.ts +29 -0
- package/dist/esm/utils/orderClassification.d.ts.map +1 -0
- package/dist/esm/utils/orderClassification.js +53 -0
- package/dist/esm/utils/orderClassification.js.map +1 -0
- package/dist/esm/utils/orderMath.d.ts +40 -0
- package/dist/esm/utils/orderMath.d.ts.map +1 -0
- package/dist/esm/utils/orderMath.js +99 -0
- package/dist/esm/utils/orderMath.js.map +1 -0
- package/dist/esm/utils/parse.d.ts +18 -0
- package/dist/esm/utils/parse.d.ts.map +1 -0
- package/dist/esm/utils/parse.js +28 -0
- package/dist/esm/utils/parse.js.map +1 -0
- package/dist/esm/utils/positionMath.d.ts +78 -0
- package/dist/esm/utils/positionMath.d.ts.map +1 -0
- package/dist/esm/utils/positionMath.js +83 -0
- package/dist/esm/utils/positionMath.js.map +1 -0
- package/dist/esm/utils/request.d.ts +1 -2
- package/dist/esm/utils/request.d.ts.map +1 -1
- package/dist/esm/utils/request.js +23 -7
- package/dist/esm/utils/request.js.map +1 -1
- package/dist/esm/utils/signTypedData.d.ts +8 -10
- package/dist/esm/utils/signTypedData.d.ts.map +1 -1
- package/dist/esm/utils/signTypedData.js +15 -14
- package/dist/esm/utils/signTypedData.js.map +1 -1
- package/dist/esm/utils/units.d.ts +20 -0
- package/dist/esm/utils/units.d.ts.map +1 -0
- package/dist/esm/utils/units.js +31 -0
- package/dist/esm/utils/units.js.map +1 -0
- package/dist/esm/utils/validation.d.ts +15 -0
- package/dist/esm/utils/validation.d.ts.map +1 -0
- package/dist/esm/utils/validation.js +26 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/wasm/lighter-signer.wasm +0 -0
- package/dist/esm/wasm/wasm_exec.js +575 -0
- package/dist/types/agent/AgentManager.d.ts +9 -9
- package/dist/types/agent/AgentManager.d.ts.map +1 -1
- package/dist/types/agent/storage.d.ts +1 -1
- package/dist/types/client/PerpsClient.d.ts +226 -144
- package/dist/types/client/PerpsClient.d.ts.map +1 -1
- package/dist/types/client/createPerpsClient.d.ts +30 -51
- package/dist/types/client/createPerpsClient.d.ts.map +1 -1
- package/dist/types/client/projectAccountConfigSettings.d.ts +18 -0
- package/dist/types/client/projectAccountConfigSettings.d.ts.map +1 -0
- package/dist/types/client/types.d.ts +115 -49
- package/dist/types/client/types.d.ts.map +1 -1
- package/dist/types/errors/PerpsError.d.ts +2 -3
- package/dist/types/errors/PerpsError.d.ts.map +1 -1
- package/dist/types/errors/constants.d.ts +0 -10
- package/dist/types/errors/constants.d.ts.map +1 -1
- package/dist/types/index.d.ts +37 -31
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/providers/hyperliquid/accountConfig.d.ts +13 -0
- package/dist/types/providers/hyperliquid/accountConfig.d.ts.map +1 -0
- package/dist/types/providers/lighter/accountConfig.d.ts +13 -0
- package/dist/types/providers/lighter/accountConfig.d.ts.map +1 -0
- package/dist/types/realtime/PerpsWsClient.d.ts +13 -1
- package/dist/types/realtime/PerpsWsClient.d.ts.map +1 -1
- package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
- package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/types/realtime/hyperliquid/types.d.ts +11 -9
- package/dist/types/realtime/hyperliquid/types.d.ts.map +1 -1
- package/dist/types/realtime/lighter/LighterWsProvider.d.ts +68 -0
- package/dist/types/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
- package/dist/types/realtime/lighter/types.d.ts +108 -0
- package/dist/types/realtime/lighter/types.d.ts.map +1 -0
- package/dist/types/services/createAction.d.ts +11 -0
- package/dist/types/services/createAction.d.ts.map +1 -0
- package/dist/types/services/executeAction.d.ts +11 -0
- package/dist/types/services/executeAction.d.ts.map +1 -0
- package/dist/types/services/getAccount.d.ts +7 -7
- package/dist/types/services/getAccount.d.ts.map +1 -1
- package/dist/types/services/getActivity.d.ts +49 -0
- package/dist/types/services/getActivity.d.ts.map +1 -0
- package/dist/types/services/getAsset.d.ts +20 -0
- package/dist/types/services/getAsset.d.ts.map +1 -0
- package/dist/types/services/getAssets.d.ts +18 -0
- package/dist/types/services/getAssets.d.ts.map +1 -0
- package/dist/{esm/services/getHistory.d.ts → types/services/getFills.d.ts} +17 -13
- package/dist/types/services/getFills.d.ts.map +1 -0
- package/dist/types/services/getOhlcv.d.ts +4 -4
- package/dist/types/services/getOhlcv.d.ts.map +1 -1
- package/dist/types/services/getOrder.d.ts +4 -4
- package/dist/types/services/getOrder.d.ts.map +1 -1
- package/dist/types/services/getOrderbook.d.ts +4 -4
- package/dist/types/services/getOrderbook.d.ts.map +1 -1
- package/dist/types/services/getOrders.d.ts +27 -0
- package/dist/types/services/getOrders.d.ts.map +1 -0
- package/dist/types/services/getPositions.d.ts +27 -0
- package/dist/types/services/getPositions.d.ts.map +1 -0
- package/dist/types/services/getPrices.d.ts +5 -5
- package/dist/types/services/getPrices.d.ts.map +1 -1
- package/dist/types/services/getProviders.d.ts +20 -0
- package/dist/types/services/getProviders.d.ts.map +1 -0
- package/dist/types/signers/lighter/LighterKeyStore.d.ts +29 -0
- package/dist/types/signers/lighter/LighterKeyStore.d.ts.map +1 -0
- package/dist/types/signers/lighter/LighterReadOnlyTokenManager.d.ts +174 -0
- package/dist/types/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/types/signers/lighter/LighterSigner.d.ts +88 -0
- package/dist/types/signers/lighter/LighterSigner.d.ts.map +1 -0
- package/dist/types/signers/lighter/index.d.ts +9 -0
- package/dist/types/signers/lighter/index.d.ts.map +1 -0
- package/dist/types/signers/lighter/wasmLoader.d.ts +71 -0
- package/dist/types/signers/lighter/wasmLoader.d.ts.map +1 -0
- package/dist/types/utils/accountSummary.d.ts +13 -0
- package/dist/types/utils/accountSummary.d.ts.map +1 -0
- package/dist/types/utils/assertNever.d.ts +19 -0
- package/dist/types/utils/assertNever.d.ts.map +1 -0
- package/dist/types/utils/calculations.d.ts +109 -0
- package/dist/types/utils/calculations.d.ts.map +1 -0
- package/dist/types/utils/hyperliquid/index.d.ts +3 -0
- package/dist/types/utils/hyperliquid/index.d.ts.map +1 -0
- package/dist/types/utils/hyperliquid/liquidation.d.ts +46 -0
- package/dist/types/utils/hyperliquid/liquidation.d.ts.map +1 -0
- package/dist/types/utils/hyperliquid/orderFormatting.d.ts +44 -0
- package/dist/types/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
- package/dist/types/utils/orderClassification.d.ts +29 -0
- package/dist/types/utils/orderClassification.d.ts.map +1 -0
- package/dist/types/utils/orderMath.d.ts +40 -0
- package/dist/types/utils/orderMath.d.ts.map +1 -0
- package/dist/types/utils/parse.d.ts +18 -0
- package/dist/types/utils/parse.d.ts.map +1 -0
- package/dist/types/utils/positionMath.d.ts +78 -0
- package/dist/types/utils/positionMath.d.ts.map +1 -0
- package/dist/types/utils/request.d.ts +1 -2
- package/dist/types/utils/request.d.ts.map +1 -1
- package/dist/types/utils/signTypedData.d.ts +8 -10
- package/dist/types/utils/signTypedData.d.ts.map +1 -1
- package/dist/types/utils/units.d.ts +20 -0
- package/dist/types/utils/units.d.ts.map +1 -0
- package/dist/types/utils/validation.d.ts +15 -0
- package/dist/types/utils/validation.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +15 -6
- package/src/agent/AgentManager.ts +21 -19
- package/src/agent/storage.ts +1 -1
- package/src/client/PerpsClient.ts +1221 -396
- package/src/client/createPerpsClient.ts +39 -54
- package/src/client/projectAccountConfigSettings.ts +39 -0
- package/src/client/types.ts +130 -52
- package/src/errors/PerpsError.ts +3 -22
- package/src/errors/constants.ts +0 -11
- package/src/index.ts +115 -47
- package/src/providers/hyperliquid/accountConfig.ts +92 -0
- package/src/providers/lighter/accountConfig.ts +103 -0
- package/src/realtime/PerpsWsClient.ts +67 -32
- package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +199 -64
- package/src/realtime/hyperliquid/types.ts +8 -10
- package/src/realtime/lighter/LighterWsProvider.ts +682 -0
- package/src/realtime/lighter/types.ts +121 -0
- package/src/services/createAction.ts +41 -0
- package/src/services/executeAction.ts +41 -0
- package/src/services/getAccount.ts +8 -8
- package/src/services/getActivity.ts +77 -0
- package/src/services/getAsset.ts +37 -0
- package/src/services/getAssets.ts +32 -0
- package/src/services/{getHistory.ts → getFills.ts} +23 -17
- package/src/services/getOhlcv.ts +14 -11
- package/src/services/getOrder.ts +11 -8
- package/src/services/getOrderbook.ts +11 -8
- package/src/services/getOrders.ts +45 -0
- package/src/services/getPositions.ts +45 -0
- package/src/services/getPrices.ts +6 -6
- package/src/services/{getDexes.ts → getProviders.ts} +10 -10
- package/src/signers/lighter/LighterKeyStore.ts +74 -0
- package/src/signers/lighter/LighterReadOnlyTokenManager.ts +358 -0
- package/src/signers/lighter/LighterSigner.ts +396 -0
- package/src/signers/lighter/index.ts +36 -0
- package/src/signers/lighter/wasmLoader.ts +291 -0
- package/src/utils/accountSummary.ts +130 -0
- package/src/utils/assertNever.ts +22 -0
- package/src/utils/calculations.ts +209 -0
- package/src/utils/hyperliquid/index.ts +9 -0
- package/src/utils/hyperliquid/liquidation.ts +71 -0
- package/src/utils/hyperliquid/orderFormatting.ts +96 -0
- package/src/utils/orderClassification.ts +64 -0
- package/src/utils/orderMath.ts +130 -0
- package/src/utils/parse.ts +28 -0
- package/src/utils/positionMath.ts +107 -0
- package/src/utils/request.ts +26 -7
- package/src/utils/signTypedData.ts +19 -15
- package/src/utils/units.ts +32 -0
- package/src/utils/validation.ts +35 -0
- package/src/version.ts +1 -1
- package/wasm/lighter-signer.wasm +0 -0
- package/wasm/wasm_exec.js +575 -0
- package/dist/cjs/dex/hyperliquid.d.ts +0 -3
- package/dist/cjs/dex/hyperliquid.d.ts.map +0 -1
- package/dist/cjs/dex/hyperliquid.js +0 -21
- package/dist/cjs/dex/hyperliquid.js.map +0 -1
- package/dist/cjs/dex/registry.d.ts +0 -3
- package/dist/cjs/dex/registry.d.ts.map +0 -1
- package/dist/cjs/dex/registry.js +0 -16
- package/dist/cjs/dex/registry.js.map +0 -1
- package/dist/cjs/dex/types.d.ts +0 -13
- package/dist/cjs/dex/types.d.ts.map +0 -1
- package/dist/cjs/errors/AgentError.d.ts +0 -10
- package/dist/cjs/errors/AgentError.d.ts.map +0 -1
- package/dist/cjs/errors/AgentError.js +0 -23
- package/dist/cjs/errors/AgentError.js.map +0 -1
- package/dist/cjs/errors/HTTPError.d.ts +0 -11
- package/dist/cjs/errors/HTTPError.d.ts.map +0 -1
- package/dist/cjs/errors/HTTPError.js +0 -62
- package/dist/cjs/errors/HTTPError.js.map +0 -1
- package/dist/cjs/errors/PerpsSDKError.d.ts +0 -9
- package/dist/cjs/errors/PerpsSDKError.d.ts.map +0 -1
- package/dist/cjs/errors/PerpsSDKError.js +0 -36
- package/dist/cjs/errors/PerpsSDKError.js.map +0 -1
- package/dist/cjs/errors/ServerError.d.ts +0 -10
- package/dist/cjs/errors/ServerError.d.ts.map +0 -1
- package/dist/cjs/errors/ServerError.js +0 -24
- package/dist/cjs/errors/ServerError.js.map +0 -1
- package/dist/cjs/errors/ValidationError.d.ts +0 -9
- package/dist/cjs/errors/ValidationError.d.ts.map +0 -1
- package/dist/cjs/errors/ValidationError.js +0 -23
- package/dist/cjs/errors/ValidationError.js.map +0 -1
- package/dist/cjs/errors/utils/rootCause.d.ts +0 -6
- package/dist/cjs/errors/utils/rootCause.d.ts.map +0 -1
- package/dist/cjs/errors/utils/rootCause.js +0 -41
- package/dist/cjs/errors/utils/rootCause.js.map +0 -1
- package/dist/cjs/services/cancelOrder.d.ts +0 -10
- package/dist/cjs/services/cancelOrder.d.ts.map +0 -1
- package/dist/cjs/services/cancelOrder.js +0 -16
- package/dist/cjs/services/cancelOrder.js.map +0 -1
- package/dist/cjs/services/createAuthorization.d.ts +0 -10
- package/dist/cjs/services/createAuthorization.d.ts.map +0 -1
- package/dist/cjs/services/createAuthorization.js +0 -16
- package/dist/cjs/services/createAuthorization.js.map +0 -1
- package/dist/cjs/services/createOrder.d.ts +0 -21
- package/dist/cjs/services/createOrder.d.ts.map +0 -1
- package/dist/cjs/services/createOrder.js +0 -27
- package/dist/cjs/services/createOrder.js.map +0 -1
- package/dist/cjs/services/createWithdrawal.d.ts +0 -9
- package/dist/cjs/services/createWithdrawal.d.ts.map +0 -1
- package/dist/cjs/services/createWithdrawal.js +0 -15
- package/dist/cjs/services/createWithdrawal.js.map +0 -1
- package/dist/cjs/services/getDexes.d.ts +0 -4
- package/dist/cjs/services/getDexes.d.ts.map +0 -1
- package/dist/cjs/services/getDexes.js.map +0 -1
- package/dist/cjs/services/getHistory.d.ts +0 -10
- package/dist/cjs/services/getHistory.d.ts.map +0 -1
- package/dist/cjs/services/getHistory.js.map +0 -1
- package/dist/cjs/services/getMarket.d.ts +0 -8
- package/dist/cjs/services/getMarket.d.ts.map +0 -1
- package/dist/cjs/services/getMarket.js.map +0 -1
- package/dist/cjs/services/getMarkets.d.ts +0 -7
- package/dist/cjs/services/getMarkets.d.ts.map +0 -1
- package/dist/cjs/services/getMarkets.js.map +0 -1
- package/dist/cjs/services/submitAuthorization.d.ts +0 -10
- package/dist/cjs/services/submitAuthorization.d.ts.map +0 -1
- package/dist/cjs/services/submitAuthorization.js.map +0 -1
- package/dist/cjs/services/submitOrder.d.ts +0 -10
- package/dist/cjs/services/submitOrder.d.ts.map +0 -1
- package/dist/cjs/services/submitOrder.js.map +0 -1
- package/dist/cjs/services/submitWithdrawal.d.ts +0 -9
- package/dist/cjs/services/submitWithdrawal.d.ts.map +0 -1
- package/dist/cjs/services/submitWithdrawal.js +0 -15
- package/dist/cjs/services/submitWithdrawal.js.map +0 -1
- package/dist/esm/dex/hyperliquid.d.ts +0 -3
- package/dist/esm/dex/hyperliquid.d.ts.map +0 -1
- package/dist/esm/dex/hyperliquid.js +0 -19
- package/dist/esm/dex/hyperliquid.js.map +0 -1
- package/dist/esm/dex/registry.d.ts +0 -3
- package/dist/esm/dex/registry.d.ts.map +0 -1
- package/dist/esm/dex/registry.js +0 -13
- package/dist/esm/dex/registry.js.map +0 -1
- package/dist/esm/dex/types.d.ts +0 -15
- package/dist/esm/dex/types.d.ts.map +0 -1
- package/dist/esm/dex/types.js +0 -2
- package/dist/esm/dex/types.js.map +0 -1
- package/dist/esm/errors/AgentError.d.ts +0 -25
- package/dist/esm/errors/AgentError.d.ts.map +0 -1
- package/dist/esm/errors/AgentError.js +0 -35
- package/dist/esm/errors/AgentError.js.map +0 -1
- package/dist/esm/errors/HTTPError.d.ts +0 -11
- package/dist/esm/errors/HTTPError.d.ts.map +0 -1
- package/dist/esm/errors/HTTPError.js +0 -61
- package/dist/esm/errors/HTTPError.js.map +0 -1
- package/dist/esm/errors/PerpsSDKError.d.ts +0 -40
- package/dist/esm/errors/PerpsSDKError.d.ts.map +0 -1
- package/dist/esm/errors/PerpsSDKError.js +0 -67
- package/dist/esm/errors/PerpsSDKError.js.map +0 -1
- package/dist/esm/errors/ServerError.d.ts +0 -23
- package/dist/esm/errors/ServerError.d.ts.map +0 -1
- package/dist/esm/errors/ServerError.js +0 -34
- package/dist/esm/errors/ServerError.js.map +0 -1
- package/dist/esm/errors/ValidationError.d.ts +0 -23
- package/dist/esm/errors/ValidationError.d.ts.map +0 -1
- package/dist/esm/errors/ValidationError.js +0 -34
- package/dist/esm/errors/ValidationError.js.map +0 -1
- package/dist/esm/errors/utils/rootCause.d.ts +0 -71
- package/dist/esm/errors/utils/rootCause.d.ts.map +0 -1
- package/dist/esm/errors/utils/rootCause.js +0 -99
- package/dist/esm/errors/utils/rootCause.js.map +0 -1
- package/dist/esm/services/cancelOrder.d.ts +0 -51
- package/dist/esm/services/cancelOrder.d.ts.map +0 -1
- package/dist/esm/services/cancelOrder.js +0 -50
- package/dist/esm/services/cancelOrder.js.map +0 -1
- package/dist/esm/services/createAuthorization.d.ts +0 -51
- package/dist/esm/services/createAuthorization.d.ts.map +0 -1
- package/dist/esm/services/createAuthorization.js +0 -50
- package/dist/esm/services/createAuthorization.js.map +0 -1
- package/dist/esm/services/createOrder.d.ts +0 -74
- package/dist/esm/services/createOrder.d.ts.map +0 -1
- package/dist/esm/services/createOrder.js +0 -62
- package/dist/esm/services/createOrder.js.map +0 -1
- package/dist/esm/services/createWithdrawal.d.ts +0 -49
- package/dist/esm/services/createWithdrawal.d.ts.map +0 -1
- package/dist/esm/services/createWithdrawal.js +0 -49
- package/dist/esm/services/createWithdrawal.js.map +0 -1
- package/dist/esm/services/getDexes.d.ts +0 -20
- package/dist/esm/services/getDexes.d.ts.map +0 -1
- package/dist/esm/services/getDexes.js +0 -21
- package/dist/esm/services/getDexes.js.map +0 -1
- package/dist/esm/services/getHistory.d.ts.map +0 -1
- package/dist/esm/services/getHistory.js.map +0 -1
- package/dist/esm/services/getMarket.d.ts +0 -27
- package/dist/esm/services/getMarket.d.ts.map +0 -1
- package/dist/esm/services/getMarket.js +0 -25
- package/dist/esm/services/getMarket.js.map +0 -1
- package/dist/esm/services/getMarkets.d.ts +0 -25
- package/dist/esm/services/getMarkets.d.ts.map +0 -1
- package/dist/esm/services/getMarkets.js +0 -23
- package/dist/esm/services/getMarkets.js.map +0 -1
- package/dist/esm/services/submitAuthorization.d.ts +0 -42
- package/dist/esm/services/submitAuthorization.d.ts.map +0 -1
- package/dist/esm/services/submitAuthorization.js +0 -41
- package/dist/esm/services/submitAuthorization.js.map +0 -1
- package/dist/esm/services/submitOrder.d.ts +0 -44
- package/dist/esm/services/submitOrder.d.ts.map +0 -1
- package/dist/esm/services/submitOrder.js +0 -43
- package/dist/esm/services/submitOrder.js.map +0 -1
- package/dist/esm/services/submitWithdrawal.d.ts +0 -40
- package/dist/esm/services/submitWithdrawal.d.ts.map +0 -1
- package/dist/esm/services/submitWithdrawal.js +0 -40
- package/dist/esm/services/submitWithdrawal.js.map +0 -1
- package/dist/types/dex/hyperliquid.d.ts +0 -3
- package/dist/types/dex/hyperliquid.d.ts.map +0 -1
- package/dist/types/dex/registry.d.ts +0 -3
- package/dist/types/dex/registry.d.ts.map +0 -1
- package/dist/types/dex/types.d.ts +0 -15
- package/dist/types/dex/types.d.ts.map +0 -1
- package/dist/types/errors/AgentError.d.ts +0 -25
- package/dist/types/errors/AgentError.d.ts.map +0 -1
- package/dist/types/errors/HTTPError.d.ts +0 -11
- package/dist/types/errors/HTTPError.d.ts.map +0 -1
- package/dist/types/errors/PerpsSDKError.d.ts +0 -40
- package/dist/types/errors/PerpsSDKError.d.ts.map +0 -1
- package/dist/types/errors/ServerError.d.ts +0 -23
- package/dist/types/errors/ServerError.d.ts.map +0 -1
- package/dist/types/errors/ValidationError.d.ts +0 -23
- package/dist/types/errors/ValidationError.d.ts.map +0 -1
- package/dist/types/errors/utils/rootCause.d.ts +0 -71
- package/dist/types/errors/utils/rootCause.d.ts.map +0 -1
- package/dist/types/services/cancelOrder.d.ts +0 -51
- package/dist/types/services/cancelOrder.d.ts.map +0 -1
- package/dist/types/services/createAuthorization.d.ts +0 -51
- package/dist/types/services/createAuthorization.d.ts.map +0 -1
- package/dist/types/services/createOrder.d.ts +0 -74
- package/dist/types/services/createOrder.d.ts.map +0 -1
- package/dist/types/services/createWithdrawal.d.ts +0 -49
- package/dist/types/services/createWithdrawal.d.ts.map +0 -1
- package/dist/types/services/getDexes.d.ts +0 -20
- package/dist/types/services/getDexes.d.ts.map +0 -1
- package/dist/types/services/getHistory.d.ts.map +0 -1
- package/dist/types/services/getMarket.d.ts +0 -27
- package/dist/types/services/getMarket.d.ts.map +0 -1
- package/dist/types/services/getMarkets.d.ts +0 -25
- package/dist/types/services/getMarkets.d.ts.map +0 -1
- package/dist/types/services/submitAuthorization.d.ts +0 -42
- package/dist/types/services/submitAuthorization.d.ts.map +0 -1
- package/dist/types/services/submitOrder.d.ts +0 -44
- package/dist/types/services/submitOrder.d.ts.map +0 -1
- package/dist/types/services/submitWithdrawal.d.ts +0 -40
- package/dist/types/services/submitWithdrawal.d.ts.map +0 -1
- package/src/dex/hyperliquid.ts +0 -20
- package/src/dex/registry.ts +0 -15
- package/src/dex/types.ts +0 -16
- package/src/errors/AgentError.ts +0 -43
- package/src/errors/HTTPError.ts +0 -72
- package/src/errors/PerpsSDKError.ts +0 -79
- package/src/errors/ServerError.ts +0 -41
- package/src/errors/ValidationError.ts +0 -38
- package/src/errors/utils/rootCause.ts +0 -112
- package/src/services/cancelOrder.ts +0 -75
- package/src/services/createAuthorization.ts +0 -79
- package/src/services/createOrder.ts +0 -116
- package/src/services/createWithdrawal.ts +0 -76
- package/src/services/getMarket.ts +0 -41
- package/src/services/getMarkets.ts +0 -37
- package/src/services/submitAuthorization.ts +0 -70
- package/src/services/submitOrder.ts +0 -72
- package/src/services/submitWithdrawal.ts +0 -67
- /package/dist/cjs/{dex → realtime/lighter}/types.js +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Address, PositionsResponse } 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 GetPositionsParams {
|
|
9
|
+
/** Provider (e.g., 'hyperliquid') */
|
|
10
|
+
provider: string
|
|
11
|
+
/** Wallet address */
|
|
12
|
+
address: Address
|
|
13
|
+
/** Optional symbol to filter to a single position */
|
|
14
|
+
symbol?: string
|
|
15
|
+
/** Maximum number of results */
|
|
16
|
+
limit?: number
|
|
17
|
+
/** Pagination cursor */
|
|
18
|
+
cursor?: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Get open positions for an account.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const { positions } = await getPositions(client, {
|
|
27
|
+
* provider: 'hyperliquid',
|
|
28
|
+
* address: '0x1234...',
|
|
29
|
+
* })
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export async function getPositions(
|
|
33
|
+
client: PerpsSDKClient,
|
|
34
|
+
params: GetPositionsParams,
|
|
35
|
+
options?: SDKRequestOptions
|
|
36
|
+
): Promise<PositionsResponse> {
|
|
37
|
+
const url = buildUrl(`${client.config.apiUrl}/positions`, {
|
|
38
|
+
provider: params.provider,
|
|
39
|
+
address: params.address,
|
|
40
|
+
...(params.symbol ? { symbol: params.symbol } : {}),
|
|
41
|
+
...(params.limit ? { limit: String(params.limit) } : {}),
|
|
42
|
+
...(params.cursor ? { cursor: params.cursor } : {}),
|
|
43
|
+
})
|
|
44
|
+
return request<PositionsResponse>(client.config, url, {}, options)
|
|
45
|
+
}
|
|
@@ -6,8 +6,8 @@ import type {
|
|
|
6
6
|
import { buildUrl, request } from '../utils/request.js'
|
|
7
7
|
|
|
8
8
|
export interface GetPricesParams {
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/** Provider to get prices from (e.g., 'hyperliquid') */
|
|
10
|
+
provider: string
|
|
11
11
|
/** Optional list of symbols to filter (e.g., ['BTC', 'ETH']) */
|
|
12
12
|
symbols?: string[]
|
|
13
13
|
}
|
|
@@ -19,18 +19,18 @@ export interface GetPricesParams {
|
|
|
19
19
|
* @param params - Request parameters
|
|
20
20
|
* @param options - Request options (e.g., AbortSignal)
|
|
21
21
|
* @returns Map of symbol to price
|
|
22
|
-
* @throws {
|
|
22
|
+
* @throws {PerpsError} On API error responses
|
|
23
23
|
* @throws {PerpsError} On network or parsing errors
|
|
24
24
|
*
|
|
25
25
|
* @example
|
|
26
26
|
* ```ts
|
|
27
27
|
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
28
|
-
* const { prices } = await getPrices(client, {
|
|
28
|
+
* const { prices } = await getPrices(client, { provider: 'hyperliquid' })
|
|
29
29
|
* console.log(prices) // { BTC: '95000.00', ETH: '3400.00', ... }
|
|
30
30
|
*
|
|
31
31
|
* // Filter by symbols
|
|
32
32
|
* const { prices } = await getPrices(client, {
|
|
33
|
-
*
|
|
33
|
+
* provider: 'hyperliquid',
|
|
34
34
|
* symbols: ['BTC', 'ETH']
|
|
35
35
|
* })
|
|
36
36
|
* ```
|
|
@@ -41,7 +41,7 @@ export async function getPrices(
|
|
|
41
41
|
options?: SDKRequestOptions
|
|
42
42
|
): Promise<PricesResponse> {
|
|
43
43
|
const url = buildUrl(`${client.config.apiUrl}/prices`, {
|
|
44
|
-
|
|
44
|
+
provider: params.provider,
|
|
45
45
|
symbols: params.symbols?.join(','),
|
|
46
46
|
})
|
|
47
47
|
return request<PricesResponse>(client.config, url, {}, options)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProvidersResponse } from '@lifi/perps-types'
|
|
2
2
|
import type {
|
|
3
3
|
PerpsSDKClient,
|
|
4
4
|
SDKRequestOptions,
|
|
@@ -6,28 +6,28 @@ import type {
|
|
|
6
6
|
import { request } from '../utils/request.js'
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* Get all available
|
|
9
|
+
* Get all available providers.
|
|
10
10
|
*
|
|
11
11
|
* @param client - The SDK client instance
|
|
12
12
|
* @param options - Request options (e.g., AbortSignal)
|
|
13
|
-
* @returns List of supported
|
|
14
|
-
* @throws {
|
|
13
|
+
* @returns List of supported providers with their authorization requirements
|
|
14
|
+
* @throws {PerpsError} On API error responses
|
|
15
15
|
* @throws {PerpsError} On network or parsing errors
|
|
16
16
|
*
|
|
17
17
|
* @example
|
|
18
18
|
* ```ts
|
|
19
19
|
* const client = createPerpsClient({ integrator: 'my-app' })
|
|
20
|
-
* const {
|
|
21
|
-
* console.log(
|
|
20
|
+
* const { providers } = await getProviders(client)
|
|
21
|
+
* console.log(providers) // [{ key: 'hyperliquid', name: 'Hyperliquid', ... }]
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
export async function
|
|
24
|
+
export async function getProviders(
|
|
25
25
|
client: PerpsSDKClient,
|
|
26
26
|
options?: SDKRequestOptions
|
|
27
|
-
): Promise<
|
|
28
|
-
return request<
|
|
27
|
+
): Promise<ProvidersResponse> {
|
|
28
|
+
return request<ProvidersResponse>(
|
|
29
29
|
client.config,
|
|
30
|
-
`${client.config.apiUrl}/
|
|
30
|
+
`${client.config.apiUrl}/providers`,
|
|
31
31
|
{},
|
|
32
32
|
options
|
|
33
33
|
)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { Address } from '@lifi/perps-types'
|
|
2
|
+
import type { StorageAdapter } from '../../agent/types.js'
|
|
3
|
+
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// LighterKeyStore
|
|
6
|
+
//
|
|
7
|
+
// Persists the Lighter-native API keypair plus account/key indices per L1
|
|
8
|
+
// user address. Unlike AgentManager, the private key here is a Lighter custom
|
|
9
|
+
// keypair — generated via WASM GenerateAPIKey — not an Ethereum private key.
|
|
10
|
+
//
|
|
11
|
+
// We namespace the storage key by provider (`lighter`) so the same user can
|
|
12
|
+
// later hold credentials for other WASM-blob providers without collision.
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
|
|
15
|
+
const STORAGE_PREFIX = 'lifi-perps-lighter-key'
|
|
16
|
+
export const LIGHTER_PROVIDER_KEY = 'lighter'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Default API key slot. Reusing one slot is deliberate: Lighter allows 256
|
|
20
|
+
* slots per account but re-registering a slot overwrites the prior key, so
|
|
21
|
+
* a fixed slot keeps storage small and recovery simple.
|
|
22
|
+
*/
|
|
23
|
+
export const DEFAULT_API_KEY_INDEX = 1
|
|
24
|
+
|
|
25
|
+
export interface LighterApiKey {
|
|
26
|
+
/** Lighter account index, looked up once via accountsByL1Address. */
|
|
27
|
+
accountIndex: number
|
|
28
|
+
/** API key slot (0-255). Defaults to {@link DEFAULT_API_KEY_INDEX}. */
|
|
29
|
+
apiKeyIndex: number
|
|
30
|
+
/** Lighter-native private key (0x-prefixed hex). */
|
|
31
|
+
apiKeyPrivateKey: string
|
|
32
|
+
/** Corresponding public key, registered via ChangePubKey. */
|
|
33
|
+
apiKeyPublicKey: string
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export class LighterKeyStore {
|
|
37
|
+
private readonly storage: StorageAdapter
|
|
38
|
+
private readonly cache = new Map<string, LighterApiKey>()
|
|
39
|
+
|
|
40
|
+
constructor(storage: StorageAdapter) {
|
|
41
|
+
this.storage = storage
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
private storageKey(address: Address): string {
|
|
45
|
+
return `${STORAGE_PREFIX}:${address.toLowerCase()}`
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async get(address: Address): Promise<LighterApiKey | null> {
|
|
49
|
+
const key = this.storageKey(address)
|
|
50
|
+
const cached = this.cache.get(key)
|
|
51
|
+
if (cached) {
|
|
52
|
+
return cached
|
|
53
|
+
}
|
|
54
|
+
const stored = await this.storage.get(key)
|
|
55
|
+
if (!stored) {
|
|
56
|
+
return null
|
|
57
|
+
}
|
|
58
|
+
const parsed = JSON.parse(stored) as LighterApiKey
|
|
59
|
+
this.cache.set(key, parsed)
|
|
60
|
+
return parsed
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async set(address: Address, value: LighterApiKey): Promise<void> {
|
|
64
|
+
const key = this.storageKey(address)
|
|
65
|
+
this.cache.set(key, value)
|
|
66
|
+
await this.storage.set(key, JSON.stringify(value))
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async remove(address: Address): Promise<void> {
|
|
70
|
+
const key = this.storageKey(address)
|
|
71
|
+
this.cache.delete(key)
|
|
72
|
+
await this.storage.remove(key)
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
Address,
|
|
3
|
+
ApproveReadOnlyTokenParams,
|
|
4
|
+
LighterAccountConfig,
|
|
5
|
+
} from '@lifi/perps-types'
|
|
6
|
+
import { PerpsErrorCode } from '@lifi/perps-types'
|
|
7
|
+
import type { Account, WalletClient } from 'viem'
|
|
8
|
+
import { localStorageAdapter } from '../../agent/storage.js'
|
|
9
|
+
import type { StorageAdapter } from '../../agent/types.js'
|
|
10
|
+
import { PerpsError } from '../../errors/PerpsError.js'
|
|
11
|
+
|
|
12
|
+
const STORAGE_PREFIX = 'lifi:perps:lighter:rotoken'
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Default Lighter HTTP host the SDK posts the mint request to. Callers
|
|
16
|
+
* pointing at testnet pass an override via {@link LighterReadOnlyTokenManagerOptions.lighterApiUrl}.
|
|
17
|
+
*/
|
|
18
|
+
export const DEFAULT_LIGHTER_API_URL = 'https://mainnet.zklighter.elliot.ai'
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Default token name persisted alongside Lighter's `tokens/create` row.
|
|
22
|
+
* Lighter requires a non-empty `name` form field; the literal here is what
|
|
23
|
+
* surfaces in Lighter's UI listing under `app.lighter.xyz/read-only-tokens`.
|
|
24
|
+
*/
|
|
25
|
+
export const DEFAULT_READ_ONLY_TOKEN_NAME = 'LI.FI Perps'
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Persisted shape of a Lighter read-only token. The `token` string is
|
|
29
|
+
* Lighter's opaque `ro:{accountIndex}:{scope}:{expiry}:{rand}` bearer; the
|
|
30
|
+
* SDK never parses it — `expiry`/`scope`/`accountIndex` are mint-time inputs
|
|
31
|
+
* we keep alongside so consumers can render expiry UX without re-fetching.
|
|
32
|
+
*/
|
|
33
|
+
export interface LighterReadOnlyToken {
|
|
34
|
+
/** Opaque bearer string — never parse client-side. */
|
|
35
|
+
token: string
|
|
36
|
+
/** Unix seconds. The SDK's source of truth for expiry. */
|
|
37
|
+
expiry: number
|
|
38
|
+
/** Lighter's `single | all` scope literal recorded at mint time. */
|
|
39
|
+
scope: 'single' | 'all'
|
|
40
|
+
/** Lighter L2 account index the token authorises. */
|
|
41
|
+
accountIndex: number
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Lighter `POST /api/v1/tokens/create` response shape (subset). Lighter's
|
|
46
|
+
* OpenAPI documents additional fields (`token_id`, `name`, `revoked`, etc.)
|
|
47
|
+
* we don't need client-side.
|
|
48
|
+
*/
|
|
49
|
+
export interface LighterCreateTokenResponse {
|
|
50
|
+
api_token: string
|
|
51
|
+
account_index: number
|
|
52
|
+
expiry: number
|
|
53
|
+
scopes: string
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Function injected for the HTTP boundary against Lighter's `tokens/create`
|
|
58
|
+
* endpoint. Returning a parsed {@link LighterCreateTokenResponse} keeps the
|
|
59
|
+
* mint code free of fetch/multipart plumbing and lets tests drop a fixture
|
|
60
|
+
* in without spinning a mock server.
|
|
61
|
+
*/
|
|
62
|
+
export type LighterTokenFetcher = (params: {
|
|
63
|
+
url: string
|
|
64
|
+
authorization: string
|
|
65
|
+
name: string
|
|
66
|
+
accountIndex: number
|
|
67
|
+
expiry: number
|
|
68
|
+
subAccountAccess: boolean
|
|
69
|
+
scopes: string
|
|
70
|
+
}) => Promise<LighterCreateTokenResponse>
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Function injected for the L1 wallet signature. Signature MUST be EIP-191
|
|
74
|
+
* `personal_sign`. Returning a 0x-prefixed hex string keeps the mint path
|
|
75
|
+
* agnostic to whichever wallet abstraction the consumer wires up.
|
|
76
|
+
*/
|
|
77
|
+
export type LighterWalletSigner = (params: {
|
|
78
|
+
address: Address
|
|
79
|
+
message: string
|
|
80
|
+
}) => Promise<string>
|
|
81
|
+
|
|
82
|
+
export interface LighterReadOnlyTokenManagerOptions {
|
|
83
|
+
storage?: StorageAdapter
|
|
84
|
+
/** Lighter API host. Defaults to {@link DEFAULT_LIGHTER_API_URL}. */
|
|
85
|
+
lighterApiUrl?: string
|
|
86
|
+
/** Override the multipart POST. Defaults to a `fetch`-based implementation. */
|
|
87
|
+
fetcher?: LighterTokenFetcher
|
|
88
|
+
/** Clock injection for testing expiry logic. Defaults to `Date.now`. */
|
|
89
|
+
now?: () => number
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface ApproveReadOnlyTokenInputs extends ApproveReadOnlyTokenParams {
|
|
93
|
+
/** L1 wallet address that signs the mint message. */
|
|
94
|
+
address: Address
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface ApproveReadOnlyTokenResult {
|
|
98
|
+
token: LighterReadOnlyToken
|
|
99
|
+
/** Projection of the post-mint Lighter account state. */
|
|
100
|
+
config: Pick<
|
|
101
|
+
LighterAccountConfig,
|
|
102
|
+
| 'provider'
|
|
103
|
+
| 'accountIndex'
|
|
104
|
+
| 'readOnlyTokenApproved'
|
|
105
|
+
| 'readOnlyTokenExpiry'
|
|
106
|
+
| 'readOnlyTokenScope'
|
|
107
|
+
>
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const SECONDS_PER_DAY = 86_400
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Manage the per-account Lighter read-only token alongside the existing
|
|
114
|
+
* `(L1 address, account index)`-scoped storage adapter pattern. Mirrors
|
|
115
|
+
* `AgentManager`'s injection surface so the same `StorageAdapter` powers
|
|
116
|
+
* both. The token is opaque — never parsed client-side; `expiry`/`scope`
|
|
117
|
+
* recorded at mint time are the source of truth.
|
|
118
|
+
*
|
|
119
|
+
* The L1 wallet signer and the HTTP fetcher are both injectable so unit
|
|
120
|
+
* tests don't need a real wallet or network.
|
|
121
|
+
*/
|
|
122
|
+
export class LighterReadOnlyTokenManager {
|
|
123
|
+
private readonly storage: StorageAdapter
|
|
124
|
+
private readonly lighterApiUrl: string
|
|
125
|
+
private readonly fetcher: LighterTokenFetcher
|
|
126
|
+
private readonly now: () => number
|
|
127
|
+
private readonly cache = new Map<string, LighterReadOnlyToken>()
|
|
128
|
+
|
|
129
|
+
constructor(options: LighterReadOnlyTokenManagerOptions = {}) {
|
|
130
|
+
this.storage = options.storage ?? localStorageAdapter
|
|
131
|
+
this.lighterApiUrl = options.lighterApiUrl ?? DEFAULT_LIGHTER_API_URL
|
|
132
|
+
this.fetcher = options.fetcher ?? defaultLighterTokenFetcher
|
|
133
|
+
this.now = options.now ?? (() => Date.now())
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
private storageKey(address: Address, accountIndex: number): string {
|
|
137
|
+
return `${STORAGE_PREFIX}:${address.toLowerCase()}:${accountIndex}`
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
private isExpired(token: LighterReadOnlyToken): boolean {
|
|
141
|
+
return token.expiry * 1000 <= this.now()
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Return the stored token for the `(address, accountIndex)` pair, or
|
|
146
|
+
* `undefined` if absent or past its `expiry`. Never surfaces an expired
|
|
147
|
+
* token — consumers can rely on the return value being usable as-is.
|
|
148
|
+
*/
|
|
149
|
+
async get(
|
|
150
|
+
address: Address,
|
|
151
|
+
accountIndex: number
|
|
152
|
+
): Promise<LighterReadOnlyToken | undefined> {
|
|
153
|
+
const key = this.storageKey(address, accountIndex)
|
|
154
|
+
const cached = this.cache.get(key)
|
|
155
|
+
if (cached) {
|
|
156
|
+
return this.isExpired(cached) ? undefined : cached
|
|
157
|
+
}
|
|
158
|
+
const raw = await this.storage.get(key)
|
|
159
|
+
if (!raw) {
|
|
160
|
+
return undefined
|
|
161
|
+
}
|
|
162
|
+
const parsed = JSON.parse(raw) as LighterReadOnlyToken
|
|
163
|
+
if (this.isExpired(parsed)) {
|
|
164
|
+
return undefined
|
|
165
|
+
}
|
|
166
|
+
this.cache.set(key, parsed)
|
|
167
|
+
return parsed
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* `true` when a stored token exists AND its `expiry` falls within
|
|
172
|
+
* `thresholdDays` of now. `false` when no token exists, when the token is
|
|
173
|
+
* already expired (caller should treat that as "no token"), or when it
|
|
174
|
+
* has more than `thresholdDays` of life left.
|
|
175
|
+
*/
|
|
176
|
+
async isReadOnlyTokenExpiringSoon(
|
|
177
|
+
address: Address,
|
|
178
|
+
accountIndex: number,
|
|
179
|
+
thresholdDays = 30
|
|
180
|
+
): Promise<boolean> {
|
|
181
|
+
const key = this.storageKey(address, accountIndex)
|
|
182
|
+
const raw =
|
|
183
|
+
this.cache.get(key) ??
|
|
184
|
+
(await (async () => {
|
|
185
|
+
const stored = await this.storage.get(key)
|
|
186
|
+
return stored ? (JSON.parse(stored) as LighterReadOnlyToken) : undefined
|
|
187
|
+
})())
|
|
188
|
+
if (!raw) {
|
|
189
|
+
return false
|
|
190
|
+
}
|
|
191
|
+
const remainingSeconds = raw.expiry - Math.floor(this.now() / 1000)
|
|
192
|
+
if (remainingSeconds <= 0) {
|
|
193
|
+
return false
|
|
194
|
+
}
|
|
195
|
+
return remainingSeconds <= thresholdDays * SECONDS_PER_DAY
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Persist `token` for the `(address, accountIndex)` pair. Overwrites any
|
|
200
|
+
* prior stored token under the same key — used both by the approve flow
|
|
201
|
+
* and by the renewal flow.
|
|
202
|
+
*/
|
|
203
|
+
async set(
|
|
204
|
+
address: Address,
|
|
205
|
+
accountIndex: number,
|
|
206
|
+
token: LighterReadOnlyToken
|
|
207
|
+
): Promise<void> {
|
|
208
|
+
const key = this.storageKey(address, accountIndex)
|
|
209
|
+
this.cache.set(key, token)
|
|
210
|
+
await this.storage.set(key, JSON.stringify(token))
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
async remove(address: Address, accountIndex: number): Promise<void> {
|
|
214
|
+
const key = this.storageKey(address, accountIndex)
|
|
215
|
+
this.cache.delete(key)
|
|
216
|
+
await this.storage.remove(key)
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Mint and persist a new Lighter read-only token.
|
|
221
|
+
*
|
|
222
|
+
* Asks `signer` to produce an EIP-191 `personal_sign` over the
|
|
223
|
+
* `createToken`-specific L1 message, POSTs the signed payload to Lighter's
|
|
224
|
+
* `/api/v1/tokens/create` via the injected `fetcher`, and persists the
|
|
225
|
+
* returned bearer alongside its `expiry`/`scope`/`accountIndex`.
|
|
226
|
+
*
|
|
227
|
+
* `expirySeconds` is the absolute unix-seconds expiry Lighter records on
|
|
228
|
+
* the row. Lighter enforces 1 day ≤ lifetime ≤ 10 years server-side; the
|
|
229
|
+
* SDK does NOT pre-validate and surfaces Lighter's 400 verbatim.
|
|
230
|
+
*
|
|
231
|
+
* `scope` defaults to `'all'` (token authorises read access to every
|
|
232
|
+
* account owned by the L1 signer). `'single'` is wired through so callers
|
|
233
|
+
* who need per-account scoping can opt in.
|
|
234
|
+
*
|
|
235
|
+
* @param signer EIP-191 wallet signer for the L1 message.
|
|
236
|
+
* @param inputs Token-mint parameters plus the L1 `address` that signs.
|
|
237
|
+
*/
|
|
238
|
+
async approve(
|
|
239
|
+
signer: LighterWalletSigner,
|
|
240
|
+
inputs: ApproveReadOnlyTokenInputs
|
|
241
|
+
): Promise<ApproveReadOnlyTokenResult> {
|
|
242
|
+
const { address, accountIndex, expirySeconds, scope } = inputs
|
|
243
|
+
const message = buildReadOnlyTokenMessage({
|
|
244
|
+
accountIndex,
|
|
245
|
+
expirySeconds,
|
|
246
|
+
scope,
|
|
247
|
+
})
|
|
248
|
+
const authorization = await signer({ address, message })
|
|
249
|
+
|
|
250
|
+
const response = await this.fetcher({
|
|
251
|
+
url: `${this.lighterApiUrl}/api/v1/tokens/create`,
|
|
252
|
+
authorization,
|
|
253
|
+
name: DEFAULT_READ_ONLY_TOKEN_NAME,
|
|
254
|
+
accountIndex,
|
|
255
|
+
expiry: expirySeconds,
|
|
256
|
+
subAccountAccess: scope === 'all',
|
|
257
|
+
scopes: scope,
|
|
258
|
+
})
|
|
259
|
+
|
|
260
|
+
const token: LighterReadOnlyToken = {
|
|
261
|
+
token: response.api_token,
|
|
262
|
+
expiry: response.expiry,
|
|
263
|
+
// Lighter echoes the literal we sent; we trust ours over the wire
|
|
264
|
+
// string so we never desynchronise the persisted shape from
|
|
265
|
+
// the typed `'single' | 'all'` discriminator.
|
|
266
|
+
scope,
|
|
267
|
+
accountIndex: response.account_index,
|
|
268
|
+
}
|
|
269
|
+
await this.set(address, token.accountIndex, token)
|
|
270
|
+
|
|
271
|
+
return {
|
|
272
|
+
token,
|
|
273
|
+
config: {
|
|
274
|
+
provider: 'lighter',
|
|
275
|
+
accountIndex: token.accountIndex,
|
|
276
|
+
readOnlyTokenApproved: true,
|
|
277
|
+
readOnlyTokenExpiry: token.expiry,
|
|
278
|
+
readOnlyTokenScope: token.scope,
|
|
279
|
+
},
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Build the EIP-191 message the user's L1 wallet signs to authorise a
|
|
286
|
+
* Lighter `tokens/create` request.
|
|
287
|
+
*
|
|
288
|
+
* NOTE — Lighter's public docs do not fully specify the message template
|
|
289
|
+
* for the read-only token mint flow. The shape here is the SDK's best-fit
|
|
290
|
+
* given (a) Lighter's UI hosts the equivalent flow at
|
|
291
|
+
* `app.lighter.xyz/read-only-tokens` and (b) Lighter's `tokens/create`
|
|
292
|
+
* endpoint reads `account_index`, `expiry`, and `scopes` as form fields.
|
|
293
|
+
* If Lighter publishes a documented template that diverges, update this
|
|
294
|
+
* builder — the test fixtures will fail loudly.
|
|
295
|
+
*/
|
|
296
|
+
export function buildReadOnlyTokenMessage(params: {
|
|
297
|
+
accountIndex: number
|
|
298
|
+
expirySeconds: number
|
|
299
|
+
scope: 'single' | 'all'
|
|
300
|
+
}): string {
|
|
301
|
+
return [
|
|
302
|
+
'Lighter Read-Only Token',
|
|
303
|
+
`account_index=${params.accountIndex}`,
|
|
304
|
+
`expiry=${params.expirySeconds}`,
|
|
305
|
+
`scopes=${params.scope}`,
|
|
306
|
+
].join('\n')
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Default fetcher: posts a multipart/form-data request to Lighter's
|
|
311
|
+
* `tokens/create` endpoint and returns the parsed response. Throws a
|
|
312
|
+
* {@link PerpsError} with the Lighter-side body when the response is
|
|
313
|
+
* non-2xx.
|
|
314
|
+
*/
|
|
315
|
+
export const defaultLighterTokenFetcher: LighterTokenFetcher = async ({
|
|
316
|
+
url,
|
|
317
|
+
authorization,
|
|
318
|
+
name,
|
|
319
|
+
accountIndex,
|
|
320
|
+
expiry,
|
|
321
|
+
subAccountAccess,
|
|
322
|
+
scopes,
|
|
323
|
+
}) => {
|
|
324
|
+
const form = new FormData()
|
|
325
|
+
form.set('name', name)
|
|
326
|
+
form.set('account_index', String(accountIndex))
|
|
327
|
+
form.set('expiry', String(expiry))
|
|
328
|
+
form.set('sub_account_access', String(subAccountAccess))
|
|
329
|
+
form.set('scopes', scopes)
|
|
330
|
+
|
|
331
|
+
const response = await fetch(url, {
|
|
332
|
+
method: 'POST',
|
|
333
|
+
headers: { authorization },
|
|
334
|
+
body: form,
|
|
335
|
+
})
|
|
336
|
+
|
|
337
|
+
if (!response.ok) {
|
|
338
|
+
const body = await response.text()
|
|
339
|
+
throw new PerpsError(
|
|
340
|
+
PerpsErrorCode.ServerError,
|
|
341
|
+
`Lighter tokens/create returned ${response.status}: ${body || '<empty>'}`
|
|
342
|
+
)
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
return (await response.json()) as LighterCreateTokenResponse
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Adapter producing a {@link LighterWalletSigner} from a viem
|
|
350
|
+
* `WalletClient`. Pulled out so `PerpsClient.approveReadOnlyToken` can call
|
|
351
|
+
* into the manager without leaking viem types past the manager's boundary.
|
|
352
|
+
*/
|
|
353
|
+
export function walletClientSigner(
|
|
354
|
+
client: WalletClient<any, any, Account>
|
|
355
|
+
): LighterWalletSigner {
|
|
356
|
+
return ({ message }) =>
|
|
357
|
+
client.signMessage({ account: client.account, message })
|
|
358
|
+
}
|