@lifi/perps-sdk-provider-lighter 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/LICENSE +201 -0
- package/README.md +176 -0
- package/dist/cjs/LighterProvider.d.ts +20 -0
- package/dist/cjs/LighterProvider.d.ts.map +1 -0
- package/dist/cjs/LighterProvider.js +592 -0
- package/dist/cjs/LighterProvider.js.map +1 -0
- package/dist/cjs/accountConfig.d.ts +3 -0
- package/dist/cjs/accountConfig.d.ts.map +1 -0
- package/dist/cjs/accountConfig.js +69 -0
- package/dist/cjs/accountConfig.js.map +1 -0
- package/dist/cjs/accountSummary.d.ts +3 -0
- package/dist/cjs/accountSummary.d.ts.map +1 -0
- package/dist/cjs/accountSummary.js +8 -0
- package/dist/cjs/accountSummary.js.map +1 -0
- package/dist/cjs/constants.d.ts +14 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +18 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/signers/LighterKeyStore.d.ts +18 -0
- package/dist/cjs/signers/LighterKeyStore.d.ts.map +1 -0
- package/dist/cjs/signers/LighterKeyStore.js +54 -0
- package/dist/cjs/signers/LighterKeyStore.js.map +1 -0
- package/dist/cjs/signers/LighterReadOnlyTokenManager.d.ts +56 -0
- package/dist/cjs/signers/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/cjs/signers/LighterReadOnlyTokenManager.js +127 -0
- package/dist/cjs/signers/LighterReadOnlyTokenManager.js.map +1 -0
- package/dist/cjs/signers/LighterSigner.d.ts +41 -0
- package/dist/cjs/signers/LighterSigner.d.ts.map +1 -0
- package/dist/cjs/signers/LighterSigner.js +175 -0
- package/dist/cjs/signers/LighterSigner.js.map +1 -0
- package/dist/cjs/signers/createAuthToken.d.ts +12 -0
- package/dist/cjs/signers/createAuthToken.d.ts.map +1 -0
- package/dist/cjs/signers/createAuthToken.js +28 -0
- package/dist/cjs/signers/createAuthToken.js.map +1 -0
- package/dist/cjs/signers/index.d.ts +11 -0
- package/dist/cjs/signers/index.d.ts.map +1 -0
- package/dist/cjs/signers/index.js +19 -0
- package/dist/cjs/signers/index.js.map +1 -0
- package/dist/cjs/signers/signActions.d.ts +15 -0
- package/dist/cjs/signers/signActions.d.ts.map +1 -0
- package/dist/cjs/signers/signActions.js +142 -0
- package/dist/cjs/signers/signActions.js.map +1 -0
- package/dist/cjs/signers/wasmLoader.d.ts +42 -0
- package/dist/cjs/signers/wasmLoader.d.ts.map +1 -0
- package/dist/cjs/signers/wasmLoader.js +166 -0
- package/dist/cjs/signers/wasmLoader.js.map +1 -0
- package/dist/cjs/types/account.d.ts +97 -0
- package/dist/cjs/types/account.d.ts.map +1 -0
- package/dist/cjs/types/account.js +3 -0
- package/dist/cjs/types/account.js.map +1 -0
- package/dist/cjs/types/action.d.ts +72 -0
- package/dist/cjs/types/action.d.ts.map +1 -0
- package/dist/cjs/types/action.js +23 -0
- package/dist/cjs/types/action.js.map +1 -0
- package/dist/cjs/types/activity.d.ts +73 -0
- package/dist/cjs/types/activity.d.ts.map +1 -0
- package/dist/cjs/types/activity.js +3 -0
- package/dist/cjs/types/activity.js.map +1 -0
- package/dist/cjs/types/asset.d.ts +122 -0
- package/dist/cjs/types/asset.d.ts.map +1 -0
- package/dist/cjs/types/asset.js +3 -0
- package/dist/cjs/types/asset.js.map +1 -0
- package/dist/cjs/types/fill.d.ts +29 -0
- package/dist/cjs/types/fill.d.ts.map +1 -0
- package/dist/cjs/types/fill.js +3 -0
- package/dist/cjs/types/fill.js.map +1 -0
- package/dist/cjs/types/index.d.ts +9 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +25 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/order.d.ts +57 -0
- package/dist/cjs/types/order.d.ts.map +1 -0
- package/dist/cjs/types/order.js +3 -0
- package/dist/cjs/types/order.js.map +1 -0
- package/dist/cjs/types/submit.d.ts +39 -0
- package/dist/cjs/types/submit.d.ts.map +1 -0
- package/dist/cjs/types/submit.js +3 -0
- package/dist/cjs/types/submit.js.map +1 -0
- package/dist/cjs/types/ws.d.ts +84 -0
- package/dist/cjs/types/ws.d.ts.map +1 -0
- package/dist/cjs/types/ws.js +3 -0
- package/dist/cjs/types/ws.js.map +1 -0
- package/dist/cjs/utils/activityCursor.d.ts +12 -0
- package/dist/cjs/utils/activityCursor.d.ts.map +1 -0
- package/dist/cjs/utils/activityCursor.js +85 -0
- package/dist/cjs/utils/activityCursor.js.map +1 -0
- package/dist/cjs/utils/apiClient.d.ts +26 -0
- package/dist/cjs/utils/apiClient.d.ts.map +1 -0
- package/dist/cjs/utils/apiClient.js +94 -0
- package/dist/cjs/utils/apiClient.js.map +1 -0
- package/dist/cjs/utils/fetchDetailedAccount.d.ts +5 -0
- package/dist/cjs/utils/fetchDetailedAccount.d.ts.map +1 -0
- package/dist/cjs/utils/fetchDetailedAccount.js +22 -0
- package/dist/cjs/utils/fetchDetailedAccount.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +16 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +45 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/lighterAsset.d.ts +3 -0
- package/dist/cjs/utils/lighterAsset.d.ts.map +1 -0
- package/dist/cjs/utils/lighterAsset.js +12 -0
- package/dist/cjs/utils/lighterAsset.js.map +1 -0
- package/dist/cjs/utils/liquidation.d.ts +4 -0
- package/dist/cjs/utils/liquidation.d.ts.map +1 -0
- package/dist/cjs/utils/liquidation.js +16 -0
- package/dist/cjs/utils/liquidation.js.map +1 -0
- package/dist/cjs/utils/mapFill.d.ts +4 -0
- package/dist/cjs/utils/mapFill.d.ts.map +1 -0
- package/dist/cjs/utils/mapFill.js +61 -0
- package/dist/cjs/utils/mapFill.js.map +1 -0
- package/dist/cjs/utils/mapOpenPositions.d.ts +4 -0
- package/dist/cjs/utils/mapOpenPositions.d.ts.map +1 -0
- package/dist/cjs/utils/mapOpenPositions.js +9 -0
- package/dist/cjs/utils/mapOpenPositions.js.map +1 -0
- package/dist/cjs/utils/mapOrder.d.ts +15 -0
- package/dist/cjs/utils/mapOrder.d.ts.map +1 -0
- package/dist/cjs/utils/mapOrder.js +164 -0
- package/dist/cjs/utils/mapOrder.js.map +1 -0
- package/dist/cjs/utils/mapPosition.d.ts +4 -0
- package/dist/cjs/utils/mapPosition.d.ts.map +1 -0
- package/dist/cjs/utils/mapPosition.js +30 -0
- package/dist/cjs/utils/mapPosition.js.map +1 -0
- package/dist/cjs/utils/ohlcvInterval.d.ts +2 -0
- package/dist/cjs/utils/ohlcvInterval.d.ts.map +1 -0
- package/dist/cjs/utils/ohlcvInterval.js +26 -0
- package/dist/cjs/utils/ohlcvInterval.js.map +1 -0
- package/dist/cjs/utils/orderFormatting.d.ts +4 -0
- package/dist/cjs/utils/orderFormatting.d.ts.map +1 -0
- package/dist/cjs/utils/orderFormatting.js +23 -0
- package/dist/cjs/utils/orderFormatting.js.map +1 -0
- package/dist/cjs/utils/time.d.ts +3 -0
- package/dist/cjs/utils/time.d.ts.map +1 -0
- package/dist/cjs/utils/time.js +8 -0
- package/dist/cjs/utils/time.js.map +1 -0
- package/dist/cjs/utils/wireEncoding.d.ts +9 -0
- package/dist/cjs/utils/wireEncoding.d.ts.map +1 -0
- package/dist/cjs/utils/wireEncoding.js +87 -0
- package/dist/cjs/utils/wireEncoding.js.map +1 -0
- package/dist/cjs/websocket/LighterWsProvider.d.ts +45 -0
- package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -0
- package/dist/cjs/websocket/LighterWsProvider.js +396 -0
- package/dist/cjs/websocket/LighterWsProvider.js.map +1 -0
- package/dist/esm/LighterProvider.d.ts +105 -0
- package/dist/esm/LighterProvider.d.ts.map +1 -0
- package/dist/esm/LighterProvider.js +684 -0
- package/dist/esm/LighterProvider.js.map +1 -0
- package/dist/esm/accountConfig.d.ts +14 -0
- package/dist/esm/accountConfig.d.ts.map +1 -0
- package/dist/esm/accountConfig.js +135 -0
- package/dist/esm/accountConfig.js.map +1 -0
- package/dist/esm/accountSummary.d.ts +12 -0
- package/dist/esm/accountSummary.d.ts.map +1 -0
- package/dist/esm/accountSummary.js +14 -0
- package/dist/esm/accountSummary.js.map +1 -0
- package/dist/esm/constants.d.ts +74 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +73 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/index.d.ts +22 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/signers/LighterKeyStore.d.ts +24 -0
- package/dist/esm/signers/LighterKeyStore.d.ts.map +1 -0
- package/dist/esm/signers/LighterKeyStore.js +55 -0
- package/dist/esm/signers/LighterKeyStore.js.map +1 -0
- package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts +157 -0
- package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/esm/signers/LighterReadOnlyTokenManager.js +194 -0
- package/dist/esm/signers/LighterReadOnlyTokenManager.js.map +1 -0
- package/dist/esm/signers/LighterSigner.d.ts +94 -0
- package/dist/esm/signers/LighterSigner.d.ts.map +1 -0
- package/dist/esm/signers/LighterSigner.js +228 -0
- package/dist/esm/signers/LighterSigner.js.map +1 -0
- package/dist/esm/signers/createAuthToken.d.ts +36 -0
- package/dist/esm/signers/createAuthToken.d.ts.map +1 -0
- package/dist/esm/signers/createAuthToken.js +42 -0
- package/dist/esm/signers/createAuthToken.js.map +1 -0
- package/dist/esm/signers/index.d.ts +11 -0
- package/dist/esm/signers/index.d.ts.map +1 -0
- package/dist/esm/signers/index.js +7 -0
- package/dist/esm/signers/index.js.map +1 -0
- package/dist/esm/signers/signActions.d.ts +54 -0
- package/dist/esm/signers/signActions.d.ts.map +1 -0
- package/dist/esm/signers/signActions.js +193 -0
- package/dist/esm/signers/signActions.js.map +1 -0
- package/dist/esm/signers/wasmLoader.d.ts +79 -0
- package/dist/esm/signers/wasmLoader.d.ts.map +1 -0
- package/dist/esm/signers/wasmLoader.js +180 -0
- package/dist/esm/signers/wasmLoader.js.map +1 -0
- package/dist/esm/types/account.d.ts +113 -0
- package/dist/esm/types/account.d.ts.map +1 -0
- package/dist/esm/types/account.js +4 -0
- package/dist/esm/types/account.js.map +1 -0
- package/dist/esm/types/action.d.ts +146 -0
- package/dist/esm/types/action.d.ts.map +1 -0
- package/dist/esm/types/action.js +50 -0
- package/dist/esm/types/action.js.map +1 -0
- package/dist/esm/types/activity.d.ts +83 -0
- package/dist/esm/types/activity.d.ts.map +1 -0
- package/dist/esm/types/activity.js +4 -0
- package/dist/esm/types/activity.js.map +1 -0
- package/dist/esm/types/asset.d.ts +134 -0
- package/dist/esm/types/asset.d.ts.map +1 -0
- package/dist/esm/types/asset.js +3 -0
- package/dist/esm/types/asset.js.map +1 -0
- package/dist/esm/types/fill.d.ts +31 -0
- package/dist/esm/types/fill.d.ts.map +1 -0
- package/dist/esm/types/fill.js +3 -0
- package/dist/esm/types/fill.js.map +1 -0
- package/dist/esm/types/index.d.ts +9 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js +12 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/order.d.ts +61 -0
- package/dist/esm/types/order.d.ts.map +1 -0
- package/dist/esm/types/order.js +3 -0
- package/dist/esm/types/order.js.map +1 -0
- package/dist/esm/types/submit.d.ts +76 -0
- package/dist/esm/types/submit.d.ts.map +1 -0
- package/dist/esm/types/submit.js +3 -0
- package/dist/esm/types/submit.js.map +1 -0
- package/dist/esm/types/ws.d.ts +124 -0
- package/dist/esm/types/ws.d.ts.map +1 -0
- package/dist/esm/types/ws.js +11 -0
- package/dist/esm/types/ws.js.map +1 -0
- package/dist/esm/utils/activityCursor.d.ts +51 -0
- package/dist/esm/utils/activityCursor.d.ts.map +1 -0
- package/dist/esm/utils/activityCursor.js +99 -0
- package/dist/esm/utils/activityCursor.js.map +1 -0
- package/dist/esm/utils/apiClient.d.ts +65 -0
- package/dist/esm/utils/apiClient.d.ts.map +1 -0
- package/dist/esm/utils/apiClient.js +131 -0
- package/dist/esm/utils/apiClient.js.map +1 -0
- package/dist/esm/utils/fetchDetailedAccount.d.ts +11 -0
- package/dist/esm/utils/fetchDetailedAccount.d.ts.map +1 -0
- package/dist/esm/utils/fetchDetailedAccount.js +24 -0
- package/dist/esm/utils/fetchDetailedAccount.js.map +1 -0
- package/dist/esm/utils/index.d.ts +16 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +17 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/lighterAsset.d.ts +4 -0
- package/dist/esm/utils/lighterAsset.d.ts.map +1 -0
- package/dist/esm/utils/lighterAsset.js +9 -0
- package/dist/esm/utils/lighterAsset.js.map +1 -0
- package/dist/esm/utils/liquidation.d.ts +22 -0
- package/dist/esm/utils/liquidation.d.ts.map +1 -0
- package/dist/esm/utils/liquidation.js +31 -0
- package/dist/esm/utils/liquidation.js.map +1 -0
- package/dist/esm/utils/mapFill.d.ts +10 -0
- package/dist/esm/utils/mapFill.d.ts.map +1 -0
- package/dist/esm/utils/mapFill.js +72 -0
- package/dist/esm/utils/mapFill.js.map +1 -0
- package/dist/esm/utils/mapOpenPositions.d.ts +11 -0
- package/dist/esm/utils/mapOpenPositions.d.ts.map +1 -0
- package/dist/esm/utils/mapOpenPositions.js +12 -0
- package/dist/esm/utils/mapOpenPositions.js.map +1 -0
- package/dist/esm/utils/mapOrder.d.ts +72 -0
- package/dist/esm/utils/mapOrder.d.ts.map +1 -0
- package/dist/esm/utils/mapOrder.js +219 -0
- package/dist/esm/utils/mapOrder.js.map +1 -0
- package/dist/esm/utils/mapPosition.d.ts +9 -0
- package/dist/esm/utils/mapPosition.d.ts.map +1 -0
- package/dist/esm/utils/mapPosition.js +34 -0
- package/dist/esm/utils/mapPosition.js.map +1 -0
- package/dist/esm/utils/ohlcvInterval.d.ts +3 -0
- package/dist/esm/utils/ohlcvInterval.d.ts.map +1 -0
- package/dist/esm/utils/ohlcvInterval.js +30 -0
- package/dist/esm/utils/ohlcvInterval.js.map +1 -0
- package/dist/esm/utils/orderFormatting.d.ts +29 -0
- package/dist/esm/utils/orderFormatting.d.ts.map +1 -0
- package/dist/esm/utils/orderFormatting.js +41 -0
- package/dist/esm/utils/orderFormatting.js.map +1 -0
- package/dist/esm/utils/time.d.ts +5 -0
- package/dist/esm/utils/time.d.ts.map +1 -0
- package/dist/esm/utils/time.js +5 -0
- package/dist/esm/utils/time.js.map +1 -0
- package/dist/esm/utils/wireEncoding.d.ts +72 -0
- package/dist/esm/utils/wireEncoding.d.ts.map +1 -0
- package/dist/esm/utils/wireEncoding.js +129 -0
- package/dist/esm/utils/wireEncoding.js.map +1 -0
- package/dist/esm/websocket/LighterWsProvider.d.ts +97 -0
- package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -0
- package/dist/esm/websocket/LighterWsProvider.js +489 -0
- package/dist/esm/websocket/LighterWsProvider.js.map +1 -0
- package/dist/types/LighterProvider.d.ts +105 -0
- package/dist/types/LighterProvider.d.ts.map +1 -0
- package/dist/types/accountConfig.d.ts +14 -0
- package/dist/types/accountConfig.d.ts.map +1 -0
- package/dist/types/accountSummary.d.ts +12 -0
- package/dist/types/accountSummary.d.ts.map +1 -0
- package/dist/types/constants.d.ts +74 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/signers/LighterKeyStore.d.ts +24 -0
- package/dist/types/signers/LighterKeyStore.d.ts.map +1 -0
- package/dist/types/signers/LighterReadOnlyTokenManager.d.ts +157 -0
- package/dist/types/signers/LighterReadOnlyTokenManager.d.ts.map +1 -0
- package/dist/types/signers/LighterSigner.d.ts +94 -0
- package/dist/types/signers/LighterSigner.d.ts.map +1 -0
- package/dist/types/signers/createAuthToken.d.ts +36 -0
- package/dist/types/signers/createAuthToken.d.ts.map +1 -0
- package/dist/types/signers/index.d.ts +11 -0
- package/dist/types/signers/index.d.ts.map +1 -0
- package/dist/types/signers/signActions.d.ts +54 -0
- package/dist/types/signers/signActions.d.ts.map +1 -0
- package/dist/types/signers/wasmLoader.d.ts +79 -0
- package/dist/types/signers/wasmLoader.d.ts.map +1 -0
- package/dist/types/types/account.d.ts +113 -0
- package/dist/types/types/account.d.ts.map +1 -0
- package/dist/types/types/action.d.ts +146 -0
- package/dist/types/types/action.d.ts.map +1 -0
- package/dist/types/types/activity.d.ts +83 -0
- package/dist/types/types/activity.d.ts.map +1 -0
- package/dist/types/types/asset.d.ts +134 -0
- package/dist/types/types/asset.d.ts.map +1 -0
- package/dist/types/types/fill.d.ts +31 -0
- package/dist/types/types/fill.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +9 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/order.d.ts +61 -0
- package/dist/types/types/order.d.ts.map +1 -0
- package/dist/types/types/submit.d.ts +76 -0
- package/dist/types/types/submit.d.ts.map +1 -0
- package/dist/types/types/ws.d.ts +124 -0
- package/dist/types/types/ws.d.ts.map +1 -0
- package/dist/types/utils/activityCursor.d.ts +51 -0
- package/dist/types/utils/activityCursor.d.ts.map +1 -0
- package/dist/types/utils/apiClient.d.ts +65 -0
- package/dist/types/utils/apiClient.d.ts.map +1 -0
- package/dist/types/utils/fetchDetailedAccount.d.ts +11 -0
- package/dist/types/utils/fetchDetailedAccount.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +16 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/lighterAsset.d.ts +4 -0
- package/dist/types/utils/lighterAsset.d.ts.map +1 -0
- package/dist/types/utils/liquidation.d.ts +22 -0
- package/dist/types/utils/liquidation.d.ts.map +1 -0
- package/dist/types/utils/mapFill.d.ts +10 -0
- package/dist/types/utils/mapFill.d.ts.map +1 -0
- package/dist/types/utils/mapOpenPositions.d.ts +11 -0
- package/dist/types/utils/mapOpenPositions.d.ts.map +1 -0
- package/dist/types/utils/mapOrder.d.ts +72 -0
- package/dist/types/utils/mapOrder.d.ts.map +1 -0
- package/dist/types/utils/mapPosition.d.ts +9 -0
- package/dist/types/utils/mapPosition.d.ts.map +1 -0
- package/dist/types/utils/ohlcvInterval.d.ts +3 -0
- package/dist/types/utils/ohlcvInterval.d.ts.map +1 -0
- package/dist/types/utils/orderFormatting.d.ts +29 -0
- package/dist/types/utils/orderFormatting.d.ts.map +1 -0
- package/dist/types/utils/time.d.ts +5 -0
- package/dist/types/utils/time.d.ts.map +1 -0
- package/dist/types/utils/wireEncoding.d.ts +72 -0
- package/dist/types/utils/wireEncoding.d.ts.map +1 -0
- package/dist/types/websocket/LighterWsProvider.d.ts +97 -0
- package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -0
- package/dist/wasm/lighter-signer.wasm +0 -0
- package/dist/wasm/wasm_exec.js +575 -0
- package/package.json +67 -0
- package/src/LighterProvider.ts +1167 -0
- package/src/accountConfig.ts +162 -0
- package/src/accountSummary.ts +22 -0
- package/src/constants.ts +89 -0
- package/src/index.ts +37 -0
- package/src/signers/LighterKeyStore.ts +79 -0
- package/src/signers/LighterReadOnlyTokenManager.ts +340 -0
- package/src/signers/LighterSigner.ts +400 -0
- package/src/signers/createAuthToken.ts +69 -0
- package/src/signers/index.ts +36 -0
- package/src/signers/signActions.ts +311 -0
- package/src/signers/wasmLoader.ts +293 -0
- package/src/types/account.ts +123 -0
- package/src/types/action.ts +163 -0
- package/src/types/activity.ts +94 -0
- package/src/types/asset.ts +146 -0
- package/src/types/fill.ts +42 -0
- package/src/types/index.ts +12 -0
- package/src/types/order.ts +65 -0
- package/src/types/submit.ts +83 -0
- package/src/types/ws.ts +136 -0
- package/src/utils/activityCursor.ts +150 -0
- package/src/utils/apiClient.ts +185 -0
- package/src/utils/fetchDetailedAccount.ts +46 -0
- package/src/utils/index.ts +38 -0
- package/src/utils/lighterAsset.ts +10 -0
- package/src/utils/liquidation.ts +39 -0
- package/src/utils/mapFill.ts +108 -0
- package/src/utils/mapOpenPositions.ts +18 -0
- package/src/utils/mapOrder.ts +258 -0
- package/src/utils/mapPosition.ts +42 -0
- package/src/utils/ohlcvInterval.ts +34 -0
- package/src/utils/orderFormatting.ts +46 -0
- package/src/utils/time.ts +6 -0
- package/src/utils/wireEncoding.ts +179 -0
- package/src/websocket/LighterWsProvider.ts +725 -0
- package/wasm/lighter-signer.wasm +0 -0
- package/wasm/wasm_exec.js +575 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { FeeTier } from '@lifi/perps-types';
|
|
2
|
+
/**
|
|
3
|
+
* Lighter provider key as it appears on `Provider.key` from the backend.
|
|
4
|
+
*
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export declare const LIGHTER_PROVIDER_KEY = "lighter";
|
|
8
|
+
/**
|
|
9
|
+
* Default mainnet REST base URL for Lighter.
|
|
10
|
+
*
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export declare const DEFAULT_LIGHTER_REST_URL = "https://mainnet.zklighter.elliot.ai";
|
|
14
|
+
/** @internal */
|
|
15
|
+
export declare const DEFAULT_TRADES_LIMIT = 50;
|
|
16
|
+
/**
|
|
17
|
+
* Lighter pairs each maker/taker fee with a 1e6 integer tick:
|
|
18
|
+
* fee_fraction = current_*_fee_tick / 1_000_000
|
|
19
|
+
*
|
|
20
|
+
* See lighter-python `paper_client/types.py:_FEE_TICK` for the canonical scale.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare const LIGHTER_FEE_TICK_SCALE = 1000000;
|
|
25
|
+
/**
|
|
26
|
+
* Lighter's public base fee tier (Standard Account): 0% maker / 0% taker on all
|
|
27
|
+
* perps markets. Per-account Premium tiers exist but require auth to resolve;
|
|
28
|
+
* unauthenticated quotes use this public base. Fractions, not basis points.
|
|
29
|
+
*
|
|
30
|
+
* @public
|
|
31
|
+
*/
|
|
32
|
+
export declare const LIGHTER_BASE_FEE_TIER: FeeTier;
|
|
33
|
+
/**
|
|
34
|
+
* Wildcard `market_id` accepted by Lighter's per-market account endpoints to
|
|
35
|
+
* indicate "every market". Used on `accountInactiveOrders`, `positionFunding`,
|
|
36
|
+
* `liquidations`.
|
|
37
|
+
*
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
export declare const LIGHTER_ALL_MARKETS_WILDCARD = 255;
|
|
41
|
+
/**
|
|
42
|
+
* Lighter caps `limit` at 100 on positionFunding/liquidations endpoints.
|
|
43
|
+
*
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export declare const LIGHTER_HISTORY_PAGE_SIZE = 100;
|
|
47
|
+
/**
|
|
48
|
+
* Default API key slot — reused per account. Lighter's docs reserve indexes
|
|
49
|
+
* `{0,1,2,3}` for its own desktop/mobile interfaces; user keys start at 4
|
|
50
|
+
* (max 254, with 255 reserved as `NilApiKeyIndex`). 42 is the LI.FI-wide
|
|
51
|
+
* identifier so a user running both the Lighter app and the widget never
|
|
52
|
+
* collides with the app's session key.
|
|
53
|
+
*
|
|
54
|
+
* @public
|
|
55
|
+
*/
|
|
56
|
+
export declare const DEFAULT_API_KEY_INDEX = 42;
|
|
57
|
+
/** @internal */
|
|
58
|
+
declare const LIGHTER_CODE_ACCOUNT_NOT_FOUND = 21100;
|
|
59
|
+
/**
|
|
60
|
+
* Lighter body `code` for a rejected/invalid auth token ("invalid auth string").
|
|
61
|
+
*
|
|
62
|
+
* @internal
|
|
63
|
+
*/
|
|
64
|
+
declare const LIGHTER_INVALID_AUTH_CODE = 20013;
|
|
65
|
+
/**
|
|
66
|
+
* Lighter body `code` values that mean success. Lighter is inconsistent per
|
|
67
|
+
* endpoint: `/api/v1/account` returns `code: 200`, most others return `code: 0`.
|
|
68
|
+
* A body with no `code` field is also success (no error channel present).
|
|
69
|
+
*
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
declare const LIGHTER_SUCCESS_CODES: Set<number>;
|
|
73
|
+
export { LIGHTER_CODE_ACCOUNT_NOT_FOUND, LIGHTER_INVALID_AUTH_CODE, LIGHTER_SUCCESS_CODES, };
|
|
74
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAE7C;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,wCAAwC,CAAA;AAE7E,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,UAAY,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAoC,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,gBAAgB;AAChB,QAAA,MAAM,8BAA8B,QAAQ,CAAA;AAE5C;;;;GAIG;AACH,QAAA,MAAM,yBAAyB,QAAQ,CAAA;AAEvC;;;;;;GAMG;AACH,QAAA,MAAM,qBAAqB,aAAoB,CAAA;AAE/C,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,qBAAqB,GACtB,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lighter provider plugin for `@lifi/perps-sdk`. Serves `PerpsProvider` reads
|
|
3
|
+
* directly from Lighter's REST API (no LI.FI backend hop); auth-gated reads
|
|
4
|
+
* use the user's Lighter read-only token. Also owns `signActions` (the
|
|
5
|
+
* `WASM_BLOB` / `EVM_TX` arms of `PerpsClient.execute`) — `LighterSigner`,
|
|
6
|
+
* `LighterKeyStore`, `LighterReadOnlyTokenManager`, and the WASM blob ship
|
|
7
|
+
* with this package.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export { projectLighterConfigSettings } from './accountConfig.js';
|
|
13
|
+
export { summarizeLighterAccount } from './accountSummary.js';
|
|
14
|
+
export { DEFAULT_API_KEY_INDEX, DEFAULT_LIGHTER_REST_URL, LIGHTER_PROVIDER_KEY, } from './constants.js';
|
|
15
|
+
export type { LighterPerpsProvider, LighterProviderOptions, } from './LighterProvider.js';
|
|
16
|
+
export { Lighter, lighterProvider } from './LighterProvider.js';
|
|
17
|
+
export * from './signers/index.js';
|
|
18
|
+
export * from './types/index.js';
|
|
19
|
+
export * from './utils/index.js';
|
|
20
|
+
export type { LighterAuthProvider } from './websocket/LighterWsProvider.js';
|
|
21
|
+
export { LighterWsProvider, type LighterWsProviderOptions, lighterWsProvider, } from './websocket/LighterWsProvider.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/D,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC3E,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,iBAAiB,GAClB,MAAM,kCAAkC,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type StorageAdapter } from '@lifi/perps-sdk';
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
|
+
/** @public */
|
|
4
|
+
export interface LighterApiKey {
|
|
5
|
+
/** Lighter account index, looked up once via accountsByL1Address. */
|
|
6
|
+
accountIndex: number;
|
|
7
|
+
/** API key slot (0-255). Defaults to {@link DEFAULT_API_KEY_INDEX}. */
|
|
8
|
+
apiKeyIndex: number;
|
|
9
|
+
/** Lighter-native private key (0x-prefixed hex). */
|
|
10
|
+
apiKeyPrivateKey: string;
|
|
11
|
+
/** Corresponding public key, registered via ChangePubKey. */
|
|
12
|
+
apiKeyPublicKey: string;
|
|
13
|
+
}
|
|
14
|
+
/** @public */
|
|
15
|
+
export declare class LighterKeyStore {
|
|
16
|
+
private readonly storage;
|
|
17
|
+
private readonly cache;
|
|
18
|
+
constructor(storage: StorageAdapter);
|
|
19
|
+
private storageKey;
|
|
20
|
+
get(address: Address): Promise<LighterApiKey | null>;
|
|
21
|
+
set(address: Address, value: LighterApiKey): Promise<void>;
|
|
22
|
+
remove(address: Address): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=LighterKeyStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LighterKeyStore.d.ts","sourceRoot":"","sources":["../../../src/signers/LighterKeyStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AASnC,cAAc;AACd,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAA;IACxB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAA;CACxB;AAoBD,cAAc;AACd,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;gBAE7C,OAAO,EAAE,cAAc;IAInC,OAAO,CAAC,UAAU;IAIZ,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAcpD,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9C"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { type StorageAdapter } from '@lifi/perps-sdk';
|
|
2
|
+
import type { ApproveReadOnlyTokenParams, LighterAccountConfig } from '@lifi/perps-types';
|
|
3
|
+
import type { Address } from 'viem';
|
|
4
|
+
/**
|
|
5
|
+
* Default Lighter HTTP host the SDK posts the create request to. Callers
|
|
6
|
+
* pointing at testnet pass an override via {@link LighterReadOnlyTokenManagerOptions.lighterApiUrl}.
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare 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
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export declare const DEFAULT_READ_ONLY_TOKEN_NAME = "LI.FI Perps";
|
|
17
|
+
/**
|
|
18
|
+
* Persisted shape of a Lighter read-only token. The `token` string is
|
|
19
|
+
* Lighter's opaque `ro:{accountIndex}:{scope}:{expiry}:{rand}` bearer; the
|
|
20
|
+
* SDK never parses it — `expiry`/`scope`/`accountIndex` are create-time inputs
|
|
21
|
+
* we keep alongside so consumers can render expiry UX without re-fetching.
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export interface LighterReadOnlyToken {
|
|
25
|
+
/** Opaque bearer string — never parse client-side. */
|
|
26
|
+
token: string;
|
|
27
|
+
/** Unix seconds. The SDK's source of truth for expiry. */
|
|
28
|
+
expiry: number;
|
|
29
|
+
/** Lighter's `single | all` scope literal recorded at create time. */
|
|
30
|
+
scope: 'single' | 'all';
|
|
31
|
+
/** Lighter L2 account index the token authorises. */
|
|
32
|
+
accountIndex: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Lighter `POST /api/v1/tokens/create` response shape (subset). Lighter's
|
|
36
|
+
* OpenAPI documents additional fields (`token_id`, `name`, `revoked`, etc.)
|
|
37
|
+
* we don't need client-side.
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
export interface LighterCreateTokenResponse {
|
|
41
|
+
api_token: string;
|
|
42
|
+
account_index: number;
|
|
43
|
+
expiry: number;
|
|
44
|
+
scopes: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Function injected for the HTTP boundary against Lighter's `tokens/create`
|
|
48
|
+
* endpoint. Returning a parsed {@link LighterCreateTokenResponse} keeps the
|
|
49
|
+
* create code free of fetch/multipart plumbing and lets tests drop a fixture
|
|
50
|
+
* in without spinning a mock server.
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
export type LighterTokenFetcher = (params: {
|
|
54
|
+
url: string;
|
|
55
|
+
authorization: string;
|
|
56
|
+
name: string;
|
|
57
|
+
accountIndex: number;
|
|
58
|
+
expiry: number;
|
|
59
|
+
subAccountAccess: boolean;
|
|
60
|
+
scopes: string;
|
|
61
|
+
}) => Promise<LighterCreateTokenResponse>;
|
|
62
|
+
/** @public */
|
|
63
|
+
export interface LighterReadOnlyTokenManagerOptions {
|
|
64
|
+
storage?: StorageAdapter;
|
|
65
|
+
/** Lighter API host. Defaults to {@link DEFAULT_LIGHTER_API_URL}. */
|
|
66
|
+
lighterApiUrl?: string;
|
|
67
|
+
/** Override the multipart POST. Defaults to a `fetch`-based implementation. */
|
|
68
|
+
fetcher?: LighterTokenFetcher;
|
|
69
|
+
/** Clock injection for testing expiry logic. Defaults to `Date.now`. */
|
|
70
|
+
now?: () => number;
|
|
71
|
+
}
|
|
72
|
+
/** @public */
|
|
73
|
+
export interface ApproveReadOnlyTokenInputs extends ApproveReadOnlyTokenParams {
|
|
74
|
+
/** L1 wallet address that signs the create message. */
|
|
75
|
+
address: Address;
|
|
76
|
+
}
|
|
77
|
+
/** @public */
|
|
78
|
+
export interface ApproveReadOnlyTokenResult {
|
|
79
|
+
token: LighterReadOnlyToken;
|
|
80
|
+
/** Projection of the post-create Lighter account state. */
|
|
81
|
+
config: Pick<LighterAccountConfig, 'provider' | 'accountIndex' | 'readOnlyTokenApproved' | 'readOnlyTokenExpiry' | 'readOnlyTokenScope'>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Manage the per-account Lighter read-only token alongside the existing
|
|
85
|
+
* `(L1 address, account index)`-scoped storage adapter pattern. Takes an
|
|
86
|
+
* injectable `StorageAdapter` so callers can share one storage backend across
|
|
87
|
+
* the SDK's session stores. The token is opaque — never parsed client-side;
|
|
88
|
+
* `expiry`/`scope` recorded at create time are the source of truth.
|
|
89
|
+
*
|
|
90
|
+
* The L1 wallet signer and the HTTP fetcher are both injectable so unit
|
|
91
|
+
* tests don't need a real wallet or network.
|
|
92
|
+
* @public
|
|
93
|
+
*/
|
|
94
|
+
export declare class LighterReadOnlyTokenManager {
|
|
95
|
+
private readonly storage;
|
|
96
|
+
private readonly lighterApiUrl;
|
|
97
|
+
private readonly fetcher;
|
|
98
|
+
private readonly now;
|
|
99
|
+
private readonly cache;
|
|
100
|
+
constructor(options?: LighterReadOnlyTokenManagerOptions);
|
|
101
|
+
private storageKey;
|
|
102
|
+
private isExpired;
|
|
103
|
+
/**
|
|
104
|
+
* Return the stored token for the `(address, accountIndex)` pair, or
|
|
105
|
+
* `undefined` if absent or past its `expiry`. Never surfaces an expired
|
|
106
|
+
* token — consumers can rely on the return value being usable as-is.
|
|
107
|
+
*/
|
|
108
|
+
get(address: Address, accountIndex: number): Promise<LighterReadOnlyToken | undefined>;
|
|
109
|
+
/**
|
|
110
|
+
* `true` when a stored token exists AND its `expiry` falls within
|
|
111
|
+
* `thresholdDays` of now. `false` when no token exists, when the token is
|
|
112
|
+
* already expired (caller should treat that as "no token"), or when it
|
|
113
|
+
* has more than `thresholdDays` of life left.
|
|
114
|
+
*/
|
|
115
|
+
isReadOnlyTokenExpiringSoon(address: Address, accountIndex: number, thresholdDays?: number): Promise<boolean>;
|
|
116
|
+
/**
|
|
117
|
+
* Persist `token` for the `(address, accountIndex)` pair. Overwrites any
|
|
118
|
+
* prior stored token under the same key — used both by the approve flow
|
|
119
|
+
* and by the renewal flow.
|
|
120
|
+
*/
|
|
121
|
+
set(address: Address, accountIndex: number, token: LighterReadOnlyToken): Promise<void>;
|
|
122
|
+
remove(address: Address, accountIndex: number): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* Create and persist a new Lighter read-only token.
|
|
125
|
+
*
|
|
126
|
+
* POSTs to Lighter's `/api/v1/tokens/create` (via the injected `fetcher`)
|
|
127
|
+
* and persists the returned `ro:` bearer alongside its
|
|
128
|
+
* `expiry`/`scope`/`accountIndex`.
|
|
129
|
+
*
|
|
130
|
+
* `authorization` MUST be a **standard** Lighter auth token — one created by
|
|
131
|
+
* the account's API key (`createAuthToken` / the WASM signer), NOT an L1
|
|
132
|
+
* wallet signature. Lighter authenticates the create request with that token
|
|
133
|
+
* and rejects anything else as `invalid auth string` (code 20013).
|
|
134
|
+
*
|
|
135
|
+
* `expirySeconds` is the absolute unix-seconds expiry Lighter records on
|
|
136
|
+
* the row. Lighter enforces 1 day ≤ lifetime ≤ 10 years server-side; the
|
|
137
|
+
* SDK does NOT pre-validate and surfaces Lighter's 400 verbatim.
|
|
138
|
+
*
|
|
139
|
+
* `scope` selects sub-account coverage: `'all'` sets `sub_account_access`
|
|
140
|
+
* (read access to every sub-account of the owner); `'single'` scopes to the
|
|
141
|
+
* one account. The permission set (`scopes` form field) is always read-only
|
|
142
|
+
* (`read.*`).
|
|
143
|
+
*
|
|
144
|
+
* @param authorization Standard (API-key-signed) Lighter auth token.
|
|
145
|
+
* @param inputs Token-create parameters plus the owning `address`.
|
|
146
|
+
*/
|
|
147
|
+
approve(authorization: string, inputs: ApproveReadOnlyTokenInputs): Promise<ApproveReadOnlyTokenResult>;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Default fetcher: posts a multipart/form-data request to Lighter's
|
|
151
|
+
* `tokens/create` endpoint and returns the parsed response. Throws a
|
|
152
|
+
* {@link PerpsError} with the Lighter-side body when the response is
|
|
153
|
+
* non-2xx.
|
|
154
|
+
* @public
|
|
155
|
+
*/
|
|
156
|
+
export declare const defaultLighterTokenFetcher: LighterTokenFetcher;
|
|
157
|
+
//# sourceMappingURL=LighterReadOnlyTokenManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LighterReadOnlyTokenManager.d.ts","sourceRoot":"","sources":["../../../src/signers/LighterReadOnlyTokenManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAInC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,wCAAwC,CAAA;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,gBAAgB,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAA;IACvB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;CACf,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;AAEzC,cAAc;AACd,MAAM,WAAW,kCAAkC;IACjD,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,cAAc;AACd,MAAM,WAAW,0BAA2B,SAAQ,0BAA0B;IAC5E,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,cAAc;AACd,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,oBAAoB,CAAA;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,IAAI,CACV,oBAAoB,EAClB,UAAU,GACV,cAAc,GACd,uBAAuB,GACvB,qBAAqB,GACrB,oBAAoB,CACvB,CAAA;CACF;AAyBD;;;;;;;;;;GAUG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;gBAEpD,OAAO,GAAE,kCAAuC;IAO5D,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAIjB;;;;OAIG;IACG,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAkB5C;;;;;OAKG;IACG,2BAA2B,CAC/B,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,EACpB,aAAa,SAAK,GACjB,OAAO,CAAC,OAAO,CAAC;IAenB;;;;OAIG;IACG,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAMV,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,OAAO,CACX,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC;CAmCvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,mBA+BxC,CAAA"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { ActionType } from '@lifi/perps-types';
|
|
2
|
+
import { type LoadLighterWasmOptions } from './wasmLoader.js';
|
|
3
|
+
/** @public */
|
|
4
|
+
export interface LighterSignerContext {
|
|
5
|
+
/** Lighter-native private key (from GenerateAPIKey, NOT an Ethereum key). */
|
|
6
|
+
apiKeyPrivateKey: string;
|
|
7
|
+
/** API key slot registered on-chain (0-255). */
|
|
8
|
+
apiKeyIndex: number;
|
|
9
|
+
/** Lighter account index — looked up from the user's L1 Ethereum address. */
|
|
10
|
+
accountIndex: number;
|
|
11
|
+
}
|
|
12
|
+
/** @public */
|
|
13
|
+
export interface LighterSignerConfig extends LoadLighterWasmOptions {
|
|
14
|
+
/** Lighter REST API base URL. */
|
|
15
|
+
apiUrl?: string;
|
|
16
|
+
/** Lighter chain ID (304 = mainnet). */
|
|
17
|
+
chainId?: number;
|
|
18
|
+
}
|
|
19
|
+
/** @public */
|
|
20
|
+
export interface LighterSignedBlob {
|
|
21
|
+
txType: number;
|
|
22
|
+
txInfo: string;
|
|
23
|
+
txHash: string;
|
|
24
|
+
}
|
|
25
|
+
/** @public */
|
|
26
|
+
export interface ChangePubKeyResult extends LighterSignedBlob {
|
|
27
|
+
/** EIP-191 message the L1 Ethereum wallet must sign to authorize the key rotation. */
|
|
28
|
+
messageToSign: string;
|
|
29
|
+
}
|
|
30
|
+
/** @public */
|
|
31
|
+
export interface ApiKeyPair {
|
|
32
|
+
publicKey: string;
|
|
33
|
+
privateKey: string;
|
|
34
|
+
}
|
|
35
|
+
/** @public */
|
|
36
|
+
export declare class LighterSigner {
|
|
37
|
+
private readonly apiUrl;
|
|
38
|
+
private readonly chainId;
|
|
39
|
+
private readonly loaderOptions;
|
|
40
|
+
private wasm;
|
|
41
|
+
private readonly registeredClients;
|
|
42
|
+
constructor(config?: LighterSignerConfig);
|
|
43
|
+
initialize(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Generate a fresh Lighter API keypair. Pass an optional 32-byte hex seed
|
|
46
|
+
* for deterministic generation (used in tests); omit for a random key.
|
|
47
|
+
*/
|
|
48
|
+
generateAPIKey(seed?: string): Promise<ApiKeyPair>;
|
|
49
|
+
/**
|
|
50
|
+
* Sign an action blob with the provided (apiKeyPrivateKey, apiKeyIndex,
|
|
51
|
+
* accountIndex) context. `wasmSignParams` comes straight from the backend's
|
|
52
|
+
* `WasmBlobActionStep`. Returns the signed `{ txType, txInfo, txHash }`
|
|
53
|
+
* triple the backend forwards to Lighter's `sendTx` endpoint.
|
|
54
|
+
*
|
|
55
|
+
* For REGISTER_API_KEY use `signChangePubKey` instead — it returns an
|
|
56
|
+
* additional `messageToSign` the L1 wallet must countersign.
|
|
57
|
+
*/
|
|
58
|
+
sign(action: ActionType, wasmSignParams: Record<string, unknown>, context: LighterSignerContext): Promise<LighterSignedBlob>;
|
|
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
|
+
signChangePubKey(pubKeyHex: string, privateKey: string, nonce: number, apiKeyIndex: number, accountIndex: number, skipNonce?: 0 | 1): Promise<ChangePubKeyResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Step 2 of REGISTER_API_KEY — inject the L1 signature produced by the
|
|
74
|
+
* user's Ethereum wallet into the ChangePubKey txInfo JSON. `L1Sig` is the
|
|
75
|
+
* only field in txInfo that depends on the L1 signature; txHash does NOT
|
|
76
|
+
* include it (so we do not recompute it).
|
|
77
|
+
*/
|
|
78
|
+
embedL1Signature(txInfo: string, l1Signature: string): string;
|
|
79
|
+
/**
|
|
80
|
+
* Create an auth token for authenticated WebSocket subscriptions.
|
|
81
|
+
* `deadline` is a Unix timestamp in seconds — tokens have an 8h hard cap.
|
|
82
|
+
*/
|
|
83
|
+
createAuthToken(deadline: number, context: LighterSignerContext): Promise<string>;
|
|
84
|
+
private ensureLoaded;
|
|
85
|
+
private ensureClient;
|
|
86
|
+
/**
|
|
87
|
+
* Map an ActionType + backend-provided params object to the positional-arg
|
|
88
|
+
* WASM call. The Go signer exports take primitives in order, not an object
|
|
89
|
+
* — so we pick fields in the exact order the Go side expects. Unknown
|
|
90
|
+
* fields (e.g. backend's integrator_* hints) are ignored.
|
|
91
|
+
*/
|
|
92
|
+
private dispatch;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=LighterSigner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LighterSigner.d.ts","sourceRoot":"","sources":["../../../src/signers/LighterSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,iBAAiB,CAAA;AAOxB,cAAc;AACd,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,cAAc;AACd,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,cAAc;AACd,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,sFAAsF;IACtF,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,cAAc;AACd,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAKD,cAAc;AACd,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,EACpB,SAAS,GAAE,CAAC,GAAG,CAAK,GACnB,OAAO,CAAC,kBAAkB,CAAC;IAsC9B;;;;;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,36 @@
|
|
|
1
|
+
import type { LighterApiKey } from './LighterKeyStore.js';
|
|
2
|
+
import type { LighterReadOnlyToken } from './LighterReadOnlyTokenManager.js';
|
|
3
|
+
import type { LighterSigner } from './LighterSigner.js';
|
|
4
|
+
/** @public */
|
|
5
|
+
export interface CreateAuthTokenInputs {
|
|
6
|
+
signer: LighterSigner;
|
|
7
|
+
apiKey: Pick<LighterApiKey, 'apiKeyPrivateKey' | 'apiKeyIndex' | 'accountIndex'>;
|
|
8
|
+
/**
|
|
9
|
+
* Token lifetime in seconds. Lighter caps standard tokens at 8 hours.
|
|
10
|
+
* Defaults to 1 hour, matching the previous `PerpsClient` behaviour.
|
|
11
|
+
*/
|
|
12
|
+
lifetimeSeconds?: number;
|
|
13
|
+
/** Optional clock injection for tests. */
|
|
14
|
+
now?: () => number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a fresh Lighter standard auth token via the WASM signer. Returns the
|
|
18
|
+
* opaque bearer string Lighter will accept on its authenticated read
|
|
19
|
+
* endpoints (`getOrders`, `getOrder`, `getActivity`, etc.).
|
|
20
|
+
*
|
|
21
|
+
* This utility carries no SDK-wide coupling — pass an explicit `signer` +
|
|
22
|
+
* `apiKey` and consume the returned bearer however the caller likes
|
|
23
|
+
* (per-call `options.lighterAuthToken`, persisted cache, etc.).
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
export declare function createAuthToken(inputs: CreateAuthTokenInputs): Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* True when `token` exists, has not already expired, and is within
|
|
29
|
+
* `thresholdSeconds` of its recorded `expiry`. Intended for widget renewal
|
|
30
|
+
* banners — `thresholdSeconds` defaults to 30 days. Returns `false` for an
|
|
31
|
+
* undefined or already-expired token, so callers may treat that as "no
|
|
32
|
+
* token / renewal not needed (yet)".
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
export declare function isReadOnlyTokenExpiringSoon(token: LighterReadOnlyToken | undefined | null, thresholdSeconds?: number, now?: () => number): boolean;
|
|
36
|
+
//# sourceMappingURL=createAuthToken.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAuthToken.d.ts","sourceRoot":"","sources":["../../../src/signers/createAuthToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKvD,cAAc;AACd,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,IAAI,CACV,aAAa,EACb,kBAAkB,GAAG,aAAa,GAAG,cAAc,CACpD,CAAA;IACD;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,EAC9C,gBAAgB,GAAE,MAAkC,EACpD,GAAG,GAAE,MAAM,MAAyB,GACnC,OAAO,CAST"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { CreateAuthTokenInputs } from './createAuthToken.js';
|
|
2
|
+
export { createAuthToken, isReadOnlyTokenExpiringSoon, } from './createAuthToken.js';
|
|
3
|
+
export type { LighterApiKey } from './LighterKeyStore.js';
|
|
4
|
+
export { LighterKeyStore } from './LighterKeyStore.js';
|
|
5
|
+
export type { ApproveReadOnlyTokenInputs, ApproveReadOnlyTokenResult, LighterCreateTokenResponse, LighterReadOnlyToken, LighterReadOnlyTokenManagerOptions, LighterTokenFetcher, } from './LighterReadOnlyTokenManager.js';
|
|
6
|
+
export { DEFAULT_LIGHTER_API_URL, DEFAULT_READ_ONLY_TOKEN_NAME, defaultLighterTokenFetcher, LighterReadOnlyTokenManager, } from './LighterReadOnlyTokenManager.js';
|
|
7
|
+
export type { ApiKeyPair, ChangePubKeyResult, LighterSignedBlob, LighterSignerConfig, LighterSignerContext, } from './LighterSigner.js';
|
|
8
|
+
export { LighterSigner } from './LighterSigner.js';
|
|
9
|
+
export type { LighterWasmExports, LoadLighterWasmOptions, } from './wasmLoader.js';
|
|
10
|
+
export { loadLighterWasm, resetLighterWasmCache } from './wasmLoader.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signers/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EACL,eAAe,EACf,2BAA2B,GAC5B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,YAAY,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,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,54 @@
|
|
|
1
|
+
import { type SignActionsContext } from '@lifi/perps-sdk';
|
|
2
|
+
import type { ActionStep, EvmTxActionStep, EvmTxSignedActionStep, SignedActionStep, WasmBlobActionStep, WasmBlobSignedActionStep } from '@lifi/perps-types';
|
|
3
|
+
import { SigningMethod } from '@lifi/perps-types';
|
|
4
|
+
import type { Address } from 'viem';
|
|
5
|
+
import type { LighterKeyStore } from './LighterKeyStore.js';
|
|
6
|
+
import type { LighterSigner } from './LighterSigner.js';
|
|
7
|
+
/**
|
|
8
|
+
* Per-batch dependencies the Lighter `signActions` implementation needs:
|
|
9
|
+
* a WASM signer (`LighterSigner`), the API-key store keyed on L1 address,
|
|
10
|
+
* and a reference to the host SDK client for descriptor/account fetches
|
|
11
|
+
* within the REGISTER_API_KEY hybrid flow.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export interface LighterSignActionsDeps {
|
|
15
|
+
signer: LighterSigner;
|
|
16
|
+
keyStore: LighterKeyStore;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the user's Lighter `accountIndex` for an L1 address. Required
|
|
19
|
+
* by REGISTER_API_KEY so the ChangePubKey blob carries the right
|
|
20
|
+
* account. Implementations typically call Lighter's `/api/v1/account`
|
|
21
|
+
* with `by=l1_address`.
|
|
22
|
+
*/
|
|
23
|
+
resolveAccountIndex(address: Address): Promise<number>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sign a `WASM_BLOB` batch (Lighter). Ensures the user's API keypair is
|
|
27
|
+
* registered first — generating one and running the REGISTER_API_KEY
|
|
28
|
+
* hybrid flow via the L1 signer if not — then feeds each subsequent step
|
|
29
|
+
* through the WASM signer.
|
|
30
|
+
*
|
|
31
|
+
* `ACCOUNT_TYPE` (Lighter `/changeAccountTier`) is a WASM_BLOB envelope
|
|
32
|
+
* authenticated with an auth token rather than a wasm tx signature —
|
|
33
|
+
* created via `LighterSigner.createAuthToken` and parked in `signedTx.txInfo`.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare function signWasmBlobActions(deps: LighterSignActionsDeps, address: Address, steps: WasmBlobActionStep[], ctx: SignActionsContext | undefined): Promise<WasmBlobSignedActionStep[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Sign and broadcast a sequence of `EVM_TX` actions via the user's wallet
|
|
39
|
+
* client. Steps are submitted serially so a later step (e.g. deposit) can
|
|
40
|
+
* rely on an earlier step (e.g. approve) having mined. Each step's
|
|
41
|
+
* `txParams` carries chainId, target, function name, args, and a
|
|
42
|
+
* human-readable abi from the backend.
|
|
43
|
+
* @internal
|
|
44
|
+
*/
|
|
45
|
+
export declare function signEvmTxActions(steps: EvmTxActionStep[], ctx: SignActionsContext | undefined): Promise<EvmTxSignedActionStep[]>;
|
|
46
|
+
/**
|
|
47
|
+
* Top-level dispatch: pick the per-method signer based on the descriptor's
|
|
48
|
+
* `signingMethod` and forward. `EIP712` is rejected — Lighter declares no
|
|
49
|
+
* EIP712 actions (its user-consent step uses an EIP-191 `signMessage` inside
|
|
50
|
+
* the `WASM_BLOB` REGISTER_API_KEY flow).
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
export declare function lighterSignActions(deps: LighterSignActionsDeps, method: SigningMethod, steps: ActionStep[], address: Address, ctx?: SignActionsContext): Promise<SignedActionStep[]>;
|
|
54
|
+
//# sourceMappingURL=signActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signActions.d.ts","sourceRoot":"","sources":["../../../src/signers/signActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAA8B,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAGnC,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,eAAe,CAAA;IACzB;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACvD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EAAE,EAC3B,GAAG,EAAE,kBAAkB,GAAG,SAAS,GAClC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAYrC;AAkKD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,EAAE,EACxB,GAAG,EAAE,kBAAkB,GAAG,SAAS,GAClC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAqClC;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAsB7B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/** @public */
|
|
2
|
+
export interface LoadLighterWasmOptions {
|
|
3
|
+
/** Override URL for the `.wasm` binary (browser: fetch; Node: fs). */
|
|
4
|
+
wasmBinaryUrl?: string | URL;
|
|
5
|
+
/** Override URL for Go's `wasm_exec.js` runtime. */
|
|
6
|
+
wasmExecJsUrl?: string | URL;
|
|
7
|
+
/**
|
|
8
|
+
* Pre-fetched source of Go's `wasm_exec.js`. Preferred over
|
|
9
|
+
* `wasmExecJsUrl` for bundlers (Vite/webpack) that may transform a `.js`
|
|
10
|
+
* URL on serve, breaking the IIFE that installs `globalThis.Go`. Pass via
|
|
11
|
+
* a `?raw` import (Vite) or equivalent so the original source survives
|
|
12
|
+
* intact.
|
|
13
|
+
*/
|
|
14
|
+
wasmExecJsSource?: string;
|
|
15
|
+
}
|
|
16
|
+
/** @public */
|
|
17
|
+
export interface LighterWasmExports {
|
|
18
|
+
GenerateAPIKey: (seed?: string) => {
|
|
19
|
+
publicKey?: string;
|
|
20
|
+
privateKey?: string;
|
|
21
|
+
error?: string;
|
|
22
|
+
};
|
|
23
|
+
CreateClient: (url: string, privateKey: string, chainId: number, apiKeyIndex: number, accountIndex: number) => {
|
|
24
|
+
error?: string;
|
|
25
|
+
};
|
|
26
|
+
CheckClient: (apiKeyIndex: number, accountIndex: number) => {
|
|
27
|
+
error?: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Returns `{authToken}` on success — note the field name is `authToken`,
|
|
31
|
+
* NOT `token`. Reading the wrong field silently fails (Go sets nothing
|
|
32
|
+
* else on the result), which is why early code paths returned undefined
|
|
33
|
+
* tokens with no error.
|
|
34
|
+
*/
|
|
35
|
+
CreateAuthToken: (deadline: number, apiKeyIndex: number, accountIndex: number) => {
|
|
36
|
+
authToken?: string;
|
|
37
|
+
error?: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Signature mirrors lighter-python's `signer.SignChangePubKey(...)` call —
|
|
41
|
+
* 5 positional args including `skipNonce` (use 0 to embed our supplied
|
|
42
|
+
* nonce; 1 to leave it out for server-fill scenarios). Earlier versions
|
|
43
|
+
* here had only 4 args, which silently shifted all arguments by one and
|
|
44
|
+
* produced txInfo with garbage AccountIndex / ApiKeyIndex fields →
|
|
45
|
+
* Lighter rejected with code 20001 "invalid param".
|
|
46
|
+
*/
|
|
47
|
+
SignChangePubKey: (pubKeyHex: string, skipNonce: number, nonce: number, apiKeyIndex: number, accountIndex: number) => SignResult & {
|
|
48
|
+
messageToSign?: string;
|
|
49
|
+
};
|
|
50
|
+
SignCreateOrder: (...args: unknown[]) => SignResult;
|
|
51
|
+
SignCancelOrder: (...args: unknown[]) => SignResult;
|
|
52
|
+
SignCancelAllOrders: (...args: unknown[]) => SignResult;
|
|
53
|
+
SignTransfer: (...args: unknown[]) => SignResult;
|
|
54
|
+
SignWithdraw: (...args: unknown[]) => SignResult;
|
|
55
|
+
SignUpdateLeverage: (...args: unknown[]) => SignResult;
|
|
56
|
+
SignModifyOrder: (...args: unknown[]) => SignResult;
|
|
57
|
+
SignUpdateMargin: (...args: unknown[]) => SignResult;
|
|
58
|
+
}
|
|
59
|
+
/** @internal */
|
|
60
|
+
export interface SignResult {
|
|
61
|
+
txType?: number;
|
|
62
|
+
txInfo?: string;
|
|
63
|
+
txHash?: string;
|
|
64
|
+
error?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Load the Lighter WASM signer. Memoized per-process: subsequent calls return
|
|
68
|
+
* the cached exports. The Go runtime keeps a long-running goroutine to service
|
|
69
|
+
* JS calls — we start it once and never stop it.
|
|
70
|
+
* @public
|
|
71
|
+
*/
|
|
72
|
+
export declare function loadLighterWasm(options?: LoadLighterWasmOptions): Promise<LighterWasmExports>;
|
|
73
|
+
/**
|
|
74
|
+
* Testing helper — drop the cached WASM instance so the next load reinitializes.
|
|
75
|
+
*
|
|
76
|
+
* @public
|
|
77
|
+
*/
|
|
78
|
+
export declare function resetLighterWasmCache(): void;
|
|
79
|
+
//# sourceMappingURL=wasmLoader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasmLoader.d.ts","sourceRoot":"","sources":["../../../src/signers/wasmLoader.ts"],"names":[],"mappings":"AAkDA,cAAc;AACd,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;IAC5B,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;IAC5B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,cAAc;AACd,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK;QACjC,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,YAAY,EAAE,CACZ,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,KACjB;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9E;;;;;OAKG;IACH,eAAe,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,KACjB;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C;;;;;;;OAOG;IACH,gBAAgB,EAAE,CAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,KACjB,UAAU,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACnD,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACnD,mBAAmB,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACvD,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IAChD,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IAChD,kBAAkB,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACtD,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACnD,gBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;CACrD;AAED,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAsFD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAK7B;AA+DD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|