@aptos-labs/ts-sdk 1.34.0 → 1.35.0-zeta.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 +8 -9
- package/dist/common/{accountAddress-CDtCLtJA.d.ts → accountAddress-D3UA_cOZ.d.ts} +84 -11
- package/dist/common/chunk-CSUBLTFA.js +1297 -0
- package/dist/common/chunk-CSUBLTFA.js.map +1 -0
- package/dist/common/cli/index.d.ts +1 -1
- package/dist/common/cli/index.js +486 -1
- package/dist/common/cli/index.js.map +1 -1
- package/dist/common/index.d.ts +533 -238
- package/dist/common/index.js +18279 -418
- package/dist/common/index.js.map +1 -1
- package/dist/esm/account/AbstractKeylessAccount.mjs +75 -1
- package/dist/esm/account/AbstractedAccount.mjs +74 -1
- package/dist/esm/account/Account.d.mts +1 -1
- package/dist/esm/account/Account.mjs +72 -1
- package/dist/esm/account/AccountUtils.mjs +78 -1
- package/dist/esm/account/Ed25519Account.d.mts +2 -2
- package/dist/esm/account/Ed25519Account.mjs +70 -1
- package/dist/esm/account/EphemeralKeyPair.mjs +50 -1
- package/dist/esm/account/FederatedKeylessAccount.mjs +72 -1
- package/dist/esm/account/KeylessAccount.mjs +72 -1
- package/dist/esm/account/MultiEd25519Account.d.mts +108 -0
- package/dist/esm/account/MultiEd25519Account.mjs +71 -0
- package/dist/esm/account/MultiKeyAccount.d.mts +1 -2
- package/dist/esm/account/MultiKeyAccount.mjs +74 -1
- package/dist/esm/account/SingleKeyAccount.mjs +72 -1
- package/dist/esm/account/index.d.mts +1 -0
- package/dist/esm/account/index.mjs +119 -1
- package/dist/esm/account/utils.mjs +54 -1
- package/dist/esm/api/account/abstraction.mjs +101 -1
- package/dist/esm/api/account.d.mts +18 -2
- package/dist/esm/api/account.mjs +103 -1
- package/dist/esm/api/ans.mjs +101 -1
- package/dist/esm/api/aptos.d.mts +4 -1
- package/dist/esm/api/aptos.mjs +136 -1
- package/dist/esm/api/aptosConfig.mjs +9 -1
- package/dist/esm/api/coin.mjs +99 -1
- package/dist/esm/api/digitalAsset.mjs +101 -1
- package/dist/esm/api/event.mjs +59 -1
- package/dist/esm/api/experimental.d.mts +83 -0
- package/dist/esm/api/experimental.mjs +100 -0
- package/dist/esm/api/faucet.mjs +58 -1
- package/dist/esm/api/fungibleAsset.mjs +101 -1
- package/dist/esm/api/general.mjs +99 -1
- package/dist/esm/api/index.d.mts +2 -0
- package/dist/esm/api/index.mjs +140 -1
- package/dist/esm/api/keyless.d.mts +1 -1
- package/dist/esm/api/keyless.mjs +100 -1
- package/dist/esm/api/object.mjs +59 -1
- package/dist/esm/api/staking.mjs +59 -1
- package/dist/esm/api/table.mjs +38 -1
- package/dist/esm/api/transaction.d.mts +15 -6
- package/dist/esm/api/transaction.mjs +108 -1
- package/dist/esm/api/transactionSubmission/build.mjs +99 -1
- package/dist/esm/api/transactionSubmission/helpers.mjs +9 -1
- package/dist/esm/api/transactionSubmission/management.mjs +103 -1
- package/dist/esm/api/transactionSubmission/sign.mjs +218 -1
- package/dist/esm/api/transactionSubmission/sign.mjs.map +1 -1
- package/dist/esm/api/transactionSubmission/simulate.mjs +100 -1
- package/dist/esm/api/transactionSubmission/submit.mjs +100 -1
- package/dist/esm/api/utils.mjs +36 -1
- package/dist/esm/bcs/consts.mjs +17 -1
- package/dist/esm/bcs/deserializer.mjs +10 -1
- package/dist/esm/bcs/index.mjs +60 -1
- package/dist/esm/bcs/serializable/entryFunctionBytes.mjs +12 -1
- package/dist/esm/bcs/serializable/fixedBytes.mjs +11 -1
- package/dist/esm/bcs/serializable/movePrimitives.mjs +26 -1
- package/dist/esm/bcs/serializable/moveStructs.mjs +22 -1
- package/dist/esm/bcs/serializer.mjs +18 -1
- package/dist/esm/chunk-2ZOIVB2U.mjs +63 -0
- package/dist/esm/{chunk-HT2WC3QV.mjs.map → chunk-2ZOIVB2U.mjs.map} +1 -1
- package/dist/esm/chunk-32UQAST6.mjs +296 -0
- package/dist/esm/{chunk-BUTMGMSD.mjs.map → chunk-32UQAST6.mjs.map} +1 -1
- package/dist/esm/chunk-3IWV2Q3K.mjs +12 -0
- package/dist/esm/{chunk-XJJVJOX5.mjs.map → chunk-3IWV2Q3K.mjs.map} +1 -1
- package/dist/esm/chunk-3QMLVT4L.mjs +177 -0
- package/dist/esm/{chunk-PR3W2QEH.mjs.map → chunk-3QMLVT4L.mjs.map} +1 -1
- package/dist/esm/chunk-3SCNBHUA.mjs +177 -0
- package/dist/esm/{chunk-2GIPNLDO.mjs.map → chunk-3SCNBHUA.mjs.map} +1 -1
- package/dist/esm/chunk-3TUV6YMI.mjs +305 -0
- package/dist/esm/chunk-3TUV6YMI.mjs.map +1 -0
- package/dist/esm/chunk-46VPRC7E.mjs +407 -0
- package/dist/esm/{chunk-4T75XRI2.mjs.map → chunk-46VPRC7E.mjs.map} +1 -1
- package/dist/esm/chunk-4BXAKN6A.mjs +84 -0
- package/dist/esm/{chunk-4776UXL6.mjs.map → chunk-4BXAKN6A.mjs.map} +1 -1
- package/dist/esm/chunk-4WNIKKIV.mjs +45 -0
- package/dist/esm/{chunk-VOCI2675.mjs.map → chunk-4WNIKKIV.mjs.map} +1 -1
- package/dist/esm/chunk-5E2IDRDF.mjs +61 -0
- package/dist/esm/{chunk-SCBYJU6K.mjs.map → chunk-5E2IDRDF.mjs.map} +1 -1
- package/dist/esm/chunk-5QHMFYVL.mjs +42 -0
- package/dist/esm/chunk-5QHMFYVL.mjs.map +1 -0
- package/dist/esm/chunk-6ASWESA2.mjs +77 -0
- package/dist/esm/{chunk-TOBQ5UE6.mjs.map → chunk-6ASWESA2.mjs.map} +1 -1
- package/dist/esm/chunk-6I37A76G.mjs +29 -0
- package/dist/esm/{chunk-BI3BTSUB.mjs.map → chunk-6I37A76G.mjs.map} +1 -1
- package/dist/esm/chunk-6PMKDSGB.mjs +167 -0
- package/dist/esm/{chunk-CXNF73OX.mjs.map → chunk-6PMKDSGB.mjs.map} +1 -1
- package/dist/esm/chunk-6SNGKTWE.mjs +91 -0
- package/dist/esm/{chunk-DNWFDS7F.mjs.map → chunk-6SNGKTWE.mjs.map} +1 -1
- package/dist/esm/chunk-A3TQLIEM.mjs +19 -0
- package/dist/esm/{chunk-JF66JS2R.mjs.map → chunk-A3TQLIEM.mjs.map} +1 -1
- package/dist/esm/chunk-AGKEC2IM.mjs +250 -0
- package/dist/esm/{chunk-EGZI6EJ2.mjs.map → chunk-AGKEC2IM.mjs.map} +1 -1
- package/dist/esm/chunk-AKXCFBYF.mjs +49 -0
- package/dist/esm/{chunk-DBIZE7G6.mjs.map → chunk-AKXCFBYF.mjs.map} +1 -1
- package/dist/esm/chunk-APM7OSLS.mjs +122 -0
- package/dist/esm/{chunk-GOXRBEIJ.mjs.map → chunk-APM7OSLS.mjs.map} +1 -1
- package/dist/esm/chunk-BDM6FBUO.mjs +198 -0
- package/dist/esm/chunk-BDM6FBUO.mjs.map +1 -0
- package/dist/esm/chunk-BEYIOC2H.mjs +34 -0
- package/dist/esm/{chunk-YOZBVVKL.mjs.map → chunk-BEYIOC2H.mjs.map} +1 -1
- package/dist/esm/chunk-BMM72IIP.mjs +250 -0
- package/dist/esm/{chunk-AZWVCBK2.mjs.map → chunk-BMM72IIP.mjs.map} +1 -1
- package/dist/esm/chunk-BQ5JTYXK.mjs +1014 -0
- package/dist/esm/{chunk-QBFGY74I.mjs.map → chunk-BQ5JTYXK.mjs.map} +1 -1
- package/dist/esm/chunk-C7T6GW5P.mjs +376 -0
- package/dist/esm/{chunk-EBMEXURY.mjs.map → chunk-C7T6GW5P.mjs.map} +1 -1
- package/dist/esm/chunk-CXLXUSCG.mjs +417 -0
- package/dist/esm/{chunk-Q4C4U6I4.mjs.map → chunk-CXLXUSCG.mjs.map} +1 -1
- package/dist/esm/chunk-D4MW64RH.mjs +188 -0
- package/dist/esm/{chunk-XH3BEKII.mjs.map → chunk-D4MW64RH.mjs.map} +1 -1
- package/dist/esm/chunk-DDZGHA66.mjs +495 -0
- package/dist/esm/{chunk-G4O6FXCF.mjs.map → chunk-DDZGHA66.mjs.map} +1 -1
- package/dist/esm/chunk-DMFRIING.mjs +286 -0
- package/dist/esm/chunk-DMFRIING.mjs.map +1 -0
- package/dist/esm/chunk-DUOU3SNQ.mjs +51 -0
- package/dist/esm/chunk-DUOU3SNQ.mjs.map +1 -0
- package/dist/esm/chunk-EBEO4SA4.mjs +367 -0
- package/dist/esm/{chunk-J7HRQ2IH.mjs.map → chunk-EBEO4SA4.mjs.map} +1 -1
- package/dist/esm/chunk-ECTX2FGD.mjs +355 -0
- package/dist/esm/{chunk-GQX5KMF7.mjs.map → chunk-ECTX2FGD.mjs.map} +1 -1
- package/dist/esm/chunk-EFJAJFI3.mjs +53 -0
- package/dist/esm/{chunk-DLLDRANJ.mjs.map → chunk-EFJAJFI3.mjs.map} +1 -1
- package/dist/esm/chunk-EMKV5DFX.mjs +66 -0
- package/dist/esm/{chunk-33CBJFX2.mjs.map → chunk-EMKV5DFX.mjs.map} +1 -1
- package/dist/esm/chunk-EPTUAWRA.mjs +895 -0
- package/dist/esm/chunk-EPTUAWRA.mjs.map +1 -0
- package/dist/esm/chunk-ESZLRZTK.mjs +276 -0
- package/dist/esm/{chunk-H4GZWYIG.mjs.map → chunk-ESZLRZTK.mjs.map} +1 -1
- package/dist/esm/chunk-F7W7KS5C.mjs +52 -0
- package/dist/esm/{chunk-C3Q23D22.mjs.map → chunk-F7W7KS5C.mjs.map} +1 -1
- package/dist/esm/chunk-FMNMYKYH.mjs +71 -0
- package/dist/esm/{chunk-N4DM5FYH.mjs.map → chunk-FMNMYKYH.mjs.map} +1 -1
- package/dist/esm/chunk-G34CJDST.mjs +139 -0
- package/dist/esm/chunk-G34CJDST.mjs.map +1 -0
- package/dist/esm/chunk-G4NBRMZ2.mjs +7 -0
- package/dist/esm/{chunk-3OLFJ65O.mjs.map → chunk-G4NBRMZ2.mjs.map} +1 -1
- package/dist/esm/chunk-GFPEB22G.mjs +1 -0
- package/dist/esm/chunk-GFPEB22G.mjs.map +1 -0
- package/dist/esm/chunk-GUA5YTIK.mjs +362 -0
- package/dist/esm/{chunk-35DKMW7Q.mjs.map → chunk-GUA5YTIK.mjs.map} +1 -1
- package/dist/esm/chunk-HLTYSM7H.mjs +89 -0
- package/dist/esm/{chunk-AC3BISWL.mjs.map → chunk-HLTYSM7H.mjs.map} +1 -1
- package/dist/esm/chunk-HMHFKEHQ.mjs +70 -0
- package/dist/esm/{chunk-BBUN4IO4.mjs.map → chunk-HMHFKEHQ.mjs.map} +1 -1
- package/dist/esm/chunk-HQ6A6TYS.mjs +475 -0
- package/dist/esm/chunk-HQ6A6TYS.mjs.map +1 -0
- package/dist/esm/chunk-HQTQEHHZ.mjs +195 -0
- package/dist/esm/{chunk-ABXES4FS.mjs.map → chunk-HQTQEHHZ.mjs.map} +1 -1
- package/dist/esm/chunk-I25AX6PQ.mjs +7 -0
- package/dist/esm/{chunk-EY2JUXEC.mjs.map → chunk-I25AX6PQ.mjs.map} +1 -1
- package/dist/esm/chunk-I4OHHVRF.mjs +125 -0
- package/dist/esm/{chunk-CRFLR3ZY.mjs.map → chunk-I4OHHVRF.mjs.map} +1 -1
- package/dist/esm/chunk-I6QE3PKO.mjs +100 -0
- package/dist/esm/chunk-I6QE3PKO.mjs.map +1 -0
- package/dist/esm/chunk-IPUAVRGL.mjs +248 -0
- package/dist/esm/{chunk-UTXEW2FT.mjs.map → chunk-IPUAVRGL.mjs.map} +1 -1
- package/dist/esm/chunk-J7WQ42OC.mjs +195 -0
- package/dist/esm/{chunk-D6T3NYOA.mjs.map → chunk-J7WQ42OC.mjs.map} +1 -1
- package/dist/esm/chunk-JOVCSFQC.mjs +58 -0
- package/dist/esm/{chunk-V2EXS6TM.mjs.map → chunk-JOVCSFQC.mjs.map} +1 -1
- package/dist/esm/chunk-K3CXNID3.mjs +74 -0
- package/dist/esm/{chunk-Q7RG7KQS.mjs.map → chunk-K3CXNID3.mjs.map} +1 -1
- package/dist/esm/chunk-KAKSJSCR.mjs +58 -0
- package/dist/esm/{chunk-5BSMF22B.mjs.map → chunk-KAKSJSCR.mjs.map} +1 -1
- package/dist/esm/chunk-KCV4HRSJ.mjs +420 -0
- package/dist/esm/{chunk-WXDA4CCR.mjs.map → chunk-KCV4HRSJ.mjs.map} +1 -1
- package/dist/esm/chunk-KEKNIJHE.mjs +90 -0
- package/dist/esm/{chunk-L6FONDPA.mjs.map → chunk-KEKNIJHE.mjs.map} +1 -1
- package/dist/esm/chunk-KEZG4OGH.mjs +725 -0
- package/dist/esm/chunk-KEZG4OGH.mjs.map +1 -0
- package/dist/esm/chunk-KLUO6XPE.mjs +33 -0
- package/dist/esm/{chunk-WCMW2L3P.mjs.map → chunk-KLUO6XPE.mjs.map} +1 -1
- package/dist/esm/chunk-KLZCGNPI.mjs +322 -0
- package/dist/esm/{chunk-XXHZQFYW.mjs.map → chunk-KLZCGNPI.mjs.map} +1 -1
- package/dist/esm/chunk-KPAICS4T.mjs +160 -0
- package/dist/esm/{chunk-P7SE5LQE.mjs.map → chunk-KPAICS4T.mjs.map} +1 -1
- package/dist/esm/chunk-KSK3XIGF.mjs +502 -0
- package/dist/esm/{chunk-IDTLNF4M.mjs.map → chunk-KSK3XIGF.mjs.map} +1 -1
- package/dist/esm/chunk-LFMXR5C2.mjs +208 -0
- package/dist/esm/{chunk-6LGXFXXR.mjs.map → chunk-LFMXR5C2.mjs.map} +1 -1
- package/dist/esm/chunk-LHQJNJUB.mjs +829 -0
- package/dist/esm/chunk-LHQJNJUB.mjs.map +1 -0
- package/dist/esm/chunk-LJRNGZMY.mjs +10 -0
- package/dist/esm/{chunk-IMTC3J2M.mjs.map → chunk-LJRNGZMY.mjs.map} +1 -1
- package/dist/esm/chunk-LL4RQKIB.mjs +120 -0
- package/dist/esm/chunk-LL4RQKIB.mjs.map +1 -0
- package/dist/esm/chunk-LSIXUJ5T.mjs +288 -0
- package/dist/esm/{chunk-OURSLL3I.mjs.map → chunk-LSIXUJ5T.mjs.map} +1 -1
- package/dist/esm/chunk-MFFBZ43D.mjs +45 -0
- package/dist/esm/{chunk-N6YTF76Q.mjs.map → chunk-MFFBZ43D.mjs.map} +1 -1
- package/dist/esm/chunk-MG6UFOJW.mjs +207 -0
- package/dist/esm/chunk-MG6UFOJW.mjs.map +1 -0
- package/dist/esm/chunk-MHZVL3EA.mjs +192 -0
- package/dist/esm/chunk-MHZVL3EA.mjs.map +1 -0
- package/dist/esm/chunk-MIVDDJAH.mjs +50 -0
- package/dist/esm/chunk-MIVDDJAH.mjs.map +1 -0
- package/dist/esm/chunk-MUSTBCQX.mjs +71 -0
- package/dist/esm/{chunk-4UK4MUSD.mjs.map → chunk-MUSTBCQX.mjs.map} +1 -1
- package/dist/esm/chunk-MWXBQ6HR.mjs +15 -0
- package/dist/esm/{chunk-4YLUM62M.mjs.map → chunk-MWXBQ6HR.mjs.map} +1 -1
- package/dist/esm/chunk-MYEYZ7PF.mjs +46 -0
- package/dist/esm/{chunk-XKUIMGKU.mjs.map → chunk-MYEYZ7PF.mjs.map} +1 -1
- package/dist/esm/chunk-NMYFY7WN.mjs +219 -0
- package/dist/esm/{chunk-HLJE5XGE.mjs.map → chunk-NMYFY7WN.mjs.map} +1 -1
- package/dist/esm/chunk-NUT2VOX2.mjs +317 -0
- package/dist/esm/{chunk-XTOIL6MB.mjs.map → chunk-NUT2VOX2.mjs.map} +1 -1
- package/dist/esm/chunk-ODG7T6OV.mjs +43 -0
- package/dist/esm/{chunk-3HFZN7L5.mjs.map → chunk-ODG7T6OV.mjs.map} +1 -1
- package/dist/esm/chunk-OFUNBTK4.mjs +169 -0
- package/dist/esm/chunk-OFUNBTK4.mjs.map +1 -0
- package/dist/esm/chunk-OQ6XT2GF.mjs +147 -0
- package/dist/esm/{chunk-XDIX7NIP.mjs.map → chunk-OQ6XT2GF.mjs.map} +1 -1
- package/dist/esm/chunk-P64LPFEC.mjs +128 -0
- package/dist/esm/{chunk-HFCWJ6QL.mjs.map → chunk-P64LPFEC.mjs.map} +1 -1
- package/dist/esm/chunk-PGFEUN7K.mjs +129 -0
- package/dist/esm/{chunk-ZCEBDPBJ.mjs.map → chunk-PGFEUN7K.mjs.map} +1 -1
- package/dist/esm/chunk-PKUXOBIV.mjs +138 -0
- package/dist/esm/{chunk-FN4C3CKC.mjs.map → chunk-PKUXOBIV.mjs.map} +1 -1
- package/dist/esm/chunk-PT2QHUB6.mjs +96 -0
- package/dist/esm/{chunk-A5L76YP7.mjs.map → chunk-PT2QHUB6.mjs.map} +1 -1
- package/dist/esm/chunk-QJ6CGH7N.mjs +71 -0
- package/dist/esm/{chunk-DWJ3PGWE.mjs.map → chunk-QJ6CGH7N.mjs.map} +1 -1
- package/dist/esm/chunk-QN5BQMWP.mjs +21 -0
- package/dist/esm/{chunk-XAPQNCTN.mjs.map → chunk-QN5BQMWP.mjs.map} +1 -1
- package/dist/esm/chunk-QPT4BSAB.mjs +20 -0
- package/dist/esm/{chunk-IF4UU2MT.mjs.map → chunk-QPT4BSAB.mjs.map} +1 -1
- package/dist/esm/chunk-QSYWLSSN.mjs +216 -0
- package/dist/esm/{chunk-ORMOQWWH.mjs.map → chunk-QSYWLSSN.mjs.map} +1 -1
- package/dist/esm/chunk-QW7RQDZ5.mjs +224 -0
- package/dist/esm/chunk-QW7RQDZ5.mjs.map +1 -0
- package/dist/esm/chunk-R4JTQQBX.mjs +37 -0
- package/dist/esm/{chunk-EMURYYVO.mjs.map → chunk-R4JTQQBX.mjs.map} +1 -1
- package/dist/esm/chunk-RQS33JAS.mjs +77 -0
- package/dist/esm/{chunk-42T3UGSW.mjs.map → chunk-RQS33JAS.mjs.map} +1 -1
- package/dist/esm/chunk-S56SMMAK.mjs +86 -0
- package/dist/esm/{chunk-7CYCKCVU.mjs.map → chunk-S56SMMAK.mjs.map} +1 -1
- package/dist/esm/chunk-SAWN7RJP.mjs +15 -0
- package/dist/esm/chunk-SAWN7RJP.mjs.map +1 -0
- package/dist/esm/chunk-SBB4YEPT.mjs +17 -0
- package/dist/esm/{chunk-56CNRT2K.mjs.map → chunk-SBB4YEPT.mjs.map} +1 -1
- package/dist/esm/chunk-SDIZSFCQ.mjs +281 -0
- package/dist/esm/{chunk-Y3Y4DVCK.mjs.map → chunk-SDIZSFCQ.mjs.map} +1 -1
- package/dist/esm/chunk-SFLQPB72.mjs +63 -0
- package/dist/esm/{chunk-4RXKALLC.mjs.map → chunk-SFLQPB72.mjs.map} +1 -1
- package/dist/esm/chunk-SGKF62FT.mjs +70 -0
- package/dist/esm/{chunk-CSG67JHZ.mjs.map → chunk-SGKF62FT.mjs.map} +1 -1
- package/dist/esm/chunk-SN6KXHPA.mjs +162 -0
- package/dist/esm/{chunk-BYHCW7MI.mjs.map → chunk-SN6KXHPA.mjs.map} +1 -1
- package/dist/esm/chunk-T573PCIR.mjs +700 -0
- package/dist/esm/{chunk-G6RLN6ET.mjs.map → chunk-T573PCIR.mjs.map} +1 -1
- package/dist/esm/chunk-TFW6N66T.mjs +415 -0
- package/dist/esm/{chunk-TM6IKHMX.mjs.map → chunk-TFW6N66T.mjs.map} +1 -1
- package/dist/esm/chunk-THWEBWUC.mjs +20 -0
- package/dist/esm/{chunk-DPW6ELCQ.mjs.map → chunk-THWEBWUC.mjs.map} +1 -1
- package/dist/esm/chunk-TQDWZXFD.mjs +239 -0
- package/dist/esm/{chunk-O37BZP2G.mjs.map → chunk-TQDWZXFD.mjs.map} +1 -1
- package/dist/esm/chunk-UKZP2GAB.mjs +415 -0
- package/dist/esm/chunk-UKZP2GAB.mjs.map +1 -0
- package/dist/esm/chunk-UOHCJOXI.mjs +150 -0
- package/dist/esm/{chunk-6PBMD2BQ.mjs.map → chunk-UOHCJOXI.mjs.map} +1 -1
- package/dist/esm/chunk-UXAUOSSB.mjs +219 -0
- package/dist/esm/{chunk-DNJQWGB7.mjs.map → chunk-UXAUOSSB.mjs.map} +1 -1
- package/dist/esm/chunk-VGI2LPO3.mjs +604 -0
- package/dist/esm/chunk-VGI2LPO3.mjs.map +1 -0
- package/dist/esm/chunk-WEOK7WVL.mjs +66 -0
- package/dist/esm/{chunk-KEJAUCQF.mjs.map → chunk-WEOK7WVL.mjs.map} +1 -1
- package/dist/esm/chunk-WPV52HGD.mjs +40 -0
- package/dist/esm/chunk-WPV52HGD.mjs.map +1 -0
- package/dist/esm/chunk-XGB3QLVI.mjs +86 -0
- package/dist/esm/{chunk-L2AQG3G3.mjs.map → chunk-XGB3QLVI.mjs.map} +1 -1
- package/dist/esm/chunk-XGUYC57L.mjs +97 -0
- package/dist/esm/{chunk-HL2O3T57.mjs.map → chunk-XGUYC57L.mjs.map} +1 -1
- package/dist/esm/chunk-XIBOO3WF.mjs +168 -0
- package/dist/esm/{chunk-X6IHNXWY.mjs.map → chunk-XIBOO3WF.mjs.map} +1 -1
- package/dist/esm/chunk-XQFUKBY7.mjs +136 -0
- package/dist/esm/chunk-XQFUKBY7.mjs.map +1 -0
- package/dist/esm/chunk-XXLSA7W7.mjs +79 -0
- package/dist/esm/{chunk-X24PSWCX.mjs.map → chunk-XXLSA7W7.mjs.map} +1 -1
- package/dist/esm/chunk-Y3ENAKRC.mjs +73 -0
- package/dist/esm/{chunk-MT2RJ7H3.mjs.map → chunk-Y3ENAKRC.mjs.map} +1 -1
- package/dist/esm/chunk-Y4FHNC5I.mjs +513 -0
- package/dist/esm/{chunk-S47HA7O7.mjs.map → chunk-Y4FHNC5I.mjs.map} +1 -1
- package/dist/esm/chunk-Y7KAC4I4.mjs +130 -0
- package/dist/esm/{chunk-DMS7K76O.mjs.map → chunk-Y7KAC4I4.mjs.map} +1 -1
- package/dist/esm/chunk-YIHVPGHN.mjs +689 -0
- package/dist/esm/{chunk-U2SJIG2T.mjs.map → chunk-YIHVPGHN.mjs.map} +1 -1
- package/dist/esm/chunk-YU65LNIC.mjs +72 -0
- package/dist/esm/{chunk-ROT6S6BM.mjs.map → chunk-YU65LNIC.mjs.map} +1 -1
- package/dist/esm/chunk-ZNGTK5IZ.mjs +121 -0
- package/dist/esm/chunk-ZNGTK5IZ.mjs.map +1 -0
- package/dist/esm/chunk-ZWCTF3NQ.mjs +25 -0
- package/dist/esm/{chunk-W4BSN6SK.mjs.map → chunk-ZWCTF3NQ.mjs.map} +1 -1
- package/dist/esm/chunk-ZWD4BJVD.mjs +379 -0
- package/dist/esm/{chunk-HEAWDTLG.mjs.map → chunk-ZWD4BJVD.mjs.map} +1 -1
- package/dist/esm/cli/index.mjs +20 -1
- package/dist/esm/cli/localNode.mjs +16 -1
- package/dist/esm/cli/move.mjs +7 -1
- package/dist/esm/client/core.d.mts +36 -1
- package/dist/esm/client/core.mjs +34 -1
- package/dist/esm/client/get.d.mts +35 -1
- package/dist/esm/client/get.mjs +41 -1
- package/dist/esm/client/index.d.mts +3 -3
- package/dist/esm/client/index.mjs +69 -1
- package/dist/esm/client/post.d.mts +34 -1
- package/dist/esm/client/post.mjs +43 -1
- package/dist/esm/core/account/index.mjs +21 -1
- package/dist/esm/core/account/utils/address.mjs +19 -1
- package/dist/esm/core/account/utils/index.mjs +20 -1
- package/dist/esm/core/accountAddress.mjs +16 -1
- package/dist/esm/core/authenticationKey.mjs +15 -1
- package/dist/esm/core/common.mjs +7 -1
- package/dist/esm/core/crypto/abstraction.mjs +26 -1
- package/dist/esm/core/crypto/ed25519.mjs +33 -1
- package/dist/esm/core/crypto/ephemeral.mjs +30 -1
- package/dist/esm/core/crypto/federatedKeyless.mjs +44 -1
- package/dist/esm/core/crypto/hdKey.mjs +25 -1
- package/dist/esm/core/crypto/index.d.mts +1 -1
- package/dist/esm/core/crypto/index.mjs +173 -1
- package/dist/esm/core/crypto/keyless.mjs +83 -1
- package/dist/esm/core/crypto/multiEd25519.d.mts +17 -2
- package/dist/esm/core/crypto/multiEd25519.mjs +50 -1
- package/dist/esm/core/crypto/multiKey.d.mts +33 -15
- package/dist/esm/core/crypto/multiKey.mjs +51 -1
- package/dist/esm/core/crypto/poseidon.mjs +15 -1
- package/dist/esm/core/crypto/privateKey.mjs +12 -1
- package/dist/esm/core/crypto/proof.mjs +20 -1
- package/dist/esm/core/crypto/publicKey.mjs +22 -1
- package/dist/esm/core/crypto/secp256k1.mjs +29 -1
- package/dist/esm/core/crypto/signature.mjs +20 -1
- package/dist/esm/core/crypto/singleKey.mjs +48 -1
- package/dist/esm/core/crypto/utils.mjs +9 -1
- package/dist/esm/core/hex.mjs +12 -1
- package/dist/esm/core/index.d.mts +1 -1
- package/dist/esm/core/index.mjs +202 -1
- package/dist/esm/errors/index.mjs +25 -1
- package/dist/esm/index.d.mts +9 -7
- package/dist/esm/index.mjs +791 -1
- package/dist/esm/internal/abstraction.mjs +103 -1
- package/dist/esm/internal/account.d.mts +22 -5
- package/dist/esm/internal/account.mjs +128 -1
- package/dist/esm/internal/ans.mjs +138 -1
- package/dist/esm/internal/coin.mjs +98 -1
- package/dist/esm/internal/digitalAsset.mjs +145 -1
- package/dist/esm/internal/event.mjs +62 -1
- package/dist/esm/internal/experimental.d.mts +52 -0
- package/dist/esm/internal/experimental.mjs +99 -0
- package/dist/esm/internal/experimental.mjs.map +1 -0
- package/dist/esm/internal/faucet.mjs +57 -1
- package/dist/esm/internal/fungibleAsset.mjs +105 -1
- package/dist/esm/internal/general.mjs +43 -1
- package/dist/esm/internal/keyless.d.mts +12 -1
- package/dist/esm/internal/keyless.mjs +105 -1
- package/dist/esm/internal/object.mjs +58 -1
- package/dist/esm/internal/staking.mjs +60 -1
- package/dist/esm/internal/table.mjs +38 -1
- package/dist/esm/internal/transaction.mjs +57 -1
- package/dist/esm/internal/transactionSubmission.d.mts +20 -9
- package/dist/esm/internal/transactionSubmission.mjs +124 -1
- package/dist/esm/internal/view.mjs +100 -1
- package/dist/esm/transactions/authenticator/account.mjs +67 -1
- package/dist/esm/transactions/authenticator/index.mjs +82 -1
- package/dist/esm/transactions/authenticator/transaction.mjs +66 -1
- package/dist/esm/transactions/index.mjs +310 -1
- package/dist/esm/transactions/instances/chainId.mjs +11 -1
- package/dist/esm/transactions/instances/identifier.mjs +11 -1
- package/dist/esm/transactions/instances/index.mjs +114 -1
- package/dist/esm/transactions/instances/moduleId.mjs +55 -1
- package/dist/esm/transactions/instances/multiAgentTransaction.mjs +60 -1
- package/dist/esm/transactions/instances/rawTransaction.mjs +65 -1
- package/dist/esm/transactions/instances/rotationProofChallenge.mjs +21 -1
- package/dist/esm/transactions/instances/signedTransaction.mjs +63 -1
- package/dist/esm/transactions/instances/simpleTransaction.mjs +60 -1
- package/dist/esm/transactions/instances/transactionArgument.mjs +1 -1
- package/dist/esm/transactions/instances/transactionPayload.mjs +73 -1
- package/dist/esm/transactions/management/accountSequenceNumber.mjs +89 -1
- package/dist/esm/transactions/management/asyncQueue.mjs +9 -1
- package/dist/esm/transactions/management/index.mjs +109 -1
- package/dist/esm/transactions/management/transactionWorker.mjs +105 -1
- package/dist/esm/transactions/scriptComposer/index.mjs +94 -1
- package/dist/esm/transactions/transactionBuilder/helpers.mjs +92 -1
- package/dist/esm/transactions/transactionBuilder/index.mjs +180 -1
- package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +105 -1
- package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +75 -1
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.d.mts +2 -2
- package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +112 -1
- package/dist/esm/transactions/typeTag/index.mjs +91 -1
- package/dist/esm/transactions/typeTag/parser.mjs +60 -1
- package/dist/esm/transactions/types.mjs +1 -1
- package/dist/esm/types/abstraction.mjs +7 -1
- package/dist/esm/types/generated/operations.d.mts +63 -10
- package/dist/esm/types/generated/queries.d.mts +10 -2
- package/dist/esm/types/generated/queries.mjs +69 -1
- package/dist/esm/types/generated/types.d.mts +821 -1051
- package/dist/esm/types/generated/types.mjs +774 -1
- package/dist/esm/types/generated/types.mjs.map +1 -1
- package/dist/esm/types/index.d.mts +2 -2
- package/dist/esm/types/index.mjs +78 -1
- package/dist/esm/types/indexer.d.mts +14 -2
- package/dist/esm/types/indexer.mjs +1 -1
- package/dist/esm/types/types.d.mts +43 -3
- package/dist/esm/types/types.mjs +73 -1
- package/dist/esm/utils/apiEndpoints.mjs +21 -1
- package/dist/esm/utils/const.d.mts +1 -1
- package/dist/esm/utils/const.mjs +25 -1
- package/dist/esm/utils/helpers.d.mts +20 -1
- package/dist/esm/utils/helpers.mjs +37 -1
- package/dist/esm/utils/index.d.mts +1 -1
- package/dist/esm/utils/index.mjs +88 -1
- package/dist/esm/utils/memoize.mjs +9 -1
- package/dist/esm/utils/normalizeBundle.mjs +20 -1
- package/dist/esm/version.d.mts +1 -1
- package/dist/esm/version.mjs +7 -1
- package/package.json +2 -7
- package/src/account/MultiEd25519Account.ts +154 -0
- package/src/account/MultiKeyAccount.ts +1 -2
- package/src/account/index.ts +1 -0
- package/src/api/account.ts +57 -3
- package/src/api/aptos.ts +6 -0
- package/src/api/aptosConfig.ts +2 -2
- package/src/api/experimental.ts +64 -0
- package/src/api/transaction.ts +22 -2
- package/src/client/core.ts +120 -0
- package/src/client/get.ts +73 -1
- package/src/client/post.ts +71 -1
- 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/account.ts +378 -2
- package/src/internal/experimental.ts +55 -0
- package/src/internal/keyless.ts +17 -9
- package/src/internal/move/jwks/build/jwk/BuildInfo.yaml +56 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator_factory.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator_v2.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_governance.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/block.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/chain_id.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/chain_status.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/code.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/config_buffer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/consensus_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/create_signer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/delegation_pool.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/dispatchable_fungible_asset.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/dkg.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/event.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/execution_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/function_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/fungible_asset.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/gas_schedule.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/genesis.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/governance_proposal.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/guid.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/jwk_consensus_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/jwks.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/keyless_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/managed_coin.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/multisig_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/object.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/object_code_deployment.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/optional_aggregator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/primary_fungible_store.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_api_v0_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_config_seqnum.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration_state.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration_with_dkg.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/resource_account.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/stake.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_config.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_contract.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_proxy.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/state_storage.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/storage_gas.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/system_addresses.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/timestamp.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_context.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_fee.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_validation.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/util.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/validator_consensus_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/version.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/vesting.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/voting.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/any.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/aptos_hash.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/big_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bls12381.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bls12381_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bn254_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/capability.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/comparator.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/copyable_any.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/crypto_algebra.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/debug.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ed25519.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/fixed_point64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/from_bcs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math128.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math_fixed.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math_fixed64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/multi_ed25519.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/pool_u64.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/pool_u64_unbound.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_bulletproofs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_elgamal.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_pedersen.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/secp256k1.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/simple_map.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/smart_table.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/smart_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/string_utils.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/table.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/table_with_length.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/type_info.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/acl.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/bcs.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/bit_vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/error.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/features.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/fixed_point32.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/hash.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/option.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/signer.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/string.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/vector.mv +0 -0
- package/src/internal/move/jwks/build/jwk/bytecode_scripts/main.mv +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator_factory.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator_v2.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_governance.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/block.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/chain_id.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/chain_status.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/code.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/config_buffer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/consensus_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/create_signer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/delegation_pool.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/dispatchable_fungible_asset.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/dkg.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/event.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/execution_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/function_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/fungible_asset.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/gas_schedule.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/genesis.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/governance_proposal.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/guid.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/jwk_consensus_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/jwks.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/keyless_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/managed_coin.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/multisig_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/object.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/object_code_deployment.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/optional_aggregator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/primary_fungible_store.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_api_v0_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_config_seqnum.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration_state.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration_with_dkg.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/resource_account.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/stake.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_config.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_contract.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_proxy.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/state_storage.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/storage_gas.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/system_addresses.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/timestamp.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_context.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_fee.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_validation.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/util.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/validator_consensus_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/version.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/vesting.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/voting.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/any.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/aptos_hash.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/big_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bls12381.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bls12381_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bn254_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/capability.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/comparator.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/copyable_any.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/crypto_algebra.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/debug.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ed25519.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/fixed_point64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/from_bcs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math128.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math_fixed.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math_fixed64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/multi_ed25519.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/pool_u64.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/pool_u64_unbound.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_bulletproofs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_elgamal.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_pedersen.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/secp256k1.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/simple_map.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/smart_table.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/smart_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/string_utils.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/table.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/table_with_length.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/type_info.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/acl.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/bcs.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/bit_vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/error.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/features.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/fixed_point32.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/hash.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/option.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/signer.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/string.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/vector.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/source_maps/main.mvsm +0 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/account.move +1533 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator.move +48 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator_factory.move +66 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator_v2.move +280 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_account.move +443 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_coin.move +204 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_governance.move +1387 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/block.move +394 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/chain_id.move +41 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/chain_status.move +48 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/code.move +367 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/coin.move +2214 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/config_buffer.move +101 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/consensus_config.move +77 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/create_signer.move +21 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/delegation_pool.move +5568 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/dispatchable_fungible_asset.move +228 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/dkg.move +121 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/event.move +92 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/execution_config.move +66 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/function_info.move +100 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/fungible_asset.move +1566 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/gas_schedule.move +176 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/genesis.move +550 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/governance_proposal.move +23 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/guid.move +68 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/jwk_consensus_config.move +148 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/jwks.move +817 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/keyless_account.move +312 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/managed_coin.move +205 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/multisig_account.move +2477 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/object.move +1073 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/object_code_deployment.move +147 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/optional_aggregator.move +295 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/primary_fungible_store.move +405 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness.move +574 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_api_v0_config.move +57 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_config.move +153 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_config_seqnum.move +49 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration.move +237 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration_state.move +132 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration_with_dkg.move +69 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/resource_account.move +267 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/stake.move +3286 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_config.move +686 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_contract.move +1618 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_proxy.move +228 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/state_storage.move +90 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/storage_gas.move +622 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/system_addresses.move +82 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/timestamp.move +88 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_context.move +262 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_fee.move +457 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_validation.move +501 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/util.move +16 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/validator_consensus_info.move +42 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/version.move +115 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/vesting.move +2183 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/voting.move +1279 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/any.move +57 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/aptos_hash.move +253 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/big_vector.move +469 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bls12381.move +985 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bls12381_algebra.move +802 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bn254_algebra.move +855 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/capability.move +193 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/comparator.move +173 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/copyable_any.move +45 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/crypto_algebra.move +351 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/debug.move +278 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ed25519.move +262 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/fixed_point64.move +447 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/from_bcs.move +91 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math128.move +381 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math64.move +336 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math_fixed.move +139 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math_fixed64.move +142 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/multi_ed25519.move +482 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/pool_u64.move +571 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/pool_u64_unbound.move +270 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255.move +1310 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_bulletproofs.move +253 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_elgamal.move +234 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_pedersen.move +158 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/secp256k1.move +114 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/simple_map.move +319 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/smart_table.move +769 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/smart_vector.move +766 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/string_utils.move +148 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/table.move +152 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/table_with_length.move +141 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/type_info.move +351 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/acl.move +46 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/bcs.move +27 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/bit_vector.move +239 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/error.move +88 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/features.move +780 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/fixed_point32.move +295 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/hash.move +8 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/option.move +356 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/signer.move +21 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/string.move +93 -0
- package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/vector.move +669 -0
- package/src/internal/move/jwks/build/jwk/sources/main.move +20 -0
- package/src/internal/queries/getAccountAddressForAuthKey.graphql +8 -0
- package/src/internal/queries/getAuthKeysForPublicKey.graphql +9 -0
- package/src/internal/queries/getMultiKeyForAuthKey.graphql +9 -0
- package/src/internal/queries/getSignatures.graphql +13 -0
- package/src/internal/transactionSubmission.ts +125 -4
- package/src/internal/view.ts +4 -4
- package/src/transactions/transactionBuilder/transactionBuilder.ts +7 -0
- package/src/types/codegen.yaml +1 -1
- package/src/types/generated/operations.ts +69 -8
- package/src/types/generated/queries.ts +111 -0
- package/src/types/generated/types.ts +925 -1133
- package/src/types/indexer.ts +16 -0
- package/src/types/types.ts +45 -3
- package/src/utils/const.ts +1 -1
- package/src/utils/helpers.ts +22 -0
- package/src/version.ts +1 -1
- package/dist/common/chunk-ZYPBABLQ.js +0 -4
- package/dist/common/chunk-ZYPBABLQ.js.map +0 -1
- package/dist/esm/chunk-2FNFUTFJ.mjs +0 -2
- package/dist/esm/chunk-2FNFUTFJ.mjs.map +0 -1
- package/dist/esm/chunk-2GIPNLDO.mjs +0 -2
- package/dist/esm/chunk-33CBJFX2.mjs +0 -2
- package/dist/esm/chunk-35DKMW7Q.mjs +0 -2
- package/dist/esm/chunk-3EY7MT2M.mjs +0 -2
- package/dist/esm/chunk-3EY7MT2M.mjs.map +0 -1
- package/dist/esm/chunk-3HFZN7L5.mjs +0 -2
- package/dist/esm/chunk-3OLFJ65O.mjs +0 -2
- package/dist/esm/chunk-42T3UGSW.mjs +0 -2
- package/dist/esm/chunk-4776UXL6.mjs +0 -2
- package/dist/esm/chunk-4RXKALLC.mjs +0 -2
- package/dist/esm/chunk-4T75XRI2.mjs +0 -2
- package/dist/esm/chunk-4UK4MUSD.mjs +0 -2
- package/dist/esm/chunk-4YLUM62M.mjs +0 -2
- package/dist/esm/chunk-56CNRT2K.mjs +0 -2
- package/dist/esm/chunk-5BSMF22B.mjs +0 -2
- package/dist/esm/chunk-66HHRRIX.mjs +0 -2
- package/dist/esm/chunk-66HHRRIX.mjs.map +0 -1
- package/dist/esm/chunk-6JTNS5O6.mjs +0 -2
- package/dist/esm/chunk-6JTNS5O6.mjs.map +0 -1
- package/dist/esm/chunk-6LGXFXXR.mjs +0 -2
- package/dist/esm/chunk-6PBMD2BQ.mjs +0 -2
- package/dist/esm/chunk-7C2RDOWS.mjs +0 -1
- package/dist/esm/chunk-7CYCKCVU.mjs +0 -2
- package/dist/esm/chunk-7DPHPPMG.mjs +0 -2
- package/dist/esm/chunk-7DPHPPMG.mjs.map +0 -1
- package/dist/esm/chunk-A5L76YP7.mjs +0 -2
- package/dist/esm/chunk-ABXES4FS.mjs +0 -2
- package/dist/esm/chunk-AC3BISWL.mjs +0 -2
- package/dist/esm/chunk-AZWVCBK2.mjs +0 -2
- package/dist/esm/chunk-BBUN4IO4.mjs +0 -2
- package/dist/esm/chunk-BI3BTSUB.mjs +0 -2
- package/dist/esm/chunk-BUTMGMSD.mjs +0 -7
- package/dist/esm/chunk-BYHCW7MI.mjs +0 -2
- package/dist/esm/chunk-C3Q23D22.mjs +0 -2
- package/dist/esm/chunk-CRFLR3ZY.mjs +0 -2
- package/dist/esm/chunk-CSG67JHZ.mjs +0 -2
- package/dist/esm/chunk-CXNF73OX.mjs +0 -2
- package/dist/esm/chunk-D6T3NYOA.mjs +0 -2
- package/dist/esm/chunk-DBIZE7G6.mjs +0 -2
- package/dist/esm/chunk-DLLDRANJ.mjs +0 -2
- package/dist/esm/chunk-DMS7K76O.mjs +0 -2
- package/dist/esm/chunk-DNJQWGB7.mjs +0 -2
- package/dist/esm/chunk-DNWFDS7F.mjs +0 -2
- package/dist/esm/chunk-DPW6ELCQ.mjs +0 -2
- package/dist/esm/chunk-DWJ3PGWE.mjs +0 -2
- package/dist/esm/chunk-EBMEXURY.mjs +0 -2
- package/dist/esm/chunk-EGZI6EJ2.mjs +0 -2
- package/dist/esm/chunk-EMURYYVO.mjs +0 -2
- package/dist/esm/chunk-EY2JUXEC.mjs +0 -2
- package/dist/esm/chunk-F2ZTBAJJ.mjs +0 -2
- package/dist/esm/chunk-F2ZTBAJJ.mjs.map +0 -1
- package/dist/esm/chunk-FN4C3CKC.mjs +0 -2
- package/dist/esm/chunk-G4O6FXCF.mjs +0 -2
- package/dist/esm/chunk-G6RLN6ET.mjs +0 -2
- package/dist/esm/chunk-GOXRBEIJ.mjs +0 -2
- package/dist/esm/chunk-GQX5KMF7.mjs +0 -2
- package/dist/esm/chunk-H4GZWYIG.mjs +0 -2
- package/dist/esm/chunk-HEAWDTLG.mjs +0 -2
- package/dist/esm/chunk-HFCWJ6QL.mjs +0 -2
- package/dist/esm/chunk-HL2O3T57.mjs +0 -2
- package/dist/esm/chunk-HLJE5XGE.mjs +0 -2
- package/dist/esm/chunk-HT2WC3QV.mjs +0 -2
- package/dist/esm/chunk-I7YHK6ZF.mjs +0 -2
- package/dist/esm/chunk-I7YHK6ZF.mjs.map +0 -1
- package/dist/esm/chunk-IDTLNF4M.mjs +0 -2
- package/dist/esm/chunk-IF4UU2MT.mjs +0 -2
- package/dist/esm/chunk-IMTC3J2M.mjs +0 -2
- package/dist/esm/chunk-J7HRQ2IH.mjs +0 -2
- package/dist/esm/chunk-JF66JS2R.mjs +0 -2
- package/dist/esm/chunk-KDMSOCZY.mjs +0 -2
- package/dist/esm/chunk-KEJAUCQF.mjs +0 -2
- package/dist/esm/chunk-L2AQG3G3.mjs +0 -2
- package/dist/esm/chunk-L6FONDPA.mjs +0 -2
- package/dist/esm/chunk-MT2RJ7H3.mjs +0 -2
- package/dist/esm/chunk-N4DM5FYH.mjs +0 -2
- package/dist/esm/chunk-N6YTF76Q.mjs +0 -2
- package/dist/esm/chunk-N7C6LQPZ.mjs +0 -2
- package/dist/esm/chunk-N7C6LQPZ.mjs.map +0 -1
- package/dist/esm/chunk-O37BZP2G.mjs +0 -2
- package/dist/esm/chunk-ORMOQWWH.mjs +0 -2
- package/dist/esm/chunk-OURSLL3I.mjs +0 -2
- package/dist/esm/chunk-P7SE5LQE.mjs +0 -2
- package/dist/esm/chunk-PNSF3E67.mjs +0 -2
- package/dist/esm/chunk-PNSF3E67.mjs.map +0 -1
- package/dist/esm/chunk-PR3W2QEH.mjs +0 -2
- package/dist/esm/chunk-PWYJWTEM.mjs +0 -2
- package/dist/esm/chunk-PWYJWTEM.mjs.map +0 -1
- package/dist/esm/chunk-Q4C4U6I4.mjs +0 -4
- package/dist/esm/chunk-Q7RG7KQS.mjs +0 -2
- package/dist/esm/chunk-QBFGY74I.mjs +0 -2
- package/dist/esm/chunk-RJ7F4JDV.mjs +0 -2
- package/dist/esm/chunk-RJ7F4JDV.mjs.map +0 -1
- package/dist/esm/chunk-ROT6S6BM.mjs +0 -2
- package/dist/esm/chunk-S47HA7O7.mjs +0 -2
- package/dist/esm/chunk-SCBYJU6K.mjs +0 -2
- package/dist/esm/chunk-STY74NUA.mjs +0 -2
- package/dist/esm/chunk-STY74NUA.mjs.map +0 -1
- package/dist/esm/chunk-TDGUMBON.mjs +0 -4
- package/dist/esm/chunk-TDGUMBON.mjs.map +0 -1
- package/dist/esm/chunk-TM6IKHMX.mjs +0 -2
- package/dist/esm/chunk-TOBQ5UE6.mjs +0 -2
- package/dist/esm/chunk-U2SJIG2T.mjs +0 -2
- package/dist/esm/chunk-ULHOJ2BE.mjs +0 -2
- package/dist/esm/chunk-ULHOJ2BE.mjs.map +0 -1
- package/dist/esm/chunk-UTXEW2FT.mjs +0 -2
- package/dist/esm/chunk-V2EXS6TM.mjs +0 -2
- package/dist/esm/chunk-V7G2EDNR.mjs +0 -2
- package/dist/esm/chunk-V7G2EDNR.mjs.map +0 -1
- package/dist/esm/chunk-VHNX2NUR.mjs +0 -473
- package/dist/esm/chunk-VHNX2NUR.mjs.map +0 -1
- package/dist/esm/chunk-VKDTI6NX.mjs +0 -2
- package/dist/esm/chunk-VKDTI6NX.mjs.map +0 -1
- package/dist/esm/chunk-VOCI2675.mjs +0 -2
- package/dist/esm/chunk-W4BSN6SK.mjs +0 -2
- package/dist/esm/chunk-WCMW2L3P.mjs +0 -2
- package/dist/esm/chunk-WXDA4CCR.mjs +0 -2
- package/dist/esm/chunk-X24PSWCX.mjs +0 -2
- package/dist/esm/chunk-X2CPDUOS.mjs +0 -2
- package/dist/esm/chunk-X2CPDUOS.mjs.map +0 -1
- package/dist/esm/chunk-X6IHNXWY.mjs +0 -2
- package/dist/esm/chunk-XAPQNCTN.mjs +0 -2
- package/dist/esm/chunk-XDIX7NIP.mjs +0 -2
- package/dist/esm/chunk-XH3BEKII.mjs +0 -2
- package/dist/esm/chunk-XJJVJOX5.mjs +0 -2
- package/dist/esm/chunk-XKUIMGKU.mjs +0 -2
- package/dist/esm/chunk-XTOIL6MB.mjs +0 -2
- package/dist/esm/chunk-XXHZQFYW.mjs +0 -2
- package/dist/esm/chunk-Y3Y4DVCK.mjs +0 -2
- package/dist/esm/chunk-YIF242TF.mjs +0 -2
- package/dist/esm/chunk-YIF242TF.mjs.map +0 -1
- package/dist/esm/chunk-YOZBVVKL.mjs +0 -2
- package/dist/esm/chunk-ZCEBDPBJ.mjs +0 -2
- package/dist/esm/chunk-ZP5EBIBE.mjs +0 -2
- package/dist/esm/chunk-ZP5EBIBE.mjs.map +0 -1
- /package/dist/esm/{chunk-7C2RDOWS.mjs.map → account/MultiEd25519Account.mjs.map} +0 -0
- /package/dist/esm/{chunk-KDMSOCZY.mjs.map → api/experimental.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bcs/serializer.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport {\n MAX_U128_BIG_INT,\n MAX_U16_NUMBER,\n MAX_U32_NUMBER,\n MAX_U64_BIG_INT,\n MAX_U8_NUMBER,\n MAX_U256_BIG_INT,\n} from \"./consts\";\nimport { Hex } from \"../core/hex\";\nimport { AnyNumber, Uint16, Uint32, Uint8 } from \"../types\";\n\n/**\n * This class serves as a base class for all serializable types. It facilitates\n * composable serialization of complex types and enables the serialization of\n * instances to their BCS (Binary Canonical Serialization) representation.\n * @group Implementation\n * @category BCS\n */\nexport abstract class Serializable {\n abstract serialize(serializer: Serializer): void;\n\n /**\n * Serializes a `Serializable` value to its BCS representation.\n * This function is the TypeScript SDK equivalent of `bcs::to_bytes` in Move.\n * @returns the BCS representation of the Serializable instance as a byte buffer.\n * @group Implementation\n * @category BCS\n */\n bcsToBytes(): Uint8Array {\n const serializer = new Serializer();\n this.serialize(serializer);\n return serializer.toUint8Array();\n }\n\n /**\n * Converts the BCS-serialized bytes of a value into a Hex instance.\n * This function provides a Hex representation of the BCS-serialized data for easier handling and manipulation.\n * @returns A Hex instance with the BCS-serialized bytes loaded into its underlying Uint8Array.\n * @group Implementation\n * @category BCS\n */\n bcsToHex(): Hex {\n const bcsBytes = this.bcsToBytes();\n return Hex.fromHexInput(bcsBytes);\n }\n\n /**\n * Returns the hex string representation of the `Serializable` value without the 0x prefix.\n * @returns the hex format as a string without `0x` prefix.\n */\n toStringWithoutPrefix(): string {\n return this.bcsToHex().toStringWithoutPrefix();\n }\n\n /**\n * Returns the hex string representation of the `Serializable` value with the 0x prefix.\n * @returns the hex formatas a string prefixed by `0x`.\n */\n toString(): string {\n return `0x${this.toStringWithoutPrefix()}`;\n }\n}\n\n/**\n * A class for serializing various data types into a binary format.\n * It provides methods to serialize strings, bytes, numbers, and other serializable objects\n * using the Binary Coded Serialization (BCS) layout. The serialized data can be retrieved as a\n * Uint8Array.\n * @group Implementation\n * @category BCS\n */\nexport class Serializer {\n private buffer: ArrayBuffer;\n\n private offset: number;\n\n /**\n * Constructs a serializer with a buffer of size `length` bytes, 64 bytes by default.\n * The `length` must be greater than 0.\n *\n * @param length - The size of the buffer in bytes.\n * @group Implementation\n * @category BCS\n */\n constructor(length: number = 64) {\n if (length <= 0) {\n throw new Error(\"Length needs to be greater than 0\");\n }\n this.buffer = new ArrayBuffer(length);\n this.offset = 0;\n }\n\n /**\n * Ensures that the internal buffer can accommodate the specified number of bytes.\n * This function dynamically resizes the buffer if the current size is insufficient.\n *\n * @param bytes - The number of bytes to ensure the buffer can handle.\n * @group Implementation\n * @category BCS\n */\n private ensureBufferWillHandleSize(bytes: number) {\n while (this.buffer.byteLength < this.offset + bytes) {\n const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2);\n new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));\n this.buffer = newBuffer;\n }\n }\n\n /**\n * Appends the specified values to the buffer, ensuring that the buffer can accommodate the new data.\n *\n * @param {Uint8Array} values - The values to be appended to the buffer.\n * @group Implementation\n * @category BCS\n */\n protected appendToBuffer(values: Uint8Array) {\n this.ensureBufferWillHandleSize(values.length);\n new Uint8Array(this.buffer, this.offset).set(values);\n this.offset += values.length;\n }\n\n /**\n * Serializes a value into the buffer using the provided function, ensuring the buffer can accommodate the size.\n *\n * @param fn - The function to serialize the value, which takes a byte offset, the value to serialize, and an optional little-endian flag.\n * @param fn.byteOffset - The byte offset at which to write the value.\n * @param fn.value - The numeric value to serialize into the buffer.\n * @param fn.littleEndian - Optional flag indicating whether to use little-endian byte order (defaults to true).\n * @group Implementation\n * @category BCS\n */\n // TODO: JSDoc bytesLength and value\n private serializeWithFunction(\n fn: (byteOffset: number, value: number, littleEndian?: boolean) => void,\n bytesLength: number,\n value: number,\n ) {\n this.ensureBufferWillHandleSize(bytesLength);\n const dv = new DataView(this.buffer, this.offset);\n fn.apply(dv, [0, value, true]);\n this.offset += bytesLength;\n }\n\n /**\n * Serializes a string. UTF8 string is supported.\n * The number of bytes in the string content is serialized first, as a uleb128-encoded u32 integer.\n * Then the string content is serialized as UTF8 encoded bytes.\n *\n * BCS layout for \"string\": string_length | string_content\n * where string_length is a u32 integer encoded as a uleb128 integer, equal to the number of bytes in string_content.\n *\n * @param value - The string to serialize.\n *\n * @example\n * ```typescript\n * const serializer = new Serializer();\n * serializer.serializeStr(\"1234abcd\");\n * assert(serializer.toUint8Array() === new Uint8Array([8, 49, 50, 51, 52, 97, 98, 99, 100]));\n * ```\n * @group Implementation\n * @category BCS\n */\n serializeStr(value: string) {\n const textEncoder = new TextEncoder();\n this.serializeBytes(textEncoder.encode(value));\n }\n\n /**\n * Serializes an array of bytes.\n *\n * This function encodes the length of the byte array as a u32 integer in uleb128 format, followed by the byte array itself.\n * BCS layout for \"bytes\": bytes_length | bytes\n * where bytes_length is a u32 integer encoded as a uleb128 integer, equal to the length of the bytes array.\n * @param value - The byte array to serialize.\n * @group Implementation\n * @category BCS\n */\n serializeBytes(value: Uint8Array) {\n this.serializeU32AsUleb128(value.length);\n this.appendToBuffer(value);\n }\n\n /**\n * Serializes an array of bytes with a known length, allowing for efficient deserialization without needing to serialize the\n * length itself.\n * When deserializing, the number of bytes to deserialize needs to be passed in.\n\n * @param value - The Uint8Array to be serialized.\n * @group Implementation\n * @category BCS\n */\n serializeFixedBytes(value: Uint8Array) {\n this.appendToBuffer(value);\n }\n\n /**\n * Serializes a boolean value into a byte representation.\n *\n * The BCS layout for a boolean uses one byte, where \"0x01\" represents true and \"0x00\" represents false.\n *\n * @param value - The boolean value to serialize.\n * @group Implementation\n * @category BCS\n */\n serializeBool(value: boolean) {\n /**\n * Ensures that the provided value is a boolean.\n * This function throws an error if the value is not a boolean, helping to enforce type safety in your code.\n *\n * @param value - The value to be checked for boolean type.\n * @throws {Error} Throws an error if the value is not a boolean.\n * @group Implementation\n * @category BCS\n */\n ensureBoolean(value);\n const byteValue = value ? 1 : 0;\n this.appendToBuffer(new Uint8Array([byteValue]));\n }\n\n /**\n * Serializes a Uint8 value and appends it to the buffer.\n * BCS layout for \"uint8\": One byte. Binary format in little-endian representation.\n *\n * @param value - The Uint8 value to serialize.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(0, MAX_U8_NUMBER)\n serializeU8(value: Uint8) {\n this.appendToBuffer(new Uint8Array([value]));\n }\n\n /**\n * Serializes a uint16 number.\n *\n * @group Implementation\n * @category BCS\n\n */\n\n /**\n * Serializes a 16-bit unsigned integer value into a binary format.\n * BCS layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n *\n * @param value - The 16-bit unsigned integer value to serialize.\n * @example\n * ```typescript\n * const serializer = new Serializer();\n * serializer.serializeU16(4660);\n * assert(serializer.toUint8Array() === new Uint8Array([0x34, 0x12]));\n * ```\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(0, MAX_U16_NUMBER)\n serializeU16(value: Uint16) {\n this.serializeWithFunction(DataView.prototype.setUint16, 2, value);\n }\n\n /**\n * Serializes a 32-bit unsigned integer value into a binary format.\n * This function is useful for encoding data that needs to be stored or transmitted in a compact form.\n * @example\n * ```typescript\n * const serializer = new Serializer();\n * serializer.serializeU32(305419896);\n * assert(serializer.toUint8Array() === new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n * ```\n * @param value - The 32-bit unsigned integer value to serialize.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32(value: Uint32) {\n this.serializeWithFunction(DataView.prototype.setUint32, 4, value);\n }\n\n /**\n * Serializes a 64-bit unsigned integer into a format suitable for storage or transmission.\n * This function breaks down the value into two 32-bit components and writes them in little-endian order.\n *\n * @param value - The 64-bit unsigned integer to serialize, represented as a number.\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.toUint8Array() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n * ```\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(BigInt(0), MAX_U64_BIG_INT)\n serializeU64(value: AnyNumber) {\n const low = BigInt(value) & BigInt(MAX_U32_NUMBER);\n const high = BigInt(value) >> BigInt(32);\n\n // write little endian number\n this.serializeU32(Number(low));\n this.serializeU32(Number(high));\n }\n\n /**\n * Serializes a U128 value into a format suitable for storage or transmission.\n *\n * @param value - The U128 value to serialize, represented as a number.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(BigInt(0), MAX_U128_BIG_INT)\n serializeU128(value: AnyNumber) {\n const low = BigInt(value) & MAX_U64_BIG_INT;\n const high = BigInt(value) >> BigInt(64);\n\n // write little endian number\n this.serializeU64(low);\n this.serializeU64(high);\n }\n\n /**\n * Serializes a U256 value into a byte representation.\n * This function is essential for encoding large numbers in a compact format suitable for transmission or storage.\n *\n * @param value - The U256 value to serialize, represented as an AnyNumber.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(BigInt(0), MAX_U256_BIG_INT)\n serializeU256(value: AnyNumber) {\n const low = BigInt(value) & MAX_U128_BIG_INT;\n const high = BigInt(value) >> BigInt(128);\n\n // write little endian number\n this.serializeU128(low);\n this.serializeU128(high);\n }\n\n /**\n * Serializes a 32-bit unsigned integer as a variable-length ULEB128 encoded byte array.\n * BCS uses uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n *\n * @param val - The 32-bit unsigned integer value to be serialized.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUleb128(val: Uint32) {\n let value = val;\n const valueArray = [];\n while (value >>> 7 !== 0) {\n valueArray.push((value & 0x7f) | 0x80);\n value >>>= 7;\n }\n valueArray.push(value);\n this.appendToBuffer(new Uint8Array(valueArray));\n }\n\n /**\n * Returns the buffered bytes as a Uint8Array.\n *\n * This function allows you to retrieve the byte representation of the buffer up to the current offset.\n *\n * @returns Uint8Array - The byte array representation of the buffer.\n * @group Implementation\n * @category BCS\n */\n toUint8Array(): Uint8Array {\n return new Uint8Array(this.buffer).slice(0, this.offset);\n }\n\n /**\n * Serializes a `Serializable` value, facilitating composable serialization.\n *\n * @param value The Serializable value to serialize.\n *\n * @returns the serializer instance\n * @group Implementation\n * @category BCS\n */\n serialize<T extends Serializable>(value: T): void {\n // NOTE: The `serialize` method called by `value` is defined in `value`'s\n // Serializable interface, not the one defined in this class.\n value.serialize(this);\n }\n\n /**\n * Serializes an array of BCS Serializable values to a serializer instance.\n * The bytes are added to the serializer instance's byte buffer.\n *\n * @param values The array of BCS Serializable values\n * @example\n * const addresses = new Array<AccountAddress>(\n * AccountAddress.from(\"0x1\"),\n * AccountAddress.from(\"0x2\"),\n * AccountAddress.from(\"0xa\"),\n * AccountAddress.from(\"0xb\"),\n * );\n * const serializer = new Serializer();\n * serializer.serializeVector(addresses);\n * const serializedBytes = serializer.toUint8Array();\n * // serializedBytes is now the BCS-serialized bytes\n * // The equivalent value in Move would be:\n * // `bcs::to_bytes(&vector<address> [@0x1, @0x2, @0xa, @0xb])`;\n * @group Implementation\n * @category BCS\n */\n serializeVector<T extends Serializable>(values: Array<T>): void {\n this.serializeU32AsUleb128(values.length);\n values.forEach((item) => {\n item.serialize(this);\n });\n }\n\n /**\n * Serializes an optional value which can be a Serializable, string, or Uint8Array.\n * For strings and Uint8Arrays, it uses the appropriate serialization method.\n *\n * @param value The value to serialize (Serializable, string, Uint8Array, or undefined)\n * @param len Optional fixed length for Uint8Array serialization. If provided, uses serializeFixedBytes instead of serializeBytes\n *\n * @example\n * ```typescript\n * const serializer = new Serializer();\n * serializer.serializeOption(\"hello\"); // Serializes optional string\n * serializer.serializeOption(new Uint8Array([1, 2, 3])); // Serializes optional bytes\n * serializer.serializeOption(new Uint8Array([1, 2, 3]), 3); // Serializes optional fixed-length bytes\n * serializer.serializeOption(new AccountAddress(...)); // Serializes optional Serializable\n * serializer.serializeOption(undefined); // Serializes none case\n * ```\n * @group Implementation\n * @category BCS\n */\n serializeOption<T extends Serializable | string | Uint8Array>(value?: T, len?: number): void {\n const hasValue = value !== undefined;\n this.serializeBool(hasValue);\n if (hasValue) {\n if (typeof value === \"string\") {\n this.serializeStr(value);\n } else if (value instanceof Uint8Array) {\n if (len !== undefined) {\n this.serializeFixedBytes(value);\n } else {\n this.serializeBytes(value);\n }\n } else {\n value.serialize(this);\n }\n }\n }\n\n /**\n * @deprecated use `serializeOption` instead.\n * Serializes an optional string, supporting UTF8 encoding.\n * The function encodes the existence of the string first, followed by the length and content if it exists.\n *\n * BCS layout for optional \"string\": 1 | string_length | string_content\n * where string_length is a u32 integer encoded as a uleb128 integer, equal to the number of bytes in string_content.\n * BCS layout for undefined: 0\n *\n * @param value - The optional string to serialize. If undefined, it will serialize as 0.\n * @group Implementation\n * @category BCS\n */\n serializeOptionStr(value?: string): void {\n if (value === undefined) {\n this.serializeU32AsUleb128(0);\n } else {\n this.serializeU32AsUleb128(1);\n this.serializeStr(value);\n }\n }\n}\n\n/**\n * @group Implementation\n * @category BCS\n */\nexport function ensureBoolean(value: unknown): asserts value is boolean {\n if (typeof value !== \"boolean\") {\n throw new Error(`${value} is not a boolean value`);\n }\n}\n/**\n * @group Implementation\n * @category BCS\n */\nexport const outOfRangeErrorMessage = (value: AnyNumber, min: AnyNumber, max: AnyNumber) =>\n `${value} is out of range: [${min}, ${max}]`;\n\n/**\n * Validates that a given number is within a specified range.\n * This function throws an error if the value is outside the defined minimum and maximum bounds.\n *\n * @param value - The number to validate.\n * @param minValue - The minimum allowable value (inclusive).\n * @param maxValue - The maximum allowable value (inclusive).\n * @group Implementation\n * @category BCS\n */\nexport function validateNumberInRange<T extends AnyNumber>(value: T, minValue: T, maxValue: T) {\n const valueBigInt = BigInt(value);\n if (valueBigInt > BigInt(maxValue) || valueBigInt < BigInt(minValue)) {\n throw new Error(outOfRangeErrorMessage(value, minValue, maxValue));\n }\n}\n\n/**\n * A decorator that validates that the input argument for a function is within a specified range.\n * This ensures that the function is only called with valid input values, preventing potential errors.\n *\n * @param minValue - The input argument must be greater than or equal to this value.\n * @param maxValue - The input argument must be less than or equal to this value.\n * @group Implementation\n * @category BCS\n */\nfunction checkNumberRange<T extends AnyNumber>(minValue: T, maxValue: T) {\n return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => {\n const childFunction = descriptor.value;\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function deco(value: AnyNumber) {\n validateNumberInRange(value, minValue, maxValue);\n return childFunction.apply(this, [value]);\n };\n\n return descriptor;\n };\n}\n"],"mappings":"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","names":["Serializable","serializer","Serializer","bcsBytes","Hex","length","bytes","newBuffer","values","fn","bytesLength","value","dv","textEncoder","ensureBoolean","byteValue","low","MAX_U32_NUMBER","high","MAX_U64_BIG_INT","MAX_U128_BIG_INT","val","valueArray","item","len","hasValue","__decorateClass","checkNumberRange","MAX_U8_NUMBER","MAX_U16_NUMBER","MAX_U256_BIG_INT","outOfRangeErrorMessage","min","max","validateNumberInRange","minValue","maxValue","valueBigInt","target","propertyKey","descriptor","childFunction"]}
|
|
1
|
+
{"version":3,"sources":["../../src/bcs/serializer.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint-disable no-bitwise */\nimport {\n MAX_U128_BIG_INT,\n MAX_U16_NUMBER,\n MAX_U32_NUMBER,\n MAX_U64_BIG_INT,\n MAX_U8_NUMBER,\n MAX_U256_BIG_INT,\n} from \"./consts\";\nimport { Hex } from \"../core/hex\";\nimport { AnyNumber, Uint16, Uint32, Uint8 } from \"../types\";\n\n/**\n * This class serves as a base class for all serializable types. It facilitates\n * composable serialization of complex types and enables the serialization of\n * instances to their BCS (Binary Canonical Serialization) representation.\n * @group Implementation\n * @category BCS\n */\nexport abstract class Serializable {\n abstract serialize(serializer: Serializer): void;\n\n /**\n * Serializes a `Serializable` value to its BCS representation.\n * This function is the TypeScript SDK equivalent of `bcs::to_bytes` in Move.\n * @returns the BCS representation of the Serializable instance as a byte buffer.\n * @group Implementation\n * @category BCS\n */\n bcsToBytes(): Uint8Array {\n const serializer = new Serializer();\n this.serialize(serializer);\n return serializer.toUint8Array();\n }\n\n /**\n * Converts the BCS-serialized bytes of a value into a Hex instance.\n * This function provides a Hex representation of the BCS-serialized data for easier handling and manipulation.\n * @returns A Hex instance with the BCS-serialized bytes loaded into its underlying Uint8Array.\n * @group Implementation\n * @category BCS\n */\n bcsToHex(): Hex {\n const bcsBytes = this.bcsToBytes();\n return Hex.fromHexInput(bcsBytes);\n }\n\n /**\n * Returns the hex string representation of the `Serializable` value without the 0x prefix.\n * @returns the hex format as a string without `0x` prefix.\n */\n toStringWithoutPrefix(): string {\n return this.bcsToHex().toStringWithoutPrefix();\n }\n\n /**\n * Returns the hex string representation of the `Serializable` value with the 0x prefix.\n * @returns the hex formatas a string prefixed by `0x`.\n */\n toString(): string {\n return `0x${this.toStringWithoutPrefix()}`;\n }\n}\n\n/**\n * A class for serializing various data types into a binary format.\n * It provides methods to serialize strings, bytes, numbers, and other serializable objects\n * using the Binary Coded Serialization (BCS) layout. The serialized data can be retrieved as a\n * Uint8Array.\n * @group Implementation\n * @category BCS\n */\nexport class Serializer {\n private buffer: ArrayBuffer;\n\n private offset: number;\n\n /**\n * Constructs a serializer with a buffer of size `length` bytes, 64 bytes by default.\n * The `length` must be greater than 0.\n *\n * @param length - The size of the buffer in bytes.\n * @group Implementation\n * @category BCS\n */\n constructor(length: number = 64) {\n if (length <= 0) {\n throw new Error(\"Length needs to be greater than 0\");\n }\n this.buffer = new ArrayBuffer(length);\n this.offset = 0;\n }\n\n /**\n * Ensures that the internal buffer can accommodate the specified number of bytes.\n * This function dynamically resizes the buffer if the current size is insufficient.\n *\n * @param bytes - The number of bytes to ensure the buffer can handle.\n * @group Implementation\n * @category BCS\n */\n private ensureBufferWillHandleSize(bytes: number) {\n while (this.buffer.byteLength < this.offset + bytes) {\n const newBuffer = new ArrayBuffer(this.buffer.byteLength * 2);\n new Uint8Array(newBuffer).set(new Uint8Array(this.buffer));\n this.buffer = newBuffer;\n }\n }\n\n /**\n * Appends the specified values to the buffer, ensuring that the buffer can accommodate the new data.\n *\n * @param {Uint8Array} values - The values to be appended to the buffer.\n * @group Implementation\n * @category BCS\n */\n protected appendToBuffer(values: Uint8Array) {\n this.ensureBufferWillHandleSize(values.length);\n new Uint8Array(this.buffer, this.offset).set(values);\n this.offset += values.length;\n }\n\n /**\n * Serializes a value into the buffer using the provided function, ensuring the buffer can accommodate the size.\n *\n * @param fn - The function to serialize the value, which takes a byte offset, the value to serialize, and an optional little-endian flag.\n * @param fn.byteOffset - The byte offset at which to write the value.\n * @param fn.value - The numeric value to serialize into the buffer.\n * @param fn.littleEndian - Optional flag indicating whether to use little-endian byte order (defaults to true).\n * @group Implementation\n * @category BCS\n */\n // TODO: JSDoc bytesLength and value\n private serializeWithFunction(\n fn: (byteOffset: number, value: number, littleEndian?: boolean) => void,\n bytesLength: number,\n value: number,\n ) {\n this.ensureBufferWillHandleSize(bytesLength);\n const dv = new DataView(this.buffer, this.offset);\n fn.apply(dv, [0, value, true]);\n this.offset += bytesLength;\n }\n\n /**\n * Serializes a string. UTF8 string is supported.\n * The number of bytes in the string content is serialized first, as a uleb128-encoded u32 integer.\n * Then the string content is serialized as UTF8 encoded bytes.\n *\n * BCS layout for \"string\": string_length | string_content\n * where string_length is a u32 integer encoded as a uleb128 integer, equal to the number of bytes in string_content.\n *\n * @param value - The string to serialize.\n *\n * @example\n * ```typescript\n * const serializer = new Serializer();\n * serializer.serializeStr(\"1234abcd\");\n * assert(serializer.toUint8Array() === new Uint8Array([8, 49, 50, 51, 52, 97, 98, 99, 100]));\n * ```\n * @group Implementation\n * @category BCS\n */\n serializeStr(value: string) {\n const textEncoder = new TextEncoder();\n this.serializeBytes(textEncoder.encode(value));\n }\n\n /**\n * Serializes an array of bytes.\n *\n * This function encodes the length of the byte array as a u32 integer in uleb128 format, followed by the byte array itself.\n * BCS layout for \"bytes\": bytes_length | bytes\n * where bytes_length is a u32 integer encoded as a uleb128 integer, equal to the length of the bytes array.\n * @param value - The byte array to serialize.\n * @group Implementation\n * @category BCS\n */\n serializeBytes(value: Uint8Array) {\n this.serializeU32AsUleb128(value.length);\n this.appendToBuffer(value);\n }\n\n /**\n * Serializes an array of bytes with a known length, allowing for efficient deserialization without needing to serialize the\n * length itself.\n * When deserializing, the number of bytes to deserialize needs to be passed in.\n\n * @param value - The Uint8Array to be serialized.\n * @group Implementation\n * @category BCS\n */\n serializeFixedBytes(value: Uint8Array) {\n this.appendToBuffer(value);\n }\n\n /**\n * Serializes a boolean value into a byte representation.\n *\n * The BCS layout for a boolean uses one byte, where \"0x01\" represents true and \"0x00\" represents false.\n *\n * @param value - The boolean value to serialize.\n * @group Implementation\n * @category BCS\n */\n serializeBool(value: boolean) {\n /**\n * Ensures that the provided value is a boolean.\n * This function throws an error if the value is not a boolean, helping to enforce type safety in your code.\n *\n * @param value - The value to be checked for boolean type.\n * @throws {Error} Throws an error if the value is not a boolean.\n * @group Implementation\n * @category BCS\n */\n ensureBoolean(value);\n const byteValue = value ? 1 : 0;\n this.appendToBuffer(new Uint8Array([byteValue]));\n }\n\n /**\n * Serializes a Uint8 value and appends it to the buffer.\n * BCS layout for \"uint8\": One byte. Binary format in little-endian representation.\n *\n * @param value - The Uint8 value to serialize.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(0, MAX_U8_NUMBER)\n serializeU8(value: Uint8) {\n this.appendToBuffer(new Uint8Array([value]));\n }\n\n /**\n * Serializes a uint16 number.\n *\n * @group Implementation\n * @category BCS\n\n */\n\n /**\n * Serializes a 16-bit unsigned integer value into a binary format.\n * BCS layout for \"uint16\": Two bytes. Binary format in little-endian representation.\n *\n * @param value - The 16-bit unsigned integer value to serialize.\n * @example\n * ```typescript\n * const serializer = new Serializer();\n * serializer.serializeU16(4660);\n * assert(serializer.toUint8Array() === new Uint8Array([0x34, 0x12]));\n * ```\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(0, MAX_U16_NUMBER)\n serializeU16(value: Uint16) {\n this.serializeWithFunction(DataView.prototype.setUint16, 2, value);\n }\n\n /**\n * Serializes a 32-bit unsigned integer value into a binary format.\n * This function is useful for encoding data that needs to be stored or transmitted in a compact form.\n * @example\n * ```typescript\n * const serializer = new Serializer();\n * serializer.serializeU32(305419896);\n * assert(serializer.toUint8Array() === new Uint8Array([0x78, 0x56, 0x34, 0x12]));\n * ```\n * @param value - The 32-bit unsigned integer value to serialize.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32(value: Uint32) {\n this.serializeWithFunction(DataView.prototype.setUint32, 4, value);\n }\n\n /**\n * Serializes a 64-bit unsigned integer into a format suitable for storage or transmission.\n * This function breaks down the value into two 32-bit components and writes them in little-endian order.\n *\n * @param value - The 64-bit unsigned integer to serialize, represented as a number.\n * @example\n * ```ts\n * const serializer = new Serializer();\n * serializer.serializeU64(1311768467750121216);\n * assert(serializer.toUint8Array() === new Uint8Array([0x00, 0xEF, 0xCD, 0xAB, 0x78, 0x56, 0x34, 0x12]));\n * ```\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(BigInt(0), MAX_U64_BIG_INT)\n serializeU64(value: AnyNumber) {\n const low = BigInt(value) & BigInt(MAX_U32_NUMBER);\n const high = BigInt(value) >> BigInt(32);\n\n // write little endian number\n this.serializeU32(Number(low));\n this.serializeU32(Number(high));\n }\n\n /**\n * Serializes a U128 value into a format suitable for storage or transmission.\n *\n * @param value - The U128 value to serialize, represented as a number.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(BigInt(0), MAX_U128_BIG_INT)\n serializeU128(value: AnyNumber) {\n const low = BigInt(value) & MAX_U64_BIG_INT;\n const high = BigInt(value) >> BigInt(64);\n\n // write little endian number\n this.serializeU64(low);\n this.serializeU64(high);\n }\n\n /**\n * Serializes a U256 value into a byte representation.\n * This function is essential for encoding large numbers in a compact format suitable for transmission or storage.\n *\n * @param value - The U256 value to serialize, represented as an AnyNumber.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(BigInt(0), MAX_U256_BIG_INT)\n serializeU256(value: AnyNumber) {\n const low = BigInt(value) & MAX_U128_BIG_INT;\n const high = BigInt(value) >> BigInt(128);\n\n // write little endian number\n this.serializeU128(low);\n this.serializeU128(high);\n }\n\n /**\n * Serializes a 32-bit unsigned integer as a variable-length ULEB128 encoded byte array.\n * BCS uses uleb128 encoding in two cases: (1) lengths of variable-length sequences and (2) tags of enum values\n *\n * @param val - The 32-bit unsigned integer value to be serialized.\n * @group Implementation\n * @category BCS\n */\n @checkNumberRange(0, MAX_U32_NUMBER)\n serializeU32AsUleb128(val: Uint32) {\n let value = val;\n const valueArray = [];\n while (value >>> 7 !== 0) {\n valueArray.push((value & 0x7f) | 0x80);\n value >>>= 7;\n }\n valueArray.push(value);\n this.appendToBuffer(new Uint8Array(valueArray));\n }\n\n /**\n * Returns the buffered bytes as a Uint8Array.\n *\n * This function allows you to retrieve the byte representation of the buffer up to the current offset.\n *\n * @returns Uint8Array - The byte array representation of the buffer.\n * @group Implementation\n * @category BCS\n */\n toUint8Array(): Uint8Array {\n return new Uint8Array(this.buffer).slice(0, this.offset);\n }\n\n /**\n * Serializes a `Serializable` value, facilitating composable serialization.\n *\n * @param value The Serializable value to serialize.\n *\n * @returns the serializer instance\n * @group Implementation\n * @category BCS\n */\n serialize<T extends Serializable>(value: T): void {\n // NOTE: The `serialize` method called by `value` is defined in `value`'s\n // Serializable interface, not the one defined in this class.\n value.serialize(this);\n }\n\n /**\n * Serializes an array of BCS Serializable values to a serializer instance.\n * The bytes are added to the serializer instance's byte buffer.\n *\n * @param values The array of BCS Serializable values\n * @example\n * const addresses = new Array<AccountAddress>(\n * AccountAddress.from(\"0x1\"),\n * AccountAddress.from(\"0x2\"),\n * AccountAddress.from(\"0xa\"),\n * AccountAddress.from(\"0xb\"),\n * );\n * const serializer = new Serializer();\n * serializer.serializeVector(addresses);\n * const serializedBytes = serializer.toUint8Array();\n * // serializedBytes is now the BCS-serialized bytes\n * // The equivalent value in Move would be:\n * // `bcs::to_bytes(&vector<address> [@0x1, @0x2, @0xa, @0xb])`;\n * @group Implementation\n * @category BCS\n */\n serializeVector<T extends Serializable>(values: Array<T>): void {\n this.serializeU32AsUleb128(values.length);\n values.forEach((item) => {\n item.serialize(this);\n });\n }\n\n /**\n * Serializes an optional value which can be a Serializable, string, or Uint8Array.\n * For strings and Uint8Arrays, it uses the appropriate serialization method.\n *\n * @param value The value to serialize (Serializable, string, Uint8Array, or undefined)\n * @param len Optional fixed length for Uint8Array serialization. If provided, uses serializeFixedBytes instead of serializeBytes\n *\n * @example\n * ```typescript\n * const serializer = new Serializer();\n * serializer.serializeOption(\"hello\"); // Serializes optional string\n * serializer.serializeOption(new Uint8Array([1, 2, 3])); // Serializes optional bytes\n * serializer.serializeOption(new Uint8Array([1, 2, 3]), 3); // Serializes optional fixed-length bytes\n * serializer.serializeOption(new AccountAddress(...)); // Serializes optional Serializable\n * serializer.serializeOption(undefined); // Serializes none case\n * ```\n * @group Implementation\n * @category BCS\n */\n serializeOption<T extends Serializable | string | Uint8Array>(value?: T, len?: number): void {\n const hasValue = value !== undefined;\n this.serializeBool(hasValue);\n if (hasValue) {\n if (typeof value === \"string\") {\n this.serializeStr(value);\n } else if (value instanceof Uint8Array) {\n if (len !== undefined) {\n this.serializeFixedBytes(value);\n } else {\n this.serializeBytes(value);\n }\n } else {\n value.serialize(this);\n }\n }\n }\n\n /**\n * @deprecated use `serializeOption` instead.\n * Serializes an optional string, supporting UTF8 encoding.\n * The function encodes the existence of the string first, followed by the length and content if it exists.\n *\n * BCS layout for optional \"string\": 1 | string_length | string_content\n * where string_length is a u32 integer encoded as a uleb128 integer, equal to the number of bytes in string_content.\n * BCS layout for undefined: 0\n *\n * @param value - The optional string to serialize. If undefined, it will serialize as 0.\n * @group Implementation\n * @category BCS\n */\n serializeOptionStr(value?: string): void {\n if (value === undefined) {\n this.serializeU32AsUleb128(0);\n } else {\n this.serializeU32AsUleb128(1);\n this.serializeStr(value);\n }\n }\n}\n\n/**\n * @group Implementation\n * @category BCS\n */\nexport function ensureBoolean(value: unknown): asserts value is boolean {\n if (typeof value !== \"boolean\") {\n throw new Error(`${value} is not a boolean value`);\n }\n}\n/**\n * @group Implementation\n * @category BCS\n */\nexport const outOfRangeErrorMessage = (value: AnyNumber, min: AnyNumber, max: AnyNumber) =>\n `${value} is out of range: [${min}, ${max}]`;\n\n/**\n * Validates that a given number is within a specified range.\n * This function throws an error if the value is outside the defined minimum and maximum bounds.\n *\n * @param value - The number to validate.\n * @param minValue - The minimum allowable value (inclusive).\n * @param maxValue - The maximum allowable value (inclusive).\n * @group Implementation\n * @category BCS\n */\nexport function validateNumberInRange<T extends AnyNumber>(value: T, minValue: T, maxValue: T) {\n const valueBigInt = BigInt(value);\n if (valueBigInt > BigInt(maxValue) || valueBigInt < BigInt(minValue)) {\n throw new Error(outOfRangeErrorMessage(value, minValue, maxValue));\n }\n}\n\n/**\n * A decorator that validates that the input argument for a function is within a specified range.\n * This ensures that the function is only called with valid input values, preventing potential errors.\n *\n * @param minValue - The input argument must be greater than or equal to this value.\n * @param maxValue - The input argument must be less than or equal to this value.\n * @group Implementation\n * @category BCS\n */\nfunction checkNumberRange<T extends AnyNumber>(minValue: T, maxValue: T) {\n return (target: unknown, propertyKey: string, descriptor: PropertyDescriptor) => {\n const childFunction = descriptor.value;\n // eslint-disable-next-line no-param-reassign\n descriptor.value = function deco(value: AnyNumber) {\n validateNumberInRange(value, minValue, maxValue);\n return childFunction.apply(this, [value]);\n };\n\n return descriptor;\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Serializable
|
|
3
|
+
} from "./chunk-C7T6GW5P.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ParsingError
|
|
6
|
+
} from "./chunk-QPT4BSAB.mjs";
|
|
7
|
+
|
|
8
|
+
// src/core/accountAddress.ts
|
|
9
|
+
import { bytesToHex, hexToBytes } from "@noble/hashes/utils";
|
|
10
|
+
var AddressInvalidReason = /* @__PURE__ */ ((AddressInvalidReason2) => {
|
|
11
|
+
AddressInvalidReason2["INCORRECT_NUMBER_OF_BYTES"] = "incorrect_number_of_bytes";
|
|
12
|
+
AddressInvalidReason2["INVALID_HEX_CHARS"] = "invalid_hex_chars";
|
|
13
|
+
AddressInvalidReason2["TOO_SHORT"] = "too_short";
|
|
14
|
+
AddressInvalidReason2["TOO_LONG"] = "too_long";
|
|
15
|
+
AddressInvalidReason2["LEADING_ZERO_X_REQUIRED"] = "leading_zero_x_required";
|
|
16
|
+
AddressInvalidReason2["LONG_FORM_REQUIRED_UNLESS_SPECIAL"] = "long_form_required_unless_special";
|
|
17
|
+
AddressInvalidReason2["INVALID_PADDING_ZEROES"] = "INVALID_PADDING_ZEROES";
|
|
18
|
+
AddressInvalidReason2["INVALID_PADDING_STRICTNESS"] = "INVALID_PADDING_STRICTNESS";
|
|
19
|
+
return AddressInvalidReason2;
|
|
20
|
+
})(AddressInvalidReason || {});
|
|
21
|
+
var _AccountAddress = class _AccountAddress extends Serializable {
|
|
22
|
+
/**
|
|
23
|
+
* Creates an instance of AccountAddress from a Uint8Array.
|
|
24
|
+
*
|
|
25
|
+
* This function ensures that the input data is exactly 32 bytes long, which is required for a valid account address.
|
|
26
|
+
*
|
|
27
|
+
* @param input A Uint8Array representing an account address.
|
|
28
|
+
* @throws ParsingError if the input length is not equal to 32 bytes.
|
|
29
|
+
* @group Implementation
|
|
30
|
+
* @category Serialization
|
|
31
|
+
*/
|
|
32
|
+
constructor(input) {
|
|
33
|
+
super();
|
|
34
|
+
if (input.length !== _AccountAddress.LENGTH) {
|
|
35
|
+
throw new ParsingError(
|
|
36
|
+
"AccountAddress data should be exactly 32 bytes long",
|
|
37
|
+
"incorrect_number_of_bytes" /* INCORRECT_NUMBER_OF_BYTES */
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
this.data = input;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Determines if the address is classified as special, which is defined as 0x0 to 0xf inclusive.
|
|
44
|
+
* In other words, the last byte of the address must be < 0b10000 (16)
|
|
45
|
+
* and every other byte must be zero.
|
|
46
|
+
*
|
|
47
|
+
* For more information on how special addresses are defined, see AIP-40:
|
|
48
|
+
* https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.
|
|
49
|
+
*
|
|
50
|
+
* @returns true if the address is special, false otherwise.
|
|
51
|
+
* @group Implementation
|
|
52
|
+
* @category Serialization
|
|
53
|
+
*/
|
|
54
|
+
isSpecial() {
|
|
55
|
+
return this.data.slice(0, this.data.length - 1).every((byte) => byte === 0) && this.data[this.data.length - 1] < 16;
|
|
56
|
+
}
|
|
57
|
+
// ===
|
|
58
|
+
// Methods for representing an instance of AccountAddress as other types.
|
|
59
|
+
// ===
|
|
60
|
+
/**
|
|
61
|
+
* Return the AccountAddress as a string as per AIP-40.
|
|
62
|
+
* https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.
|
|
63
|
+
* This representation returns special addresses in SHORT form (0xf)
|
|
64
|
+
* and other addresses in LONG form (0x + 64 characters).
|
|
65
|
+
*
|
|
66
|
+
* @returns AccountAddress as a string conforming to AIP-40.
|
|
67
|
+
* @group Implementation
|
|
68
|
+
* @category Serialization
|
|
69
|
+
*/
|
|
70
|
+
toString() {
|
|
71
|
+
return `0x${this.toStringWithoutPrefix()}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Return the AccountAddress as a string conforming to AIP-40 but without the leading 0x.
|
|
75
|
+
*
|
|
76
|
+
* NOTE: Prefer to use `toString` where possible.
|
|
77
|
+
*
|
|
78
|
+
* @returns AccountAddress as a string without the leading 0x.
|
|
79
|
+
* @group Implementation
|
|
80
|
+
* @category Serialization
|
|
81
|
+
*/
|
|
82
|
+
toStringWithoutPrefix() {
|
|
83
|
+
let hex = bytesToHex(this.data);
|
|
84
|
+
if (this.isSpecial()) {
|
|
85
|
+
hex = hex[hex.length - 1];
|
|
86
|
+
}
|
|
87
|
+
return hex;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Convert the account address to a string in LONG format, which is always 0x followed by 64 hex characters.
|
|
91
|
+
*
|
|
92
|
+
* NOTE: Prefer to use `toString` where possible, as it formats special addresses using the SHORT form (no leading 0s).
|
|
93
|
+
*
|
|
94
|
+
* @returns AccountAddress as a string in LONG form.
|
|
95
|
+
* @group Implementation
|
|
96
|
+
* @category Serialization
|
|
97
|
+
*/
|
|
98
|
+
toStringLong() {
|
|
99
|
+
return `0x${this.toStringLongWithoutPrefix()}`;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Returns the account address as a string in LONG form without a leading 0x.
|
|
103
|
+
* This function will include leading zeroes and will produce a string of 64 hex characters.
|
|
104
|
+
*
|
|
105
|
+
* NOTE: Prefer to use `toString` where possible, as it formats special addresses using the SHORT form (no leading 0s).
|
|
106
|
+
*
|
|
107
|
+
* @returns {string} The account address in LONG form.
|
|
108
|
+
* @group Implementation
|
|
109
|
+
* @category Serialization
|
|
110
|
+
*/
|
|
111
|
+
toStringLongWithoutPrefix() {
|
|
112
|
+
return bytesToHex(this.data);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get the inner data as a Uint8Array.
|
|
116
|
+
* The inner data is already a Uint8Array, so no conversion takes place.
|
|
117
|
+
*
|
|
118
|
+
* @returns Hex data as Uint8Array
|
|
119
|
+
* @group Implementation
|
|
120
|
+
* @category Serialization
|
|
121
|
+
*/
|
|
122
|
+
toUint8Array() {
|
|
123
|
+
return this.data;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Serialize the AccountAddress to a Serializer instance's data buffer.
|
|
127
|
+
* @param serializer The serializer to serialize the AccountAddress to.
|
|
128
|
+
* @returns void
|
|
129
|
+
* @example
|
|
130
|
+
* const serializer = new Serializer();
|
|
131
|
+
* const address = AccountAddress.fromString("0x1");
|
|
132
|
+
* address.serialize(serializer);
|
|
133
|
+
* const bytes = serializer.toUint8Array();
|
|
134
|
+
* // `bytes` is now the BCS-serialized address.
|
|
135
|
+
* @group Implementation
|
|
136
|
+
* @category Serialization
|
|
137
|
+
*/
|
|
138
|
+
serialize(serializer) {
|
|
139
|
+
serializer.serializeFixedBytes(this.data);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Serializes the current instance into a byte sequence suitable for entry functions.
|
|
143
|
+
* This allows for the proper encoding of data when interacting with entry functions in the blockchain.
|
|
144
|
+
*
|
|
145
|
+
* @param serializer - The serializer instance used to convert the data into bytes.
|
|
146
|
+
* @group Implementation
|
|
147
|
+
* @category Serialization
|
|
148
|
+
*/
|
|
149
|
+
serializeForEntryFunction(serializer) {
|
|
150
|
+
const bcsBytes = this.bcsToBytes();
|
|
151
|
+
serializer.serializeBytes(bcsBytes);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Serializes the current instance for use in a script function by encoding it into a byte sequence.
|
|
155
|
+
* This process involves serializing the variant index and the instance data, making it suitable for transmission.
|
|
156
|
+
*
|
|
157
|
+
* @param serializer - The serializer instance used to perform the serialization.
|
|
158
|
+
* @group Implementation
|
|
159
|
+
* @category Serialization
|
|
160
|
+
*/
|
|
161
|
+
serializeForScriptFunction(serializer) {
|
|
162
|
+
serializer.serializeU32AsUleb128(3 /* Address */);
|
|
163
|
+
serializer.serialize(this);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Deserialize an AccountAddress from the byte buffer in a Deserializer instance.
|
|
167
|
+
* This function allows you to convert a byte representation of an AccountAddress into an instance of AccountAddress.
|
|
168
|
+
* @param deserializer The deserializer to deserialize the AccountAddress from.
|
|
169
|
+
* @returns An instance of AccountAddress.
|
|
170
|
+
* @example
|
|
171
|
+
* const bytes = hexToBytes("0x0102030405060708091011121314151617181920212223242526272829303132");
|
|
172
|
+
* const deserializer = new Deserializer(bytes);
|
|
173
|
+
* const address = AccountAddress.deserialize(deserializer);
|
|
174
|
+
* // `address` is now an instance of AccountAddress.
|
|
175
|
+
* @group Implementation
|
|
176
|
+
* @category Serialization
|
|
177
|
+
*/
|
|
178
|
+
static deserialize(deserializer) {
|
|
179
|
+
const bytes = deserializer.deserializeFixedBytes(_AccountAddress.LENGTH);
|
|
180
|
+
return new _AccountAddress(bytes);
|
|
181
|
+
}
|
|
182
|
+
// ===
|
|
183
|
+
// Methods for creating an instance of AccountAddress from other types.
|
|
184
|
+
// ===
|
|
185
|
+
/**
|
|
186
|
+
* NOTE: This function has strict parsing behavior. For relaxed behavior, please use
|
|
187
|
+
* the `fromString` function.
|
|
188
|
+
*
|
|
189
|
+
* Creates an instance of AccountAddress from a hex string.
|
|
190
|
+
*
|
|
191
|
+
* This function allows only the strictest formats defined by AIP-40. In short this
|
|
192
|
+
* means only the following formats are accepted:
|
|
193
|
+
*
|
|
194
|
+
* - LONG
|
|
195
|
+
* - SHORT for special addresses
|
|
196
|
+
*
|
|
197
|
+
* Where:
|
|
198
|
+
* - LONG is defined as 0x + 64 hex characters.
|
|
199
|
+
* - SHORT for special addresses is 0x0 to 0xf inclusive without padding zeroes.
|
|
200
|
+
*
|
|
201
|
+
* This means the following are not accepted:
|
|
202
|
+
* - SHORT for non-special addresses.
|
|
203
|
+
* - Any address without a leading 0x.
|
|
204
|
+
*
|
|
205
|
+
* @param input - A hex string representing an account address.
|
|
206
|
+
*
|
|
207
|
+
* @throws {ParsingError} If the hex string does not start with 0x or is not in a valid format.
|
|
208
|
+
*
|
|
209
|
+
* @remarks
|
|
210
|
+
*
|
|
211
|
+
* This function has strict parsing behavior. For relaxed behavior, please use the `fromString` function.
|
|
212
|
+
*
|
|
213
|
+
* @see AIP-40 documentation for more details on address formats:
|
|
214
|
+
* https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.
|
|
215
|
+
*
|
|
216
|
+
* @returns An instance of AccountAddress.
|
|
217
|
+
* @group Implementation
|
|
218
|
+
* @category Serialization
|
|
219
|
+
*/
|
|
220
|
+
static fromStringStrict(input) {
|
|
221
|
+
if (!input.startsWith("0x")) {
|
|
222
|
+
throw new ParsingError("Hex string must start with a leading 0x.", "leading_zero_x_required" /* LEADING_ZERO_X_REQUIRED */);
|
|
223
|
+
}
|
|
224
|
+
const address = _AccountAddress.fromString(input);
|
|
225
|
+
if (input.length !== _AccountAddress.LONG_STRING_LENGTH + 2) {
|
|
226
|
+
if (!address.isSpecial()) {
|
|
227
|
+
throw new ParsingError(
|
|
228
|
+
`The given hex string ${input} is not a special address, it must be represented as 0x + 64 chars.`,
|
|
229
|
+
"long_form_required_unless_special" /* LONG_FORM_REQUIRED_UNLESS_SPECIAL */
|
|
230
|
+
);
|
|
231
|
+
} else if (input.length !== 3) {
|
|
232
|
+
throw new ParsingError(
|
|
233
|
+
// eslint-disable-next-line max-len
|
|
234
|
+
`The given hex string ${input} is a special address not in LONG form, it must be 0x0 to 0xf without padding zeroes.`,
|
|
235
|
+
"INVALID_PADDING_ZEROES" /* INVALID_PADDING_ZEROES */
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return address;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* NOTE: This function has relaxed parsing behavior. For strict behavior, please use
|
|
243
|
+
* the `fromStringStrict` function. Where possible use `fromStringStrict` rather than this
|
|
244
|
+
* function, `fromString`.
|
|
245
|
+
*
|
|
246
|
+
* Creates an instance of AccountAddress from a hex string.
|
|
247
|
+
*
|
|
248
|
+
* This function allows all formats defined by AIP-40. In short this means the
|
|
249
|
+
* following formats are accepted:
|
|
250
|
+
*
|
|
251
|
+
* - LONG, with or without leading 0x
|
|
252
|
+
* - SHORT*, with or without leading 0x
|
|
253
|
+
*
|
|
254
|
+
* Where:
|
|
255
|
+
* - LONG is 64 hex characters.
|
|
256
|
+
* - SHORT* is 1 to 63 hex characters inclusive. The address can have missing values up to `maxMissingChars` before it is padded.
|
|
257
|
+
* - Padding zeroes are allowed, e.g. 0x0123 is valid.
|
|
258
|
+
*
|
|
259
|
+
* Learn more about the different address formats by reading AIP-40:
|
|
260
|
+
* https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.
|
|
261
|
+
*
|
|
262
|
+
* @param input A hex string representing an account address.
|
|
263
|
+
* @param args.maxMissingChars The number of characters that can be missing in a padded address before it is invalid.
|
|
264
|
+
*
|
|
265
|
+
* @returns An instance of AccountAddress.
|
|
266
|
+
*
|
|
267
|
+
* @throws ParsingError if the hex string is too short, too long, or contains invalid characters.
|
|
268
|
+
* @group Implementation
|
|
269
|
+
* @category Serialization
|
|
270
|
+
*/
|
|
271
|
+
static fromString(input, { maxMissingChars = 4 } = {}) {
|
|
272
|
+
let parsedInput = input;
|
|
273
|
+
if (input.startsWith("0x")) {
|
|
274
|
+
parsedInput = input.slice(2);
|
|
275
|
+
}
|
|
276
|
+
if (parsedInput.length === 0) {
|
|
277
|
+
throw new ParsingError(
|
|
278
|
+
"Hex string is too short, must be 1 to 64 chars long, excluding the leading 0x.",
|
|
279
|
+
"too_short" /* TOO_SHORT */
|
|
280
|
+
);
|
|
281
|
+
}
|
|
282
|
+
if (parsedInput.length > 64) {
|
|
283
|
+
throw new ParsingError(
|
|
284
|
+
"Hex string is too long, must be 1 to 64 chars long, excluding the leading 0x.",
|
|
285
|
+
"too_long" /* TOO_LONG */
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
if (maxMissingChars > 63 || maxMissingChars < 0) {
|
|
289
|
+
throw new ParsingError(
|
|
290
|
+
`maxMissingChars must be between or equal to 0 and 63. Received ${maxMissingChars}`,
|
|
291
|
+
"INVALID_PADDING_STRICTNESS" /* INVALID_PADDING_STRICTNESS */
|
|
292
|
+
);
|
|
293
|
+
}
|
|
294
|
+
let addressBytes;
|
|
295
|
+
try {
|
|
296
|
+
addressBytes = hexToBytes(parsedInput.padStart(64, "0"));
|
|
297
|
+
} catch (error) {
|
|
298
|
+
throw new ParsingError(`Hex characters are invalid: ${error?.message}`, "invalid_hex_chars" /* INVALID_HEX_CHARS */);
|
|
299
|
+
}
|
|
300
|
+
const address = new _AccountAddress(addressBytes);
|
|
301
|
+
if (parsedInput.length < 64 - maxMissingChars) {
|
|
302
|
+
if (!address.isSpecial()) {
|
|
303
|
+
throw new ParsingError(
|
|
304
|
+
`Hex string is too short, must be ${64 - maxMissingChars} to 64 chars long, excluding the leading 0x. You may need to fix
|
|
305
|
+
the addresss by padding it with 0s before passing it to \`fromString\` (e.g. <addressString>.padStart(64, '0')).
|
|
306
|
+
Received ${input}`,
|
|
307
|
+
"too_short" /* TOO_SHORT */
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return address;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Convenience method for creating an AccountAddress from various input types.
|
|
315
|
+
* This function accepts a string, Uint8Array, or an existing AccountAddress instance and returns the corresponding
|
|
316
|
+
* AccountAddress.
|
|
317
|
+
*
|
|
318
|
+
* @param input - The input to convert into an AccountAddress. This can be a string representation of an address, a Uint8Array,
|
|
319
|
+
* or an existing AccountAddress.
|
|
320
|
+
* @param args.maxMissingChars The number of characters that can be missing in a padded address before it is invalid.
|
|
321
|
+
* @group Implementation
|
|
322
|
+
* @category Serialization
|
|
323
|
+
*/
|
|
324
|
+
static from(input, { maxMissingChars = 4 } = {}) {
|
|
325
|
+
if (typeof input === "string") {
|
|
326
|
+
return _AccountAddress.fromString(input, { maxMissingChars });
|
|
327
|
+
}
|
|
328
|
+
if (input instanceof Uint8Array) {
|
|
329
|
+
return new _AccountAddress(input);
|
|
330
|
+
}
|
|
331
|
+
return input;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Create an AccountAddress from various input types, including strings, Uint8Array, and AccountAddress instances.
|
|
335
|
+
*
|
|
336
|
+
* @param input - The input to convert into an AccountAddress, which can be a string, a Uint8Array, or an AccountAddress.
|
|
337
|
+
* @group Implementation
|
|
338
|
+
* @category Serialization
|
|
339
|
+
*/
|
|
340
|
+
static fromStrict(input) {
|
|
341
|
+
if (typeof input === "string") {
|
|
342
|
+
return _AccountAddress.fromStringStrict(input);
|
|
343
|
+
}
|
|
344
|
+
if (input instanceof Uint8Array) {
|
|
345
|
+
return new _AccountAddress(input);
|
|
346
|
+
}
|
|
347
|
+
return input;
|
|
348
|
+
}
|
|
349
|
+
// ===
|
|
350
|
+
// Methods for checking validity.
|
|
351
|
+
// ===
|
|
352
|
+
/**
|
|
353
|
+
* Check if the provided input is a valid AccountAddress.
|
|
354
|
+
*
|
|
355
|
+
* @param args - The arguments for validation.
|
|
356
|
+
* @param args.input - A hex string representing an account address.
|
|
357
|
+
* @param args.strict - If true, use strict parsing behavior; if false, use relaxed parsing behavior.
|
|
358
|
+
*
|
|
359
|
+
* @returns An object indicating whether the address is valid. If valid, valid = true; if not, valid = false with additional details.
|
|
360
|
+
* If the address is invalid, invalidReason will explain why it is invalid, and invalidReasonMessage will provide the error message.
|
|
361
|
+
* @group Implementation
|
|
362
|
+
* @category Serialization
|
|
363
|
+
*/
|
|
364
|
+
static isValid(args) {
|
|
365
|
+
try {
|
|
366
|
+
if (args.strict) {
|
|
367
|
+
_AccountAddress.fromStrict(args.input);
|
|
368
|
+
} else {
|
|
369
|
+
_AccountAddress.from(args.input);
|
|
370
|
+
}
|
|
371
|
+
return { valid: true };
|
|
372
|
+
} catch (error) {
|
|
373
|
+
return {
|
|
374
|
+
valid: false,
|
|
375
|
+
invalidReason: error?.invalidReason,
|
|
376
|
+
invalidReasonMessage: error?.message
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Determine if two AccountAddresses are equal based on their underlying byte data.
|
|
382
|
+
*
|
|
383
|
+
* @param other - The AccountAddress to compare to.
|
|
384
|
+
* @returns true if the AccountAddresses are equal, false if not.
|
|
385
|
+
* @group Implementation
|
|
386
|
+
* @category Serialization
|
|
387
|
+
*/
|
|
388
|
+
equals(other) {
|
|
389
|
+
if (this.data.length !== other.data.length) return false;
|
|
390
|
+
return this.data.every((value, index) => value === other.data[index]);
|
|
391
|
+
}
|
|
392
|
+
};
|
|
393
|
+
/**
|
|
394
|
+
* The number of bytes that make up an account address.
|
|
395
|
+
* @group Implementation
|
|
396
|
+
* @category Serialization
|
|
397
|
+
*/
|
|
398
|
+
_AccountAddress.LENGTH = 32;
|
|
399
|
+
/**
|
|
400
|
+
* The length of an address string in LONG form without a leading 0x.
|
|
401
|
+
* @group Implementation
|
|
402
|
+
* @category Serialization
|
|
403
|
+
*/
|
|
404
|
+
_AccountAddress.LONG_STRING_LENGTH = 64;
|
|
405
|
+
_AccountAddress.ZERO = _AccountAddress.from("0x0");
|
|
406
|
+
_AccountAddress.ONE = _AccountAddress.from("0x1");
|
|
407
|
+
_AccountAddress.TWO = _AccountAddress.from("0x2");
|
|
408
|
+
_AccountAddress.THREE = _AccountAddress.from("0x3");
|
|
409
|
+
_AccountAddress.FOUR = _AccountAddress.from("0x4");
|
|
410
|
+
_AccountAddress.A = _AccountAddress.from("0xA");
|
|
411
|
+
var AccountAddress = _AccountAddress;
|
|
412
|
+
|
|
413
|
+
export {
|
|
414
|
+
AddressInvalidReason,
|
|
415
|
+
AccountAddress
|
|
416
|
+
};
|
|
417
|
+
//# sourceMappingURL=chunk-CXLXUSCG.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/accountAddress.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bytesToHex, hexToBytes } from \"@noble/hashes/utils\";\nimport { Serializable, Serializer } from \"../bcs/serializer\";\nimport { Deserializer } from \"../bcs/deserializer\";\nimport { ParsingError, ParsingResult } from \"./common\";\nimport { TransactionArgument } from \"../transactions/instances/transactionArgument\";\nimport { HexInput, ScriptTransactionArgumentVariants } from \"../types\";\n\n/**\n * Provides reasons for an address was invalid.\n * @group Implementation\n * @category Serialization\n */\nexport enum AddressInvalidReason {\n INCORRECT_NUMBER_OF_BYTES = \"incorrect_number_of_bytes\",\n INVALID_HEX_CHARS = \"invalid_hex_chars\",\n TOO_SHORT = \"too_short\",\n TOO_LONG = \"too_long\",\n LEADING_ZERO_X_REQUIRED = \"leading_zero_x_required\",\n LONG_FORM_REQUIRED_UNLESS_SPECIAL = \"long_form_required_unless_special\",\n INVALID_PADDING_ZEROES = \"INVALID_PADDING_ZEROES\",\n INVALID_PADDING_STRICTNESS = \"INVALID_PADDING_STRICTNESS\",\n}\n\n/**\n * The input for an account address, which can be either a hexadecimal string or a standard account address.\n * @group Implementation\n * @category Serialization\n */\nexport type AccountAddressInput = HexInput | AccountAddress;\n\n/**\n * NOTE: Only use this class for account addresses. For other hex data, e.g. transaction\n * hashes, use the Hex class.\n *\n * AccountAddress is used for working with account addresses. Account addresses, when\n * represented as a string, generally look like these examples:\n * - 0x1\n * - 0xaa86fe99004361f747f91342ca13c426ca0cccb0c1217677180c9493bad6ef0c\n *\n * Proper formatting and parsing of account addresses is defined by AIP-40.\n * To learn more about the standard, read the AIP here:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * The comments in this class make frequent reference to the LONG and SHORT formats,\n * as well as \"special\" addresses. To learn what these refer to see AIP-40.\n * @group Implementation\n * @category Serialization\n */\nexport class AccountAddress extends Serializable implements TransactionArgument {\n /**\n * This is the internal representation of an account address.\n * @group Implementation\n * @category Serialization\n */\n readonly data: Uint8Array;\n\n /**\n * The number of bytes that make up an account address.\n * @group Implementation\n * @category Serialization\n */\n static readonly LENGTH: number = 32;\n\n /**\n * The length of an address string in LONG form without a leading 0x.\n * @group Implementation\n * @category Serialization\n */\n static readonly LONG_STRING_LENGTH: number = 64;\n\n static ZERO: AccountAddress = AccountAddress.from(\"0x0\");\n\n static ONE: AccountAddress = AccountAddress.from(\"0x1\");\n\n static TWO: AccountAddress = AccountAddress.from(\"0x2\");\n\n static THREE: AccountAddress = AccountAddress.from(\"0x3\");\n\n static FOUR: AccountAddress = AccountAddress.from(\"0x4\");\n\n static A: AccountAddress = AccountAddress.from(\"0xA\");\n\n /**\n * Creates an instance of AccountAddress from a Uint8Array.\n *\n * This function ensures that the input data is exactly 32 bytes long, which is required for a valid account address.\n *\n * @param input A Uint8Array representing an account address.\n * @throws ParsingError if the input length is not equal to 32 bytes.\n * @group Implementation\n * @category Serialization\n */\n constructor(input: Uint8Array) {\n super();\n if (input.length !== AccountAddress.LENGTH) {\n throw new ParsingError(\n \"AccountAddress data should be exactly 32 bytes long\",\n AddressInvalidReason.INCORRECT_NUMBER_OF_BYTES,\n );\n }\n this.data = input;\n }\n\n /**\n * Determines if the address is classified as special, which is defined as 0x0 to 0xf inclusive.\n * In other words, the last byte of the address must be < 0b10000 (16)\n * and every other byte must be zero.\n *\n * For more information on how special addresses are defined, see AIP-40:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @returns true if the address is special, false otherwise.\n * @group Implementation\n * @category Serialization\n */\n isSpecial(): boolean {\n return (\n this.data.slice(0, this.data.length - 1).every((byte) => byte === 0) && this.data[this.data.length - 1] < 0b10000\n );\n }\n // ===\n // Methods for representing an instance of AccountAddress as other types.\n // ===\n\n /**\n * Return the AccountAddress as a string as per AIP-40.\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n * This representation returns special addresses in SHORT form (0xf)\n * and other addresses in LONG form (0x + 64 characters).\n *\n * @returns AccountAddress as a string conforming to AIP-40.\n * @group Implementation\n * @category Serialization\n */\n toString(): `0x${string}` {\n return `0x${this.toStringWithoutPrefix()}`;\n }\n\n /**\n * Return the AccountAddress as a string conforming to AIP-40 but without the leading 0x.\n *\n * NOTE: Prefer to use `toString` where possible.\n *\n * @returns AccountAddress as a string without the leading 0x.\n * @group Implementation\n * @category Serialization\n */\n toStringWithoutPrefix(): string {\n let hex = bytesToHex(this.data);\n if (this.isSpecial()) {\n hex = hex[hex.length - 1];\n }\n return hex;\n }\n\n /**\n * Convert the account address to a string in LONG format, which is always 0x followed by 64 hex characters.\n *\n * NOTE: Prefer to use `toString` where possible, as it formats special addresses using the SHORT form (no leading 0s).\n *\n * @returns AccountAddress as a string in LONG form.\n * @group Implementation\n * @category Serialization\n */\n toStringLong(): `0x${string}` {\n return `0x${this.toStringLongWithoutPrefix()}`;\n }\n\n /**\n * Returns the account address as a string in LONG form without a leading 0x.\n * This function will include leading zeroes and will produce a string of 64 hex characters.\n *\n * NOTE: Prefer to use `toString` where possible, as it formats special addresses using the SHORT form (no leading 0s).\n *\n * @returns {string} The account address in LONG form.\n * @group Implementation\n * @category Serialization\n */\n toStringLongWithoutPrefix(): string {\n return bytesToHex(this.data);\n }\n\n /**\n * Get the inner data as a Uint8Array.\n * The inner data is already a Uint8Array, so no conversion takes place.\n *\n * @returns Hex data as Uint8Array\n * @group Implementation\n * @category Serialization\n */\n toUint8Array(): Uint8Array {\n return this.data;\n }\n\n /**\n * Serialize the AccountAddress to a Serializer instance's data buffer.\n * @param serializer The serializer to serialize the AccountAddress to.\n * @returns void\n * @example\n * const serializer = new Serializer();\n * const address = AccountAddress.fromString(\"0x1\");\n * address.serialize(serializer);\n * const bytes = serializer.toUint8Array();\n * // `bytes` is now the BCS-serialized address.\n * @group Implementation\n * @category Serialization\n */\n serialize(serializer: Serializer): void {\n serializer.serializeFixedBytes(this.data);\n }\n\n /**\n * Serializes the current instance into a byte sequence suitable for entry functions.\n * This allows for the proper encoding of data when interacting with entry functions in the blockchain.\n *\n * @param serializer - The serializer instance used to convert the data into bytes.\n * @group Implementation\n * @category Serialization\n */\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n /**\n * Serializes the current instance for use in a script function by encoding it into a byte sequence.\n * This process involves serializing the variant index and the instance data, making it suitable for transmission.\n *\n * @param serializer - The serializer instance used to perform the serialization.\n * @group Implementation\n * @category Serialization\n */\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.Address);\n serializer.serialize(this);\n }\n\n /**\n * Deserialize an AccountAddress from the byte buffer in a Deserializer instance.\n * This function allows you to convert a byte representation of an AccountAddress into an instance of AccountAddress.\n * @param deserializer The deserializer to deserialize the AccountAddress from.\n * @returns An instance of AccountAddress.\n * @example\n * const bytes = hexToBytes(\"0x0102030405060708091011121314151617181920212223242526272829303132\");\n * const deserializer = new Deserializer(bytes);\n * const address = AccountAddress.deserialize(deserializer);\n * // `address` is now an instance of AccountAddress.\n * @group Implementation\n * @category Serialization\n */\n static deserialize(deserializer: Deserializer): AccountAddress {\n const bytes = deserializer.deserializeFixedBytes(AccountAddress.LENGTH);\n return new AccountAddress(bytes);\n }\n\n // ===\n // Methods for creating an instance of AccountAddress from other types.\n // ===\n\n /**\n * NOTE: This function has strict parsing behavior. For relaxed behavior, please use\n * the `fromString` function.\n *\n * Creates an instance of AccountAddress from a hex string.\n *\n * This function allows only the strictest formats defined by AIP-40. In short this\n * means only the following formats are accepted:\n *\n * - LONG\n * - SHORT for special addresses\n *\n * Where:\n * - LONG is defined as 0x + 64 hex characters.\n * - SHORT for special addresses is 0x0 to 0xf inclusive without padding zeroes.\n *\n * This means the following are not accepted:\n * - SHORT for non-special addresses.\n * - Any address without a leading 0x.\n *\n * @param input - A hex string representing an account address.\n *\n * @throws {ParsingError} If the hex string does not start with 0x or is not in a valid format.\n *\n * @remarks\n *\n * This function has strict parsing behavior. For relaxed behavior, please use the `fromString` function.\n *\n * @see AIP-40 documentation for more details on address formats:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @returns An instance of AccountAddress.\n * @group Implementation\n * @category Serialization\n */\n static fromStringStrict(input: string): AccountAddress {\n // Assert the string starts with 0x.\n if (!input.startsWith(\"0x\")) {\n throw new ParsingError(\"Hex string must start with a leading 0x.\", AddressInvalidReason.LEADING_ZERO_X_REQUIRED);\n }\n\n const address = AccountAddress.fromString(input);\n\n // Check if the address is in LONG form. If it is not, this is only allowed for\n // special addresses, in which case we check it is in proper SHORT form.\n if (input.length !== AccountAddress.LONG_STRING_LENGTH + 2) {\n if (!address.isSpecial()) {\n throw new ParsingError(\n `The given hex string ${input} is not a special address, it must be represented as 0x + 64 chars.`,\n AddressInvalidReason.LONG_FORM_REQUIRED_UNLESS_SPECIAL,\n );\n } else if (input.length !== 3) {\n // 0x + one hex char is the only valid SHORT form for special addresses.\n throw new ParsingError(\n // eslint-disable-next-line max-len\n `The given hex string ${input} is a special address not in LONG form, it must be 0x0 to 0xf without padding zeroes.`,\n AddressInvalidReason.INVALID_PADDING_ZEROES,\n );\n }\n }\n\n return address;\n }\n\n /**\n * NOTE: This function has relaxed parsing behavior. For strict behavior, please use\n * the `fromStringStrict` function. Where possible use `fromStringStrict` rather than this\n * function, `fromString`.\n *\n * Creates an instance of AccountAddress from a hex string.\n *\n * This function allows all formats defined by AIP-40. In short this means the\n * following formats are accepted:\n *\n * - LONG, with or without leading 0x\n * - SHORT*, with or without leading 0x\n *\n * Where:\n * - LONG is 64 hex characters.\n * - SHORT* is 1 to 63 hex characters inclusive. The address can have missing values up to `maxMissingChars` before it is padded.\n * - Padding zeroes are allowed, e.g. 0x0123 is valid.\n *\n * Learn more about the different address formats by reading AIP-40:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @param input A hex string representing an account address.\n * @param args.maxMissingChars The number of characters that can be missing in a padded address before it is invalid.\n *\n * @returns An instance of AccountAddress.\n *\n * @throws ParsingError if the hex string is too short, too long, or contains invalid characters.\n * @group Implementation\n * @category Serialization\n */\n static fromString(input: string, { maxMissingChars = 4 }: { maxMissingChars?: number } = {}): AccountAddress {\n let parsedInput = input;\n // Remove leading 0x for parsing.\n if (input.startsWith(\"0x\")) {\n parsedInput = input.slice(2);\n }\n\n // Ensure the address string is at least 1 character long.\n if (parsedInput.length === 0) {\n throw new ParsingError(\n \"Hex string is too short, must be 1 to 64 chars long, excluding the leading 0x.\",\n AddressInvalidReason.TOO_SHORT,\n );\n }\n\n // Ensure the address string is not longer than 64 characters.\n if (parsedInput.length > 64) {\n throw new ParsingError(\n \"Hex string is too long, must be 1 to 64 chars long, excluding the leading 0x.\",\n AddressInvalidReason.TOO_LONG,\n );\n }\n\n // Ensure that the maxMissingChars is between or equal to 0 and 63.\n if (maxMissingChars > 63 || maxMissingChars < 0) {\n throw new ParsingError(\n `maxMissingChars must be between or equal to 0 and 63. Received ${maxMissingChars}`,\n AddressInvalidReason.INVALID_PADDING_STRICTNESS,\n );\n }\n\n let addressBytes: Uint8Array;\n try {\n // Pad the address with leading zeroes, so it is 64 chars long and then convert\n // the hex string to bytes. Every two characters in a hex string constitutes a\n // single byte. So a 64 length hex string becomes a 32 byte array.\n addressBytes = hexToBytes(parsedInput.padStart(64, \"0\"));\n } catch (error: any) {\n // At this point the only way this can fail is if the hex string contains\n // invalid characters.\n throw new ParsingError(`Hex characters are invalid: ${error?.message}`, AddressInvalidReason.INVALID_HEX_CHARS);\n }\n\n const address = new AccountAddress(addressBytes);\n\n // Cannot pad the address if it has more than maxMissingChars missing.\n if (parsedInput.length < 64 - maxMissingChars) {\n if (!address.isSpecial()) {\n throw new ParsingError(\n `Hex string is too short, must be ${64 - maxMissingChars} to 64 chars long, excluding the leading 0x. You may need to fix \nthe addresss by padding it with 0s before passing it to \\`fromString\\` (e.g. <addressString>.padStart(64, '0')). \nReceived ${input}`,\n AddressInvalidReason.TOO_SHORT,\n );\n }\n }\n\n return address;\n }\n\n /**\n * Convenience method for creating an AccountAddress from various input types.\n * This function accepts a string, Uint8Array, or an existing AccountAddress instance and returns the corresponding\n * AccountAddress.\n *\n * @param input - The input to convert into an AccountAddress. This can be a string representation of an address, a Uint8Array,\n * or an existing AccountAddress.\n * @param args.maxMissingChars The number of characters that can be missing in a padded address before it is invalid.\n * @group Implementation\n * @category Serialization\n */\n static from(input: AccountAddressInput, { maxMissingChars = 4 }: { maxMissingChars?: number } = {}): AccountAddress {\n if (typeof input === \"string\") {\n return AccountAddress.fromString(input, { maxMissingChars });\n }\n if (input instanceof Uint8Array) {\n return new AccountAddress(input);\n }\n return input;\n }\n\n /**\n * Create an AccountAddress from various input types, including strings, Uint8Array, and AccountAddress instances.\n *\n * @param input - The input to convert into an AccountAddress, which can be a string, a Uint8Array, or an AccountAddress.\n * @group Implementation\n * @category Serialization\n */\n static fromStrict(input: AccountAddressInput): AccountAddress {\n if (typeof input === \"string\") {\n return AccountAddress.fromStringStrict(input);\n }\n if (input instanceof Uint8Array) {\n return new AccountAddress(input);\n }\n return input;\n }\n // ===\n // Methods for checking validity.\n // ===\n\n /**\n * Check if the provided input is a valid AccountAddress.\n *\n * @param args - The arguments for validation.\n * @param args.input - A hex string representing an account address.\n * @param args.strict - If true, use strict parsing behavior; if false, use relaxed parsing behavior.\n *\n * @returns An object indicating whether the address is valid. If valid, valid = true; if not, valid = false with additional details.\n * If the address is invalid, invalidReason will explain why it is invalid, and invalidReasonMessage will provide the error message.\n * @group Implementation\n * @category Serialization\n */\n static isValid(args: { input: AccountAddressInput; strict?: boolean }): ParsingResult<AddressInvalidReason> {\n try {\n if (args.strict) {\n AccountAddress.fromStrict(args.input);\n } else {\n AccountAddress.from(args.input);\n }\n return { valid: true };\n } catch (error: any) {\n return {\n valid: false,\n invalidReason: error?.invalidReason,\n invalidReasonMessage: error?.message,\n };\n }\n }\n\n /**\n * Determine if two AccountAddresses are equal based on their underlying byte data.\n *\n * @param other - The AccountAddress to compare to.\n * @returns true if the AccountAddresses are equal, false if not.\n * @group Implementation\n * @category Serialization\n */\n equals(other: AccountAddress): boolean {\n if (this.data.length !== other.data.length) return false;\n return this.data.every((value, index) => value === other.data[index]);\n }\n}\n"],"mappings":"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","names":["bytesToHex","hexToBytes","AddressInvalidReason","_AccountAddress","Serializable","input","ParsingError","byte","hex","bytesToHex","serializer","bcsBytes","deserializer","bytes","address","maxMissingChars","parsedInput","addressBytes","hexToBytes","error","args","other","value","index","AccountAddress"]}
|
|
1
|
+
{"version":3,"sources":["../../src/core/accountAddress.ts"],"sourcesContent":["// Copyright © Aptos Foundation\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bytesToHex, hexToBytes } from \"@noble/hashes/utils\";\nimport { Serializable, Serializer } from \"../bcs/serializer\";\nimport { Deserializer } from \"../bcs/deserializer\";\nimport { ParsingError, ParsingResult } from \"./common\";\nimport { TransactionArgument } from \"../transactions/instances/transactionArgument\";\nimport { HexInput, ScriptTransactionArgumentVariants } from \"../types\";\n\n/**\n * Provides reasons for an address was invalid.\n * @group Implementation\n * @category Serialization\n */\nexport enum AddressInvalidReason {\n INCORRECT_NUMBER_OF_BYTES = \"incorrect_number_of_bytes\",\n INVALID_HEX_CHARS = \"invalid_hex_chars\",\n TOO_SHORT = \"too_short\",\n TOO_LONG = \"too_long\",\n LEADING_ZERO_X_REQUIRED = \"leading_zero_x_required\",\n LONG_FORM_REQUIRED_UNLESS_SPECIAL = \"long_form_required_unless_special\",\n INVALID_PADDING_ZEROES = \"INVALID_PADDING_ZEROES\",\n INVALID_PADDING_STRICTNESS = \"INVALID_PADDING_STRICTNESS\",\n}\n\n/**\n * The input for an account address, which can be either a hexadecimal string or a standard account address.\n * @group Implementation\n * @category Serialization\n */\nexport type AccountAddressInput = HexInput | AccountAddress;\n\n/**\n * NOTE: Only use this class for account addresses. For other hex data, e.g. transaction\n * hashes, use the Hex class.\n *\n * AccountAddress is used for working with account addresses. Account addresses, when\n * represented as a string, generally look like these examples:\n * - 0x1\n * - 0xaa86fe99004361f747f91342ca13c426ca0cccb0c1217677180c9493bad6ef0c\n *\n * Proper formatting and parsing of account addresses is defined by AIP-40.\n * To learn more about the standard, read the AIP here:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * The comments in this class make frequent reference to the LONG and SHORT formats,\n * as well as \"special\" addresses. To learn what these refer to see AIP-40.\n * @group Implementation\n * @category Serialization\n */\nexport class AccountAddress extends Serializable implements TransactionArgument {\n /**\n * This is the internal representation of an account address.\n * @group Implementation\n * @category Serialization\n */\n readonly data: Uint8Array;\n\n /**\n * The number of bytes that make up an account address.\n * @group Implementation\n * @category Serialization\n */\n static readonly LENGTH: number = 32;\n\n /**\n * The length of an address string in LONG form without a leading 0x.\n * @group Implementation\n * @category Serialization\n */\n static readonly LONG_STRING_LENGTH: number = 64;\n\n static ZERO: AccountAddress = AccountAddress.from(\"0x0\");\n\n static ONE: AccountAddress = AccountAddress.from(\"0x1\");\n\n static TWO: AccountAddress = AccountAddress.from(\"0x2\");\n\n static THREE: AccountAddress = AccountAddress.from(\"0x3\");\n\n static FOUR: AccountAddress = AccountAddress.from(\"0x4\");\n\n static A: AccountAddress = AccountAddress.from(\"0xA\");\n\n /**\n * Creates an instance of AccountAddress from a Uint8Array.\n *\n * This function ensures that the input data is exactly 32 bytes long, which is required for a valid account address.\n *\n * @param input A Uint8Array representing an account address.\n * @throws ParsingError if the input length is not equal to 32 bytes.\n * @group Implementation\n * @category Serialization\n */\n constructor(input: Uint8Array) {\n super();\n if (input.length !== AccountAddress.LENGTH) {\n throw new ParsingError(\n \"AccountAddress data should be exactly 32 bytes long\",\n AddressInvalidReason.INCORRECT_NUMBER_OF_BYTES,\n );\n }\n this.data = input;\n }\n\n /**\n * Determines if the address is classified as special, which is defined as 0x0 to 0xf inclusive.\n * In other words, the last byte of the address must be < 0b10000 (16)\n * and every other byte must be zero.\n *\n * For more information on how special addresses are defined, see AIP-40:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @returns true if the address is special, false otherwise.\n * @group Implementation\n * @category Serialization\n */\n isSpecial(): boolean {\n return (\n this.data.slice(0, this.data.length - 1).every((byte) => byte === 0) && this.data[this.data.length - 1] < 0b10000\n );\n }\n // ===\n // Methods for representing an instance of AccountAddress as other types.\n // ===\n\n /**\n * Return the AccountAddress as a string as per AIP-40.\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n * This representation returns special addresses in SHORT form (0xf)\n * and other addresses in LONG form (0x + 64 characters).\n *\n * @returns AccountAddress as a string conforming to AIP-40.\n * @group Implementation\n * @category Serialization\n */\n toString(): `0x${string}` {\n return `0x${this.toStringWithoutPrefix()}`;\n }\n\n /**\n * Return the AccountAddress as a string conforming to AIP-40 but without the leading 0x.\n *\n * NOTE: Prefer to use `toString` where possible.\n *\n * @returns AccountAddress as a string without the leading 0x.\n * @group Implementation\n * @category Serialization\n */\n toStringWithoutPrefix(): string {\n let hex = bytesToHex(this.data);\n if (this.isSpecial()) {\n hex = hex[hex.length - 1];\n }\n return hex;\n }\n\n /**\n * Convert the account address to a string in LONG format, which is always 0x followed by 64 hex characters.\n *\n * NOTE: Prefer to use `toString` where possible, as it formats special addresses using the SHORT form (no leading 0s).\n *\n * @returns AccountAddress as a string in LONG form.\n * @group Implementation\n * @category Serialization\n */\n toStringLong(): `0x${string}` {\n return `0x${this.toStringLongWithoutPrefix()}`;\n }\n\n /**\n * Returns the account address as a string in LONG form without a leading 0x.\n * This function will include leading zeroes and will produce a string of 64 hex characters.\n *\n * NOTE: Prefer to use `toString` where possible, as it formats special addresses using the SHORT form (no leading 0s).\n *\n * @returns {string} The account address in LONG form.\n * @group Implementation\n * @category Serialization\n */\n toStringLongWithoutPrefix(): string {\n return bytesToHex(this.data);\n }\n\n /**\n * Get the inner data as a Uint8Array.\n * The inner data is already a Uint8Array, so no conversion takes place.\n *\n * @returns Hex data as Uint8Array\n * @group Implementation\n * @category Serialization\n */\n toUint8Array(): Uint8Array {\n return this.data;\n }\n\n /**\n * Serialize the AccountAddress to a Serializer instance's data buffer.\n * @param serializer The serializer to serialize the AccountAddress to.\n * @returns void\n * @example\n * const serializer = new Serializer();\n * const address = AccountAddress.fromString(\"0x1\");\n * address.serialize(serializer);\n * const bytes = serializer.toUint8Array();\n * // `bytes` is now the BCS-serialized address.\n * @group Implementation\n * @category Serialization\n */\n serialize(serializer: Serializer): void {\n serializer.serializeFixedBytes(this.data);\n }\n\n /**\n * Serializes the current instance into a byte sequence suitable for entry functions.\n * This allows for the proper encoding of data when interacting with entry functions in the blockchain.\n *\n * @param serializer - The serializer instance used to convert the data into bytes.\n * @group Implementation\n * @category Serialization\n */\n serializeForEntryFunction(serializer: Serializer): void {\n const bcsBytes = this.bcsToBytes();\n serializer.serializeBytes(bcsBytes);\n }\n\n /**\n * Serializes the current instance for use in a script function by encoding it into a byte sequence.\n * This process involves serializing the variant index and the instance data, making it suitable for transmission.\n *\n * @param serializer - The serializer instance used to perform the serialization.\n * @group Implementation\n * @category Serialization\n */\n serializeForScriptFunction(serializer: Serializer): void {\n serializer.serializeU32AsUleb128(ScriptTransactionArgumentVariants.Address);\n serializer.serialize(this);\n }\n\n /**\n * Deserialize an AccountAddress from the byte buffer in a Deserializer instance.\n * This function allows you to convert a byte representation of an AccountAddress into an instance of AccountAddress.\n * @param deserializer The deserializer to deserialize the AccountAddress from.\n * @returns An instance of AccountAddress.\n * @example\n * const bytes = hexToBytes(\"0x0102030405060708091011121314151617181920212223242526272829303132\");\n * const deserializer = new Deserializer(bytes);\n * const address = AccountAddress.deserialize(deserializer);\n * // `address` is now an instance of AccountAddress.\n * @group Implementation\n * @category Serialization\n */\n static deserialize(deserializer: Deserializer): AccountAddress {\n const bytes = deserializer.deserializeFixedBytes(AccountAddress.LENGTH);\n return new AccountAddress(bytes);\n }\n\n // ===\n // Methods for creating an instance of AccountAddress from other types.\n // ===\n\n /**\n * NOTE: This function has strict parsing behavior. For relaxed behavior, please use\n * the `fromString` function.\n *\n * Creates an instance of AccountAddress from a hex string.\n *\n * This function allows only the strictest formats defined by AIP-40. In short this\n * means only the following formats are accepted:\n *\n * - LONG\n * - SHORT for special addresses\n *\n * Where:\n * - LONG is defined as 0x + 64 hex characters.\n * - SHORT for special addresses is 0x0 to 0xf inclusive without padding zeroes.\n *\n * This means the following are not accepted:\n * - SHORT for non-special addresses.\n * - Any address without a leading 0x.\n *\n * @param input - A hex string representing an account address.\n *\n * @throws {ParsingError} If the hex string does not start with 0x or is not in a valid format.\n *\n * @remarks\n *\n * This function has strict parsing behavior. For relaxed behavior, please use the `fromString` function.\n *\n * @see AIP-40 documentation for more details on address formats:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @returns An instance of AccountAddress.\n * @group Implementation\n * @category Serialization\n */\n static fromStringStrict(input: string): AccountAddress {\n // Assert the string starts with 0x.\n if (!input.startsWith(\"0x\")) {\n throw new ParsingError(\"Hex string must start with a leading 0x.\", AddressInvalidReason.LEADING_ZERO_X_REQUIRED);\n }\n\n const address = AccountAddress.fromString(input);\n\n // Check if the address is in LONG form. If it is not, this is only allowed for\n // special addresses, in which case we check it is in proper SHORT form.\n if (input.length !== AccountAddress.LONG_STRING_LENGTH + 2) {\n if (!address.isSpecial()) {\n throw new ParsingError(\n `The given hex string ${input} is not a special address, it must be represented as 0x + 64 chars.`,\n AddressInvalidReason.LONG_FORM_REQUIRED_UNLESS_SPECIAL,\n );\n } else if (input.length !== 3) {\n // 0x + one hex char is the only valid SHORT form for special addresses.\n throw new ParsingError(\n // eslint-disable-next-line max-len\n `The given hex string ${input} is a special address not in LONG form, it must be 0x0 to 0xf without padding zeroes.`,\n AddressInvalidReason.INVALID_PADDING_ZEROES,\n );\n }\n }\n\n return address;\n }\n\n /**\n * NOTE: This function has relaxed parsing behavior. For strict behavior, please use\n * the `fromStringStrict` function. Where possible use `fromStringStrict` rather than this\n * function, `fromString`.\n *\n * Creates an instance of AccountAddress from a hex string.\n *\n * This function allows all formats defined by AIP-40. In short this means the\n * following formats are accepted:\n *\n * - LONG, with or without leading 0x\n * - SHORT*, with or without leading 0x\n *\n * Where:\n * - LONG is 64 hex characters.\n * - SHORT* is 1 to 63 hex characters inclusive. The address can have missing values up to `maxMissingChars` before it is padded.\n * - Padding zeroes are allowed, e.g. 0x0123 is valid.\n *\n * Learn more about the different address formats by reading AIP-40:\n * https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-40.md.\n *\n * @param input A hex string representing an account address.\n * @param args.maxMissingChars The number of characters that can be missing in a padded address before it is invalid.\n *\n * @returns An instance of AccountAddress.\n *\n * @throws ParsingError if the hex string is too short, too long, or contains invalid characters.\n * @group Implementation\n * @category Serialization\n */\n static fromString(input: string, { maxMissingChars = 4 }: { maxMissingChars?: number } = {}): AccountAddress {\n let parsedInput = input;\n // Remove leading 0x for parsing.\n if (input.startsWith(\"0x\")) {\n parsedInput = input.slice(2);\n }\n\n // Ensure the address string is at least 1 character long.\n if (parsedInput.length === 0) {\n throw new ParsingError(\n \"Hex string is too short, must be 1 to 64 chars long, excluding the leading 0x.\",\n AddressInvalidReason.TOO_SHORT,\n );\n }\n\n // Ensure the address string is not longer than 64 characters.\n if (parsedInput.length > 64) {\n throw new ParsingError(\n \"Hex string is too long, must be 1 to 64 chars long, excluding the leading 0x.\",\n AddressInvalidReason.TOO_LONG,\n );\n }\n\n // Ensure that the maxMissingChars is between or equal to 0 and 63.\n if (maxMissingChars > 63 || maxMissingChars < 0) {\n throw new ParsingError(\n `maxMissingChars must be between or equal to 0 and 63. Received ${maxMissingChars}`,\n AddressInvalidReason.INVALID_PADDING_STRICTNESS,\n );\n }\n\n let addressBytes: Uint8Array;\n try {\n // Pad the address with leading zeroes, so it is 64 chars long and then convert\n // the hex string to bytes. Every two characters in a hex string constitutes a\n // single byte. So a 64 length hex string becomes a 32 byte array.\n addressBytes = hexToBytes(parsedInput.padStart(64, \"0\"));\n } catch (error: any) {\n // At this point the only way this can fail is if the hex string contains\n // invalid characters.\n throw new ParsingError(`Hex characters are invalid: ${error?.message}`, AddressInvalidReason.INVALID_HEX_CHARS);\n }\n\n const address = new AccountAddress(addressBytes);\n\n // Cannot pad the address if it has more than maxMissingChars missing.\n if (parsedInput.length < 64 - maxMissingChars) {\n if (!address.isSpecial()) {\n throw new ParsingError(\n `Hex string is too short, must be ${64 - maxMissingChars} to 64 chars long, excluding the leading 0x. You may need to fix \nthe addresss by padding it with 0s before passing it to \\`fromString\\` (e.g. <addressString>.padStart(64, '0')). \nReceived ${input}`,\n AddressInvalidReason.TOO_SHORT,\n );\n }\n }\n\n return address;\n }\n\n /**\n * Convenience method for creating an AccountAddress from various input types.\n * This function accepts a string, Uint8Array, or an existing AccountAddress instance and returns the corresponding\n * AccountAddress.\n *\n * @param input - The input to convert into an AccountAddress. This can be a string representation of an address, a Uint8Array,\n * or an existing AccountAddress.\n * @param args.maxMissingChars The number of characters that can be missing in a padded address before it is invalid.\n * @group Implementation\n * @category Serialization\n */\n static from(input: AccountAddressInput, { maxMissingChars = 4 }: { maxMissingChars?: number } = {}): AccountAddress {\n if (typeof input === \"string\") {\n return AccountAddress.fromString(input, { maxMissingChars });\n }\n if (input instanceof Uint8Array) {\n return new AccountAddress(input);\n }\n return input;\n }\n\n /**\n * Create an AccountAddress from various input types, including strings, Uint8Array, and AccountAddress instances.\n *\n * @param input - The input to convert into an AccountAddress, which can be a string, a Uint8Array, or an AccountAddress.\n * @group Implementation\n * @category Serialization\n */\n static fromStrict(input: AccountAddressInput): AccountAddress {\n if (typeof input === \"string\") {\n return AccountAddress.fromStringStrict(input);\n }\n if (input instanceof Uint8Array) {\n return new AccountAddress(input);\n }\n return input;\n }\n // ===\n // Methods for checking validity.\n // ===\n\n /**\n * Check if the provided input is a valid AccountAddress.\n *\n * @param args - The arguments for validation.\n * @param args.input - A hex string representing an account address.\n * @param args.strict - If true, use strict parsing behavior; if false, use relaxed parsing behavior.\n *\n * @returns An object indicating whether the address is valid. If valid, valid = true; if not, valid = false with additional details.\n * If the address is invalid, invalidReason will explain why it is invalid, and invalidReasonMessage will provide the error message.\n * @group Implementation\n * @category Serialization\n */\n static isValid(args: { input: AccountAddressInput; strict?: boolean }): ParsingResult<AddressInvalidReason> {\n try {\n if (args.strict) {\n AccountAddress.fromStrict(args.input);\n } else {\n AccountAddress.from(args.input);\n }\n return { valid: true };\n } catch (error: any) {\n return {\n valid: false,\n invalidReason: error?.invalidReason,\n invalidReasonMessage: error?.message,\n };\n }\n }\n\n /**\n * Determine if two AccountAddresses are equal based on their underlying byte data.\n *\n * @param other - The AccountAddress to compare to.\n * @returns true if the AccountAddresses are equal, false if not.\n * @group Implementation\n * @category Serialization\n */\n equals(other: AccountAddress): boolean {\n if (this.data.length !== other.data.length) return false;\n return this.data.every((value, index) => value === other.data[index]);\n }\n}\n"],"mappings":"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","names":["AddressInvalidReason"]}
|