@moveindustries/ts-sdk 5.1.4
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 +66 -0
- package/dist/common/accountAddress-DoqkxUqw.d.ts +7769 -0
- package/dist/common/chunk-56DGDNEY.js +4 -0
- package/dist/common/chunk-56DGDNEY.js.map +1 -0
- package/dist/common/cli/index.d.ts +316 -0
- package/dist/common/cli/index.js +2 -0
- package/dist/common/cli/index.js.map +1 -0
- package/dist/common/index.d.ts +10643 -0
- package/dist/common/index.js +482 -0
- package/dist/common/index.js.map +1 -0
- package/dist/esm/Ed25519Account-DsqenvLJ.d.mts +628 -0
- package/dist/esm/account/AbstractKeylessAccount.d.mts +336 -0
- package/dist/esm/account/AbstractKeylessAccount.mjs +2 -0
- package/dist/esm/account/AbstractKeylessAccount.mjs.map +1 -0
- package/dist/esm/account/AbstractedAccount.d.mts +64 -0
- package/dist/esm/account/AbstractedAccount.mjs +2 -0
- package/dist/esm/account/AbstractedAccount.mjs.map +1 -0
- package/dist/esm/account/Account.d.mts +8 -0
- package/dist/esm/account/Account.mjs +2 -0
- package/dist/esm/account/Account.mjs.map +1 -0
- package/dist/esm/account/AccountUtils.d.mts +38 -0
- package/dist/esm/account/AccountUtils.mjs +2 -0
- package/dist/esm/account/AccountUtils.mjs.map +1 -0
- package/dist/esm/account/DerivableAbstractedAccount.d.mts +59 -0
- package/dist/esm/account/DerivableAbstractedAccount.mjs +2 -0
- package/dist/esm/account/DerivableAbstractedAccount.mjs.map +1 -0
- package/dist/esm/account/Ed25519Account.d.mts +8 -0
- package/dist/esm/account/Ed25519Account.mjs +2 -0
- package/dist/esm/account/Ed25519Account.mjs.map +1 -0
- package/dist/esm/account/EphemeralKeyPair.d.mts +141 -0
- package/dist/esm/account/EphemeralKeyPair.mjs +2 -0
- package/dist/esm/account/EphemeralKeyPair.mjs.map +1 -0
- package/dist/esm/account/FederatedKeylessAccount.d.mts +118 -0
- package/dist/esm/account/FederatedKeylessAccount.mjs +2 -0
- package/dist/esm/account/FederatedKeylessAccount.mjs.map +1 -0
- package/dist/esm/account/KeylessAccount.d.mts +124 -0
- package/dist/esm/account/KeylessAccount.mjs +2 -0
- package/dist/esm/account/KeylessAccount.mjs.map +1 -0
- package/dist/esm/account/MultiEd25519Account.d.mts +102 -0
- package/dist/esm/account/MultiEd25519Account.mjs +2 -0
- package/dist/esm/account/MultiEd25519Account.mjs.map +1 -0
- package/dist/esm/account/MultiKeyAccount.d.mts +206 -0
- package/dist/esm/account/MultiKeyAccount.mjs +2 -0
- package/dist/esm/account/MultiKeyAccount.mjs.map +1 -0
- package/dist/esm/account/SingleKeyAccount.d.mts +8 -0
- package/dist/esm/account/SingleKeyAccount.mjs +2 -0
- package/dist/esm/account/SingleKeyAccount.mjs.map +1 -0
- package/dist/esm/account/index.d.mts +24 -0
- package/dist/esm/account/index.mjs +2 -0
- package/dist/esm/account/index.mjs.map +1 -0
- package/dist/esm/account/utils.d.mts +14 -0
- package/dist/esm/account/utils.mjs +2 -0
- package/dist/esm/account/utils.mjs.map +1 -0
- package/dist/esm/accountAddress-CNXtapt1.d.mts +6979 -0
- package/dist/esm/api/account/abstraction.d.mts +181 -0
- package/dist/esm/api/account/abstraction.mjs +2 -0
- package/dist/esm/api/account/abstraction.mjs.map +1 -0
- package/dist/esm/api/account.d.mts +852 -0
- package/dist/esm/api/account.mjs +2 -0
- package/dist/esm/api/account.mjs.map +1 -0
- package/dist/esm/api/ans.d.mts +504 -0
- package/dist/esm/api/ans.mjs +2 -0
- package/dist/esm/api/ans.mjs.map +1 -0
- package/dist/esm/api/coin.d.mts +81 -0
- package/dist/esm/api/coin.mjs +2 -0
- package/dist/esm/api/coin.mjs.map +1 -0
- package/dist/esm/api/digitalAsset.d.mts +1030 -0
- package/dist/esm/api/digitalAsset.mjs +2 -0
- package/dist/esm/api/digitalAsset.mjs.map +1 -0
- package/dist/esm/api/faucet.d.mts +80 -0
- package/dist/esm/api/faucet.mjs +2 -0
- package/dist/esm/api/faucet.mjs.map +1 -0
- package/dist/esm/api/fungibleAsset.d.mts +288 -0
- package/dist/esm/api/fungibleAsset.mjs +2 -0
- package/dist/esm/api/fungibleAsset.mjs.map +1 -0
- package/dist/esm/api/general.d.mts +303 -0
- package/dist/esm/api/general.mjs +2 -0
- package/dist/esm/api/general.mjs.map +1 -0
- package/dist/esm/api/index.d.mts +46 -0
- package/dist/esm/api/index.mjs +2 -0
- package/dist/esm/api/index.mjs.map +1 -0
- package/dist/esm/api/keyless.d.mts +170 -0
- package/dist/esm/api/keyless.mjs +2 -0
- package/dist/esm/api/keyless.mjs.map +1 -0
- package/dist/esm/api/movement.d.mts +113 -0
- package/dist/esm/api/movement.mjs +2 -0
- package/dist/esm/api/movement.mjs.map +1 -0
- package/dist/esm/api/movementConfig.d.mts +7 -0
- package/dist/esm/api/movementConfig.mjs +2 -0
- package/dist/esm/api/movementConfig.mjs.map +1 -0
- package/dist/esm/api/object.d.mts +80 -0
- package/dist/esm/api/object.mjs +2 -0
- package/dist/esm/api/object.mjs.map +1 -0
- package/dist/esm/api/staking.d.mts +134 -0
- package/dist/esm/api/staking.mjs +2 -0
- package/dist/esm/api/staking.mjs.map +1 -0
- package/dist/esm/api/table.d.mts +169 -0
- package/dist/esm/api/table.mjs +2 -0
- package/dist/esm/api/table.mjs.map +1 -0
- package/dist/esm/api/transaction.d.mts +679 -0
- package/dist/esm/api/transaction.mjs +2 -0
- package/dist/esm/api/transaction.mjs.map +1 -0
- package/dist/esm/api/transactionSubmission/build.d.mts +141 -0
- package/dist/esm/api/transactionSubmission/build.mjs +2 -0
- package/dist/esm/api/transactionSubmission/build.mjs.map +1 -0
- package/dist/esm/api/transactionSubmission/helpers.d.mts +98 -0
- package/dist/esm/api/transactionSubmission/helpers.mjs +2 -0
- package/dist/esm/api/transactionSubmission/helpers.mjs.map +1 -0
- package/dist/esm/api/transactionSubmission/management.d.mts +168 -0
- package/dist/esm/api/transactionSubmission/management.mjs +2 -0
- package/dist/esm/api/transactionSubmission/management.mjs.map +1 -0
- package/dist/esm/api/transactionSubmission/sign.d.mts +124 -0
- package/dist/esm/api/transactionSubmission/sign.mjs +2 -0
- package/dist/esm/api/transactionSubmission/sign.mjs.map +1 -0
- package/dist/esm/api/transactionSubmission/simulate.d.mts +181 -0
- package/dist/esm/api/transactionSubmission/simulate.mjs +2 -0
- package/dist/esm/api/transactionSubmission/simulate.mjs.map +1 -0
- package/dist/esm/api/transactionSubmission/submit.d.mts +142 -0
- package/dist/esm/api/transactionSubmission/submit.mjs +2 -0
- package/dist/esm/api/transactionSubmission/submit.mjs.map +1 -0
- package/dist/esm/api/utils.d.mts +45 -0
- package/dist/esm/api/utils.mjs +2 -0
- package/dist/esm/api/utils.mjs.map +1 -0
- package/dist/esm/bcs/consts.d.mts +28 -0
- package/dist/esm/bcs/consts.mjs +2 -0
- package/dist/esm/bcs/consts.mjs.map +1 -0
- package/dist/esm/bcs/deserializer.d.mts +7 -0
- package/dist/esm/bcs/deserializer.mjs +2 -0
- package/dist/esm/bcs/deserializer.mjs.map +1 -0
- package/dist/esm/bcs/index.d.mts +8 -0
- package/dist/esm/bcs/index.mjs +2 -0
- package/dist/esm/bcs/index.mjs.map +1 -0
- package/dist/esm/bcs/serializable/entryFunctionBytes.d.mts +65 -0
- package/dist/esm/bcs/serializable/entryFunctionBytes.mjs +2 -0
- package/dist/esm/bcs/serializable/entryFunctionBytes.mjs.map +1 -0
- package/dist/esm/bcs/serializable/fixedBytes.d.mts +7 -0
- package/dist/esm/bcs/serializable/fixedBytes.mjs +2 -0
- package/dist/esm/bcs/serializable/fixedBytes.mjs.map +1 -0
- package/dist/esm/bcs/serializable/movePrimitives.d.mts +7 -0
- package/dist/esm/bcs/serializable/movePrimitives.mjs +2 -0
- package/dist/esm/bcs/serializable/movePrimitives.mjs.map +1 -0
- package/dist/esm/bcs/serializable/moveStructs.d.mts +7 -0
- package/dist/esm/bcs/serializable/moveStructs.mjs +2 -0
- package/dist/esm/bcs/serializable/moveStructs.mjs.map +1 -0
- package/dist/esm/bcs/serializer.d.mts +7 -0
- package/dist/esm/bcs/serializer.mjs +2 -0
- package/dist/esm/bcs/serializer.mjs.map +1 -0
- package/dist/esm/chunk-2KDUIZKB.mjs +2 -0
- package/dist/esm/chunk-2KDUIZKB.mjs.map +1 -0
- package/dist/esm/chunk-2QTV4AOE.mjs +2 -0
- package/dist/esm/chunk-2QTV4AOE.mjs.map +1 -0
- package/dist/esm/chunk-47V7UGV5.mjs +4 -0
- package/dist/esm/chunk-47V7UGV5.mjs.map +1 -0
- package/dist/esm/chunk-4QMXOWHP.mjs +1 -0
- package/dist/esm/chunk-4QMXOWHP.mjs.map +1 -0
- package/dist/esm/chunk-4WPQQPUF.mjs +1 -0
- package/dist/esm/chunk-4WPQQPUF.mjs.map +1 -0
- package/dist/esm/chunk-5HXLZHDW.mjs +1 -0
- package/dist/esm/chunk-5HXLZHDW.mjs.map +1 -0
- package/dist/esm/chunk-5IMQPJ6J.mjs +2 -0
- package/dist/esm/chunk-5IMQPJ6J.mjs.map +1 -0
- package/dist/esm/chunk-5ZKA765G.mjs +2 -0
- package/dist/esm/chunk-5ZKA765G.mjs.map +1 -0
- package/dist/esm/chunk-6NO4QKAO.mjs +2 -0
- package/dist/esm/chunk-6NO4QKAO.mjs.map +1 -0
- package/dist/esm/chunk-7ECCT6PK.mjs +1 -0
- package/dist/esm/chunk-7ECCT6PK.mjs.map +1 -0
- package/dist/esm/chunk-7TTTMBAK.mjs +2 -0
- package/dist/esm/chunk-7TTTMBAK.mjs.map +1 -0
- package/dist/esm/chunk-A5L76YP7.mjs +2 -0
- package/dist/esm/chunk-A5L76YP7.mjs.map +1 -0
- package/dist/esm/chunk-ANTEUWH6.mjs +2 -0
- package/dist/esm/chunk-ANTEUWH6.mjs.map +1 -0
- package/dist/esm/chunk-CHWDP6AR.mjs +2 -0
- package/dist/esm/chunk-CHWDP6AR.mjs.map +1 -0
- package/dist/esm/chunk-CRCE7R4D.mjs +2 -0
- package/dist/esm/chunk-CRCE7R4D.mjs.map +1 -0
- package/dist/esm/chunk-D6HPXGEP.mjs +2 -0
- package/dist/esm/chunk-D6HPXGEP.mjs.map +1 -0
- package/dist/esm/chunk-DS6QB6HG.mjs +4 -0
- package/dist/esm/chunk-DS6QB6HG.mjs.map +1 -0
- package/dist/esm/chunk-FD6FGKYY.mjs +1 -0
- package/dist/esm/chunk-FD6FGKYY.mjs.map +1 -0
- package/dist/esm/chunk-FJRPU2NH.mjs +2 -0
- package/dist/esm/chunk-FJRPU2NH.mjs.map +1 -0
- package/dist/esm/chunk-FS5ZJKO7.mjs +2 -0
- package/dist/esm/chunk-FS5ZJKO7.mjs.map +1 -0
- package/dist/esm/chunk-FZY4PMEE.mjs +1 -0
- package/dist/esm/chunk-FZY4PMEE.mjs.map +1 -0
- package/dist/esm/chunk-G3MHXDYA.mjs +1 -0
- package/dist/esm/chunk-G3MHXDYA.mjs.map +1 -0
- package/dist/esm/chunk-GOXRBEIJ.mjs +2 -0
- package/dist/esm/chunk-GOXRBEIJ.mjs.map +1 -0
- package/dist/esm/chunk-HGLO5LDS.mjs +1 -0
- package/dist/esm/chunk-HGLO5LDS.mjs.map +1 -0
- package/dist/esm/chunk-HL2JMZ7N.mjs +2 -0
- package/dist/esm/chunk-HL2JMZ7N.mjs.map +1 -0
- package/dist/esm/chunk-I6YGBK5S.mjs +2 -0
- package/dist/esm/chunk-I6YGBK5S.mjs.map +1 -0
- package/dist/esm/chunk-K4NT6TTN.mjs +2 -0
- package/dist/esm/chunk-K4NT6TTN.mjs.map +1 -0
- package/dist/esm/chunk-KDMSOCZY.mjs +2 -0
- package/dist/esm/chunk-KDMSOCZY.mjs.map +1 -0
- package/dist/esm/chunk-KPJGWDSQ.mjs +7 -0
- package/dist/esm/chunk-KPJGWDSQ.mjs.map +1 -0
- package/dist/esm/chunk-MEWW7VTQ.mjs +2 -0
- package/dist/esm/chunk-MEWW7VTQ.mjs.map +1 -0
- package/dist/esm/chunk-NECL5FCQ.mjs +1 -0
- package/dist/esm/chunk-NECL5FCQ.mjs.map +1 -0
- package/dist/esm/chunk-NMFJJOGW.mjs +2 -0
- package/dist/esm/chunk-NMFJJOGW.mjs.map +1 -0
- package/dist/esm/chunk-NQUZ4UHR.mjs +2 -0
- package/dist/esm/chunk-NQUZ4UHR.mjs.map +1 -0
- package/dist/esm/chunk-NUB6KE73.mjs +2 -0
- package/dist/esm/chunk-NUB6KE73.mjs.map +1 -0
- package/dist/esm/chunk-OOOAVIMQ.mjs +2 -0
- package/dist/esm/chunk-OOOAVIMQ.mjs.map +1 -0
- package/dist/esm/chunk-PCESRJYO.mjs +2 -0
- package/dist/esm/chunk-PCESRJYO.mjs.map +1 -0
- package/dist/esm/chunk-PHRRBT44.mjs +2 -0
- package/dist/esm/chunk-PHRRBT44.mjs.map +1 -0
- package/dist/esm/chunk-PZ233FIY.mjs +2 -0
- package/dist/esm/chunk-PZ233FIY.mjs.map +1 -0
- package/dist/esm/chunk-R2G23RIY.mjs +2 -0
- package/dist/esm/chunk-R2G23RIY.mjs.map +1 -0
- package/dist/esm/chunk-RL4YPMN4.mjs +2 -0
- package/dist/esm/chunk-RL4YPMN4.mjs.map +1 -0
- package/dist/esm/chunk-RUIFVDWM.mjs +2 -0
- package/dist/esm/chunk-RUIFVDWM.mjs.map +1 -0
- package/dist/esm/chunk-RXHPS4IU.mjs +2 -0
- package/dist/esm/chunk-RXHPS4IU.mjs.map +1 -0
- package/dist/esm/chunk-S4D2KBYN.mjs +2 -0
- package/dist/esm/chunk-S4D2KBYN.mjs.map +1 -0
- package/dist/esm/chunk-SRXFRTHK.mjs +2 -0
- package/dist/esm/chunk-SRXFRTHK.mjs.map +1 -0
- package/dist/esm/chunk-SYXDZA4K.mjs +2 -0
- package/dist/esm/chunk-SYXDZA4K.mjs.map +1 -0
- package/dist/esm/chunk-UI4OF6CP.mjs +2 -0
- package/dist/esm/chunk-UI4OF6CP.mjs.map +1 -0
- package/dist/esm/chunk-UL777LTI.mjs +494 -0
- package/dist/esm/chunk-UL777LTI.mjs.map +1 -0
- package/dist/esm/chunk-UVP74ONT.mjs +2 -0
- package/dist/esm/chunk-UVP74ONT.mjs.map +1 -0
- package/dist/esm/chunk-UYVPNUH3.mjs +1 -0
- package/dist/esm/chunk-UYVPNUH3.mjs.map +1 -0
- package/dist/esm/chunk-V3MBJJTL.mjs +1 -0
- package/dist/esm/chunk-V3MBJJTL.mjs.map +1 -0
- package/dist/esm/chunk-V3O2SBO4.mjs +2 -0
- package/dist/esm/chunk-V3O2SBO4.mjs.map +1 -0
- package/dist/esm/chunk-VEZCMPUG.mjs +2 -0
- package/dist/esm/chunk-VEZCMPUG.mjs.map +1 -0
- package/dist/esm/chunk-VW3WBAAD.mjs +2 -0
- package/dist/esm/chunk-VW3WBAAD.mjs.map +1 -0
- package/dist/esm/chunk-WFAH73WN.mjs +2 -0
- package/dist/esm/chunk-WFAH73WN.mjs.map +1 -0
- package/dist/esm/chunk-WVDICMU4.mjs +2 -0
- package/dist/esm/chunk-WVDICMU4.mjs.map +1 -0
- package/dist/esm/chunk-XCURF77K.mjs +2 -0
- package/dist/esm/chunk-XCURF77K.mjs.map +1 -0
- package/dist/esm/chunk-Y6YW4BAZ.mjs +2 -0
- package/dist/esm/chunk-Y6YW4BAZ.mjs.map +1 -0
- package/dist/esm/chunk-YFFYA5U3.mjs +2 -0
- package/dist/esm/chunk-YFFYA5U3.mjs.map +1 -0
- package/dist/esm/chunk-YOHEYPDP.mjs +2 -0
- package/dist/esm/chunk-YOHEYPDP.mjs.map +1 -0
- package/dist/esm/chunk-ZP4DWSQA.mjs +2 -0
- package/dist/esm/chunk-ZP4DWSQA.mjs.map +1 -0
- package/dist/esm/cli/index.d.mts +10 -0
- package/dist/esm/cli/index.mjs +2 -0
- package/dist/esm/cli/index.mjs.map +1 -0
- package/dist/esm/cli/localNode.d.mts +67 -0
- package/dist/esm/cli/localNode.mjs +2 -0
- package/dist/esm/cli/localNode.mjs.map +1 -0
- package/dist/esm/cli/move.d.mts +257 -0
- package/dist/esm/cli/move.mjs +2 -0
- package/dist/esm/cli/move.mjs.map +1 -0
- package/dist/esm/client/core.d.mts +42 -0
- package/dist/esm/client/core.mjs +2 -0
- package/dist/esm/client/core.mjs.map +1 -0
- package/dist/esm/client/get.d.mts +125 -0
- package/dist/esm/client/get.mjs +2 -0
- package/dist/esm/client/get.mjs.map +1 -0
- package/dist/esm/client/index.d.mts +10 -0
- package/dist/esm/client/index.mjs +2 -0
- package/dist/esm/client/index.mjs.map +1 -0
- package/dist/esm/client/post.d.mts +158 -0
- package/dist/esm/client/post.mjs +2 -0
- package/dist/esm/client/post.mjs.map +1 -0
- package/dist/esm/core/account/index.d.mts +8 -0
- package/dist/esm/core/account/index.mjs +2 -0
- package/dist/esm/core/account/index.mjs.map +1 -0
- package/dist/esm/core/account/utils/address.d.mts +55 -0
- package/dist/esm/core/account/utils/address.mjs +2 -0
- package/dist/esm/core/account/utils/address.mjs.map +1 -0
- package/dist/esm/core/account/utils/index.d.mts +8 -0
- package/dist/esm/core/account/utils/index.mjs +2 -0
- package/dist/esm/core/account/utils/index.mjs.map +1 -0
- package/dist/esm/core/accountAddress.d.mts +7 -0
- package/dist/esm/core/accountAddress.mjs +2 -0
- package/dist/esm/core/accountAddress.mjs.map +1 -0
- package/dist/esm/core/authenticationKey.d.mts +7 -0
- package/dist/esm/core/authenticationKey.mjs +2 -0
- package/dist/esm/core/authenticationKey.mjs.map +1 -0
- package/dist/esm/core/common.d.mts +52 -0
- package/dist/esm/core/common.mjs +2 -0
- package/dist/esm/core/common.mjs.map +1 -0
- package/dist/esm/core/crypto/abstraction.d.mts +24 -0
- package/dist/esm/core/crypto/abstraction.mjs +2 -0
- package/dist/esm/core/crypto/abstraction.mjs.map +1 -0
- package/dist/esm/core/crypto/deserializationUtils.d.mts +28 -0
- package/dist/esm/core/crypto/deserializationUtils.mjs +2 -0
- package/dist/esm/core/crypto/deserializationUtils.mjs.map +1 -0
- package/dist/esm/core/crypto/ed25519.d.mts +7 -0
- package/dist/esm/core/crypto/ed25519.mjs +2 -0
- package/dist/esm/core/crypto/ed25519.mjs.map +1 -0
- package/dist/esm/core/crypto/ephemeral.d.mts +116 -0
- package/dist/esm/core/crypto/ephemeral.mjs +2 -0
- package/dist/esm/core/crypto/ephemeral.mjs.map +1 -0
- package/dist/esm/core/crypto/federatedKeyless.d.mts +13 -0
- package/dist/esm/core/crypto/federatedKeyless.mjs +2 -0
- package/dist/esm/core/crypto/federatedKeyless.mjs.map +1 -0
- package/dist/esm/core/crypto/hdKey.d.mts +95 -0
- package/dist/esm/core/crypto/hdKey.mjs +2 -0
- package/dist/esm/core/crypto/hdKey.mjs.map +1 -0
- package/dist/esm/core/crypto/index.d.mts +19 -0
- package/dist/esm/core/crypto/index.mjs +2 -0
- package/dist/esm/core/crypto/index.mjs.map +1 -0
- package/dist/esm/core/crypto/keyless.d.mts +13 -0
- package/dist/esm/core/crypto/keyless.mjs +2 -0
- package/dist/esm/core/crypto/keyless.mjs.map +1 -0
- package/dist/esm/core/crypto/multiEd25519.d.mts +7 -0
- package/dist/esm/core/crypto/multiEd25519.mjs +2 -0
- package/dist/esm/core/crypto/multiEd25519.mjs.map +1 -0
- package/dist/esm/core/crypto/multiKey.d.mts +7 -0
- package/dist/esm/core/crypto/multiKey.mjs +2 -0
- package/dist/esm/core/crypto/multiKey.mjs.map +1 -0
- package/dist/esm/core/crypto/poseidon.d.mts +59 -0
- package/dist/esm/core/crypto/poseidon.mjs +2 -0
- package/dist/esm/core/crypto/poseidon.mjs.map +1 -0
- package/dist/esm/core/crypto/privateKey.d.mts +7 -0
- package/dist/esm/core/crypto/privateKey.mjs +2 -0
- package/dist/esm/core/crypto/privateKey.mjs.map +1 -0
- package/dist/esm/core/crypto/proof.d.mts +18 -0
- package/dist/esm/core/crypto/proof.mjs +2 -0
- package/dist/esm/core/crypto/proof.mjs.map +1 -0
- package/dist/esm/core/crypto/publicKey.d.mts +7 -0
- package/dist/esm/core/crypto/publicKey.mjs +2 -0
- package/dist/esm/core/crypto/publicKey.mjs.map +1 -0
- package/dist/esm/core/crypto/secp256k1.d.mts +7 -0
- package/dist/esm/core/crypto/secp256k1.mjs +2 -0
- package/dist/esm/core/crypto/secp256k1.mjs.map +1 -0
- package/dist/esm/core/crypto/secp256r1.d.mts +306 -0
- package/dist/esm/core/crypto/secp256r1.mjs +2 -0
- package/dist/esm/core/crypto/secp256r1.mjs.map +1 -0
- package/dist/esm/core/crypto/signature.d.mts +7 -0
- package/dist/esm/core/crypto/signature.mjs +2 -0
- package/dist/esm/core/crypto/signature.mjs.map +1 -0
- package/dist/esm/core/crypto/singleKey.d.mts +7 -0
- package/dist/esm/core/crypto/singleKey.mjs +2 -0
- package/dist/esm/core/crypto/singleKey.mjs.map +1 -0
- package/dist/esm/core/crypto/types.d.mts +11 -0
- package/dist/esm/core/crypto/types.mjs +2 -0
- package/dist/esm/core/crypto/types.mjs.map +1 -0
- package/dist/esm/core/crypto/utils.d.mts +23 -0
- package/dist/esm/core/crypto/utils.mjs +2 -0
- package/dist/esm/core/crypto/utils.mjs.map +1 -0
- package/dist/esm/core/hex.d.mts +7 -0
- package/dist/esm/core/hex.mjs +2 -0
- package/dist/esm/core/hex.mjs.map +1 -0
- package/dist/esm/core/index.d.mts +20 -0
- package/dist/esm/core/index.mjs +2 -0
- package/dist/esm/core/index.mjs.map +1 -0
- package/dist/esm/errors/index.d.mts +131 -0
- package/dist/esm/errors/index.mjs +2 -0
- package/dist/esm/errors/index.mjs.map +1 -0
- package/dist/esm/federatedKeyless-D-d9d5aC.d.mts +869 -0
- package/dist/esm/index.d.mts +71 -0
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/internal/abstraction.d.mts +27 -0
- package/dist/esm/internal/abstraction.mjs +2 -0
- package/dist/esm/internal/abstraction.mjs.map +1 -0
- package/dist/esm/internal/account.d.mts +453 -0
- package/dist/esm/internal/account.mjs +2 -0
- package/dist/esm/internal/account.mjs.map +1 -0
- package/dist/esm/internal/ans.d.mts +365 -0
- package/dist/esm/internal/ans.mjs +2 -0
- package/dist/esm/internal/ans.mjs.map +1 -0
- package/dist/esm/internal/coin.d.mts +31 -0
- package/dist/esm/internal/coin.mjs +2 -0
- package/dist/esm/internal/coin.mjs.map +1 -0
- package/dist/esm/internal/digitalAsset.d.mts +580 -0
- package/dist/esm/internal/digitalAsset.mjs +2 -0
- package/dist/esm/internal/digitalAsset.mjs.map +1 -0
- package/dist/esm/internal/faucet.d.mts +39 -0
- package/dist/esm/internal/faucet.mjs +2 -0
- package/dist/esm/internal/faucet.mjs.map +1 -0
- package/dist/esm/internal/fungibleAsset.d.mts +112 -0
- package/dist/esm/internal/fungibleAsset.mjs +2 -0
- package/dist/esm/internal/fungibleAsset.mjs.map +1 -0
- package/dist/esm/internal/general.d.mts +92 -0
- package/dist/esm/internal/general.mjs +2 -0
- package/dist/esm/internal/general.mjs.map +1 -0
- package/dist/esm/internal/keyless.d.mts +111 -0
- package/dist/esm/internal/keyless.mjs +2 -0
- package/dist/esm/internal/keyless.mjs.map +1 -0
- package/dist/esm/internal/object.d.mts +42 -0
- package/dist/esm/internal/object.mjs +2 -0
- package/dist/esm/internal/object.mjs.map +1 -0
- package/dist/esm/internal/staking.d.mts +60 -0
- package/dist/esm/internal/staking.mjs +2 -0
- package/dist/esm/internal/staking.mjs.map +1 -0
- package/dist/esm/internal/table.d.mts +66 -0
- package/dist/esm/internal/table.mjs +2 -0
- package/dist/esm/internal/table.mjs.map +1 -0
- package/dist/esm/internal/transaction.d.mts +199 -0
- package/dist/esm/internal/transaction.mjs +2 -0
- package/dist/esm/internal/transaction.mjs.map +1 -0
- package/dist/esm/internal/transactionSubmission.d.mts +165 -0
- package/dist/esm/internal/transactionSubmission.mjs +2 -0
- package/dist/esm/internal/transactionSubmission.mjs.map +1 -0
- package/dist/esm/internal/utils/index.d.mts +8 -0
- package/dist/esm/internal/utils/index.mjs +2 -0
- package/dist/esm/internal/utils/index.mjs.map +1 -0
- package/dist/esm/internal/utils/utils.d.mts +41 -0
- package/dist/esm/internal/utils/utils.mjs +2 -0
- package/dist/esm/internal/utils/utils.mjs.map +1 -0
- package/dist/esm/internal/view.d.mts +20 -0
- package/dist/esm/internal/view.mjs +2 -0
- package/dist/esm/internal/view.mjs.map +1 -0
- package/dist/esm/transactions/authenticator/account.d.mts +7 -0
- package/dist/esm/transactions/authenticator/account.mjs +2 -0
- package/dist/esm/transactions/authenticator/account.mjs.map +1 -0
- package/dist/esm/transactions/authenticator/index.d.mts +8 -0
- package/dist/esm/transactions/authenticator/index.mjs +2 -0
- package/dist/esm/transactions/authenticator/index.mjs.map +1 -0
- package/dist/esm/transactions/authenticator/transaction.d.mts +152 -0
- package/dist/esm/transactions/authenticator/transaction.mjs +2 -0
- package/dist/esm/transactions/authenticator/transaction.mjs.map +1 -0
- package/dist/esm/transactions/index.d.mts +15 -0
- package/dist/esm/transactions/index.mjs +2 -0
- package/dist/esm/transactions/index.mjs.map +1 -0
- package/dist/esm/transactions/instances/chainId.d.mts +7 -0
- package/dist/esm/transactions/instances/chainId.mjs +2 -0
- package/dist/esm/transactions/instances/chainId.mjs.map +1 -0
- package/dist/esm/transactions/instances/identifier.d.mts +7 -0
- package/dist/esm/transactions/instances/identifier.mjs +2 -0
- package/dist/esm/transactions/instances/identifier.mjs.map +1 -0
- package/dist/esm/transactions/instances/index.d.mts +10 -0
- package/dist/esm/transactions/instances/index.mjs +2 -0
- package/dist/esm/transactions/instances/index.mjs.map +1 -0
- package/dist/esm/transactions/instances/moduleId.d.mts +7 -0
- package/dist/esm/transactions/instances/moduleId.mjs +2 -0
- package/dist/esm/transactions/instances/moduleId.mjs.map +1 -0
- package/dist/esm/transactions/instances/multiAgentTransaction.d.mts +7 -0
- package/dist/esm/transactions/instances/multiAgentTransaction.mjs +2 -0
- package/dist/esm/transactions/instances/multiAgentTransaction.mjs.map +1 -0
- package/dist/esm/transactions/instances/rawTransaction.d.mts +7 -0
- package/dist/esm/transactions/instances/rawTransaction.mjs +2 -0
- package/dist/esm/transactions/instances/rawTransaction.mjs.map +1 -0
- package/dist/esm/transactions/instances/rotationProofChallenge.d.mts +58 -0
- package/dist/esm/transactions/instances/rotationProofChallenge.mjs +2 -0
- package/dist/esm/transactions/instances/rotationProofChallenge.mjs.map +1 -0
- package/dist/esm/transactions/instances/signedTransaction.d.mts +59 -0
- package/dist/esm/transactions/instances/signedTransaction.mjs +2 -0
- package/dist/esm/transactions/instances/signedTransaction.mjs.map +1 -0
- package/dist/esm/transactions/instances/simpleTransaction.d.mts +7 -0
- package/dist/esm/transactions/instances/simpleTransaction.mjs +2 -0
- package/dist/esm/transactions/instances/simpleTransaction.mjs.map +1 -0
- package/dist/esm/transactions/instances/transactionArgument.d.mts +7 -0
- package/dist/esm/transactions/instances/transactionArgument.mjs +2 -0
- package/dist/esm/transactions/instances/transactionArgument.mjs.map +1 -0
- package/dist/esm/transactions/instances/transactionPayload.d.mts +7 -0
- package/dist/esm/transactions/instances/transactionPayload.mjs +2 -0
- package/dist/esm/transactions/instances/transactionPayload.mjs.map +1 -0
- package/dist/esm/transactions/management/accountSequenceNumber.d.mts +123 -0
- package/dist/esm/transactions/management/accountSequenceNumber.mjs +2 -0
- package/dist/esm/transactions/management/accountSequenceNumber.mjs.map +1 -0
- package/dist/esm/transactions/management/asyncQueue.d.mts +77 -0
- package/dist/esm/transactions/management/asyncQueue.mjs +2 -0
- package/dist/esm/transactions/management/asyncQueue.mjs.map +1 -0
- package/dist/esm/transactions/management/index.d.mts +12 -0
- package/dist/esm/transactions/management/index.mjs +2 -0
- package/dist/esm/transactions/management/index.mjs.map +1 -0
- package/dist/esm/transactions/management/transactionWorker.d.mts +210 -0
- package/dist/esm/transactions/management/transactionWorker.mjs +2 -0
- package/dist/esm/transactions/management/transactionWorker.mjs.map +1 -0
- package/dist/esm/transactions/transactionBuilder/helpers.d.mts +159 -0
- package/dist/esm/transactions/transactionBuilder/helpers.mjs +2 -0
- package/dist/esm/transactions/transactionBuilder/helpers.mjs.map +1 -0
- package/dist/esm/transactions/transactionBuilder/index.d.mts +11 -0
- package/dist/esm/transactions/transactionBuilder/index.mjs +2 -0
- package/dist/esm/transactions/transactionBuilder/index.mjs.map +1 -0
- package/dist/esm/transactions/transactionBuilder/remoteAbi.d.mts +104 -0
- package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +2 -0
- package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs.map +1 -0
- package/dist/esm/transactions/transactionBuilder/signingMessage.d.mts +62 -0
- package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +2 -0
- package/dist/esm/transactions/transactionBuilder/signingMessage.mjs.map +1 -0
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.d.mts +192 -0
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +2 -0
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs.map +1 -0
- package/dist/esm/transactions/typeTag/index.d.mts +7 -0
- package/dist/esm/transactions/typeTag/index.mjs +2 -0
- package/dist/esm/transactions/typeTag/index.mjs.map +1 -0
- package/dist/esm/transactions/typeTag/parser.d.mts +81 -0
- package/dist/esm/transactions/typeTag/parser.mjs +2 -0
- package/dist/esm/transactions/typeTag/parser.mjs.map +1 -0
- package/dist/esm/transactions/types.d.mts +7 -0
- package/dist/esm/transactions/types.mjs +2 -0
- package/dist/esm/transactions/types.mjs.map +1 -0
- package/dist/esm/types/abstraction.d.mts +15 -0
- package/dist/esm/types/abstraction.mjs +2 -0
- package/dist/esm/types/abstraction.mjs.map +1 -0
- package/dist/esm/types/generated/operations.d.mts +709 -0
- package/dist/esm/types/generated/operations.mjs +1 -0
- package/dist/esm/types/generated/operations.mjs.map +1 -0
- package/dist/esm/types/generated/queries.d.mts +66 -0
- package/dist/esm/types/generated/queries.mjs +2 -0
- package/dist/esm/types/generated/queries.mjs.map +1 -0
- package/dist/esm/types/generated/types.d.mts +9495 -0
- package/dist/esm/types/generated/types.mjs +2 -0
- package/dist/esm/types/generated/types.mjs.map +1 -0
- package/dist/esm/types/index.d.mts +7 -0
- package/dist/esm/types/index.mjs +2 -0
- package/dist/esm/types/index.mjs.map +1 -0
- package/dist/esm/types/indexer.d.mts +186 -0
- package/dist/esm/types/indexer.mjs +2 -0
- package/dist/esm/types/indexer.mjs.map +1 -0
- package/dist/esm/types/keyless.d.mts +102 -0
- package/dist/esm/types/keyless.mjs +1 -0
- package/dist/esm/types/keyless.mjs.map +1 -0
- package/dist/esm/types/types.d.mts +7 -0
- package/dist/esm/types/types.mjs +2 -0
- package/dist/esm/types/types.mjs.map +1 -0
- package/dist/esm/utils/apiEndpoints.d.mts +51 -0
- package/dist/esm/utils/apiEndpoints.mjs +2 -0
- package/dist/esm/utils/apiEndpoints.mjs.map +1 -0
- package/dist/esm/utils/const.d.mts +90 -0
- package/dist/esm/utils/const.mjs +2 -0
- package/dist/esm/utils/const.mjs.map +1 -0
- package/dist/esm/utils/helpers.d.mts +174 -0
- package/dist/esm/utils/helpers.mjs +2 -0
- package/dist/esm/utils/helpers.mjs.map +1 -0
- package/dist/esm/utils/index.d.mts +9 -0
- package/dist/esm/utils/index.mjs +2 -0
- package/dist/esm/utils/index.mjs.map +1 -0
- package/dist/esm/utils/memoize.d.mts +26 -0
- package/dist/esm/utils/memoize.mjs +2 -0
- package/dist/esm/utils/memoize.mjs.map +1 -0
- package/dist/esm/utils/normalizeBundle.d.mts +35 -0
- package/dist/esm/utils/normalizeBundle.mjs +2 -0
- package/dist/esm/utils/normalizeBundle.mjs.map +1 -0
- package/dist/esm/version.d.mts +8 -0
- package/dist/esm/version.mjs +2 -0
- package/dist/esm/version.mjs.map +1 -0
- package/package.json +98 -0
- package/src/account/AbstractKeylessAccount.ts +579 -0
- package/src/account/AbstractedAccount.ts +124 -0
- package/src/account/Account.ts +354 -0
- package/src/account/AccountUtils.ts +216 -0
- package/src/account/DerivableAbstractedAccount.ts +103 -0
- package/src/account/Ed25519Account.ts +210 -0
- package/src/account/EphemeralKeyPair.ts +222 -0
- package/src/account/FederatedKeylessAccount.ts +178 -0
- package/src/account/KeylessAccount.ts +179 -0
- package/src/account/MultiEd25519Account.ts +181 -0
- package/src/account/MultiKeyAccount.ts +296 -0
- package/src/account/SingleKeyAccount.ts +277 -0
- package/src/account/index.ts +12 -0
- package/src/account/utils.ts +16 -0
- package/src/api/account/abstraction.ts +239 -0
- package/src/api/account.ts +1128 -0
- package/src/api/ans.ts +550 -0
- package/src/api/coin.ts +83 -0
- package/src/api/digitalAsset.ts +1203 -0
- package/src/api/faucet.ts +94 -0
- package/src/api/fungibleAsset.ts +371 -0
- package/src/api/general.ts +351 -0
- package/src/api/index.ts +6 -0
- package/src/api/keyless.ts +227 -0
- package/src/api/movement.ts +171 -0
- package/src/api/movementConfig.ts +334 -0
- package/src/api/object.ts +90 -0
- package/src/api/staking.ts +161 -0
- package/src/api/table.ts +193 -0
- package/src/api/transaction.ts +784 -0
- package/src/api/transactionSubmission/build.ts +153 -0
- package/src/api/transactionSubmission/helpers.ts +112 -0
- package/src/api/transactionSubmission/management.ts +211 -0
- package/src/api/transactionSubmission/sign.ts +142 -0
- package/src/api/transactionSubmission/simulate.ts +192 -0
- package/src/api/transactionSubmission/submit.ts +156 -0
- package/src/api/utils.ts +48 -0
- package/src/bcs/consts.ts +28 -0
- package/src/bcs/deserializer.ts +550 -0
- package/src/bcs/index.ts +10 -0
- package/src/bcs/serializable/entryFunctionBytes.ts +92 -0
- package/src/bcs/serializable/fixedBytes.ts +107 -0
- package/src/bcs/serializable/movePrimitives.ts +564 -0
- package/src/bcs/serializable/moveStructs.ts +619 -0
- package/src/bcs/serializer.ts +641 -0
- package/src/cli/index.ts +2 -0
- package/src/cli/localNode.ts +169 -0
- package/src/cli/move.ts +474 -0
- package/src/client/core.ts +120 -0
- package/src/client/get.ts +262 -0
- package/src/client/index.ts +7 -0
- package/src/client/post.ts +245 -0
- package/src/core/account/index.ts +1 -0
- package/src/core/account/utils/address.ts +85 -0
- package/src/core/account/utils/index.ts +1 -0
- package/src/core/accountAddress.ts +524 -0
- package/src/core/authenticationKey.ts +157 -0
- package/src/core/common.ts +60 -0
- package/src/core/crypto/abstraction.ts +52 -0
- package/src/core/crypto/deserializationUtils.ts +106 -0
- package/src/core/crypto/ed25519.ts +493 -0
- package/src/core/crypto/ephemeral.ts +185 -0
- package/src/core/crypto/federatedKeyless.ts +169 -0
- package/src/core/crypto/hdKey.ts +136 -0
- package/src/core/crypto/index.ts +21 -0
- package/src/core/crypto/keyless.ts +1700 -0
- package/src/core/crypto/multiEd25519.ts +434 -0
- package/src/core/crypto/multiKey.ts +498 -0
- package/src/core/crypto/poseidon.ts +231 -0
- package/src/core/crypto/privateKey.ts +115 -0
- package/src/core/crypto/proof.ts +9 -0
- package/src/core/crypto/publicKey.ts +106 -0
- package/src/core/crypto/secp256k1.ts +451 -0
- package/src/core/crypto/secp256r1.ts +495 -0
- package/src/core/crypto/signature.ts +57 -0
- package/src/core/crypto/singleKey.ts +351 -0
- package/src/core/crypto/types.ts +9 -0
- package/src/core/crypto/utils.ts +63 -0
- package/src/core/hex.ts +241 -0
- package/src/core/index.ts +10 -0
- package/src/errors/index.ts +457 -0
- package/src/index.ts +14 -0
- package/src/internal/abstraction.ts +79 -0
- package/src/internal/account.ts +1484 -0
- package/src/internal/ans.ts +853 -0
- package/src/internal/coin.ts +49 -0
- package/src/internal/digitalAsset.ts +1291 -0
- package/src/internal/faucet.ts +71 -0
- package/src/internal/fungibleAsset.ts +233 -0
- package/src/internal/general.ts +161 -0
- package/src/internal/keyless.ts +297 -0
- package/src/internal/object.ts +68 -0
- package/src/internal/queries/TokenActivitiesFieldsFragment.graphql +17 -0
- package/src/internal/queries/ansTokenFragment.graphql +11 -0
- package/src/internal/queries/currentTokenOwnershipFieldsFragment.graphql +46 -0
- package/src/internal/queries/getAccountAddressesForAuthKey.graphql +8 -0
- package/src/internal/queries/getAccountCoinCount.graphql +7 -0
- package/src/internal/queries/getAccountCoinsData.graphql +32 -0
- package/src/internal/queries/getAccountCollectionsWithOwnedTokens.graphql +33 -0
- package/src/internal/queries/getAccountOwnedTokens.graphql +11 -0
- package/src/internal/queries/getAccountOwnedTokensByTokenData.graphql +11 -0
- package/src/internal/queries/getAccountOwnedTokensFromCollectionAddress.graphql +11 -0
- package/src/internal/queries/getAccountTokensCount.graphql +7 -0
- package/src/internal/queries/getAccountTransactionsCount.graphql +7 -0
- package/src/internal/queries/getAuthKeysForPublicKey.graphql +11 -0
- package/src/internal/queries/getChainTopUserTransactions.graphql +5 -0
- package/src/internal/queries/getCollectionData.graphql +29 -0
- package/src/internal/queries/getCurrentFungibleAssetBalances.graphql +17 -0
- package/src/internal/queries/getDelegatedStakingActivities.graphql +12 -0
- package/src/internal/queries/getEvents.graphql +13 -0
- package/src/internal/queries/getFungibleAssetActivities.graphql +20 -0
- package/src/internal/queries/getFungibleAssetMetadata.graphql +18 -0
- package/src/internal/queries/getNames.graphql +11 -0
- package/src/internal/queries/getNumberOfDelegatorsQuery.graphql +9 -0
- package/src/internal/queries/getObjectData.graphql +16 -0
- package/src/internal/queries/getProcessorStatus.graphql +7 -0
- package/src/internal/queries/getTableItemsData.graphql +15 -0
- package/src/internal/queries/getTableItemsMetadata.graphql +12 -0
- package/src/internal/queries/getTokenActivity.graphql +11 -0
- package/src/internal/queries/getTokenCurrentOwner.graphql +11 -0
- package/src/internal/queries/getTokenData.graphql +39 -0
- package/src/internal/staking.ts +96 -0
- package/src/internal/table.ts +117 -0
- package/src/internal/transaction.ts +503 -0
- package/src/internal/transactionSubmission.ts +454 -0
- package/src/internal/utils/index.ts +4 -0
- package/src/internal/utils/utils.ts +86 -0
- package/src/internal/view.ts +61 -0
- package/src/transactions/authenticator/account.ts +405 -0
- package/src/transactions/authenticator/index.ts +6 -0
- package/src/transactions/authenticator/transaction.ts +288 -0
- package/src/transactions/index.ts +10 -0
- package/src/transactions/instances/chainId.ts +53 -0
- package/src/transactions/instances/identifier.ts +54 -0
- package/src/transactions/instances/index.ts +14 -0
- package/src/transactions/instances/moduleId.ts +77 -0
- package/src/transactions/instances/multiAgentTransaction.ts +92 -0
- package/src/transactions/instances/rawTransaction.ts +256 -0
- package/src/transactions/instances/rotationProofChallenge.ts +86 -0
- package/src/transactions/instances/signedTransaction.ts +73 -0
- package/src/transactions/instances/simpleTransaction.ts +83 -0
- package/src/transactions/instances/transactionArgument.ts +79 -0
- package/src/transactions/instances/transactionPayload.ts +676 -0
- package/src/transactions/management/accountSequenceNumber.ts +226 -0
- package/src/transactions/management/asyncQueue.ts +126 -0
- package/src/transactions/management/index.ts +2 -0
- package/src/transactions/management/transactionWorker.ts +396 -0
- package/src/transactions/transactionBuilder/helpers.ts +319 -0
- package/src/transactions/transactionBuilder/index.ts +8 -0
- package/src/transactions/transactionBuilder/remoteAbi.ts +655 -0
- package/src/transactions/transactionBuilder/signingMessage.ts +111 -0
- package/src/transactions/transactionBuilder/transactionBuilder.ts +863 -0
- package/src/transactions/typeTag/index.ts +926 -0
- package/src/transactions/typeTag/parser.ts +434 -0
- package/src/transactions/types.ts +518 -0
- package/src/types/abstraction.ts +14 -0
- package/src/types/codegen.yaml +33 -0
- package/src/types/generated/operations.ts +738 -0
- package/src/types/generated/queries.ts +926 -0
- package/src/types/generated/types.ts +10421 -0
- package/src/types/index.ts +2 -0
- package/src/types/indexer.ts +240 -0
- package/src/types/keyless.ts +94 -0
- package/src/types/types.ts +1713 -0
- package/src/utils/apiEndpoints.ts +107 -0
- package/src/utils/const.ts +100 -0
- package/src/utils/helpers.ts +287 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/memoize.ts +76 -0
- package/src/utils/normalizeBundle.ts +34 -0
- package/src/version.ts +9 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import type { MovementConfig } from "../api";
|
|
2
|
+
import { AccountAddress, AccountAddressInput } from "../core/accountAddress";
|
|
3
|
+
import { Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature, Signature } from "../core/crypto";
|
|
4
|
+
import { AccountAuthenticatorEd25519 } from "../transactions/authenticator/account";
|
|
5
|
+
import { generateSigningMessageForTransaction } from "../transactions/transactionBuilder/signingMessage";
|
|
6
|
+
import { AnyRawTransaction } from "../transactions/types";
|
|
7
|
+
import { HexInput, SigningScheme } from "../types";
|
|
8
|
+
import type { Account } from "./Account";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Arguments required to create an instance of an Ed25519 signer.
|
|
12
|
+
*
|
|
13
|
+
* @param privateKey - The private key used for signing.
|
|
14
|
+
* @param address - Optional account address associated with the signer.
|
|
15
|
+
* @group Implementation
|
|
16
|
+
* @category Account (On-Chain Model)
|
|
17
|
+
*/
|
|
18
|
+
export interface Ed25519SignerConstructorArgs {
|
|
19
|
+
privateKey: Ed25519PrivateKey;
|
|
20
|
+
address?: AccountAddressInput;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Arguments for creating an Ed25519 signer from a derivation path.
|
|
25
|
+
*
|
|
26
|
+
* @param path - The derivation path for the Ed25519 key.
|
|
27
|
+
* @param mnemonic - The mnemonic phrase used to generate the key.
|
|
28
|
+
* @group Implementation
|
|
29
|
+
* @category Account (On-Chain Model)
|
|
30
|
+
*/
|
|
31
|
+
export interface Ed25519SignerFromDerivationPathArgs {
|
|
32
|
+
path: string;
|
|
33
|
+
mnemonic: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Arguments required to verify an Ed25519 signature against a given message.
|
|
38
|
+
*
|
|
39
|
+
* @param message - The message to be verified, represented in hexadecimal format.
|
|
40
|
+
* @param signature - The Ed25519 signature to validate.
|
|
41
|
+
* @group Implementation
|
|
42
|
+
* @category Account (On-Chain Model)
|
|
43
|
+
*/
|
|
44
|
+
export interface VerifyEd25519SignatureArgs {
|
|
45
|
+
message: HexInput;
|
|
46
|
+
signature: Ed25519Signature;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Represents an Ed25519 account that provides signing capabilities through an Ed25519 private key.
|
|
51
|
+
* This class allows for the creation of accounts, signing messages and transactions, and verifying signatures.
|
|
52
|
+
*
|
|
53
|
+
* Note: Generating an instance of this class does not create the account on-chain.
|
|
54
|
+
* @group Implementation
|
|
55
|
+
* @category Account (On-Chain Model)
|
|
56
|
+
*/
|
|
57
|
+
export class Ed25519Account implements Account {
|
|
58
|
+
/**
|
|
59
|
+
* Private key associated with the account
|
|
60
|
+
* @group Implementation
|
|
61
|
+
* @category Account (On-Chain Model)
|
|
62
|
+
*/
|
|
63
|
+
readonly privateKey: Ed25519PrivateKey;
|
|
64
|
+
|
|
65
|
+
readonly publicKey: Ed25519PublicKey;
|
|
66
|
+
|
|
67
|
+
readonly accountAddress: AccountAddress;
|
|
68
|
+
|
|
69
|
+
readonly signingScheme = SigningScheme.Ed25519;
|
|
70
|
+
|
|
71
|
+
// region Constructors
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Creates an instance of the Ed25519Signer with the specified parameters.
|
|
75
|
+
* This constructor initializes the private key, public key, and account address for the signer.
|
|
76
|
+
*
|
|
77
|
+
* @param args - The constructor arguments for the Ed25519Signer.
|
|
78
|
+
* @param args.privateKey - The private key used for signing.
|
|
79
|
+
* @param args.address - The optional account address; if not provided, it will derive the address from the public key.
|
|
80
|
+
* @group Implementation
|
|
81
|
+
* @category Account (On-Chain Model)
|
|
82
|
+
*/
|
|
83
|
+
constructor(args: Ed25519SignerConstructorArgs) {
|
|
84
|
+
const { privateKey, address } = args;
|
|
85
|
+
this.privateKey = privateKey;
|
|
86
|
+
this.publicKey = privateKey.publicKey();
|
|
87
|
+
this.accountAddress = address ? AccountAddress.from(address) : this.publicKey.authKey().derivedAddress();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Generates a new Ed25519 account using a randomly generated private key.
|
|
92
|
+
* This function is useful for creating a signer that can be used for cryptographic operations.
|
|
93
|
+
*
|
|
94
|
+
* @returns {Ed25519Account} The newly generated Ed25519 account.
|
|
95
|
+
* @group Implementation
|
|
96
|
+
* @category Account (On-Chain Model)
|
|
97
|
+
*/
|
|
98
|
+
static generate(): Ed25519Account {
|
|
99
|
+
const privateKey = Ed25519PrivateKey.generate();
|
|
100
|
+
return new Ed25519Account({ privateKey });
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Derives an Ed25519 account using a specified BIP44 path and mnemonic seed phrase.
|
|
105
|
+
*
|
|
106
|
+
* @param args - The arguments for deriving the account.
|
|
107
|
+
* @param args.path - The BIP44 derive hardened path, e.g., m/44'/637'/0'/0'/0'.
|
|
108
|
+
* Detailed description: {@link https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki}
|
|
109
|
+
* @param args.mnemonic - The mnemonic seed phrase of the account.
|
|
110
|
+
* @group Implementation
|
|
111
|
+
* @category Account (On-Chain Model)
|
|
112
|
+
*/
|
|
113
|
+
static fromDerivationPath(args: Ed25519SignerFromDerivationPathArgs) {
|
|
114
|
+
const { path, mnemonic } = args;
|
|
115
|
+
const privateKey = Ed25519PrivateKey.fromDerivationPath(path, mnemonic);
|
|
116
|
+
return new Ed25519Account({ privateKey });
|
|
117
|
+
}
|
|
118
|
+
// endregion
|
|
119
|
+
|
|
120
|
+
// region Account
|
|
121
|
+
/**
|
|
122
|
+
* Verify the given message and signature with the public key.
|
|
123
|
+
*
|
|
124
|
+
* @param args - The arguments for verifying the signature.
|
|
125
|
+
* @param args.message - Raw message data in HexInput format.
|
|
126
|
+
* @param args.signature - Signed message signature.
|
|
127
|
+
* @returns A boolean indicating whether the signature is valid.
|
|
128
|
+
* @group Implementation
|
|
129
|
+
* @category Account (On-Chain Model)
|
|
130
|
+
*/
|
|
131
|
+
verifySignature(args: VerifyEd25519SignatureArgs): boolean {
|
|
132
|
+
return this.publicKey.verifySignature(args);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Verify the given message and signature with the public key.
|
|
137
|
+
*
|
|
138
|
+
* Ed25519 signatures do not depend on chain state, so this function is equivalent to the synchronous verifySignature method.
|
|
139
|
+
*
|
|
140
|
+
* @param args - The arguments for verifying the signature.
|
|
141
|
+
* @param args.movementConfig - The configuration object for connecting to the Movement network
|
|
142
|
+
* @param args.message - Raw message data in HexInput format.
|
|
143
|
+
* @param args.signature - Signed message signature.
|
|
144
|
+
* @returns A boolean indicating whether the signature is valid.
|
|
145
|
+
* @group Implementation
|
|
146
|
+
* @category Account (On-Chain Model)
|
|
147
|
+
*/
|
|
148
|
+
async verifySignatureAsync(args: {
|
|
149
|
+
movementConfig: MovementConfig;
|
|
150
|
+
message: HexInput;
|
|
151
|
+
signature: Signature;
|
|
152
|
+
}): Promise<boolean> {
|
|
153
|
+
return this.publicKey.verifySignatureAsync({
|
|
154
|
+
...args,
|
|
155
|
+
signature: args.signature,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Sign a message using the account's Ed25519 private key.
|
|
161
|
+
* This function returns an AccountAuthenticator containing the signature along with the account's public key.
|
|
162
|
+
*
|
|
163
|
+
* @param message - The signing message, represented as hexadecimal input.
|
|
164
|
+
* @returns An AccountAuthenticator containing the signature and the account's public key.
|
|
165
|
+
* @group Implementation
|
|
166
|
+
* @category Account (On-Chain Model)
|
|
167
|
+
*/
|
|
168
|
+
signWithAuthenticator(message: HexInput): AccountAuthenticatorEd25519 {
|
|
169
|
+
return new AccountAuthenticatorEd25519(this.publicKey, this.privateKey.sign(message));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Sign a transaction using the account's Ed25519 private key.
|
|
174
|
+
* This function returns an AccountAuthenticator that contains the signature of the transaction along with the account's public key.
|
|
175
|
+
*
|
|
176
|
+
* @param transaction - The raw transaction to be signed.
|
|
177
|
+
* @returns An AccountAuthenticator containing the signature and the public key.
|
|
178
|
+
* @group Implementation
|
|
179
|
+
* @category Account (On-Chain Model)
|
|
180
|
+
*/
|
|
181
|
+
signTransactionWithAuthenticator(transaction: AnyRawTransaction): AccountAuthenticatorEd25519 {
|
|
182
|
+
return new AccountAuthenticatorEd25519(this.publicKey, this.signTransaction(transaction));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Sign the given message using the account's Ed25519 private key.
|
|
187
|
+
* @param message - The message to be signed in HexInput format.
|
|
188
|
+
* @returns Signature - The resulting signature of the signed message.
|
|
189
|
+
* @group Implementation
|
|
190
|
+
* @category Account (On-Chain Model)
|
|
191
|
+
*/
|
|
192
|
+
sign(message: HexInput): Ed25519Signature {
|
|
193
|
+
return this.privateKey.sign(message);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Sign the given transaction using the available signing capabilities.
|
|
198
|
+
* This function helps ensure that the transaction is properly authenticated before submission.
|
|
199
|
+
*
|
|
200
|
+
* @param transaction - The transaction to be signed.
|
|
201
|
+
* @returns Signature - The resulting signature for the transaction.
|
|
202
|
+
* @group Implementation
|
|
203
|
+
* @category Account (On-Chain Model)
|
|
204
|
+
*/
|
|
205
|
+
signTransaction(transaction: AnyRawTransaction): Ed25519Signature {
|
|
206
|
+
return this.sign(generateSigningMessageForTransaction(transaction));
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// endregion
|
|
210
|
+
}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// Copyright © Move Industries
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { randomBytes } from "@noble/hashes/utils";
|
|
5
|
+
|
|
6
|
+
import { Deserializer, Serializable, Serializer } from "../bcs";
|
|
7
|
+
import {
|
|
8
|
+
bytesToBigIntLE,
|
|
9
|
+
Ed25519PrivateKey,
|
|
10
|
+
EphemeralPublicKey,
|
|
11
|
+
EphemeralSignature,
|
|
12
|
+
padAndPackBytesWithLen,
|
|
13
|
+
poseidonHash,
|
|
14
|
+
PrivateKey,
|
|
15
|
+
} from "../core/crypto";
|
|
16
|
+
import { Hex } from "../core/hex";
|
|
17
|
+
import { EphemeralPublicKeyVariant, HexInput } from "../types";
|
|
18
|
+
import { floorToWholeHour, nowInSeconds } from "../utils/helpers";
|
|
19
|
+
|
|
20
|
+
const TWO_WEEKS_IN_SECONDS = 1_209_600;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Represents an ephemeral key pair used for signing transactions via the Keyless authentication scheme.
|
|
24
|
+
* This key pair is temporary and includes an expiration time.
|
|
25
|
+
* For more details on how this class is used, refer to the documentation:
|
|
26
|
+
* https://movement.dev/guides/keyless-accounts/#1-present-the-user-with-a-sign-in-with-idp-button-on-the-ui
|
|
27
|
+
* @group Implementation
|
|
28
|
+
* @category Account (On-Chain Model)
|
|
29
|
+
*/
|
|
30
|
+
export class EphemeralKeyPair extends Serializable {
|
|
31
|
+
static readonly BLINDER_LENGTH: number = 31;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A byte array of length BLINDER_LENGTH used to obfuscate the public key from the IdP.
|
|
35
|
+
* Used in calculating the nonce passed to the IdP and as a secret witness in proof generation.
|
|
36
|
+
* @group Implementation
|
|
37
|
+
* @category Account (On-Chain Model)
|
|
38
|
+
*/
|
|
39
|
+
readonly blinder: Uint8Array;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* A timestamp in seconds indicating when the ephemeral key pair is expired. After expiry, a new
|
|
43
|
+
* EphemeralKeyPair must be generated and a new JWT needs to be created.
|
|
44
|
+
* @group Implementation
|
|
45
|
+
* @category Account (On-Chain Model)
|
|
46
|
+
*/
|
|
47
|
+
readonly expiryDateSecs: number;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The value passed to the IdP when the user authenticates. It consists of a hash of the
|
|
51
|
+
* ephemeral public key, expiry date, and blinder.
|
|
52
|
+
* @group Implementation
|
|
53
|
+
* @category Account (On-Chain Model)
|
|
54
|
+
*/
|
|
55
|
+
readonly nonce: string;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* A private key used to sign transactions. This private key is not tied to any account on the chain as it
|
|
59
|
+
* is ephemeral (not permanent) in nature.
|
|
60
|
+
* @group Implementation
|
|
61
|
+
* @category Account (On-Chain Model)
|
|
62
|
+
*/
|
|
63
|
+
private privateKey: PrivateKey;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* A public key used to verify transactions. This public key is not tied to any account on the chain as it
|
|
67
|
+
* is ephemeral (not permanent) in nature.
|
|
68
|
+
* @group Implementation
|
|
69
|
+
* @category Account (On-Chain Model)
|
|
70
|
+
*/
|
|
71
|
+
private publicKey: EphemeralPublicKey;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Creates an instance of the class with a specified private key, optional expiry date, and optional blinder.
|
|
75
|
+
* This constructor initializes the public key, sets the expiry date to a default value if not provided,
|
|
76
|
+
* generates a blinder if not supplied, and calculates the nonce based on the public key, expiry date, and blinder.
|
|
77
|
+
*
|
|
78
|
+
* @param args - The parameters for constructing the instance.
|
|
79
|
+
* @param args.privateKey - The private key used for creating the instance.
|
|
80
|
+
* @param args.expiryDateSecs - Optional expiry date in seconds from the current time. Defaults to two weeks from now.
|
|
81
|
+
* @param args.blinder - Optional blinder value. If not provided, a new blinder will be generated.
|
|
82
|
+
* @group Implementation
|
|
83
|
+
* @category Account (On-Chain Model)
|
|
84
|
+
*/
|
|
85
|
+
constructor(args: { privateKey: PrivateKey; expiryDateSecs?: number; blinder?: HexInput }) {
|
|
86
|
+
super();
|
|
87
|
+
const { privateKey, expiryDateSecs, blinder } = args;
|
|
88
|
+
this.privateKey = privateKey;
|
|
89
|
+
this.publicKey = new EphemeralPublicKey(privateKey.publicKey());
|
|
90
|
+
// By default, we set the expiry date to be two weeks in the future floored to the nearest hour
|
|
91
|
+
this.expiryDateSecs = expiryDateSecs || floorToWholeHour(nowInSeconds() + TWO_WEEKS_IN_SECONDS);
|
|
92
|
+
// Generate the blinder if not provided
|
|
93
|
+
this.blinder = blinder !== undefined ? Hex.fromHexInput(blinder).toUint8Array() : generateBlinder();
|
|
94
|
+
// Calculate the nonce
|
|
95
|
+
const fields = padAndPackBytesWithLen(this.publicKey.bcsToBytes(), 93);
|
|
96
|
+
fields.push(BigInt(this.expiryDateSecs));
|
|
97
|
+
fields.push(bytesToBigIntLE(this.blinder));
|
|
98
|
+
const nonceHash = poseidonHash(fields);
|
|
99
|
+
this.nonce = nonceHash.toString();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Returns the public key of the key pair.
|
|
104
|
+
* @return EphemeralPublicKey
|
|
105
|
+
* @group Implementation
|
|
106
|
+
* @category Account (On-Chain Model)
|
|
107
|
+
*/
|
|
108
|
+
getPublicKey(): EphemeralPublicKey {
|
|
109
|
+
return this.publicKey;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Checks if the current time has surpassed the expiry date of the key pair.
|
|
114
|
+
* @return boolean - Returns true if the key pair is expired, otherwise false.
|
|
115
|
+
* @group Implementation
|
|
116
|
+
* @category Account (On-Chain Model)
|
|
117
|
+
*/
|
|
118
|
+
isExpired(): boolean {
|
|
119
|
+
const currentTimeSecs: number = Math.floor(Date.now() / 1000);
|
|
120
|
+
return currentTimeSecs > this.expiryDateSecs;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Serializes the object's properties into a format suitable for transmission or storage.
|
|
125
|
+
* This function is essential for preparing the object data for serialization processes.
|
|
126
|
+
*
|
|
127
|
+
* @param serializer - The serializer instance used to serialize the object's properties.
|
|
128
|
+
* @group Implementation
|
|
129
|
+
* @category Account (On-Chain Model)
|
|
130
|
+
*/
|
|
131
|
+
serialize(serializer: Serializer): void {
|
|
132
|
+
serializer.serializeU32AsUleb128(this.publicKey.variant);
|
|
133
|
+
serializer.serializeBytes(this.privateKey.toUint8Array());
|
|
134
|
+
serializer.serializeU64(this.expiryDateSecs);
|
|
135
|
+
serializer.serializeFixedBytes(this.blinder);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Deserializes an ephemeral key pair from the provided deserializer.
|
|
140
|
+
* This function helps in reconstructing an ephemeral key pair, which is essential for cryptographic operations.
|
|
141
|
+
*
|
|
142
|
+
* @param deserializer - The deserializer instance used to read the serialized data.
|
|
143
|
+
* @group Implementation
|
|
144
|
+
* @category Account (On-Chain Model)
|
|
145
|
+
*/
|
|
146
|
+
static deserialize(deserializer: Deserializer): EphemeralKeyPair {
|
|
147
|
+
const variantIndex = deserializer.deserializeUleb128AsU32();
|
|
148
|
+
let privateKey: PrivateKey;
|
|
149
|
+
switch (variantIndex) {
|
|
150
|
+
case EphemeralPublicKeyVariant.Ed25519:
|
|
151
|
+
privateKey = Ed25519PrivateKey.deserialize(deserializer);
|
|
152
|
+
break;
|
|
153
|
+
default:
|
|
154
|
+
throw new Error(`Unknown variant index for EphemeralPublicKey: ${variantIndex}`);
|
|
155
|
+
}
|
|
156
|
+
const expiryDateSecs = deserializer.deserializeU64();
|
|
157
|
+
const blinder = deserializer.deserializeFixedBytes(31);
|
|
158
|
+
return new EphemeralKeyPair({ privateKey, expiryDateSecs: Number(expiryDateSecs), blinder });
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Deserialize a byte array into an EphemeralKeyPair object.
|
|
163
|
+
* This function allows you to reconstruct an EphemeralKeyPair from its serialized byte representation.
|
|
164
|
+
*
|
|
165
|
+
* @param bytes - The byte array representing the serialized EphemeralKeyPair.
|
|
166
|
+
* @group Implementation
|
|
167
|
+
* @category Account (On-Chain Model)
|
|
168
|
+
*/
|
|
169
|
+
static fromBytes(bytes: Uint8Array): EphemeralKeyPair {
|
|
170
|
+
return EphemeralKeyPair.deserialize(new Deserializer(bytes));
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Generates a new ephemeral key pair with an optional expiry date.
|
|
175
|
+
* This function allows you to create a temporary key pair for secure operations.
|
|
176
|
+
*
|
|
177
|
+
* @param args - Optional parameters for key pair generation.
|
|
178
|
+
* @param args.scheme - The type of key pair to use for the EphemeralKeyPair. Only Ed25519 is supported for now.
|
|
179
|
+
* @param args.expiryDateSecs - The date of expiry for the key pair in seconds.
|
|
180
|
+
* @returns An instance of EphemeralKeyPair containing the generated private key and expiry date.
|
|
181
|
+
* @group Implementation
|
|
182
|
+
* @category Account (On-Chain Model)
|
|
183
|
+
*/
|
|
184
|
+
static generate(args?: { scheme?: EphemeralPublicKeyVariant; expiryDateSecs?: number }): EphemeralKeyPair {
|
|
185
|
+
let privateKey: PrivateKey;
|
|
186
|
+
|
|
187
|
+
switch (args?.scheme) {
|
|
188
|
+
case EphemeralPublicKeyVariant.Ed25519:
|
|
189
|
+
default:
|
|
190
|
+
privateKey = Ed25519PrivateKey.generate();
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return new EphemeralKeyPair({ privateKey, expiryDateSecs: args?.expiryDateSecs });
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Sign the given data using the private key, returning an ephemeral signature.
|
|
198
|
+
* This function is essential for creating a secure signature that can be used for authentication or verification purposes.
|
|
199
|
+
*
|
|
200
|
+
* @param data - The data to be signed, provided in HexInput format.
|
|
201
|
+
* @returns EphemeralSignature - The resulting ephemeral signature.
|
|
202
|
+
* @throws Error - Throws an error if the EphemeralKeyPair has expired.
|
|
203
|
+
* @group Implementation
|
|
204
|
+
* @category Account (On-Chain Model)
|
|
205
|
+
*/
|
|
206
|
+
sign(data: HexInput): EphemeralSignature {
|
|
207
|
+
if (this.isExpired()) {
|
|
208
|
+
throw new Error("EphemeralKeyPair has expired");
|
|
209
|
+
}
|
|
210
|
+
return new EphemeralSignature(this.privateKey.sign(data));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Generates a random byte array of length EphemeralKeyPair.BLINDER_LENGTH.
|
|
216
|
+
* @returns Uint8Array A random byte array used for blinding.
|
|
217
|
+
* @group Implementation
|
|
218
|
+
* @category Account (On-Chain Model)
|
|
219
|
+
*/
|
|
220
|
+
function generateBlinder(): Uint8Array {
|
|
221
|
+
return randomBytes(EphemeralKeyPair.BLINDER_LENGTH);
|
|
222
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// Copyright © Move Industries
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { AccountAddress, AccountAddressInput } from "../core/accountAddress";
|
|
5
|
+
import { getIssAudAndUidVal, Groth16VerificationKey, ZeroKnowledgeSig } from "../core/crypto";
|
|
6
|
+
import { HexInput } from "../types";
|
|
7
|
+
|
|
8
|
+
import { Deserializer, Serializer } from "../bcs";
|
|
9
|
+
import { FederatedKeylessPublicKey } from "../core/crypto/federatedKeyless";
|
|
10
|
+
import { AbstractKeylessAccount, ProofFetchCallback } from "./AbstractKeylessAccount";
|
|
11
|
+
import { EphemeralKeyPair } from "./EphemeralKeyPair";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Account implementation for the FederatedKeyless authentication scheme.
|
|
15
|
+
*
|
|
16
|
+
* Used to represent a FederatedKeyless based account and sign transactions with it.
|
|
17
|
+
*
|
|
18
|
+
* Use `FederatedKeylessAccount.create()` to instantiate a KeylessAccount with a JSON Web Token (JWT), proof, EphemeralKeyPair and the
|
|
19
|
+
* address the JSON Web Key Set (JWKS) are installed that will be used to verify the JWT.
|
|
20
|
+
*
|
|
21
|
+
* When the proof expires or the JWT becomes invalid, the KeylessAccount must be instantiated again with a new JWT,
|
|
22
|
+
* EphemeralKeyPair, and corresponding proof.
|
|
23
|
+
* @group Implementation
|
|
24
|
+
* @category Account (On-Chain Model)
|
|
25
|
+
*/
|
|
26
|
+
export class FederatedKeylessAccount extends AbstractKeylessAccount {
|
|
27
|
+
/**
|
|
28
|
+
* The FederatedKeylessPublicKey associated with the account
|
|
29
|
+
* @group Implementation
|
|
30
|
+
* @category Account (On-Chain Model)
|
|
31
|
+
*/
|
|
32
|
+
readonly publicKey: FederatedKeylessPublicKey;
|
|
33
|
+
|
|
34
|
+
readonly audless: boolean;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Use the static generator `FederatedKeylessAccount.create(...)` instead.
|
|
38
|
+
* Creates a KeylessAccount instance using the provided parameters.
|
|
39
|
+
* This function allows you to set up a KeylessAccount with specific attributes such as address, proof, and JWT.
|
|
40
|
+
*
|
|
41
|
+
* @param args - The parameters for creating a KeylessAccount.
|
|
42
|
+
* @param args.address - Optional account address associated with the KeylessAccount.
|
|
43
|
+
* @param args.proof - A Zero Knowledge Signature or a promise that resolves to one.
|
|
44
|
+
* @param args.jwt - A JSON Web Token used for authentication.
|
|
45
|
+
* @param args.ephemeralKeyPair - The ephemeral key pair used in the account creation.
|
|
46
|
+
* @param args.jwkAddress - The address which stores the JSON Web Key Set (JWKS) used to verify the JWT.
|
|
47
|
+
* @param args.uidKey - Optional key for user identification, defaults to "sub".
|
|
48
|
+
* @param args.proofFetchCallback - Optional callback function for fetching proof.
|
|
49
|
+
*/
|
|
50
|
+
constructor(args: {
|
|
51
|
+
address?: AccountAddress;
|
|
52
|
+
ephemeralKeyPair: EphemeralKeyPair;
|
|
53
|
+
iss: string;
|
|
54
|
+
uidKey: string;
|
|
55
|
+
uidVal: string;
|
|
56
|
+
aud: string;
|
|
57
|
+
pepper: HexInput;
|
|
58
|
+
jwkAddress: AccountAddress;
|
|
59
|
+
proof: ZeroKnowledgeSig | Promise<ZeroKnowledgeSig>;
|
|
60
|
+
proofFetchCallback?: ProofFetchCallback;
|
|
61
|
+
jwt: string;
|
|
62
|
+
verificationKeyHash?: HexInput;
|
|
63
|
+
audless?: boolean;
|
|
64
|
+
}) {
|
|
65
|
+
const publicKey = FederatedKeylessPublicKey.create(args);
|
|
66
|
+
super({ publicKey, ...args });
|
|
67
|
+
this.publicKey = publicKey;
|
|
68
|
+
this.audless = args.audless ?? false;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Serializes the transaction data into a format suitable for transmission or storage.
|
|
73
|
+
* This function ensures that both the transaction bytes and the proof are properly serialized.
|
|
74
|
+
*
|
|
75
|
+
* @param serializer - The serializer instance used to convert the transaction data into bytes.
|
|
76
|
+
*/
|
|
77
|
+
serialize(serializer: Serializer): void {
|
|
78
|
+
super.serialize(serializer);
|
|
79
|
+
this.publicKey.jwkAddress.serialize(serializer);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Deserializes the provided deserializer to create a KeylessAccount instance.
|
|
84
|
+
* This function extracts necessary components such as the JWT, UID key, pepper, ephemeral key pair, and proof from the deserializer.
|
|
85
|
+
*
|
|
86
|
+
* @param deserializer - The deserializer instance used to retrieve the serialized data.
|
|
87
|
+
* @returns A KeylessAccount instance created from the deserialized data.
|
|
88
|
+
*/
|
|
89
|
+
static deserialize(deserializer: Deserializer): FederatedKeylessAccount {
|
|
90
|
+
const { address, proof, ephemeralKeyPair, jwt, uidKey, pepper, verificationKeyHash } =
|
|
91
|
+
AbstractKeylessAccount.partialDeserialize(deserializer);
|
|
92
|
+
const jwkAddress = AccountAddress.deserialize(deserializer);
|
|
93
|
+
const { iss, aud, uidVal } = getIssAudAndUidVal({ jwt, uidKey });
|
|
94
|
+
return new FederatedKeylessAccount({
|
|
95
|
+
address,
|
|
96
|
+
proof,
|
|
97
|
+
ephemeralKeyPair,
|
|
98
|
+
iss,
|
|
99
|
+
uidKey,
|
|
100
|
+
uidVal,
|
|
101
|
+
aud,
|
|
102
|
+
pepper,
|
|
103
|
+
jwt,
|
|
104
|
+
verificationKeyHash,
|
|
105
|
+
jwkAddress,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Deserialize bytes using this account's information.
|
|
111
|
+
*
|
|
112
|
+
* @param bytes The bytes being interpreted.
|
|
113
|
+
* @returns
|
|
114
|
+
*/
|
|
115
|
+
static fromBytes(bytes: HexInput): FederatedKeylessAccount {
|
|
116
|
+
return FederatedKeylessAccount.deserialize(Deserializer.fromHex(bytes));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Creates a KeylessAccount instance using the provided parameters.
|
|
121
|
+
* This function allows you to set up a KeylessAccount with specific attributes such as address, proof, and JWT.
|
|
122
|
+
* This is used instead of the KeylessAccount constructor.
|
|
123
|
+
*
|
|
124
|
+
* @param args - The parameters for creating a KeylessAccount.
|
|
125
|
+
* @param args.address - Optional account address associated with the KeylessAccount.
|
|
126
|
+
* @param args.proof - A Zero Knowledge Signature or a promise that resolves to one.
|
|
127
|
+
* @param args.jwt - A JSON Web Token used for authentication.
|
|
128
|
+
* @param args.ephemeralKeyPair - The ephemeral key pair used in the account creation.
|
|
129
|
+
* @param args.jwkAddress - The address which stores the JSON Web Key Set (JWKS) used to verify the JWT.
|
|
130
|
+
* @param args.uidKey - Optional key for user identification, defaults to "sub".
|
|
131
|
+
* @param args.proofFetchCallback - Optional callback function for fetching proof.
|
|
132
|
+
*/
|
|
133
|
+
static create(args: {
|
|
134
|
+
address?: AccountAddress;
|
|
135
|
+
proof: ZeroKnowledgeSig | Promise<ZeroKnowledgeSig>;
|
|
136
|
+
jwt: string;
|
|
137
|
+
ephemeralKeyPair: EphemeralKeyPair;
|
|
138
|
+
pepper: HexInput;
|
|
139
|
+
jwkAddress: AccountAddressInput;
|
|
140
|
+
uidKey?: string;
|
|
141
|
+
proofFetchCallback?: ProofFetchCallback;
|
|
142
|
+
verificationKey?: Groth16VerificationKey;
|
|
143
|
+
verificationKeyHash?: Uint8Array;
|
|
144
|
+
}): FederatedKeylessAccount {
|
|
145
|
+
const {
|
|
146
|
+
address,
|
|
147
|
+
proof,
|
|
148
|
+
jwt,
|
|
149
|
+
ephemeralKeyPair,
|
|
150
|
+
pepper,
|
|
151
|
+
jwkAddress,
|
|
152
|
+
uidKey = "sub",
|
|
153
|
+
proofFetchCallback,
|
|
154
|
+
verificationKey,
|
|
155
|
+
verificationKeyHash,
|
|
156
|
+
} = args;
|
|
157
|
+
|
|
158
|
+
if (verificationKeyHash && verificationKey) {
|
|
159
|
+
throw new Error("Cannot provide both verificationKey and verificationKeyHash");
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const { iss, aud, uidVal } = getIssAudAndUidVal({ jwt, uidKey });
|
|
163
|
+
return new FederatedKeylessAccount({
|
|
164
|
+
address,
|
|
165
|
+
proof,
|
|
166
|
+
ephemeralKeyPair,
|
|
167
|
+
iss,
|
|
168
|
+
uidKey,
|
|
169
|
+
uidVal,
|
|
170
|
+
aud,
|
|
171
|
+
pepper,
|
|
172
|
+
jwkAddress: AccountAddress.from(jwkAddress),
|
|
173
|
+
jwt,
|
|
174
|
+
proofFetchCallback,
|
|
175
|
+
verificationKeyHash: verificationKeyHash ?? (verificationKey ? verificationKey.hash() : undefined),
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|