@aptos-labs/ts-sdk 1.33.2 → 1.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -9
- package/dist/common/{accountAddress-Cf1amU98.d.ts → accountAddress-CuHovHdK.d.ts} +22 -2
- package/dist/common/chunk-RX5UBAME.js +4 -0
- package/dist/common/chunk-RX5UBAME.js.map +1 -0
- package/dist/common/cli/index.d.ts +1 -1
- package/dist/common/cli/index.js +1 -1
- package/dist/common/cli/index.js.map +1 -1
- package/dist/common/index.d.ts +3139 -2533
- package/dist/common/index.js +33 -35
- package/dist/common/index.js.map +1 -1
- package/dist/esm/account/AbstractKeylessAccount.d.mts +1 -0
- package/dist/esm/account/AbstractKeylessAccount.mjs +1 -1
- package/dist/esm/account/AbstractedAccount.d.mts +91 -0
- package/dist/esm/account/AbstractedAccount.mjs +2 -0
- package/dist/esm/account/Account.d.mts +2 -1
- package/dist/esm/account/Account.mjs +1 -1
- package/dist/esm/account/AccountUtils.d.mts +17 -16
- package/dist/esm/account/AccountUtils.mjs +1 -1
- package/dist/esm/account/Ed25519Account.d.mts +3 -2
- package/dist/esm/account/Ed25519Account.mjs +1 -1
- package/dist/esm/account/EphemeralKeyPair.d.mts +1 -0
- package/dist/esm/account/EphemeralKeyPair.mjs +1 -1
- package/dist/esm/account/FederatedKeylessAccount.d.mts +1 -0
- package/dist/esm/account/FederatedKeylessAccount.mjs +1 -1
- package/dist/esm/account/KeylessAccount.d.mts +1 -0
- package/dist/esm/account/KeylessAccount.mjs +1 -1
- package/dist/esm/account/MultiEd25519Account.d.mts +108 -0
- package/dist/esm/account/MultiEd25519Account.mjs +2 -0
- package/dist/esm/account/MultiKeyAccount.d.mts +2 -2
- package/dist/esm/account/MultiKeyAccount.mjs +1 -1
- package/dist/esm/account/SingleKeyAccount.d.mts +1 -0
- package/dist/esm/account/SingleKeyAccount.mjs +1 -1
- package/dist/esm/account/index.d.mts +4 -0
- package/dist/esm/account/index.mjs +1 -1
- package/dist/esm/account/utils.d.mts +1 -0
- package/dist/esm/account/utils.mjs +1 -1
- package/dist/esm/api/account/abstraction.d.mts +209 -0
- package/dist/esm/api/account/abstraction.mjs +2 -0
- package/dist/esm/api/account.d.mts +4 -1
- package/dist/esm/api/account.mjs +1 -1
- package/dist/esm/api/ans.d.mts +1 -0
- package/dist/esm/api/ans.mjs +1 -1
- package/dist/esm/api/aptos.d.mts +6 -1
- package/dist/esm/api/aptos.mjs +1 -1
- package/dist/esm/api/aptosConfig.d.mts +1 -0
- package/dist/esm/api/aptosConfig.mjs +1 -1
- package/dist/esm/api/coin.d.mts +3 -2
- package/dist/esm/api/coin.mjs +1 -1
- package/dist/esm/api/digitalAsset.d.mts +1 -0
- package/dist/esm/api/digitalAsset.mjs +1 -1
- package/dist/esm/api/event.d.mts +1 -0
- package/dist/esm/api/event.mjs +1 -1
- package/dist/esm/api/experimental.d.mts +83 -0
- package/dist/esm/api/experimental.mjs +2 -0
- package/dist/esm/api/experimental.mjs.map +1 -0
- package/dist/esm/api/faucet.d.mts +1 -0
- package/dist/esm/api/faucet.mjs +1 -1
- package/dist/esm/api/fungibleAsset.d.mts +1 -0
- package/dist/esm/api/fungibleAsset.mjs +1 -1
- package/dist/esm/api/general.d.mts +1 -0
- package/dist/esm/api/general.mjs +1 -1
- package/dist/esm/api/index.d.mts +4 -0
- package/dist/esm/api/index.mjs +1 -1
- package/dist/esm/api/keyless.d.mts +2 -1
- package/dist/esm/api/keyless.mjs +1 -1
- package/dist/esm/api/object.d.mts +1 -0
- package/dist/esm/api/object.mjs +1 -1
- package/dist/esm/api/staking.d.mts +1 -0
- package/dist/esm/api/staking.mjs +1 -1
- package/dist/esm/api/table.d.mts +1 -0
- package/dist/esm/api/table.mjs +1 -1
- package/dist/esm/api/transaction.d.mts +2 -0
- package/dist/esm/api/transaction.mjs +1 -1
- package/dist/esm/api/transactionSubmission/build.d.mts +66 -0
- package/dist/esm/api/transactionSubmission/build.mjs +1 -1
- package/dist/esm/api/transactionSubmission/management.d.mts +1 -0
- package/dist/esm/api/transactionSubmission/management.mjs +1 -1
- package/dist/esm/api/transactionSubmission/sign.d.mts +1 -0
- package/dist/esm/api/transactionSubmission/sign.mjs +1 -1
- package/dist/esm/api/transactionSubmission/sign.mjs.map +1 -1
- package/dist/esm/api/transactionSubmission/simulate.d.mts +1 -0
- package/dist/esm/api/transactionSubmission/simulate.mjs +1 -1
- package/dist/esm/api/transactionSubmission/submit.d.mts +1 -0
- package/dist/esm/api/transactionSubmission/submit.mjs +1 -1
- package/dist/esm/api/utils.d.mts +1 -0
- package/dist/esm/api/utils.mjs +1 -1
- package/dist/esm/bcs/consts.d.mts +1 -0
- package/dist/esm/bcs/deserializer.d.mts +1 -0
- package/dist/esm/bcs/deserializer.mjs +1 -1
- package/dist/esm/bcs/index.d.mts +1 -0
- package/dist/esm/bcs/index.mjs +1 -1
- package/dist/esm/bcs/serializable/entryFunctionBytes.d.mts +1 -0
- package/dist/esm/bcs/serializable/entryFunctionBytes.mjs +1 -1
- package/dist/esm/bcs/serializable/fixedBytes.d.mts +1 -0
- package/dist/esm/bcs/serializable/fixedBytes.mjs +1 -1
- package/dist/esm/bcs/serializable/movePrimitives.d.mts +1 -0
- package/dist/esm/bcs/serializable/movePrimitives.mjs +1 -1
- package/dist/esm/bcs/serializable/moveStructs.d.mts +1 -0
- package/dist/esm/bcs/serializable/moveStructs.mjs +1 -1
- package/dist/esm/bcs/serializer.d.mts +1 -0
- package/dist/esm/bcs/serializer.mjs +1 -1
- package/dist/esm/{chunk-7IY3DTEF.mjs → chunk-27ESCVVC.mjs} +2 -2
- package/dist/esm/chunk-2SAYQUUX.mjs +2 -0
- package/dist/esm/chunk-2SAYQUUX.mjs.map +1 -0
- package/dist/esm/{chunk-VUIHJIMX.mjs → chunk-2TRQERBL.mjs} +2 -2
- package/dist/esm/chunk-2V636AYW.mjs +2 -0
- package/dist/esm/{chunk-XTJOA5QN.mjs → chunk-2YKERRHD.mjs} +2 -2
- package/dist/esm/chunk-2ZLFQBT2.mjs +2 -0
- package/dist/esm/chunk-2ZLFQBT2.mjs.map +1 -0
- package/dist/esm/{chunk-5YWH3XPN.mjs → chunk-3LDVJ2YK.mjs} +2 -2
- package/dist/esm/chunk-3OLFJ65O.mjs +2 -0
- package/dist/esm/chunk-3OLFJ65O.mjs.map +1 -0
- package/dist/esm/{chunk-ONTWK5FU.mjs → chunk-44EHAKKW.mjs} +2 -2
- package/dist/esm/{chunk-OEQ2U7GK.mjs → chunk-53IBOHXB.mjs} +2 -2
- package/dist/esm/{chunk-YCQUYDZI.mjs → chunk-5H5D6QVX.mjs} +2 -2
- package/dist/esm/{chunk-G4O6FXCF.mjs → chunk-5W2ERBGY.mjs} +2 -2
- package/dist/esm/{chunk-NYETBDSR.mjs → chunk-67A5U2X6.mjs} +2 -2
- package/dist/esm/{chunk-AXYARCYT.mjs → chunk-6IJZRG3U.mjs} +2 -2
- package/dist/esm/{chunk-N4DM5FYH.mjs → chunk-6KZT3KFZ.mjs} +2 -2
- package/dist/esm/chunk-752TOOCA.mjs +2 -0
- package/dist/esm/chunk-752TOOCA.mjs.map +1 -0
- package/dist/esm/{chunk-2WCATZVL.mjs → chunk-7A2KHJ3D.mjs} +2 -2
- package/dist/esm/{chunk-ROT6S6BM.mjs → chunk-7CRQNXR5.mjs} +2 -2
- package/dist/esm/{chunk-FZD5RWSZ.mjs → chunk-7OUPEQRN.mjs} +2 -2
- package/dist/esm/chunk-A3VO773Q.mjs +2 -0
- package/dist/esm/{chunk-OHZURQPY.mjs → chunk-AEGA5N2W.mjs} +2 -2
- package/dist/esm/{chunk-BI3BTSUB.mjs → chunk-AIPHJFJL.mjs} +2 -2
- package/dist/esm/chunk-AQWKKSRN.mjs +2 -0
- package/dist/esm/chunk-AQWKKSRN.mjs.map +1 -0
- package/dist/esm/{chunk-4EUS4E6S.mjs → chunk-B23VO5TB.mjs} +2 -2
- package/dist/esm/chunk-BHVSIRNF.mjs +2 -0
- package/dist/esm/chunk-BHVSIRNF.mjs.map +1 -0
- package/dist/esm/chunk-BMPHQ3E7.mjs +2 -0
- package/dist/esm/chunk-BPHCRTHD.mjs +2 -0
- package/dist/esm/chunk-BPHCRTHD.mjs.map +1 -0
- package/dist/esm/{chunk-DYATTONT.mjs → chunk-BQYKFATL.mjs} +2 -2
- package/dist/esm/chunk-BY3XFRUM.mjs +2 -0
- package/dist/esm/{chunk-77AEKF7K.mjs.map → chunk-BY3XFRUM.mjs.map} +1 -1
- package/dist/esm/chunk-CGTMSLVZ.mjs +2 -0
- package/dist/esm/chunk-CGTMSLVZ.mjs.map +1 -0
- package/dist/esm/{chunk-QQEK7WVP.mjs → chunk-CPAAEEF4.mjs} +2 -2
- package/dist/esm/{chunk-ZAIVZDOL.mjs → chunk-CPFQUFVD.mjs} +2 -2
- package/dist/esm/chunk-CXLNTATW.mjs +2 -0
- package/dist/esm/chunk-CXLNTATW.mjs.map +1 -0
- package/dist/esm/{chunk-ZPV7HPA4.mjs → chunk-DAJFOJ3L.mjs} +2 -2
- package/dist/esm/chunk-DOVH6HPL.mjs +2 -0
- package/dist/esm/{chunk-KOORZTHC.mjs → chunk-E5PAUR4N.mjs} +2 -2
- package/dist/esm/{chunk-E7JDVKFY.mjs → chunk-EGCL6KA6.mjs} +2 -2
- package/dist/esm/{chunk-TOBQ5UE6.mjs → chunk-ERLDXTIY.mjs} +2 -2
- package/dist/esm/chunk-FJ5J7CVW.mjs +2 -0
- package/dist/esm/chunk-FJ5J7CVW.mjs.map +1 -0
- package/dist/esm/{chunk-X6UNY6YM.mjs → chunk-FOEPRHAC.mjs} +2 -2
- package/dist/esm/{chunk-XYB6KYKW.mjs → chunk-G5F5ZOH5.mjs} +2 -2
- package/dist/esm/chunk-GFPEB22G.mjs +1 -0
- package/dist/esm/chunk-GFPEB22G.mjs.map +1 -0
- package/dist/esm/{chunk-AZWVCBK2.mjs → chunk-GI4AR6DQ.mjs} +2 -2
- package/dist/esm/{chunk-3RCAJICY.mjs → chunk-GRRBXHVG.mjs} +2 -2
- package/dist/esm/{chunk-5EYTHMRZ.mjs → chunk-GTVMJJQQ.mjs} +2 -2
- package/dist/esm/{chunk-2TJ6OTVD.mjs → chunk-GU4MD5ST.mjs} +2 -2
- package/dist/esm/chunk-H4YAL2IL.mjs +2 -0
- package/dist/esm/{chunk-ZGVNZE7J.mjs → chunk-HBTJN4RJ.mjs} +2 -2
- package/dist/esm/{chunk-IDTLNF4M.mjs → chunk-HHWJHOFZ.mjs} +2 -2
- package/dist/esm/{chunk-XZ4JRYCE.mjs → chunk-HKL4MFNL.mjs} +2 -2
- package/dist/esm/{chunk-IEUEMBFD.mjs → chunk-HVIF6DW6.mjs} +2 -2
- package/dist/esm/{chunk-MWBRD43V.mjs → chunk-HYJQHVDZ.mjs} +2 -2
- package/dist/esm/chunk-HYJQHVDZ.mjs.map +1 -0
- package/dist/esm/{chunk-JJM6ELMS.mjs → chunk-ILUFGYLO.mjs} +2 -2
- package/dist/esm/chunk-IMTC3J2M.mjs +2 -0
- package/dist/esm/chunk-IMTC3J2M.mjs.map +1 -0
- package/dist/esm/chunk-IMYNN4TW.mjs +2 -0
- package/dist/esm/chunk-IMYNN4TW.mjs.map +1 -0
- package/dist/esm/{chunk-DOQV5BSA.mjs → chunk-IOHESHLR.mjs} +2 -2
- package/dist/esm/{chunk-NBNZ53ZV.mjs → chunk-JNNFNYDO.mjs} +2 -2
- package/dist/esm/{chunk-2UXW3EB7.mjs → chunk-K233I26C.mjs} +2 -2
- package/dist/esm/{chunk-VV4HCOJQ.mjs → chunk-KK5HUWF6.mjs} +2 -2
- package/dist/esm/chunk-KSLLV3ZC.mjs +2 -0
- package/dist/esm/chunk-KSLLV3ZC.mjs.map +1 -0
- package/dist/esm/{chunk-67ZVDKJF.mjs → chunk-L6KVC7CJ.mjs} +2 -2
- package/dist/esm/{chunk-Q4C4U6I4.mjs → chunk-LQOSHBB7.mjs} +2 -2
- package/dist/esm/{chunk-XKUIMGKU.mjs → chunk-LS3IDL2N.mjs} +2 -2
- package/dist/esm/{chunk-2N5KYALM.mjs → chunk-MAWGZICD.mjs} +2 -2
- package/dist/esm/{chunk-S7RZGC56.mjs → chunk-MFLHAVIW.mjs} +2 -2
- package/dist/esm/chunk-OLGEN23M.mjs +2 -0
- package/dist/esm/chunk-OLGEN23M.mjs.map +1 -0
- package/dist/esm/{chunk-MCLYDS3O.mjs → chunk-ONGH5DXZ.mjs} +2 -2
- package/dist/esm/chunk-OPD5EKOA.mjs +2 -0
- package/dist/esm/chunk-OPD5EKOA.mjs.map +1 -0
- package/dist/esm/{chunk-4ZYPDCSP.mjs → chunk-P5CM4C2G.mjs} +2 -2
- package/dist/esm/chunk-PC25RPDV.mjs +2 -0
- package/dist/esm/chunk-PC25RPDV.mjs.map +1 -0
- package/dist/esm/{chunk-N6YTF76Q.mjs → chunk-PDAWVDI7.mjs} +2 -2
- package/dist/esm/chunk-PIPDQFL2.mjs +2 -0
- package/dist/esm/chunk-PIPDQFL2.mjs.map +1 -0
- package/dist/esm/{chunk-43GCGE6C.mjs → chunk-PWGTRRSJ.mjs} +2 -2
- package/dist/esm/{chunk-P7A5RILV.mjs → chunk-PYY2RXFP.mjs} +2 -2
- package/dist/esm/chunk-PYY2RXFP.mjs.map +1 -0
- package/dist/esm/chunk-QUJM5W4L.mjs +2 -0
- package/dist/esm/chunk-QUJM5W4L.mjs.map +1 -0
- package/dist/esm/{chunk-2FBJWTJD.mjs → chunk-QYJKCRVA.mjs} +2 -2
- package/dist/esm/chunk-R6QCPXQG.mjs +2 -0
- package/dist/esm/chunk-R6QCPXQG.mjs.map +1 -0
- package/dist/esm/{chunk-6YHDZLRN.mjs → chunk-RDPWCN4B.mjs} +2 -2
- package/dist/esm/{chunk-MT2RJ7H3.mjs → chunk-RIINVEZA.mjs} +2 -2
- package/dist/esm/{chunk-EBMEXURY.mjs → chunk-RXHER6EA.mjs} +2 -2
- package/dist/esm/chunk-SJDHW55X.mjs +2 -0
- package/dist/esm/chunk-SJDHW55X.mjs.map +1 -0
- package/dist/esm/{chunk-UC23V7PU.mjs → chunk-T7X4GZDU.mjs} +2 -2
- package/dist/esm/{chunk-QHEKBHNU.mjs → chunk-TH5JCPN2.mjs} +2 -2
- package/dist/esm/{chunk-ORMOQWWH.mjs → chunk-TKXEVD7A.mjs} +2 -2
- package/dist/esm/{chunk-FN4C3CKC.mjs → chunk-TTY5GFMN.mjs} +2 -2
- package/dist/esm/chunk-TWETGZ3W.mjs +2 -0
- package/dist/esm/chunk-TWETGZ3W.mjs.map +1 -0
- package/dist/esm/{chunk-E5HGSOG2.mjs → chunk-U4DEYWFT.mjs} +2 -2
- package/dist/esm/chunk-UIRAXHDH.mjs +1 -0
- package/dist/esm/chunk-UIRAXHDH.mjs.map +1 -0
- package/dist/esm/{chunk-OROPNHRY.mjs → chunk-UJJGIPOA.mjs} +2 -2
- package/dist/esm/{chunk-CWKNJZB6.mjs → chunk-US2HZFOM.mjs} +2 -2
- package/dist/esm/{chunk-XY43TPRH.mjs → chunk-VDYUMBOT.mjs} +2 -2
- package/dist/esm/chunk-VHY6ZATX.mjs +2 -0
- package/dist/esm/chunk-VHY6ZATX.mjs.map +1 -0
- package/dist/esm/chunk-VWZEJTGP.mjs +4 -0
- package/dist/esm/chunk-VWZEJTGP.mjs.map +1 -0
- package/dist/esm/{chunk-WUWPN7XV.mjs → chunk-W2C5KRUQ.mjs} +2 -2
- package/dist/esm/{chunk-OR6GFWLG.mjs → chunk-W4SMZ6IW.mjs} +2 -2
- package/dist/esm/chunk-WFKPVKU3.mjs +2 -0
- package/dist/esm/chunk-WFKPVKU3.mjs.map +1 -0
- package/dist/esm/{chunk-5VMAJTTV.mjs → chunk-WHVCUVZP.mjs} +2 -2
- package/dist/esm/{chunk-WQRGDSPD.mjs → chunk-WLDYBSOG.mjs} +2 -2
- package/dist/esm/chunk-XRVZAEQO.mjs +2 -0
- package/dist/esm/chunk-XRVZAEQO.mjs.map +1 -0
- package/dist/esm/chunk-XSBUL2WP.mjs +2 -0
- package/dist/esm/chunk-XSBUL2WP.mjs.map +1 -0
- package/dist/esm/{chunk-BGSEBFFC.mjs → chunk-XW3BXTCZ.mjs} +2 -2
- package/dist/esm/{chunk-6CXMDJQR.mjs → chunk-Y65PKZLK.mjs} +2 -2
- package/dist/esm/{chunk-NWLJ6RW7.mjs → chunk-YAGIE4GN.mjs} +2 -2
- package/dist/esm/{chunk-M77M6NSB.mjs → chunk-YLUULY6G.mjs} +2 -2
- package/dist/esm/{chunk-5EBUWO2M.mjs → chunk-YWSDONJJ.mjs} +2 -2
- package/dist/esm/{chunk-V6VPMNWJ.mjs → chunk-YXYYII5S.mjs} +2 -2
- package/dist/esm/{chunk-XTOIL6MB.mjs → chunk-ZD2TY5N3.mjs} +2 -2
- package/dist/esm/{chunk-FIEMUPXF.mjs → chunk-ZS2IVRHT.mjs} +2 -2
- package/dist/esm/cli/index.d.mts +1 -0
- package/dist/esm/cli/index.mjs +1 -1
- package/dist/esm/cli/localNode.mjs +1 -1
- package/dist/esm/cli/move.d.mts +1 -0
- package/dist/esm/client/core.d.mts +37 -1
- package/dist/esm/client/core.mjs +1 -1
- package/dist/esm/client/get.d.mts +36 -1
- package/dist/esm/client/get.mjs +1 -1
- package/dist/esm/client/index.d.mts +4 -3
- package/dist/esm/client/index.mjs +1 -1
- package/dist/esm/client/post.d.mts +35 -1
- package/dist/esm/client/post.mjs +1 -1
- package/dist/esm/core/account/index.d.mts +1 -0
- package/dist/esm/core/account/index.mjs +1 -1
- package/dist/esm/core/account/utils/address.d.mts +1 -0
- package/dist/esm/core/account/utils/address.mjs +1 -1
- package/dist/esm/core/account/utils/index.d.mts +1 -0
- package/dist/esm/core/account/utils/index.mjs +1 -1
- package/dist/esm/core/accountAddress.d.mts +1 -0
- package/dist/esm/core/accountAddress.mjs +1 -1
- package/dist/esm/core/authenticationKey.d.mts +1 -0
- package/dist/esm/core/authenticationKey.mjs +1 -1
- package/dist/esm/core/crypto/abstraction.d.mts +30 -0
- package/dist/esm/core/crypto/abstraction.mjs +2 -0
- package/dist/esm/core/crypto/abstraction.mjs.map +1 -0
- package/dist/esm/core/crypto/ed25519.d.mts +1 -0
- package/dist/esm/core/crypto/ed25519.mjs +1 -1
- package/dist/esm/core/crypto/ephemeral.d.mts +1 -0
- package/dist/esm/core/crypto/ephemeral.mjs +1 -1
- package/dist/esm/core/crypto/federatedKeyless.d.mts +1 -0
- package/dist/esm/core/crypto/federatedKeyless.mjs +1 -1
- package/dist/esm/core/crypto/index.d.mts +2 -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.d.mts +18 -2
- package/dist/esm/core/crypto/multiEd25519.mjs +1 -1
- package/dist/esm/core/crypto/multiKey.d.mts +34 -15
- package/dist/esm/core/crypto/multiKey.mjs +1 -1
- package/dist/esm/core/crypto/privateKey.d.mts +1 -0
- package/dist/esm/core/crypto/privateKey.mjs +1 -1
- package/dist/esm/core/crypto/proof.d.mts +1 -0
- package/dist/esm/core/crypto/proof.mjs +1 -1
- package/dist/esm/core/crypto/publicKey.d.mts +1 -0
- 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.d.mts +1 -0
- package/dist/esm/core/crypto/signature.mjs +1 -1
- package/dist/esm/core/crypto/singleKey.d.mts +1 -0
- package/dist/esm/core/crypto/singleKey.mjs +1 -1
- package/dist/esm/core/crypto/utils.d.mts +1 -0
- package/dist/esm/core/crypto/utils.mjs +1 -1
- package/dist/esm/core/hex.d.mts +1 -0
- package/dist/esm/core/hex.mjs +1 -1
- package/dist/esm/core/index.d.mts +2 -1
- package/dist/esm/core/index.mjs +1 -1
- package/dist/esm/errors/index.d.mts +1 -0
- package/dist/esm/errors/index.mjs +1 -1
- package/dist/esm/index.d.mts +16 -9
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/internal/abstraction.d.mts +55 -0
- package/dist/esm/internal/abstraction.mjs +2 -0
- package/dist/esm/internal/abstraction.mjs.map +1 -0
- package/dist/esm/internal/account.d.mts +1 -0
- package/dist/esm/internal/account.mjs +1 -1
- package/dist/esm/internal/ans.d.mts +1 -0
- package/dist/esm/internal/ans.mjs +1 -1
- package/dist/esm/internal/coin.d.mts +1 -0
- package/dist/esm/internal/coin.mjs +1 -1
- package/dist/esm/internal/digitalAsset.d.mts +1 -0
- package/dist/esm/internal/digitalAsset.mjs +1 -1
- package/dist/esm/internal/event.d.mts +1 -0
- package/dist/esm/internal/event.mjs +1 -1
- package/dist/esm/internal/experimental.d.mts +52 -0
- package/dist/esm/internal/experimental.mjs +2 -0
- package/dist/esm/internal/experimental.mjs.map +1 -0
- package/dist/esm/internal/faucet.d.mts +1 -0
- package/dist/esm/internal/faucet.mjs +1 -1
- package/dist/esm/internal/fungibleAsset.d.mts +1 -0
- package/dist/esm/internal/fungibleAsset.mjs +1 -1
- package/dist/esm/internal/general.d.mts +1 -0
- package/dist/esm/internal/general.mjs +1 -1
- package/dist/esm/internal/keyless.d.mts +1 -0
- package/dist/esm/internal/keyless.mjs +1 -1
- package/dist/esm/internal/object.d.mts +1 -0
- package/dist/esm/internal/object.mjs +1 -1
- package/dist/esm/internal/staking.d.mts +1 -0
- package/dist/esm/internal/staking.mjs +1 -1
- package/dist/esm/internal/table.d.mts +1 -0
- package/dist/esm/internal/table.mjs +1 -1
- package/dist/esm/internal/transaction.d.mts +1 -0
- package/dist/esm/internal/transaction.mjs +1 -1
- package/dist/esm/internal/transactionSubmission.d.mts +1 -0
- package/dist/esm/internal/transactionSubmission.mjs +1 -1
- package/dist/esm/internal/view.d.mts +1 -0
- package/dist/esm/internal/view.mjs +1 -1
- package/dist/esm/transactions/authenticator/account.d.mts +12 -3
- package/dist/esm/transactions/authenticator/account.mjs +1 -1
- package/dist/esm/transactions/authenticator/index.d.mts +2 -1
- package/dist/esm/transactions/authenticator/index.mjs +1 -1
- package/dist/esm/transactions/authenticator/transaction.d.mts +3 -2
- package/dist/esm/transactions/authenticator/transaction.mjs +1 -1
- package/dist/esm/transactions/index.d.mts +6 -4
- package/dist/esm/transactions/index.mjs +1 -1
- package/dist/esm/transactions/instances/chainId.d.mts +1 -0
- package/dist/esm/transactions/instances/chainId.mjs +1 -1
- package/dist/esm/transactions/instances/identifier.d.mts +1 -0
- package/dist/esm/transactions/instances/identifier.mjs +1 -1
- package/dist/esm/transactions/instances/index.d.mts +1 -0
- package/dist/esm/transactions/instances/index.mjs +1 -1
- package/dist/esm/transactions/instances/moduleId.d.mts +1 -0
- package/dist/esm/transactions/instances/moduleId.mjs +1 -1
- package/dist/esm/transactions/instances/multiAgentTransaction.d.mts +1 -0
- package/dist/esm/transactions/instances/multiAgentTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/rawTransaction.d.mts +1 -0
- package/dist/esm/transactions/instances/rawTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/rotationProofChallenge.d.mts +1 -0
- package/dist/esm/transactions/instances/rotationProofChallenge.mjs +1 -1
- package/dist/esm/transactions/instances/signedTransaction.d.mts +5 -4
- package/dist/esm/transactions/instances/signedTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/simpleTransaction.d.mts +1 -0
- package/dist/esm/transactions/instances/simpleTransaction.mjs +1 -1
- package/dist/esm/transactions/instances/transactionArgument.d.mts +1 -0
- package/dist/esm/transactions/instances/transactionPayload.d.mts +1 -0
- package/dist/esm/transactions/instances/transactionPayload.mjs +1 -1
- package/dist/esm/transactions/management/accountSequenceNumber.d.mts +1 -0
- package/dist/esm/transactions/management/accountSequenceNumber.mjs +1 -1
- package/dist/esm/transactions/management/index.d.mts +1 -0
- package/dist/esm/transactions/management/index.mjs +1 -1
- package/dist/esm/transactions/management/transactionWorker.d.mts +1 -0
- package/dist/esm/transactions/management/transactionWorker.mjs +1 -1
- package/dist/esm/transactions/scriptComposer/index.d.mts +53 -0
- package/dist/esm/transactions/scriptComposer/index.mjs +2 -0
- package/dist/esm/transactions/scriptComposer/index.mjs.map +1 -0
- package/dist/esm/transactions/transactionBuilder/helpers.d.mts +3 -17
- package/dist/esm/transactions/transactionBuilder/helpers.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/index.d.mts +3 -2
- package/dist/esm/transactions/transactionBuilder/index.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/remoteAbi.d.mts +23 -2
- package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/signingMessage.d.mts +1 -0
- package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +1 -1
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.d.mts +1 -0
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +1 -1
- package/dist/esm/transactions/typeTag/index.d.mts +1 -0
- package/dist/esm/transactions/typeTag/index.mjs +1 -1
- package/dist/esm/transactions/typeTag/parser.d.mts +1 -0
- package/dist/esm/transactions/typeTag/parser.mjs +1 -1
- package/dist/esm/transactions/types.d.mts +10 -1
- package/dist/esm/types/abstraction.d.mts +8 -0
- package/dist/esm/types/abstraction.mjs +2 -0
- package/dist/esm/types/abstraction.mjs.map +1 -0
- package/dist/esm/types/index.d.mts +1 -0
- package/dist/esm/types/index.mjs +1 -1
- package/dist/esm/types/types.d.mts +22 -1
- package/dist/esm/types/types.mjs +1 -1
- package/dist/esm/utils/helpers.d.mts +19 -2
- package/dist/esm/utils/helpers.mjs +1 -1
- package/dist/esm/utils/index.d.mts +2 -1
- package/dist/esm/utils/index.mjs +1 -1
- package/dist/esm/utils/normalizeBundle.d.mts +1 -0
- 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 +21 -19
- package/src/account/AbstractedAccount.ts +111 -0
- package/src/account/MultiEd25519Account.ts +154 -0
- package/src/account/MultiKeyAccount.ts +1 -2
- package/src/account/index.ts +2 -0
- package/src/api/account/abstraction.ts +239 -0
- package/src/api/account.ts +7 -2
- package/src/api/aptos.ts +9 -0
- package/src/api/aptosConfig.ts +2 -2
- package/src/api/experimental.ts +64 -0
- package/src/api/transactionSubmission/build.ts +85 -2
- package/src/client/core.ts +120 -0
- package/src/client/get.ts +73 -1
- package/src/client/post.ts +70 -1
- package/src/core/crypto/abstraction.ts +47 -0
- package/src/core/crypto/multiEd25519.ts +19 -3
- package/src/core/crypto/multiKey.ts +76 -52
- package/src/core/hex.ts +3 -1
- package/src/internal/abstraction.ts +79 -0
- package/src/internal/experimental.ts +55 -0
- package/src/internal/view.ts +4 -4
- package/src/transactions/authenticator/account.ts +52 -1
- package/src/transactions/index.ts +1 -0
- package/src/transactions/scriptComposer/index.ts +87 -0
- package/src/transactions/transactionBuilder/helpers.ts +1 -22
- package/src/transactions/transactionBuilder/remoteAbi.ts +62 -1
- package/src/transactions/transactionBuilder/transactionBuilder.ts +9 -1
- package/src/transactions/types.ts +11 -0
- package/src/types/abstraction.ts +6 -0
- package/src/types/index.ts +1 -0
- package/src/types/types.ts +21 -0
- package/src/utils/helpers.ts +28 -1
- package/src/version.ts +1 -1
- package/dist/common/chunk-IHUCZKG2.js +0 -2
- package/dist/common/chunk-IHUCZKG2.js.map +0 -1
- package/dist/esm/chunk-4YLUM62M.mjs +0 -2
- package/dist/esm/chunk-5PXDPMF2.mjs +0 -4
- package/dist/esm/chunk-5PXDPMF2.mjs.map +0 -1
- package/dist/esm/chunk-6IEZPA4H.mjs +0 -2
- package/dist/esm/chunk-6IEZPA4H.mjs.map +0 -1
- package/dist/esm/chunk-6YWYAVFS.mjs +0 -2
- package/dist/esm/chunk-6YWYAVFS.mjs.map +0 -1
- package/dist/esm/chunk-77AEKF7K.mjs +0 -2
- package/dist/esm/chunk-AFEHO5PP.mjs +0 -2
- package/dist/esm/chunk-AFEHO5PP.mjs.map +0 -1
- package/dist/esm/chunk-DAFSKSZ5.mjs +0 -2
- package/dist/esm/chunk-DAFSKSZ5.mjs.map +0 -1
- package/dist/esm/chunk-DPW6ELCQ.mjs +0 -2
- package/dist/esm/chunk-EMURYYVO.mjs +0 -2
- package/dist/esm/chunk-F2ZTBAJJ.mjs +0 -2
- package/dist/esm/chunk-F2ZTBAJJ.mjs.map +0 -1
- package/dist/esm/chunk-FD6FGKYY.mjs +0 -1
- package/dist/esm/chunk-GP4TLDVZ.mjs +0 -1
- package/dist/esm/chunk-HBH2NQKU.mjs +0 -2
- package/dist/esm/chunk-HBH2NQKU.mjs.map +0 -1
- package/dist/esm/chunk-I5OYNCZS.mjs +0 -1
- package/dist/esm/chunk-JBEUUULP.mjs +0 -2
- package/dist/esm/chunk-JBEUUULP.mjs.map +0 -1
- package/dist/esm/chunk-KVM2SGSF.mjs +0 -2
- package/dist/esm/chunk-KVM2SGSF.mjs.map +0 -1
- package/dist/esm/chunk-MLSAZJZK.mjs +0 -2
- package/dist/esm/chunk-MLSAZJZK.mjs.map +0 -1
- package/dist/esm/chunk-MWBRD43V.mjs.map +0 -1
- package/dist/esm/chunk-OSBRPVVI.mjs +0 -2
- package/dist/esm/chunk-OSBRPVVI.mjs.map +0 -1
- package/dist/esm/chunk-P7A5RILV.mjs.map +0 -1
- package/dist/esm/chunk-QHC5DKVZ.mjs +0 -2
- package/dist/esm/chunk-QHC5DKVZ.mjs.map +0 -1
- package/dist/esm/chunk-S4LZMY2L.mjs +0 -2
- package/dist/esm/chunk-S4LZMY2L.mjs.map +0 -1
- package/dist/esm/chunk-STY74NUA.mjs +0 -2
- package/dist/esm/chunk-STY74NUA.mjs.map +0 -1
- package/dist/esm/chunk-U2PRGW4O.mjs +0 -2
- package/dist/esm/chunk-U2PRGW4O.mjs.map +0 -1
- package/dist/esm/chunk-VVXBVJXD.mjs +0 -2
- package/dist/esm/chunk-VVXBVJXD.mjs.map +0 -1
- package/dist/esm/chunk-WCMW2L3P.mjs +0 -2
- package/dist/esm/chunk-XJJVJOX5.mjs +0 -2
- /package/dist/esm/{chunk-FD6FGKYY.mjs.map → account/AbstractedAccount.mjs.map} +0 -0
- /package/dist/esm/{chunk-GP4TLDVZ.mjs.map → account/MultiEd25519Account.mjs.map} +0 -0
- /package/dist/esm/{chunk-I5OYNCZS.mjs.map → api/account/abstraction.mjs.map} +0 -0
- /package/dist/esm/{chunk-7IY3DTEF.mjs.map → chunk-27ESCVVC.mjs.map} +0 -0
- /package/dist/esm/{chunk-VUIHJIMX.mjs.map → chunk-2TRQERBL.mjs.map} +0 -0
- /package/dist/esm/{chunk-XJJVJOX5.mjs.map → chunk-2V636AYW.mjs.map} +0 -0
- /package/dist/esm/{chunk-XTJOA5QN.mjs.map → chunk-2YKERRHD.mjs.map} +0 -0
- /package/dist/esm/{chunk-5YWH3XPN.mjs.map → chunk-3LDVJ2YK.mjs.map} +0 -0
- /package/dist/esm/{chunk-ONTWK5FU.mjs.map → chunk-44EHAKKW.mjs.map} +0 -0
- /package/dist/esm/{chunk-OEQ2U7GK.mjs.map → chunk-53IBOHXB.mjs.map} +0 -0
- /package/dist/esm/{chunk-YCQUYDZI.mjs.map → chunk-5H5D6QVX.mjs.map} +0 -0
- /package/dist/esm/{chunk-G4O6FXCF.mjs.map → chunk-5W2ERBGY.mjs.map} +0 -0
- /package/dist/esm/{chunk-NYETBDSR.mjs.map → chunk-67A5U2X6.mjs.map} +0 -0
- /package/dist/esm/{chunk-AXYARCYT.mjs.map → chunk-6IJZRG3U.mjs.map} +0 -0
- /package/dist/esm/{chunk-N4DM5FYH.mjs.map → chunk-6KZT3KFZ.mjs.map} +0 -0
- /package/dist/esm/{chunk-2WCATZVL.mjs.map → chunk-7A2KHJ3D.mjs.map} +0 -0
- /package/dist/esm/{chunk-ROT6S6BM.mjs.map → chunk-7CRQNXR5.mjs.map} +0 -0
- /package/dist/esm/{chunk-FZD5RWSZ.mjs.map → chunk-7OUPEQRN.mjs.map} +0 -0
- /package/dist/esm/{chunk-WCMW2L3P.mjs.map → chunk-A3VO773Q.mjs.map} +0 -0
- /package/dist/esm/{chunk-OHZURQPY.mjs.map → chunk-AEGA5N2W.mjs.map} +0 -0
- /package/dist/esm/{chunk-BI3BTSUB.mjs.map → chunk-AIPHJFJL.mjs.map} +0 -0
- /package/dist/esm/{chunk-4EUS4E6S.mjs.map → chunk-B23VO5TB.mjs.map} +0 -0
- /package/dist/esm/{chunk-4YLUM62M.mjs.map → chunk-BMPHQ3E7.mjs.map} +0 -0
- /package/dist/esm/{chunk-DYATTONT.mjs.map → chunk-BQYKFATL.mjs.map} +0 -0
- /package/dist/esm/{chunk-QQEK7WVP.mjs.map → chunk-CPAAEEF4.mjs.map} +0 -0
- /package/dist/esm/{chunk-ZAIVZDOL.mjs.map → chunk-CPFQUFVD.mjs.map} +0 -0
- /package/dist/esm/{chunk-ZPV7HPA4.mjs.map → chunk-DAJFOJ3L.mjs.map} +0 -0
- /package/dist/esm/{chunk-DPW6ELCQ.mjs.map → chunk-DOVH6HPL.mjs.map} +0 -0
- /package/dist/esm/{chunk-KOORZTHC.mjs.map → chunk-E5PAUR4N.mjs.map} +0 -0
- /package/dist/esm/{chunk-E7JDVKFY.mjs.map → chunk-EGCL6KA6.mjs.map} +0 -0
- /package/dist/esm/{chunk-TOBQ5UE6.mjs.map → chunk-ERLDXTIY.mjs.map} +0 -0
- /package/dist/esm/{chunk-X6UNY6YM.mjs.map → chunk-FOEPRHAC.mjs.map} +0 -0
- /package/dist/esm/{chunk-XYB6KYKW.mjs.map → chunk-G5F5ZOH5.mjs.map} +0 -0
- /package/dist/esm/{chunk-AZWVCBK2.mjs.map → chunk-GI4AR6DQ.mjs.map} +0 -0
- /package/dist/esm/{chunk-3RCAJICY.mjs.map → chunk-GRRBXHVG.mjs.map} +0 -0
- /package/dist/esm/{chunk-5EYTHMRZ.mjs.map → chunk-GTVMJJQQ.mjs.map} +0 -0
- /package/dist/esm/{chunk-2TJ6OTVD.mjs.map → chunk-GU4MD5ST.mjs.map} +0 -0
- /package/dist/esm/{chunk-EMURYYVO.mjs.map → chunk-H4YAL2IL.mjs.map} +0 -0
- /package/dist/esm/{chunk-ZGVNZE7J.mjs.map → chunk-HBTJN4RJ.mjs.map} +0 -0
- /package/dist/esm/{chunk-IDTLNF4M.mjs.map → chunk-HHWJHOFZ.mjs.map} +0 -0
- /package/dist/esm/{chunk-XZ4JRYCE.mjs.map → chunk-HKL4MFNL.mjs.map} +0 -0
- /package/dist/esm/{chunk-IEUEMBFD.mjs.map → chunk-HVIF6DW6.mjs.map} +0 -0
- /package/dist/esm/{chunk-JJM6ELMS.mjs.map → chunk-ILUFGYLO.mjs.map} +0 -0
- /package/dist/esm/{chunk-DOQV5BSA.mjs.map → chunk-IOHESHLR.mjs.map} +0 -0
- /package/dist/esm/{chunk-NBNZ53ZV.mjs.map → chunk-JNNFNYDO.mjs.map} +0 -0
- /package/dist/esm/{chunk-2UXW3EB7.mjs.map → chunk-K233I26C.mjs.map} +0 -0
- /package/dist/esm/{chunk-VV4HCOJQ.mjs.map → chunk-KK5HUWF6.mjs.map} +0 -0
- /package/dist/esm/{chunk-67ZVDKJF.mjs.map → chunk-L6KVC7CJ.mjs.map} +0 -0
- /package/dist/esm/{chunk-Q4C4U6I4.mjs.map → chunk-LQOSHBB7.mjs.map} +0 -0
- /package/dist/esm/{chunk-XKUIMGKU.mjs.map → chunk-LS3IDL2N.mjs.map} +0 -0
- /package/dist/esm/{chunk-2N5KYALM.mjs.map → chunk-MAWGZICD.mjs.map} +0 -0
- /package/dist/esm/{chunk-S7RZGC56.mjs.map → chunk-MFLHAVIW.mjs.map} +0 -0
- /package/dist/esm/{chunk-MCLYDS3O.mjs.map → chunk-ONGH5DXZ.mjs.map} +0 -0
- /package/dist/esm/{chunk-4ZYPDCSP.mjs.map → chunk-P5CM4C2G.mjs.map} +0 -0
- /package/dist/esm/{chunk-N6YTF76Q.mjs.map → chunk-PDAWVDI7.mjs.map} +0 -0
- /package/dist/esm/{chunk-43GCGE6C.mjs.map → chunk-PWGTRRSJ.mjs.map} +0 -0
- /package/dist/esm/{chunk-2FBJWTJD.mjs.map → chunk-QYJKCRVA.mjs.map} +0 -0
- /package/dist/esm/{chunk-6YHDZLRN.mjs.map → chunk-RDPWCN4B.mjs.map} +0 -0
- /package/dist/esm/{chunk-MT2RJ7H3.mjs.map → chunk-RIINVEZA.mjs.map} +0 -0
- /package/dist/esm/{chunk-EBMEXURY.mjs.map → chunk-RXHER6EA.mjs.map} +0 -0
- /package/dist/esm/{chunk-UC23V7PU.mjs.map → chunk-T7X4GZDU.mjs.map} +0 -0
- /package/dist/esm/{chunk-QHEKBHNU.mjs.map → chunk-TH5JCPN2.mjs.map} +0 -0
- /package/dist/esm/{chunk-ORMOQWWH.mjs.map → chunk-TKXEVD7A.mjs.map} +0 -0
- /package/dist/esm/{chunk-FN4C3CKC.mjs.map → chunk-TTY5GFMN.mjs.map} +0 -0
- /package/dist/esm/{chunk-E5HGSOG2.mjs.map → chunk-U4DEYWFT.mjs.map} +0 -0
- /package/dist/esm/{chunk-OROPNHRY.mjs.map → chunk-UJJGIPOA.mjs.map} +0 -0
- /package/dist/esm/{chunk-CWKNJZB6.mjs.map → chunk-US2HZFOM.mjs.map} +0 -0
- /package/dist/esm/{chunk-XY43TPRH.mjs.map → chunk-VDYUMBOT.mjs.map} +0 -0
- /package/dist/esm/{chunk-WUWPN7XV.mjs.map → chunk-W2C5KRUQ.mjs.map} +0 -0
- /package/dist/esm/{chunk-OR6GFWLG.mjs.map → chunk-W4SMZ6IW.mjs.map} +0 -0
- /package/dist/esm/{chunk-5VMAJTTV.mjs.map → chunk-WHVCUVZP.mjs.map} +0 -0
- /package/dist/esm/{chunk-WQRGDSPD.mjs.map → chunk-WLDYBSOG.mjs.map} +0 -0
- /package/dist/esm/{chunk-BGSEBFFC.mjs.map → chunk-XW3BXTCZ.mjs.map} +0 -0
- /package/dist/esm/{chunk-6CXMDJQR.mjs.map → chunk-Y65PKZLK.mjs.map} +0 -0
- /package/dist/esm/{chunk-NWLJ6RW7.mjs.map → chunk-YAGIE4GN.mjs.map} +0 -0
- /package/dist/esm/{chunk-M77M6NSB.mjs.map → chunk-YLUULY6G.mjs.map} +0 -0
- /package/dist/esm/{chunk-5EBUWO2M.mjs.map → chunk-YWSDONJJ.mjs.map} +0 -0
- /package/dist/esm/{chunk-V6VPMNWJ.mjs.map → chunk-YXYYII5S.mjs.map} +0 -0
- /package/dist/esm/{chunk-XTOIL6MB.mjs.map → chunk-ZD2TY5N3.mjs.map} +0 -0
- /package/dist/esm/{chunk-FIEMUPXF.mjs.map → chunk-ZS2IVRHT.mjs.map} +0 -0
|
@@ -23,6 +23,79 @@ function bitCount(byte: number) {
|
|
|
23
23
|
}
|
|
24
24
|
/* eslint-enable no-bitwise */
|
|
25
25
|
|
|
26
|
+
export abstract class AbstractMultiKey extends AccountPublicKey {
|
|
27
|
+
publicKeys: PublicKey[];
|
|
28
|
+
|
|
29
|
+
constructor(args: { publicKeys: PublicKey[] }) {
|
|
30
|
+
super();
|
|
31
|
+
this.publicKeys = args.publicKeys;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Create a bitmap that holds the mapping from the original public keys
|
|
36
|
+
* to the signatures passed in
|
|
37
|
+
*
|
|
38
|
+
* @param args.bits array of the index mapping to the matching public keys
|
|
39
|
+
* @returns Uint8array bit map
|
|
40
|
+
* @group Implementation
|
|
41
|
+
* @category Serialization
|
|
42
|
+
*/
|
|
43
|
+
createBitmap(args: { bits: number[] }): Uint8Array {
|
|
44
|
+
const { bits } = args;
|
|
45
|
+
// Bits are read from left to right. e.g. 0b10000000 represents the first bit is set in one byte.
|
|
46
|
+
// The decimal value of 0b10000000 is 128.
|
|
47
|
+
const firstBitInByte = 128;
|
|
48
|
+
const bitmap = new Uint8Array([0, 0, 0, 0]);
|
|
49
|
+
|
|
50
|
+
// Check if duplicates exist in bits
|
|
51
|
+
const dupCheckSet = new Set();
|
|
52
|
+
|
|
53
|
+
bits.forEach((bit: number, idx: number) => {
|
|
54
|
+
if (idx + 1 > this.publicKeys.length) {
|
|
55
|
+
throw new Error(`Signature index ${idx + 1} is out of public keys range, ${this.publicKeys.length}.`);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (dupCheckSet.has(bit)) {
|
|
59
|
+
throw new Error(`Duplicate bit ${bit} detected.`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
dupCheckSet.add(bit);
|
|
63
|
+
|
|
64
|
+
const byteOffset = Math.floor(bit / 8);
|
|
65
|
+
|
|
66
|
+
let byte = bitmap[byteOffset];
|
|
67
|
+
|
|
68
|
+
// eslint-disable-next-line no-bitwise
|
|
69
|
+
byte |= firstBitInByte >> bit % 8;
|
|
70
|
+
|
|
71
|
+
bitmap[byteOffset] = byte;
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
return bitmap;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Get the index of the provided public key.
|
|
79
|
+
*
|
|
80
|
+
* This function retrieves the index of a specified public key within the MultiKey.
|
|
81
|
+
* If the public key does not exist, it throws an error.
|
|
82
|
+
*
|
|
83
|
+
* @param publicKey - The public key to find the index for.
|
|
84
|
+
* @returns The corresponding index of the public key, if it exists.
|
|
85
|
+
* @throws Error - If the public key is not found in the MultiKey.
|
|
86
|
+
* @group Implementation
|
|
87
|
+
* @category Serialization
|
|
88
|
+
*/
|
|
89
|
+
getIndex(publicKey: PublicKey): number {
|
|
90
|
+
const index = this.publicKeys.findIndex((pk) => pk.toString() === publicKey.toString());
|
|
91
|
+
|
|
92
|
+
if (index !== -1) {
|
|
93
|
+
return index;
|
|
94
|
+
}
|
|
95
|
+
throw new Error(`Public key ${publicKey} not found in multi key set ${this.publicKeys}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
26
99
|
/**
|
|
27
100
|
* Represents a multi-key authentication scheme for accounts, allowing multiple public keys
|
|
28
101
|
* to be associated with a single account. This class enforces a minimum number of valid signatures
|
|
@@ -34,7 +107,7 @@ function bitCount(byte: number) {
|
|
|
34
107
|
* @group Implementation
|
|
35
108
|
* @category Serialization
|
|
36
109
|
*/
|
|
37
|
-
export class MultiKey extends
|
|
110
|
+
export class MultiKey extends AbstractMultiKey {
|
|
38
111
|
/**
|
|
39
112
|
* List of any public keys
|
|
40
113
|
* @group Implementation
|
|
@@ -65,8 +138,8 @@ export class MultiKey extends AccountPublicKey {
|
|
|
65
138
|
*/
|
|
66
139
|
// region Constructors
|
|
67
140
|
constructor(args: { publicKeys: Array<PublicKey>; signaturesRequired: number }) {
|
|
68
|
-
super();
|
|
69
141
|
const { publicKeys, signaturesRequired } = args;
|
|
142
|
+
super({ publicKeys });
|
|
70
143
|
|
|
71
144
|
// Validate number of public keys is greater than signature required
|
|
72
145
|
if (signaturesRequired < 1) {
|
|
@@ -156,49 +229,6 @@ export class MultiKey extends AccountPublicKey {
|
|
|
156
229
|
|
|
157
230
|
// endregion
|
|
158
231
|
|
|
159
|
-
/**
|
|
160
|
-
* Create a bitmap that holds the mapping from the original public keys
|
|
161
|
-
* to the signatures passed in
|
|
162
|
-
*
|
|
163
|
-
* @param args.bits array of the index mapping to the matching public keys
|
|
164
|
-
* @returns Uint8array bit map
|
|
165
|
-
* @group Implementation
|
|
166
|
-
* @category Serialization
|
|
167
|
-
*/
|
|
168
|
-
createBitmap(args: { bits: number[] }): Uint8Array {
|
|
169
|
-
const { bits } = args;
|
|
170
|
-
// Bits are read from left to right. e.g. 0b10000000 represents the first bit is set in one byte.
|
|
171
|
-
// The decimal value of 0b10000000 is 128.
|
|
172
|
-
const firstBitInByte = 128;
|
|
173
|
-
const bitmap = new Uint8Array([0, 0, 0, 0]);
|
|
174
|
-
|
|
175
|
-
// Check if duplicates exist in bits
|
|
176
|
-
const dupCheckSet = new Set();
|
|
177
|
-
|
|
178
|
-
bits.forEach((bit: number, idx: number) => {
|
|
179
|
-
if (idx + 1 > this.publicKeys.length) {
|
|
180
|
-
throw new Error(`Signature index ${idx + 1} is out of public keys range, ${this.publicKeys.length}.`);
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
if (dupCheckSet.has(bit)) {
|
|
184
|
-
throw new Error(`Duplicate bit ${bit} detected.`);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
dupCheckSet.add(bit);
|
|
188
|
-
|
|
189
|
-
const byteOffset = Math.floor(bit / 8);
|
|
190
|
-
|
|
191
|
-
let byte = bitmap[byteOffset];
|
|
192
|
-
|
|
193
|
-
// eslint-disable-next-line no-bitwise
|
|
194
|
-
byte |= firstBitInByte >> bit % 8;
|
|
195
|
-
|
|
196
|
-
bitmap[byteOffset] = byte;
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
return bitmap;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
232
|
/**
|
|
203
233
|
* Get the index of the provided public key.
|
|
204
234
|
*
|
|
@@ -209,16 +239,10 @@ export class MultiKey extends AccountPublicKey {
|
|
|
209
239
|
* @returns The corresponding index of the public key, if it exists.
|
|
210
240
|
* @throws Error - If the public key is not found in the MultiKey.
|
|
211
241
|
* @group Implementation
|
|
212
|
-
* @category Serialization
|
|
213
242
|
*/
|
|
214
243
|
getIndex(publicKey: PublicKey): number {
|
|
215
244
|
const anyPublicKey = publicKey instanceof AnyPublicKey ? publicKey : new AnyPublicKey(publicKey);
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
if (index !== -1) {
|
|
219
|
-
return index;
|
|
220
|
-
}
|
|
221
|
-
throw new Error(`Public key ${publicKey} not found in MultiKey ${this.publicKeys}`);
|
|
245
|
+
return super.getIndex(anyPublicKey);
|
|
222
246
|
}
|
|
223
247
|
|
|
224
248
|
public static isInstance(value: PublicKey): value is MultiKey {
|
package/src/core/hex.ts
CHANGED
|
@@ -146,8 +146,10 @@ export class Hex {
|
|
|
146
146
|
* @category Serialization
|
|
147
147
|
*/
|
|
148
148
|
static fromHexInput(hexInput: HexInput): Hex {
|
|
149
|
+
if (hexInput instanceof Buffer) return new Hex(new Uint8Array(hexInput));
|
|
149
150
|
if (hexInput instanceof Uint8Array) return new Hex(hexInput);
|
|
150
|
-
return Hex.fromHexString(hexInput);
|
|
151
|
+
if (typeof hexInput === "string") return Hex.fromHexString(hexInput);
|
|
152
|
+
throw new Error(`Invalid hex input type: ${typeof hexInput}`);
|
|
151
153
|
}
|
|
152
154
|
|
|
153
155
|
/**
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SimpleTransaction,
|
|
3
|
+
InputGenerateTransactionOptions,
|
|
4
|
+
TypeTagAddress,
|
|
5
|
+
TypeTagStruct,
|
|
6
|
+
stringStructTag,
|
|
7
|
+
} from "../transactions";
|
|
8
|
+
import { AccountAddressInput } from "../core";
|
|
9
|
+
import { generateTransaction } from "./transactionSubmission";
|
|
10
|
+
import { MoveFunctionId } from "../types";
|
|
11
|
+
import { AptosConfig } from "../api/aptosConfig";
|
|
12
|
+
import { getFunctionParts } from "../utils/helpers";
|
|
13
|
+
|
|
14
|
+
export async function addAuthenticationFunctionTransaction(args: {
|
|
15
|
+
aptosConfig: AptosConfig;
|
|
16
|
+
sender: AccountAddressInput;
|
|
17
|
+
authenticationFunction: string;
|
|
18
|
+
options?: InputGenerateTransactionOptions;
|
|
19
|
+
}): Promise<SimpleTransaction> {
|
|
20
|
+
const { aptosConfig, sender, authenticationFunction, options } = args;
|
|
21
|
+
const { moduleAddress, moduleName, functionName } = getFunctionParts(authenticationFunction as MoveFunctionId);
|
|
22
|
+
return generateTransaction({
|
|
23
|
+
aptosConfig,
|
|
24
|
+
sender,
|
|
25
|
+
data: {
|
|
26
|
+
function: "0x1::account_abstraction::add_authentication_function",
|
|
27
|
+
typeArguments: [],
|
|
28
|
+
functionArguments: [moduleAddress, moduleName, functionName],
|
|
29
|
+
abi: {
|
|
30
|
+
typeParameters: [],
|
|
31
|
+
parameters: [new TypeTagAddress(), new TypeTagStruct(stringStructTag()), new TypeTagStruct(stringStructTag())],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
options,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export async function removeAuthenticationFunctionTransaction(args: {
|
|
39
|
+
aptosConfig: AptosConfig;
|
|
40
|
+
sender: AccountAddressInput;
|
|
41
|
+
authenticationFunction: string;
|
|
42
|
+
options?: InputGenerateTransactionOptions;
|
|
43
|
+
}) {
|
|
44
|
+
const { aptosConfig, sender, authenticationFunction, options } = args;
|
|
45
|
+
const { moduleAddress, moduleName, functionName } = getFunctionParts(authenticationFunction as MoveFunctionId);
|
|
46
|
+
return generateTransaction({
|
|
47
|
+
aptosConfig,
|
|
48
|
+
sender,
|
|
49
|
+
data: {
|
|
50
|
+
function: "0x1::account_abstraction::remove_authentication_function",
|
|
51
|
+
typeArguments: [],
|
|
52
|
+
functionArguments: [moduleAddress, moduleName, functionName],
|
|
53
|
+
abi: {
|
|
54
|
+
typeParameters: [],
|
|
55
|
+
parameters: [new TypeTagAddress(), new TypeTagStruct(stringStructTag()), new TypeTagStruct(stringStructTag())],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
options,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export async function removeDispatchableAuthenticatorTransaction(args: {
|
|
63
|
+
aptosConfig: AptosConfig;
|
|
64
|
+
sender: AccountAddressInput;
|
|
65
|
+
options?: InputGenerateTransactionOptions;
|
|
66
|
+
}) {
|
|
67
|
+
const { aptosConfig, sender, options } = args;
|
|
68
|
+
return generateTransaction({
|
|
69
|
+
aptosConfig,
|
|
70
|
+
sender,
|
|
71
|
+
data: {
|
|
72
|
+
function: "0x1::account_abstraction::remove_authenticator",
|
|
73
|
+
typeArguments: [],
|
|
74
|
+
functionArguments: [],
|
|
75
|
+
abi: { typeParameters: [], parameters: [] },
|
|
76
|
+
},
|
|
77
|
+
options,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { AptosConfig } from "../api/aptosConfig";
|
|
2
|
+
import { generateViewFunctionPayload, InputViewFunctionData } from "../transactions";
|
|
3
|
+
import { LedgerVersionArg, MimeType } from "../types";
|
|
4
|
+
import { Serializer } from "../bcs";
|
|
5
|
+
import { postBinaryAptosFullNode } from "../client";
|
|
6
|
+
|
|
7
|
+
export async function viewBinary(args: {
|
|
8
|
+
aptosConfig: AptosConfig;
|
|
9
|
+
payload: InputViewFunctionData;
|
|
10
|
+
options?: LedgerVersionArg & { convert?: undefined };
|
|
11
|
+
}): Promise<Uint8Array>;
|
|
12
|
+
|
|
13
|
+
export async function viewBinary<T extends {}>(args: {
|
|
14
|
+
aptosConfig: AptosConfig;
|
|
15
|
+
payload: InputViewFunctionData;
|
|
16
|
+
options?: LedgerVersionArg & { convert?: (input: Uint8Array) => T };
|
|
17
|
+
}): Promise<T>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Reads a binary view function, and converts into the appropriate type if a converter is provided.
|
|
21
|
+
* @experimental
|
|
22
|
+
* @param args
|
|
23
|
+
*/
|
|
24
|
+
export async function viewBinary<T extends {} = Uint8Array>(args: {
|
|
25
|
+
aptosConfig: AptosConfig;
|
|
26
|
+
payload: InputViewFunctionData;
|
|
27
|
+
options?: LedgerVersionArg & { convert?: (input: Uint8Array) => T };
|
|
28
|
+
}): Promise<Uint8Array | T> {
|
|
29
|
+
const { aptosConfig, payload, options } = args;
|
|
30
|
+
const viewFunctionPayload = await generateViewFunctionPayload({
|
|
31
|
+
...payload,
|
|
32
|
+
aptosConfig,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
const serializer = new Serializer();
|
|
36
|
+
viewFunctionPayload.serialize(serializer);
|
|
37
|
+
const bytes = serializer.toUint8Array();
|
|
38
|
+
|
|
39
|
+
const { data } = await postBinaryAptosFullNode<Uint8Array>({
|
|
40
|
+
aptosConfig,
|
|
41
|
+
path: "view",
|
|
42
|
+
originMethod: "view",
|
|
43
|
+
contentType: MimeType.BCS_VIEW_FUNCTION,
|
|
44
|
+
acceptType: MimeType.BCS,
|
|
45
|
+
params: { ledger_version: options?.ledgerVersion },
|
|
46
|
+
body: bytes,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const array = new Uint8Array(data);
|
|
50
|
+
if (options?.convert) {
|
|
51
|
+
return options.convert(array);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return array;
|
|
55
|
+
}
|
package/src/internal/view.ts
CHANGED
|
@@ -27,7 +27,7 @@ export async function view<T extends Array<MoveValue> = Array<MoveValue>>(args:
|
|
|
27
27
|
viewFunctionPayload.serialize(serializer);
|
|
28
28
|
const bytes = serializer.toUint8Array();
|
|
29
29
|
|
|
30
|
-
const { data } = await postAptosFullNode<Uint8Array,
|
|
30
|
+
const { data } = await postAptosFullNode<Uint8Array, T>({
|
|
31
31
|
aptosConfig,
|
|
32
32
|
path: "view",
|
|
33
33
|
originMethod: "view",
|
|
@@ -36,7 +36,7 @@ export async function view<T extends Array<MoveValue> = Array<MoveValue>>(args:
|
|
|
36
36
|
body: bytes,
|
|
37
37
|
});
|
|
38
38
|
|
|
39
|
-
return data
|
|
39
|
+
return data;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export async function viewJson<T extends Array<MoveValue> = Array<MoveValue>>(args: {
|
|
@@ -45,7 +45,7 @@ export async function viewJson<T extends Array<MoveValue> = Array<MoveValue>>(ar
|
|
|
45
45
|
options?: LedgerVersionArg;
|
|
46
46
|
}): Promise<T> {
|
|
47
47
|
const { aptosConfig, payload, options } = args;
|
|
48
|
-
const { data } = await postAptosFullNode<ViewFunctionJsonPayload,
|
|
48
|
+
const { data } = await postAptosFullNode<ViewFunctionJsonPayload, T>({
|
|
49
49
|
aptosConfig,
|
|
50
50
|
originMethod: "viewJson",
|
|
51
51
|
path: "view",
|
|
@@ -57,5 +57,5 @@ export async function viewJson<T extends Array<MoveValue> = Array<MoveValue>>(ar
|
|
|
57
57
|
},
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
return data
|
|
60
|
+
return data;
|
|
61
61
|
}
|
|
@@ -8,7 +8,10 @@ import { AnyPublicKey, AnySignature } from "../../core/crypto";
|
|
|
8
8
|
import { Ed25519PublicKey, Ed25519Signature } from "../../core/crypto/ed25519";
|
|
9
9
|
import { MultiEd25519PublicKey, MultiEd25519Signature } from "../../core/crypto/multiEd25519";
|
|
10
10
|
import { MultiKey, MultiKeySignature } from "../../core/crypto/multiKey";
|
|
11
|
-
import { AccountAuthenticatorVariant } from "../../types";
|
|
11
|
+
import { AccountAuthenticatorVariant, HexInput, MoveFunctionId } from "../../types";
|
|
12
|
+
import { AbstractionAuthDataVariant } from "../../types/abstraction";
|
|
13
|
+
import { AccountAddress, Hex } from "../../core";
|
|
14
|
+
import { getFunctionParts, isValidFunctionInfo } from "../../utils/helpers";
|
|
12
15
|
|
|
13
16
|
/**
|
|
14
17
|
* Represents an account authenticator that can handle multiple authentication variants.
|
|
@@ -43,6 +46,8 @@ export abstract class AccountAuthenticator extends Serializable {
|
|
|
43
46
|
return AccountAuthenticatorMultiKey.load(deserializer);
|
|
44
47
|
case AccountAuthenticatorVariant.NoAccountAuthenticator:
|
|
45
48
|
return AccountAuthenticatorNoAccountAuthenticator.load(deserializer);
|
|
49
|
+
case AccountAuthenticatorVariant.Abstraction:
|
|
50
|
+
return AccountAuthenticatorAbstraction.load(deserializer);
|
|
46
51
|
default:
|
|
47
52
|
throw new Error(`Unknown variant index for AccountAuthenticator: ${index}`);
|
|
48
53
|
}
|
|
@@ -263,3 +268,49 @@ export class AccountAuthenticatorNoAccountAuthenticator extends AccountAuthentic
|
|
|
263
268
|
return new AccountAuthenticatorNoAccountAuthenticator();
|
|
264
269
|
}
|
|
265
270
|
}
|
|
271
|
+
|
|
272
|
+
export class AccountAuthenticatorAbstraction extends AccountAuthenticator {
|
|
273
|
+
public readonly functionInfo: string;
|
|
274
|
+
|
|
275
|
+
public readonly signingMessageDigest: Hex;
|
|
276
|
+
|
|
277
|
+
public readonly authenticator: Hex;
|
|
278
|
+
|
|
279
|
+
constructor(functionInfo: string, signingMessageDigest: HexInput, authenticator: HexInput) {
|
|
280
|
+
super();
|
|
281
|
+
if (!isValidFunctionInfo(functionInfo)) {
|
|
282
|
+
throw new Error(`Invalid function info ${functionInfo} passed into AccountAuthenticatorAbstraction`);
|
|
283
|
+
}
|
|
284
|
+
this.functionInfo = functionInfo;
|
|
285
|
+
this.authenticator = Hex.fromHexInput(authenticator);
|
|
286
|
+
this.signingMessageDigest = Hex.fromHexInput(Hex.fromHexInput(signingMessageDigest).toUint8Array());
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
serialize(serializer: Serializer): void {
|
|
290
|
+
serializer.serializeU32AsUleb128(AccountAuthenticatorVariant.Abstraction);
|
|
291
|
+
const { moduleAddress, moduleName, functionName } = getFunctionParts(this.functionInfo as MoveFunctionId);
|
|
292
|
+
AccountAddress.fromString(moduleAddress).serialize(serializer);
|
|
293
|
+
serializer.serializeStr(moduleName);
|
|
294
|
+
serializer.serializeStr(functionName);
|
|
295
|
+
serializer.serializeU32AsUleb128(AbstractionAuthDataVariant.V1);
|
|
296
|
+
serializer.serializeBytes(this.signingMessageDigest.toUint8Array());
|
|
297
|
+
serializer.serializeFixedBytes(this.authenticator.toUint8Array());
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
static load(deserializer: Deserializer): AccountAuthenticatorAbstraction {
|
|
301
|
+
const moduleAddress = AccountAddress.deserialize(deserializer);
|
|
302
|
+
const moduleName = deserializer.deserializeStr();
|
|
303
|
+
const functionName = deserializer.deserializeStr();
|
|
304
|
+
const variant = deserializer.deserializeUleb128AsU32();
|
|
305
|
+
if (variant === AbstractionAuthDataVariant.V1) {
|
|
306
|
+
const signingMessageDigest = deserializer.deserializeBytes();
|
|
307
|
+
const authenticator = deserializer.deserializeFixedBytes(deserializer.remaining());
|
|
308
|
+
return new AccountAuthenticatorAbstraction(
|
|
309
|
+
`${moduleAddress}::${moduleName}::${functionName}`,
|
|
310
|
+
signingMessageDigest,
|
|
311
|
+
authenticator,
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
throw new Error(`Unknown variant index for AccountAuthenticatorAbstraction: ${variant}`);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Copyright © Aptos Foundation
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { ScriptComposerWasm } from "@aptos-labs/script-composer-pack";
|
|
5
|
+
import { AptosApiType, getFunctionParts } from "../../utils";
|
|
6
|
+
import { AptosConfig } from "../../api/aptosConfig";
|
|
7
|
+
import { InputBatchedFunctionData } from "../types";
|
|
8
|
+
import { fetchMoveFunctionAbi, standardizeTypeTags } from "../transactionBuilder";
|
|
9
|
+
import { CallArgument } from "../../types";
|
|
10
|
+
import { convertCallArgument } from "../transactionBuilder/remoteAbi";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A wrapper class around TransactionComposer, which is a WASM library compiled
|
|
14
|
+
* from aptos-core/aptos-move/script-composer.
|
|
15
|
+
* This class allows the SDK caller to build a transaction that invokes multiple Move functions
|
|
16
|
+
* and allow for arguments to be passed around.
|
|
17
|
+
* */
|
|
18
|
+
export class AptosScriptComposer {
|
|
19
|
+
private config: AptosConfig;
|
|
20
|
+
|
|
21
|
+
private builder?: any;
|
|
22
|
+
|
|
23
|
+
private static transactionComposer?: any;
|
|
24
|
+
|
|
25
|
+
constructor(aptosConfig: AptosConfig) {
|
|
26
|
+
this.config = aptosConfig;
|
|
27
|
+
this.builder = undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Initializing the wasm needed for the script composer, must be called
|
|
31
|
+
// before using the composer.
|
|
32
|
+
async init() {
|
|
33
|
+
if (!AptosScriptComposer.transactionComposer) {
|
|
34
|
+
const module = await import("@aptos-labs/script-composer-pack");
|
|
35
|
+
const { TransactionComposer, initSync } = module;
|
|
36
|
+
if (!ScriptComposerWasm.isInitialized) {
|
|
37
|
+
ScriptComposerWasm.init();
|
|
38
|
+
}
|
|
39
|
+
initSync({ module: ScriptComposerWasm.wasm });
|
|
40
|
+
AptosScriptComposer.transactionComposer = TransactionComposer;
|
|
41
|
+
}
|
|
42
|
+
this.builder = AptosScriptComposer.transactionComposer.single_signer();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Add a move function invocation to the TransactionComposer.
|
|
46
|
+
//
|
|
47
|
+
// Similar to how to create an entry function, the difference is that input arguments could
|
|
48
|
+
// either be a `CallArgument` which represents an abstract value returned from a previous Move call
|
|
49
|
+
// or the regular entry function arguments.
|
|
50
|
+
//
|
|
51
|
+
// The function would also return a list of `CallArgument` that can be passed on to future calls.
|
|
52
|
+
async addBatchedCalls(input: InputBatchedFunctionData): Promise<CallArgument[]> {
|
|
53
|
+
const { moduleAddress, moduleName, functionName } = getFunctionParts(input.function);
|
|
54
|
+
const nodeUrl = this.config.getRequestUrl(AptosApiType.FULLNODE);
|
|
55
|
+
|
|
56
|
+
// Load the calling module into the builder.
|
|
57
|
+
await this.builder.load_module(nodeUrl, `${moduleAddress}::${moduleName}`);
|
|
58
|
+
|
|
59
|
+
// Load the calling type arguments into the loader.
|
|
60
|
+
if (input.typeArguments !== undefined) {
|
|
61
|
+
await Promise.all(input.typeArguments.map((typeTag) => this.builder.load_type_tag(nodeUrl, typeTag.toString())));
|
|
62
|
+
}
|
|
63
|
+
const typeArguments = standardizeTypeTags(input.typeArguments);
|
|
64
|
+
const functionAbi = await fetchMoveFunctionAbi(moduleAddress, moduleName, functionName, this.config);
|
|
65
|
+
// Check the type argument count against the ABI
|
|
66
|
+
if (typeArguments.length !== functionAbi.typeParameters.length) {
|
|
67
|
+
throw new Error(
|
|
68
|
+
`Type argument count mismatch, expected ${functionAbi.typeParameters.length}, received ${typeArguments.length}`,
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const functionArguments: CallArgument[] = input.functionArguments.map((arg, i) =>
|
|
73
|
+
convertCallArgument(arg, functionName, functionAbi, i, typeArguments),
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
return this.builder.add_batched_call(
|
|
77
|
+
`${moduleAddress}::${moduleName}`,
|
|
78
|
+
functionName,
|
|
79
|
+
typeArguments.map((arg) => arg.toString()),
|
|
80
|
+
functionArguments,
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
build(): Uint8Array {
|
|
85
|
+
return this.builder.generate_batched_calls(true);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
} from "../types";
|
|
11
11
|
import { Bool, FixedBytes, MoveOption, MoveString, MoveVector, U128, U16, U256, U32, U64, U8 } from "../../bcs";
|
|
12
12
|
import { AccountAddress } from "../../core";
|
|
13
|
-
import { MoveFunction
|
|
13
|
+
import { MoveFunction } from "../../types";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Determines if the provided argument is of type boolean.
|
|
@@ -317,24 +317,3 @@ export function findFirstNonSignerArg(functionAbi: MoveFunction): number {
|
|
|
317
317
|
}
|
|
318
318
|
return index;
|
|
319
319
|
}
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Splits a function identifier into its constituent parts: module address, module name, and function name.
|
|
323
|
-
* This function helps in validating and extracting details from a function identifier string.
|
|
324
|
-
*
|
|
325
|
-
* @param functionArg - The function identifier string in the format "moduleAddress::moduleName::functionName".
|
|
326
|
-
* @returns An object containing the module address, module name, and function name.
|
|
327
|
-
* @throws Error if the function identifier does not contain exactly three parts.
|
|
328
|
-
* @group Implementation
|
|
329
|
-
* @category Transactions
|
|
330
|
-
*/
|
|
331
|
-
export function getFunctionParts(functionArg: MoveFunctionId) {
|
|
332
|
-
const funcNameParts = functionArg.split("::");
|
|
333
|
-
if (funcNameParts.length !== 3) {
|
|
334
|
-
throw new Error(`Invalid function ${functionArg}`);
|
|
335
|
-
}
|
|
336
|
-
const moduleAddress = funcNameParts[0];
|
|
337
|
-
const moduleName = funcNameParts[1];
|
|
338
|
-
const functionName = funcNameParts[2];
|
|
339
|
-
return { moduleAddress, moduleName, functionName };
|
|
340
|
-
}
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
throwTypeMismatch,
|
|
46
46
|
convertNumber,
|
|
47
47
|
} from "./helpers";
|
|
48
|
-
import { MoveFunction } from "../../types";
|
|
48
|
+
import { CallArgument, MoveFunction } from "../../types";
|
|
49
49
|
|
|
50
50
|
const TEXT_ENCODER = new TextEncoder();
|
|
51
51
|
|
|
@@ -96,6 +96,34 @@ export async function fetchFunctionAbi(
|
|
|
96
96
|
return undefined;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Fetches a function ABI from the on-chain module ABI. It doesn't validate whether it's a view or entry function.
|
|
101
|
+
* @param moduleAddress
|
|
102
|
+
* @param moduleName
|
|
103
|
+
* @param functionName
|
|
104
|
+
* @param aptosConfig
|
|
105
|
+
*/
|
|
106
|
+
export async function fetchMoveFunctionAbi(
|
|
107
|
+
moduleAddress: string,
|
|
108
|
+
moduleName: string,
|
|
109
|
+
functionName: string,
|
|
110
|
+
aptosConfig: AptosConfig,
|
|
111
|
+
): Promise<FunctionABI> {
|
|
112
|
+
const functionAbi = await fetchFunctionAbi(moduleAddress, moduleName, functionName, aptosConfig);
|
|
113
|
+
if (!functionAbi) {
|
|
114
|
+
throw new Error(`Could not find function ABI for '${moduleAddress}::${moduleName}::${functionName}'`);
|
|
115
|
+
}
|
|
116
|
+
const params: TypeTag[] = [];
|
|
117
|
+
for (let i = 0; i < functionAbi.params.length; i += 1) {
|
|
118
|
+
params.push(parseTypeTag(functionAbi.params[i], { allowGenerics: true }));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return {
|
|
122
|
+
typeParameters: functionAbi.generic_type_params,
|
|
123
|
+
parameters: params,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
|
|
99
127
|
/**
|
|
100
128
|
* Fetches the ABI for an entry function from the specified module address.
|
|
101
129
|
* This function validates if the ABI corresponds to an entry function and retrieves its parameters.
|
|
@@ -191,6 +219,32 @@ export async function fetchViewFunctionAbi(
|
|
|
191
219
|
};
|
|
192
220
|
}
|
|
193
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Converts a entry function argument into CallArgument, if necessary.
|
|
224
|
+
* This function checks the provided argument against the expected parameter type and converts it accordingly.
|
|
225
|
+
*
|
|
226
|
+
* @param functionName - The name of the function for which the argument is being converted.
|
|
227
|
+
* @param functionAbi - The ABI (Application Binary Interface) of the function, which defines its parameters.
|
|
228
|
+
* @param argument - The argument to be converted, which can be of various types. If the argument is already
|
|
229
|
+
* CallArgument returned from TransactionComposer it would be returned immediately.
|
|
230
|
+
* @param position - The index of the argument in the function's parameter list.
|
|
231
|
+
* @param genericTypeParams - An array of type tags for any generic type parameters.
|
|
232
|
+
*/
|
|
233
|
+
export function convertCallArgument(
|
|
234
|
+
argument: CallArgument | EntryFunctionArgumentTypes | SimpleEntryFunctionArgumentTypes,
|
|
235
|
+
functionName: string,
|
|
236
|
+
functionAbi: FunctionABI,
|
|
237
|
+
position: number,
|
|
238
|
+
genericTypeParams: Array<TypeTag>,
|
|
239
|
+
): CallArgument {
|
|
240
|
+
if (argument instanceof CallArgument) {
|
|
241
|
+
return argument;
|
|
242
|
+
}
|
|
243
|
+
return CallArgument.newBytes(
|
|
244
|
+
convertArgument(functionName, functionAbi, argument, position, genericTypeParams).bcsToBytes(),
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
|
|
194
248
|
/**
|
|
195
249
|
* Converts a non-BCS encoded argument into BCS encoded, if necessary.
|
|
196
250
|
* This function checks the provided argument against the expected parameter type and converts it accordingly.
|
|
@@ -369,6 +423,13 @@ function parseArg(
|
|
|
369
423
|
}
|
|
370
424
|
}
|
|
371
425
|
|
|
426
|
+
if (isString(arg)) {
|
|
427
|
+
// In a web env, arguments are passing as strings
|
|
428
|
+
if (arg.startsWith("[")) {
|
|
429
|
+
return checkOrConvertArgument(JSON.parse(arg), param, position, genericTypeParams);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
372
433
|
// TODO: Support Uint16Array, Uint32Array, BigUint64Array?
|
|
373
434
|
|
|
374
435
|
if (Array.isArray(arg)) {
|
|
@@ -29,6 +29,7 @@ import { normalizeBundle } from "../../utils/normalizeBundle";
|
|
|
29
29
|
import {
|
|
30
30
|
AccountAuthenticator,
|
|
31
31
|
AccountAuthenticatorEd25519,
|
|
32
|
+
AccountAuthenticatorMultiEd25519,
|
|
32
33
|
AccountAuthenticatorMultiKey,
|
|
33
34
|
AccountAuthenticatorNoAccountAuthenticator,
|
|
34
35
|
AccountAuthenticatorSingleKey,
|
|
@@ -38,6 +39,7 @@ import {
|
|
|
38
39
|
TransactionAuthenticatorEd25519,
|
|
39
40
|
TransactionAuthenticatorFeePayer,
|
|
40
41
|
TransactionAuthenticatorMultiAgent,
|
|
42
|
+
TransactionAuthenticatorMultiEd25519,
|
|
41
43
|
TransactionAuthenticatorSingleSender,
|
|
42
44
|
} from "../authenticator/transaction";
|
|
43
45
|
import {
|
|
@@ -77,9 +79,10 @@ import {
|
|
|
77
79
|
} from "../types";
|
|
78
80
|
import { convertArgument, fetchEntryFunctionAbi, fetchViewFunctionAbi, standardizeTypeTags } from "./remoteAbi";
|
|
79
81
|
import { memoizeAsync } from "../../utils/memoize";
|
|
80
|
-
import {
|
|
82
|
+
import { isScriptDataInput } from "./helpers";
|
|
81
83
|
import { SimpleTransaction } from "../instances/simpleTransaction";
|
|
82
84
|
import { MultiAgentTransaction } from "../instances/multiAgentTransaction";
|
|
85
|
+
import { getFunctionParts } from "../../utils/helpers";
|
|
83
86
|
|
|
84
87
|
/**
|
|
85
88
|
* Builds a transaction payload based on the provided arguments and returns a transaction payload.
|
|
@@ -699,6 +702,11 @@ export function generateSignedTransaction(args: InputSubmitTransactionData): Uin
|
|
|
699
702
|
senderAuthenticator.public_key,
|
|
700
703
|
senderAuthenticator.signature,
|
|
701
704
|
);
|
|
705
|
+
} else if (senderAuthenticator instanceof AccountAuthenticatorMultiEd25519) {
|
|
706
|
+
txnAuthenticator = new TransactionAuthenticatorMultiEd25519(
|
|
707
|
+
senderAuthenticator.public_key,
|
|
708
|
+
senderAuthenticator.signature,
|
|
709
|
+
);
|
|
702
710
|
} else {
|
|
703
711
|
txnAuthenticator = new TransactionAuthenticatorSingleSender(senderAuthenticator);
|
|
704
712
|
}
|