@nktkas/hyperliquid 0.25.7 → 0.25.8
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/CONTRIBUTING.md +26 -19
- package/README.md +57 -5
- package/esm/bin/cli.js +1 -0
- package/esm/bin/cli.js.map +1 -1
- package/esm/src/api/_common_schemas.d.ts +19 -0
- package/esm/src/api/_common_schemas.d.ts.map +1 -1
- package/esm/src/api/_common_schemas.js +15 -0
- package/esm/src/api/_common_schemas.js.map +1 -1
- package/esm/src/api/exchange/_base/_execute.d.ts +6 -7
- package/esm/src/api/exchange/_base/_execute.d.ts.map +1 -1
- package/esm/src/api/exchange/_base/_execute.js +67 -43
- package/esm/src/api/exchange/_base/_execute.js.map +1 -1
- package/esm/src/api/exchange/_base/_types.d.ts +0 -7
- package/esm/src/api/exchange/_base/_types.d.ts.map +1 -1
- package/esm/src/api/exchange/_base/mod.d.ts +0 -2
- package/esm/src/api/exchange/_base/mod.d.ts.map +1 -1
- package/esm/src/api/exchange/_base/mod.js +0 -2
- package/esm/src/api/exchange/_base/mod.js.map +1 -1
- package/esm/src/api/exchange/agentEnableDexAbstraction.d.ts.map +1 -1
- package/esm/src/api/exchange/agentEnableDexAbstraction.js +14 -7
- package/esm/src/api/exchange/agentEnableDexAbstraction.js.map +1 -1
- package/esm/src/api/exchange/approveAgent.d.ts.map +1 -1
- package/esm/src/api/exchange/approveAgent.js +16 -8
- package/esm/src/api/exchange/approveAgent.js.map +1 -1
- package/esm/src/api/exchange/approveBuilderFee.d.ts.map +1 -1
- package/esm/src/api/exchange/approveBuilderFee.js +16 -8
- package/esm/src/api/exchange/approveBuilderFee.js.map +1 -1
- package/esm/src/api/exchange/batchModify.d.ts.map +1 -1
- package/esm/src/api/exchange/batchModify.js +16 -10
- package/esm/src/api/exchange/batchModify.js.map +1 -1
- package/esm/src/api/exchange/cDeposit.d.ts.map +1 -1
- package/esm/src/api/exchange/cDeposit.js +16 -8
- package/esm/src/api/exchange/cDeposit.js.map +1 -1
- package/esm/src/api/exchange/cSignerAction.d.ts.map +1 -1
- package/esm/src/api/exchange/cSignerAction.js +15 -8
- package/esm/src/api/exchange/cSignerAction.js.map +1 -1
- package/esm/src/api/exchange/cValidatorAction.d.ts.map +1 -1
- package/esm/src/api/exchange/cValidatorAction.js +15 -8
- package/esm/src/api/exchange/cValidatorAction.js.map +1 -1
- package/esm/src/api/exchange/cWithdraw.d.ts.map +1 -1
- package/esm/src/api/exchange/cWithdraw.js +16 -8
- package/esm/src/api/exchange/cWithdraw.js.map +1 -1
- package/esm/src/api/exchange/cancel.d.ts.map +1 -1
- package/esm/src/api/exchange/cancel.js +16 -10
- package/esm/src/api/exchange/cancel.js.map +1 -1
- package/esm/src/api/exchange/cancelByCloid.d.ts.map +1 -1
- package/esm/src/api/exchange/cancelByCloid.js +16 -10
- package/esm/src/api/exchange/cancelByCloid.js.map +1 -1
- package/esm/src/api/exchange/claimRewards.d.ts.map +1 -1
- package/esm/src/api/exchange/claimRewards.js +14 -7
- package/esm/src/api/exchange/claimRewards.js.map +1 -1
- package/esm/src/api/exchange/convertToMultiSigUser.d.ts.map +1 -1
- package/esm/src/api/exchange/convertToMultiSigUser.js +16 -8
- package/esm/src/api/exchange/convertToMultiSigUser.js.map +1 -1
- package/esm/src/api/exchange/createSubAccount.d.ts.map +1 -1
- package/esm/src/api/exchange/createSubAccount.js +15 -8
- package/esm/src/api/exchange/createSubAccount.js.map +1 -1
- package/esm/src/api/exchange/createVault.d.ts.map +1 -1
- package/esm/src/api/exchange/createVault.js +15 -8
- package/esm/src/api/exchange/createVault.js.map +1 -1
- package/esm/src/api/exchange/evmUserModify.d.ts +1 -1
- package/esm/src/api/exchange/evmUserModify.d.ts.map +1 -1
- package/esm/src/api/exchange/evmUserModify.js +16 -9
- package/esm/src/api/exchange/evmUserModify.js.map +1 -1
- package/esm/src/api/exchange/linkStakingUser.d.ts +112 -0
- package/esm/src/api/exchange/linkStakingUser.d.ts.map +1 -0
- package/esm/src/api/exchange/linkStakingUser.js +99 -0
- package/esm/src/api/exchange/linkStakingUser.js.map +1 -0
- package/esm/src/api/exchange/modify.d.ts.map +1 -1
- package/esm/src/api/exchange/modify.js +16 -10
- package/esm/src/api/exchange/modify.js.map +1 -1
- package/esm/src/api/exchange/multiSig.d.ts.map +1 -1
- package/esm/src/api/exchange/multiSig.js +17 -16
- package/esm/src/api/exchange/multiSig.js.map +1 -1
- package/esm/src/api/exchange/noop.d.ts.map +1 -1
- package/esm/src/api/exchange/noop.js +14 -7
- package/esm/src/api/exchange/noop.js.map +1 -1
- package/esm/src/api/exchange/order.d.ts.map +1 -1
- package/esm/src/api/exchange/order.js +16 -10
- package/esm/src/api/exchange/order.js.map +1 -1
- package/esm/src/api/exchange/perpDeploy.d.ts.map +1 -1
- package/esm/src/api/exchange/perpDeploy.js +15 -8
- package/esm/src/api/exchange/perpDeploy.js.map +1 -1
- package/esm/src/api/exchange/registerReferrer.d.ts.map +1 -1
- package/esm/src/api/exchange/registerReferrer.js +15 -8
- package/esm/src/api/exchange/registerReferrer.js.map +1 -1
- package/esm/src/api/exchange/reserveRequestWeight.d.ts.map +1 -1
- package/esm/src/api/exchange/reserveRequestWeight.js +15 -8
- package/esm/src/api/exchange/reserveRequestWeight.js.map +1 -1
- package/esm/src/api/exchange/scheduleCancel.js +16 -10
- package/esm/src/api/exchange/scheduleCancel.js.map +1 -1
- package/esm/src/api/exchange/sendAsset.d.ts.map +1 -1
- package/esm/src/api/exchange/sendAsset.js +16 -8
- package/esm/src/api/exchange/sendAsset.js.map +1 -1
- package/esm/src/api/exchange/setDisplayName.d.ts.map +1 -1
- package/esm/src/api/exchange/setDisplayName.js +15 -8
- package/esm/src/api/exchange/setDisplayName.js.map +1 -1
- package/esm/src/api/exchange/setReferrer.d.ts.map +1 -1
- package/esm/src/api/exchange/setReferrer.js +15 -8
- package/esm/src/api/exchange/setReferrer.js.map +1 -1
- package/esm/src/api/exchange/spotDeploy.d.ts.map +1 -1
- package/esm/src/api/exchange/spotDeploy.js +15 -8
- package/esm/src/api/exchange/spotDeploy.js.map +1 -1
- package/esm/src/api/exchange/spotSend.d.ts.map +1 -1
- package/esm/src/api/exchange/spotSend.js +16 -8
- package/esm/src/api/exchange/spotSend.js.map +1 -1
- package/esm/src/api/exchange/spotUser.d.ts.map +1 -1
- package/esm/src/api/exchange/spotUser.js +15 -8
- package/esm/src/api/exchange/spotUser.js.map +1 -1
- package/esm/src/api/exchange/subAccountModify.d.ts.map +1 -1
- package/esm/src/api/exchange/subAccountModify.js +15 -8
- package/esm/src/api/exchange/subAccountModify.js.map +1 -1
- package/esm/src/api/exchange/subAccountSpotTransfer.d.ts.map +1 -1
- package/esm/src/api/exchange/subAccountSpotTransfer.js +15 -8
- package/esm/src/api/exchange/subAccountSpotTransfer.js.map +1 -1
- package/esm/src/api/exchange/subAccountTransfer.d.ts.map +1 -1
- package/esm/src/api/exchange/subAccountTransfer.js +15 -8
- package/esm/src/api/exchange/subAccountTransfer.js.map +1 -1
- package/esm/src/api/exchange/tokenDelegate.d.ts.map +1 -1
- package/esm/src/api/exchange/tokenDelegate.js +16 -8
- package/esm/src/api/exchange/tokenDelegate.js.map +1 -1
- package/esm/src/api/exchange/twapCancel.d.ts.map +1 -1
- package/esm/src/api/exchange/twapCancel.js +16 -10
- package/esm/src/api/exchange/twapCancel.js.map +1 -1
- package/esm/src/api/exchange/twapOrder.d.ts.map +1 -1
- package/esm/src/api/exchange/twapOrder.js +16 -10
- package/esm/src/api/exchange/twapOrder.js.map +1 -1
- package/esm/src/api/exchange/updateIsolatedMargin.d.ts.map +1 -1
- package/esm/src/api/exchange/updateIsolatedMargin.js +16 -10
- package/esm/src/api/exchange/updateIsolatedMargin.js.map +1 -1
- package/esm/src/api/exchange/updateLeverage.d.ts.map +1 -1
- package/esm/src/api/exchange/updateLeverage.js +16 -10
- package/esm/src/api/exchange/updateLeverage.js.map +1 -1
- package/esm/src/api/exchange/usdClassTransfer.d.ts.map +1 -1
- package/esm/src/api/exchange/usdClassTransfer.js +16 -8
- package/esm/src/api/exchange/usdClassTransfer.js.map +1 -1
- package/esm/src/api/exchange/usdSend.d.ts.map +1 -1
- package/esm/src/api/exchange/usdSend.js +16 -8
- package/esm/src/api/exchange/usdSend.js.map +1 -1
- package/esm/src/api/exchange/userDexAbstraction.d.ts.map +1 -1
- package/esm/src/api/exchange/userDexAbstraction.js +16 -8
- package/esm/src/api/exchange/userDexAbstraction.js.map +1 -1
- package/esm/src/api/exchange/vaultDistribute.d.ts.map +1 -1
- package/esm/src/api/exchange/vaultDistribute.js +15 -8
- package/esm/src/api/exchange/vaultDistribute.js.map +1 -1
- package/esm/src/api/exchange/vaultModify.d.ts.map +1 -1
- package/esm/src/api/exchange/vaultModify.js +15 -8
- package/esm/src/api/exchange/vaultModify.js.map +1 -1
- package/esm/src/api/exchange/vaultTransfer.d.ts.map +1 -1
- package/esm/src/api/exchange/vaultTransfer.js +15 -8
- package/esm/src/api/exchange/vaultTransfer.js.map +1 -1
- package/esm/src/api/exchange/withdraw3.d.ts.map +1 -1
- package/esm/src/api/exchange/withdraw3.js +16 -8
- package/esm/src/api/exchange/withdraw3.js.map +1 -1
- package/esm/src/api/exchange/~client.d.ts +31 -3
- package/esm/src/api/exchange/~client.d.ts.map +1 -1
- package/esm/src/api/exchange/~client.js +27 -4
- package/esm/src/api/exchange/~client.js.map +1 -1
- package/esm/src/api/exchange/~mod.d.ts +1 -0
- package/esm/src/api/exchange/~mod.d.ts.map +1 -1
- package/esm/src/api/exchange/~mod.js +1 -0
- package/esm/src/api/exchange/~mod.js.map +1 -1
- package/esm/src/api/info/allPerpMetas.d.ts +5 -0
- package/esm/src/api/info/allPerpMetas.d.ts.map +1 -1
- package/esm/src/api/info/meta.d.ts +5 -0
- package/esm/src/api/info/meta.d.ts.map +1 -1
- package/esm/src/api/info/meta.js +2 -0
- package/esm/src/api/info/meta.js.map +1 -1
- package/esm/src/api/info/metaAndAssetCtxs.d.ts +5 -0
- package/esm/src/api/info/metaAndAssetCtxs.d.ts.map +1 -1
- package/esm/src/api/info/perpDexs.d.ts +4 -0
- package/esm/src/api/info/perpDexs.d.ts.map +1 -1
- package/esm/src/api/info/perpDexs.js +5 -0
- package/esm/src/api/info/perpDexs.js.map +1 -1
- package/esm/src/api/info/spotClearinghouseState.d.ts +0 -5
- package/esm/src/api/info/spotClearinghouseState.d.ts.map +1 -1
- package/esm/src/api/info/spotClearinghouseState.js +2 -14
- package/esm/src/api/info/spotClearinghouseState.js.map +1 -1
- package/esm/src/api/info/userFees.d.ts +27 -2
- package/esm/src/api/info/userFees.d.ts.map +1 -1
- package/esm/src/api/info/userFees.js +29 -1
- package/esm/src/api/info/userFees.js.map +1 -1
- package/esm/src/api/info/webData2.d.ts +6 -0
- package/esm/src/api/info/webData2.d.ts.map +1 -1
- package/esm/src/api/info/~client.d.ts +9 -1
- package/esm/src/api/info/~client.d.ts.map +1 -1
- package/esm/src/api/subscription/spotState.d.ts +91 -0
- package/esm/src/api/subscription/spotState.d.ts.map +1 -0
- package/esm/src/api/subscription/spotState.js +58 -0
- package/esm/src/api/subscription/spotState.js.map +1 -0
- package/esm/src/api/subscription/webData2.d.ts +5 -0
- package/esm/src/api/subscription/webData2.d.ts.map +1 -1
- package/esm/src/api/subscription/~client.d.ts +22 -0
- package/esm/src/api/subscription/~client.d.ts.map +1 -1
- package/esm/src/api/subscription/~client.js +23 -0
- package/esm/src/api/subscription/~client.js.map +1 -1
- package/esm/src/api/subscription/~mod.d.ts +1 -0
- package/esm/src/api/subscription/~mod.d.ts.map +1 -1
- package/esm/src/api/subscription/~mod.js +1 -0
- package/esm/src/api/subscription/~mod.js.map +1 -1
- package/esm/src/signing/_signTypedData.d.ts +1 -1
- package/esm/src/signing/_signTypedData.d.ts.map +1 -1
- package/esm/src/signing/_signTypedData.js +1 -1
- package/esm/src/signing/_signTypedData.js.map +1 -1
- package/esm/src/utils/{_minimalEIP712Signer.d.ts → _eip712.d.ts} +16 -1
- package/esm/src/utils/_eip712.d.ts.map +1 -0
- package/esm/src/utils/{_minimalEIP712Signer.js → _eip712.js} +14 -11
- package/esm/src/utils/_eip712.js.map +1 -0
- package/esm/src/utils/_format.d.ts +3 -4
- package/esm/src/utils/_format.d.ts.map +1 -1
- package/esm/src/utils/_format.js +98 -88
- package/esm/src/utils/_format.js.map +1 -1
- package/esm/src/utils/_recover.d.ts +89 -0
- package/esm/src/utils/_recover.d.ts.map +1 -0
- package/esm/src/utils/_recover.js +119 -0
- package/esm/src/utils/_recover.js.map +1 -0
- package/esm/src/utils/mod.d.ts +1 -0
- package/esm/src/utils/mod.d.ts.map +1 -1
- package/esm/src/utils/mod.js +1 -0
- package/esm/src/utils/mod.js.map +1 -1
- package/package.json +3 -2
- package/script/bin/cli.js +1 -0
- package/script/bin/cli.js.map +1 -1
- package/script/src/api/_common_schemas.d.ts +19 -0
- package/script/src/api/_common_schemas.d.ts.map +1 -1
- package/script/src/api/_common_schemas.js +16 -1
- package/script/src/api/_common_schemas.js.map +1 -1
- package/script/src/api/exchange/_base/_execute.d.ts +6 -7
- package/script/src/api/exchange/_base/_execute.d.ts.map +1 -1
- package/script/src/api/exchange/_base/_execute.js +67 -43
- package/script/src/api/exchange/_base/_execute.js.map +1 -1
- package/script/src/api/exchange/_base/_types.d.ts +0 -7
- package/script/src/api/exchange/_base/_types.d.ts.map +1 -1
- package/script/src/api/exchange/_base/mod.d.ts +0 -2
- package/script/src/api/exchange/_base/mod.d.ts.map +1 -1
- package/script/src/api/exchange/_base/mod.js +0 -2
- package/script/src/api/exchange/_base/mod.js.map +1 -1
- package/script/src/api/exchange/agentEnableDexAbstraction.d.ts.map +1 -1
- package/script/src/api/exchange/agentEnableDexAbstraction.js +14 -7
- package/script/src/api/exchange/agentEnableDexAbstraction.js.map +1 -1
- package/script/src/api/exchange/approveAgent.d.ts.map +1 -1
- package/script/src/api/exchange/approveAgent.js +15 -7
- package/script/src/api/exchange/approveAgent.js.map +1 -1
- package/script/src/api/exchange/approveBuilderFee.d.ts.map +1 -1
- package/script/src/api/exchange/approveBuilderFee.js +15 -7
- package/script/src/api/exchange/approveBuilderFee.js.map +1 -1
- package/script/src/api/exchange/batchModify.d.ts.map +1 -1
- package/script/src/api/exchange/batchModify.js +16 -10
- package/script/src/api/exchange/batchModify.js.map +1 -1
- package/script/src/api/exchange/cDeposit.d.ts.map +1 -1
- package/script/src/api/exchange/cDeposit.js +15 -7
- package/script/src/api/exchange/cDeposit.js.map +1 -1
- package/script/src/api/exchange/cSignerAction.d.ts.map +1 -1
- package/script/src/api/exchange/cSignerAction.js +15 -8
- package/script/src/api/exchange/cSignerAction.js.map +1 -1
- package/script/src/api/exchange/cValidatorAction.d.ts.map +1 -1
- package/script/src/api/exchange/cValidatorAction.js +15 -8
- package/script/src/api/exchange/cValidatorAction.js.map +1 -1
- package/script/src/api/exchange/cWithdraw.d.ts.map +1 -1
- package/script/src/api/exchange/cWithdraw.js +15 -7
- package/script/src/api/exchange/cWithdraw.js.map +1 -1
- package/script/src/api/exchange/cancel.d.ts.map +1 -1
- package/script/src/api/exchange/cancel.js +16 -10
- package/script/src/api/exchange/cancel.js.map +1 -1
- package/script/src/api/exchange/cancelByCloid.d.ts.map +1 -1
- package/script/src/api/exchange/cancelByCloid.js +16 -10
- package/script/src/api/exchange/cancelByCloid.js.map +1 -1
- package/script/src/api/exchange/claimRewards.d.ts.map +1 -1
- package/script/src/api/exchange/claimRewards.js +14 -7
- package/script/src/api/exchange/claimRewards.js.map +1 -1
- package/script/src/api/exchange/convertToMultiSigUser.d.ts.map +1 -1
- package/script/src/api/exchange/convertToMultiSigUser.js +15 -7
- package/script/src/api/exchange/convertToMultiSigUser.js.map +1 -1
- package/script/src/api/exchange/createSubAccount.d.ts.map +1 -1
- package/script/src/api/exchange/createSubAccount.js +15 -8
- package/script/src/api/exchange/createSubAccount.js.map +1 -1
- package/script/src/api/exchange/createVault.d.ts.map +1 -1
- package/script/src/api/exchange/createVault.js +15 -8
- package/script/src/api/exchange/createVault.js.map +1 -1
- package/script/src/api/exchange/evmUserModify.d.ts +1 -1
- package/script/src/api/exchange/evmUserModify.d.ts.map +1 -1
- package/script/src/api/exchange/evmUserModify.js +16 -9
- package/script/src/api/exchange/evmUserModify.js.map +1 -1
- package/script/src/api/exchange/linkStakingUser.d.ts +112 -0
- package/script/src/api/exchange/linkStakingUser.d.ts.map +1 -0
- package/script/src/api/exchange/linkStakingUser.js +136 -0
- package/script/src/api/exchange/linkStakingUser.js.map +1 -0
- package/script/src/api/exchange/modify.d.ts.map +1 -1
- package/script/src/api/exchange/modify.js +16 -10
- package/script/src/api/exchange/modify.js.map +1 -1
- package/script/src/api/exchange/multiSig.d.ts.map +1 -1
- package/script/src/api/exchange/multiSig.js +17 -16
- package/script/src/api/exchange/multiSig.js.map +1 -1
- package/script/src/api/exchange/noop.d.ts.map +1 -1
- package/script/src/api/exchange/noop.js +14 -7
- package/script/src/api/exchange/noop.js.map +1 -1
- package/script/src/api/exchange/order.d.ts.map +1 -1
- package/script/src/api/exchange/order.js +16 -10
- package/script/src/api/exchange/order.js.map +1 -1
- package/script/src/api/exchange/perpDeploy.d.ts.map +1 -1
- package/script/src/api/exchange/perpDeploy.js +15 -8
- package/script/src/api/exchange/perpDeploy.js.map +1 -1
- package/script/src/api/exchange/registerReferrer.d.ts.map +1 -1
- package/script/src/api/exchange/registerReferrer.js +15 -8
- package/script/src/api/exchange/registerReferrer.js.map +1 -1
- package/script/src/api/exchange/reserveRequestWeight.d.ts.map +1 -1
- package/script/src/api/exchange/reserveRequestWeight.js +15 -8
- package/script/src/api/exchange/reserveRequestWeight.js.map +1 -1
- package/script/src/api/exchange/scheduleCancel.js +16 -10
- package/script/src/api/exchange/scheduleCancel.js.map +1 -1
- package/script/src/api/exchange/sendAsset.d.ts.map +1 -1
- package/script/src/api/exchange/sendAsset.js +15 -7
- package/script/src/api/exchange/sendAsset.js.map +1 -1
- package/script/src/api/exchange/setDisplayName.d.ts.map +1 -1
- package/script/src/api/exchange/setDisplayName.js +15 -8
- package/script/src/api/exchange/setDisplayName.js.map +1 -1
- package/script/src/api/exchange/setReferrer.d.ts.map +1 -1
- package/script/src/api/exchange/setReferrer.js +15 -8
- package/script/src/api/exchange/setReferrer.js.map +1 -1
- package/script/src/api/exchange/spotDeploy.d.ts.map +1 -1
- package/script/src/api/exchange/spotDeploy.js +15 -8
- package/script/src/api/exchange/spotDeploy.js.map +1 -1
- package/script/src/api/exchange/spotSend.d.ts.map +1 -1
- package/script/src/api/exchange/spotSend.js +15 -7
- package/script/src/api/exchange/spotSend.js.map +1 -1
- package/script/src/api/exchange/spotUser.d.ts.map +1 -1
- package/script/src/api/exchange/spotUser.js +15 -8
- package/script/src/api/exchange/spotUser.js.map +1 -1
- package/script/src/api/exchange/subAccountModify.d.ts.map +1 -1
- package/script/src/api/exchange/subAccountModify.js +15 -8
- package/script/src/api/exchange/subAccountModify.js.map +1 -1
- package/script/src/api/exchange/subAccountSpotTransfer.d.ts.map +1 -1
- package/script/src/api/exchange/subAccountSpotTransfer.js +15 -8
- package/script/src/api/exchange/subAccountSpotTransfer.js.map +1 -1
- package/script/src/api/exchange/subAccountTransfer.d.ts.map +1 -1
- package/script/src/api/exchange/subAccountTransfer.js +15 -8
- package/script/src/api/exchange/subAccountTransfer.js.map +1 -1
- package/script/src/api/exchange/tokenDelegate.d.ts.map +1 -1
- package/script/src/api/exchange/tokenDelegate.js +15 -7
- package/script/src/api/exchange/tokenDelegate.js.map +1 -1
- package/script/src/api/exchange/twapCancel.d.ts.map +1 -1
- package/script/src/api/exchange/twapCancel.js +16 -10
- package/script/src/api/exchange/twapCancel.js.map +1 -1
- package/script/src/api/exchange/twapOrder.d.ts.map +1 -1
- package/script/src/api/exchange/twapOrder.js +16 -10
- package/script/src/api/exchange/twapOrder.js.map +1 -1
- package/script/src/api/exchange/updateIsolatedMargin.d.ts.map +1 -1
- package/script/src/api/exchange/updateIsolatedMargin.js +16 -10
- package/script/src/api/exchange/updateIsolatedMargin.js.map +1 -1
- package/script/src/api/exchange/updateLeverage.d.ts.map +1 -1
- package/script/src/api/exchange/updateLeverage.js +16 -10
- package/script/src/api/exchange/updateLeverage.js.map +1 -1
- package/script/src/api/exchange/usdClassTransfer.d.ts.map +1 -1
- package/script/src/api/exchange/usdClassTransfer.js +15 -7
- package/script/src/api/exchange/usdClassTransfer.js.map +1 -1
- package/script/src/api/exchange/usdSend.d.ts.map +1 -1
- package/script/src/api/exchange/usdSend.js +15 -7
- package/script/src/api/exchange/usdSend.js.map +1 -1
- package/script/src/api/exchange/userDexAbstraction.d.ts.map +1 -1
- package/script/src/api/exchange/userDexAbstraction.js +15 -7
- package/script/src/api/exchange/userDexAbstraction.js.map +1 -1
- package/script/src/api/exchange/vaultDistribute.d.ts.map +1 -1
- package/script/src/api/exchange/vaultDistribute.js +15 -8
- package/script/src/api/exchange/vaultDistribute.js.map +1 -1
- package/script/src/api/exchange/vaultModify.d.ts.map +1 -1
- package/script/src/api/exchange/vaultModify.js +15 -8
- package/script/src/api/exchange/vaultModify.js.map +1 -1
- package/script/src/api/exchange/vaultTransfer.d.ts.map +1 -1
- package/script/src/api/exchange/vaultTransfer.js +15 -8
- package/script/src/api/exchange/vaultTransfer.js.map +1 -1
- package/script/src/api/exchange/withdraw3.d.ts.map +1 -1
- package/script/src/api/exchange/withdraw3.js +15 -7
- package/script/src/api/exchange/withdraw3.js.map +1 -1
- package/script/src/api/exchange/~client.d.ts +31 -3
- package/script/src/api/exchange/~client.d.ts.map +1 -1
- package/script/src/api/exchange/~client.js +29 -6
- package/script/src/api/exchange/~client.js.map +1 -1
- package/script/src/api/exchange/~mod.d.ts +1 -0
- package/script/src/api/exchange/~mod.d.ts.map +1 -1
- package/script/src/api/exchange/~mod.js +1 -0
- package/script/src/api/exchange/~mod.js.map +1 -1
- package/script/src/api/info/allPerpMetas.d.ts +5 -0
- package/script/src/api/info/allPerpMetas.d.ts.map +1 -1
- package/script/src/api/info/meta.d.ts +5 -0
- package/script/src/api/info/meta.d.ts.map +1 -1
- package/script/src/api/info/meta.js +2 -0
- package/script/src/api/info/meta.js.map +1 -1
- package/script/src/api/info/metaAndAssetCtxs.d.ts +5 -0
- package/script/src/api/info/metaAndAssetCtxs.d.ts.map +1 -1
- package/script/src/api/info/perpDexs.d.ts +4 -0
- package/script/src/api/info/perpDexs.d.ts.map +1 -1
- package/script/src/api/info/perpDexs.js +5 -0
- package/script/src/api/info/perpDexs.js.map +1 -1
- package/script/src/api/info/spotClearinghouseState.d.ts +0 -5
- package/script/src/api/info/spotClearinghouseState.d.ts.map +1 -1
- package/script/src/api/info/spotClearinghouseState.js +2 -14
- package/script/src/api/info/spotClearinghouseState.js.map +1 -1
- package/script/src/api/info/userFees.d.ts +27 -2
- package/script/src/api/info/userFees.d.ts.map +1 -1
- package/script/src/api/info/userFees.js +29 -1
- package/script/src/api/info/userFees.js.map +1 -1
- package/script/src/api/info/webData2.d.ts +6 -0
- package/script/src/api/info/webData2.d.ts.map +1 -1
- package/script/src/api/info/~client.d.ts +9 -1
- package/script/src/api/info/~client.d.ts.map +1 -1
- package/script/src/api/subscription/spotState.d.ts +91 -0
- package/script/src/api/subscription/spotState.d.ts.map +1 -0
- package/script/src/api/subscription/spotState.js +95 -0
- package/script/src/api/subscription/spotState.js.map +1 -0
- package/script/src/api/subscription/webData2.d.ts +5 -0
- package/script/src/api/subscription/webData2.d.ts.map +1 -1
- package/script/src/api/subscription/~client.d.ts +22 -0
- package/script/src/api/subscription/~client.d.ts.map +1 -1
- package/script/src/api/subscription/~client.js +23 -0
- package/script/src/api/subscription/~client.js.map +1 -1
- package/script/src/api/subscription/~mod.d.ts +1 -0
- package/script/src/api/subscription/~mod.d.ts.map +1 -1
- package/script/src/api/subscription/~mod.js +1 -0
- package/script/src/api/subscription/~mod.js.map +1 -1
- package/script/src/signing/_signTypedData.d.ts +1 -1
- package/script/src/signing/_signTypedData.d.ts.map +1 -1
- package/script/src/signing/_signTypedData.js +1 -1
- package/script/src/signing/_signTypedData.js.map +1 -1
- package/script/src/utils/{_minimalEIP712Signer.d.ts → _eip712.d.ts} +16 -1
- package/script/src/utils/_eip712.d.ts.map +1 -0
- package/script/src/utils/{_minimalEIP712Signer.js → _eip712.js} +14 -9
- package/script/src/utils/_eip712.js.map +1 -0
- package/script/src/utils/_format.d.ts +3 -4
- package/script/src/utils/_format.d.ts.map +1 -1
- package/script/src/utils/_format.js +98 -88
- package/script/src/utils/_format.js.map +1 -1
- package/script/src/utils/_recover.d.ts +89 -0
- package/script/src/utils/_recover.d.ts.map +1 -0
- package/script/src/utils/_recover.js +156 -0
- package/script/src/utils/_recover.js.map +1 -0
- package/script/src/utils/mod.d.ts +1 -0
- package/script/src/utils/mod.d.ts.map +1 -1
- package/script/src/utils/mod.js +1 -0
- package/script/src/utils/mod.js.map +1 -1
- package/src/bin/cli.ts +1 -0
- package/src/src/api/_common_schemas.ts +34 -0
- package/src/src/api/exchange/_base/_execute.ts +73 -49
- package/src/src/api/exchange/_base/_types.ts +0 -7
- package/src/src/api/exchange/_base/mod.ts +0 -2
- package/src/src/api/exchange/agentEnableDexAbstraction.ts +14 -9
- package/src/src/api/exchange/approveAgent.ts +15 -12
- package/src/src/api/exchange/approveBuilderFee.ts +15 -12
- package/src/src/api/exchange/batchModify.ts +16 -13
- package/src/src/api/exchange/cDeposit.ts +15 -12
- package/src/src/api/exchange/cSignerAction.ts +15 -10
- package/src/src/api/exchange/cValidatorAction.ts +15 -10
- package/src/src/api/exchange/cWithdraw.ts +15 -12
- package/src/src/api/exchange/cancel.ts +16 -13
- package/src/src/api/exchange/cancelByCloid.ts +16 -13
- package/src/src/api/exchange/claimRewards.ts +14 -9
- package/src/src/api/exchange/convertToMultiSigUser.ts +15 -12
- package/src/src/api/exchange/createSubAccount.ts +15 -10
- package/src/src/api/exchange/createVault.ts +15 -10
- package/src/src/api/exchange/evmUserModify.ts +16 -11
- package/src/src/api/exchange/linkStakingUser.ts +157 -0
- package/src/src/api/exchange/modify.ts +16 -13
- package/src/src/api/exchange/multiSig.ts +17 -23
- package/src/src/api/exchange/noop.ts +14 -9
- package/src/src/api/exchange/order.ts +16 -13
- package/src/src/api/exchange/perpDeploy.ts +15 -10
- package/src/src/api/exchange/registerReferrer.ts +15 -10
- package/src/src/api/exchange/reserveRequestWeight.ts +15 -10
- package/src/src/api/exchange/scheduleCancel.ts +16 -13
- package/src/src/api/exchange/sendAsset.ts +15 -12
- package/src/src/api/exchange/setDisplayName.ts +15 -10
- package/src/src/api/exchange/setReferrer.ts +15 -10
- package/src/src/api/exchange/spotDeploy.ts +15 -10
- package/src/src/api/exchange/spotSend.ts +15 -12
- package/src/src/api/exchange/spotUser.ts +15 -10
- package/src/src/api/exchange/subAccountModify.ts +15 -10
- package/src/src/api/exchange/subAccountSpotTransfer.ts +15 -10
- package/src/src/api/exchange/subAccountTransfer.ts +15 -10
- package/src/src/api/exchange/tokenDelegate.ts +15 -12
- package/src/src/api/exchange/twapCancel.ts +16 -13
- package/src/src/api/exchange/twapOrder.ts +16 -13
- package/src/src/api/exchange/updateIsolatedMargin.ts +16 -13
- package/src/src/api/exchange/updateLeverage.ts +16 -13
- package/src/src/api/exchange/usdClassTransfer.ts +15 -12
- package/src/src/api/exchange/usdSend.ts +15 -12
- package/src/src/api/exchange/userDexAbstraction.ts +15 -12
- package/src/src/api/exchange/vaultDistribute.ts +15 -10
- package/src/src/api/exchange/vaultModify.ts +15 -10
- package/src/src/api/exchange/vaultTransfer.ts +15 -10
- package/src/src/api/exchange/withdraw3.ts +15 -12
- package/src/src/api/exchange/~client.ts +30 -5
- package/src/src/api/exchange/~mod.ts +1 -0
- package/src/src/api/info/meta.ts +7 -0
- package/src/src/api/info/perpDexs.ts +10 -0
- package/src/src/api/info/spotClearinghouseState.ts +3 -33
- package/src/src/api/info/userFees.ts +46 -1
- package/src/src/api/subscription/spotState.ts +96 -0
- package/src/src/api/subscription/~client.ts +25 -0
- package/src/src/api/subscription/~mod.ts +1 -0
- package/src/src/signing/_signTypedData.ts +1 -1
- package/src/src/utils/{_minimalEIP712Signer.ts → _eip712.ts} +22 -29
- package/src/src/utils/_format.ts +99 -98
- package/src/src/utils/_recover.ts +178 -0
- package/src/src/utils/mod.ts +1 -0
- package/esm/src/api/exchange/_base/_sequential.d.ts +0 -30
- package/esm/src/api/exchange/_base/_sequential.d.ts.map +0 -1
- package/esm/src/api/exchange/_base/_sequential.js +0 -69
- package/esm/src/api/exchange/_base/_sequential.js.map +0 -1
- package/esm/src/utils/_minimalEIP712Signer.d.ts.map +0 -1
- package/esm/src/utils/_minimalEIP712Signer.js.map +0 -1
- package/script/src/api/exchange/_base/_sequential.d.ts +0 -30
- package/script/src/api/exchange/_base/_sequential.d.ts.map +0 -1
- package/script/src/api/exchange/_base/_sequential.js +0 -72
- package/script/src/api/exchange/_base/_sequential.js.map +0 -1
- package/script/src/utils/_minimalEIP712Signer.d.ts.map +0 -1
- package/script/src/utils/_minimalEIP712Signer.js.map +0 -1
- package/src/src/api/exchange/_base/_sequential.ts +0 -82
|
@@ -6,7 +6,6 @@ import {
|
|
|
6
6
|
type ExtractRequestAction,
|
|
7
7
|
type ExtractRequestOptions,
|
|
8
8
|
getSignatureChainId,
|
|
9
|
-
globalNonceManager,
|
|
10
9
|
type MultiSignRequestConfig,
|
|
11
10
|
Signature,
|
|
12
11
|
} from "./_base/mod.js";
|
|
@@ -123,16 +122,20 @@ export async function withdraw3(
|
|
|
123
122
|
params: DeepImmutable<Withdraw3Parameters>,
|
|
124
123
|
opts?: Withdraw3Options,
|
|
125
124
|
): Promise<SuccessResponse> {
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
125
|
+
const request = parser(Withdraw3Request)({
|
|
126
|
+
action: {
|
|
127
|
+
type: "withdraw3",
|
|
128
|
+
hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
|
|
129
|
+
signatureChainId: await getSignatureChainId(config),
|
|
130
|
+
time: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
|
|
131
|
+
...params,
|
|
132
|
+
},
|
|
133
|
+
nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
|
|
134
|
+
signature: { // Placeholder; actual signature generated in `executeUserSignedAction`
|
|
135
|
+
r: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
136
|
+
s: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
137
|
+
v: 27,
|
|
138
|
+
},
|
|
132
139
|
});
|
|
133
|
-
return await executeUserSignedAction(
|
|
134
|
-
config,
|
|
135
|
-
{ action, types: Withdraw3Types },
|
|
136
|
-
opts?.signal,
|
|
137
|
-
);
|
|
140
|
+
return await executeUserSignedAction(config, request, Withdraw3Types, opts?.signal);
|
|
138
141
|
}
|
|
@@ -2,7 +2,7 @@ import type { MaybePromise, OmitFirst, OverloadedParameters } from "../_base.js"
|
|
|
2
2
|
import type { ExchangeRequestConfig, MultiSignRequestConfig } from "./_base/mod.js";
|
|
3
3
|
import type { IRequestTransport } from "../../transport/base.js";
|
|
4
4
|
import type { AbstractWallet } from "../../signing/mod.js";
|
|
5
|
-
import { PrivateKeyEIP712Signer } from "../../utils/
|
|
5
|
+
import { PrivateKeyEIP712Signer } from "../../utils/_eip712.js";
|
|
6
6
|
|
|
7
7
|
import { agentEnableDexAbstraction } from "./agentEnableDexAbstraction.js";
|
|
8
8
|
import { approveAgent } from "./approveAgent.js";
|
|
@@ -19,6 +19,7 @@ import { cSignerAction } from "./cSignerAction.js";
|
|
|
19
19
|
import { cValidatorAction } from "./cValidatorAction.js";
|
|
20
20
|
import { cWithdraw } from "./cWithdraw.js";
|
|
21
21
|
import { evmUserModify } from "./evmUserModify.js";
|
|
22
|
+
import { linkStakingUser } from "./linkStakingUser.js";
|
|
22
23
|
import { modify } from "./modify.js";
|
|
23
24
|
import { multiSig } from "./multiSig.js";
|
|
24
25
|
import { order } from "./order.js";
|
|
@@ -64,6 +65,7 @@ export type { CSignerActionOptions, CSignerActionParameters } from "./cSignerAct
|
|
|
64
65
|
export type { CValidatorActionOptions, CValidatorActionParameters } from "./cValidatorAction.js";
|
|
65
66
|
export type { CWithdrawOptions, CWithdrawParameters } from "./cWithdraw.js";
|
|
66
67
|
export type { EvmUserModifyOptions, EvmUserModifyParameters } from "./evmUserModify.js";
|
|
68
|
+
export type { LinkStakingUserOptions, LinkStakingUserParameters } from "./linkStakingUser.js";
|
|
67
69
|
export type { ModifyOptions, ModifyParameters } from "./modify.js";
|
|
68
70
|
export type { MultiSigOptions, MultiSigParameters } from "./multiSig.js";
|
|
69
71
|
export type { OrderOptions, OrderParameters } from "./order.js";
|
|
@@ -118,7 +120,6 @@ export class ExchangeClient<
|
|
|
118
120
|
signatureChainId?: string | (() => MaybePromise<string>);
|
|
119
121
|
defaultVaultAddress?: string;
|
|
120
122
|
defaultExpiresAfter?: number | (() => MaybePromise<number>);
|
|
121
|
-
sequentialRequests?: boolean;
|
|
122
123
|
|
|
123
124
|
/**
|
|
124
125
|
* Initialises a new instance.
|
|
@@ -181,7 +182,6 @@ export class ExchangeClient<
|
|
|
181
182
|
this.defaultVaultAddress = args.defaultVaultAddress;
|
|
182
183
|
this.defaultExpiresAfter = args.defaultExpiresAfter;
|
|
183
184
|
this.signatureChainId = args.signatureChainId;
|
|
184
|
-
this.sequentialRequests = args.sequentialRequests;
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
/**
|
|
@@ -609,7 +609,7 @@ export class ExchangeClient<
|
|
|
609
609
|
* Configure block type for EVM transactions.
|
|
610
610
|
* @param params - Parameters specific to the API request.
|
|
611
611
|
* @param opts - Request execution options.
|
|
612
|
-
* @returns
|
|
612
|
+
* @returns Successful response without specific data.
|
|
613
613
|
*
|
|
614
614
|
* @throws {ApiRequestError} When the API returns an unsuccessful response.
|
|
615
615
|
* @throws {TransportError} When the transport layer throws an error.
|
|
@@ -630,6 +630,31 @@ export class ExchangeClient<
|
|
|
630
630
|
return evmUserModify(this, ...args);
|
|
631
631
|
}
|
|
632
632
|
|
|
633
|
+
/**
|
|
634
|
+
* Link staking and trading accounts for fee discount attribution.
|
|
635
|
+
* @param params - Parameters specific to the API request.
|
|
636
|
+
* @param opts - Request execution options.
|
|
637
|
+
* @returns Successful response without specific data.
|
|
638
|
+
*
|
|
639
|
+
* @throws {ApiRequestError} When the API returns an unsuccessful response.
|
|
640
|
+
* @throws {TransportError} When the transport layer throws an error.
|
|
641
|
+
*
|
|
642
|
+
* @see https://hyperliquid.gitbook.io/hyperliquid-docs/trading/fees#staking-linking
|
|
643
|
+
* @example
|
|
644
|
+
* ```ts
|
|
645
|
+
* import * as hl from "@nktkas/hyperliquid";
|
|
646
|
+
*
|
|
647
|
+
* const pk = "0x..."; // viem, ethers or private key
|
|
648
|
+
* const transport = new hl.HttpTransport(); // or `WebSocketTransport`
|
|
649
|
+
*
|
|
650
|
+
* const client = new hl.ExchangeClient({ transport, wallet: pk });
|
|
651
|
+
* await client.linkStakingUser({ user: "0x...", isFinalize: false });
|
|
652
|
+
* ```
|
|
653
|
+
*/
|
|
654
|
+
linkStakingUser(...args: OmitFirst<OverloadedParameters<typeof linkStakingUser>>) {
|
|
655
|
+
return linkStakingUser(this, ...args);
|
|
656
|
+
}
|
|
657
|
+
|
|
633
658
|
/**
|
|
634
659
|
* Modify an order.
|
|
635
660
|
* @param params - Parameters specific to the API request.
|
|
@@ -1492,7 +1517,7 @@ export class MultiSignClient<
|
|
|
1492
1517
|
/**
|
|
1493
1518
|
* @note Is the first wallet from {@linkcode signers}. Changing the property also changes the first element in the {@linkcode signers} array.
|
|
1494
1519
|
*/
|
|
1495
|
-
declare
|
|
1520
|
+
declare wallet: S[0];
|
|
1496
1521
|
|
|
1497
1522
|
/**
|
|
1498
1523
|
* Initialises a new multi-signature client instance.
|
|
@@ -55,6 +55,7 @@ export * from "./cSignerAction.js";
|
|
|
55
55
|
export * from "./cValidatorAction.js";
|
|
56
56
|
export * from "./cWithdraw.js";
|
|
57
57
|
export * from "./evmUserModify.js";
|
|
58
|
+
export * from "./linkStakingUser.js";
|
|
58
59
|
export * from "./modify.js";
|
|
59
60
|
export * from "./multiSig.js";
|
|
60
61
|
export * from "./order.js";
|
package/src/src/api/info/meta.ts
CHANGED
|
@@ -73,6 +73,13 @@ export const MetaResponse = /* @__PURE__ */ (() => {
|
|
|
73
73
|
v.optional(v.literal(true)),
|
|
74
74
|
v.description("Indicates if the universe is delisted."),
|
|
75
75
|
),
|
|
76
|
+
/** Trading margin mode constraint. */
|
|
77
|
+
marginMode: v.pipe(
|
|
78
|
+
v.optional(
|
|
79
|
+
v.union([v.literal("strictIsolated"), v.literal("noCross")]),
|
|
80
|
+
),
|
|
81
|
+
v.description("Trading margin mode constraint."),
|
|
82
|
+
),
|
|
76
83
|
}),
|
|
77
84
|
v.description("Trading universe parameters for perpetual asset."),
|
|
78
85
|
),
|
|
@@ -63,6 +63,16 @@ export const PerpDexsResponse = /* @__PURE__ */ (() => {
|
|
|
63
63
|
v.array(v.tuple([v.string(), v.string()])),
|
|
64
64
|
v.description("Mapping of asset names to their streaming open interest caps."),
|
|
65
65
|
),
|
|
66
|
+
/** List of delegated function names and their authorized executor addresses. */
|
|
67
|
+
subDeployers: v.pipe(
|
|
68
|
+
v.array(
|
|
69
|
+
v.tuple([
|
|
70
|
+
v.string(),
|
|
71
|
+
v.array(Address),
|
|
72
|
+
]),
|
|
73
|
+
),
|
|
74
|
+
v.description("List of delegated function names and their authorized executor addresses."),
|
|
75
|
+
),
|
|
66
76
|
}),
|
|
67
77
|
v.description(" Perpetual dex metadata."),
|
|
68
78
|
),
|
|
@@ -2,6 +2,8 @@ import * as v from "valibot";
|
|
|
2
2
|
import { Address, type DeepImmutable, parser, UnsignedDecimal, UnsignedInteger } from "../_base.js";
|
|
3
3
|
import type { InfoRequestConfig } from "./_types.js";
|
|
4
4
|
|
|
5
|
+
import { BalanceSchema } from "../_common_schemas.js";
|
|
6
|
+
|
|
5
7
|
// -------------------- Schemas --------------------
|
|
6
8
|
|
|
7
9
|
/**
|
|
@@ -41,39 +43,7 @@ export const SpotClearinghouseStateResponse = /* @__PURE__ */ (() => {
|
|
|
41
43
|
v.object({
|
|
42
44
|
/** Balance for each token. */
|
|
43
45
|
balances: v.pipe(
|
|
44
|
-
v.array(
|
|
45
|
-
/** Balance for a specific spot token. */
|
|
46
|
-
v.pipe(
|
|
47
|
-
v.object({
|
|
48
|
-
/** Asset symbol. */
|
|
49
|
-
coin: v.pipe(
|
|
50
|
-
v.string(),
|
|
51
|
-
v.description("Asset symbol."),
|
|
52
|
-
),
|
|
53
|
-
/** Unique identifier for the token. */
|
|
54
|
-
token: v.pipe(
|
|
55
|
-
UnsignedInteger,
|
|
56
|
-
v.description("Unique identifier for the token."),
|
|
57
|
-
),
|
|
58
|
-
/** Total balance. */
|
|
59
|
-
total: v.pipe(
|
|
60
|
-
UnsignedDecimal,
|
|
61
|
-
v.description("Total balance."),
|
|
62
|
-
),
|
|
63
|
-
/** Amount on hold. */
|
|
64
|
-
hold: v.pipe(
|
|
65
|
-
UnsignedDecimal,
|
|
66
|
-
v.description("Amount on hold."),
|
|
67
|
-
),
|
|
68
|
-
/** Entry notional value. */
|
|
69
|
-
entryNtl: v.pipe(
|
|
70
|
-
UnsignedDecimal,
|
|
71
|
-
v.description("Entry notional value."),
|
|
72
|
-
),
|
|
73
|
-
}),
|
|
74
|
-
v.description("Balance for a specific spot token."),
|
|
75
|
-
),
|
|
76
|
-
),
|
|
46
|
+
v.array(BalanceSchema),
|
|
77
47
|
v.description("Balance for each token."),
|
|
78
48
|
),
|
|
79
49
|
/** Escrowed balances. */
|
|
@@ -225,7 +225,52 @@ export const UserFeesResponse = /* @__PURE__ */ (() => {
|
|
|
225
225
|
v.nullable(v.unknown()),
|
|
226
226
|
v.description("Timestamp when next trial becomes available."),
|
|
227
227
|
),
|
|
228
|
-
|
|
228
|
+
/**
|
|
229
|
+
* Permanent link between staking and trading accounts.
|
|
230
|
+
* Staking user gains full control of trading account funds.
|
|
231
|
+
* Staking user forfeits own fee discounts.
|
|
232
|
+
*/
|
|
233
|
+
stakingLink: v.pipe(
|
|
234
|
+
v.nullable(
|
|
235
|
+
v.object({
|
|
236
|
+
/**
|
|
237
|
+
* Linked account address:
|
|
238
|
+
* - When queried by staking account: contains trading account address.
|
|
239
|
+
* - When queried by trading account: contains staking account address.
|
|
240
|
+
*/
|
|
241
|
+
stakingUser: v.pipe(
|
|
242
|
+
Address,
|
|
243
|
+
v.description(
|
|
244
|
+
"Linked account address:" +
|
|
245
|
+
"\n- When queried by staking account: contains trading account address." +
|
|
246
|
+
"\n- When queried by trading account: contains staking account address.",
|
|
247
|
+
),
|
|
248
|
+
),
|
|
249
|
+
/**
|
|
250
|
+
* Link status:
|
|
251
|
+
* - `requested` = link initiated by trading user, awaiting staking user confirmation.
|
|
252
|
+
* - `stakingUser` = response queried by staking account.
|
|
253
|
+
* - `tradingUser` = response queried by trading account.
|
|
254
|
+
*/
|
|
255
|
+
type: v.pipe(
|
|
256
|
+
v.union([
|
|
257
|
+
v.literal("requested"),
|
|
258
|
+
v.literal("stakingUser"),
|
|
259
|
+
v.literal("tradingUser"),
|
|
260
|
+
]),
|
|
261
|
+
v.description(
|
|
262
|
+
"Link status:" +
|
|
263
|
+
"\n- `requested` = link initiated by trading user, awaiting staking user confirmation" +
|
|
264
|
+
"\n- `stakingUser` = response queried by staking account" +
|
|
265
|
+
"\n- `tradingUser` = response queried by trading account",
|
|
266
|
+
),
|
|
267
|
+
),
|
|
268
|
+
}),
|
|
269
|
+
),
|
|
270
|
+
v.description(
|
|
271
|
+
"Permanent link between staking and trading accounts. Staking user gains full control of trading account funds. Staking user forfeits own fee discounts.",
|
|
272
|
+
),
|
|
273
|
+
),
|
|
229
274
|
/** Active staking discount details. */
|
|
230
275
|
activeStakingDiscount: v.pipe(
|
|
231
276
|
v.object({
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import { Address, type DeepImmutable, parser } from "../_base.js";
|
|
3
|
+
import type { SubscriptionRequestConfig } from "./_types.js";
|
|
4
|
+
import type { Subscription } from "../../transport/base.js";
|
|
5
|
+
|
|
6
|
+
import { BalanceSchema } from "../_common_schemas.js";
|
|
7
|
+
|
|
8
|
+
// -------------------- Schemas --------------------
|
|
9
|
+
|
|
10
|
+
/** Subscription to spot state events for a specific user. */
|
|
11
|
+
export const SpotStateRequest = /* @__PURE__ */ (() => {
|
|
12
|
+
return v.pipe(
|
|
13
|
+
v.object({
|
|
14
|
+
/** Type of subscription. */
|
|
15
|
+
type: v.pipe(
|
|
16
|
+
v.literal("spotState"),
|
|
17
|
+
v.description("Type of subscription."),
|
|
18
|
+
),
|
|
19
|
+
/** User address. */
|
|
20
|
+
user: v.pipe(
|
|
21
|
+
Address,
|
|
22
|
+
v.description("User address."),
|
|
23
|
+
),
|
|
24
|
+
}),
|
|
25
|
+
v.description("Subscription to spot state events for a specific user."),
|
|
26
|
+
);
|
|
27
|
+
})();
|
|
28
|
+
export type SpotStateRequest = v.InferOutput<typeof SpotStateRequest>;
|
|
29
|
+
|
|
30
|
+
/** Event of user spot state. */
|
|
31
|
+
export const SpotStateEvent = /* @__PURE__ */ (() => {
|
|
32
|
+
return v.pipe(
|
|
33
|
+
v.object({
|
|
34
|
+
/** User address. */
|
|
35
|
+
user: v.pipe(
|
|
36
|
+
Address,
|
|
37
|
+
v.description("User address."),
|
|
38
|
+
),
|
|
39
|
+
/** Spot state of the user. */
|
|
40
|
+
spotState: v.pipe(
|
|
41
|
+
v.object({
|
|
42
|
+
/** Balance for each token. */
|
|
43
|
+
balances: v.pipe(
|
|
44
|
+
v.array(BalanceSchema),
|
|
45
|
+
v.description("Balance for each token."),
|
|
46
|
+
),
|
|
47
|
+
}),
|
|
48
|
+
v.description("Spot state of the user."),
|
|
49
|
+
),
|
|
50
|
+
}),
|
|
51
|
+
v.description("Event of user spot state."),
|
|
52
|
+
);
|
|
53
|
+
})();
|
|
54
|
+
export type SpotStateEvent = v.InferOutput<typeof SpotStateEvent>;
|
|
55
|
+
|
|
56
|
+
// -------------------- Function --------------------
|
|
57
|
+
|
|
58
|
+
/** Request parameters for the {@linkcode spotState} function. */
|
|
59
|
+
export type SpotStateParameters = Omit<v.InferInput<typeof SpotStateRequest>, "type">;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Subscribe to spot state updates for a specific user.
|
|
63
|
+
* @param config - General configuration for Subscription API subscriptions.
|
|
64
|
+
* @param params - Parameters specific to the API subscription.
|
|
65
|
+
* @param listener - A callback function to be called when the event is received.
|
|
66
|
+
* @returns A request-promise that resolves with a {@link Subscription} object to manage the subscription lifecycle.
|
|
67
|
+
*
|
|
68
|
+
* @throws {TransportError} When the transport layer throws an error.
|
|
69
|
+
*
|
|
70
|
+
* @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/subscriptions
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import { WebSocketTransport } from "@nktkas/hyperliquid";
|
|
74
|
+
* import { spotState } from "@nktkas/hyperliquid/api/subscription";
|
|
75
|
+
*
|
|
76
|
+
* const transport = new WebSocketTransport();
|
|
77
|
+
*
|
|
78
|
+
* const sub = await spotState(
|
|
79
|
+
* { transport },
|
|
80
|
+
* { user: "0x..." },
|
|
81
|
+
* (data) => console.log(data),
|
|
82
|
+
* );
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export function spotState(
|
|
86
|
+
config: SubscriptionRequestConfig,
|
|
87
|
+
params: DeepImmutable<SpotStateParameters>,
|
|
88
|
+
listener: (data: SpotStateEvent) => void,
|
|
89
|
+
): Promise<Subscription> {
|
|
90
|
+
const payload = parser(SpotStateRequest)({ type: "spotState", user: params.user });
|
|
91
|
+
return config.transport.subscribe<SpotStateEvent>(payload.type, payload, (e) => {
|
|
92
|
+
if (e.detail.user === payload.user) {
|
|
93
|
+
listener(e.detail);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
@@ -16,6 +16,7 @@ import { l2Book } from "./l2Book.js";
|
|
|
16
16
|
import { notification } from "./notification.js";
|
|
17
17
|
import { openOrders } from "./openOrders.js";
|
|
18
18
|
import { orderUpdates } from "./orderUpdates.js";
|
|
19
|
+
import { spotState } from "./spotState.js";
|
|
19
20
|
import { trades } from "./trades.js";
|
|
20
21
|
import { userEvents } from "./userEvents.js";
|
|
21
22
|
import { userFills } from "./userFills.js";
|
|
@@ -68,6 +69,7 @@ export type {
|
|
|
68
69
|
OrderUpdatesEvent as WsOrderUpdatesEvent,
|
|
69
70
|
OrderUpdatesParameters as WsOrderUpdatesParameters,
|
|
70
71
|
} from "./orderUpdates.js";
|
|
72
|
+
export type { SpotStateEvent as WsSpotStateEvent, SpotStateParameters as WsSpotStateParameters } from "./spotState.js";
|
|
71
73
|
export type { TradesEvent as WsTradesEvent, TradesParameters as WsTradesParameters } from "./trades.js";
|
|
72
74
|
export type {
|
|
73
75
|
UserEventsEvent as WsUserEventsEvent,
|
|
@@ -454,6 +456,29 @@ export class SubscriptionClient<
|
|
|
454
456
|
return orderUpdates(this, ...args);
|
|
455
457
|
}
|
|
456
458
|
|
|
459
|
+
/**
|
|
460
|
+
* Subscribe to spot state updates for a specific user.
|
|
461
|
+
* @param params - Parameters specific to the API subscription.
|
|
462
|
+
* @param listener - A callback function to be called when the event is received.
|
|
463
|
+
* @returns A request-promise that resolves with a {@link Subscription} object to manage the subscription lifecycle.
|
|
464
|
+
*
|
|
465
|
+
* @throws {TransportError} When the transport layer throws an error.
|
|
466
|
+
*
|
|
467
|
+
* @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/websocket/subscriptions
|
|
468
|
+
* @example
|
|
469
|
+
* ```ts
|
|
470
|
+
* import * as hl from "@nktkas/hyperliquid";
|
|
471
|
+
*
|
|
472
|
+
* const transport = new hl.WebSocketTransport();
|
|
473
|
+
*
|
|
474
|
+
* const client = new hl.SubscriptionClient({ transport });
|
|
475
|
+
* const sub = await client.spotState({ user: "0x..." }, (data) => console.log(data));
|
|
476
|
+
* ```
|
|
477
|
+
*/
|
|
478
|
+
spotState(...args: OmitFirst<OverloadedParameters<typeof spotState>>) {
|
|
479
|
+
return spotState(this, ...args);
|
|
480
|
+
}
|
|
481
|
+
|
|
457
482
|
/**
|
|
458
483
|
* Subscribe to real-time trade updates for a specific asset.
|
|
459
484
|
* @param params - Parameters specific to the API subscription.
|
|
@@ -40,6 +40,7 @@ export * from "./l2Book.js";
|
|
|
40
40
|
export * from "./notification.js";
|
|
41
41
|
export * from "./openOrders.js";
|
|
42
42
|
export * from "./orderUpdates.js";
|
|
43
|
+
export * from "./spotState.js";
|
|
43
44
|
export * from "./trades.js";
|
|
44
45
|
export * from "./userEvents.js";
|
|
45
46
|
export * from "./userFills.js";
|
|
@@ -218,7 +218,7 @@ export async function getWalletChainId(wallet: AbstractWallet): Promise<`0x${str
|
|
|
218
218
|
}
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
/** Get the wallet address from various wallet types. */
|
|
221
|
+
/** Get the lowercase wallet address from various wallet types. */
|
|
222
222
|
export async function getWalletAddress(wallet: AbstractWallet): Promise<`0x${string}`> {
|
|
223
223
|
if (isAbstractViemWallet(wallet)) {
|
|
224
224
|
if ("address" in wallet && wallet.address) {
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// -------------------- EIP-712 --------------------
|
|
2
|
-
|
|
3
1
|
import { keccak_256 } from "@noble/hashes/sha3.js";
|
|
4
2
|
import * as secp from "@noble/secp256k1";
|
|
5
3
|
|
|
@@ -19,7 +17,7 @@ export interface Domain {
|
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
/** Signs typed data with a private key. */
|
|
22
|
-
async function signTypedData(args: {
|
|
20
|
+
export async function signTypedData(args: {
|
|
23
21
|
privateKey: string | Uint8Array;
|
|
24
22
|
domain?: Domain;
|
|
25
23
|
types: Types;
|
|
@@ -36,20 +34,18 @@ async function signTypedData(args: {
|
|
|
36
34
|
|
|
37
35
|
const hash = hashTypedData({ domain, types, primaryType, message });
|
|
38
36
|
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
privateKey instanceof Uint8Array ? privateKey : secp.etc.hexToBytes(cleanHex(privateKey)),
|
|
42
|
-
{ prehash: false, format: "recovered" },
|
|
43
|
-
);
|
|
37
|
+
const pk = typeof privateKey === "string" ? secp.etc.hexToBytes(cleanHex(privateKey)) : privateKey;
|
|
38
|
+
const sigr = await secp.signAsync(hash, pk, { prehash: false, format: "recovered" });
|
|
44
39
|
|
|
45
|
-
const r = secp.etc.bytesToHex(
|
|
46
|
-
const s = secp.etc.bytesToHex(
|
|
47
|
-
const v = (
|
|
40
|
+
const r = secp.etc.bytesToHex(sigr.slice(1, 33));
|
|
41
|
+
const s = secp.etc.bytesToHex(sigr.slice(33, 65));
|
|
42
|
+
const v = (sigr[0] + 27).toString(16).padStart(2, "0");
|
|
48
43
|
|
|
49
44
|
return `0x${r}${s}${v}`;
|
|
50
45
|
}
|
|
51
46
|
|
|
52
|
-
|
|
47
|
+
/** Hashes typed data according to EIP-712. */
|
|
48
|
+
export function hashTypedData(args: {
|
|
53
49
|
domain: Domain;
|
|
54
50
|
types: Types;
|
|
55
51
|
primaryType: string;
|
|
@@ -211,7 +207,7 @@ function cleanHex(hex: string): string {
|
|
|
211
207
|
return hex.startsWith("0x") ? hex.slice(2) : hex;
|
|
212
208
|
}
|
|
213
209
|
|
|
214
|
-
// --------------------
|
|
210
|
+
// -------------------- For SDK --------------------
|
|
215
211
|
|
|
216
212
|
import type { AbstractViemLocalAccount } from "../signing/mod.js";
|
|
217
213
|
|
|
@@ -221,30 +217,27 @@ export class PrivateKeyEIP712Signer implements AbstractViemLocalAccount {
|
|
|
221
217
|
address: `0x${string}`;
|
|
222
218
|
constructor(privateKey: string | Uint8Array) {
|
|
223
219
|
this.#privateKey = privateKey;
|
|
224
|
-
this.address = privateKeyToAddress(privateKey); // and validate the key
|
|
225
|
-
}
|
|
226
|
-
signTypedData(
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
},
|
|
233
|
-
): Promise<`0x${string}`> {
|
|
220
|
+
this.address = privateKeyToAddress(privateKey); // and validate the private key
|
|
221
|
+
}
|
|
222
|
+
signTypedData(params: {
|
|
223
|
+
domain: Domain;
|
|
224
|
+
types: Types;
|
|
225
|
+
primaryType: string;
|
|
226
|
+
message: Record<string, unknown>;
|
|
227
|
+
}): Promise<`0x${string}`> {
|
|
234
228
|
return signTypedData({ privateKey: this.#privateKey, ...params });
|
|
235
229
|
}
|
|
236
230
|
}
|
|
237
231
|
|
|
238
232
|
function privateKeyToAddress(privateKey: string | Uint8Array): `0x${string}` {
|
|
239
233
|
const pk = typeof privateKey === "string" ? secp.etc.hexToBytes(cleanHex(privateKey)) : privateKey;
|
|
240
|
-
|
|
241
234
|
const publicKey = secp.getPublicKey(pk, false);
|
|
242
|
-
|
|
235
|
+
return publicKeyToAddress(publicKey);
|
|
236
|
+
}
|
|
243
237
|
|
|
238
|
+
function publicKeyToAddress(publicKey: Uint8Array): `0x${string}` {
|
|
239
|
+
const publicKeyWithoutPrefix = publicKey.slice(1);
|
|
244
240
|
const hash = keccak_256(publicKeyWithoutPrefix);
|
|
245
|
-
|
|
246
241
|
const addressBytes = hash.slice(-20);
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
return `0x${address}`;
|
|
242
|
+
return `0x${secp.etc.bytesToHex(addressBytes)}`;
|
|
250
243
|
}
|