@aptos-labs/ts-sdk 1.23.0 → 1.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/cli/index.d.ts +21 -1
- package/dist/common/cli/index.js +1 -1
- package/dist/common/cli/index.js.map +1 -1
- package/dist/common/index.d.ts +13 -8
- package/dist/common/index.js +7 -7
- package/dist/common/index.js.map +1 -1
- package/dist/esm/account/Account.mjs +1 -1
- package/dist/esm/account/Ed25519Account.mjs +1 -1
- package/dist/esm/account/EphemeralKeyPair.mjs +1 -1
- package/dist/esm/account/KeylessAccount.mjs +1 -1
- package/dist/esm/account/MultiKeyAccount.mjs +1 -1
- package/dist/esm/account/SingleKeyAccount.mjs +1 -1
- package/dist/esm/account/index.mjs +1 -1
- package/dist/esm/api/account.mjs +1 -1
- package/dist/esm/api/ans.mjs +1 -1
- package/dist/esm/api/aptos.mjs +1 -1
- package/dist/esm/api/coin.mjs +1 -1
- package/dist/esm/api/digitalAsset.mjs +1 -1
- package/dist/esm/api/event.mjs +1 -1
- package/dist/esm/api/faucet.mjs +1 -1
- package/dist/esm/api/fungibleAsset.mjs +1 -1
- package/dist/esm/api/general.mjs +1 -1
- package/dist/esm/api/index.mjs +1 -1
- package/dist/esm/api/keyless.mjs +1 -1
- package/dist/esm/api/object.mjs +1 -1
- package/dist/esm/api/staking.mjs +1 -1
- package/dist/esm/api/table.mjs +1 -1
- package/dist/esm/api/transaction.mjs +1 -1
- package/dist/esm/api/transactionSubmission/build.mjs +1 -1
- package/dist/esm/api/transactionSubmission/management.mjs +1 -1
- package/dist/esm/api/transactionSubmission/sign.mjs +1 -1
- package/dist/esm/api/transactionSubmission/simulate.mjs +1 -1
- package/dist/esm/api/transactionSubmission/submit.mjs +1 -1
- package/dist/esm/api/utils.mjs +1 -1
- package/dist/esm/bcs/index.mjs +1 -1
- package/dist/esm/{chunk-MA7TL5VN.mjs → chunk-2CXQK6CH.mjs} +2 -2
- package/dist/esm/{chunk-FE6CYBDF.mjs → chunk-34PNYV2Q.mjs} +2 -2
- package/dist/esm/{chunk-PF54PEHF.mjs → chunk-35L6ZK2X.mjs} +2 -2
- package/dist/esm/{chunk-RBIJJSGB.mjs → chunk-3GGG4R4C.mjs} +2 -2
- package/dist/esm/{chunk-4R7FL2G2.mjs → chunk-5JTED2JJ.mjs} +2 -2
- package/dist/esm/{chunk-4ZDOOSRJ.mjs → chunk-5OODQH42.mjs} +2 -2
- package/dist/esm/{chunk-T7MGIHWV.mjs → chunk-6R3ZHOGL.mjs} +2 -2
- package/dist/esm/{chunk-7F7AIMGB.mjs → chunk-76IW7XM5.mjs} +2 -2
- package/dist/esm/{chunk-IZ7OGJBY.mjs → chunk-7JWCIWJ3.mjs} +2 -2
- package/dist/esm/chunk-7MYVC7NY.mjs +2 -0
- package/dist/esm/chunk-7MYVC7NY.mjs.map +1 -0
- package/dist/esm/{chunk-K7OBPPSF.mjs → chunk-7VIABVKU.mjs} +2 -2
- package/dist/esm/{chunk-VA4HKHNV.mjs → chunk-7WPECE2S.mjs} +2 -2
- package/dist/esm/chunk-AZRXSMC2.mjs +2 -0
- package/dist/esm/{chunk-2M45ESQN.mjs.map → chunk-AZRXSMC2.mjs.map} +1 -1
- package/dist/esm/{chunk-B4ROOQE3.mjs → chunk-BP7JPCSW.mjs} +2 -2
- package/dist/esm/chunk-C4RTKCIA.mjs +2 -0
- package/dist/esm/chunk-C4RTKCIA.mjs.map +1 -0
- package/dist/esm/{chunk-NJ2IXXY2.mjs → chunk-CZ6UX5WZ.mjs} +2 -2
- package/dist/esm/{chunk-BQ7OOQRE.mjs → chunk-DPZO54DD.mjs} +2 -2
- package/dist/esm/{chunk-IR6L77JS.mjs → chunk-E67RGLPK.mjs} +2 -2
- package/dist/esm/{chunk-QLKTSSVC.mjs → chunk-EAWQ4SD3.mjs} +2 -2
- package/dist/esm/{chunk-ZE2TCKUL.mjs → chunk-EFJCV23R.mjs} +2 -2
- package/dist/esm/{chunk-Y5AY3QBY.mjs → chunk-EMVWSYK5.mjs} +2 -2
- package/dist/esm/{chunk-BDD6OBUV.mjs → chunk-EV5QBTUM.mjs} +2 -2
- package/dist/esm/{chunk-QUMSKIYX.mjs → chunk-F3RBTS5V.mjs} +2 -2
- package/dist/esm/{chunk-NC3KKAAK.mjs → chunk-FDFE5GY2.mjs} +2 -2
- package/dist/esm/{chunk-WPYVWZQS.mjs → chunk-G5MGSV7Y.mjs} +2 -2
- package/dist/esm/{chunk-X2QSDREG.mjs → chunk-GFUP6W3X.mjs} +2 -2
- package/dist/esm/{chunk-V3NKDUY5.mjs → chunk-GY7ARJNT.mjs} +2 -2
- package/dist/esm/{chunk-ME2PENQD.mjs → chunk-HKLJ6JKE.mjs} +2 -2
- package/dist/esm/{chunk-PIUICROW.mjs → chunk-HKMG3LZX.mjs} +2 -2
- package/dist/esm/{chunk-L7FA4ISG.mjs → chunk-HWX6AJJ2.mjs} +2 -2
- package/dist/esm/{chunk-ODYVU346.mjs → chunk-HXYBTLQT.mjs} +2 -2
- package/dist/esm/{chunk-DAEUQBVZ.mjs → chunk-IDYCJIHI.mjs} +2 -2
- package/dist/esm/{chunk-GP3RTNYN.mjs → chunk-INZXND6M.mjs} +2 -2
- package/dist/esm/{chunk-UY4EIN3P.mjs → chunk-ISUHNAU4.mjs} +2 -2
- package/dist/esm/{chunk-D6DCZULX.mjs → chunk-JBCUGFGG.mjs} +2 -2
- package/dist/esm/{chunk-243IMA3Y.mjs → chunk-JCQYD2ZQ.mjs} +2 -2
- package/dist/esm/{chunk-RZKLIZ2D.mjs → chunk-KLD5S3J2.mjs} +2 -2
- package/dist/esm/{chunk-2SGICMXB.mjs → chunk-LKA54RAP.mjs} +2 -2
- package/dist/esm/{chunk-IUAAMX5V.mjs → chunk-M74WIV66.mjs} +2 -2
- package/dist/esm/{chunk-J26STL4T.mjs → chunk-METR6A53.mjs} +2 -2
- package/dist/esm/{chunk-PDOQLTXA.mjs → chunk-MULJ2GLJ.mjs} +2 -2
- package/dist/esm/{chunk-4FMAPHUM.mjs → chunk-NAHOALKG.mjs} +2 -2
- package/dist/esm/{chunk-D6QSRB4J.mjs → chunk-NLJ5MHA5.mjs} +2 -2
- package/dist/esm/{chunk-ES5Z33UX.mjs → chunk-NSEC2KVP.mjs} +2 -2
- package/dist/esm/chunk-NWLLWPBG.mjs +2 -0
- package/dist/esm/chunk-NWLLWPBG.mjs.map +1 -0
- package/dist/esm/{chunk-J4KAYDPB.mjs → chunk-NWOMSL6K.mjs} +2 -2
- package/dist/esm/chunk-O4BBULNE.mjs +2 -0
- package/dist/esm/chunk-O4BBULNE.mjs.map +1 -0
- package/dist/esm/{chunk-YEISKUKC.mjs → chunk-OGOWKEMD.mjs} +2 -2
- package/dist/esm/{chunk-WSE653RS.mjs → chunk-OHRL766V.mjs} +2 -2
- package/dist/esm/{chunk-WSE653RS.mjs.map → chunk-OHRL766V.mjs.map} +1 -1
- package/dist/esm/chunk-P2TDGITN.mjs +2 -0
- package/dist/esm/chunk-P2TDGITN.mjs.map +1 -0
- package/dist/esm/{chunk-FAFN34ZH.mjs → chunk-PYLB6CAF.mjs} +2 -2
- package/dist/esm/chunk-Q7MD4V7H.mjs +2 -0
- package/dist/esm/chunk-Q7MD4V7H.mjs.map +1 -0
- package/dist/esm/{chunk-J6NLU6QX.mjs → chunk-QRN6BG2N.mjs} +2 -2
- package/dist/esm/{chunk-GBZOWPC6.mjs → chunk-SUJLWCRN.mjs} +2 -2
- package/dist/esm/{chunk-5OR2POPO.mjs → chunk-TDCS6MMG.mjs} +2 -2
- package/dist/esm/{chunk-F435LQUS.mjs → chunk-UEP4UQS5.mjs} +2 -2
- package/dist/esm/{chunk-3JFX3XDA.mjs → chunk-UNMUX5HS.mjs} +2 -2
- package/dist/esm/{chunk-EMFVGL2Y.mjs → chunk-UWPO7WWS.mjs} +2 -2
- package/dist/esm/{chunk-FRUEQTCC.mjs → chunk-V3OYNKY5.mjs} +2 -2
- package/dist/esm/{chunk-T7WBGP37.mjs → chunk-V75UHXGZ.mjs} +2 -2
- package/dist/esm/{chunk-OUAQKVIC.mjs → chunk-VL6JZUYX.mjs} +2 -2
- package/dist/esm/chunk-W7MX6GBC.mjs +2 -0
- package/dist/esm/chunk-W7MX6GBC.mjs.map +1 -0
- package/dist/esm/chunk-WLLWOD5T.mjs +2 -0
- package/dist/esm/chunk-WLLWOD5T.mjs.map +1 -0
- package/dist/esm/{chunk-MG3T24A3.mjs → chunk-WMBECPK5.mjs} +2 -2
- package/dist/esm/{chunk-ZMFVKUFD.mjs → chunk-WMHYIP3S.mjs} +2 -2
- package/dist/esm/{chunk-FZ3HMVKE.mjs → chunk-WRRQ7L5K.mjs} +2 -2
- package/dist/esm/{chunk-BQIT7TKM.mjs → chunk-XJI57J4Q.mjs} +2 -2
- package/dist/esm/{chunk-OBKVMO7I.mjs → chunk-XNSOEUH7.mjs} +2 -2
- package/dist/esm/{chunk-3CB53WTP.mjs → chunk-XSNOPUMC.mjs} +2 -2
- package/dist/esm/{chunk-BEXHZ5XT.mjs → chunk-XUT73RUR.mjs} +2 -2
- package/dist/esm/{chunk-ZHNCJSXO.mjs → chunk-YB5DCDJY.mjs} +2 -2
- package/dist/esm/{chunk-BFRFAX5I.mjs → chunk-YDZBU2DJ.mjs} +2 -2
- package/dist/esm/{chunk-T52HPGL5.mjs → chunk-YZWR7OV5.mjs} +2 -2
- package/dist/esm/cli/index.mjs +1 -1
- package/dist/esm/cli/localNode.d.mts +1 -1
- package/dist/esm/cli/localNode.mjs +1 -1
- package/dist/esm/cli/move.d.mts +20 -0
- package/dist/esm/cli/move.mjs +1 -1
- package/dist/esm/client/core.mjs +1 -1
- package/dist/esm/client/get.mjs +1 -1
- package/dist/esm/client/index.mjs +1 -1
- package/dist/esm/client/post.mjs +1 -1
- package/dist/esm/core/account/index.mjs +1 -1
- package/dist/esm/core/account/utils/address.mjs +1 -1
- package/dist/esm/core/account/utils/index.mjs +1 -1
- package/dist/esm/core/accountAddress.mjs +1 -1
- package/dist/esm/core/authenticationKey.mjs +1 -1
- package/dist/esm/core/crypto/ed25519.d.mts +10 -9
- package/dist/esm/core/crypto/ed25519.mjs +1 -1
- package/dist/esm/core/crypto/ephemeral.mjs +1 -1
- package/dist/esm/core/crypto/index.d.mts +1 -1
- package/dist/esm/core/crypto/index.mjs +1 -1
- package/dist/esm/core/crypto/keyless.d.mts +1 -0
- package/dist/esm/core/crypto/keyless.mjs +1 -1
- package/dist/esm/core/crypto/multiEd25519.mjs +1 -1
- package/dist/esm/core/crypto/multiKey.mjs +1 -1
- package/dist/esm/core/crypto/proof.mjs +1 -1
- package/dist/esm/core/crypto/publicKey.mjs +1 -1
- package/dist/esm/core/crypto/secp256k1.d.mts +1 -0
- package/dist/esm/core/crypto/secp256k1.mjs +1 -1
- package/dist/esm/core/crypto/signature.mjs +1 -1
- package/dist/esm/core/crypto/singleKey.d.mts +2 -0
- package/dist/esm/core/crypto/singleKey.mjs +1 -1
- package/dist/esm/core/index.d.mts +1 -1
- package/dist/esm/core/index.mjs +1 -1
- package/dist/esm/index.d.mts +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/internal/account.mjs +1 -1
- package/dist/esm/internal/ans.mjs +1 -1
- package/dist/esm/internal/coin.mjs +1 -1
- package/dist/esm/internal/digitalAsset.mjs +1 -1
- package/dist/esm/internal/event.mjs +1 -1
- package/dist/esm/internal/faucet.mjs +1 -1
- package/dist/esm/internal/fungibleAsset.mjs +1 -1
- package/dist/esm/internal/general.mjs +1 -1
- package/dist/esm/internal/keyless.mjs +1 -1
- package/dist/esm/internal/object.mjs +1 -1
- package/dist/esm/internal/staking.mjs +1 -1
- package/dist/esm/internal/table.mjs +1 -1
- package/dist/esm/internal/transaction.mjs +1 -1
- package/dist/esm/internal/transactionSubmission.mjs +1 -1
- package/dist/esm/internal/view.mjs +1 -1
- package/dist/esm/transactions/authenticator/account.mjs +1 -1
- package/dist/esm/transactions/authenticator/index.mjs +1 -1
- package/dist/esm/transactions/authenticator/transaction.mjs +1 -1
- package/dist/esm/transactions/index.mjs +1 -1
- package/dist/esm/transactions/instances/index.mjs +1 -1
- package/dist/esm/transactions/instances/moduleId.mjs +1 -1
- package/dist/esm/transactions/instances/multiAgentTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/rawTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/rotationProofChallenge.mjs +1 -1
- package/dist/esm/transactions/instances/signedTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/simpleTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/transactionPayload.mjs +1 -1
- package/dist/esm/transactions/management/accountSequenceNumber.mjs +1 -1
- package/dist/esm/transactions/management/index.mjs +1 -1
- package/dist/esm/transactions/management/transactionWorker.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/helpers.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/index.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +1 -1
- package/dist/esm/transactions/typeTag/index.mjs +1 -1
- package/dist/esm/transactions/typeTag/parser.mjs +1 -1
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/utils/normalizeBundle.mjs +1 -1
- package/dist/esm/version.d.mts +1 -1
- package/dist/esm/version.mjs +1 -1
- package/package.json +1 -1
- package/src/api/faucet.ts +6 -1
- package/src/cli/localNode.ts +12 -4
- package/src/cli/move.ts +36 -0
- package/src/core/accountAddress.ts +6 -6
- package/src/core/crypto/ed25519.ts +28 -28
- package/src/core/crypto/keyless.ts +9 -0
- package/src/core/crypto/secp256k1.ts +4 -3
- package/src/core/crypto/singleKey.ts +20 -1
- package/src/transactions/transactionBuilder/transactionBuilder.ts +17 -27
- package/src/version.ts +1 -1
- package/dist/esm/chunk-2M45ESQN.mjs +0 -2
- package/dist/esm/chunk-6WAXFWLH.mjs +0 -2
- package/dist/esm/chunk-6WAXFWLH.mjs.map +0 -1
- package/dist/esm/chunk-72QKG5N2.mjs +0 -2
- package/dist/esm/chunk-72QKG5N2.mjs.map +0 -1
- package/dist/esm/chunk-FNFQA7NS.mjs +0 -2
- package/dist/esm/chunk-FNFQA7NS.mjs.map +0 -1
- package/dist/esm/chunk-FSTRZMCK.mjs +0 -2
- package/dist/esm/chunk-FSTRZMCK.mjs.map +0 -1
- package/dist/esm/chunk-OID45FCB.mjs +0 -2
- package/dist/esm/chunk-OID45FCB.mjs.map +0 -1
- package/dist/esm/chunk-XWVMFCW3.mjs +0 -2
- package/dist/esm/chunk-XWVMFCW3.mjs.map +0 -1
- package/dist/esm/chunk-Y5VJSCVY.mjs +0 -2
- package/dist/esm/chunk-Y5VJSCVY.mjs.map +0 -1
- package/dist/esm/chunk-ZKCSQAGW.mjs +0 -2
- package/dist/esm/chunk-ZKCSQAGW.mjs.map +0 -1
- /package/dist/esm/{chunk-MA7TL5VN.mjs.map → chunk-2CXQK6CH.mjs.map} +0 -0
- /package/dist/esm/{chunk-FE6CYBDF.mjs.map → chunk-34PNYV2Q.mjs.map} +0 -0
- /package/dist/esm/{chunk-PF54PEHF.mjs.map → chunk-35L6ZK2X.mjs.map} +0 -0
- /package/dist/esm/{chunk-RBIJJSGB.mjs.map → chunk-3GGG4R4C.mjs.map} +0 -0
- /package/dist/esm/{chunk-4R7FL2G2.mjs.map → chunk-5JTED2JJ.mjs.map} +0 -0
- /package/dist/esm/{chunk-4ZDOOSRJ.mjs.map → chunk-5OODQH42.mjs.map} +0 -0
- /package/dist/esm/{chunk-T7MGIHWV.mjs.map → chunk-6R3ZHOGL.mjs.map} +0 -0
- /package/dist/esm/{chunk-7F7AIMGB.mjs.map → chunk-76IW7XM5.mjs.map} +0 -0
- /package/dist/esm/{chunk-IZ7OGJBY.mjs.map → chunk-7JWCIWJ3.mjs.map} +0 -0
- /package/dist/esm/{chunk-K7OBPPSF.mjs.map → chunk-7VIABVKU.mjs.map} +0 -0
- /package/dist/esm/{chunk-VA4HKHNV.mjs.map → chunk-7WPECE2S.mjs.map} +0 -0
- /package/dist/esm/{chunk-B4ROOQE3.mjs.map → chunk-BP7JPCSW.mjs.map} +0 -0
- /package/dist/esm/{chunk-NJ2IXXY2.mjs.map → chunk-CZ6UX5WZ.mjs.map} +0 -0
- /package/dist/esm/{chunk-BQ7OOQRE.mjs.map → chunk-DPZO54DD.mjs.map} +0 -0
- /package/dist/esm/{chunk-IR6L77JS.mjs.map → chunk-E67RGLPK.mjs.map} +0 -0
- /package/dist/esm/{chunk-QLKTSSVC.mjs.map → chunk-EAWQ4SD3.mjs.map} +0 -0
- /package/dist/esm/{chunk-ZE2TCKUL.mjs.map → chunk-EFJCV23R.mjs.map} +0 -0
- /package/dist/esm/{chunk-Y5AY3QBY.mjs.map → chunk-EMVWSYK5.mjs.map} +0 -0
- /package/dist/esm/{chunk-BDD6OBUV.mjs.map → chunk-EV5QBTUM.mjs.map} +0 -0
- /package/dist/esm/{chunk-QUMSKIYX.mjs.map → chunk-F3RBTS5V.mjs.map} +0 -0
- /package/dist/esm/{chunk-NC3KKAAK.mjs.map → chunk-FDFE5GY2.mjs.map} +0 -0
- /package/dist/esm/{chunk-WPYVWZQS.mjs.map → chunk-G5MGSV7Y.mjs.map} +0 -0
- /package/dist/esm/{chunk-X2QSDREG.mjs.map → chunk-GFUP6W3X.mjs.map} +0 -0
- /package/dist/esm/{chunk-V3NKDUY5.mjs.map → chunk-GY7ARJNT.mjs.map} +0 -0
- /package/dist/esm/{chunk-ME2PENQD.mjs.map → chunk-HKLJ6JKE.mjs.map} +0 -0
- /package/dist/esm/{chunk-PIUICROW.mjs.map → chunk-HKMG3LZX.mjs.map} +0 -0
- /package/dist/esm/{chunk-L7FA4ISG.mjs.map → chunk-HWX6AJJ2.mjs.map} +0 -0
- /package/dist/esm/{chunk-ODYVU346.mjs.map → chunk-HXYBTLQT.mjs.map} +0 -0
- /package/dist/esm/{chunk-DAEUQBVZ.mjs.map → chunk-IDYCJIHI.mjs.map} +0 -0
- /package/dist/esm/{chunk-GP3RTNYN.mjs.map → chunk-INZXND6M.mjs.map} +0 -0
- /package/dist/esm/{chunk-UY4EIN3P.mjs.map → chunk-ISUHNAU4.mjs.map} +0 -0
- /package/dist/esm/{chunk-D6DCZULX.mjs.map → chunk-JBCUGFGG.mjs.map} +0 -0
- /package/dist/esm/{chunk-243IMA3Y.mjs.map → chunk-JCQYD2ZQ.mjs.map} +0 -0
- /package/dist/esm/{chunk-RZKLIZ2D.mjs.map → chunk-KLD5S3J2.mjs.map} +0 -0
- /package/dist/esm/{chunk-2SGICMXB.mjs.map → chunk-LKA54RAP.mjs.map} +0 -0
- /package/dist/esm/{chunk-IUAAMX5V.mjs.map → chunk-M74WIV66.mjs.map} +0 -0
- /package/dist/esm/{chunk-J26STL4T.mjs.map → chunk-METR6A53.mjs.map} +0 -0
- /package/dist/esm/{chunk-PDOQLTXA.mjs.map → chunk-MULJ2GLJ.mjs.map} +0 -0
- /package/dist/esm/{chunk-4FMAPHUM.mjs.map → chunk-NAHOALKG.mjs.map} +0 -0
- /package/dist/esm/{chunk-D6QSRB4J.mjs.map → chunk-NLJ5MHA5.mjs.map} +0 -0
- /package/dist/esm/{chunk-ES5Z33UX.mjs.map → chunk-NSEC2KVP.mjs.map} +0 -0
- /package/dist/esm/{chunk-J4KAYDPB.mjs.map → chunk-NWOMSL6K.mjs.map} +0 -0
- /package/dist/esm/{chunk-YEISKUKC.mjs.map → chunk-OGOWKEMD.mjs.map} +0 -0
- /package/dist/esm/{chunk-FAFN34ZH.mjs.map → chunk-PYLB6CAF.mjs.map} +0 -0
- /package/dist/esm/{chunk-J6NLU6QX.mjs.map → chunk-QRN6BG2N.mjs.map} +0 -0
- /package/dist/esm/{chunk-GBZOWPC6.mjs.map → chunk-SUJLWCRN.mjs.map} +0 -0
- /package/dist/esm/{chunk-5OR2POPO.mjs.map → chunk-TDCS6MMG.mjs.map} +0 -0
- /package/dist/esm/{chunk-F435LQUS.mjs.map → chunk-UEP4UQS5.mjs.map} +0 -0
- /package/dist/esm/{chunk-3JFX3XDA.mjs.map → chunk-UNMUX5HS.mjs.map} +0 -0
- /package/dist/esm/{chunk-EMFVGL2Y.mjs.map → chunk-UWPO7WWS.mjs.map} +0 -0
- /package/dist/esm/{chunk-FRUEQTCC.mjs.map → chunk-V3OYNKY5.mjs.map} +0 -0
- /package/dist/esm/{chunk-T7WBGP37.mjs.map → chunk-V75UHXGZ.mjs.map} +0 -0
- /package/dist/esm/{chunk-OUAQKVIC.mjs.map → chunk-VL6JZUYX.mjs.map} +0 -0
- /package/dist/esm/{chunk-MG3T24A3.mjs.map → chunk-WMBECPK5.mjs.map} +0 -0
- /package/dist/esm/{chunk-ZMFVKUFD.mjs.map → chunk-WMHYIP3S.mjs.map} +0 -0
- /package/dist/esm/{chunk-FZ3HMVKE.mjs.map → chunk-WRRQ7L5K.mjs.map} +0 -0
- /package/dist/esm/{chunk-BQIT7TKM.mjs.map → chunk-XJI57J4Q.mjs.map} +0 -0
- /package/dist/esm/{chunk-OBKVMO7I.mjs.map → chunk-XNSOEUH7.mjs.map} +0 -0
- /package/dist/esm/{chunk-3CB53WTP.mjs.map → chunk-XSNOPUMC.mjs.map} +0 -0
- /package/dist/esm/{chunk-BEXHZ5XT.mjs.map → chunk-XUT73RUR.mjs.map} +0 -0
- /package/dist/esm/{chunk-ZHNCJSXO.mjs.map → chunk-YB5DCDJY.mjs.map} +0 -0
- /package/dist/esm/{chunk-BFRFAX5I.mjs.map → chunk-YDZBU2DJ.mjs.map} +0 -0
- /package/dist/esm/{chunk-T52HPGL5.mjs.map → chunk-YZWR7OV5.mjs.map} +0 -0
package/src/cli/localNode.ts
CHANGED
|
@@ -15,9 +15,17 @@ export class LocalNode {
|
|
|
15
15
|
* kills all the descendent processes
|
|
16
16
|
* of the node process, including the node process itself
|
|
17
17
|
*/
|
|
18
|
-
stop() {
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
async stop() {
|
|
19
|
+
await new Promise((resolve, reject) => {
|
|
20
|
+
if (!this.process?.pid) return;
|
|
21
|
+
kill(this.process.pid, (err) => {
|
|
22
|
+
if (err) {
|
|
23
|
+
reject(err);
|
|
24
|
+
} else {
|
|
25
|
+
resolve(true);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
});
|
|
21
29
|
}
|
|
22
30
|
|
|
23
31
|
/**
|
|
@@ -40,7 +48,7 @@ export class LocalNode {
|
|
|
40
48
|
*/
|
|
41
49
|
start() {
|
|
42
50
|
const cliCommand = "npx";
|
|
43
|
-
const cliArgs = ["aptos", "node", "run-
|
|
51
|
+
const cliArgs = ["aptos", "node", "run-localnet", "--force-restart", "--assume-yes", "--with-indexer-api"];
|
|
44
52
|
|
|
45
53
|
const currentPlatform = platform();
|
|
46
54
|
let childProcess;
|
package/src/cli/move.ts
CHANGED
|
@@ -200,6 +200,42 @@ export class Move {
|
|
|
200
200
|
return this.runCommand(cliArgs);
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Build a publication transaction payload and store it in a JSON output file
|
|
205
|
+
*
|
|
206
|
+
* @param args.packageDirectoryPath Path to a move package (the folder with a Move.toml file)
|
|
207
|
+
* @param args.outputFile Output file to write publication transaction to
|
|
208
|
+
* @param args.namedAddresses Named addresses for the move binary
|
|
209
|
+
* @example
|
|
210
|
+
* {
|
|
211
|
+
* alice:0x1234, bob:0x5678
|
|
212
|
+
* }
|
|
213
|
+
*
|
|
214
|
+
* @returns stdout
|
|
215
|
+
*/
|
|
216
|
+
async buildPublishPayload(args: {
|
|
217
|
+
packageDirectoryPath: string;
|
|
218
|
+
outputFile: string;
|
|
219
|
+
namedAddresses: Record<string, AccountAddress>;
|
|
220
|
+
}) {
|
|
221
|
+
const { outputFile, packageDirectoryPath, namedAddresses } = args;
|
|
222
|
+
const cliArgs = [
|
|
223
|
+
"aptos",
|
|
224
|
+
"move",
|
|
225
|
+
"build-publish-payload",
|
|
226
|
+
"--json-output-file",
|
|
227
|
+
outputFile,
|
|
228
|
+
"--package-dir",
|
|
229
|
+
packageDirectoryPath,
|
|
230
|
+
];
|
|
231
|
+
|
|
232
|
+
const addressesMap = this.parseNamedAddresses(namedAddresses);
|
|
233
|
+
|
|
234
|
+
cliArgs.push(...this.prepareNamedAddresses(addressesMap));
|
|
235
|
+
|
|
236
|
+
return this.runCommand(cliArgs);
|
|
237
|
+
}
|
|
238
|
+
|
|
203
239
|
/**
|
|
204
240
|
* Function to run a Move script, please run compile before running this
|
|
205
241
|
*
|
|
@@ -344,13 +344,13 @@ export class AccountAddress extends Serializable implements TransactionArgument
|
|
|
344
344
|
* @param input
|
|
345
345
|
*/
|
|
346
346
|
static from(input: AccountAddressInput): AccountAddress {
|
|
347
|
-
if (input
|
|
348
|
-
return input;
|
|
347
|
+
if (typeof input === "string") {
|
|
348
|
+
return AccountAddress.fromString(input);
|
|
349
349
|
}
|
|
350
350
|
if (input instanceof Uint8Array) {
|
|
351
351
|
return new AccountAddress(input);
|
|
352
352
|
}
|
|
353
|
-
return
|
|
353
|
+
return input;
|
|
354
354
|
}
|
|
355
355
|
|
|
356
356
|
/**
|
|
@@ -360,13 +360,13 @@ export class AccountAddress extends Serializable implements TransactionArgument
|
|
|
360
360
|
* @param input
|
|
361
361
|
*/
|
|
362
362
|
static fromStrict(input: AccountAddressInput): AccountAddress {
|
|
363
|
-
if (input
|
|
364
|
-
return input;
|
|
363
|
+
if (typeof input === "string") {
|
|
364
|
+
return AccountAddress.fromStringStrict(input);
|
|
365
365
|
}
|
|
366
366
|
if (input instanceof Uint8Array) {
|
|
367
367
|
return new AccountAddress(input);
|
|
368
368
|
}
|
|
369
|
-
return
|
|
369
|
+
return input;
|
|
370
370
|
}
|
|
371
371
|
|
|
372
372
|
// ===
|
|
@@ -9,7 +9,7 @@ import { Hex } from "../hex";
|
|
|
9
9
|
import { HexInput, SigningScheme as AuthenticationKeyScheme } from "../../types";
|
|
10
10
|
import { CKDPriv, deriveKey, HARDENED_OFFSET, isValidHardenedPath, mnemonicToSeed, splitPath } from "./hdKey";
|
|
11
11
|
import { PrivateKey } from "./privateKey";
|
|
12
|
-
import { AccountPublicKey, VerifySignatureArgs } from "./publicKey";
|
|
12
|
+
import { AccountPublicKey, PublicKey, VerifySignatureArgs } from "./publicKey";
|
|
13
13
|
import { Signature } from "./signature";
|
|
14
14
|
import { convertSigningMessage } from "./utils";
|
|
15
15
|
|
|
@@ -21,6 +21,26 @@ const L: number[] = [
|
|
|
21
21
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
|
|
22
22
|
];
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Checks if an ED25519 signature is non-canonical.
|
|
26
|
+
*
|
|
27
|
+
* Comes from Aptos Core
|
|
28
|
+
* https://github.com/aptos-labs/aptos-core/blob/main/crates/aptos-crypto/src/ed25519/ed25519_sigs.rs#L47-L85
|
|
29
|
+
*/
|
|
30
|
+
export function isCanonicalEd25519Signature(signature: Signature): boolean {
|
|
31
|
+
const s = signature.toUint8Array().slice(32);
|
|
32
|
+
for (let i = L.length - 1; i >= 0; i -= 1) {
|
|
33
|
+
if (s[i] < L[i]) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (s[i] > L[i]) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// As this stage S == L which implies a non-canonical S.
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
|
|
24
44
|
/**
|
|
25
45
|
* Represents the public key of an Ed25519 key pair.
|
|
26
46
|
*
|
|
@@ -66,18 +86,15 @@ export class Ed25519PublicKey extends AccountPublicKey {
|
|
|
66
86
|
*/
|
|
67
87
|
verifySignature(args: VerifySignatureArgs): boolean {
|
|
68
88
|
const { message, signature } = args;
|
|
69
|
-
|
|
89
|
+
// Verify malleability
|
|
90
|
+
if (!isCanonicalEd25519Signature(signature)) {
|
|
70
91
|
return false;
|
|
71
92
|
}
|
|
93
|
+
|
|
72
94
|
const messageToVerify = convertSigningMessage(message);
|
|
73
95
|
const messageBytes = Hex.fromHexInput(messageToVerify).toUint8Array();
|
|
74
96
|
const signatureBytes = signature.toUint8Array();
|
|
75
97
|
const publicKeyBytes = this.key.toUint8Array();
|
|
76
|
-
// Also verify malleability
|
|
77
|
-
if (!signature.isCanonicalSignature()) {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
98
|
return ed25519.verify(signatureBytes, messageBytes, publicKeyBytes);
|
|
82
99
|
}
|
|
83
100
|
|
|
@@ -118,6 +135,10 @@ export class Ed25519PublicKey extends AccountPublicKey {
|
|
|
118
135
|
static isPublicKey(publicKey: AccountPublicKey): publicKey is Ed25519PublicKey {
|
|
119
136
|
return publicKey instanceof Ed25519PublicKey;
|
|
120
137
|
}
|
|
138
|
+
|
|
139
|
+
static isInstance(publicKey: PublicKey): publicKey is Ed25519PublicKey {
|
|
140
|
+
return "key" in publicKey && (publicKey.key as any)?.data?.length === Ed25519PublicKey.LENGTH;
|
|
141
|
+
}
|
|
121
142
|
}
|
|
122
143
|
|
|
123
144
|
/**
|
|
@@ -325,26 +346,5 @@ export class Ed25519Signature extends Signature {
|
|
|
325
346
|
return new Ed25519Signature(bytes);
|
|
326
347
|
}
|
|
327
348
|
|
|
328
|
-
/**
|
|
329
|
-
* Checks if an ED25519 signature is non-canonical.
|
|
330
|
-
*
|
|
331
|
-
* Comes from Aptos Core
|
|
332
|
-
* https://github.com/aptos-labs/aptos-core/blob/main/crates/aptos-crypto/src/ed25519/ed25519_sigs.rs#L47-L85
|
|
333
|
-
*/
|
|
334
|
-
isCanonicalSignature(): boolean {
|
|
335
|
-
const s = this.toUint8Array().slice(32);
|
|
336
|
-
|
|
337
|
-
for (let i = s.length - 1; i >= 0; i -= 1) {
|
|
338
|
-
if (s[i] < L[i]) {
|
|
339
|
-
return true;
|
|
340
|
-
}
|
|
341
|
-
if (s[i] > L[i]) {
|
|
342
|
-
return false;
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
// As this stage S == L which implies a non-canonical S.
|
|
346
|
-
return false;
|
|
347
|
-
}
|
|
348
|
-
|
|
349
349
|
// endregion
|
|
350
350
|
}
|
|
@@ -166,6 +166,15 @@ export class KeylessPublicKey extends AccountPublicKey {
|
|
|
166
166
|
const uidVal = jwtPayload[uidKey];
|
|
167
167
|
return KeylessPublicKey.create({ iss, uidKey, uidVal, aud, pepper });
|
|
168
168
|
}
|
|
169
|
+
|
|
170
|
+
static isInstance(publicKey: PublicKey) {
|
|
171
|
+
return (
|
|
172
|
+
"iss" in publicKey &&
|
|
173
|
+
typeof publicKey.iss === "string" &&
|
|
174
|
+
"idCommitment" in publicKey &&
|
|
175
|
+
publicKey.idCommitment instanceof Uint8Array
|
|
176
|
+
);
|
|
177
|
+
}
|
|
169
178
|
}
|
|
170
179
|
|
|
171
180
|
function computeIdCommitment(args: { uidKey: string; uidVal: string; aud: string; pepper: HexInput }): Uint8Array {
|
|
@@ -48,9 +48,6 @@ export class Secp256k1PublicKey extends PublicKey {
|
|
|
48
48
|
*/
|
|
49
49
|
verifySignature(args: VerifySignatureArgs): boolean {
|
|
50
50
|
const { message, signature } = args;
|
|
51
|
-
if (!(signature instanceof Secp256k1Signature)) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
51
|
const messageToVerify = convertSigningMessage(message);
|
|
55
52
|
const messageBytes = Hex.fromHexInput(messageToVerify).toUint8Array();
|
|
56
53
|
const messageSha3Bytes = sha3_256(messageBytes);
|
|
@@ -84,6 +81,10 @@ export class Secp256k1PublicKey extends PublicKey {
|
|
|
84
81
|
static isPublicKey(publicKey: PublicKey): publicKey is Secp256k1PublicKey {
|
|
85
82
|
return publicKey instanceof Secp256k1PublicKey;
|
|
86
83
|
}
|
|
84
|
+
|
|
85
|
+
static isInstance(publicKey: PublicKey): publicKey is Secp256k1PublicKey {
|
|
86
|
+
return "key" in publicKey && (publicKey.key as any)?.data?.length === Secp256k1PublicKey.LENGTH;
|
|
87
|
+
}
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
/**
|
|
@@ -48,7 +48,7 @@ export class AnyPublicKey extends AccountPublicKey {
|
|
|
48
48
|
|
|
49
49
|
verifySignature(args: VerifySignatureArgs): boolean {
|
|
50
50
|
const { message, signature } = args;
|
|
51
|
-
if (!(signature
|
|
51
|
+
if (!AnySignature.isInstance(signature)) {
|
|
52
52
|
return false;
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -119,6 +119,10 @@ export class AnyPublicKey extends AccountPublicKey {
|
|
|
119
119
|
isSecp256k1PublicKey(): boolean {
|
|
120
120
|
return this.publicKey instanceof Secp256k1PublicKey;
|
|
121
121
|
}
|
|
122
|
+
|
|
123
|
+
static isInstance(publicKey: PublicKey): publicKey is AnyPublicKey {
|
|
124
|
+
return "publicKey" in publicKey && "variant" in publicKey;
|
|
125
|
+
}
|
|
122
126
|
}
|
|
123
127
|
|
|
124
128
|
/**
|
|
@@ -156,6 +160,12 @@ export class AnySignature extends Signature {
|
|
|
156
160
|
// region AccountSignature
|
|
157
161
|
|
|
158
162
|
toUint8Array() {
|
|
163
|
+
// TODO: keep this warning around for a bit, and eventually change this to return `this.signature.toUint8Array()`.
|
|
164
|
+
// eslint-disable-next-line no-console
|
|
165
|
+
console.warn(
|
|
166
|
+
"[Aptos SDK] Calls to AnySignature.toUint8Array() will soon return the underlying signature bytes. " +
|
|
167
|
+
"Use AnySignature.bcsToBytes() instead.",
|
|
168
|
+
);
|
|
159
169
|
return this.bcsToBytes();
|
|
160
170
|
}
|
|
161
171
|
|
|
@@ -188,4 +198,13 @@ export class AnySignature extends Signature {
|
|
|
188
198
|
}
|
|
189
199
|
|
|
190
200
|
// endregion
|
|
201
|
+
|
|
202
|
+
static isInstance(signature: Signature): signature is AnySignature {
|
|
203
|
+
return (
|
|
204
|
+
"signature" in signature &&
|
|
205
|
+
typeof signature.signature === "object" &&
|
|
206
|
+
signature.signature !== null &&
|
|
207
|
+
"toUint8Array" in signature.signature
|
|
208
|
+
);
|
|
209
|
+
}
|
|
191
210
|
}
|
|
@@ -9,14 +9,7 @@
|
|
|
9
9
|
import { sha3_256 as sha3Hash } from "@noble/hashes/sha3";
|
|
10
10
|
import { AptosConfig } from "../../api/aptosConfig";
|
|
11
11
|
import { AccountAddress, AccountAddressInput, Hex, PublicKey } from "../../core";
|
|
12
|
-
import {
|
|
13
|
-
AnyPublicKey,
|
|
14
|
-
AnySignature,
|
|
15
|
-
KeylessPublicKey,
|
|
16
|
-
KeylessSignature,
|
|
17
|
-
Secp256k1PublicKey,
|
|
18
|
-
Secp256k1Signature,
|
|
19
|
-
} from "../../core/crypto";
|
|
12
|
+
import { AnyPublicKey, AnySignature, KeylessPublicKey, Secp256k1PublicKey } from "../../core/crypto";
|
|
20
13
|
import { Ed25519PublicKey, Ed25519Signature } from "../../core/crypto/ed25519";
|
|
21
14
|
import { getInfo } from "../../internal/account";
|
|
22
15
|
import { getLedgerInfo } from "../../internal/general";
|
|
@@ -452,29 +445,26 @@ export function generateSignedTransactionForSimulation(args: InputSimulateTransa
|
|
|
452
445
|
}
|
|
453
446
|
|
|
454
447
|
export function getAuthenticatorForSimulation(publicKey: PublicKey) {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
448
|
+
// No need to for the signature to be matching in scheme. All that matters for simulations is that it's not valid
|
|
449
|
+
const invalidSignature = new Ed25519Signature(new Uint8Array(64));
|
|
450
|
+
|
|
451
|
+
if (Ed25519PublicKey.isInstance(publicKey)) {
|
|
452
|
+
return new AccountAuthenticatorEd25519(publicKey, invalidSignature);
|
|
458
453
|
}
|
|
459
454
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
if (publicKey.publicKey instanceof Ed25519PublicKey) {
|
|
463
|
-
return new AccountAuthenticatorSingleKey(publicKey, new AnySignature(new Ed25519Signature(new Uint8Array(64))));
|
|
464
|
-
}
|
|
465
|
-
if (publicKey.publicKey instanceof Secp256k1PublicKey) {
|
|
466
|
-
return new AccountAuthenticatorSingleKey(publicKey, new AnySignature(new Secp256k1Signature(new Uint8Array(64))));
|
|
467
|
-
}
|
|
468
|
-
if (publicKey.publicKey instanceof KeylessPublicKey) {
|
|
469
|
-
return new AccountAuthenticatorSingleKey(publicKey, new AnySignature(KeylessSignature.getSimulationSignature()));
|
|
470
|
-
}
|
|
455
|
+
if (AnyPublicKey.isInstance(publicKey)) {
|
|
456
|
+
return new AccountAuthenticatorSingleKey(publicKey, new AnySignature(invalidSignature));
|
|
471
457
|
}
|
|
472
458
|
|
|
473
|
-
//
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
459
|
+
// TODO: remove this, non-account public keys should never make it here
|
|
460
|
+
if (KeylessPublicKey.isInstance(publicKey) || Secp256k1PublicKey.isInstance(publicKey)) {
|
|
461
|
+
// eslint-disable-next-line no-console
|
|
462
|
+
console.warn("Expected AccountPublicKey, but got PublicKey. Please wrap your public key with AnyPublicKey.");
|
|
463
|
+
return new AccountAuthenticatorSingleKey(new AnyPublicKey(publicKey), new AnySignature(invalidSignature));
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// TODO add support for AnyMultiKey
|
|
467
|
+
throw new Error("Unsupported public key");
|
|
478
468
|
}
|
|
479
469
|
|
|
480
470
|
/**
|
package/src/version.ts
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as U}from"./chunk-MLDQ2TY2.mjs";import{a as d}from"./chunk-F7EMGK4M.mjs";import{b as E}from"./chunk-76OH2Z4Q.mjs";import{d as p,f as A,g as K,h as v,i as H,j as S}from"./chunk-LR65XHSF.mjs";import{a as h}from"./chunk-WPYVWZQS.mjs";import{a as f}from"./chunk-A63SMUOU.mjs";import{b as s}from"./chunk-BCUSI3N6.mjs";import{ed25519 as y}from"@noble/curves/ed25519";var P=[237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16],n=class n extends E{constructor(e){super();let t=s.fromHexInput(e);if(t.toUint8Array().length!==n.LENGTH)throw new Error(`PublicKey length should be ${n.LENGTH}`);this.key=t}verifySignature(e){let{message:t,signature:i}=e;if(!(i instanceof c))return!1;let o=d(t),u=s.fromHexInput(o).toUint8Array(),l=i.toUint8Array(),x=this.key.toUint8Array();return i.isCanonicalSignature()?y.verify(l,u,x):!1}authKey(){return h.fromSchemeAndBytes({scheme:0,input:this.toUint8Array()})}toUint8Array(){return this.key.toUint8Array()}serialize(e){e.serializeBytes(this.key.toUint8Array())}static deserialize(e){let t=e.deserializeBytes();return new n(t)}static isPublicKey(e){return e instanceof n}};n.LENGTH=32;var m=n,r=class r extends f{constructor(e){super();let t=s.fromHexInput(e);if(t.toUint8Array().length!==r.LENGTH)throw new Error(`PrivateKey length should be ${r.LENGTH}`);this.signingKey=t}static generate(){let e=y.utils.randomPrivateKey();return new r(e)}static fromDerivationPath(e,t){if(!A(e))throw new Error(`Invalid derivation path ${e}`);return r.fromDerivationPathInner(e,S(t))}static fromDerivationPathInner(e,t,i=p){let{key:o,chainCode:u}=K(r.SLIP_0010_SEED,t),l=H(e).map(g=>parseInt(g,10)),{key:x}=l.reduce((g,z)=>v(g,z+i),{key:o,chainCode:u});return new r(x)}publicKey(){let e=y.getPublicKey(this.signingKey.toUint8Array());return new m(e)}sign(e){let t=d(e),i=s.fromHexInput(t).toUint8Array(),o=y.sign(i,this.signingKey.toUint8Array());return new c(o)}toUint8Array(){return this.signingKey.toUint8Array()}toString(){return this.signingKey.toString()}serialize(e){e.serializeBytes(this.toUint8Array())}static deserialize(e){let t=e.deserializeBytes();return new r(t)}static isPrivateKey(e){return e instanceof r}};r.LENGTH=32,r.SLIP_0010_SEED="ed25519 seed";var b=r,a=class a extends U{constructor(e){super();let t=s.fromHexInput(e);if(t.toUint8Array().length!==a.LENGTH)throw new Error(`Signature length should be ${a.LENGTH}`);this.data=t}toUint8Array(){return this.data.toUint8Array()}serialize(e){e.serializeBytes(this.data.toUint8Array())}static deserialize(e){let t=e.deserializeBytes();return new a(t)}isCanonicalSignature(){let e=this.toUint8Array().slice(32);for(let t=e.length-1;t>=0;t-=1){if(e[t]<P[t])return!0;if(e[t]>P[t])return!1}return!1}};a.LENGTH=64;var c=a;export{m as a,b,c};
|
|
2
|
-
//# sourceMappingURL=chunk-6WAXFWLH.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/crypto/ed25519.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { ed25519 } from \"@noble/curves/ed25519\";\nimport { Deserializer } from \"../../bcs/deserializer\";\nimport { Serializable, Serializer } from \"../../bcs/serializer\";\nimport { AuthenticationKey } from \"../authenticationKey\";\nimport { Hex } from \"../hex\";\nimport { HexInput, SigningScheme as AuthenticationKeyScheme } from \"../../types\";\nimport { CKDPriv, deriveKey, HARDENED_OFFSET, isValidHardenedPath, mnemonicToSeed, splitPath } from \"./hdKey\";\nimport { PrivateKey } from \"./privateKey\";\nimport { AccountPublicKey, VerifySignatureArgs } from \"./publicKey\";\nimport { Signature } from \"./signature\";\nimport { convertSigningMessage } from \"./utils\";\n\n/**\n * L is the value that greater than or equal to will produce a non-canonical signature, and must be rejected\n */\nconst L: number[] = [\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\n];\n\n/**\n * Represents the public key of an Ed25519 key pair.\n *\n * Since [AIP-55](https://github.com/aptos-foundation/AIPs/pull/263) Aptos supports\n * `Legacy` and `Unified` authentication keys.\n *\n * Ed25519 scheme is represented in the SDK as `Legacy authentication key` and also\n * as `AnyPublicKey` that represents any `Unified authentication key`\n */\nexport class Ed25519PublicKey extends AccountPublicKey {\n /**\n * Length of an Ed25519 public key\n */\n static readonly LENGTH: number = 32;\n\n /**\n * Bytes of the public key\n * @private\n */\n private readonly key: Hex;\n\n /**\n * Create a new PublicKey instance from a Uint8Array or String.\n *\n * @param hexInput A HexInput (string or Uint8Array)\n */\n constructor(hexInput: HexInput) {\n super();\n\n const hex = Hex.fromHexInput(hexInput);\n if (hex.toUint8Array().length !== Ed25519PublicKey.LENGTH) {\n throw new Error(`PublicKey length should be ${Ed25519PublicKey.LENGTH}`);\n }\n this.key = hex;\n }\n\n // region AccountPublicKey\n\n /**\n * Verifies a signed data with a public key\n * @param args.message a signed message as a Hex string or Uint8Array\n * @param args.signature the signature of the message\n */\n verifySignature(args: VerifySignatureArgs): boolean {\n const { message, signature } = args;\n if (!(signature instanceof Ed25519Signature)) {\n return false;\n }\n const messageToVerify = convertSigningMessage(message);\n const messageBytes = Hex.fromHexInput(messageToVerify).toUint8Array();\n const signatureBytes = signature.toUint8Array();\n const publicKeyBytes = this.key.toUint8Array();\n // Also verify malleability\n if (!signature.isCanonicalSignature()) {\n return false;\n }\n\n return ed25519.verify(signatureBytes, messageBytes, publicKeyBytes);\n }\n\n authKey(): AuthenticationKey {\n return AuthenticationKey.fromSchemeAndBytes({\n scheme: AuthenticationKeyScheme.Ed25519,\n input: this.toUint8Array(),\n });\n }\n\n /**\n * Get the public key in bytes (Uint8Array).\n *\n * @returns Uint8Array representation of the public key\n */\n toUint8Array(): Uint8Array {\n return this.key.toUint8Array();\n }\n\n // endregion\n\n // region Serializable\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.key.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Ed25519PublicKey {\n const bytes = deserializer.deserializeBytes();\n return new Ed25519PublicKey(bytes);\n }\n\n // endregion\n\n /**\n * @deprecated use `instanceof Ed25519PublicKey` instead.\n */\n static isPublicKey(publicKey: AccountPublicKey): publicKey is Ed25519PublicKey {\n return publicKey instanceof Ed25519PublicKey;\n }\n}\n\n/**\n * Represents the private key of an Ed25519 key pair.\n */\nexport class Ed25519PrivateKey extends Serializable implements PrivateKey {\n /**\n * Length of an Ed25519 private key\n */\n static readonly LENGTH: number = 32;\n\n /**\n * The Ed25519 key seed to use for BIP-32 compatibility\n * See more {@link https://github.com/satoshilabs/slips/blob/master/slip-0010.md}\n */\n static readonly SLIP_0010_SEED = \"ed25519 seed\";\n\n /**\n * The Ed25519 signing key\n * @private\n */\n private readonly signingKey: Hex;\n\n // region Constructors\n\n /**\n * Create a new PrivateKey instance from a Uint8Array or String.\n *\n * @param hexInput HexInput (string or Uint8Array)\n */\n constructor(hexInput: HexInput) {\n super();\n\n const privateKeyHex = Hex.fromHexInput(hexInput);\n if (privateKeyHex.toUint8Array().length !== Ed25519PrivateKey.LENGTH) {\n throw new Error(`PrivateKey length should be ${Ed25519PrivateKey.LENGTH}`);\n }\n\n // Create keyPair from Private key in Uint8Array format\n this.signingKey = privateKeyHex;\n }\n\n /**\n * Generate a new random private key.\n *\n * @returns Ed25519PrivateKey\n */\n static generate(): Ed25519PrivateKey {\n const keyPair = ed25519.utils.randomPrivateKey();\n return new Ed25519PrivateKey(keyPair);\n }\n\n /**\n * Derives a private key from a mnemonic seed phrase.\n *\n * To derive multiple keys from the same phrase, change the path\n *\n * IMPORTANT: Ed25519 supports hardened derivation only (since it lacks a key homomorphism,\n * so non-hardened derivation cannot work)\n *\n * @param path the BIP44 path\n * @param mnemonics the mnemonic seed phrase\n */\n static fromDerivationPath(path: string, mnemonics: string): Ed25519PrivateKey {\n if (!isValidHardenedPath(path)) {\n throw new Error(`Invalid derivation path ${path}`);\n }\n return Ed25519PrivateKey.fromDerivationPathInner(path, mnemonicToSeed(mnemonics));\n }\n\n /**\n * A private inner function so we can separate from the main fromDerivationPath() method\n * to add tests to verify we create the keys correctly.\n *\n * @param path the BIP44 path\n * @param seed the seed phrase created by the mnemonics\n * @param offset the offset used for key derivation, defaults to 0x80000000\n * @returns\n */\n private static fromDerivationPathInner(path: string, seed: Uint8Array, offset = HARDENED_OFFSET): Ed25519PrivateKey {\n const { key, chainCode } = deriveKey(Ed25519PrivateKey.SLIP_0010_SEED, seed);\n\n const segments = splitPath(path).map((el) => parseInt(el, 10));\n\n // Derive the child key based on the path\n const { key: privateKey } = segments.reduce((parentKeys, segment) => CKDPriv(parentKeys, segment + offset), {\n key,\n chainCode,\n });\n return new Ed25519PrivateKey(privateKey);\n }\n\n // endregion\n\n // region PrivateKey\n\n /**\n * Derive the Ed25519PublicKey for this private key.\n *\n * @returns Ed25519PublicKey\n */\n publicKey(): Ed25519PublicKey {\n const bytes = ed25519.getPublicKey(this.signingKey.toUint8Array());\n return new Ed25519PublicKey(bytes);\n }\n\n /**\n * Sign the given message with the private key.\n *\n * @param message a message as a string or Uint8Array\n * @returns Signature\n */\n sign(message: HexInput): Ed25519Signature {\n const messageToSign = convertSigningMessage(message);\n const messageBytes = Hex.fromHexInput(messageToSign).toUint8Array();\n const signatureBytes = ed25519.sign(messageBytes, this.signingKey.toUint8Array());\n return new Ed25519Signature(signatureBytes);\n }\n\n /**\n * Get the private key in bytes (Uint8Array).\n *\n * @returns Uint8Array representation of the private key\n */\n toUint8Array(): Uint8Array {\n return this.signingKey.toUint8Array();\n }\n\n /**\n * Get the private key as a hex string with the 0x prefix.\n *\n * @returns string representation of the private key\n */\n toString(): string {\n return this.signingKey.toString();\n }\n\n // endregion\n\n // region Serializable\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Ed25519PrivateKey {\n const bytes = deserializer.deserializeBytes();\n return new Ed25519PrivateKey(bytes);\n }\n\n // endregion\n\n /**\n * @deprecated use `instanceof Ed25519PrivateKey` instead.\n */\n static isPrivateKey(privateKey: PrivateKey): privateKey is Ed25519PrivateKey {\n return privateKey instanceof Ed25519PrivateKey;\n }\n}\n\n/**\n * A signature of a message signed using an Ed25519 private key\n */\nexport class Ed25519Signature extends Signature {\n /**\n * Length of an Ed25519 signature\n */\n static readonly LENGTH = 64;\n\n /**\n * The signature bytes\n * @private\n */\n private readonly data: Hex;\n\n // region Constructors\n\n constructor(hexInput: HexInput) {\n super();\n const data = Hex.fromHexInput(hexInput);\n if (data.toUint8Array().length !== Ed25519Signature.LENGTH) {\n throw new Error(`Signature length should be ${Ed25519Signature.LENGTH}`);\n }\n this.data = data;\n }\n\n // endregion\n\n // region Signature\n\n toUint8Array(): Uint8Array {\n return this.data.toUint8Array();\n }\n\n // endregion\n\n // region Serializable\n\n serialize(serializer: Serializer): void {\n serializer.serializeBytes(this.data.toUint8Array());\n }\n\n static deserialize(deserializer: Deserializer): Ed25519Signature {\n const bytes = deserializer.deserializeBytes();\n return new Ed25519Signature(bytes);\n }\n\n /**\n * Checks if an ED25519 signature is non-canonical.\n *\n * Comes from Aptos Core\n * https://github.com/aptos-labs/aptos-core/blob/main/crates/aptos-crypto/src/ed25519/ed25519_sigs.rs#L47-L85\n */\n isCanonicalSignature(): boolean {\n const s = this.toUint8Array().slice(32);\n\n for (let i = s.length - 1; i >= 0; i -= 1) {\n if (s[i] < L[i]) {\n return true;\n }\n if (s[i] > L[i]) {\n return false;\n }\n }\n // As this stage S == L which implies a non-canonical S.\n return false;\n }\n\n // endregion\n}\n"],"mappings":"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","names":["ed25519","L","_Ed25519PublicKey","AccountPublicKey","hexInput","hex","Hex","args","message","signature","Ed25519Signature","messageToVerify","convertSigningMessage","messageBytes","signatureBytes","publicKeyBytes","ed25519","AuthenticationKey","serializer","deserializer","bytes","publicKey","Ed25519PublicKey","_Ed25519PrivateKey","Serializable","privateKeyHex","keyPair","path","mnemonics","isValidHardenedPath","mnemonicToSeed","seed","offset","HARDENED_OFFSET","key","chainCode","deriveKey","segments","splitPath","el","privateKey","parentKeys","segment","CKDPriv","messageToSign","Ed25519PrivateKey","_Ed25519Signature","Signature","data","s","i"]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as T,c as an,d as rn,e as N}from"./chunk-MG3T24A3.mjs";import{r as en,u as y}from"./chunk-FRUEQTCC.mjs";import{a as nn}from"./chunk-IR6L77JS.mjs";import{b as tn}from"./chunk-ES5Z33UX.mjs";import{a as Y}from"./chunk-VA4HKHNV.mjs";import{a as f}from"./chunk-NJ2IXXY2.mjs";import{a as J}from"./chunk-PDOQLTXA.mjs";import{b as D,d as R,e as $,f as M}from"./chunk-V3NKDUY5.mjs";import{a as Q}from"./chunk-UY4EIN3P.mjs";import{a as L,c as Z,d as j}from"./chunk-ZMFVKUFD.mjs";import{c as q,d as v,e as H,f as F,g as K,h as X,i as z}from"./chunk-GP3RTNYN.mjs";import{a as V}from"./chunk-BOYYQAB4.mjs";import{a as O,b as l,d as A}from"./chunk-RBIJJSGB.mjs";import{a as E,b as p}from"./chunk-FSTRZMCK.mjs";import{i as B,j as k}from"./chunk-OID45FCB.mjs";import{a as b,c as W}from"./chunk-XWVMFCW3.mjs";import{a as P,c as S}from"./chunk-6WAXFWLH.mjs";import{b as u}from"./chunk-WSE653RS.mjs";import{a as _}from"./chunk-AH44UPM4.mjs";import{a as C}from"./chunk-WV5AD4IE.mjs";import{b as I}from"./chunk-BCUSI3N6.mjs";import{g as x}from"./chunk-SCHZ67F3.mjs";import{b as U,c as G}from"./chunk-L36ZHC7J.mjs";import{sha3_256 as mn}from"@noble/hashes/sha3";async function Vn(n){if(en(n))return yn(n);let{moduleAddress:t,moduleName:e,functionName:i}=y(n.function),a=await sn({key:"entry-function",moduleAddress:t,moduleName:e,functionName:i,aptosConfig:n.aptosConfig,abi:n.abi,fetch:an});return An({...n,abi:a})}function An(n){let t=n.abi,{moduleAddress:e,moduleName:i,functionName:a}=y(n.function),r=T(n.typeArguments);if(r.length!==t.typeParameters.length)throw new Error(`Type argument count mismatch, expected ${t.typeParameters.length}, received ${r.length}`);let o=n.functionArguments.map((s,d)=>N(n.function,t,s,d,r));if(o.length!==t.parameters.length)throw new Error(`Too few arguments for '${e}::${i}::${a}', expected ${t.parameters.length} but got ${o.length}`);let c=F.build(`${e}::${i}`,a,r,o);if("multisigAddress"in n){let s=u.from(n.multisigAddress);return new H(new X(s,new z(c)))}return new v(c)}async function qn(n){let{moduleAddress:t,moduleName:e,functionName:i}=y(n.function),a=await sn({key:"view-function",moduleAddress:t,moduleName:e,functionName:i,aptosConfig:n.aptosConfig,abi:n.abi,fetch:rn});return fn({abi:a,...n})}function fn(n){let t=n.abi,{moduleAddress:e,moduleName:i,functionName:a}=y(n.function),r=T(n.typeArguments);if(r.length!==t.typeParameters.length)throw new Error(`Type argument count mismatch, expected ${t.typeParameters.length}, received ${r.length}`);let o=n?.functionArguments?.map((c,s)=>N(n.function,t,c,s,r))??[];if(o.length!==t.parameters.length)throw new Error(`Too few arguments for '${e}::${i}::${a}', expected ${t.parameters.length} but got ${o.length}`);return F.build(`${e}::${i}`,a,r,o)}function yn(n){return new q(new K(I.fromHexInput(n.bytecode).toUint8Array(),T(n.typeArguments),n.functionArguments))}async function gn(n){let{aptosConfig:t,sender:e,payload:i,options:a,feePayerAddress:r}=n,o=async()=>x[t.network]?{chainId:x[t.network]}:{chainId:(await Y({aptosConfig:t})).chain_id},c=async()=>a?.gasUnitPrice?{gasEstimate:a.gasUnitPrice}:{gasEstimate:(await tn({aptosConfig:t})).gas_estimate},s=async()=>{let g=async()=>a?.accountSequenceNumber!==void 0?a.accountSequenceNumber:(await nn({aptosConfig:t,accountAddress:e})).sequence_number;if(r&&u.from(r).equals(u.ZERO))try{return await g()}catch{return 0}else return g()},[{chainId:d},{gasEstimate:m},h]=await Promise.all([o(),c(),s()]),{maxGasAmount:cn,gasUnitPrice:un,expireTimestamp:dn}={maxGasAmount:a?.maxGasAmount?BigInt(a.maxGasAmount):BigInt(2e5),gasUnitPrice:a?.gasUnitPrice??BigInt(m),expireTimestamp:a?.expireTimestamp??BigInt(Math.floor(Date.now()/1e3)+20)};return new L(u.from(e),BigInt(h),i,BigInt(cn),BigInt(un),BigInt(dn),new V(d))}async function vn(n){let{aptosConfig:t,sender:e,payload:i,options:a,feePayerAddress:r}=n,o=await gn({aptosConfig:t,sender:e,payload:i,options:a,feePayerAddress:r});if("secondarySignerAddresses"in n){let c=n.secondarySignerAddresses?.map(s=>u.from(s))??[];return new Q(o,c,n.feePayerAddress?u.from(n.feePayerAddress):void 0)}return new J(o,n.feePayerAddress?u.from(n.feePayerAddress):void 0)}function Hn(n){let{signerPublicKey:t,transaction:e,secondarySignersPublicKeys:i,feePayerPublicKey:a}=n,r=w(t);if(e.feePayerAddress){let c=new j(e.rawTransaction,e.secondarySignerAddresses??[],e.feePayerAddress),s=[];i&&(s=i.map(h=>w(h)));let d=w(a),m=new $(r,e.secondarySignerAddresses??[],s,{address:e.feePayerAddress,authenticator:d});return new f(c.raw_txn,m).bcsToBytes()}if(e.secondarySignerAddresses){let c=new Z(e.rawTransaction,e.secondarySignerAddresses),s=[];s=i.map(m=>w(m));let d=new R(r,e.secondarySignerAddresses,s);return new f(c.raw_txn,d).bcsToBytes()}let o;if(r instanceof l)o=new D(r.public_key,r.signature);else if(r instanceof A)o=new M(r);else throw new Error("Invalid public key");return new f(e.rawTransaction,o).bcsToBytes()}function w(n){if((n instanceof B||n instanceof b)&&(n=new E(n)),n instanceof E){if(n.publicKey instanceof P)return new A(n,new p(new S(new Uint8Array(64))));if(n.publicKey instanceof b)return new A(n,new p(new W(new Uint8Array(64))));if(n.publicKey instanceof B)return new A(n,new p(k.getSimulationSignature()))}return new l(new P(n.toUint8Array()),new S(new Uint8Array(64)))}function pn(n){let{transaction:t,feePayerAuthenticator:e,additionalSignersAuthenticators:i}=n,a=C(O,n.senderAuthenticator),r;if(t.feePayerAddress){if(!e)throw new Error("Must provide a feePayerAuthenticator argument to generate a signed fee payer transaction");r=new $(a,t.secondarySignerAddresses??[],i??[],{address:t.feePayerAddress,authenticator:e})}else if(t.secondarySignerAddresses){if(!i)throw new Error("Must provide a additionalSignersAuthenticators argument to generate a signed multi agent transaction");r=new R(a,t.secondarySignerAddresses,i)}else a instanceof l?r=new D(a.public_key,a.signature):r=new M(a);return new f(t.rawTransaction,r).bcsToBytes()}function on(n){let t=mn.create();for(let e of n)t.update(e);return t.digest()}var ln=on(["APTOS::Transaction"]);function Kn(n){let t=pn(n);return new I(on([ln,new Uint8Array([0]),t])).toString()}async function sn({key:n,moduleAddress:t,moduleName:e,functionName:i,aptosConfig:a,abi:r,fetch:o}){return r!==void 0?r:_(async()=>o(t,e,i,a),`${n}-${a.network}-${t}-${e}-${i}`,1e3*60*5)()}export{Vn as a,An as b,qn as c,fn as d,gn as e,vn as f,Hn as g,w as h,pn as i,on as j,Kn as k};
|
|
2
|
-
//# sourceMappingURL=chunk-72QKG5N2.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/transactions/transactionBuilder/transactionBuilder.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file handles the transaction creation lifecycle.\n * It holds different operations to generate a transaction payload, a raw transaction,\n * and a signed transaction that can be simulated, signed and submitted to chain.\n */\nimport { sha3_256 as sha3Hash } from \"@noble/hashes/sha3\";\nimport { AptosConfig } from \"../../api/aptosConfig\";\nimport { AccountAddress, AccountAddressInput, Hex, PublicKey } from \"../../core\";\nimport {\n AnyPublicKey,\n AnySignature,\n KeylessPublicKey,\n KeylessSignature,\n Secp256k1PublicKey,\n Secp256k1Signature,\n} from \"../../core/crypto\";\nimport { Ed25519PublicKey, Ed25519Signature } from \"../../core/crypto/ed25519\";\nimport { getInfo } from \"../../internal/account\";\nimport { getLedgerInfo } from \"../../internal/general\";\nimport { getGasPriceEstimation } from \"../../internal/transaction\";\nimport { NetworkToChainId } from \"../../utils/apiEndpoints\";\nimport { DEFAULT_MAX_GAS_AMOUNT, DEFAULT_TXN_EXP_SEC_FROM_NOW } from \"../../utils/const\";\nimport { normalizeBundle } from \"../../utils/normalizeBundle\";\nimport {\n AccountAuthenticator,\n AccountAuthenticatorEd25519,\n AccountAuthenticatorSingleKey,\n} from \"../authenticator/account\";\nimport {\n TransactionAuthenticator,\n TransactionAuthenticatorEd25519,\n TransactionAuthenticatorFeePayer,\n TransactionAuthenticatorMultiAgent,\n TransactionAuthenticatorSingleSender,\n} from \"../authenticator/transaction\";\nimport {\n ChainId,\n EntryFunction,\n FeePayerRawTransaction,\n MultiAgentRawTransaction,\n MultiSig,\n MultiSigTransactionPayload,\n RawTransaction,\n Script,\n TransactionPayloadEntryFunction,\n TransactionPayloadMultiSig,\n TransactionPayloadScript,\n} from \"../instances\";\nimport { SignedTransaction } from \"../instances/signedTransaction\";\nimport {\n AnyRawTransaction,\n AnyTransactionPayloadInstance,\n EntryFunctionArgumentTypes,\n InputGenerateMultiAgentRawTransactionArgs,\n InputGenerateRawTransactionArgs,\n InputGenerateSingleSignerRawTransactionArgs,\n InputGenerateTransactionOptions,\n InputScriptData,\n InputSimulateTransactionData,\n InputMultiSigDataWithRemoteABI,\n InputEntryFunctionDataWithRemoteABI,\n InputGenerateTransactionPayloadDataWithRemoteABI,\n InputSubmitTransactionData,\n InputGenerateTransactionPayloadDataWithABI,\n InputEntryFunctionDataWithABI,\n InputMultiSigDataWithABI,\n InputViewFunctionDataWithRemoteABI,\n InputViewFunctionDataWithABI,\n FunctionABI,\n} from \"../types\";\nimport { convertArgument, fetchEntryFunctionAbi, fetchViewFunctionAbi, standardizeTypeTags } from \"./remoteAbi\";\nimport { memoizeAsync } from \"../../utils/memoize\";\nimport { getFunctionParts, isScriptDataInput } from \"./helpers\";\nimport { SimpleTransaction } from \"../instances/simpleTransaction\";\nimport { MultiAgentTransaction } from \"../instances/multiAgentTransaction\";\n\n/**\n * We are defining function signatures, each with its specific input and output.\n * These are the possible function signature for our `generateTransactionPayload` function.\n * When we call our `generateTransactionPayload` function with the relevant type properties,\n * Typescript can infer the return type based on the appropriate function overload.\n */\nexport async function generateTransactionPayload(args: InputScriptData): Promise<TransactionPayloadScript>;\nexport async function generateTransactionPayload(\n args: InputEntryFunctionDataWithRemoteABI,\n): Promise<TransactionPayloadEntryFunction>;\nexport async function generateTransactionPayload(\n args: InputMultiSigDataWithRemoteABI,\n): Promise<TransactionPayloadMultiSig>;\n\n/**\n * Builds a transaction payload based on the data argument and returns\n * a transaction payload - TransactionPayloadScript | TransactionPayloadMultiSig | TransactionPayloadEntryFunction\n *\n * This uses the RemoteABI by default, and the remote ABI can be skipped by using generateTransactionPayloadWithABI\n *\n * @param args.data GenerateTransactionPayloadData\n *\n * @return TransactionPayload\n */\nexport async function generateTransactionPayload(\n args: InputGenerateTransactionPayloadDataWithRemoteABI,\n): Promise<AnyTransactionPayloadInstance> {\n if (isScriptDataInput(args)) {\n return generateTransactionPayloadScript(args);\n }\n const { moduleAddress, moduleName, functionName } = getFunctionParts(args.function);\n\n const functionAbi = await fetchAbi({\n key: \"entry-function\",\n moduleAddress,\n moduleName,\n functionName,\n aptosConfig: args.aptosConfig,\n abi: args.abi,\n fetch: fetchEntryFunctionAbi,\n });\n\n // Fill in the ABI\n return generateTransactionPayloadWithABI({ ...args, abi: functionAbi });\n}\n\nexport function generateTransactionPayloadWithABI(args: InputEntryFunctionDataWithABI): TransactionPayloadEntryFunction;\nexport function generateTransactionPayloadWithABI(args: InputMultiSigDataWithABI): TransactionPayloadMultiSig;\nexport function generateTransactionPayloadWithABI(\n args: InputGenerateTransactionPayloadDataWithABI,\n): AnyTransactionPayloadInstance {\n const functionAbi = args.abi;\n const { moduleAddress, moduleName, functionName } = getFunctionParts(args.function);\n\n // Ensure that all type arguments are typed properly\n const typeArguments = standardizeTypeTags(args.typeArguments);\n\n // Check the type argument count against the ABI\n if (typeArguments.length !== functionAbi.typeParameters.length) {\n throw new Error(\n `Type argument count mismatch, expected ${functionAbi.typeParameters.length}, received ${typeArguments.length}`,\n );\n }\n\n // Check all BCS types, and convert any non-BCS types\n const functionArguments: Array<EntryFunctionArgumentTypes> = args.functionArguments.map((arg, i) =>\n convertArgument(args.function, functionAbi, arg, i, typeArguments),\n );\n\n // Check that all arguments are accounted for\n if (functionArguments.length !== functionAbi.parameters.length) {\n throw new Error(\n // eslint-disable-next-line max-len\n `Too few arguments for '${moduleAddress}::${moduleName}::${functionName}', expected ${functionAbi.parameters.length} but got ${functionArguments.length}`,\n );\n }\n\n // Generate entry function payload\n const entryFunctionPayload = EntryFunction.build(\n `${moduleAddress}::${moduleName}`,\n functionName,\n typeArguments,\n functionArguments,\n );\n\n // Send it as multi sig if it's a multisig payload\n if (\"multisigAddress\" in args) {\n const multisigAddress = AccountAddress.from(args.multisigAddress);\n return new TransactionPayloadMultiSig(\n new MultiSig(multisigAddress, new MultiSigTransactionPayload(entryFunctionPayload)),\n );\n }\n\n // Otherwise send as an entry function\n return new TransactionPayloadEntryFunction(entryFunctionPayload);\n}\n\nexport async function generateViewFunctionPayload(args: InputViewFunctionDataWithRemoteABI): Promise<EntryFunction> {\n const { moduleAddress, moduleName, functionName } = getFunctionParts(args.function);\n\n const functionAbi = await fetchAbi({\n key: \"view-function\",\n moduleAddress,\n moduleName,\n functionName,\n aptosConfig: args.aptosConfig,\n abi: args.abi,\n fetch: fetchViewFunctionAbi,\n });\n\n // Fill in the ABI\n return generateViewFunctionPayloadWithABI({ abi: functionAbi, ...args });\n}\n\nexport function generateViewFunctionPayloadWithABI(args: InputViewFunctionDataWithABI): EntryFunction {\n const functionAbi = args.abi;\n const { moduleAddress, moduleName, functionName } = getFunctionParts(args.function);\n\n // Ensure that all type arguments are typed properly\n const typeArguments = standardizeTypeTags(args.typeArguments);\n\n // Check the type argument count against the ABI\n if (typeArguments.length !== functionAbi.typeParameters.length) {\n throw new Error(\n `Type argument count mismatch, expected ${functionAbi.typeParameters.length}, received ${typeArguments.length}`,\n );\n }\n\n // Check all BCS types, and convert any non-BCS types\n const functionArguments: Array<EntryFunctionArgumentTypes> =\n args?.functionArguments?.map((arg, i) => convertArgument(args.function, functionAbi, arg, i, typeArguments)) ?? [];\n\n // Check that all arguments are accounted for\n if (functionArguments.length !== functionAbi.parameters.length) {\n throw new Error(\n // eslint-disable-next-line max-len\n `Too few arguments for '${moduleAddress}::${moduleName}::${functionName}', expected ${functionAbi.parameters.length} but got ${functionArguments.length}`,\n );\n }\n\n // Generate entry function payload\n return EntryFunction.build(`${moduleAddress}::${moduleName}`, functionName, typeArguments, functionArguments);\n}\n\nfunction generateTransactionPayloadScript(args: InputScriptData) {\n return new TransactionPayloadScript(\n new Script(\n Hex.fromHexInput(args.bytecode).toUint8Array(),\n standardizeTypeTags(args.typeArguments),\n args.functionArguments,\n ),\n );\n}\n\n/**\n * Generates a raw transaction\n *\n * @param args.aptosConfig AptosConfig\n * @param args.sender The transaction's sender account address as a hex input\n * @param args.payload The transaction payload - can create by using generateTransactionPayload()\n *\n * @returns RawTransaction\n */\nexport async function generateRawTransaction(args: {\n aptosConfig: AptosConfig;\n sender: AccountAddressInput;\n payload: AnyTransactionPayloadInstance;\n options?: InputGenerateTransactionOptions;\n feePayerAddress?: AccountAddressInput;\n}): Promise<RawTransaction> {\n const { aptosConfig, sender, payload, options, feePayerAddress } = args;\n\n const getChainId = async () => {\n if (NetworkToChainId[aptosConfig.network]) {\n return { chainId: NetworkToChainId[aptosConfig.network] };\n }\n const info = await getLedgerInfo({ aptosConfig });\n return { chainId: info.chain_id };\n };\n\n const getGasUnitPrice = async () => {\n if (options?.gasUnitPrice) {\n return { gasEstimate: options.gasUnitPrice };\n }\n const estimation = await getGasPriceEstimation({ aptosConfig });\n return { gasEstimate: estimation.gas_estimate };\n };\n\n const getSequenceNumberForAny = async () => {\n const getSequenceNumber = async () => {\n if (options?.accountSequenceNumber !== undefined) {\n return options.accountSequenceNumber;\n }\n\n return (await getInfo({ aptosConfig, accountAddress: sender })).sequence_number;\n };\n\n /**\n * Check if is sponsored transaction to honor AIP-52\n * {@link https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-52.md}\n */\n if (feePayerAddress && AccountAddress.from(feePayerAddress).equals(AccountAddress.ZERO)) {\n // Handle sponsored transaction generation with the option that\n // the main signer has not been created on chain\n try {\n // Check if main signer has been created on chain, if not assign sequence number 0\n return await getSequenceNumber();\n } catch (e: any) {\n return 0;\n }\n } else {\n return getSequenceNumber();\n }\n };\n const [{ chainId }, { gasEstimate }, sequenceNumber] = await Promise.all([\n getChainId(),\n getGasUnitPrice(),\n getSequenceNumberForAny(),\n ]);\n\n const { maxGasAmount, gasUnitPrice, expireTimestamp } = {\n maxGasAmount: options?.maxGasAmount ? BigInt(options.maxGasAmount) : BigInt(DEFAULT_MAX_GAS_AMOUNT),\n gasUnitPrice: options?.gasUnitPrice ?? BigInt(gasEstimate),\n expireTimestamp: options?.expireTimestamp ?? BigInt(Math.floor(Date.now() / 1000) + DEFAULT_TXN_EXP_SEC_FROM_NOW),\n };\n\n return new RawTransaction(\n AccountAddress.from(sender),\n BigInt(sequenceNumber),\n payload,\n BigInt(maxGasAmount),\n BigInt(gasUnitPrice),\n BigInt(expireTimestamp),\n new ChainId(chainId),\n );\n}\n\n/**\n * We are defining function signatures, each with its specific input and output.\n * These are the possible function signature for our `generateTransaction` function.\n * When we call our `generateTransaction` function with the relevant type properties,\n * Typescript can infer the return type based on the appropriate function overload.\n */\nexport async function buildTransaction(args: InputGenerateSingleSignerRawTransactionArgs): Promise<SimpleTransaction>;\nexport async function buildTransaction(args: InputGenerateMultiAgentRawTransactionArgs): Promise<MultiAgentTransaction>;\n\n/**\n * Generates a transaction based on the provided arguments\n *\n * Note: we can start with one function to support all different payload/transaction types,\n * and if to complex to use, we could have function for each type\n *\n * @param args.aptosConfig AptosConfig\n * @param args.sender The transaction's sender account address as a hex input\n * @param args.payload The transaction payload - can create by using generateTransactionPayload()\n * @param args.options optional. Transaction options object\n * @param args.secondarySignerAddresses optional. For when want to create a multi signers transaction\n * @param args.feePayerAddress optional. For when want to create a fee payer (aka sponsored) transaction\n *\n * @return An instance of a RawTransaction, plus optional secondary/fee payer addresses\n * ```\n * {\n * rawTransaction: RawTransaction,\n * secondarySignerAddresses? : Array<AccountAddress>,\n * feePayerAddress?: AccountAddress\n * }\n * ```\n */\nexport async function buildTransaction(args: InputGenerateRawTransactionArgs): Promise<AnyRawTransaction> {\n const { aptosConfig, sender, payload, options, feePayerAddress } = args;\n // generate raw transaction\n const rawTxn = await generateRawTransaction({\n aptosConfig,\n sender,\n payload,\n options,\n feePayerAddress,\n });\n\n // if multi agent transaction\n if (\"secondarySignerAddresses\" in args) {\n const signers: Array<AccountAddress> =\n args.secondarySignerAddresses?.map((signer) => AccountAddress.from(signer)) ?? [];\n\n return new MultiAgentTransaction(\n rawTxn,\n signers,\n args.feePayerAddress ? AccountAddress.from(args.feePayerAddress) : undefined,\n );\n }\n // return the raw transaction\n return new SimpleTransaction(rawTxn, args.feePayerAddress ? AccountAddress.from(args.feePayerAddress) : undefined);\n}\n\n/**\n * Simulate a transaction before signing and submit to chain\n *\n * @param args.transaction A aptos transaction type to sign\n * @param args.signerPublicKey The signer public key\n * @param args.secondarySignersPublicKeys optional. The secondary signers public keys if multi signers transaction\n * @param args.feePayerPublicKey optional. The fee payer public key is a fee payer (aka sponsored) transaction\n * @param args.options optional. SimulateTransactionOptions\n *\n * @returns A signed serialized transaction that can be simulated\n */\nexport function generateSignedTransactionForSimulation(args: InputSimulateTransactionData): Uint8Array {\n const { signerPublicKey, transaction, secondarySignersPublicKeys, feePayerPublicKey } = args;\n\n const accountAuthenticator = getAuthenticatorForSimulation(signerPublicKey);\n\n // fee payer transaction\n if (transaction.feePayerAddress) {\n const transactionToSign = new FeePayerRawTransaction(\n transaction.rawTransaction,\n transaction.secondarySignerAddresses ?? [],\n transaction.feePayerAddress,\n );\n let secondaryAccountAuthenticators: Array<AccountAuthenticator> = [];\n if (secondarySignersPublicKeys) {\n secondaryAccountAuthenticators = secondarySignersPublicKeys.map((publicKey) =>\n getAuthenticatorForSimulation(publicKey),\n );\n }\n const feePayerAuthenticator = getAuthenticatorForSimulation(feePayerPublicKey!);\n\n const transactionAuthenticator = new TransactionAuthenticatorFeePayer(\n accountAuthenticator,\n transaction.secondarySignerAddresses ?? [],\n secondaryAccountAuthenticators,\n {\n address: transaction.feePayerAddress,\n authenticator: feePayerAuthenticator,\n },\n );\n return new SignedTransaction(transactionToSign.raw_txn, transactionAuthenticator).bcsToBytes();\n }\n\n // multi agent transaction\n if (transaction.secondarySignerAddresses) {\n const transactionToSign = new MultiAgentRawTransaction(\n transaction.rawTransaction,\n transaction.secondarySignerAddresses,\n );\n\n let secondaryAccountAuthenticators: Array<AccountAuthenticator> = [];\n\n secondaryAccountAuthenticators = secondarySignersPublicKeys!.map((publicKey) =>\n getAuthenticatorForSimulation(publicKey),\n );\n\n const transactionAuthenticator = new TransactionAuthenticatorMultiAgent(\n accountAuthenticator,\n transaction.secondarySignerAddresses,\n secondaryAccountAuthenticators,\n );\n\n return new SignedTransaction(transactionToSign.raw_txn, transactionAuthenticator).bcsToBytes();\n }\n\n // single signer raw transaction\n let transactionAuthenticator;\n if (accountAuthenticator instanceof AccountAuthenticatorEd25519) {\n transactionAuthenticator = new TransactionAuthenticatorEd25519(\n accountAuthenticator.public_key,\n accountAuthenticator.signature,\n );\n } else if (accountAuthenticator instanceof AccountAuthenticatorSingleKey) {\n transactionAuthenticator = new TransactionAuthenticatorSingleSender(accountAuthenticator);\n } else {\n throw new Error(\"Invalid public key\");\n }\n return new SignedTransaction(transaction.rawTransaction, transactionAuthenticator).bcsToBytes();\n}\n\nexport function getAuthenticatorForSimulation(publicKey: PublicKey) {\n if (publicKey instanceof KeylessPublicKey || publicKey instanceof Secp256k1PublicKey) {\n // eslint-disable-next-line no-param-reassign\n publicKey = new AnyPublicKey(publicKey);\n }\n\n // TODO add support for AnyMultiKey\n if (publicKey instanceof AnyPublicKey) {\n if (publicKey.publicKey instanceof Ed25519PublicKey) {\n return new AccountAuthenticatorSingleKey(publicKey, new AnySignature(new Ed25519Signature(new Uint8Array(64))));\n }\n if (publicKey.publicKey instanceof Secp256k1PublicKey) {\n return new AccountAuthenticatorSingleKey(publicKey, new AnySignature(new Secp256k1Signature(new Uint8Array(64))));\n }\n if (publicKey.publicKey instanceof KeylessPublicKey) {\n return new AccountAuthenticatorSingleKey(publicKey, new AnySignature(KeylessSignature.getSimulationSignature()));\n }\n }\n\n // legacy code\n return new AccountAuthenticatorEd25519(\n new Ed25519PublicKey(publicKey.toUint8Array()),\n new Ed25519Signature(new Uint8Array(64)),\n );\n}\n\n/**\n * Prepare a transaction to be submitted to chain\n *\n * @param args.transaction A aptos transaction type\n * @param args.senderAuthenticator The account authenticator of the transaction sender\n * @param args.secondarySignerAuthenticators optional. For when the transaction is a multi signers transaction\n *\n * @returns A SignedTransaction\n */\nexport function generateSignedTransaction(args: InputSubmitTransactionData): Uint8Array {\n const { transaction, feePayerAuthenticator, additionalSignersAuthenticators } = args;\n const senderAuthenticator = normalizeBundle(AccountAuthenticator, args.senderAuthenticator);\n\n let txnAuthenticator: TransactionAuthenticator;\n if (transaction.feePayerAddress) {\n if (!feePayerAuthenticator) {\n throw new Error(\"Must provide a feePayerAuthenticator argument to generate a signed fee payer transaction\");\n }\n txnAuthenticator = new TransactionAuthenticatorFeePayer(\n senderAuthenticator,\n transaction.secondarySignerAddresses ?? [],\n additionalSignersAuthenticators ?? [],\n {\n address: transaction.feePayerAddress,\n authenticator: feePayerAuthenticator,\n },\n );\n } else if (transaction.secondarySignerAddresses) {\n if (!additionalSignersAuthenticators) {\n throw new Error(\n \"Must provide a additionalSignersAuthenticators argument to generate a signed multi agent transaction\",\n );\n }\n txnAuthenticator = new TransactionAuthenticatorMultiAgent(\n senderAuthenticator,\n transaction.secondarySignerAddresses,\n additionalSignersAuthenticators,\n );\n } else if (senderAuthenticator instanceof AccountAuthenticatorEd25519) {\n txnAuthenticator = new TransactionAuthenticatorEd25519(\n senderAuthenticator.public_key,\n senderAuthenticator.signature,\n );\n } else {\n txnAuthenticator = new TransactionAuthenticatorSingleSender(senderAuthenticator);\n }\n\n return new SignedTransaction(transaction.rawTransaction, txnAuthenticator).bcsToBytes();\n}\n\n/**\n * Hashes the set of values with a SHA-3 256 hash\n * @param input array of UTF-8 strings or Uint8array byte arrays\n */\nexport function hashValues(input: (Uint8Array | string)[]): Uint8Array {\n const hash = sha3Hash.create();\n for (const item of input) {\n hash.update(item);\n }\n return hash.digest();\n}\n\n/**\n * The domain separated prefix for hashing transacitons\n */\nconst TRANSACTION_PREFIX = hashValues([\"APTOS::Transaction\"]);\n\n/**\n * Generates a user transaction hash for the given transaction payload. It must already have an authenticator\n * @param args InputSubmitTransactionData\n */\nexport function generateUserTransactionHash(args: InputSubmitTransactionData): string {\n const signedTransaction = generateSignedTransaction(args);\n\n // Transaction signature is defined as, the domain separated prefix based on struct (Transaction)\n // Then followed by the type of the transaction for the enum, UserTransaction is 0\n // Then followed by BCS encoded bytes of the signed transaction\n return new Hex(hashValues([TRANSACTION_PREFIX, new Uint8Array([0]), signedTransaction])).toString();\n}\n\n/**\n * Fetches and caches ABIs with allowing for pass-through on provided ABIs\n * @param key\n * @param moduleAddress\n * @param moduleName\n * @param functionName\n * @param aptosConfig\n * @param abi\n * @param fetch\n */\nasync function fetchAbi<T extends FunctionABI>({\n key,\n moduleAddress,\n moduleName,\n functionName,\n aptosConfig,\n abi,\n fetch,\n}: {\n key: string;\n moduleAddress: string;\n moduleName: string;\n functionName: string;\n aptosConfig: AptosConfig;\n abi?: T;\n fetch: (moduleAddress: string, moduleName: string, functionName: string, aptosConfig: AptosConfig) => Promise<T>;\n}): Promise<T> {\n if (abi !== undefined) {\n return abi;\n }\n\n // We fetch the entry function ABI, and then pretend that we already had the ABI\n return memoizeAsync(\n async () => fetch(moduleAddress, moduleName, functionName, aptosConfig),\n `${key}-${aptosConfig.network}-${moduleAddress}-${moduleName}-${functionName}`,\n 1000 * 60 * 5, // 5 minutes\n )();\n}\n"],"mappings":"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","names":["sha3Hash","generateTransactionPayload","args","isScriptDataInput","generateTransactionPayloadScript","moduleAddress","moduleName","functionName","getFunctionParts","functionAbi","fetchAbi","fetchEntryFunctionAbi","generateTransactionPayloadWithABI","typeArguments","standardizeTypeTags","functionArguments","arg","i","convertArgument","entryFunctionPayload","EntryFunction","multisigAddress","AccountAddress","TransactionPayloadMultiSig","MultiSig","MultiSigTransactionPayload","TransactionPayloadEntryFunction","generateViewFunctionPayload","fetchViewFunctionAbi","generateViewFunctionPayloadWithABI","TransactionPayloadScript","Script","Hex","generateRawTransaction","aptosConfig","sender","payload","options","feePayerAddress","getChainId","NetworkToChainId","getLedgerInfo","getGasUnitPrice","getGasPriceEstimation","getSequenceNumberForAny","getSequenceNumber","getInfo","chainId","gasEstimate","sequenceNumber","maxGasAmount","gasUnitPrice","expireTimestamp","RawTransaction","ChainId","buildTransaction","rawTxn","signers","signer","MultiAgentTransaction","SimpleTransaction","generateSignedTransactionForSimulation","signerPublicKey","transaction","secondarySignersPublicKeys","feePayerPublicKey","accountAuthenticator","getAuthenticatorForSimulation","transactionToSign","FeePayerRawTransaction","secondaryAccountAuthenticators","publicKey","feePayerAuthenticator","transactionAuthenticator","TransactionAuthenticatorFeePayer","SignedTransaction","MultiAgentRawTransaction","TransactionAuthenticatorMultiAgent","AccountAuthenticatorEd25519","TransactionAuthenticatorEd25519","AccountAuthenticatorSingleKey","TransactionAuthenticatorSingleSender","KeylessPublicKey","Secp256k1PublicKey","AnyPublicKey","Ed25519PublicKey","AnySignature","Ed25519Signature","Secp256k1Signature","KeylessSignature","generateSignedTransaction","additionalSignersAuthenticators","senderAuthenticator","normalizeBundle","AccountAuthenticator","txnAuthenticator","hashValues","input","hash","sha3Hash","item","TRANSACTION_PREFIX","generateUserTransactionHash","signedTransaction","key","abi","fetch","memoizeAsync"]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as i}from"./chunk-YTQVMLFD.mjs";import{spawn as n}from"child_process";import l from"tree-kill";import{platform as p}from"os";var c=class{constructor(){this.MAXIMUM_WAIT_TIME_SEC=75;this.READINESS_ENDPOINT="http://127.0.0.1:8070/";this.process=null}stop(){this.process?.pid&&l(this.process.pid)}async run(){await this.checkIfProcessIsUp()||(this.start(),await this.waitUntilProcessIsUp())}start(){let t="npx",s=["aptos","node","run-local-testnet","--force-restart","--assume-yes","--with-indexer-api"],e=p(),r;e==="win32"?r=n(t,s,{shell:!0}):r=n(t,s),this.process=r,r.stderr?.on("data",o=>{let a=o.toString();console.log(a)}),r.stdout?.on("data",o=>{let a=o.toString();console.log(a)})}async waitUntilProcessIsUp(){let t=await this.checkIfProcessIsUp(),s=Date.now()/1e3,e=s;for(;!t&&s+this.MAXIMUM_WAIT_TIME_SEC>e;)await i(1e3),t=await this.checkIfProcessIsUp(),e=Date.now()/1e3;if(!t)throw new Error("Process failed to start");return!0}async checkIfProcessIsUp(){try{return(await fetch(this.READINESS_ENDPOINT)).status===200}catch{return!1}}};export{c as a};
|
|
2
|
-
//# sourceMappingURL=chunk-FNFQA7NS.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/localNode.ts"],"sourcesContent":["import { ChildProcessWithoutNullStreams, spawn } from \"child_process\";\nimport kill from \"tree-kill\";\nimport { platform } from \"os\";\n\nimport { sleep } from \"../utils/helpers\";\n\nexport class LocalNode {\n readonly MAXIMUM_WAIT_TIME_SEC = 75;\n\n readonly READINESS_ENDPOINT = \"http://127.0.0.1:8070/\";\n\n process: ChildProcessWithoutNullStreams | null = null;\n\n /**\n * kills all the descendent processes\n * of the node process, including the node process itself\n */\n stop() {\n if (!this.process?.pid) return;\n kill(this.process.pid);\n }\n\n /**\n * Runs a local testnet and waits for process to be up.\n *\n * If local node process is already up it returns and does\n * not start the process\n */\n async run() {\n const nodeIsUp = await this.checkIfProcessIsUp();\n if (nodeIsUp) {\n return;\n }\n this.start();\n await this.waitUntilProcessIsUp();\n }\n\n /**\n * Starts the local testnet by running the aptos node run-local-testnet command\n */\n start() {\n const cliCommand = \"npx\";\n const cliArgs = [\"aptos\", \"node\", \"run-local-testnet\", \"--force-restart\", \"--assume-yes\", \"--with-indexer-api\"];\n\n const currentPlatform = platform();\n let childProcess;\n // Check if current OS is windows\n if (currentPlatform === \"win32\") {\n childProcess = spawn(cliCommand, cliArgs, { shell: true });\n } else {\n childProcess = spawn(cliCommand, cliArgs);\n }\n\n this.process = childProcess;\n\n childProcess.stderr?.on(\"data\", (data: any) => {\n const str = data.toString();\n // Print local node output log\n // eslint-disable-next-line no-console\n console.log(str);\n });\n\n childProcess.stdout?.on(\"data\", (data: any) => {\n const str = data.toString();\n // Print local node output log\n // eslint-disable-next-line no-console\n console.log(str);\n });\n }\n\n /**\n * Waits for the local testnet process to be up\n *\n * @returns Promise<boolean>\n */\n async waitUntilProcessIsUp(): Promise<boolean> {\n let operational = await this.checkIfProcessIsUp();\n const start = Date.now() / 1000;\n let last = start;\n\n while (!operational && start + this.MAXIMUM_WAIT_TIME_SEC > last) {\n // eslint-disable-next-line no-await-in-loop\n await sleep(1000);\n // eslint-disable-next-line no-await-in-loop\n operational = await this.checkIfProcessIsUp();\n last = Date.now() / 1000;\n }\n\n // If we are here it means something blocks the process to start.\n // Might worth checking if another process is running on port 8080\n if (!operational) {\n throw new Error(\"Process failed to start\");\n }\n\n return true;\n }\n\n /**\n * Checks if the local testnet is up\n *\n * @returns Promise<boolean>\n */\n async checkIfProcessIsUp(): Promise<boolean> {\n try {\n // Query readiness endpoint\n const data = await fetch(this.READINESS_ENDPOINT);\n if (data.status === 200) {\n return true;\n }\n return false;\n } catch (err: any) {\n return false;\n }\n }\n}\n"],"mappings":"yCAAA,OAAyC,SAAAA,MAAa,gBACtD,OAAOC,MAAU,YACjB,OAAS,YAAAC,MAAgB,KAIlB,IAAMC,EAAN,KAAgB,CAAhB,cACL,KAAS,sBAAwB,GAEjC,KAAS,mBAAqB,yBAE9B,aAAiD,KAMjD,MAAO,CACA,KAAK,SAAS,KACnBC,EAAK,KAAK,QAAQ,GAAG,CACvB,CAQA,MAAM,KAAM,CACO,MAAM,KAAK,mBAAmB,IAI/C,KAAK,MAAM,EACX,MAAM,KAAK,qBAAqB,EAClC,CAKA,OAAQ,CACN,IAAMC,EAAa,MACbC,EAAU,CAAC,QAAS,OAAQ,oBAAqB,kBAAmB,eAAgB,oBAAoB,EAExGC,EAAkBC,EAAS,EAC7BC,EAEAF,IAAoB,QACtBE,EAAeC,EAAML,EAAYC,EAAS,CAAE,MAAO,EAAK,CAAC,EAEzDG,EAAeC,EAAML,EAAYC,CAAO,EAG1C,KAAK,QAAUG,EAEfA,EAAa,QAAQ,GAAG,OAASE,GAAc,CAC7C,IAAMC,EAAMD,EAAK,SAAS,EAG1B,QAAQ,IAAIC,CAAG,CACjB,CAAC,EAEDH,EAAa,QAAQ,GAAG,OAASE,GAAc,CAC7C,IAAMC,EAAMD,EAAK,SAAS,EAG1B,QAAQ,IAAIC,CAAG,CACjB,CAAC,CACH,CAOA,MAAM,sBAAyC,CAC7C,IAAIC,EAAc,MAAM,KAAK,mBAAmB,EAC1CC,EAAQ,KAAK,IAAI,EAAI,IACvBC,EAAOD,EAEX,KAAO,CAACD,GAAeC,EAAQ,KAAK,sBAAwBC,GAE1D,MAAMC,EAAM,GAAI,EAEhBH,EAAc,MAAM,KAAK,mBAAmB,EAC5CE,EAAO,KAAK,IAAI,EAAI,IAKtB,GAAI,CAACF,EACH,MAAM,IAAI,MAAM,yBAAyB,EAG3C,MAAO,EACT,CAOA,MAAM,oBAAuC,CAC3C,GAAI,CAGF,OADa,MAAM,MAAM,KAAK,kBAAkB,GACvC,SAAW,GAItB,MAAmB,CACjB,MAAO,EACT,CACF,CACF","names":["spawn","kill","platform","LocalNode","kill","cliCommand","cliArgs","currentPlatform","platform","childProcess","spawn","data","str","operational","start","last","sleep"]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as o,j as l}from"./chunk-OID45FCB.mjs";import{a,c}from"./chunk-XWVMFCW3.mjs";import{a as n,c as s}from"./chunk-6WAXFWLH.mjs";import{a as p}from"./chunk-MLDQ2TY2.mjs";import{b}from"./chunk-76OH2Z4Q.mjs";import{a as y}from"./chunk-WPYVWZQS.mjs";var f=class t extends b{constructor(e){if(super(),this.publicKey=e,e instanceof n)this.variant=0;else if(e instanceof a)this.variant=1;else if(e instanceof o)this.variant=3;else throw new Error("Unsupported public key type")}verifySignature(e){let{message:r,signature:i}=e;return i instanceof u?this.publicKey.verifySignature({message:r,signature:i.signature}):!1}authKey(){return y.fromSchemeAndBytes({scheme:2,input:this.toUint8Array()})}toUint8Array(){return this.bcsToBytes()}serialize(e){e.serializeU32AsUleb128(this.variant),this.publicKey.serialize(e)}static deserialize(e){let r=e.deserializeUleb128AsU32(),i;switch(r){case 0:i=n.deserialize(e);break;case 1:i=a.deserialize(e);break;case 3:i=o.deserialize(e);break;default:throw new Error(`Unknown variant index for AnyPublicKey: ${r}`)}return new t(i)}static isPublicKey(e){return e instanceof t}isEd25519(){return this.publicKey instanceof n}isSecp256k1PublicKey(){return this.publicKey instanceof a}},u=class t extends p{constructor(e){if(super(),this.signature=e,e instanceof s)this.variant=0;else if(e instanceof c)this.variant=1;else if(e instanceof l)this.variant=3;else throw new Error("Unsupported signature type")}toUint8Array(){return this.bcsToBytes()}serialize(e){e.serializeU32AsUleb128(this.variant),this.signature.serialize(e)}static deserialize(e){let r=e.deserializeUleb128AsU32(),i;switch(r){case 0:i=s.deserialize(e);break;case 1:i=c.deserialize(e);break;case 3:i=l.deserialize(e);break;default:throw new Error(`Unknown variant index for AnySignature: ${r}`)}return new t(i)}};export{f as a,u as b};
|
|
2
|
-
//# sourceMappingURL=chunk-FSTRZMCK.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/crypto/singleKey.ts"],"sourcesContent":["import { Deserializer, Serializer } from \"../../bcs\";\nimport { AnyPublicKeyVariant, AnySignatureVariant, SigningScheme as AuthenticationKeyScheme } from \"../../types\";\nimport { AuthenticationKey } from \"../authenticationKey\";\nimport { Ed25519PublicKey, Ed25519Signature } from \"./ed25519\";\nimport { AccountPublicKey, PublicKey, VerifySignatureArgs } from \"./publicKey\";\nimport { Secp256k1PublicKey, Secp256k1Signature } from \"./secp256k1\";\nimport { KeylessPublicKey, KeylessSignature } from \"./keyless\";\nimport { Signature } from \"./signature\";\n\n/**\n * Represents any public key supported by Aptos.\n *\n * Since [AIP-55](https://github.com/aptos-foundation/AIPs/pull/263) Aptos supports\n * `Legacy` and `Unified` authentication keys.\n *\n * Any unified authentication key is represented in the SDK as `AnyPublicKey`.\n */\nexport class AnyPublicKey extends AccountPublicKey {\n /**\n * Reference to the inner public key\n */\n public readonly publicKey: PublicKey;\n\n /**\n * Index of the underlying enum variant\n */\n public readonly variant: AnyPublicKeyVariant;\n\n // region Constructors\n\n constructor(publicKey: PublicKey) {\n super();\n this.publicKey = publicKey;\n if (publicKey instanceof Ed25519PublicKey) {\n this.variant = AnyPublicKeyVariant.Ed25519;\n } else if (publicKey instanceof Secp256k1PublicKey) {\n this.variant = AnyPublicKeyVariant.Secp256k1;\n } else if (publicKey instanceof KeylessPublicKey) {\n this.variant = AnyPublicKeyVariant.Keyless;\n } else {\n throw new Error(\"Unsupported public key type\");\n }\n }\n\n // endregion\n\n // region AccountPublicKey\n\n verifySignature(args: VerifySignatureArgs): boolean {\n const { message, signature } = args;\n if (!(signature instanceof AnySignature)) {\n return false;\n }\n\n return this.publicKey.verifySignature({\n message,\n signature: signature.signature,\n });\n }\n\n authKey(): AuthenticationKey {\n return AuthenticationKey.fromSchemeAndBytes({\n scheme: AuthenticationKeyScheme.SingleKey,\n input: this.toUint8Array(),\n });\n }\n\n toUint8Array() {\n return this.bcsToBytes();\n }\n\n // endregion\n\n // region Serializable\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(this.variant);\n this.publicKey.serialize(serializer);\n }\n\n static deserialize(deserializer: Deserializer): AnyPublicKey {\n const variantIndex = deserializer.deserializeUleb128AsU32();\n let publicKey: PublicKey;\n switch (variantIndex) {\n case AnyPublicKeyVariant.Ed25519:\n publicKey = Ed25519PublicKey.deserialize(deserializer);\n break;\n case AnyPublicKeyVariant.Secp256k1:\n publicKey = Secp256k1PublicKey.deserialize(deserializer);\n break;\n case AnyPublicKeyVariant.Keyless:\n publicKey = KeylessPublicKey.deserialize(deserializer);\n break;\n default:\n throw new Error(`Unknown variant index for AnyPublicKey: ${variantIndex}`);\n }\n return new AnyPublicKey(publicKey);\n }\n\n // endregion\n\n /**\n * @deprecated use `instanceof AnyPublicKey` instead.\n */\n static isPublicKey(publicKey: AccountPublicKey): publicKey is AnyPublicKey {\n return publicKey instanceof AnyPublicKey;\n }\n\n /**\n * @deprecated use `publicKey instanceof Ed25519PublicKey` instead.\n */\n isEd25519(): boolean {\n return this.publicKey instanceof Ed25519PublicKey;\n }\n\n /**\n * @deprecated use `publicKey instanceof Secp256k1PublicKey` instead.\n */\n isSecp256k1PublicKey(): boolean {\n return this.publicKey instanceof Secp256k1PublicKey;\n }\n}\n\n/**\n * Instance of signature that uses the SingleKey authentication scheme.\n * This signature can only be generated by a `SingleKeySigner`, since it uses the\n * same authentication scheme.\n */\nexport class AnySignature extends Signature {\n public readonly signature: Signature;\n\n /**\n * Index of the underlying enum variant\n */\n private readonly variant: AnySignatureVariant;\n\n // region Constructors\n\n constructor(signature: Signature) {\n super();\n this.signature = signature;\n\n if (signature instanceof Ed25519Signature) {\n this.variant = AnySignatureVariant.Ed25519;\n } else if (signature instanceof Secp256k1Signature) {\n this.variant = AnySignatureVariant.Secp256k1;\n } else if (signature instanceof KeylessSignature) {\n this.variant = AnySignatureVariant.Keyless;\n } else {\n throw new Error(\"Unsupported signature type\");\n }\n }\n\n // endregion\n\n // region AccountSignature\n\n toUint8Array() {\n return this.bcsToBytes();\n }\n\n // endregion\n\n // region Serializable\n\n serialize(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(this.variant);\n this.signature.serialize(serializer);\n }\n\n static deserialize(deserializer: Deserializer): AnySignature {\n const variantIndex = deserializer.deserializeUleb128AsU32();\n let signature: Signature;\n switch (variantIndex) {\n case AnySignatureVariant.Ed25519:\n signature = Ed25519Signature.deserialize(deserializer);\n break;\n case AnySignatureVariant.Secp256k1:\n signature = Secp256k1Signature.deserialize(deserializer);\n break;\n case AnySignatureVariant.Keyless:\n signature = KeylessSignature.deserialize(deserializer);\n break;\n default:\n throw new Error(`Unknown variant index for AnySignature: ${variantIndex}`);\n }\n return new AnySignature(signature);\n }\n\n // endregion\n}\n"],"mappings":"4PAiBO,IAAMA,EAAN,MAAMC,UAAqBC,CAAiB,CAajD,YAAYC,EAAsB,CAGhC,GAFA,MAAM,EACN,KAAK,UAAYA,EACbA,aAAqBC,EACvB,KAAK,QAAU,UACND,aAAqBE,EAC9B,KAAK,QAAU,UACNF,aAAqBG,EAC9B,KAAK,QAAU,MAEf,OAAM,IAAI,MAAM,6BAA6B,CAEjD,CAMA,gBAAgBC,EAAoC,CAClD,GAAM,CAAE,QAAAC,EAAS,UAAAC,CAAU,EAAIF,EAC/B,OAAME,aAAqBC,EAIpB,KAAK,UAAU,gBAAgB,CACpC,QAAAF,EACA,UAAWC,EAAU,SACvB,CAAC,EANQ,EAOX,CAEA,SAA6B,CAC3B,OAAOE,EAAkB,mBAAmB,CAC1C,SACA,MAAO,KAAK,aAAa,CAC3B,CAAC,CACH,CAEA,cAAe,CACb,OAAO,KAAK,WAAW,CACzB,CAMA,UAAUC,EAA8B,CACtCA,EAAW,sBAAsB,KAAK,OAAO,EAC7C,KAAK,UAAU,UAAUA,CAAU,CACrC,CAEA,OAAO,YAAYC,EAA0C,CAC3D,IAAMC,EAAeD,EAAa,wBAAwB,EACtDV,EACJ,OAAQW,EAAc,CACpB,OACEX,EAAYC,EAAiB,YAAYS,CAAY,EACrD,MACF,OACEV,EAAYE,EAAmB,YAAYQ,CAAY,EACvD,MACF,OACEV,EAAYG,EAAiB,YAAYO,CAAY,EACrD,MACF,QACE,MAAM,IAAI,MAAM,2CAA2CC,CAAY,EAAE,CAC7E,CACA,OAAO,IAAIb,EAAaE,CAAS,CACnC,CAOA,OAAO,YAAYA,EAAwD,CACzE,OAAOA,aAAqBF,CAC9B,CAKA,WAAqB,CACnB,OAAO,KAAK,qBAAqBG,CACnC,CAKA,sBAAgC,CAC9B,OAAO,KAAK,qBAAqBC,CACnC,CACF,EAOaK,EAAN,MAAMK,UAAqBC,CAAU,CAU1C,YAAYP,EAAsB,CAIhC,GAHA,MAAM,EACN,KAAK,UAAYA,EAEbA,aAAqBQ,EACvB,KAAK,QAAU,UACNR,aAAqBS,EAC9B,KAAK,QAAU,UACNT,aAAqBU,EAC9B,KAAK,QAAU,MAEf,OAAM,IAAI,MAAM,4BAA4B,CAEhD,CAMA,cAAe,CACb,OAAO,KAAK,WAAW,CACzB,CAMA,UAAUP,EAA8B,CACtCA,EAAW,sBAAsB,KAAK,OAAO,EAC7C,KAAK,UAAU,UAAUA,CAAU,CACrC,CAEA,OAAO,YAAYC,EAA0C,CAC3D,IAAMC,EAAeD,EAAa,wBAAwB,EACtDJ,EACJ,OAAQK,EAAc,CACpB,OACEL,EAAYQ,EAAiB,YAAYJ,CAAY,EACrD,MACF,OACEJ,EAAYS,EAAmB,YAAYL,CAAY,EACvD,MACF,OACEJ,EAAYU,EAAiB,YAAYN,CAAY,EACrD,MACF,QACE,MAAM,IAAI,MAAM,2CAA2CC,CAAY,EAAE,CAC7E,CACA,OAAO,IAAIC,EAAaN,CAAS,CACnC,CAGF","names":["AnyPublicKey","_AnyPublicKey","AccountPublicKey","publicKey","Ed25519PublicKey","Secp256k1PublicKey","KeylessPublicKey","args","message","signature","AnySignature","AuthenticationKey","serializer","deserializer","variantIndex","_AnySignature","Signature","Ed25519Signature","Secp256k1Signature","KeylessSignature"]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as m,c as V,d as v,e as B}from"./chunk-IVVWQKCF.mjs";import{a as P}from"./chunk-MQGW234H.mjs";import{a as b,b as y}from"./chunk-T52HPGL5.mjs";import{a as C,c as I}from"./chunk-6WAXFWLH.mjs";import{a as d}from"./chunk-MLDQ2TY2.mjs";import{b as U}from"./chunk-76OH2Z4Q.mjs";import{a as H}from"./chunk-WPYVWZQS.mjs";import{b as x}from"./chunk-WSE653RS.mjs";import{a as T}from"./chunk-AH44UPM4.mjs";import{b as w}from"./chunk-ZHNCJSXO.mjs";import{a as G}from"./chunk-DZXM2MQY.mjs";import{a as u,b as E}from"./chunk-A63SMUOU.mjs";import{b as p}from"./chunk-BCUSI3N6.mjs";import{jwtDecode as k}from"jwt-decode";var he=1e7,F=120,L=30,N=330,ge=120,fe=350,Se=300,xe=93,o=class o extends U{constructor(e,t){super();let i=p.fromHexInput(t).toUint8Array();if(i.length!==o.ID_COMMITMENT_LENGTH)throw new Error(`Id Commitment length in bytes should be ${o.ID_COMMITMENT_LENGTH}`);this.iss=e,this.idCommitment=i}authKey(){let e=new E;return e.serializeU32AsUleb128(3),e.serializeFixedBytes(this.bcsToBytes()),H.fromSchemeAndBytes({scheme:2,input:e.toUint8Array()})}toUint8Array(){return this.bcsToBytes()}toString(){return p.fromHexInput(this.toUint8Array()).toString()}verifySignature(e){throw new Error("Not yet implemented")}serialize(e){e.serializeStr(this.iss),e.serializeBytes(this.idCommitment)}static deserialize(e){let t=e.deserializeStr(),i=e.deserializeBytes();return new o(t,i)}static load(e){let t=e.deserializeStr(),i=e.deserializeBytes();return new o(t,i)}static isPublicKey(e){return e instanceof o}static create(e){return _(e),new o(e.iss,_(e))}static fromJwtAndPepper(e){let{jwt:t,pepper:i,uidKey:a="sub"}=e,n=k(t),s=n.iss;if(typeof n.aud!="string")throw new Error("aud was not found or an array of values");let M=n.aud,R=n[a];return o.create({iss:s,uidKey:a,uidVal:R,aud:M,pepper:i})}};o.ID_COMMITMENT_LENGTH=32;var A=o;function _(r){let{uidKey:e,uidVal:t,aud:i,pepper:a}=r,n=[V(p.fromHexInput(a).toUint8Array()),m(i,F),m(t,N),m(e,L)];return v(B(n),A.ID_COMMITMENT_LENGTH)}var D=class r extends d{constructor(e){super();let{jwtHeader:t,ephemeralCertificate:i,expiryDateSecs:a,ephemeralPublicKey:n,ephemeralSignature:s}=e;this.jwtHeader=t,this.ephemeralCertificate=i,this.expiryDateSecs=a,this.ephemeralPublicKey=n,this.ephemeralSignature=s}toUint8Array(){return this.bcsToBytes()}serialize(e){this.ephemeralCertificate.serialize(e),e.serializeStr(this.jwtHeader),e.serializeU64(this.expiryDateSecs),this.ephemeralPublicKey.serialize(e),this.ephemeralSignature.serialize(e)}static deserialize(e){let t=h.deserialize(e),i=e.deserializeStr(),a=e.deserializeU64(),n=b.deserialize(e),s=y.deserialize(e);return new r({jwtHeader:i,expiryDateSecs:Number(a),ephemeralCertificate:t,ephemeralPublicKey:n,ephemeralSignature:s})}static getSimulationSignature(){return new r({jwtHeader:"{}",ephemeralCertificate:new h(new S({proof:new f(new g({a:new Uint8Array(32),b:new Uint8Array(64),c:new Uint8Array(32)}),0),expHorizonSecs:0}),0),expiryDateSecs:0,ephemeralPublicKey:new b(new C(new Uint8Array(32))),ephemeralSignature:new y(new I(new Uint8Array(64)))})}static isSignature(e){return e instanceof r}},h=class r extends d{constructor(e,t){super(),this.signature=e,this.variant=t}toUint8Array(){return this.signature.toUint8Array()}serialize(e){e.serializeU32AsUleb128(this.variant),this.signature.serialize(e)}static deserialize(e){let t=e.deserializeUleb128AsU32();switch(t){case 0:return new r(S.deserialize(e),t);default:throw new Error(`Unknown variant index for EphemeralCertificate: ${t}`)}}},c=class r extends u{constructor(e){if(super(),this.data=p.fromHexInput(e).toUint8Array(),this.data.length!==32)throw new Error("Input needs to be 32 bytes")}serialize(e){e.serializeFixedBytes(this.data)}static deserialize(e){let t=e.deserializeFixedBytes(32);return new r(t)}},l=class r extends u{constructor(e){if(super(),this.data=p.fromHexInput(e).toUint8Array(),this.data.length!==64)throw new Error("Input needs to be 64 bytes")}serialize(e){e.serializeFixedBytes(this.data)}static deserialize(e){let t=e.deserializeFixedBytes(64);return new r(t)}},g=class r extends P{constructor(e){super();let{a:t,b:i,c:a}=e;this.a=new c(t),this.b=new l(i),this.c=new c(a)}serialize(e){this.a.serialize(e),this.b.serialize(e),this.c.serialize(e)}static deserialize(e){let t=c.deserialize(e).bcsToBytes(),i=l.deserialize(e).bcsToBytes(),a=c.deserialize(e).bcsToBytes();return new r({a:t,b:i,c:a})}},f=class r extends u{constructor(e,t){super(),this.proof=e,this.variant=t}serialize(e){e.serializeU32AsUleb128(this.variant),this.proof.serialize(e)}static deserialize(e){let t=e.deserializeUleb128AsU32();switch(t){case 0:return new r(g.deserialize(e),t);default:throw new Error(`Unknown variant index for ZkProof: ${t}`)}}},S=class r extends d{constructor(e){super();let{proof:t,expHorizonSecs:i,trainingWheelsSignature:a,extraField:n,overrideAudVal:s}=e;this.proof=t,this.expHorizonSecs=i,this.trainingWheelsSignature=a,this.extraField=n,this.overrideAudVal=s}toUint8Array(){return this.bcsToBytes()}static fromBytes(e){return r.deserialize(new G(e))}serialize(e){this.proof.serialize(e),e.serializeU64(this.expHorizonSecs),e.serializeOptionStr(this.extraField),e.serializeOptionStr(this.overrideAudVal),e.serializeOption(this.trainingWheelsSignature)}static deserialize(e){let t=f.deserialize(e),i=Number(e.deserializeU64()),a=e.deserializeOptionStr(),n=e.deserializeOptionStr(),s=e.deserializeOption(y);return new r({proof:t,expHorizonSecs:i,trainingWheelsSignature:s,extraField:a,overrideAudVal:n})}},z=class r{constructor(e,t){this.verficationKey=e,this.maxExpHorizonSecs=t}static create(e,t){return new r(new K({alphaG1:e.alpha_g1,betaG2:e.beta_g2,deltaG2:e.delta_g2,gammaAbcG1:e.gamma_abc_g1,gammaG2:e.gamma_g2}),t)}},K=class r{constructor(e){let{alphaG1:t,betaG2:i,deltaG2:a,gammaAbcG1:n,gammaG2:s}=e;this.alphaG1=new c(t),this.betaG2=new l(i),this.deltaG2=new l(a),this.gammaAbcG1=[new c(n[0]),new c(n[1])],this.gammaG2=new l(s)}static fromGroth16VerificationKeyResponse(e){return new r({alphaG1:e.alpha_g1,betaG2:e.beta_g2,deltaG2:e.delta_g2,gammaAbcG1:e.gamma_abc_g1,gammaG2:e.gamma_g2})}};async function be(r){let{aptosConfig:e}=r;return T(async()=>{let t=await O(r),i=await j(r);return z.create(i,Number(t.max_exp_horizon_secs))},`keyless-configuration-${e.network}`,1e3*60*5)()}async function O(r){let{aptosConfig:e,options:t}=r,i="0x1::keyless_account::Configuration",{data:a}=await w({aptosConfig:e,originMethod:"getKeylessConfigurationResource",path:`accounts/${x.from("0x1").toString()}/resource/${i}`,params:{ledger_version:t?.ledgerVersion}});return a.data}async function j(r){let{aptosConfig:e,options:t}=r,i="0x1::keyless_account::Groth16VerificationKey",{data:a}=await w({aptosConfig:e,originMethod:"getGroth16VerificationKeyResource",path:`accounts/${x.from("0x1").toString()}/resource/${i}`,params:{ledger_version:t?.ledgerVersion}});return a.data}export{he as a,F as b,L as c,N as d,ge as e,fe as f,Se as g,xe as h,A as i,D as j,h as k,g as l,f as m,S as n,z as o,be as p};
|
|
2
|
-
//# sourceMappingURL=chunk-OID45FCB.mjs.map
|