@aptos-labs/ts-sdk 1.13.2 → 1.13.3-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.
Files changed (474) hide show
  1. package/dist/common/index.d.ts +1781 -1347
  2. package/dist/common/index.js +26 -26
  3. package/dist/common/index.js.map +1 -1
  4. package/dist/esm/{Ed25519Account--qjfup2u.d.mts → Ed25519Account-8gJF5t3F.d.mts} +10 -12
  5. package/dist/esm/account/Account.d.mts +34 -0
  6. package/dist/esm/account/Account.mjs +2 -0
  7. package/dist/esm/account/Ed25519Account.d.mts +34 -0
  8. package/dist/esm/account/Ed25519Account.mjs +2 -0
  9. package/dist/esm/account/EphemeralKeyPair.d.mts +46 -0
  10. package/dist/esm/account/EphemeralKeyPair.mjs +2 -0
  11. package/dist/esm/account/KeylessAccount.d.mts +87 -0
  12. package/dist/esm/account/KeylessAccount.mjs +2 -0
  13. package/dist/esm/account/MultiKeyAccount.d.mts +99 -0
  14. package/dist/esm/account/MultiKeyAccount.mjs +2 -0
  15. package/dist/esm/account/SingleKeyAccount.d.mts +34 -0
  16. package/dist/esm/account/SingleKeyAccount.mjs +2 -0
  17. package/dist/esm/account/index.d.mts +39 -0
  18. package/dist/esm/account/index.mjs +2 -0
  19. package/dist/esm/api/account.d.mts +13 -1
  20. package/dist/esm/api/account.mjs +1 -1
  21. package/dist/esm/api/ans.d.mts +2 -2
  22. package/dist/esm/api/ans.mjs +1 -1
  23. package/dist/esm/api/aptos.d.mts +14 -8
  24. package/dist/esm/api/aptos.mjs +1 -1
  25. package/dist/esm/api/aptosConfig.d.mts +20 -0
  26. package/dist/esm/api/aptosConfig.mjs +1 -1
  27. package/dist/esm/api/coin.d.mts +7 -7
  28. package/dist/esm/api/coin.mjs +1 -1
  29. package/dist/esm/api/digitalAsset.d.mts +1 -1
  30. package/dist/esm/api/digitalAsset.mjs +1 -1
  31. package/dist/esm/api/event.mjs +1 -1
  32. package/dist/esm/api/faucet.mjs +1 -1
  33. package/dist/esm/api/fungibleAsset.d.mts +5 -5
  34. package/dist/esm/api/fungibleAsset.mjs +1 -1
  35. package/dist/esm/api/general.d.mts +7 -7
  36. package/dist/esm/api/general.mjs +1 -1
  37. package/dist/esm/api/index.d.mts +13 -8
  38. package/dist/esm/api/index.mjs +1 -1
  39. package/dist/esm/api/keyless.d.mts +65 -0
  40. package/dist/esm/api/keyless.mjs +2 -0
  41. package/dist/esm/api/staking.mjs +1 -1
  42. package/dist/esm/api/transaction.d.mts +1 -1
  43. package/dist/esm/api/transaction.mjs +1 -1
  44. package/dist/esm/api/transactionSubmission/build.d.mts +3 -3
  45. package/dist/esm/api/transactionSubmission/build.mjs +1 -1
  46. package/dist/esm/api/transactionSubmission/management.d.mts +8 -8
  47. package/dist/esm/api/transactionSubmission/management.mjs +1 -1
  48. package/dist/esm/api/transactionSubmission/sign.d.mts +1 -1
  49. package/dist/esm/api/transactionSubmission/sign.mjs +1 -1
  50. package/dist/esm/api/transactionSubmission/sign.mjs.map +1 -1
  51. package/dist/esm/api/transactionSubmission/simulate.d.mts +6 -6
  52. package/dist/esm/api/transactionSubmission/simulate.mjs +1 -1
  53. package/dist/esm/api/transactionSubmission/submit.mjs +1 -1
  54. package/dist/esm/api/utils.mjs +1 -1
  55. package/dist/esm/bcs/index.mjs +1 -1
  56. package/dist/esm/bcs/serializable/entryFunctionBytes.mjs +1 -1
  57. package/dist/esm/bcs/serializable/fixedBytes.mjs +1 -1
  58. package/dist/esm/bcs/serializable/movePrimitives.mjs +1 -1
  59. package/dist/esm/bcs/serializable/moveStructs.mjs +1 -1
  60. package/dist/esm/bcs/serializer.d.mts +2 -0
  61. package/dist/esm/bcs/serializer.mjs +1 -1
  62. package/dist/esm/{chunk-KDCHX7BI.mjs → chunk-274CXZ6R.mjs} +2 -2
  63. package/dist/esm/chunk-2M7KHFEG.mjs +2 -0
  64. package/dist/esm/chunk-2M7KHFEG.mjs.map +1 -0
  65. package/dist/esm/{chunk-TORRTLWV.mjs → chunk-2SD6JLIU.mjs} +2 -2
  66. package/dist/esm/chunk-2SD6JLIU.mjs.map +1 -0
  67. package/dist/esm/chunk-2YDIOWRJ.mjs +2 -0
  68. package/dist/esm/chunk-2YDIOWRJ.mjs.map +1 -0
  69. package/dist/esm/{chunk-4DNVCOW7.mjs → chunk-3CIA6J5L.mjs} +2 -2
  70. package/dist/esm/chunk-3CIA6J5L.mjs.map +1 -0
  71. package/dist/esm/{chunk-TBMAJ6AW.mjs → chunk-3FVRXELT.mjs} +2 -2
  72. package/dist/esm/{chunk-RQEWIZ67.mjs → chunk-3LQPAGL6.mjs} +2 -2
  73. package/dist/esm/{chunk-6IGEUEER.mjs → chunk-3PGVEOWR.mjs} +2 -2
  74. package/dist/esm/{chunk-DMKUAQB7.mjs → chunk-3VGX3TXH.mjs} +2 -2
  75. package/dist/esm/chunk-4NMDYPUD.mjs +1 -0
  76. package/dist/esm/chunk-4NMDYPUD.mjs.map +1 -0
  77. package/dist/esm/chunk-5VSMDXZ6.mjs +2 -0
  78. package/dist/esm/chunk-5VSMDXZ6.mjs.map +1 -0
  79. package/dist/esm/chunk-6GQAHQGW.mjs +2 -0
  80. package/dist/esm/chunk-6GQAHQGW.mjs.map +1 -0
  81. package/dist/esm/chunk-6NMHAFIO.mjs +2 -0
  82. package/dist/esm/chunk-6NMHAFIO.mjs.map +1 -0
  83. package/dist/esm/{chunk-YKVKSNH4.mjs → chunk-6NZNCDDW.mjs} +2 -2
  84. package/dist/esm/{chunk-QIAHBEEW.mjs → chunk-6RBUXB5I.mjs} +2 -2
  85. package/dist/esm/{chunk-3HV2C4SS.mjs → chunk-7FNHL6LU.mjs} +2 -2
  86. package/dist/esm/{chunk-FXNFWLQC.mjs → chunk-7H3HRFVM.mjs} +2 -2
  87. package/dist/esm/chunk-7MPJPZ73.mjs +2 -0
  88. package/dist/esm/chunk-7MPJPZ73.mjs.map +1 -0
  89. package/dist/esm/{chunk-NPFNYP75.mjs → chunk-7STYQ5ZE.mjs} +2 -2
  90. package/dist/esm/chunk-7XHVF3ZX.mjs +2 -0
  91. package/dist/esm/{chunk-MNBYKY5P.mjs.map → chunk-7XHVF3ZX.mjs.map} +1 -1
  92. package/dist/esm/chunk-7Z6DYLCA.mjs +1 -0
  93. package/dist/esm/chunk-7Z6DYLCA.mjs.map +1 -0
  94. package/dist/esm/{chunk-UMFJDDYI.mjs → chunk-AKGASNN4.mjs} +2 -2
  95. package/dist/esm/chunk-AKGASNN4.mjs.map +1 -0
  96. package/dist/esm/{chunk-QWRH22H4.mjs → chunk-APEBWN6Q.mjs} +2 -2
  97. package/dist/esm/chunk-AQ4I7VVB.mjs +1 -0
  98. package/dist/esm/chunk-AQ4I7VVB.mjs.map +1 -0
  99. package/dist/esm/{chunk-ZYYK3UXP.mjs → chunk-C3L4ETUF.mjs} +2 -2
  100. package/dist/esm/{chunk-3RUY5FQK.mjs → chunk-CN37OHFT.mjs} +2 -2
  101. package/dist/esm/chunk-CN37OHFT.mjs.map +1 -0
  102. package/dist/esm/{chunk-WFZDFFBM.mjs → chunk-COW5IGYC.mjs} +2 -2
  103. package/dist/esm/chunk-CQJ4WN7M.mjs +2 -0
  104. package/dist/esm/chunk-CQJ4WN7M.mjs.map +1 -0
  105. package/dist/esm/{chunk-PIOHC246.mjs → chunk-DKLA4F3P.mjs} +2 -2
  106. package/dist/esm/chunk-DKLA4F3P.mjs.map +1 -0
  107. package/dist/esm/{chunk-TC3VVMPY.mjs → chunk-E36GTDEB.mjs} +2 -2
  108. package/dist/esm/chunk-E4Z5IEZP.mjs +2 -0
  109. package/dist/esm/chunk-E4Z5IEZP.mjs.map +1 -0
  110. package/dist/esm/{chunk-FS3NSGBF.mjs → chunk-EB7AI4B4.mjs} +2 -2
  111. package/dist/esm/chunk-EQKI6NJR.mjs +2 -0
  112. package/dist/esm/chunk-EQKI6NJR.mjs.map +1 -0
  113. package/dist/esm/chunk-F6QCHPVS.mjs +2 -0
  114. package/dist/esm/chunk-F6QCHPVS.mjs.map +1 -0
  115. package/dist/esm/chunk-FLYEALDB.mjs +2 -0
  116. package/dist/esm/chunk-FLYEALDB.mjs.map +1 -0
  117. package/dist/esm/{chunk-GRT5PHL6.mjs → chunk-H3LMPXEM.mjs} +2 -2
  118. package/dist/esm/{chunk-YBEF3UR3.mjs → chunk-H6BRBIMG.mjs} +2 -2
  119. package/dist/esm/{chunk-2PFN7LYP.mjs → chunk-HFLWASAB.mjs} +2 -2
  120. package/dist/esm/{chunk-UML2VQZT.mjs → chunk-HGZGTBA4.mjs} +2 -2
  121. package/dist/esm/chunk-HQWIGPYQ.mjs +2 -0
  122. package/dist/esm/chunk-HQWIGPYQ.mjs.map +1 -0
  123. package/dist/esm/chunk-HURQZGUZ.mjs +2 -0
  124. package/dist/esm/chunk-HURQZGUZ.mjs.map +1 -0
  125. package/dist/esm/{chunk-TGXZVNR5.mjs → chunk-IEZO4PIG.mjs} +2 -2
  126. package/dist/esm/{chunk-PJLCPRYJ.mjs → chunk-J2IIPYZG.mjs} +2 -2
  127. package/dist/esm/chunk-JEUAQVXW.mjs +2 -0
  128. package/dist/esm/chunk-JEUAQVXW.mjs.map +1 -0
  129. package/dist/esm/chunk-JOYJUVSE.mjs +2 -0
  130. package/dist/esm/chunk-JOYJUVSE.mjs.map +1 -0
  131. package/dist/esm/chunk-JXCZTOYC.mjs +1 -0
  132. package/dist/esm/chunk-JXCZTOYC.mjs.map +1 -0
  133. package/dist/esm/{chunk-TGG7SWBO.mjs → chunk-KCVBUZ6L.mjs} +2 -2
  134. package/dist/esm/chunk-KCVBUZ6L.mjs.map +1 -0
  135. package/dist/esm/{chunk-EJCKCYYI.mjs → chunk-KNHI66FK.mjs} +2 -2
  136. package/dist/esm/{chunk-4LMAVPA4.mjs → chunk-LDMEIVL6.mjs} +2 -2
  137. package/dist/esm/chunk-LX7N4NUS.mjs +2 -0
  138. package/dist/esm/chunk-LX7N4NUS.mjs.map +1 -0
  139. package/dist/esm/{chunk-DSTKXJMA.mjs → chunk-MGOHPDX4.mjs} +2 -2
  140. package/dist/esm/{chunk-UPIN5AIO.mjs → chunk-MKUAW7KW.mjs} +2 -2
  141. package/dist/esm/{chunk-BWFJHFBQ.mjs → chunk-MWUJCP27.mjs} +2 -2
  142. package/dist/esm/{chunk-LV2V23Z6.mjs → chunk-N4B6S6FK.mjs} +2 -2
  143. package/dist/esm/chunk-N4B6S6FK.mjs.map +1 -0
  144. package/dist/esm/{chunk-QTRYMRYK.mjs → chunk-NC5HHEEM.mjs} +2 -2
  145. package/dist/esm/chunk-NMVZP3Q2.mjs +2 -0
  146. package/dist/esm/chunk-NMVZP3Q2.mjs.map +1 -0
  147. package/dist/esm/chunk-NNA5VEB2.mjs +2 -0
  148. package/dist/esm/chunk-NNA5VEB2.mjs.map +1 -0
  149. package/dist/esm/chunk-OKRUEVF3.mjs +2 -0
  150. package/dist/esm/chunk-OKRUEVF3.mjs.map +1 -0
  151. package/dist/esm/{chunk-U43IJHQN.mjs → chunk-PFFAQZHT.mjs} +2 -2
  152. package/dist/esm/chunk-PLPCOELE.mjs +2 -0
  153. package/dist/esm/chunk-PLPCOELE.mjs.map +1 -0
  154. package/dist/esm/{chunk-BRQYARQ3.mjs → chunk-Q7TGZJT4.mjs} +2 -2
  155. package/dist/esm/chunk-QHIQLTBS.mjs +2 -0
  156. package/dist/esm/chunk-QHIQLTBS.mjs.map +1 -0
  157. package/dist/esm/{chunk-6MG4JAYB.mjs → chunk-QMIEBNTP.mjs} +2 -2
  158. package/dist/esm/{chunk-3QBZU5ZD.mjs → chunk-QXVGXZJX.mjs} +2 -2
  159. package/dist/esm/chunk-QXVGXZJX.mjs.map +1 -0
  160. package/dist/esm/{chunk-GS5J57UA.mjs → chunk-R6PFLI3Z.mjs} +2 -2
  161. package/dist/esm/chunk-R6PFLI3Z.mjs.map +1 -0
  162. package/dist/esm/chunk-RFSO3JRG.mjs +1 -0
  163. package/dist/esm/chunk-RFSO3JRG.mjs.map +1 -0
  164. package/dist/esm/chunk-RPXN7HGR.mjs +2 -0
  165. package/dist/esm/chunk-RPXN7HGR.mjs.map +1 -0
  166. package/dist/esm/chunk-S5HG2QUD.mjs +2 -0
  167. package/dist/esm/chunk-S5HG2QUD.mjs.map +1 -0
  168. package/dist/esm/{chunk-BBU2EE6D.mjs → chunk-SNQJV7MF.mjs} +2 -2
  169. package/dist/esm/chunk-SRLCFTZR.mjs +2 -0
  170. package/dist/esm/chunk-SRLCFTZR.mjs.map +1 -0
  171. package/dist/esm/{chunk-R5QUBEH6.mjs → chunk-STYDBDYL.mjs} +2 -2
  172. package/dist/esm/{chunk-IOSQVDZI.mjs → chunk-T23OVRNF.mjs} +2 -2
  173. package/dist/esm/{chunk-GXYS45Y5.mjs → chunk-T3W5USZC.mjs} +2 -2
  174. package/dist/esm/chunk-TBG3MIIE.mjs +2 -0
  175. package/dist/esm/chunk-TBG3MIIE.mjs.map +1 -0
  176. package/dist/esm/{chunk-XLPVG4XR.mjs → chunk-TE7AJKSU.mjs} +2 -2
  177. package/dist/esm/chunk-TJPWYYNO.mjs +2 -0
  178. package/dist/esm/chunk-TJPWYYNO.mjs.map +1 -0
  179. package/dist/esm/{chunk-52C73T26.mjs → chunk-TVRJ3M7B.mjs} +2 -2
  180. package/dist/esm/{chunk-52C73T26.mjs.map → chunk-TVRJ3M7B.mjs.map} +1 -1
  181. package/dist/esm/{chunk-A556OVZY.mjs → chunk-U72H6EST.mjs} +2 -2
  182. package/dist/esm/{chunk-BAV4XY7C.mjs → chunk-W637YAND.mjs} +2 -2
  183. package/dist/esm/chunk-W76IQV5K.mjs +2 -0
  184. package/dist/esm/chunk-W76IQV5K.mjs.map +1 -0
  185. package/dist/esm/chunk-WO2KROQ6.mjs +2 -0
  186. package/dist/esm/{chunk-B252RJCU.mjs.map → chunk-WO2KROQ6.mjs.map} +1 -1
  187. package/dist/esm/chunk-X56CTMYB.mjs +2 -0
  188. package/dist/esm/chunk-XEXWFQNP.mjs +2 -0
  189. package/dist/esm/chunk-YE5B2S5L.mjs +2 -0
  190. package/dist/esm/chunk-YE5B2S5L.mjs.map +1 -0
  191. package/dist/esm/chunk-YGHLXEB4.mjs +2 -0
  192. package/dist/esm/{chunk-IZT6OX3R.mjs.map → chunk-YGHLXEB4.mjs.map} +1 -1
  193. package/dist/esm/{chunk-OGHE4AQA.mjs → chunk-Z2ZR4PTF.mjs} +2 -2
  194. package/dist/esm/{chunk-RHBCVCOS.mjs → chunk-ZNEBMSNC.mjs} +2 -2
  195. package/dist/esm/client/core.mjs +1 -1
  196. package/dist/esm/client/get.d.mts +2 -1
  197. package/dist/esm/client/get.mjs +1 -1
  198. package/dist/esm/client/index.d.mts +2 -2
  199. package/dist/esm/client/index.mjs +1 -1
  200. package/dist/esm/client/post.d.mts +3 -1
  201. package/dist/esm/client/post.mjs +1 -1
  202. package/dist/esm/core/account/index.d.mts +5 -14
  203. package/dist/esm/core/account/index.mjs +1 -1
  204. package/dist/esm/core/account/utils/address.mjs +1 -1
  205. package/dist/esm/core/account/utils/index.mjs +1 -1
  206. package/dist/esm/core/accountAddress.mjs +1 -1
  207. package/dist/esm/core/authenticationKey.mjs +1 -1
  208. package/dist/esm/core/crypto/ed25519.d.mts +0 -10
  209. package/dist/esm/core/crypto/ed25519.mjs +1 -1
  210. package/dist/esm/core/crypto/ephemeral.d.mts +77 -0
  211. package/dist/esm/core/crypto/ephemeral.mjs +2 -0
  212. package/dist/esm/core/crypto/ephemeral.mjs.map +1 -0
  213. package/dist/esm/core/crypto/hdKey.d.mts +15 -1
  214. package/dist/esm/core/crypto/hdKey.mjs +1 -1
  215. package/dist/esm/core/crypto/index.d.mts +7 -5
  216. package/dist/esm/core/crypto/index.mjs +1 -1
  217. package/dist/esm/core/crypto/keyless.d.mts +217 -0
  218. package/dist/esm/core/crypto/keyless.mjs +2 -0
  219. package/dist/esm/core/crypto/keyless.mjs.map +1 -0
  220. package/dist/esm/core/crypto/multiEd25519.mjs +1 -1
  221. package/dist/esm/core/crypto/multiKey.d.mts +4 -3
  222. package/dist/esm/core/crypto/multiKey.mjs +1 -1
  223. package/dist/esm/core/crypto/poseidon.d.mts +7 -0
  224. package/dist/esm/core/crypto/poseidon.mjs +2 -0
  225. package/dist/esm/core/crypto/poseidon.mjs.map +1 -0
  226. package/dist/esm/core/crypto/publicKey.mjs +1 -1
  227. package/dist/esm/core/crypto/secp256k1.mjs +1 -1
  228. package/dist/esm/core/crypto/signature.mjs +1 -1
  229. package/dist/esm/core/crypto/singleKey.mjs +1 -1
  230. package/dist/esm/core/index.d.mts +6 -7
  231. package/dist/esm/core/index.mjs +1 -1
  232. package/dist/esm/index.d.mts +16 -10
  233. package/dist/esm/index.mjs +1 -1
  234. package/dist/esm/internal/account.d.mts +14 -2
  235. package/dist/esm/internal/account.mjs +1 -1
  236. package/dist/esm/internal/ans.d.mts +1 -1
  237. package/dist/esm/internal/ans.mjs +1 -1
  238. package/dist/esm/internal/coin.d.mts +7 -7
  239. package/dist/esm/internal/coin.mjs +1 -1
  240. package/dist/esm/internal/digitalAsset.d.mts +2 -2
  241. package/dist/esm/internal/digitalAsset.mjs +1 -1
  242. package/dist/esm/internal/event.d.mts +1 -1
  243. package/dist/esm/internal/event.mjs +1 -1
  244. package/dist/esm/internal/faucet.d.mts +1 -1
  245. package/dist/esm/internal/faucet.mjs +1 -1
  246. package/dist/esm/internal/fungibleAsset.d.mts +5 -5
  247. package/dist/esm/internal/fungibleAsset.mjs +1 -1
  248. package/dist/esm/internal/general.mjs +1 -1
  249. package/dist/esm/internal/keyless.d.mts +65 -0
  250. package/dist/esm/internal/keyless.mjs +2 -0
  251. package/dist/esm/internal/keyless.mjs.map +1 -0
  252. package/dist/esm/internal/staking.d.mts +1 -1
  253. package/dist/esm/internal/staking.mjs +1 -1
  254. package/dist/esm/internal/transaction.mjs +1 -1
  255. package/dist/esm/internal/transactionSubmission.d.mts +1 -1
  256. package/dist/esm/internal/transactionSubmission.mjs +1 -1
  257. package/dist/esm/internal/view.d.mts +7 -7
  258. package/dist/esm/internal/view.mjs +1 -1
  259. package/dist/esm/transactions/authenticator/account.d.mts +3 -4
  260. package/dist/esm/transactions/authenticator/account.mjs +1 -1
  261. package/dist/esm/transactions/authenticator/index.mjs +1 -1
  262. package/dist/esm/transactions/authenticator/transaction.mjs +1 -1
  263. package/dist/esm/transactions/index.d.mts +3 -3
  264. package/dist/esm/transactions/index.mjs +1 -1
  265. package/dist/esm/transactions/instances/chainId.mjs +1 -1
  266. package/dist/esm/transactions/instances/identifier.mjs +1 -1
  267. package/dist/esm/transactions/instances/index.d.mts +1 -0
  268. package/dist/esm/transactions/instances/index.mjs +1 -1
  269. package/dist/esm/transactions/instances/moduleId.d.mts +1 -1
  270. package/dist/esm/transactions/instances/moduleId.mjs +1 -1
  271. package/dist/esm/transactions/instances/multiAgentTransaction.mjs +1 -1
  272. package/dist/esm/transactions/instances/rawTransaction.mjs +1 -1
  273. package/dist/esm/transactions/instances/rotationProofChallenge.mjs +1 -1
  274. package/dist/esm/transactions/instances/signedTransaction.mjs +1 -1
  275. package/dist/esm/transactions/instances/simpleTransaction.mjs +1 -1
  276. package/dist/esm/transactions/instances/transactionPayload.d.mts +1 -1
  277. package/dist/esm/transactions/instances/transactionPayload.mjs +1 -1
  278. package/dist/esm/transactions/management/accountSequenceNumber.d.mts +13 -1
  279. package/dist/esm/transactions/management/accountSequenceNumber.mjs +1 -1
  280. package/dist/esm/transactions/management/index.d.mts +2 -2
  281. package/dist/esm/transactions/management/index.mjs +1 -1
  282. package/dist/esm/transactions/management/transactionWorker.d.mts +1 -1
  283. package/dist/esm/transactions/management/transactionWorker.mjs +1 -1
  284. package/dist/esm/transactions/transactionBuilder/helpers.d.mts +9 -9
  285. package/dist/esm/transactions/transactionBuilder/helpers.mjs +1 -1
  286. package/dist/esm/transactions/transactionBuilder/index.d.mts +9 -9
  287. package/dist/esm/transactions/transactionBuilder/index.mjs +1 -1
  288. package/dist/esm/transactions/transactionBuilder/remoteAbi.d.mts +6 -6
  289. package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +1 -1
  290. package/dist/esm/transactions/transactionBuilder/signingMessage.d.mts +47 -0
  291. package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +2 -0
  292. package/dist/esm/transactions/transactionBuilder/signingMessage.mjs.map +1 -0
  293. package/dist/esm/transactions/transactionBuilder/transactionBuilder.d.mts +13 -25
  294. package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +1 -1
  295. package/dist/esm/transactions/typeTag/index.mjs +1 -1
  296. package/dist/esm/transactions/typeTag/parser.mjs +1 -1
  297. package/dist/esm/transactions/types.d.mts +7 -7
  298. package/dist/esm/types/index.d.mts +17 -3
  299. package/dist/esm/types/index.mjs +1 -1
  300. package/dist/esm/types/keyless.d.mts +14 -0
  301. package/dist/esm/types/keyless.mjs +1 -0
  302. package/dist/esm/types/keyless.mjs.map +1 -0
  303. package/dist/esm/utils/apiEndpoints.d.mts +3 -1
  304. package/dist/esm/utils/apiEndpoints.mjs +1 -1
  305. package/dist/esm/utils/const.d.mts +3 -1
  306. package/dist/esm/utils/const.mjs +1 -1
  307. package/dist/esm/utils/index.d.mts +1 -1
  308. package/dist/esm/utils/index.mjs +1 -1
  309. package/dist/esm/utils/normalizeBundle.mjs +1 -1
  310. package/dist/esm/version.d.mts +1 -1
  311. package/dist/esm/version.mjs +1 -1
  312. package/package.json +7 -2
  313. package/src/{core/account → account}/Account.ts +12 -16
  314. package/src/{core/account → account}/Ed25519Account.ts +13 -7
  315. package/src/account/EphemeralKeyPair.ts +115 -0
  316. package/src/account/KeylessAccount.ts +240 -0
  317. package/src/account/MultiKeyAccount.ts +119 -0
  318. package/src/{core/account → account}/SingleKeyAccount.ts +13 -8
  319. package/src/account/index.ts +6 -0
  320. package/src/api/account.ts +2 -1
  321. package/src/api/ans.ts +2 -1
  322. package/src/api/aptos.ts +6 -0
  323. package/src/api/aptosConfig.ts +46 -1
  324. package/src/api/digitalAsset.ts +2 -1
  325. package/src/api/fungibleAsset.ts +2 -1
  326. package/src/api/keyless.ts +34 -0
  327. package/src/api/transaction.ts +2 -1
  328. package/src/api/transactionSubmission/management.ts +1 -1
  329. package/src/api/transactionSubmission/sign.ts +1 -1
  330. package/src/bcs/serializer.ts +18 -0
  331. package/src/client/core.ts +8 -0
  332. package/src/client/get.ts +6 -0
  333. package/src/client/post.ts +12 -0
  334. package/src/core/account/index.ts +1 -3
  335. package/src/core/crypto/ed25519.ts +4 -24
  336. package/src/core/crypto/ephemeral.ts +149 -0
  337. package/src/core/crypto/hdKey.ts +31 -0
  338. package/src/core/crypto/index.ts +2 -0
  339. package/src/core/crypto/keyless.ts +508 -0
  340. package/src/core/crypto/multiKey.ts +21 -11
  341. package/src/core/crypto/poseidon.ts +134 -0
  342. package/src/core/crypto/singleKey.ts +11 -0
  343. package/src/core/index.ts +0 -1
  344. package/src/index.ts +1 -0
  345. package/src/internal/account.ts +1 -1
  346. package/src/internal/ans.ts +2 -1
  347. package/src/internal/digitalAsset.ts +2 -1
  348. package/src/internal/fungibleAsset.ts +2 -1
  349. package/src/internal/keyless.ts +185 -0
  350. package/src/internal/transactionSubmission.ts +8 -7
  351. package/src/transactions/authenticator/account.ts +6 -11
  352. package/src/transactions/instances/index.ts +1 -0
  353. package/src/transactions/management/accountSequenceNumber.ts +1 -1
  354. package/src/transactions/management/transactionWorker.ts +8 -2
  355. package/src/transactions/transactionBuilder/index.ts +1 -0
  356. package/src/transactions/transactionBuilder/signingMessage.ts +70 -0
  357. package/src/transactions/transactionBuilder/transactionBuilder.ts +41 -70
  358. package/src/types/index.ts +19 -0
  359. package/src/types/keyless.ts +6 -0
  360. package/src/utils/apiEndpoints.ts +14 -0
  361. package/src/utils/const.ts +2 -0
  362. package/src/version.ts +1 -1
  363. package/dist/esm/chunk-3426VLAZ.mjs +0 -2
  364. package/dist/esm/chunk-3426VLAZ.mjs.map +0 -1
  365. package/dist/esm/chunk-3OCTOB2E.mjs +0 -2
  366. package/dist/esm/chunk-3OCTOB2E.mjs.map +0 -1
  367. package/dist/esm/chunk-3QBZU5ZD.mjs.map +0 -1
  368. package/dist/esm/chunk-3RUY5FQK.mjs.map +0 -1
  369. package/dist/esm/chunk-4DNVCOW7.mjs.map +0 -1
  370. package/dist/esm/chunk-5HALZ6JC.mjs +0 -2
  371. package/dist/esm/chunk-5HALZ6JC.mjs.map +0 -1
  372. package/dist/esm/chunk-5OM4V4DR.mjs +0 -2
  373. package/dist/esm/chunk-5TMLAKSH.mjs +0 -2
  374. package/dist/esm/chunk-5TMLAKSH.mjs.map +0 -1
  375. package/dist/esm/chunk-B252RJCU.mjs +0 -2
  376. package/dist/esm/chunk-CYNQRMO5.mjs +0 -2
  377. package/dist/esm/chunk-CYNQRMO5.mjs.map +0 -1
  378. package/dist/esm/chunk-E7FWVXGX.mjs +0 -1
  379. package/dist/esm/chunk-FO6ZKE7A.mjs +0 -2
  380. package/dist/esm/chunk-FO6ZKE7A.mjs.map +0 -1
  381. package/dist/esm/chunk-GMQQSSEO.mjs +0 -2
  382. package/dist/esm/chunk-GMQQSSEO.mjs.map +0 -1
  383. package/dist/esm/chunk-GNQXMS53.mjs +0 -2
  384. package/dist/esm/chunk-GNQXMS53.mjs.map +0 -1
  385. package/dist/esm/chunk-GS5J57UA.mjs.map +0 -1
  386. package/dist/esm/chunk-HLVMEUWD.mjs +0 -2
  387. package/dist/esm/chunk-HLVMEUWD.mjs.map +0 -1
  388. package/dist/esm/chunk-HQSLBTW5.mjs +0 -2
  389. package/dist/esm/chunk-HQSLBTW5.mjs.map +0 -1
  390. package/dist/esm/chunk-ICXA3DZH.mjs +0 -1
  391. package/dist/esm/chunk-IZT6OX3R.mjs +0 -2
  392. package/dist/esm/chunk-KHOHRD2B.mjs +0 -2
  393. package/dist/esm/chunk-KHOHRD2B.mjs.map +0 -1
  394. package/dist/esm/chunk-L6PGWGFF.mjs +0 -2
  395. package/dist/esm/chunk-LR65XHSF.mjs +0 -2
  396. package/dist/esm/chunk-LR65XHSF.mjs.map +0 -1
  397. package/dist/esm/chunk-LV2V23Z6.mjs.map +0 -1
  398. package/dist/esm/chunk-MLWIHWNH.mjs +0 -1
  399. package/dist/esm/chunk-MNBYKY5P.mjs +0 -2
  400. package/dist/esm/chunk-OVJQWQ2N.mjs +0 -2
  401. package/dist/esm/chunk-OVJQWQ2N.mjs.map +0 -1
  402. package/dist/esm/chunk-OWW6SIDP.mjs +0 -2
  403. package/dist/esm/chunk-OWW6SIDP.mjs.map +0 -1
  404. package/dist/esm/chunk-PIOHC246.mjs.map +0 -1
  405. package/dist/esm/chunk-R7G3CLRI.mjs +0 -1
  406. package/dist/esm/chunk-TGG7SWBO.mjs.map +0 -1
  407. package/dist/esm/chunk-TORRTLWV.mjs.map +0 -1
  408. package/dist/esm/chunk-TQR7M73S.mjs +0 -2
  409. package/dist/esm/chunk-TQR7M73S.mjs.map +0 -1
  410. package/dist/esm/chunk-UMFJDDYI.mjs.map +0 -1
  411. package/dist/esm/chunk-UVSRX4SV.mjs +0 -1
  412. package/dist/esm/chunk-VNO4VHJN.mjs +0 -2
  413. package/dist/esm/chunk-VNO4VHJN.mjs.map +0 -1
  414. package/dist/esm/chunk-WBOLHLPX.mjs +0 -2
  415. package/dist/esm/chunk-WBOLHLPX.mjs.map +0 -1
  416. package/dist/esm/chunk-XDGQTMDV.mjs +0 -2
  417. package/dist/esm/chunk-XDGQTMDV.mjs.map +0 -1
  418. package/dist/esm/chunk-YVSU6GOA.mjs +0 -2
  419. package/dist/esm/chunk-YVSU6GOA.mjs.map +0 -1
  420. package/dist/esm/core/account/Account.d.mts +0 -20
  421. package/dist/esm/core/account/Account.mjs +0 -2
  422. package/dist/esm/core/account/Ed25519Account.d.mts +0 -20
  423. package/dist/esm/core/account/Ed25519Account.mjs +0 -2
  424. package/dist/esm/core/account/SingleKeyAccount.d.mts +0 -20
  425. package/dist/esm/core/account/SingleKeyAccount.mjs +0 -2
  426. /package/dist/esm/{core/account → account}/Account.mjs.map +0 -0
  427. /package/dist/esm/{core/account → account}/Ed25519Account.mjs.map +0 -0
  428. /package/dist/esm/{chunk-E7FWVXGX.mjs.map → account/EphemeralKeyPair.mjs.map} +0 -0
  429. /package/dist/esm/{chunk-ICXA3DZH.mjs.map → account/KeylessAccount.mjs.map} +0 -0
  430. /package/dist/esm/{chunk-MLWIHWNH.mjs.map → account/MultiKeyAccount.mjs.map} +0 -0
  431. /package/dist/esm/{core/account → account}/SingleKeyAccount.mjs.map +0 -0
  432. /package/dist/esm/{chunk-R7G3CLRI.mjs.map → account/index.mjs.map} +0 -0
  433. /package/dist/esm/{chunk-UVSRX4SV.mjs.map → api/keyless.mjs.map} +0 -0
  434. /package/dist/esm/{chunk-KDCHX7BI.mjs.map → chunk-274CXZ6R.mjs.map} +0 -0
  435. /package/dist/esm/{chunk-TBMAJ6AW.mjs.map → chunk-3FVRXELT.mjs.map} +0 -0
  436. /package/dist/esm/{chunk-RQEWIZ67.mjs.map → chunk-3LQPAGL6.mjs.map} +0 -0
  437. /package/dist/esm/{chunk-6IGEUEER.mjs.map → chunk-3PGVEOWR.mjs.map} +0 -0
  438. /package/dist/esm/{chunk-DMKUAQB7.mjs.map → chunk-3VGX3TXH.mjs.map} +0 -0
  439. /package/dist/esm/{chunk-YKVKSNH4.mjs.map → chunk-6NZNCDDW.mjs.map} +0 -0
  440. /package/dist/esm/{chunk-QIAHBEEW.mjs.map → chunk-6RBUXB5I.mjs.map} +0 -0
  441. /package/dist/esm/{chunk-3HV2C4SS.mjs.map → chunk-7FNHL6LU.mjs.map} +0 -0
  442. /package/dist/esm/{chunk-FXNFWLQC.mjs.map → chunk-7H3HRFVM.mjs.map} +0 -0
  443. /package/dist/esm/{chunk-NPFNYP75.mjs.map → chunk-7STYQ5ZE.mjs.map} +0 -0
  444. /package/dist/esm/{chunk-QWRH22H4.mjs.map → chunk-APEBWN6Q.mjs.map} +0 -0
  445. /package/dist/esm/{chunk-ZYYK3UXP.mjs.map → chunk-C3L4ETUF.mjs.map} +0 -0
  446. /package/dist/esm/{chunk-WFZDFFBM.mjs.map → chunk-COW5IGYC.mjs.map} +0 -0
  447. /package/dist/esm/{chunk-TC3VVMPY.mjs.map → chunk-E36GTDEB.mjs.map} +0 -0
  448. /package/dist/esm/{chunk-FS3NSGBF.mjs.map → chunk-EB7AI4B4.mjs.map} +0 -0
  449. /package/dist/esm/{chunk-GRT5PHL6.mjs.map → chunk-H3LMPXEM.mjs.map} +0 -0
  450. /package/dist/esm/{chunk-YBEF3UR3.mjs.map → chunk-H6BRBIMG.mjs.map} +0 -0
  451. /package/dist/esm/{chunk-2PFN7LYP.mjs.map → chunk-HFLWASAB.mjs.map} +0 -0
  452. /package/dist/esm/{chunk-UML2VQZT.mjs.map → chunk-HGZGTBA4.mjs.map} +0 -0
  453. /package/dist/esm/{chunk-TGXZVNR5.mjs.map → chunk-IEZO4PIG.mjs.map} +0 -0
  454. /package/dist/esm/{chunk-PJLCPRYJ.mjs.map → chunk-J2IIPYZG.mjs.map} +0 -0
  455. /package/dist/esm/{chunk-EJCKCYYI.mjs.map → chunk-KNHI66FK.mjs.map} +0 -0
  456. /package/dist/esm/{chunk-4LMAVPA4.mjs.map → chunk-LDMEIVL6.mjs.map} +0 -0
  457. /package/dist/esm/{chunk-DSTKXJMA.mjs.map → chunk-MGOHPDX4.mjs.map} +0 -0
  458. /package/dist/esm/{chunk-UPIN5AIO.mjs.map → chunk-MKUAW7KW.mjs.map} +0 -0
  459. /package/dist/esm/{chunk-BWFJHFBQ.mjs.map → chunk-MWUJCP27.mjs.map} +0 -0
  460. /package/dist/esm/{chunk-QTRYMRYK.mjs.map → chunk-NC5HHEEM.mjs.map} +0 -0
  461. /package/dist/esm/{chunk-U43IJHQN.mjs.map → chunk-PFFAQZHT.mjs.map} +0 -0
  462. /package/dist/esm/{chunk-BRQYARQ3.mjs.map → chunk-Q7TGZJT4.mjs.map} +0 -0
  463. /package/dist/esm/{chunk-6MG4JAYB.mjs.map → chunk-QMIEBNTP.mjs.map} +0 -0
  464. /package/dist/esm/{chunk-BBU2EE6D.mjs.map → chunk-SNQJV7MF.mjs.map} +0 -0
  465. /package/dist/esm/{chunk-R5QUBEH6.mjs.map → chunk-STYDBDYL.mjs.map} +0 -0
  466. /package/dist/esm/{chunk-IOSQVDZI.mjs.map → chunk-T23OVRNF.mjs.map} +0 -0
  467. /package/dist/esm/{chunk-GXYS45Y5.mjs.map → chunk-T3W5USZC.mjs.map} +0 -0
  468. /package/dist/esm/{chunk-XLPVG4XR.mjs.map → chunk-TE7AJKSU.mjs.map} +0 -0
  469. /package/dist/esm/{chunk-A556OVZY.mjs.map → chunk-U72H6EST.mjs.map} +0 -0
  470. /package/dist/esm/{chunk-BAV4XY7C.mjs.map → chunk-W637YAND.mjs.map} +0 -0
  471. /package/dist/esm/{chunk-5OM4V4DR.mjs.map → chunk-X56CTMYB.mjs.map} +0 -0
  472. /package/dist/esm/{chunk-L6PGWGFF.mjs.map → chunk-XEXWFQNP.mjs.map} +0 -0
  473. /package/dist/esm/{chunk-OGHE4AQA.mjs.map → chunk-Z2ZR4PTF.mjs.map} +0 -0
  474. /package/dist/esm/{chunk-RHBCVCOS.mjs.map → chunk-ZNEBMSNC.mjs.map} +0 -0
@@ -1,8 +1,10 @@
1
- import { AccountAuthenticatorEd25519 } from "../../transactions/authenticator/account";
2
- import { HexInput, SigningScheme } from "../../types";
3
- import { AccountAddress, AccountAddressInput } from "../accountAddress";
4
- import { Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature } from "../crypto";
1
+ import { AccountAuthenticatorEd25519 } from "../transactions/authenticator/account";
2
+ import { HexInput, SigningScheme } from "../types";
3
+ import { AccountAddress, AccountAddressInput } from "../core/accountAddress";
4
+ import { Ed25519PrivateKey, Ed25519PublicKey, Ed25519Signature } from "../core/crypto";
5
5
  import type { Account } from "./Account";
6
+ import { AnyRawTransaction } from "../transactions/types";
7
+ import { generateSigningMessageForTransaction } from "../transactions/transactionBuilder/signingMessage";
6
8
 
7
9
  export interface Ed25519SignerConstructorArgs {
8
10
  privateKey: Ed25519PrivateKey;
@@ -75,13 +77,17 @@ export class Ed25519Account implements Account {
75
77
  return this.publicKey.verifySignature(args);
76
78
  }
77
79
 
78
- signWithAuthenticator(message: HexInput) {
79
- const signature = this.privateKey.sign(message);
80
+ signWithAuthenticator(transaction: AnyRawTransaction) {
81
+ const signature = this.privateKey.sign(generateSigningMessageForTransaction(transaction));
80
82
  return new AccountAuthenticatorEd25519(this.publicKey, signature);
81
83
  }
82
84
 
83
85
  sign(message: HexInput) {
84
- return this.signWithAuthenticator(message).signature;
86
+ return this.privateKey.sign(message);
87
+ }
88
+
89
+ signTransaction(transaction: AnyRawTransaction) {
90
+ return this.sign(generateSigningMessageForTransaction(transaction));
85
91
  }
86
92
 
87
93
  // endregion
@@ -0,0 +1,115 @@
1
+ // Copyright © Aptos Foundation
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { randomBytes } from "@noble/hashes/utils";
5
+
6
+ import {
7
+ EPK_HORIZON_SECS,
8
+ Ed25519PrivateKey,
9
+ EphemeralPublicKey,
10
+ EphemeralSignature,
11
+ PrivateKey,
12
+ } from "../core/crypto";
13
+ import { Hex } from "../core/hex";
14
+ import { bytesToBigIntLE, padAndPackBytesWithLen, poseidonHash } from "../core/crypto/poseidon";
15
+ import { EphemeralPublicKeyVariant, HexInput, SigningSchemeInput } from "../types";
16
+ import { Deserializer, Serializable, Serializer } from "../bcs";
17
+
18
+ export class EphemeralKeyPair extends Serializable {
19
+ readonly blinder: Uint8Array;
20
+
21
+ readonly expiryDateSecs: bigint | number;
22
+
23
+ readonly nonce: string;
24
+
25
+ private privateKey: PrivateKey;
26
+
27
+ private publicKey: EphemeralPublicKey;
28
+
29
+ constructor(args: { privateKey: PrivateKey; expiryDateSecs?: bigint | number; blinder?: HexInput }) {
30
+ super();
31
+ const { privateKey, expiryDateSecs, blinder } = args;
32
+ this.privateKey = privateKey;
33
+ this.publicKey = new EphemeralPublicKey(privateKey.publicKey());
34
+ this.expiryDateSecs = expiryDateSecs || BigInt(floorToWholeHour(currentTimeInSeconds() + EPK_HORIZON_SECS));
35
+ this.blinder = blinder !== undefined ? Hex.fromHexInput(blinder).toUint8Array() : generateBlinder();
36
+ this.nonce = this.generateNonce();
37
+ }
38
+
39
+ getPublicKey(): EphemeralPublicKey {
40
+ return this.publicKey;
41
+ }
42
+
43
+ serialize(serializer: Serializer): void {
44
+ serializer.serializeU32AsUleb128(this.publicKey.variant);
45
+ serializer.serializeBytes(this.privateKey.toUint8Array());
46
+ serializer.serializeU64(this.expiryDateSecs);
47
+ serializer.serializeFixedBytes(this.blinder);
48
+ }
49
+
50
+ static deserialize(deserializer: Deserializer): EphemeralKeyPair {
51
+ const variantIndex = deserializer.deserializeUleb128AsU32();
52
+ let privateKey: PrivateKey;
53
+ switch (variantIndex) {
54
+ case EphemeralPublicKeyVariant.Ed25519:
55
+ privateKey = Ed25519PrivateKey.deserialize(deserializer);
56
+ break;
57
+ default:
58
+ throw new Error(`Unknown variant index for EphemeralPublicKey: ${variantIndex}`);
59
+ }
60
+ const expiryDateSecs = deserializer.deserializeU64();
61
+ const blinder = deserializer.deserializeFixedBytes(31);
62
+ return new EphemeralKeyPair({ privateKey, expiryDateSecs, blinder });
63
+ }
64
+
65
+ static fromBytes(bytes: Uint8Array): EphemeralKeyPair {
66
+ return EphemeralKeyPair.deserialize(new Deserializer(bytes));
67
+ }
68
+
69
+ static generate(args?: { scheme: SigningSchemeInput }): EphemeralKeyPair {
70
+ let privateKey: PrivateKey;
71
+
72
+ switch (args?.scheme) {
73
+ case SigningSchemeInput.Ed25519:
74
+ default:
75
+ privateKey = Ed25519PrivateKey.generate();
76
+ }
77
+
78
+ return new EphemeralKeyPair({ privateKey });
79
+ }
80
+
81
+ generateNonce(): string {
82
+ const fields = padAndPackBytesWithLen(this.publicKey.bcsToBytes(), 93);
83
+ fields.push(BigInt(this.expiryDateSecs));
84
+ fields.push(bytesToBigIntLE(this.blinder));
85
+ const nonceHash = poseidonHash(fields);
86
+ return nonceHash.toString();
87
+ }
88
+
89
+ /**
90
+ * Sign the given message with the private key.
91
+ * *
92
+ * @param data in HexInput format
93
+ * @returns EphemeralSignature
94
+ */
95
+ sign(data: HexInput): EphemeralSignature {
96
+ return new EphemeralSignature(this.privateKey.sign(data));
97
+ }
98
+ }
99
+
100
+ function generateBlinder(): Uint8Array {
101
+ return randomBytes(31);
102
+ }
103
+
104
+ function currentTimeInSeconds(): number {
105
+ return Math.floor(new Date().getTime() / 1000);
106
+ }
107
+
108
+ function floorToWholeHour(timestampInSeconds: number): number {
109
+ const date = new Date(timestampInSeconds * 1000);
110
+ // Reset minutes and seconds to zero
111
+ date.setMinutes(0);
112
+ date.setSeconds(0);
113
+ date.setMilliseconds(0);
114
+ return Math.floor(date.getTime() / 1000);
115
+ }
@@ -0,0 +1,240 @@
1
+ // Copyright © Aptos Foundation
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { JwtPayload, jwtDecode } from "jwt-decode";
5
+ import { decode } from "base-64";
6
+ import { HexInput, SigningScheme } from "../types";
7
+ import { AccountAddress } from "../core/accountAddress";
8
+ import {
9
+ AnyPublicKey,
10
+ AnySignature,
11
+ KeylessPublicKey,
12
+ KeylessSignature,
13
+ OpenIdSignature,
14
+ OpenIdSignatureOrZkProof,
15
+ Signature,
16
+ SignedGroth16Signature,
17
+ computeAddressSeed,
18
+ fromDerivationPath as fromDerivationPathInner,
19
+ } from "../core/crypto";
20
+
21
+ import { Account } from "./Account";
22
+ import { EphemeralKeyPair } from "./EphemeralKeyPair";
23
+ import { Hex } from "../core/hex";
24
+ import { AccountAuthenticatorSingleKey } from "../transactions/authenticator/account";
25
+ import { Deserializer, Serializer } from "../bcs";
26
+ import { deriveTransactionType, generateSigningMessage } from "../transactions/transactionBuilder/signingMessage";
27
+ import { AnyRawTransaction } from "../transactions/types";
28
+
29
+ function base64UrlDecode(base64Url: string): string {
30
+ // Replace base64url-specific characters
31
+ const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/");
32
+
33
+ // Pad the string with '=' characters if needed
34
+ const paddedBase64 = base64 + "==".substring(0, (3 - (base64.length % 3)) % 3);
35
+
36
+ // Decode the base64 string using the base-64 library
37
+ const decodedString = decode(paddedBase64);
38
+
39
+ return decodedString;
40
+ }
41
+
42
+ export class KeylessAccount implements Account {
43
+ static readonly PEPPER_LENGTH: number = 31;
44
+
45
+ static readonly SLIP_0010_SEED: string = "32 bytes";
46
+
47
+ publicKey: KeylessPublicKey;
48
+
49
+ ephemeralKeyPair: EphemeralKeyPair;
50
+
51
+ uidKey: string;
52
+
53
+ uidVal: string;
54
+
55
+ aud: string;
56
+
57
+ pepper: Uint8Array;
58
+
59
+ accountAddress: AccountAddress;
60
+
61
+ proof: SignedGroth16Signature;
62
+
63
+ signingScheme: SigningScheme;
64
+
65
+ jwt: string;
66
+
67
+ constructor(args: {
68
+ address?: AccountAddress;
69
+ ephemeralKeyPair: EphemeralKeyPair;
70
+ iss: string;
71
+ uidKey: string;
72
+ uidVal: string;
73
+ aud: string;
74
+ pepper: HexInput;
75
+ proof: SignedGroth16Signature;
76
+ jwt: string;
77
+ }) {
78
+ const { address, ephemeralKeyPair, iss, uidKey, uidVal, aud, pepper, proof, jwt } = args;
79
+ this.ephemeralKeyPair = ephemeralKeyPair;
80
+ const addressSeed = computeAddressSeed(args);
81
+ this.publicKey = new KeylessPublicKey(iss, addressSeed);
82
+ this.accountAddress = address ? AccountAddress.from(address) : this.publicKey.authKey().derivedAddress();
83
+ this.uidKey = uidKey;
84
+ this.uidVal = uidVal;
85
+ this.aud = aud;
86
+ this.jwt = jwt;
87
+ this.proof = proof;
88
+
89
+ this.signingScheme = SigningScheme.SingleKey;
90
+ const pepperBytes = Hex.fromHexInput(pepper).toUint8Array();
91
+ if (pepperBytes.length !== KeylessAccount.PEPPER_LENGTH) {
92
+ throw new Error(`Pepper length in bytes should be ${KeylessAccount.PEPPER_LENGTH}`);
93
+ }
94
+ this.pepper = pepperBytes;
95
+ }
96
+
97
+ serialize(serializer: Serializer): void {
98
+ serializer.serializeStr(this.jwt);
99
+ serializer.serializeStr(this.uidKey);
100
+ serializer.serializeFixedBytes(this.pepper);
101
+ this.ephemeralKeyPair.serialize(serializer);
102
+ this.proof.serialize(serializer);
103
+ }
104
+
105
+ static deserialize(deserializer: Deserializer): KeylessAccount {
106
+ const jwt = deserializer.deserializeStr();
107
+ const uidKey = deserializer.deserializeStr();
108
+ const pepper = deserializer.deserializeFixedBytes(31);
109
+ const ephemeralKeyPair = EphemeralKeyPair.deserialize(deserializer);
110
+ const proof = SignedGroth16Signature.deserialize(deserializer);
111
+ return KeylessAccount.fromJWTAndProof({
112
+ proof,
113
+ pepper,
114
+ uidKey,
115
+ jwt,
116
+ ephemeralKeyPair,
117
+ });
118
+ }
119
+
120
+ bcsToBytes(): Uint8Array {
121
+ const serializer = new Serializer();
122
+ this.serialize(serializer);
123
+ return serializer.toUint8Array();
124
+ }
125
+
126
+ bcsToHex(): Hex {
127
+ const bcsBytes = this.bcsToBytes();
128
+ return Hex.fromHexInput(bcsBytes);
129
+ }
130
+
131
+ signWithAuthenticator(transaction: AnyRawTransaction): AccountAuthenticatorSingleKey {
132
+ const raw = deriveTransactionType(transaction);
133
+ const signature = new AnySignature(this.sign(raw.bcsToBytes()));
134
+ const publicKey = new AnyPublicKey(this.publicKey);
135
+ return new AccountAuthenticatorSingleKey(publicKey, signature);
136
+ }
137
+
138
+ async waitForProofFetch() {
139
+ if (this.proof instanceof Promise) {
140
+ await this.proof;
141
+ }
142
+ }
143
+
144
+ sign(data: HexInput): Signature {
145
+ const { expiryDateSecs } = this.ephemeralKeyPair;
146
+ const currentTimeInSeconds = Math.floor(new Date().getTime() / 1000);
147
+ if (expiryDateSecs < currentTimeInSeconds) {
148
+ throw new Error("Ephemeral key pair is expired.");
149
+ }
150
+ if (this.proof instanceof Promise) {
151
+ throw new Error("Failed to fetch proof.");
152
+ }
153
+ const jwtHeader = this.jwt.split(".")[0];
154
+ const ephemeralPublicKey = this.ephemeralKeyPair.getPublicKey();
155
+
156
+ const serializer = new Serializer();
157
+ serializer.serializeFixedBytes(Hex.fromHexInput(data).toUint8Array());
158
+ serializer.serializeOption(this.proof.proof);
159
+ const signMess = generateSigningMessage(serializer.toUint8Array(), "APTOS::TransactionAndProof");
160
+
161
+ const ephemeralSignature = this.ephemeralKeyPair.sign(signMess);
162
+
163
+ return new KeylessSignature({
164
+ jwtHeader: base64UrlDecode(jwtHeader),
165
+ openIdSignatureOrZkProof: new OpenIdSignatureOrZkProof(this.proof),
166
+ expiryDateSecs,
167
+ ephemeralPublicKey,
168
+ ephemeralSignature,
169
+ });
170
+ }
171
+
172
+ signTransaction(transaction: AnyRawTransaction): Signature {
173
+ const raw = deriveTransactionType(transaction);
174
+ return this.sign(raw.bcsToBytes());
175
+ }
176
+
177
+ signWithOpenIdSignature(data: HexInput): Signature {
178
+ const [jwtHeader, jwtPayload, jwtSignature] = this.jwt.split(".");
179
+ const openIdSig = new OpenIdSignature({
180
+ jwtSignature,
181
+ jwtPayloadJson: jwtPayload,
182
+ uidKey: this.uidKey,
183
+ epkBlinder: this.ephemeralKeyPair.blinder,
184
+ pepper: this.pepper,
185
+ });
186
+
187
+ const { expiryDateSecs } = this.ephemeralKeyPair;
188
+ const ephemeralPublicKey = this.ephemeralKeyPair.getPublicKey();
189
+ const ephemeralSignature = this.ephemeralKeyPair.sign(data);
190
+ return new KeylessSignature({
191
+ jwtHeader,
192
+ openIdSignatureOrZkProof: new OpenIdSignatureOrZkProof(openIdSig),
193
+ expiryDateSecs,
194
+ ephemeralPublicKey,
195
+ ephemeralSignature,
196
+ });
197
+ }
198
+
199
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, class-methods-use-this
200
+ verifySignature(args: { message: HexInput; signature: Signature }): boolean {
201
+ return true;
202
+ }
203
+
204
+ static fromBytes(bytes: Uint8Array): KeylessAccount {
205
+ return KeylessAccount.deserialize(new Deserializer(bytes));
206
+ }
207
+
208
+ static fromJWTAndProof(args: {
209
+ proof: SignedGroth16Signature;
210
+ jwt: string;
211
+ ephemeralKeyPair: EphemeralKeyPair;
212
+ pepper: HexInput;
213
+ uidKey?: string;
214
+ }): KeylessAccount {
215
+ const { proof, jwt, ephemeralKeyPair, pepper } = args;
216
+ const uidKey = args.uidKey ?? "sub";
217
+
218
+ const jwtPayload = jwtDecode<JwtPayload & { [key: string]: string }>(jwt);
219
+ const iss = jwtPayload.iss!;
220
+ if (typeof jwtPayload.aud !== "string") {
221
+ throw new Error("aud was not found or an array of values");
222
+ }
223
+ const aud = jwtPayload.aud!;
224
+ const uidVal = jwtPayload[uidKey];
225
+ return new KeylessAccount({
226
+ proof,
227
+ ephemeralKeyPair,
228
+ iss,
229
+ uidKey,
230
+ uidVal,
231
+ aud,
232
+ pepper,
233
+ jwt,
234
+ });
235
+ }
236
+
237
+ static fromDerivationPath(path: string, seed: Uint8Array): Uint8Array {
238
+ return fromDerivationPathInner(path, KeylessAccount.SLIP_0010_SEED, seed);
239
+ }
240
+ }
@@ -0,0 +1,119 @@
1
+ // Copyright © Aptos Foundation
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { Account } from "./Account";
5
+ import { MultiKey, MultiSignature, PublicKey, Signature } from "../core/crypto";
6
+ import { AccountAddress } from "../core/accountAddress";
7
+ import { HexInput, SigningScheme } from "../types";
8
+ import { AccountAuthenticatorMultiKey } from "../transactions/authenticator/account";
9
+ import { AnyRawTransaction } from "../transactions/types";
10
+ import { KeylessAccount } from "./KeylessAccount";
11
+
12
+ export class MultiKeyAccount implements Account {
13
+ /**
14
+ * Public key associated with the account
15
+ */
16
+ readonly publicKey: MultiKey;
17
+
18
+ /**
19
+ * Account address associated with the account
20
+ */
21
+ readonly accountAddress: AccountAddress;
22
+
23
+ /**
24
+ * Signing scheme used to sign transactions
25
+ */
26
+ readonly signingScheme: SigningScheme;
27
+
28
+ signers: Account[];
29
+
30
+ signaturesBitmap: Uint8Array;
31
+
32
+ /**
33
+ * constructor for Account
34
+ *
35
+ * Need to update this to use the new crypto library if new schemes are added.
36
+ *
37
+ * @param args.privateKey PrivateKey - private key of the account
38
+ * @param args.address AccountAddress - address of the account
39
+ * @param args.legacy optional. If set to false, the keypair authentication keys will be derived with a unified scheme.
40
+ * Defaults to deriving an authentication key with the legacy scheme.
41
+ *
42
+ * This method is private because it should only be called by the factory static methods.
43
+ * @returns Account
44
+ */
45
+ constructor(args: { multiKey: MultiKey; signers: Account[] }) {
46
+ const { multiKey, signers } = args;
47
+
48
+ this.publicKey = multiKey;
49
+ this.signers = signers;
50
+ this.signingScheme = SigningScheme.MultiKey;
51
+
52
+ this.accountAddress = this.publicKey.authKey().derivedAddress();
53
+
54
+ const bits: number[] = [];
55
+ for (const signer of signers) {
56
+ bits.push(this.publicKey.getIndex(signer.publicKey));
57
+ }
58
+ this.signaturesBitmap = this.publicKey.createBitmap({ bits });
59
+ }
60
+
61
+ static fromPublicKeysAndSigners(args: {
62
+ publicKeys: PublicKey[];
63
+ signaturesRequired: number;
64
+ signers: Account[];
65
+ }): MultiKeyAccount {
66
+ const { publicKeys, signaturesRequired, signers } = args;
67
+ const multiKey = new MultiKey({ publicKeys, signaturesRequired });
68
+ return new MultiKeyAccount({ multiKey, signers });
69
+ }
70
+
71
+ static isMultiKeySigner(account: Account): account is MultiKeyAccount {
72
+ return account instanceof MultiKeyAccount;
73
+ }
74
+
75
+ signWithAuthenticator(transaction: AnyRawTransaction) {
76
+ return new AccountAuthenticatorMultiKey(this.publicKey, this.signTransaction(transaction));
77
+ }
78
+
79
+ async waitForProofFetch() {
80
+ const keylessSigners = this.signers.filter((signer) => signer instanceof KeylessAccount) as KeylessAccount[];
81
+ await Promise.all(keylessSigners.filter((signer) => signer.proof instanceof Promise).map((signer) => signer.proof));
82
+ }
83
+
84
+ /**
85
+ * Sign the given message with the private key.
86
+ *
87
+ * TODO: Add sign transaction or specific types
88
+ *
89
+ * @param data in HexInput format
90
+ * @returns Signature
91
+ */
92
+ sign(data: HexInput): MultiSignature {
93
+ const signatures = [];
94
+ for (const signer of this.signers) {
95
+ signatures.push(signer.sign(data));
96
+ }
97
+ return new MultiSignature({ signatures, bitmap: this.signaturesBitmap });
98
+ }
99
+
100
+ signTransaction(transaction: AnyRawTransaction) {
101
+ const signatures = [];
102
+ for (const signer of this.signers) {
103
+ signatures.push(signer.signTransaction(transaction));
104
+ }
105
+ return new MultiSignature({ signatures, bitmap: this.signaturesBitmap });
106
+ }
107
+
108
+ /**
109
+ * Verify the given message and signature with the public key.
110
+ *
111
+ * @param args.message raw message data in HexInput format
112
+ * @param args.signature signed message Signature
113
+ * @returns
114
+ */
115
+ // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars
116
+ verifySignature(args: { message: HexInput; signature: Signature }): boolean {
117
+ return true;
118
+ }
119
+ }
@@ -1,8 +1,10 @@
1
- import { AccountAuthenticatorSingleKey } from "../../transactions/authenticator/account";
2
- import { type HexInput, SigningScheme, SigningSchemeInput } from "../../types";
3
- import { AccountAddress, AccountAddressInput } from "../accountAddress";
4
- import { AnyPublicKey, AnySignature, Ed25519PrivateKey, PrivateKey, Secp256k1PrivateKey } from "../crypto";
1
+ import { AccountAuthenticatorSingleKey } from "../transactions/authenticator/account";
2
+ import { type HexInput, SigningScheme, SigningSchemeInput } from "../types";
3
+ import { AccountAddress, AccountAddressInput } from "../core/accountAddress";
4
+ import { AnyPublicKey, AnySignature, Ed25519PrivateKey, PrivateKey, Secp256k1PrivateKey } from "../core/crypto";
5
5
  import type { Account } from "./Account";
6
+ import { generateSigningMessageForTransaction } from "../transactions/transactionBuilder/signingMessage";
7
+ import { AnyRawTransaction } from "../transactions/types";
6
8
 
7
9
  export interface SingleKeySignerConstructorArgs {
8
10
  privateKey: PrivateKey;
@@ -106,14 +108,17 @@ export class SingleKeyAccount implements Account {
106
108
  return this.publicKey.verifySignature(args);
107
109
  }
108
110
 
109
- signWithAuthenticator(message: HexInput) {
110
- const innerSignature = this.privateKey.sign(message);
111
- const signature = new AnySignature(innerSignature);
111
+ signWithAuthenticator(transaction: AnyRawTransaction) {
112
+ const signature = this.sign(generateSigningMessageForTransaction(transaction));
112
113
  return new AccountAuthenticatorSingleKey(this.publicKey, signature);
113
114
  }
114
115
 
115
116
  sign(message: HexInput) {
116
- return this.signWithAuthenticator(message).signature;
117
+ return new AnySignature(this.privateKey.sign(message));
118
+ }
119
+
120
+ signTransaction(transaction: AnyRawTransaction) {
121
+ return this.sign(generateSigningMessageForTransaction(transaction));
117
122
  }
118
123
 
119
124
  // endregion
@@ -0,0 +1,6 @@
1
+ export * from "./Ed25519Account";
2
+ export * from "./Account";
3
+ export * from "./SingleKeyAccount";
4
+ export * from "./KeylessAccount";
5
+ export * from "./EphemeralKeyPair";
6
+ export * from "./MultiKeyAccount";
@@ -1,7 +1,8 @@
1
1
  // Copyright © Aptos Foundation
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import { AccountAddress, PrivateKey, Account as AccountModule, AccountAddressInput } from "../core";
4
+ import { Account as AccountModule } from "../account";
5
+ import { AccountAddress, PrivateKey, AccountAddressInput } from "../core";
5
6
  import {
6
7
  AccountData,
7
8
  AnyNumber,
package/src/api/ans.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  // Copyright © Aptos Foundation
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import { Account, AccountAddress, AccountAddressInput } from "../core";
4
+ import { Account } from "../account";
5
+ import { AccountAddress, AccountAddressInput } from "../core";
5
6
  import {
6
7
  RegisterNameParameters,
7
8
  getExpiration,
package/src/api/aptos.ts CHANGED
@@ -12,6 +12,7 @@ import { General } from "./general";
12
12
  import { ANS } from "./ans";
13
13
  import { Staking } from "./staking";
14
14
  import { Transaction } from "./transaction";
15
+ import { Keyless } from "./keyless";
15
16
 
16
17
  /**
17
18
  * This class is the main entry point into Aptos's
@@ -47,6 +48,8 @@ export class Aptos {
47
48
 
48
49
  readonly transaction: Transaction;
49
50
 
51
+ readonly keyless: Keyless;
52
+
50
53
  constructor(settings?: AptosConfig) {
51
54
  this.config = new AptosConfig(settings);
52
55
  this.account = new Account(this.config);
@@ -59,6 +62,7 @@ export class Aptos {
59
62
  this.general = new General(this.config);
60
63
  this.staking = new Staking(this.config);
61
64
  this.transaction = new Transaction(this.config);
65
+ this.keyless = new Keyless(this.config);
62
66
  }
63
67
  }
64
68
 
@@ -73,6 +77,7 @@ export interface Aptos
73
77
  Faucet,
74
78
  FungibleAsset,
75
79
  General,
80
+ Keyless,
76
81
  Staking,
77
82
  Omit<Transaction, "build" | "simulate" | "submit" | "batch"> {}
78
83
 
@@ -107,3 +112,4 @@ applyMixin(Aptos, FungibleAsset, "fungibleAsset");
107
112
  applyMixin(Aptos, General, "general");
108
113
  applyMixin(Aptos, Staking, "staking");
109
114
  applyMixin(Aptos, Transaction, "transaction");
115
+ applyMixin(Aptos, Keyless, "keyless");
@@ -3,7 +3,14 @@
3
3
 
4
4
  import aptosClient from "@aptos-labs/aptos-client";
5
5
  import { AptosSettings, ClientConfig, Client, FullNodeConfig, IndexerConfig, FaucetConfig } from "../types";
6
- import { NetworkToNodeAPI, NetworkToFaucetAPI, NetworkToIndexerAPI, Network } from "../utils/apiEndpoints";
6
+ import {
7
+ NetworkToNodeAPI,
8
+ NetworkToFaucetAPI,
9
+ NetworkToIndexerAPI,
10
+ Network,
11
+ NetworkToPepperAPI,
12
+ NetworkToProverAPI,
13
+ } from "../utils/apiEndpoints";
7
14
  import { AptosApiType } from "../utils/const";
8
15
 
9
16
  /**
@@ -34,6 +41,16 @@ export class AptosConfig {
34
41
  */
35
42
  readonly faucet?: string;
36
43
 
44
+ /**
45
+ * The optional hardcoded pepper service URL to send requests to instead of using the network
46
+ */
47
+ readonly pepper?: string;
48
+
49
+ /**
50
+ * The optional hardcoded prover service URL to send requests to instead of using the network
51
+ */
52
+ readonly prover?: string;
53
+
37
54
  /**
38
55
  * The optional hardcoded indexer URL to send requests to instead of using the network
39
56
  */
@@ -63,6 +80,8 @@ export class AptosConfig {
63
80
  this.network = settings?.network ?? Network.DEVNET;
64
81
  this.fullnode = settings?.fullnode;
65
82
  this.faucet = settings?.faucet;
83
+ this.pepper = settings?.pepper;
84
+ this.prover = settings?.prover;
66
85
  this.indexer = settings?.indexer;
67
86
  this.client = settings?.client ?? { provider: aptosClient };
68
87
  this.clientConfig = settings?.clientConfig ?? {};
@@ -95,8 +114,34 @@ export class AptosConfig {
95
114
  if (this.indexer !== undefined) return this.indexer;
96
115
  if (this.network === Network.CUSTOM) throw new Error("Please provide a custom indexer url");
97
116
  return NetworkToIndexerAPI[this.network];
117
+ case AptosApiType.PEPPER:
118
+ if (this.pepper !== undefined) return this.pepper;
119
+ if (this.network === Network.CUSTOM) throw new Error("Please provide a custom pepper service url");
120
+ return NetworkToPepperAPI[this.network];
121
+ case AptosApiType.PROVER:
122
+ if (this.prover !== undefined) return this.prover;
123
+ if (this.network === Network.CUSTOM) throw new Error("Please provide a custom prover service url");
124
+ return NetworkToProverAPI[this.network];
98
125
  default:
99
126
  throw Error(`apiType ${apiType} is not supported`);
100
127
  }
101
128
  }
129
+
130
+ /**
131
+ * Checks if the URL is a known pepper service endpoint
132
+ *
133
+ * @internal
134
+ * */
135
+ isPepperServiceRequest(url: string): boolean {
136
+ return NetworkToPepperAPI[this.network] === url;
137
+ }
138
+
139
+ /**
140
+ * Checks if the URL is a known prover service endpoint
141
+ *
142
+ * @internal
143
+ * */
144
+ isProverServiceRequest(url: string): boolean {
145
+ return NetworkToProverAPI[this.network] === url;
146
+ }
102
147
  }