@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,214 @@
|
|
|
1
|
+
import { PerpsErrorCode } from '@lifi/perps-types';
|
|
2
|
+
import { localStorageAdapter } from '../../agent/storage.js';
|
|
3
|
+
import { PerpsError } from '../../errors/PerpsError.js';
|
|
4
|
+
const STORAGE_PREFIX = 'lifi:perps:lighter:rotoken';
|
|
5
|
+
/**
|
|
6
|
+
* Default Lighter HTTP host the SDK posts the mint request to. Callers
|
|
7
|
+
* pointing at testnet pass an override via {@link LighterReadOnlyTokenManagerOptions.lighterApiUrl}.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_LIGHTER_API_URL = 'https://mainnet.zklighter.elliot.ai';
|
|
10
|
+
/**
|
|
11
|
+
* Default token name persisted alongside Lighter's `tokens/create` row.
|
|
12
|
+
* Lighter requires a non-empty `name` form field; the literal here is what
|
|
13
|
+
* surfaces in Lighter's UI listing under `app.lighter.xyz/read-only-tokens`.
|
|
14
|
+
*/
|
|
15
|
+
export const DEFAULT_READ_ONLY_TOKEN_NAME = 'LI.FI Perps';
|
|
16
|
+
const SECONDS_PER_DAY = 86_400;
|
|
17
|
+
/**
|
|
18
|
+
* Manage the per-account Lighter read-only token alongside the existing
|
|
19
|
+
* `(L1 address, account index)`-scoped storage adapter pattern. Mirrors
|
|
20
|
+
* `AgentManager`'s injection surface so the same `StorageAdapter` powers
|
|
21
|
+
* both. The token is opaque — never parsed client-side; `expiry`/`scope`
|
|
22
|
+
* recorded at mint time are the source of truth.
|
|
23
|
+
*
|
|
24
|
+
* The L1 wallet signer and the HTTP fetcher are both injectable so unit
|
|
25
|
+
* tests don't need a real wallet or network.
|
|
26
|
+
*/
|
|
27
|
+
export class LighterReadOnlyTokenManager {
|
|
28
|
+
storage;
|
|
29
|
+
lighterApiUrl;
|
|
30
|
+
fetcher;
|
|
31
|
+
now;
|
|
32
|
+
cache = new Map();
|
|
33
|
+
constructor(options = {}) {
|
|
34
|
+
this.storage = options.storage ?? localStorageAdapter;
|
|
35
|
+
this.lighterApiUrl = options.lighterApiUrl ?? DEFAULT_LIGHTER_API_URL;
|
|
36
|
+
this.fetcher = options.fetcher ?? defaultLighterTokenFetcher;
|
|
37
|
+
this.now = options.now ?? (() => Date.now());
|
|
38
|
+
}
|
|
39
|
+
storageKey(address, accountIndex) {
|
|
40
|
+
return `${STORAGE_PREFIX}:${address.toLowerCase()}:${accountIndex}`;
|
|
41
|
+
}
|
|
42
|
+
isExpired(token) {
|
|
43
|
+
return token.expiry * 1000 <= this.now();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Return the stored token for the `(address, accountIndex)` pair, or
|
|
47
|
+
* `undefined` if absent or past its `expiry`. Never surfaces an expired
|
|
48
|
+
* token — consumers can rely on the return value being usable as-is.
|
|
49
|
+
*/
|
|
50
|
+
async get(address, accountIndex) {
|
|
51
|
+
const key = this.storageKey(address, accountIndex);
|
|
52
|
+
const cached = this.cache.get(key);
|
|
53
|
+
if (cached) {
|
|
54
|
+
return this.isExpired(cached) ? undefined : cached;
|
|
55
|
+
}
|
|
56
|
+
const raw = await this.storage.get(key);
|
|
57
|
+
if (!raw) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const parsed = JSON.parse(raw);
|
|
61
|
+
if (this.isExpired(parsed)) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
this.cache.set(key, parsed);
|
|
65
|
+
return parsed;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* `true` when a stored token exists AND its `expiry` falls within
|
|
69
|
+
* `thresholdDays` of now. `false` when no token exists, when the token is
|
|
70
|
+
* already expired (caller should treat that as "no token"), or when it
|
|
71
|
+
* has more than `thresholdDays` of life left.
|
|
72
|
+
*/
|
|
73
|
+
async isReadOnlyTokenExpiringSoon(address, accountIndex, thresholdDays = 30) {
|
|
74
|
+
const key = this.storageKey(address, accountIndex);
|
|
75
|
+
const raw = this.cache.get(key) ??
|
|
76
|
+
(await (async () => {
|
|
77
|
+
const stored = await this.storage.get(key);
|
|
78
|
+
return stored ? JSON.parse(stored) : undefined;
|
|
79
|
+
})());
|
|
80
|
+
if (!raw) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
const remainingSeconds = raw.expiry - Math.floor(this.now() / 1000);
|
|
84
|
+
if (remainingSeconds <= 0) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return remainingSeconds <= thresholdDays * SECONDS_PER_DAY;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Persist `token` for the `(address, accountIndex)` pair. Overwrites any
|
|
91
|
+
* prior stored token under the same key — used both by the approve flow
|
|
92
|
+
* and by the renewal flow.
|
|
93
|
+
*/
|
|
94
|
+
async set(address, accountIndex, token) {
|
|
95
|
+
const key = this.storageKey(address, accountIndex);
|
|
96
|
+
this.cache.set(key, token);
|
|
97
|
+
await this.storage.set(key, JSON.stringify(token));
|
|
98
|
+
}
|
|
99
|
+
async remove(address, accountIndex) {
|
|
100
|
+
const key = this.storageKey(address, accountIndex);
|
|
101
|
+
this.cache.delete(key);
|
|
102
|
+
await this.storage.remove(key);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Mint and persist a new Lighter read-only token.
|
|
106
|
+
*
|
|
107
|
+
* Asks `signer` to produce an EIP-191 `personal_sign` over the
|
|
108
|
+
* `createToken`-specific L1 message, POSTs the signed payload to Lighter's
|
|
109
|
+
* `/api/v1/tokens/create` via the injected `fetcher`, and persists the
|
|
110
|
+
* returned bearer alongside its `expiry`/`scope`/`accountIndex`.
|
|
111
|
+
*
|
|
112
|
+
* `expirySeconds` is the absolute unix-seconds expiry Lighter records on
|
|
113
|
+
* the row. Lighter enforces 1 day ≤ lifetime ≤ 10 years server-side; the
|
|
114
|
+
* SDK does NOT pre-validate and surfaces Lighter's 400 verbatim.
|
|
115
|
+
*
|
|
116
|
+
* `scope` defaults to `'all'` (token authorises read access to every
|
|
117
|
+
* account owned by the L1 signer). `'single'` is wired through so callers
|
|
118
|
+
* who need per-account scoping can opt in.
|
|
119
|
+
*
|
|
120
|
+
* @param signer EIP-191 wallet signer for the L1 message.
|
|
121
|
+
* @param inputs Token-mint parameters plus the L1 `address` that signs.
|
|
122
|
+
*/
|
|
123
|
+
async approve(signer, inputs) {
|
|
124
|
+
const { address, accountIndex, expirySeconds, scope } = inputs;
|
|
125
|
+
const message = buildReadOnlyTokenMessage({
|
|
126
|
+
accountIndex,
|
|
127
|
+
expirySeconds,
|
|
128
|
+
scope,
|
|
129
|
+
});
|
|
130
|
+
const authorization = await signer({ address, message });
|
|
131
|
+
const response = await this.fetcher({
|
|
132
|
+
url: `${this.lighterApiUrl}/api/v1/tokens/create`,
|
|
133
|
+
authorization,
|
|
134
|
+
name: DEFAULT_READ_ONLY_TOKEN_NAME,
|
|
135
|
+
accountIndex,
|
|
136
|
+
expiry: expirySeconds,
|
|
137
|
+
subAccountAccess: scope === 'all',
|
|
138
|
+
scopes: scope,
|
|
139
|
+
});
|
|
140
|
+
const token = {
|
|
141
|
+
token: response.api_token,
|
|
142
|
+
expiry: response.expiry,
|
|
143
|
+
// Lighter echoes the literal we sent; we trust ours over the wire
|
|
144
|
+
// string so we never desynchronise the persisted shape from
|
|
145
|
+
// the typed `'single' | 'all'` discriminator.
|
|
146
|
+
scope,
|
|
147
|
+
accountIndex: response.account_index,
|
|
148
|
+
};
|
|
149
|
+
await this.set(address, token.accountIndex, token);
|
|
150
|
+
return {
|
|
151
|
+
token,
|
|
152
|
+
config: {
|
|
153
|
+
provider: 'lighter',
|
|
154
|
+
accountIndex: token.accountIndex,
|
|
155
|
+
readOnlyTokenApproved: true,
|
|
156
|
+
readOnlyTokenExpiry: token.expiry,
|
|
157
|
+
readOnlyTokenScope: token.scope,
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Build the EIP-191 message the user's L1 wallet signs to authorise a
|
|
164
|
+
* Lighter `tokens/create` request.
|
|
165
|
+
*
|
|
166
|
+
* NOTE — Lighter's public docs do not fully specify the message template
|
|
167
|
+
* for the read-only token mint flow. The shape here is the SDK's best-fit
|
|
168
|
+
* given (a) Lighter's UI hosts the equivalent flow at
|
|
169
|
+
* `app.lighter.xyz/read-only-tokens` and (b) Lighter's `tokens/create`
|
|
170
|
+
* endpoint reads `account_index`, `expiry`, and `scopes` as form fields.
|
|
171
|
+
* If Lighter publishes a documented template that diverges, update this
|
|
172
|
+
* builder — the test fixtures will fail loudly.
|
|
173
|
+
*/
|
|
174
|
+
export function buildReadOnlyTokenMessage(params) {
|
|
175
|
+
return [
|
|
176
|
+
'Lighter Read-Only Token',
|
|
177
|
+
`account_index=${params.accountIndex}`,
|
|
178
|
+
`expiry=${params.expirySeconds}`,
|
|
179
|
+
`scopes=${params.scope}`,
|
|
180
|
+
].join('\n');
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Default fetcher: posts a multipart/form-data request to Lighter's
|
|
184
|
+
* `tokens/create` endpoint and returns the parsed response. Throws a
|
|
185
|
+
* {@link PerpsError} with the Lighter-side body when the response is
|
|
186
|
+
* non-2xx.
|
|
187
|
+
*/
|
|
188
|
+
export const defaultLighterTokenFetcher = async ({ url, authorization, name, accountIndex, expiry, subAccountAccess, scopes, }) => {
|
|
189
|
+
const form = new FormData();
|
|
190
|
+
form.set('name', name);
|
|
191
|
+
form.set('account_index', String(accountIndex));
|
|
192
|
+
form.set('expiry', String(expiry));
|
|
193
|
+
form.set('sub_account_access', String(subAccountAccess));
|
|
194
|
+
form.set('scopes', scopes);
|
|
195
|
+
const response = await fetch(url, {
|
|
196
|
+
method: 'POST',
|
|
197
|
+
headers: { authorization },
|
|
198
|
+
body: form,
|
|
199
|
+
});
|
|
200
|
+
if (!response.ok) {
|
|
201
|
+
const body = await response.text();
|
|
202
|
+
throw new PerpsError(PerpsErrorCode.ServerError, `Lighter tokens/create returned ${response.status}: ${body || '<empty>'}`);
|
|
203
|
+
}
|
|
204
|
+
return (await response.json());
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Adapter producing a {@link LighterWalletSigner} from a viem
|
|
208
|
+
* `WalletClient`. Pulled out so `PerpsClient.approveReadOnlyToken` can call
|
|
209
|
+
* into the manager without leaking viem types past the manager's boundary.
|
|
210
|
+
*/
|
|
211
|
+
export function walletClientSigner(client) {
|
|
212
|
+
return ({ message }) => client.signMessage({ account: client.account, message });
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=LighterReadOnlyTokenManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LighterReadOnlyTokenManager.js","sourceRoot":"","sources":["../../../../src/signers/lighter/LighterReadOnlyTokenManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ActionType } from '@lifi/perps-types';
|
|
2
|
+
import { type LoadLighterWasmOptions } from './wasmLoader.js';
|
|
3
|
+
export interface LighterSignerContext {
|
|
4
|
+
/** Lighter-native private key (from GenerateAPIKey, NOT an Ethereum key). */
|
|
5
|
+
apiKeyPrivateKey: string;
|
|
6
|
+
/** API key slot registered on-chain (0-255). */
|
|
7
|
+
apiKeyIndex: number;
|
|
8
|
+
/** Lighter account index — looked up from the user's L1 Ethereum address. */
|
|
9
|
+
accountIndex: number;
|
|
10
|
+
}
|
|
11
|
+
export interface LighterSignerConfig extends LoadLighterWasmOptions {
|
|
12
|
+
/** Lighter REST API base URL. */
|
|
13
|
+
apiUrl?: string;
|
|
14
|
+
/** Lighter chain ID (304 = mainnet). */
|
|
15
|
+
chainId?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface LighterSignedBlob {
|
|
18
|
+
txType: number;
|
|
19
|
+
txInfo: string;
|
|
20
|
+
txHash: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ChangePubKeyResult extends LighterSignedBlob {
|
|
23
|
+
/** EIP-191 message the L1 Ethereum wallet must sign to authorize the key rotation. */
|
|
24
|
+
messageToSign: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ApiKeyPair {
|
|
27
|
+
publicKey: string;
|
|
28
|
+
privateKey: string;
|
|
29
|
+
}
|
|
30
|
+
export declare class LighterSigner {
|
|
31
|
+
private readonly apiUrl;
|
|
32
|
+
private readonly chainId;
|
|
33
|
+
private readonly loaderOptions;
|
|
34
|
+
private wasm;
|
|
35
|
+
private readonly registeredClients;
|
|
36
|
+
constructor(config?: LighterSignerConfig);
|
|
37
|
+
initialize(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Generate a fresh Lighter API keypair. Pass an optional 32-byte hex seed
|
|
40
|
+
* for deterministic generation (used in tests); omit for a random key.
|
|
41
|
+
*/
|
|
42
|
+
generateAPIKey(seed?: string): Promise<ApiKeyPair>;
|
|
43
|
+
/**
|
|
44
|
+
* Sign an action blob with the provided (apiKeyPrivateKey, apiKeyIndex,
|
|
45
|
+
* accountIndex) context. `wasmSignParams` comes straight from the backend's
|
|
46
|
+
* `WasmBlobActionStep`. Returns the signed `{ txType, txInfo, txHash }`
|
|
47
|
+
* triple the backend forwards to Lighter's `sendTx` endpoint.
|
|
48
|
+
*
|
|
49
|
+
* For REGISTER_API_KEY use `signChangePubKey` instead — it returns an
|
|
50
|
+
* additional `messageToSign` the L1 wallet must countersign.
|
|
51
|
+
*/
|
|
52
|
+
sign(action: ActionType, wasmSignParams: Record<string, unknown>, context: LighterSignerContext): Promise<LighterSignedBlob>;
|
|
53
|
+
/**
|
|
54
|
+
* Step 1 of the REGISTER_API_KEY flow. Generates the WASM blob for a
|
|
55
|
+
* ChangePubKey tx with `L1Sig` left empty, plus the canonical EIP-191
|
|
56
|
+
* message the L1 Ethereum wallet must sign next.
|
|
57
|
+
*
|
|
58
|
+
* Requires the freshly-generated `privateKey` (returned by
|
|
59
|
+
* {@link generateAPIKey}) — the Go WASM signer registers a per-slot client
|
|
60
|
+
* keyed on `(apiKeyIndex, accountIndex)` before it'll sign anything for
|
|
61
|
+
* that slot, including the ChangePubKey that's about to register the key
|
|
62
|
+
* on-chain. This is purely client-side bookkeeping; it does not touch the
|
|
63
|
+
* Lighter API.
|
|
64
|
+
*/
|
|
65
|
+
signChangePubKey(pubKeyHex: string, privateKey: string, nonce: number, apiKeyIndex: number, accountIndex: number): Promise<ChangePubKeyResult>;
|
|
66
|
+
/**
|
|
67
|
+
* Step 2 of REGISTER_API_KEY — inject the L1 signature produced by the
|
|
68
|
+
* user's Ethereum wallet into the ChangePubKey txInfo JSON. `L1Sig` is the
|
|
69
|
+
* only field in txInfo that depends on the L1 signature; txHash does NOT
|
|
70
|
+
* include it (so we do not recompute it).
|
|
71
|
+
*/
|
|
72
|
+
embedL1Signature(txInfo: string, l1Signature: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Create an auth token for authenticated WebSocket subscriptions.
|
|
75
|
+
* `deadline` is a Unix timestamp in seconds — tokens have an 8h hard cap.
|
|
76
|
+
*/
|
|
77
|
+
createAuthToken(deadline: number, context: LighterSignerContext): Promise<string>;
|
|
78
|
+
private ensureLoaded;
|
|
79
|
+
private ensureClient;
|
|
80
|
+
/**
|
|
81
|
+
* Map an ActionType + backend-provided params object to the positional-arg
|
|
82
|
+
* WASM call. The Go signer exports take primitives in order, not an object
|
|
83
|
+
* — so we pick fields in the exact order the Go side expects. Unknown
|
|
84
|
+
* fields (e.g. backend's integrator_* hints) are ignored.
|
|
85
|
+
*/
|
|
86
|
+
private dispatch;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=LighterSigner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LighterSigner.d.ts","sourceRoot":"","sources":["../../../../src/signers/lighter/LighterSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,iBAAiB,CAAA;AAWxB,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,CAAA;IACxB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,sFAAsF;IACtF,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAKD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,MAAM,GAAE,mBAAwB;IAUtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;;OAGG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAYxD;;;;;;;;OAQG;IACG,IAAI,CACR,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC;IAa7B;;;;;;;;;;;OAWG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,kBAAkB,CAAC;IAqC9B;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAa7D;;;OAGG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;YAiBJ,YAAY;YAOZ,YAAY;IAmB1B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAsGjB"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { ActionType } from '@lifi/perps-types';
|
|
2
|
+
import { loadLighterWasm, } from './wasmLoader.js';
|
|
3
|
+
const DEFAULT_API_URL = 'https://mainnet.zklighter.elliot.ai';
|
|
4
|
+
const DEFAULT_CHAIN_ID = 304;
|
|
5
|
+
export class LighterSigner {
|
|
6
|
+
apiUrl;
|
|
7
|
+
chainId;
|
|
8
|
+
loaderOptions;
|
|
9
|
+
wasm;
|
|
10
|
+
registeredClients = new Set();
|
|
11
|
+
constructor(config = {}) {
|
|
12
|
+
this.apiUrl = config.apiUrl ?? DEFAULT_API_URL;
|
|
13
|
+
this.chainId = config.chainId ?? DEFAULT_CHAIN_ID;
|
|
14
|
+
this.loaderOptions = {
|
|
15
|
+
wasmBinaryUrl: config.wasmBinaryUrl,
|
|
16
|
+
wasmExecJsUrl: config.wasmExecJsUrl,
|
|
17
|
+
wasmExecJsSource: config.wasmExecJsSource,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async initialize() {
|
|
21
|
+
if (!this.wasm) {
|
|
22
|
+
this.wasm = await loadLighterWasm(this.loaderOptions);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generate a fresh Lighter API keypair. Pass an optional 32-byte hex seed
|
|
27
|
+
* for deterministic generation (used in tests); omit for a random key.
|
|
28
|
+
*/
|
|
29
|
+
async generateAPIKey(seed) {
|
|
30
|
+
const wasm = await this.ensureLoaded();
|
|
31
|
+
const result = wasm.GenerateAPIKey(seed ?? '');
|
|
32
|
+
if (result.error) {
|
|
33
|
+
throw new Error(`Lighter GenerateAPIKey failed: ${result.error}`);
|
|
34
|
+
}
|
|
35
|
+
if (!result.publicKey || !result.privateKey) {
|
|
36
|
+
throw new Error('Lighter GenerateAPIKey returned an incomplete result');
|
|
37
|
+
}
|
|
38
|
+
return { publicKey: result.publicKey, privateKey: result.privateKey };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Sign an action blob with the provided (apiKeyPrivateKey, apiKeyIndex,
|
|
42
|
+
* accountIndex) context. `wasmSignParams` comes straight from the backend's
|
|
43
|
+
* `WasmBlobActionStep`. Returns the signed `{ txType, txInfo, txHash }`
|
|
44
|
+
* triple the backend forwards to Lighter's `sendTx` endpoint.
|
|
45
|
+
*
|
|
46
|
+
* For REGISTER_API_KEY use `signChangePubKey` instead — it returns an
|
|
47
|
+
* additional `messageToSign` the L1 wallet must countersign.
|
|
48
|
+
*/
|
|
49
|
+
async sign(action, wasmSignParams, context) {
|
|
50
|
+
if (action === ActionType.REGISTER_API_KEY) {
|
|
51
|
+
throw new Error('Use signChangePubKey() for REGISTER_API_KEY — the L1 eth_sign hop ' +
|
|
52
|
+
'must be coordinated by the caller.');
|
|
53
|
+
}
|
|
54
|
+
const wasm = await this.ensureLoaded();
|
|
55
|
+
await this.ensureClient(context);
|
|
56
|
+
const result = this.dispatch(wasm, action, wasmSignParams, context);
|
|
57
|
+
return unwrap(result, action);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Step 1 of the REGISTER_API_KEY flow. Generates the WASM blob for a
|
|
61
|
+
* ChangePubKey tx with `L1Sig` left empty, plus the canonical EIP-191
|
|
62
|
+
* message the L1 Ethereum wallet must sign next.
|
|
63
|
+
*
|
|
64
|
+
* Requires the freshly-generated `privateKey` (returned by
|
|
65
|
+
* {@link generateAPIKey}) — the Go WASM signer registers a per-slot client
|
|
66
|
+
* keyed on `(apiKeyIndex, accountIndex)` before it'll sign anything for
|
|
67
|
+
* that slot, including the ChangePubKey that's about to register the key
|
|
68
|
+
* on-chain. This is purely client-side bookkeeping; it does not touch the
|
|
69
|
+
* Lighter API.
|
|
70
|
+
*/
|
|
71
|
+
async signChangePubKey(pubKeyHex, privateKey, nonce, apiKeyIndex, accountIndex) {
|
|
72
|
+
const wasm = await this.ensureLoaded();
|
|
73
|
+
await this.ensureClient({
|
|
74
|
+
apiKeyPrivateKey: privateKey,
|
|
75
|
+
apiKeyIndex,
|
|
76
|
+
accountIndex,
|
|
77
|
+
});
|
|
78
|
+
// 5-arg call (matches lighter-python's signer wrapper). `skipNonce=0`
|
|
79
|
+
// means "embed the supplied nonce" — the value we just fetched from
|
|
80
|
+
// Lighter's authoritative /nextNonce.
|
|
81
|
+
const SKIP_NONCE_OFF = 0;
|
|
82
|
+
const result = wasm.SignChangePubKey(pubKeyHex, SKIP_NONCE_OFF, nonce, apiKeyIndex, accountIndex);
|
|
83
|
+
if (result.error) {
|
|
84
|
+
throw new Error(`Lighter SignChangePubKey failed: ${result.error}`);
|
|
85
|
+
}
|
|
86
|
+
if (result.txType === undefined ||
|
|
87
|
+
result.txInfo === undefined ||
|
|
88
|
+
result.txHash === undefined ||
|
|
89
|
+
!result.messageToSign) {
|
|
90
|
+
throw new Error('Lighter SignChangePubKey returned incomplete result');
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
txType: result.txType,
|
|
94
|
+
txInfo: result.txInfo,
|
|
95
|
+
txHash: result.txHash,
|
|
96
|
+
messageToSign: result.messageToSign,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Step 2 of REGISTER_API_KEY — inject the L1 signature produced by the
|
|
101
|
+
* user's Ethereum wallet into the ChangePubKey txInfo JSON. `L1Sig` is the
|
|
102
|
+
* only field in txInfo that depends on the L1 signature; txHash does NOT
|
|
103
|
+
* include it (so we do not recompute it).
|
|
104
|
+
*/
|
|
105
|
+
embedL1Signature(txInfo, l1Signature) {
|
|
106
|
+
let parsed;
|
|
107
|
+
try {
|
|
108
|
+
parsed = JSON.parse(txInfo);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
throw new Error(`Failed to parse ChangePubKey txInfo as JSON: ${err.message}`);
|
|
112
|
+
}
|
|
113
|
+
parsed.L1Sig = l1Signature;
|
|
114
|
+
return JSON.stringify(parsed);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create an auth token for authenticated WebSocket subscriptions.
|
|
118
|
+
* `deadline` is a Unix timestamp in seconds — tokens have an 8h hard cap.
|
|
119
|
+
*/
|
|
120
|
+
async createAuthToken(deadline, context) {
|
|
121
|
+
const wasm = await this.ensureLoaded();
|
|
122
|
+
await this.ensureClient(context);
|
|
123
|
+
const result = wasm.CreateAuthToken(deadline, context.apiKeyIndex, context.accountIndex);
|
|
124
|
+
if (result.error) {
|
|
125
|
+
throw new Error(`Lighter CreateAuthToken failed: ${result.error}`);
|
|
126
|
+
}
|
|
127
|
+
if (!result.authToken) {
|
|
128
|
+
throw new Error('Lighter CreateAuthToken returned no token');
|
|
129
|
+
}
|
|
130
|
+
return result.authToken;
|
|
131
|
+
}
|
|
132
|
+
async ensureLoaded() {
|
|
133
|
+
if (!this.wasm) {
|
|
134
|
+
await this.initialize();
|
|
135
|
+
}
|
|
136
|
+
return this.wasm;
|
|
137
|
+
}
|
|
138
|
+
async ensureClient(context) {
|
|
139
|
+
const key = `${context.apiKeyIndex}:${context.accountIndex}:${context.apiKeyPrivateKey}`;
|
|
140
|
+
if (this.registeredClients.has(key)) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const wasm = await this.ensureLoaded();
|
|
144
|
+
const result = wasm.CreateClient(this.apiUrl, context.apiKeyPrivateKey, this.chainId, context.apiKeyIndex, context.accountIndex);
|
|
145
|
+
if (result.error) {
|
|
146
|
+
throw new Error(`Lighter CreateClient failed: ${result.error}`);
|
|
147
|
+
}
|
|
148
|
+
this.registeredClients.add(key);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Map an ActionType + backend-provided params object to the positional-arg
|
|
152
|
+
* WASM call. The Go signer exports take primitives in order, not an object
|
|
153
|
+
* — so we pick fields in the exact order the Go side expects. Unknown
|
|
154
|
+
* fields (e.g. backend's integrator_* hints) are ignored.
|
|
155
|
+
*/
|
|
156
|
+
dispatch(wasm, action, p, ctx) {
|
|
157
|
+
const nonce = numberField(p, 'nonce');
|
|
158
|
+
switch (action) {
|
|
159
|
+
case ActionType.PLACE_ORDER:
|
|
160
|
+
case ActionType.PLACE_TRIGGER_ORDER:
|
|
161
|
+
return wasm.SignCreateOrder(numberField(p, 'market_index'), numberField(p, 'client_order_index'), numberField(p, 'base_amount'), numberField(p, 'price'), numberField(p, 'is_ask'), numberField(p, 'order_type'), numberField(p, 'time_in_force'),
|
|
162
|
+
// WASM's error message lists "reduceOnly" as bool-like, but Go
|
|
163
|
+
// actually calls Value.Int() on every arg — passing an actual bool
|
|
164
|
+
// panics. Coerce to 0/1.
|
|
165
|
+
numberField(p, 'reduce_only'), numberField(p, 'trigger_price'), numberField(p, 'order_expiry'), nonce, ctx.apiKeyIndex, ctx.accountIndex);
|
|
166
|
+
case ActionType.CANCEL_ORDER:
|
|
167
|
+
return wasm.SignCancelOrder(numberField(p, 'market_index'), numberField(p, 'order_index'), nonce, ctx.apiKeyIndex, ctx.accountIndex);
|
|
168
|
+
case ActionType.CANCEL_ALL_ORDERS:
|
|
169
|
+
return wasm.SignCancelAllOrders(numberField(p, 'time_in_force'), numberField(p, 'timestamp_ms'), nonce, ctx.apiKeyIndex, ctx.accountIndex);
|
|
170
|
+
case ActionType.MODIFY_ORDER:
|
|
171
|
+
return wasm.SignModifyOrder(numberField(p, 'market_index'), numberField(p, 'order_index'), numberField(p, 'base_amount'), numberField(p, 'price'), numberField(p, 'trigger_price'), nonce, ctx.apiKeyIndex, ctx.accountIndex);
|
|
172
|
+
case ActionType.UPDATE_LEVERAGE:
|
|
173
|
+
return wasm.SignUpdateLeverage(numberField(p, 'market_index'), numberField(p, 'fraction'), numberField(p, 'margin_mode'), nonce, ctx.apiKeyIndex, ctx.accountIndex);
|
|
174
|
+
case ActionType.UPDATE_POSITION_MARGIN:
|
|
175
|
+
return wasm.SignUpdateMargin(numberField(p, 'market_index'), numberField(p, 'usdc_amount'), numberField(p, 'direction'), nonce, ctx.apiKeyIndex, ctx.accountIndex);
|
|
176
|
+
case ActionType.WITHDRAWAL:
|
|
177
|
+
return wasm.SignWithdraw(numberField(p, 'amount'), nonce, ctx.apiKeyIndex, ctx.accountIndex);
|
|
178
|
+
case ActionType.TRANSFER:
|
|
179
|
+
// SignTransfer's 7 positional args follow the Go binding order:
|
|
180
|
+
// `toAccount, usdcAmount, fee, memo, nonce, apiKeyIndex,
|
|
181
|
+
// accountIndex`. `memo` is copied directly into a `[32]byte`, so the
|
|
182
|
+
// backend MUST send a JS string whose UTF-8 byte length is exactly
|
|
183
|
+
// 32 (in practice: 32 ASCII characters) — anything else fails with
|
|
184
|
+
// "memo expected to be 32 bytes long".
|
|
185
|
+
return wasm.SignTransfer(numberField(p, 'to_account'), numberField(p, 'usdc_amount'), numberField(p, 'fee'), stringField(p, 'memo'), nonce, ctx.apiKeyIndex, ctx.accountIndex);
|
|
186
|
+
default:
|
|
187
|
+
throw new Error(`Lighter WASM signer does not support action: ${action}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function unwrap(result, action) {
|
|
192
|
+
if (result.error) {
|
|
193
|
+
throw new Error(`Lighter sign(${action}) failed: ${result.error}`);
|
|
194
|
+
}
|
|
195
|
+
if (result.txType === undefined ||
|
|
196
|
+
result.txInfo === undefined ||
|
|
197
|
+
result.txHash === undefined) {
|
|
198
|
+
throw new Error(`Lighter sign(${action}) returned an incomplete signed blob`);
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
txType: result.txType,
|
|
202
|
+
txInfo: result.txInfo,
|
|
203
|
+
txHash: result.txHash,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
function numberField(p, key) {
|
|
207
|
+
const v = p[key];
|
|
208
|
+
if (typeof v === 'number') {
|
|
209
|
+
return v;
|
|
210
|
+
}
|
|
211
|
+
if (typeof v === 'boolean') {
|
|
212
|
+
return v ? 1 : 0;
|
|
213
|
+
}
|
|
214
|
+
if (typeof v === 'string' && v !== '' && !Number.isNaN(Number(v))) {
|
|
215
|
+
return Number(v);
|
|
216
|
+
}
|
|
217
|
+
throw new Error(`Lighter sign params missing numeric field '${key}' (got ${typeof v})`);
|
|
218
|
+
}
|
|
219
|
+
function stringField(p, key) {
|
|
220
|
+
const v = p[key];
|
|
221
|
+
if (typeof v === 'string' && v !== '') {
|
|
222
|
+
return v;
|
|
223
|
+
}
|
|
224
|
+
throw new Error(`Lighter sign params missing string field '${key}' (got ${typeof v})`);
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=LighterSigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LighterSigner.js","sourceRoot":"","sources":["../../../../src/signers/lighter/LighterSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type { LighterApiKey } from './LighterKeyStore.js';
|
|
2
|
+
export { DEFAULT_API_KEY_INDEX, LIGHTER_PROVIDER_KEY, LighterKeyStore, } from './LighterKeyStore.js';
|
|
3
|
+
export type { ApproveReadOnlyTokenInputs, ApproveReadOnlyTokenResult, LighterCreateTokenResponse, LighterReadOnlyToken, LighterReadOnlyTokenManagerOptions, LighterTokenFetcher, LighterWalletSigner, } from './LighterReadOnlyTokenManager.js';
|
|
4
|
+
export { buildReadOnlyTokenMessage, DEFAULT_LIGHTER_API_URL, DEFAULT_READ_ONLY_TOKEN_NAME, defaultLighterTokenFetcher, LighterReadOnlyTokenManager, walletClientSigner, } from './LighterReadOnlyTokenManager.js';
|
|
5
|
+
export type { ApiKeyPair, ChangePubKeyResult, LighterSignedBlob, LighterSignerConfig, LighterSignerContext, } from './LighterSigner.js';
|
|
6
|
+
export { LighterSigner } from './LighterSigner.js';
|
|
7
|
+
export type { LighterWasmExports, LoadLighterWasmOptions, } from './wasmLoader.js';
|
|
8
|
+
export { loadLighterWasm, resetLighterWasmCache } from './wasmLoader.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/signers/lighter/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,GAChB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,EAClC,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EACV,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { DEFAULT_API_KEY_INDEX, LIGHTER_PROVIDER_KEY, LighterKeyStore, } from './LighterKeyStore.js';
|
|
2
|
+
export { buildReadOnlyTokenMessage, DEFAULT_LIGHTER_API_URL, DEFAULT_READ_ONLY_TOKEN_NAME, defaultLighterTokenFetcher, LighterReadOnlyTokenManager, walletClientSigner, } from './LighterReadOnlyTokenManager.js';
|
|
3
|
+
export { LighterSigner } from './LighterSigner.js';
|
|
4
|
+
export { loadLighterWasm, resetLighterWasmCache } from './wasmLoader.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/signers/lighter/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,GAChB,MAAM,sBAAsB,CAAA;AAU7B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,kCAAkC,CAAA;AAQzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKlD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export interface LoadLighterWasmOptions {
|
|
2
|
+
/** Override URL for the `.wasm` binary (browser: fetch; Node: fs). */
|
|
3
|
+
wasmBinaryUrl?: string | URL;
|
|
4
|
+
/** Override URL for Go's `wasm_exec.js` runtime. */
|
|
5
|
+
wasmExecJsUrl?: string | URL;
|
|
6
|
+
/**
|
|
7
|
+
* Pre-fetched source of Go's `wasm_exec.js`. Preferred over
|
|
8
|
+
* `wasmExecJsUrl` for bundlers (Vite/webpack) that may transform a `.js`
|
|
9
|
+
* URL on serve, breaking the IIFE that installs `globalThis.Go`. Pass via
|
|
10
|
+
* a `?raw` import (Vite) or equivalent so the original source survives
|
|
11
|
+
* intact.
|
|
12
|
+
*/
|
|
13
|
+
wasmExecJsSource?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface LighterWasmExports {
|
|
16
|
+
GenerateAPIKey: (seed?: string) => {
|
|
17
|
+
publicKey?: string;
|
|
18
|
+
privateKey?: string;
|
|
19
|
+
error?: string;
|
|
20
|
+
};
|
|
21
|
+
CreateClient: (url: string, privateKey: string, chainId: number, apiKeyIndex: number, accountIndex: number) => {
|
|
22
|
+
error?: string;
|
|
23
|
+
};
|
|
24
|
+
CheckClient: (apiKeyIndex: number, accountIndex: number) => {
|
|
25
|
+
error?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Returns `{authToken}` on success — note the field name is `authToken`,
|
|
29
|
+
* NOT `token`. Reading the wrong field silently fails (Go sets nothing
|
|
30
|
+
* else on the result), which is why early code paths returned undefined
|
|
31
|
+
* tokens with no error.
|
|
32
|
+
*/
|
|
33
|
+
CreateAuthToken: (deadline: number, apiKeyIndex: number, accountIndex: number) => {
|
|
34
|
+
authToken?: string;
|
|
35
|
+
error?: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Signature mirrors lighter-python's `signer.SignChangePubKey(...)` call —
|
|
39
|
+
* 5 positional args including `skipNonce` (use 0 to embed our supplied
|
|
40
|
+
* nonce; 1 to leave it out for server-fill scenarios). Earlier versions
|
|
41
|
+
* here had only 4 args, which silently shifted all arguments by one and
|
|
42
|
+
* produced txInfo with garbage AccountIndex / ApiKeyIndex fields →
|
|
43
|
+
* Lighter rejected with code 20001 "invalid param".
|
|
44
|
+
*/
|
|
45
|
+
SignChangePubKey: (pubKeyHex: string, skipNonce: number, nonce: number, apiKeyIndex: number, accountIndex: number) => SignResult & {
|
|
46
|
+
messageToSign?: string;
|
|
47
|
+
};
|
|
48
|
+
SignCreateOrder: (...args: unknown[]) => SignResult;
|
|
49
|
+
SignCancelOrder: (...args: unknown[]) => SignResult;
|
|
50
|
+
SignCancelAllOrders: (...args: unknown[]) => SignResult;
|
|
51
|
+
SignTransfer: (...args: unknown[]) => SignResult;
|
|
52
|
+
SignWithdraw: (...args: unknown[]) => SignResult;
|
|
53
|
+
SignUpdateLeverage: (...args: unknown[]) => SignResult;
|
|
54
|
+
SignModifyOrder: (...args: unknown[]) => SignResult;
|
|
55
|
+
SignUpdateMargin: (...args: unknown[]) => SignResult;
|
|
56
|
+
}
|
|
57
|
+
export interface SignResult {
|
|
58
|
+
txType?: number;
|
|
59
|
+
txInfo?: string;
|
|
60
|
+
txHash?: string;
|
|
61
|
+
error?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Load the Lighter WASM signer. Memoized per-process: subsequent calls return
|
|
65
|
+
* the cached exports. The Go runtime keeps a long-running goroutine to service
|
|
66
|
+
* JS calls — we start it once and never stop it.
|
|
67
|
+
*/
|
|
68
|
+
export declare function loadLighterWasm(options?: LoadLighterWasmOptions): Promise<LighterWasmExports>;
|
|
69
|
+
/** Testing helper — drop the cached WASM instance so the next load reinitializes. */
|
|
70
|
+
export declare function resetLighterWasmCache(): void;
|
|
71
|
+
//# sourceMappingURL=wasmLoader.d.ts.map
|