@aptos-labs/ts-sdk 1.17.0 → 1.18.1

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 (425) hide show
  1. package/dist/common/{accountAddress-ccLvlUQe.d.ts → accountAddress-Lv-GSihU.d.ts} +107 -13
  2. package/dist/common/chunk-BHKSQXUZ.js +2 -0
  3. package/dist/common/chunk-BHKSQXUZ.js.map +1 -0
  4. package/dist/common/cli/index.d.ts +1 -1
  5. package/dist/common/cli/index.js +1 -1
  6. package/dist/common/cli/index.js.map +1 -1
  7. package/dist/common/index.d.ts +808 -117
  8. package/dist/common/index.js +30 -28
  9. package/dist/common/index.js.map +1 -1
  10. package/dist/esm/account/Account.mjs +1 -1
  11. package/dist/esm/account/Ed25519Account.mjs +1 -1
  12. package/dist/esm/account/EphemeralKeyPair.d.mts +85 -0
  13. package/dist/esm/account/EphemeralKeyPair.mjs +2 -0
  14. package/dist/esm/account/KeylessAccount.d.mts +175 -0
  15. package/dist/esm/account/KeylessAccount.mjs +2 -0
  16. package/dist/esm/account/MultiKeyAccount.d.mts +11 -5
  17. package/dist/esm/account/MultiKeyAccount.mjs +1 -1
  18. package/dist/esm/account/SingleKeyAccount.mjs +1 -1
  19. package/dist/esm/account/index.d.mts +6 -0
  20. package/dist/esm/account/index.mjs +1 -1
  21. package/dist/esm/api/account.d.mts +2 -2
  22. package/dist/esm/api/account.mjs +1 -1
  23. package/dist/esm/api/ans.d.mts +2 -2
  24. package/dist/esm/api/ans.mjs +1 -1
  25. package/dist/esm/api/aptos.d.mts +9 -1
  26. package/dist/esm/api/aptos.mjs +1 -1
  27. package/dist/esm/api/aptosConfig.d.mts +20 -0
  28. package/dist/esm/api/aptosConfig.mjs +1 -1
  29. package/dist/esm/api/coin.d.mts +2 -2
  30. package/dist/esm/api/coin.mjs +1 -1
  31. package/dist/esm/api/digitalAsset.d.mts +2 -2
  32. package/dist/esm/api/digitalAsset.mjs +1 -1
  33. package/dist/esm/api/event.mjs +1 -1
  34. package/dist/esm/api/faucet.mjs +1 -1
  35. package/dist/esm/api/fungibleAsset.mjs +1 -1
  36. package/dist/esm/api/general.mjs +1 -1
  37. package/dist/esm/api/index.d.mts +7 -0
  38. package/dist/esm/api/index.mjs +1 -1
  39. package/dist/esm/api/keyless.d.mts +104 -0
  40. package/dist/esm/api/keyless.mjs +2 -0
  41. package/dist/esm/api/keyless.mjs.map +1 -0
  42. package/dist/esm/api/staking.mjs +1 -1
  43. package/dist/esm/api/table.mjs +1 -1
  44. package/dist/esm/api/transaction.mjs +1 -1
  45. package/dist/esm/api/transactionSubmission/build.d.mts +2 -2
  46. package/dist/esm/api/transactionSubmission/build.mjs +1 -1
  47. package/dist/esm/api/transactionSubmission/management.mjs +1 -1
  48. package/dist/esm/api/transactionSubmission/sign.d.mts +2 -2
  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 +2 -2
  52. package/dist/esm/api/transactionSubmission/simulate.mjs +1 -1
  53. package/dist/esm/api/transactionSubmission/submit.d.mts +2 -2
  54. package/dist/esm/api/transactionSubmission/submit.mjs +1 -1
  55. package/dist/esm/api/utils.mjs +1 -1
  56. package/dist/esm/bcs/deserializer.d.mts +32 -0
  57. package/dist/esm/bcs/deserializer.mjs +1 -1
  58. package/dist/esm/bcs/index.mjs +1 -1
  59. package/dist/esm/bcs/serializable/entryFunctionBytes.mjs +1 -1
  60. package/dist/esm/bcs/serializable/fixedBytes.mjs +1 -1
  61. package/dist/esm/bcs/serializable/movePrimitives.mjs +1 -1
  62. package/dist/esm/bcs/serializable/moveStructs.mjs +1 -1
  63. package/dist/esm/bcs/serializer.d.mts +42 -0
  64. package/dist/esm/bcs/serializer.mjs +1 -1
  65. package/dist/esm/{chunk-TQLED4KC.mjs → chunk-2DSPX6BX.mjs} +2 -2
  66. package/dist/esm/chunk-2QWQ6RX5.mjs +2 -0
  67. package/dist/esm/chunk-2QWQ6RX5.mjs.map +1 -0
  68. package/dist/esm/chunk-362JBD4O.mjs +2 -0
  69. package/dist/esm/{chunk-SUAMDMAA.mjs.map → chunk-362JBD4O.mjs.map} +1 -1
  70. package/dist/esm/{chunk-RWXHA4QZ.mjs → chunk-3VUSIKCF.mjs} +2 -2
  71. package/dist/esm/chunk-3ZCQQ3L2.mjs +2 -0
  72. package/dist/esm/chunk-3ZCQQ3L2.mjs.map +1 -0
  73. package/dist/esm/chunk-42SZQH5Z.mjs +2 -0
  74. package/dist/esm/chunk-42SZQH5Z.mjs.map +1 -0
  75. package/dist/esm/{chunk-MCRRHBFQ.mjs → chunk-4EPLOSKY.mjs} +2 -2
  76. package/dist/esm/{chunk-BSVNV6SJ.mjs → chunk-4IBJW3PB.mjs} +2 -2
  77. package/dist/esm/{chunk-J6HKAEKY.mjs → chunk-5X2BJDOB.mjs} +2 -2
  78. package/dist/esm/{chunk-5UKBTF7N.mjs → chunk-5YHI7WOB.mjs} +2 -2
  79. package/dist/esm/{chunk-J5I4OZAS.mjs → chunk-6DYDZSEW.mjs} +2 -2
  80. package/dist/esm/{chunk-J4Z6XR5D.mjs → chunk-6JL2U7JB.mjs} +2 -2
  81. package/dist/esm/{chunk-RNL5TAQT.mjs → chunk-6UDHM6YZ.mjs} +2 -2
  82. package/dist/esm/{chunk-2X7A4HUS.mjs → chunk-6ZQWPHLV.mjs} +2 -2
  83. package/dist/esm/{chunk-4NHWV5AI.mjs → chunk-76OH2Z4Q.mjs} +2 -2
  84. package/dist/esm/{chunk-5EN52MUT.mjs → chunk-77NXCSLY.mjs} +2 -2
  85. package/dist/esm/{chunk-ND6OMSQU.mjs → chunk-7Y45UTRL.mjs} +2 -2
  86. package/dist/esm/chunk-7Z6DYLCA.mjs +1 -0
  87. package/dist/esm/chunk-7Z6DYLCA.mjs.map +1 -0
  88. package/dist/esm/{chunk-T2AGN5YT.mjs → chunk-A2Z7I2EY.mjs} +2 -2
  89. package/dist/esm/{chunk-36QXVFR5.mjs → chunk-A63SMUOU.mjs} +2 -2
  90. package/dist/esm/{chunk-36QXVFR5.mjs.map → chunk-A63SMUOU.mjs.map} +1 -1
  91. package/dist/esm/chunk-AQ4I7VVB.mjs +1 -0
  92. package/dist/esm/chunk-AQ4I7VVB.mjs.map +1 -0
  93. package/dist/esm/{chunk-3XFID2N4.mjs → chunk-AVH5SYTL.mjs} +2 -2
  94. package/dist/esm/{chunk-3N6N3KOS.mjs → chunk-AYKZA676.mjs} +2 -2
  95. package/dist/esm/{chunk-QRS4DGP3.mjs → chunk-BF46IXHH.mjs} +2 -2
  96. package/dist/esm/chunk-BLVYB7Y3.mjs +2 -0
  97. package/dist/esm/chunk-BLVYB7Y3.mjs.map +1 -0
  98. package/dist/esm/{chunk-PF57EOJY.mjs → chunk-BOYYQAB4.mjs} +2 -2
  99. package/dist/esm/{chunk-RPND23OR.mjs → chunk-BS7EVBWX.mjs} +2 -2
  100. package/dist/esm/{chunk-JX75UKJX.mjs → chunk-BVB3QII3.mjs} +2 -2
  101. package/dist/esm/{chunk-KZZWY4YI.mjs → chunk-C5V4EBVP.mjs} +2 -2
  102. package/dist/esm/{chunk-3BNA74V5.mjs → chunk-CZ6TC4GO.mjs} +2 -2
  103. package/dist/esm/{chunk-2HF2XEHO.mjs → chunk-DLDGUTFV.mjs} +2 -2
  104. package/dist/esm/{chunk-YR7JRJ25.mjs → chunk-DPO352QL.mjs} +2 -2
  105. package/dist/esm/{chunk-GM56MMNJ.mjs → chunk-DW2KZREM.mjs} +2 -2
  106. package/dist/esm/chunk-DZXM2MQY.mjs +2 -0
  107. package/dist/esm/chunk-DZXM2MQY.mjs.map +1 -0
  108. package/dist/esm/{chunk-6YV3366Z.mjs → chunk-EAW6AWYD.mjs} +2 -2
  109. package/dist/esm/{chunk-NUK6JT5I.mjs → chunk-EYIJYUN7.mjs} +2 -2
  110. package/dist/esm/{chunk-AF5WNJOP.mjs → chunk-F74FF323.mjs} +2 -2
  111. package/dist/esm/chunk-FM6ALU5B.mjs +2 -0
  112. package/dist/esm/chunk-FM6ALU5B.mjs.map +1 -0
  113. package/dist/esm/{chunk-ISIUQQMV.mjs → chunk-FNFQA7NS.mjs} +2 -2
  114. package/dist/esm/chunk-FTIW5GGG.mjs +2 -0
  115. package/dist/esm/{chunk-BRVWHCP3.mjs.map → chunk-FTIW5GGG.mjs.map} +1 -1
  116. package/dist/esm/{chunk-G2XVNF2T.mjs → chunk-FYB7C42X.mjs} +2 -2
  117. package/dist/esm/chunk-GFRNBBTY.mjs +2 -0
  118. package/dist/esm/chunk-GFRNBBTY.mjs.map +1 -0
  119. package/dist/esm/{chunk-CEHCDA3G.mjs → chunk-H6YNXJNF.mjs} +2 -2
  120. package/dist/esm/{chunk-47IIBESV.mjs → chunk-HCN7YJGB.mjs} +2 -2
  121. package/dist/esm/chunk-HHE63GFW.mjs +2 -0
  122. package/dist/esm/chunk-HHE63GFW.mjs.map +1 -0
  123. package/dist/esm/{chunk-S3EDNXZE.mjs → chunk-HIHKTLLM.mjs} +20 -18
  124. package/dist/esm/chunk-HIHKTLLM.mjs.map +1 -0
  125. package/dist/esm/chunk-IVVWQKCF.mjs +2 -0
  126. package/dist/esm/chunk-IVVWQKCF.mjs.map +1 -0
  127. package/dist/esm/{chunk-53INTTOI.mjs → chunk-JPDT6E3B.mjs} +2 -2
  128. package/dist/esm/{chunk-J4VNDDKJ.mjs → chunk-JSWBLHMX.mjs} +2 -2
  129. package/dist/esm/{chunk-73QJNN7O.mjs → chunk-K4CTCBLY.mjs} +2 -2
  130. package/dist/esm/{chunk-AQAH67IV.mjs → chunk-K7DBDI2I.mjs} +2 -2
  131. package/dist/esm/{chunk-PIVZMT5D.mjs → chunk-L22R3OIW.mjs} +2 -2
  132. package/dist/esm/{chunk-4GWNWSZP.mjs → chunk-LVSOUCFD.mjs} +2 -2
  133. package/dist/esm/{chunk-AHW3SKT7.mjs → chunk-M3JHXCGV.mjs} +2 -2
  134. package/dist/esm/{chunk-ZRKXS7XG.mjs → chunk-MHZ64FIW.mjs} +2 -2
  135. package/dist/esm/{chunk-UGPALAPN.mjs → chunk-MLDQ2TY2.mjs} +2 -2
  136. package/dist/esm/chunk-MQGW234H.mjs +2 -0
  137. package/dist/esm/chunk-MQGW234H.mjs.map +1 -0
  138. package/dist/esm/chunk-NCUBVHUW.mjs +2 -0
  139. package/dist/esm/chunk-NCUBVHUW.mjs.map +1 -0
  140. package/dist/esm/chunk-NMD45OTM.mjs +2 -0
  141. package/dist/esm/chunk-NMD45OTM.mjs.map +1 -0
  142. package/dist/esm/{chunk-R5VVKRJ2.mjs → chunk-NNQYSSLH.mjs} +2 -2
  143. package/dist/esm/{chunk-CZOD4SCZ.mjs → chunk-NSQLZBCA.mjs} +2 -2
  144. package/dist/esm/{chunk-KAGLWBIJ.mjs → chunk-OPGMT27G.mjs} +2 -2
  145. package/dist/esm/{chunk-N3U47Y6Y.mjs → chunk-P5V7OZNN.mjs} +2 -2
  146. package/dist/esm/{chunk-337U6Q6K.mjs → chunk-PTA3VHTQ.mjs} +2 -2
  147. package/dist/esm/chunk-Q6LFIZ3L.mjs +2 -0
  148. package/dist/esm/chunk-Q6LFIZ3L.mjs.map +1 -0
  149. package/dist/esm/chunk-QAMV4L3K.mjs +2 -0
  150. package/dist/esm/chunk-QAMV4L3K.mjs.map +1 -0
  151. package/dist/esm/{chunk-BEVXJJJF.mjs → chunk-QL2QFRKV.mjs} +2 -2
  152. package/dist/esm/chunk-QVWBJJRF.mjs +2 -0
  153. package/dist/esm/chunk-QVWBJJRF.mjs.map +1 -0
  154. package/dist/esm/{chunk-U3YYSIIT.mjs → chunk-RFA7BIDN.mjs} +2 -2
  155. package/dist/esm/{chunk-G56GPLTB.mjs → chunk-RJ4RKVVQ.mjs} +2 -2
  156. package/dist/esm/{chunk-BBVIJO6X.mjs → chunk-S32JHML7.mjs} +2 -2
  157. package/dist/esm/chunk-SCHZ67F3.mjs +2 -0
  158. package/dist/esm/chunk-SCHZ67F3.mjs.map +1 -0
  159. package/dist/esm/chunk-SFUTXSDK.mjs +2 -0
  160. package/dist/esm/chunk-SFUTXSDK.mjs.map +1 -0
  161. package/dist/esm/{chunk-3SPIFLBZ.mjs → chunk-SLFAROVZ.mjs} +2 -2
  162. package/dist/esm/{chunk-CT2BQQTZ.mjs → chunk-TG2LLWVU.mjs} +2 -2
  163. package/dist/esm/{chunk-35EWRSDK.mjs → chunk-TY4IEDJD.mjs} +2 -2
  164. package/dist/esm/chunk-U4A56FN2.mjs +2 -0
  165. package/dist/esm/{chunk-7UBKXR37.mjs.map → chunk-U4A56FN2.mjs.map} +1 -1
  166. package/dist/esm/chunk-U6X2FYNI.mjs +2 -0
  167. package/dist/esm/chunk-U6X2FYNI.mjs.map +1 -0
  168. package/dist/esm/{chunk-G2UPF44Z.mjs → chunk-UAZUO75M.mjs} +2 -2
  169. package/dist/esm/{chunk-HLC4HAYY.mjs → chunk-UGVNOSD3.mjs} +2 -2
  170. package/dist/esm/{chunk-LGNSPATO.mjs → chunk-VCMP3MXN.mjs} +2 -2
  171. package/dist/esm/{chunk-PZ4SAXY7.mjs → chunk-VTKPSYKA.mjs} +2 -2
  172. package/dist/esm/chunk-VTKPSYKA.mjs.map +1 -0
  173. package/dist/esm/chunk-WQHW4WQN.mjs +2 -0
  174. package/dist/esm/chunk-WQHW4WQN.mjs.map +1 -0
  175. package/dist/esm/chunk-WV5AD4IE.mjs +2 -0
  176. package/dist/esm/{chunk-CE65OKFI.mjs → chunk-XWVU4G57.mjs} +2 -2
  177. package/dist/esm/{chunk-ZHCSSCC5.mjs → chunk-XYLM277Z.mjs} +2 -2
  178. package/dist/esm/chunk-YE5B2S5L.mjs +2 -0
  179. package/dist/esm/chunk-YE5B2S5L.mjs.map +1 -0
  180. package/dist/esm/{chunk-FAFJKSVZ.mjs → chunk-YMUCYX3B.mjs} +2 -2
  181. package/dist/esm/{chunk-SRDIYE3M.mjs → chunk-YPHH6CAO.mjs} +2 -2
  182. package/dist/esm/chunk-YTQVMLFD.mjs +2 -0
  183. package/dist/esm/chunk-YTQVMLFD.mjs.map +1 -0
  184. package/dist/esm/{chunk-B7X6PSE7.mjs → chunk-YUNDX5I7.mjs} +2 -2
  185. package/dist/esm/chunk-Z4YHE4A5.mjs +2 -0
  186. package/dist/esm/{chunk-4BJA3QUQ.mjs.map → chunk-Z4YHE4A5.mjs.map} +1 -1
  187. package/dist/esm/cli/index.mjs +1 -1
  188. package/dist/esm/cli/localNode.mjs +1 -1
  189. package/dist/esm/cli/move.mjs +1 -1
  190. package/dist/esm/client/core.mjs +1 -1
  191. package/dist/esm/client/get.d.mts +8 -1
  192. package/dist/esm/client/get.mjs +1 -1
  193. package/dist/esm/client/index.d.mts +2 -2
  194. package/dist/esm/client/index.mjs +1 -1
  195. package/dist/esm/client/post.d.mts +9 -1
  196. package/dist/esm/client/post.mjs +1 -1
  197. package/dist/esm/core/account/index.mjs +1 -1
  198. package/dist/esm/core/account/utils/address.mjs +1 -1
  199. package/dist/esm/core/account/utils/index.mjs +1 -1
  200. package/dist/esm/core/accountAddress.mjs +1 -1
  201. package/dist/esm/core/authenticationKey.mjs +1 -1
  202. package/dist/esm/core/crypto/ed25519.mjs +1 -1
  203. package/dist/esm/core/crypto/ephemeral.d.mts +73 -0
  204. package/dist/esm/core/crypto/ephemeral.mjs +2 -0
  205. package/dist/esm/core/crypto/ephemeral.mjs.map +1 -0
  206. package/dist/esm/core/crypto/index.d.mts +6 -0
  207. package/dist/esm/core/crypto/index.mjs +1 -1
  208. package/dist/esm/core/crypto/keyless.d.mts +321 -0
  209. package/dist/esm/core/crypto/keyless.mjs +2 -0
  210. package/dist/esm/core/crypto/keyless.mjs.map +1 -0
  211. package/dist/esm/core/crypto/multiEd25519.mjs +1 -1
  212. package/dist/esm/core/crypto/multiKey.mjs +1 -1
  213. package/dist/esm/core/crypto/poseidon.d.mts +19 -0
  214. package/dist/esm/core/crypto/poseidon.mjs +2 -0
  215. package/dist/esm/core/crypto/poseidon.mjs.map +1 -0
  216. package/dist/esm/core/crypto/proof.d.mts +21 -0
  217. package/dist/esm/core/crypto/proof.mjs +2 -0
  218. package/dist/esm/core/crypto/proof.mjs.map +1 -0
  219. package/dist/esm/core/crypto/publicKey.mjs +1 -1
  220. package/dist/esm/core/crypto/secp256k1.mjs +1 -1
  221. package/dist/esm/core/crypto/signature.mjs +1 -1
  222. package/dist/esm/core/crypto/singleKey.mjs +1 -1
  223. package/dist/esm/core/index.d.mts +6 -0
  224. package/dist/esm/core/index.mjs +1 -1
  225. package/dist/esm/index.d.mts +11 -4
  226. package/dist/esm/index.mjs +1 -1
  227. package/dist/esm/internal/account.mjs +1 -1
  228. package/dist/esm/internal/ans.mjs +1 -1
  229. package/dist/esm/internal/coin.mjs +1 -1
  230. package/dist/esm/internal/digitalAsset.mjs +1 -1
  231. package/dist/esm/internal/event.mjs +1 -1
  232. package/dist/esm/internal/faucet.mjs +1 -1
  233. package/dist/esm/internal/fungibleAsset.mjs +1 -1
  234. package/dist/esm/internal/general.mjs +1 -1
  235. package/dist/esm/internal/keyless.d.mts +72 -0
  236. package/dist/esm/internal/keyless.mjs +2 -0
  237. package/dist/esm/internal/keyless.mjs.map +1 -0
  238. package/dist/esm/internal/staking.mjs +1 -1
  239. package/dist/esm/internal/table.mjs +1 -1
  240. package/dist/esm/internal/transaction.mjs +1 -1
  241. package/dist/esm/internal/transactionSubmission.mjs +1 -1
  242. package/dist/esm/internal/view.mjs +1 -1
  243. package/dist/esm/transactions/authenticator/account.mjs +1 -1
  244. package/dist/esm/transactions/authenticator/index.mjs +1 -1
  245. package/dist/esm/transactions/authenticator/transaction.mjs +1 -1
  246. package/dist/esm/transactions/index.mjs +1 -1
  247. package/dist/esm/transactions/instances/chainId.mjs +1 -1
  248. package/dist/esm/transactions/instances/identifier.mjs +1 -1
  249. package/dist/esm/transactions/instances/index.mjs +1 -1
  250. package/dist/esm/transactions/instances/moduleId.mjs +1 -1
  251. package/dist/esm/transactions/instances/multiAgentTransaction.mjs +1 -1
  252. package/dist/esm/transactions/instances/rawTransaction.mjs +1 -1
  253. package/dist/esm/transactions/instances/rotationProofChallenge.mjs +1 -1
  254. package/dist/esm/transactions/instances/signedTransaction.mjs +1 -1
  255. package/dist/esm/transactions/instances/simpleTransaction.mjs +1 -1
  256. package/dist/esm/transactions/instances/transactionPayload.mjs +1 -1
  257. package/dist/esm/transactions/management/accountSequenceNumber.mjs +1 -1
  258. package/dist/esm/transactions/management/index.mjs +1 -1
  259. package/dist/esm/transactions/management/transactionWorker.mjs +1 -1
  260. package/dist/esm/transactions/transactionBuilder/helpers.mjs +1 -1
  261. package/dist/esm/transactions/transactionBuilder/index.mjs +1 -1
  262. package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +1 -1
  263. package/dist/esm/transactions/transactionBuilder/signingMessage.d.mts +3 -0
  264. package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +1 -1
  265. package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +1 -1
  266. package/dist/esm/transactions/typeTag/index.mjs +1 -1
  267. package/dist/esm/transactions/typeTag/parser.mjs +1 -1
  268. package/dist/esm/types/generated/operations.d.mts +14 -12
  269. package/dist/esm/types/generated/queries.d.mts +4 -4
  270. package/dist/esm/types/generated/queries.mjs +1 -1
  271. package/dist/esm/types/generated/types.d.mts +20 -2
  272. package/dist/esm/types/generated/types.mjs +1 -1
  273. package/dist/esm/types/generated/types.mjs.map +1 -1
  274. package/dist/esm/types/index.d.mts +21 -5
  275. package/dist/esm/types/index.mjs +1 -1
  276. package/dist/esm/types/keyless.d.mts +51 -0
  277. package/dist/esm/types/keyless.mjs +1 -0
  278. package/dist/esm/types/keyless.mjs.map +1 -0
  279. package/dist/esm/utils/apiEndpoints.d.mts +3 -1
  280. package/dist/esm/utils/apiEndpoints.mjs +1 -1
  281. package/dist/esm/utils/const.d.mts +3 -1
  282. package/dist/esm/utils/const.mjs +1 -1
  283. package/dist/esm/utils/helpers.d.mts +4 -1
  284. package/dist/esm/utils/helpers.mjs +1 -1
  285. package/dist/esm/utils/index.d.mts +1 -1
  286. package/dist/esm/utils/index.mjs +1 -1
  287. package/dist/esm/utils/normalizeBundle.mjs +1 -1
  288. package/dist/esm/version.d.mts +1 -1
  289. package/dist/esm/version.mjs +1 -1
  290. package/package.json +9 -3
  291. package/src/account/EphemeralKeyPair.ts +150 -0
  292. package/src/account/KeylessAccount.ts +370 -0
  293. package/src/account/MultiKeyAccount.ts +12 -0
  294. package/src/account/index.ts +2 -0
  295. package/src/api/aptos.ts +6 -0
  296. package/src/api/aptosConfig.ts +46 -1
  297. package/src/api/keyless.ts +78 -0
  298. package/src/bcs/deserializer.ts +40 -0
  299. package/src/bcs/serializer.ts +57 -0
  300. package/src/cli/move.ts +4 -7
  301. package/src/client/core.ts +4 -0
  302. package/src/client/get.ts +12 -0
  303. package/src/client/post.ts +18 -0
  304. package/src/core/crypto/ephemeral.ts +138 -0
  305. package/src/core/crypto/index.ts +2 -0
  306. package/src/core/crypto/keyless.ts +679 -0
  307. package/src/core/crypto/poseidon.ts +144 -0
  308. package/src/core/crypto/proof.ts +16 -0
  309. package/src/core/crypto/singleKey.ts +11 -0
  310. package/src/internal/keyless.ts +129 -0
  311. package/src/internal/queries/getFungibleAssetMetadata.graphql +2 -0
  312. package/src/internal/transactionSubmission.ts +6 -1
  313. package/src/transactions/management/accountSequenceNumber.ts +5 -8
  314. package/src/transactions/transactionBuilder/signingMessage.ts +3 -0
  315. package/src/transactions/transactionBuilder/transactionBuilder.ts +16 -1
  316. package/src/types/generated/operations.ts +14 -12
  317. package/src/types/generated/queries.ts +30 -3
  318. package/src/types/generated/types.ts +20 -2
  319. package/src/types/index.ts +24 -2
  320. package/src/types/keyless.ts +42 -0
  321. package/src/utils/apiEndpoints.ts +16 -0
  322. package/src/utils/const.ts +2 -0
  323. package/src/utils/helpers.ts +22 -0
  324. package/src/version.ts +1 -1
  325. package/dist/common/chunk-KSEUZTKY.js +0 -2
  326. package/dist/common/chunk-KSEUZTKY.js.map +0 -1
  327. package/dist/esm/chunk-3JPVQHOR.mjs +0 -2
  328. package/dist/esm/chunk-3JPVQHOR.mjs.map +0 -1
  329. package/dist/esm/chunk-4BJA3QUQ.mjs +0 -2
  330. package/dist/esm/chunk-6IFMQ5AS.mjs +0 -2
  331. package/dist/esm/chunk-6IFMQ5AS.mjs.map +0 -1
  332. package/dist/esm/chunk-746MU2AB.mjs +0 -2
  333. package/dist/esm/chunk-746MU2AB.mjs.map +0 -1
  334. package/dist/esm/chunk-7UBKXR37.mjs +0 -2
  335. package/dist/esm/chunk-BRVWHCP3.mjs +0 -2
  336. package/dist/esm/chunk-CYNQRMO5.mjs +0 -2
  337. package/dist/esm/chunk-CYNQRMO5.mjs.map +0 -1
  338. package/dist/esm/chunk-D2LNQMKD.mjs +0 -2
  339. package/dist/esm/chunk-D2LNQMKD.mjs.map +0 -1
  340. package/dist/esm/chunk-DLAIJ2UM.mjs +0 -2
  341. package/dist/esm/chunk-DLAIJ2UM.mjs.map +0 -1
  342. package/dist/esm/chunk-HYCGMFC2.mjs +0 -2
  343. package/dist/esm/chunk-HYCGMFC2.mjs.map +0 -1
  344. package/dist/esm/chunk-IENCDVPF.mjs +0 -2
  345. package/dist/esm/chunk-IENCDVPF.mjs.map +0 -1
  346. package/dist/esm/chunk-MM5VMKFE.mjs +0 -2
  347. package/dist/esm/chunk-MM5VMKFE.mjs.map +0 -1
  348. package/dist/esm/chunk-OWW6SIDP.mjs +0 -2
  349. package/dist/esm/chunk-OWW6SIDP.mjs.map +0 -1
  350. package/dist/esm/chunk-PZ4SAXY7.mjs.map +0 -1
  351. package/dist/esm/chunk-ROXFCLDT.mjs +0 -2
  352. package/dist/esm/chunk-RTSWVT2Q.mjs +0 -2
  353. package/dist/esm/chunk-RTSWVT2Q.mjs.map +0 -1
  354. package/dist/esm/chunk-S3EDNXZE.mjs.map +0 -1
  355. package/dist/esm/chunk-SUAMDMAA.mjs +0 -2
  356. package/dist/esm/chunk-UO3NZ5AH.mjs +0 -1
  357. package/dist/esm/chunk-UTKM2WYS.mjs +0 -2
  358. package/dist/esm/chunk-UTKM2WYS.mjs.map +0 -1
  359. package/dist/esm/chunk-UVSRX4SV.mjs +0 -1
  360. package/dist/esm/chunk-W33BZ6IQ.mjs +0 -2
  361. package/dist/esm/chunk-W33BZ6IQ.mjs.map +0 -1
  362. /package/dist/esm/{chunk-UO3NZ5AH.mjs.map → account/EphemeralKeyPair.mjs.map} +0 -0
  363. /package/dist/esm/{chunk-UVSRX4SV.mjs.map → account/KeylessAccount.mjs.map} +0 -0
  364. /package/dist/esm/{chunk-TQLED4KC.mjs.map → chunk-2DSPX6BX.mjs.map} +0 -0
  365. /package/dist/esm/{chunk-RWXHA4QZ.mjs.map → chunk-3VUSIKCF.mjs.map} +0 -0
  366. /package/dist/esm/{chunk-MCRRHBFQ.mjs.map → chunk-4EPLOSKY.mjs.map} +0 -0
  367. /package/dist/esm/{chunk-BSVNV6SJ.mjs.map → chunk-4IBJW3PB.mjs.map} +0 -0
  368. /package/dist/esm/{chunk-J6HKAEKY.mjs.map → chunk-5X2BJDOB.mjs.map} +0 -0
  369. /package/dist/esm/{chunk-5UKBTF7N.mjs.map → chunk-5YHI7WOB.mjs.map} +0 -0
  370. /package/dist/esm/{chunk-J5I4OZAS.mjs.map → chunk-6DYDZSEW.mjs.map} +0 -0
  371. /package/dist/esm/{chunk-J4Z6XR5D.mjs.map → chunk-6JL2U7JB.mjs.map} +0 -0
  372. /package/dist/esm/{chunk-RNL5TAQT.mjs.map → chunk-6UDHM6YZ.mjs.map} +0 -0
  373. /package/dist/esm/{chunk-2X7A4HUS.mjs.map → chunk-6ZQWPHLV.mjs.map} +0 -0
  374. /package/dist/esm/{chunk-4NHWV5AI.mjs.map → chunk-76OH2Z4Q.mjs.map} +0 -0
  375. /package/dist/esm/{chunk-5EN52MUT.mjs.map → chunk-77NXCSLY.mjs.map} +0 -0
  376. /package/dist/esm/{chunk-ND6OMSQU.mjs.map → chunk-7Y45UTRL.mjs.map} +0 -0
  377. /package/dist/esm/{chunk-T2AGN5YT.mjs.map → chunk-A2Z7I2EY.mjs.map} +0 -0
  378. /package/dist/esm/{chunk-3XFID2N4.mjs.map → chunk-AVH5SYTL.mjs.map} +0 -0
  379. /package/dist/esm/{chunk-3N6N3KOS.mjs.map → chunk-AYKZA676.mjs.map} +0 -0
  380. /package/dist/esm/{chunk-QRS4DGP3.mjs.map → chunk-BF46IXHH.mjs.map} +0 -0
  381. /package/dist/esm/{chunk-PF57EOJY.mjs.map → chunk-BOYYQAB4.mjs.map} +0 -0
  382. /package/dist/esm/{chunk-RPND23OR.mjs.map → chunk-BS7EVBWX.mjs.map} +0 -0
  383. /package/dist/esm/{chunk-JX75UKJX.mjs.map → chunk-BVB3QII3.mjs.map} +0 -0
  384. /package/dist/esm/{chunk-KZZWY4YI.mjs.map → chunk-C5V4EBVP.mjs.map} +0 -0
  385. /package/dist/esm/{chunk-3BNA74V5.mjs.map → chunk-CZ6TC4GO.mjs.map} +0 -0
  386. /package/dist/esm/{chunk-2HF2XEHO.mjs.map → chunk-DLDGUTFV.mjs.map} +0 -0
  387. /package/dist/esm/{chunk-YR7JRJ25.mjs.map → chunk-DPO352QL.mjs.map} +0 -0
  388. /package/dist/esm/{chunk-GM56MMNJ.mjs.map → chunk-DW2KZREM.mjs.map} +0 -0
  389. /package/dist/esm/{chunk-6YV3366Z.mjs.map → chunk-EAW6AWYD.mjs.map} +0 -0
  390. /package/dist/esm/{chunk-NUK6JT5I.mjs.map → chunk-EYIJYUN7.mjs.map} +0 -0
  391. /package/dist/esm/{chunk-AF5WNJOP.mjs.map → chunk-F74FF323.mjs.map} +0 -0
  392. /package/dist/esm/{chunk-ISIUQQMV.mjs.map → chunk-FNFQA7NS.mjs.map} +0 -0
  393. /package/dist/esm/{chunk-G2XVNF2T.mjs.map → chunk-FYB7C42X.mjs.map} +0 -0
  394. /package/dist/esm/{chunk-CEHCDA3G.mjs.map → chunk-H6YNXJNF.mjs.map} +0 -0
  395. /package/dist/esm/{chunk-47IIBESV.mjs.map → chunk-HCN7YJGB.mjs.map} +0 -0
  396. /package/dist/esm/{chunk-53INTTOI.mjs.map → chunk-JPDT6E3B.mjs.map} +0 -0
  397. /package/dist/esm/{chunk-J4VNDDKJ.mjs.map → chunk-JSWBLHMX.mjs.map} +0 -0
  398. /package/dist/esm/{chunk-73QJNN7O.mjs.map → chunk-K4CTCBLY.mjs.map} +0 -0
  399. /package/dist/esm/{chunk-AQAH67IV.mjs.map → chunk-K7DBDI2I.mjs.map} +0 -0
  400. /package/dist/esm/{chunk-PIVZMT5D.mjs.map → chunk-L22R3OIW.mjs.map} +0 -0
  401. /package/dist/esm/{chunk-4GWNWSZP.mjs.map → chunk-LVSOUCFD.mjs.map} +0 -0
  402. /package/dist/esm/{chunk-AHW3SKT7.mjs.map → chunk-M3JHXCGV.mjs.map} +0 -0
  403. /package/dist/esm/{chunk-ZRKXS7XG.mjs.map → chunk-MHZ64FIW.mjs.map} +0 -0
  404. /package/dist/esm/{chunk-UGPALAPN.mjs.map → chunk-MLDQ2TY2.mjs.map} +0 -0
  405. /package/dist/esm/{chunk-R5VVKRJ2.mjs.map → chunk-NNQYSSLH.mjs.map} +0 -0
  406. /package/dist/esm/{chunk-CZOD4SCZ.mjs.map → chunk-NSQLZBCA.mjs.map} +0 -0
  407. /package/dist/esm/{chunk-KAGLWBIJ.mjs.map → chunk-OPGMT27G.mjs.map} +0 -0
  408. /package/dist/esm/{chunk-N3U47Y6Y.mjs.map → chunk-P5V7OZNN.mjs.map} +0 -0
  409. /package/dist/esm/{chunk-337U6Q6K.mjs.map → chunk-PTA3VHTQ.mjs.map} +0 -0
  410. /package/dist/esm/{chunk-BEVXJJJF.mjs.map → chunk-QL2QFRKV.mjs.map} +0 -0
  411. /package/dist/esm/{chunk-U3YYSIIT.mjs.map → chunk-RFA7BIDN.mjs.map} +0 -0
  412. /package/dist/esm/{chunk-G56GPLTB.mjs.map → chunk-RJ4RKVVQ.mjs.map} +0 -0
  413. /package/dist/esm/{chunk-BBVIJO6X.mjs.map → chunk-S32JHML7.mjs.map} +0 -0
  414. /package/dist/esm/{chunk-3SPIFLBZ.mjs.map → chunk-SLFAROVZ.mjs.map} +0 -0
  415. /package/dist/esm/{chunk-CT2BQQTZ.mjs.map → chunk-TG2LLWVU.mjs.map} +0 -0
  416. /package/dist/esm/{chunk-35EWRSDK.mjs.map → chunk-TY4IEDJD.mjs.map} +0 -0
  417. /package/dist/esm/{chunk-G2UPF44Z.mjs.map → chunk-UAZUO75M.mjs.map} +0 -0
  418. /package/dist/esm/{chunk-HLC4HAYY.mjs.map → chunk-UGVNOSD3.mjs.map} +0 -0
  419. /package/dist/esm/{chunk-LGNSPATO.mjs.map → chunk-VCMP3MXN.mjs.map} +0 -0
  420. /package/dist/esm/{chunk-ROXFCLDT.mjs.map → chunk-WV5AD4IE.mjs.map} +0 -0
  421. /package/dist/esm/{chunk-CE65OKFI.mjs.map → chunk-XWVU4G57.mjs.map} +0 -0
  422. /package/dist/esm/{chunk-ZHCSSCC5.mjs.map → chunk-XYLM277Z.mjs.map} +0 -0
  423. /package/dist/esm/{chunk-FAFJKSVZ.mjs.map → chunk-YMUCYX3B.mjs.map} +0 -0
  424. /package/dist/esm/{chunk-SRDIYE3M.mjs.map → chunk-YPHH6CAO.mjs.map} +0 -0
  425. /package/dist/esm/{chunk-B7X6PSE7.mjs.map → chunk-YUNDX5I7.mjs.map} +0 -0
@@ -0,0 +1,679 @@
1
+ // Copyright © Aptos Foundation
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { JwtPayload, jwtDecode } from "jwt-decode";
5
+ import { AccountPublicKey, PublicKey } from "./publicKey";
6
+ import { Signature } from "./signature";
7
+ import { Deserializer, Serializable, Serializer } from "../../bcs";
8
+ import { Hex } from "../hex";
9
+ import {
10
+ HexInput,
11
+ EphemeralCertificateVariant,
12
+ AnyPublicKeyVariant,
13
+ SigningScheme,
14
+ ZkpVariant,
15
+ LedgerVersionArg,
16
+ MoveResource,
17
+ } from "../../types";
18
+ import { EphemeralPublicKey, EphemeralSignature } from "./ephemeral";
19
+ import { bigIntToBytesLE, bytesToBigIntLE, hashStrToField, poseidonHash } from "./poseidon";
20
+ import { AuthenticationKey } from "../authenticationKey";
21
+ import { Proof } from "./proof";
22
+ import { Ed25519PublicKey, Ed25519Signature } from "./ed25519";
23
+ import { Groth16VerificationKeyResponse, KeylessConfigurationResponse } from "../../types/keyless";
24
+ import { AptosConfig } from "../../api/aptosConfig";
25
+ import { getAptosFullNode } from "../../client";
26
+ import { memoizeAsync } from "../../utils/memoize";
27
+ import { AccountAddress } from "../accountAddress";
28
+
29
+ export const EPK_HORIZON_SECS = 10000000;
30
+ export const MAX_AUD_VAL_BYTES = 120;
31
+ export const MAX_UID_KEY_BYTES = 30;
32
+ export const MAX_UID_VAL_BYTES = 330;
33
+ export const MAX_ISS_VAL_BYTES = 120;
34
+ export const MAX_EXTRA_FIELD_BYTES = 350;
35
+ export const MAX_JWT_HEADER_B64_BYTES = 300;
36
+ export const MAX_COMMITED_EPK_BYTES = 93;
37
+
38
+ /**
39
+ * Represents the KeylessPublicKey public key
40
+ *
41
+ * KeylessPublicKey authentication key is represented in the SDK as `AnyPublicKey`.
42
+ */
43
+ export class KeylessPublicKey extends AccountPublicKey {
44
+ /**
45
+ * The number of bytes that `idCommitment` should be
46
+ */
47
+ static readonly ID_COMMITMENT_LENGTH: number = 32;
48
+
49
+ /**
50
+ * The value of the 'iss' claim on the JWT which identifies the OIDC provider.
51
+ */
52
+ readonly iss: string;
53
+
54
+ /**
55
+ * A value representing a cryptographic commitment to a user identity.
56
+ *
57
+ * It is calculated from the aud, uidKey, uidVal, pepper.
58
+ */
59
+ readonly idCommitment: Uint8Array;
60
+
61
+ constructor(iss: string, idCommitment: HexInput) {
62
+ super();
63
+ const idcBytes = Hex.fromHexInput(idCommitment).toUint8Array();
64
+ if (idcBytes.length !== KeylessPublicKey.ID_COMMITMENT_LENGTH) {
65
+ throw new Error(`Id Commitment length in bytes should be ${KeylessPublicKey.ID_COMMITMENT_LENGTH}`);
66
+ }
67
+ this.iss = iss;
68
+ this.idCommitment = idcBytes;
69
+ }
70
+
71
+ /**
72
+ * Get the authentication key for the keyless public key
73
+ *
74
+ * @returns AuthenticationKey
75
+ */
76
+ authKey(): AuthenticationKey {
77
+ const serializer = new Serializer();
78
+ serializer.serializeU32AsUleb128(AnyPublicKeyVariant.Keyless);
79
+ serializer.serializeFixedBytes(this.bcsToBytes());
80
+ return AuthenticationKey.fromSchemeAndBytes({
81
+ scheme: SigningScheme.SingleKey,
82
+ input: serializer.toUint8Array(),
83
+ });
84
+ }
85
+
86
+ /**
87
+ * Get the public key in bytes (Uint8Array).
88
+ *
89
+ * @returns Uint8Array representation of the public key
90
+ */
91
+ toUint8Array(): Uint8Array {
92
+ return this.bcsToBytes();
93
+ }
94
+
95
+ /**
96
+ * Get the public key as a hex string with the 0x prefix.
97
+ *
98
+ * @returns string representation of the public key
99
+ */
100
+ toString(): string {
101
+ return Hex.fromHexInput(this.toUint8Array()).toString();
102
+ }
103
+
104
+ /**
105
+ * Verifies a signed data with a public key
106
+ *
107
+ * @param args.message message
108
+ * @param args.signature The signature
109
+ * @returns true if the signature is valid
110
+ */
111
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, class-methods-use-this
112
+ verifySignature(args: { message: HexInput; signature: KeylessSignature }): boolean {
113
+ throw new Error("Not yet implemented");
114
+ }
115
+
116
+ serialize(serializer: Serializer): void {
117
+ serializer.serializeStr(this.iss);
118
+ serializer.serializeBytes(this.idCommitment);
119
+ }
120
+
121
+ static deserialize(deserializer: Deserializer): KeylessPublicKey {
122
+ const iss = deserializer.deserializeStr();
123
+ const addressSeed = deserializer.deserializeBytes();
124
+ return new KeylessPublicKey(iss, addressSeed);
125
+ }
126
+
127
+ static load(deserializer: Deserializer): KeylessPublicKey {
128
+ const iss = deserializer.deserializeStr();
129
+ const addressSeed = deserializer.deserializeBytes();
130
+ return new KeylessPublicKey(iss, addressSeed);
131
+ }
132
+
133
+ static isPublicKey(publicKey: PublicKey): publicKey is KeylessPublicKey {
134
+ return publicKey instanceof KeylessPublicKey;
135
+ }
136
+
137
+ /**
138
+ * Creates a KeylessPublicKey from the JWT components plus pepper
139
+ *
140
+ * @param args.iss the iss of the identity
141
+ * @param args.uidKey the key to use to get the uidVal in the JWT token
142
+ * @param args.uidVal the value of the uidKey in the JWT token
143
+ * @param args.aud the client ID of the application
144
+ * @param args.pepper The pepper used to maintain privacy of the account
145
+ * @returns KeylessPublicKey
146
+ */
147
+ static create(args: {
148
+ iss: string;
149
+ uidKey: string;
150
+ uidVal: string;
151
+ aud: string;
152
+ pepper: HexInput;
153
+ }): KeylessPublicKey {
154
+ computeIdCommitment(args);
155
+ return new KeylessPublicKey(args.iss, computeIdCommitment(args));
156
+ }
157
+
158
+ static fromJwtAndPepper(args: { jwt: string; pepper: HexInput; uidKey?: string }): KeylessPublicKey {
159
+ const { jwt, pepper, uidKey = "sub" } = args;
160
+ const jwtPayload = jwtDecode<JwtPayload & { [key: string]: string }>(jwt);
161
+ const iss = jwtPayload.iss!;
162
+ if (typeof jwtPayload.aud !== "string") {
163
+ throw new Error("aud was not found or an array of values");
164
+ }
165
+ const aud = jwtPayload.aud!;
166
+ const uidVal = jwtPayload[uidKey];
167
+ return KeylessPublicKey.create({ iss, uidKey, uidVal, aud, pepper });
168
+ }
169
+ }
170
+
171
+ function computeIdCommitment(args: { uidKey: string; uidVal: string; aud: string; pepper: HexInput }): Uint8Array {
172
+ const { uidKey, uidVal, aud, pepper } = args;
173
+
174
+ const fields = [
175
+ bytesToBigIntLE(Hex.fromHexInput(pepper).toUint8Array()),
176
+ hashStrToField(aud, MAX_AUD_VAL_BYTES),
177
+ hashStrToField(uidVal, MAX_UID_VAL_BYTES),
178
+ hashStrToField(uidKey, MAX_UID_KEY_BYTES),
179
+ ];
180
+
181
+ return bigIntToBytesLE(poseidonHash(fields), KeylessPublicKey.ID_COMMITMENT_LENGTH);
182
+ }
183
+
184
+ /**
185
+ * A signature of a message signed via Keyless Accounnt that uses proofs or the jwt token to authenticate.
186
+ */
187
+ export class KeylessSignature extends Signature {
188
+ /**
189
+ * The inner signature ZeroKnowledgeSigniature or OpenIdSignature
190
+ */
191
+ readonly ephemeralCertificate: EphemeralCertificate;
192
+
193
+ /**
194
+ * The jwt header in the token used to create the proof/signature. In json string representation.
195
+ */
196
+ readonly jwtHeader: string;
197
+
198
+ /**
199
+ * The expiry timestamp in seconds of the EphemeralKeyPair used to sign
200
+ */
201
+ readonly expiryDateSecs: number;
202
+
203
+ /**
204
+ * The ephemeral public key used to verify the signature
205
+ */
206
+ readonly ephemeralPublicKey: EphemeralPublicKey;
207
+
208
+ /**
209
+ * The signature resulting from signing with the private key of the EphemeralKeyPair
210
+ */
211
+ readonly ephemeralSignature: EphemeralSignature;
212
+
213
+ constructor(args: {
214
+ jwtHeader: string;
215
+ ephemeralCertificate: EphemeralCertificate;
216
+ expiryDateSecs: number;
217
+ ephemeralPublicKey: EphemeralPublicKey;
218
+ ephemeralSignature: EphemeralSignature;
219
+ }) {
220
+ super();
221
+ const { jwtHeader, ephemeralCertificate, expiryDateSecs, ephemeralPublicKey, ephemeralSignature } = args;
222
+ this.jwtHeader = jwtHeader;
223
+ this.ephemeralCertificate = ephemeralCertificate;
224
+ this.expiryDateSecs = expiryDateSecs;
225
+ this.ephemeralPublicKey = ephemeralPublicKey;
226
+ this.ephemeralSignature = ephemeralSignature;
227
+ }
228
+
229
+ /**
230
+ * Get the signature in bytes (Uint8Array).
231
+ *
232
+ * @returns Uint8Array representation of the signature
233
+ */
234
+ toUint8Array(): Uint8Array {
235
+ return this.bcsToBytes();
236
+ }
237
+
238
+ serialize(serializer: Serializer): void {
239
+ this.ephemeralCertificate.serialize(serializer);
240
+ serializer.serializeStr(this.jwtHeader);
241
+ serializer.serializeU64(this.expiryDateSecs);
242
+ this.ephemeralPublicKey.serialize(serializer);
243
+ this.ephemeralSignature.serialize(serializer);
244
+ }
245
+
246
+ static deserialize(deserializer: Deserializer): KeylessSignature {
247
+ const ephemeralCertificate = EphemeralCertificate.deserialize(deserializer);
248
+ const jwtHeader = deserializer.deserializeStr();
249
+ const expiryDateSecs = deserializer.deserializeU64();
250
+ const ephemeralPublicKey = EphemeralPublicKey.deserialize(deserializer);
251
+ const ephemeralSignature = EphemeralSignature.deserialize(deserializer);
252
+ return new KeylessSignature({
253
+ jwtHeader,
254
+ expiryDateSecs: Number(expiryDateSecs),
255
+ ephemeralCertificate,
256
+ ephemeralPublicKey,
257
+ ephemeralSignature,
258
+ });
259
+ }
260
+
261
+ static getSimulationSignature(): KeylessSignature {
262
+ return new KeylessSignature({
263
+ jwtHeader: "{}",
264
+ ephemeralCertificate: new EphemeralCertificate(
265
+ new ZeroKnowledgeSig({
266
+ proof: new ZkProof(
267
+ new Groth16Zkp({ a: new Uint8Array(32), b: new Uint8Array(64), c: new Uint8Array(32) }),
268
+ ZkpVariant.Groth16,
269
+ ),
270
+ expHorizonSecs: 0,
271
+ }),
272
+ EphemeralCertificateVariant.ZkProof,
273
+ ),
274
+ expiryDateSecs: 0,
275
+ ephemeralPublicKey: new EphemeralPublicKey(new Ed25519PublicKey(new Uint8Array(32))),
276
+ ephemeralSignature: new EphemeralSignature(new Ed25519Signature(new Uint8Array(64))),
277
+ });
278
+ }
279
+
280
+ static isSignature(signature: Signature): signature is KeylessSignature {
281
+ return signature instanceof KeylessSignature;
282
+ }
283
+ }
284
+
285
+ /**
286
+ * A container for a signature that is a ZeroKnowledgeSig. Can be expanded to support OpenIdSignature.
287
+ */
288
+ export class EphemeralCertificate extends Signature {
289
+ public readonly signature: Signature;
290
+
291
+ /**
292
+ * Index of the underlying enum variant
293
+ */
294
+ private readonly variant: EphemeralCertificateVariant;
295
+
296
+ constructor(signature: Signature, variant: EphemeralCertificateVariant) {
297
+ super();
298
+ this.signature = signature;
299
+ this.variant = variant;
300
+ }
301
+
302
+ /**
303
+ * Get the public key in bytes (Uint8Array).
304
+ *
305
+ * @returns Uint8Array representation of the public key
306
+ */
307
+ toUint8Array(): Uint8Array {
308
+ return this.signature.toUint8Array();
309
+ }
310
+
311
+ serialize(serializer: Serializer): void {
312
+ serializer.serializeU32AsUleb128(this.variant);
313
+ this.signature.serialize(serializer);
314
+ }
315
+
316
+ static deserialize(deserializer: Deserializer): EphemeralCertificate {
317
+ const variant = deserializer.deserializeUleb128AsU32();
318
+ switch (variant) {
319
+ case EphemeralCertificateVariant.ZkProof:
320
+ return new EphemeralCertificate(ZeroKnowledgeSig.deserialize(deserializer), variant);
321
+ default:
322
+ throw new Error(`Unknown variant index for EphemeralCertificate: ${variant}`);
323
+ }
324
+ }
325
+ }
326
+
327
+ class G1Bytes extends Serializable {
328
+ data: Uint8Array;
329
+
330
+ constructor(data: HexInput) {
331
+ super();
332
+ this.data = Hex.fromHexInput(data).toUint8Array();
333
+ if (this.data.length !== 32) {
334
+ throw new Error("Input needs to be 32 bytes");
335
+ }
336
+ }
337
+
338
+ serialize(serializer: Serializer): void {
339
+ serializer.serializeFixedBytes(this.data);
340
+ }
341
+
342
+ static deserialize(deserializer: Deserializer): G1Bytes {
343
+ const bytes = deserializer.deserializeFixedBytes(32);
344
+ return new G1Bytes(bytes);
345
+ }
346
+ }
347
+
348
+ class G2Bytes extends Serializable {
349
+ data: Uint8Array;
350
+
351
+ constructor(data: HexInput) {
352
+ super();
353
+ this.data = Hex.fromHexInput(data).toUint8Array();
354
+ if (this.data.length !== 64) {
355
+ throw new Error("Input needs to be 64 bytes");
356
+ }
357
+ }
358
+
359
+ serialize(serializer: Serializer): void {
360
+ serializer.serializeFixedBytes(this.data);
361
+ }
362
+
363
+ static deserialize(deserializer: Deserializer): G2Bytes {
364
+ const bytes = deserializer.deserializeFixedBytes(64);
365
+ return new G2Bytes(bytes);
366
+ }
367
+ }
368
+
369
+ /**
370
+ * A representation of a Groth16 proof. The points are the compressed serialization of affine reprentation of the proof.
371
+ */
372
+ export class Groth16Zkp extends Proof {
373
+ /**
374
+ * The bytes of G1 proof point a
375
+ */
376
+ a: G1Bytes;
377
+
378
+ /**
379
+ * The bytes of G2 proof point b
380
+ */
381
+ b: G2Bytes;
382
+
383
+ /**
384
+ * The bytes of G1 proof point c
385
+ */
386
+ c: G1Bytes;
387
+
388
+ constructor(args: { a: HexInput; b: HexInput; c: HexInput }) {
389
+ super();
390
+ const { a, b, c } = args;
391
+ this.a = new G1Bytes(a);
392
+ this.b = new G2Bytes(b);
393
+ this.c = new G1Bytes(c);
394
+ }
395
+
396
+ serialize(serializer: Serializer): void {
397
+ this.a.serialize(serializer);
398
+ this.b.serialize(serializer);
399
+ this.c.serialize(serializer);
400
+ }
401
+
402
+ static deserialize(deserializer: Deserializer): Groth16Zkp {
403
+ const a = G1Bytes.deserialize(deserializer).bcsToBytes();
404
+ const b = G2Bytes.deserialize(deserializer).bcsToBytes();
405
+ const c = G1Bytes.deserialize(deserializer).bcsToBytes();
406
+ return new Groth16Zkp({ a, b, c });
407
+ }
408
+ }
409
+
410
+ /**
411
+ * A container for a different zero knowledge proof types
412
+ */
413
+ export class ZkProof extends Serializable {
414
+ public readonly proof: Proof;
415
+
416
+ /**
417
+ * Index of the underlying enum variant
418
+ */
419
+ private readonly variant: ZkpVariant;
420
+
421
+ constructor(proof: Proof, variant: ZkpVariant) {
422
+ super();
423
+ this.proof = proof;
424
+ this.variant = variant;
425
+ }
426
+
427
+ serialize(serializer: Serializer): void {
428
+ serializer.serializeU32AsUleb128(this.variant);
429
+ this.proof.serialize(serializer);
430
+ }
431
+
432
+ static deserialize(deserializer: Deserializer): ZkProof {
433
+ const variant = deserializer.deserializeUleb128AsU32();
434
+ switch (variant) {
435
+ case ZkpVariant.Groth16:
436
+ return new ZkProof(Groth16Zkp.deserialize(deserializer), variant);
437
+ default:
438
+ throw new Error(`Unknown variant index for ZkProof: ${variant}`);
439
+ }
440
+ }
441
+ }
442
+
443
+ /**
444
+ * The signature representation of a proof
445
+ */
446
+ export class ZeroKnowledgeSig extends Signature {
447
+ /**
448
+ * The proof
449
+ */
450
+ readonly proof: ZkProof;
451
+
452
+ /**
453
+ * The max lifespan of the proof
454
+ */
455
+ readonly expHorizonSecs: number;
456
+
457
+ /**
458
+ * A key value pair on the JWT token that can be specified on the signature which would reveal the value on chain.
459
+ * Can be used to assert identity or other attributes.
460
+ */
461
+ readonly extraField?: string;
462
+
463
+ /**
464
+ * The 'aud' value of the recovery service which is set when recovering an account.
465
+ */
466
+ readonly overrideAudVal?: string;
467
+
468
+ /**
469
+ * The training wheels signature
470
+ */
471
+ readonly trainingWheelsSignature?: EphemeralSignature;
472
+
473
+ constructor(args: {
474
+ proof: ZkProof;
475
+ expHorizonSecs: number;
476
+ extraField?: string;
477
+ overrideAudVal?: string;
478
+ trainingWheelsSignature?: EphemeralSignature;
479
+ }) {
480
+ super();
481
+ const { proof, expHorizonSecs, trainingWheelsSignature, extraField, overrideAudVal } = args;
482
+ this.proof = proof;
483
+ this.expHorizonSecs = expHorizonSecs;
484
+ this.trainingWheelsSignature = trainingWheelsSignature;
485
+ this.extraField = extraField;
486
+ this.overrideAudVal = overrideAudVal;
487
+ }
488
+
489
+ /**
490
+ * Get the signature in bytes (Uint8Array).
491
+ *
492
+ * @returns Uint8Array representation of the signature
493
+ */
494
+ toUint8Array(): Uint8Array {
495
+ return this.bcsToBytes();
496
+ }
497
+
498
+ /**
499
+ * Return a ZeroKnowledgeSig object from its bcs serialization in bytes.
500
+ *
501
+ * @returns ZeroKnowledgeSig
502
+ */
503
+ static fromBytes(bytes: Uint8Array): ZeroKnowledgeSig {
504
+ return ZeroKnowledgeSig.deserialize(new Deserializer(bytes));
505
+ }
506
+
507
+ serialize(serializer: Serializer): void {
508
+ this.proof.serialize(serializer);
509
+ serializer.serializeU64(this.expHorizonSecs);
510
+ serializer.serializeOptionStr(this.extraField);
511
+ serializer.serializeOptionStr(this.overrideAudVal);
512
+ serializer.serializeOption(this.trainingWheelsSignature);
513
+ }
514
+
515
+ static deserialize(deserializer: Deserializer): ZeroKnowledgeSig {
516
+ const proof = ZkProof.deserialize(deserializer);
517
+ const expHorizonSecs = Number(deserializer.deserializeU64());
518
+ const extraField = deserializer.deserializeOptionStr();
519
+ const overrideAudVal = deserializer.deserializeOptionStr();
520
+ const trainingWheelsSignature = deserializer.deserializeOption(EphemeralSignature);
521
+ return new ZeroKnowledgeSig({ proof, expHorizonSecs, trainingWheelsSignature, extraField, overrideAudVal });
522
+ }
523
+ }
524
+
525
+ /**
526
+ * A class which represents the on-chain configuration for how Keyless accounts work
527
+ */
528
+ export class KeylessConfiguration {
529
+ /**
530
+ * The verification key used to verify Groth16 proofs on chain
531
+ */
532
+ readonly verficationKey: Groth16VerificationKey;
533
+
534
+ /**
535
+ * The maximum lifespan of an ephemeral key pair. This is configured on chain.
536
+ */
537
+ readonly maxExpHorizonSecs: number;
538
+
539
+ constructor(verficationKey: Groth16VerificationKey, maxExpHorizonSecs: number) {
540
+ this.verficationKey = verficationKey;
541
+ this.maxExpHorizonSecs = maxExpHorizonSecs;
542
+ }
543
+
544
+ static create(res: Groth16VerificationKeyResponse, maxExpHorizonSecs: number): KeylessConfiguration {
545
+ return new KeylessConfiguration(
546
+ new Groth16VerificationKey({
547
+ alphaG1: res.alpha_g1,
548
+ betaG2: res.beta_g2,
549
+ deltaG2: res.delta_g2,
550
+ gammaAbcG1: res.gamma_abc_g1,
551
+ gammaG2: res.gamma_g2,
552
+ }),
553
+ maxExpHorizonSecs,
554
+ );
555
+ }
556
+ }
557
+
558
+ /**
559
+ * A representation of the verification key stored on chain used to verify Groth16 proofs
560
+ */
561
+ class Groth16VerificationKey {
562
+ // The docstrings below are borrowed from ark-groth16
563
+
564
+ /**
565
+ * The `alpha * G`, where `G` is the generator of G1
566
+ */
567
+ readonly alphaG1: G1Bytes;
568
+
569
+ /**
570
+ * The `alpha * H`, where `H` is the generator of G2
571
+ */
572
+ readonly betaG2: G2Bytes;
573
+
574
+ /**
575
+ * The `delta * H`, where `H` is the generator of G2
576
+ */
577
+ readonly deltaG2: G2Bytes;
578
+
579
+ /**
580
+ * The `gamma^{-1} * (beta * a_i + alpha * b_i + c_i) * H`, where H is the generator of G1
581
+ */
582
+ readonly gammaAbcG1: G1Bytes[];
583
+
584
+ /**
585
+ * The `gamma * H`, where `H` is the generator of G2
586
+ */
587
+ readonly gammaG2: G2Bytes;
588
+
589
+ constructor(args: {
590
+ alphaG1: HexInput;
591
+ betaG2: HexInput;
592
+ deltaG2: HexInput;
593
+ gammaAbcG1: [HexInput, HexInput];
594
+ gammaG2: HexInput;
595
+ }) {
596
+ const { alphaG1, betaG2, deltaG2, gammaAbcG1, gammaG2 } = args;
597
+ this.alphaG1 = new G1Bytes(alphaG1);
598
+ this.betaG2 = new G2Bytes(betaG2);
599
+ this.deltaG2 = new G2Bytes(deltaG2);
600
+ this.gammaAbcG1 = [new G1Bytes(gammaAbcG1[0]), new G1Bytes(gammaAbcG1[1])];
601
+ this.gammaG2 = new G2Bytes(gammaG2);
602
+ }
603
+
604
+ static fromGroth16VerificationKeyResponse(res: Groth16VerificationKeyResponse): Groth16VerificationKey {
605
+ return new Groth16VerificationKey({
606
+ alphaG1: res.alpha_g1,
607
+ betaG2: res.beta_g2,
608
+ deltaG2: res.delta_g2,
609
+ gammaAbcG1: res.gamma_abc_g1,
610
+ gammaG2: res.gamma_g2,
611
+ });
612
+ }
613
+ }
614
+
615
+ /**
616
+ * Gets the parameters of how Keyless Accounts are configured on chain including the verifying key and the max expiry horizon
617
+ *
618
+ * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version
619
+ * @returns KeylessConfiguration
620
+ */
621
+ export async function getKeylessConfig(args: {
622
+ aptosConfig: AptosConfig;
623
+ options?: LedgerVersionArg;
624
+ }): Promise<KeylessConfiguration> {
625
+ const { aptosConfig } = args;
626
+ return memoizeAsync(
627
+ async () => {
628
+ const config = await getKeylessConfigurationResource(args);
629
+ const vk = await getGroth16VerificationKeyResource(args);
630
+ return KeylessConfiguration.create(vk, Number(config.max_exp_horizon_secs));
631
+ },
632
+ `keyless-configuration-${aptosConfig.network}`,
633
+ 1000 * 60 * 5, // 5 minutes
634
+ )();
635
+ }
636
+
637
+ /**
638
+ * Gets the KeylessConfiguration set on chain
639
+ *
640
+ * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version
641
+ * @returns KeylessConfigurationResponse
642
+ */
643
+ async function getKeylessConfigurationResource(args: {
644
+ aptosConfig: AptosConfig;
645
+ options?: LedgerVersionArg;
646
+ }): Promise<KeylessConfigurationResponse> {
647
+ const { aptosConfig, options } = args;
648
+ const resourceType = "0x1::keyless_account::Configuration";
649
+ const { data } = await getAptosFullNode<{}, MoveResource<KeylessConfigurationResponse>>({
650
+ aptosConfig,
651
+ originMethod: "getKeylessConfigurationResource",
652
+ path: `accounts/${AccountAddress.from("0x1").toString()}/resource/${resourceType}`,
653
+ params: { ledger_version: options?.ledgerVersion },
654
+ });
655
+
656
+ return data.data;
657
+ }
658
+
659
+ /**
660
+ * Gets the Groth16VerificationKey set on chain
661
+ *
662
+ * @param args.options.ledgerVersion The ledger version to query, if not provided it will get the latest version
663
+ * @returns Groth16VerificationKeyResponse
664
+ */
665
+ async function getGroth16VerificationKeyResource(args: {
666
+ aptosConfig: AptosConfig;
667
+ options?: LedgerVersionArg;
668
+ }): Promise<Groth16VerificationKeyResponse> {
669
+ const { aptosConfig, options } = args;
670
+ const resourceType = "0x1::keyless_account::Groth16VerificationKey";
671
+ const { data } = await getAptosFullNode<{}, MoveResource<Groth16VerificationKeyResponse>>({
672
+ aptosConfig,
673
+ originMethod: "getGroth16VerificationKeyResource",
674
+ path: `accounts/${AccountAddress.from("0x1").toString()}/resource/${resourceType}`,
675
+ params: { ledger_version: options?.ledgerVersion },
676
+ });
677
+
678
+ return data.data;
679
+ }