@aptos-labs/ts-sdk 2.0.1 → 3.0.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 (619) hide show
  1. package/dist/common/account-CEmLe1wW.d.ts +7363 -0
  2. package/dist/common/chunk-5JIJXVJ5.js +4 -0
  3. package/dist/common/chunk-5JIJXVJ5.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 +5756 -9761
  8. package/dist/common/index.js +34 -32
  9. package/dist/common/index.js.map +1 -1
  10. package/dist/esm/{Ed25519Account-D9XrCLfE.d.mts → Ed25519Account-Ccxj1zdx.d.mts} +1 -9
  11. package/dist/esm/account/AbstractKeylessAccount.d.mts +4 -31
  12. package/dist/esm/account/AbstractKeylessAccount.mjs +1 -1
  13. package/dist/esm/account/AbstractedAccount.d.mts +5 -32
  14. package/dist/esm/account/AbstractedAccount.mjs +1 -1
  15. package/dist/esm/account/Account.d.mts +3 -30
  16. package/dist/esm/account/Account.mjs +1 -1
  17. package/dist/esm/account/AccountUtils.d.mts +4 -31
  18. package/dist/esm/account/AccountUtils.mjs +1 -1
  19. package/dist/esm/account/DerivableAbstractedAccount.d.mts +5 -32
  20. package/dist/esm/account/DerivableAbstractedAccount.mjs +1 -1
  21. package/dist/esm/account/Ed25519Account.d.mts +3 -30
  22. package/dist/esm/account/Ed25519Account.mjs +1 -1
  23. package/dist/esm/account/EphemeralKeyPair.d.mts +2 -11
  24. package/dist/esm/account/EphemeralKeyPair.mjs +1 -1
  25. package/dist/esm/account/FederatedKeylessAccount.d.mts +4 -31
  26. package/dist/esm/account/FederatedKeylessAccount.mjs +1 -1
  27. package/dist/esm/account/KeylessAccount.d.mts +4 -31
  28. package/dist/esm/account/KeylessAccount.mjs +1 -1
  29. package/dist/esm/account/MultiEd25519Account.d.mts +3 -30
  30. package/dist/esm/account/MultiEd25519Account.mjs +1 -1
  31. package/dist/esm/account/MultiKeyAccount.d.mts +5 -32
  32. package/dist/esm/account/MultiKeyAccount.mjs +1 -1
  33. package/dist/esm/account/SingleKeyAccount.d.mts +3 -30
  34. package/dist/esm/account/SingleKeyAccount.mjs +1 -1
  35. package/dist/esm/account/index.d.mts +4 -31
  36. package/dist/esm/account/index.mjs +1 -1
  37. package/dist/esm/account/utils.d.mts +2 -6
  38. package/dist/esm/account/utils.mjs +1 -1
  39. package/dist/esm/account-9G6tix5T.d.mts +6591 -0
  40. package/dist/esm/api/account/abstraction.d.mts +2 -29
  41. package/dist/esm/api/account/abstraction.mjs +1 -1
  42. package/dist/esm/api/account.d.mts +3 -30
  43. package/dist/esm/api/account.mjs +1 -1
  44. package/dist/esm/api/ans.d.mts +3 -30
  45. package/dist/esm/api/ans.mjs +1 -1
  46. package/dist/esm/api/aptos.d.mts +7 -33
  47. package/dist/esm/api/aptos.mjs +1 -1
  48. package/dist/esm/api/aptosConfig.d.mts +4 -187
  49. package/dist/esm/api/aptosConfig.mjs +1 -1
  50. package/dist/esm/api/coin.d.mts +2 -29
  51. package/dist/esm/api/coin.mjs +1 -1
  52. package/dist/esm/api/digitalAsset.d.mts +3 -30
  53. package/dist/esm/api/digitalAsset.mjs +1 -1
  54. package/dist/esm/api/event.d.mts +2 -8
  55. package/dist/esm/api/event.mjs +1 -1
  56. package/dist/esm/api/faucet.d.mts +2 -8
  57. package/dist/esm/api/faucet.mjs +1 -1
  58. package/dist/esm/api/fungibleAsset.d.mts +2 -29
  59. package/dist/esm/api/fungibleAsset.mjs +1 -1
  60. package/dist/esm/api/general.d.mts +2 -29
  61. package/dist/esm/api/general.mjs +1 -1
  62. package/dist/esm/api/index.d.mts +5 -32
  63. package/dist/esm/api/index.mjs +1 -1
  64. package/dist/esm/api/keyless.d.mts +4 -31
  65. package/dist/esm/api/keyless.mjs +1 -1
  66. package/dist/esm/api/object.d.mts +2 -8
  67. package/dist/esm/api/object.mjs +1 -1
  68. package/dist/esm/api/staking.d.mts +2 -8
  69. package/dist/esm/api/staking.mjs +1 -1
  70. package/dist/esm/api/table.d.mts +2 -2
  71. package/dist/esm/api/table.mjs +1 -1
  72. package/dist/esm/api/transaction.d.mts +6 -33
  73. package/dist/esm/api/transaction.mjs +1 -1
  74. package/dist/esm/api/transactionSubmission/build.d.mts +2 -29
  75. package/dist/esm/api/transactionSubmission/build.mjs +1 -1
  76. package/dist/esm/api/transactionSubmission/management.d.mts +2 -29
  77. package/dist/esm/api/transactionSubmission/management.mjs +1 -1
  78. package/dist/esm/api/transactionSubmission/sign.d.mts +3 -30
  79. package/dist/esm/api/transactionSubmission/sign.mjs +1 -1
  80. package/dist/esm/api/transactionSubmission/simulate.d.mts +2 -29
  81. package/dist/esm/api/transactionSubmission/simulate.mjs +1 -1
  82. package/dist/esm/api/transactionSubmission/submit.d.mts +4 -31
  83. package/dist/esm/api/transactionSubmission/submit.mjs +1 -1
  84. package/dist/esm/api/utils.d.mts +2 -2
  85. package/dist/esm/api/utils.mjs +1 -1
  86. package/dist/esm/bcs/consts.d.mts +3 -1
  87. package/dist/esm/bcs/deserializer.d.mts +3 -304
  88. package/dist/esm/bcs/index.d.mts +2 -8
  89. package/dist/esm/bcs/index.mjs +1 -1
  90. package/dist/esm/bcs/serializable/entryFunctionBytes.d.mts +3 -7
  91. package/dist/esm/bcs/serializable/fixedBytes.d.mts +3 -90
  92. package/dist/esm/bcs/serializable/movePrimitives.d.mts +2 -167
  93. package/dist/esm/bcs/serializable/movePrimitives.mjs +1 -1
  94. package/dist/esm/bcs/serializable/moveStructs.d.mts +2 -430
  95. package/dist/esm/bcs/serializable/moveStructs.mjs +1 -1
  96. package/dist/esm/bcs/serializer.d.mts +3 -325
  97. package/dist/esm/{chunk-V74WPKSY.mjs → chunk-2XQKGWHQ.mjs} +2 -2
  98. package/dist/esm/chunk-4H2RMR7D.mjs +2 -0
  99. package/dist/esm/chunk-4H2RMR7D.mjs.map +1 -0
  100. package/dist/esm/{chunk-UOP7GBXB.mjs → chunk-5ZRPV4YI.mjs} +2 -2
  101. package/dist/esm/{chunk-V2QSMVJ5.mjs → chunk-7T62PEFI.mjs} +2 -2
  102. package/dist/esm/{chunk-U7HD6PQV.mjs → chunk-FSP4QM2T.mjs} +2 -2
  103. package/dist/esm/chunk-GMDBBVDH.mjs +6 -0
  104. package/dist/esm/chunk-GMDBBVDH.mjs.map +1 -0
  105. package/dist/esm/chunk-HMUIOIBG.mjs +2 -0
  106. package/dist/esm/{chunk-VEGW6HP5.mjs.map → chunk-HMUIOIBG.mjs.map} +1 -1
  107. package/dist/esm/{chunk-GBNAG7KK.mjs → chunk-IDHVW7HS.mjs} +2 -2
  108. package/dist/esm/{chunk-57J5YBMT.mjs → chunk-PFXXFUBL.mjs} +2 -2
  109. package/dist/esm/{chunk-KRBZ54CY.mjs → chunk-R7NQJWDG.mjs} +2 -2
  110. package/dist/esm/{chunk-AMAPBD4D.mjs → chunk-SAMHWS73.mjs} +2 -2
  111. package/dist/esm/chunk-UIVX6WSC.mjs +2 -0
  112. package/dist/esm/chunk-UIVX6WSC.mjs.map +1 -0
  113. package/dist/esm/{chunk-HETYL3WN.mjs → chunk-WOTQ7227.mjs} +2 -2
  114. package/dist/esm/{chunk-CZYH3G7E.mjs → chunk-YHGGNYYL.mjs} +2 -2
  115. package/dist/esm/cli/index.d.mts +3 -7
  116. package/dist/esm/cli/index.mjs +1 -1
  117. package/dist/esm/cli/localNode.mjs +1 -1
  118. package/dist/esm/cli/move.d.mts +3 -7
  119. package/dist/esm/client/core.d.mts +3 -3
  120. package/dist/esm/client/core.mjs +1 -1
  121. package/dist/esm/client/get.d.mts +3 -3
  122. package/dist/esm/client/get.mjs +1 -1
  123. package/dist/esm/client/index.d.mts +2 -2
  124. package/dist/esm/client/index.mjs +1 -1
  125. package/dist/esm/client/post.d.mts +3 -3
  126. package/dist/esm/client/post.mjs +1 -1
  127. package/dist/esm/core/account/index.d.mts +3 -7
  128. package/dist/esm/core/account/index.mjs +1 -1
  129. package/dist/esm/core/account/utils/address.d.mts +3 -7
  130. package/dist/esm/core/account/utils/address.mjs +1 -1
  131. package/dist/esm/core/account/utils/index.d.mts +3 -7
  132. package/dist/esm/core/account/utils/index.mjs +1 -1
  133. package/dist/esm/core/accountAddress.d.mts +3 -329
  134. package/dist/esm/core/accountAddress.mjs +1 -1
  135. package/dist/esm/core/authenticationKey.d.mts +2 -10
  136. package/dist/esm/core/authenticationKey.mjs +1 -1
  137. package/dist/esm/core/crypto/abstraction.d.mts +2 -10
  138. package/dist/esm/core/crypto/abstraction.mjs +1 -1
  139. package/dist/esm/core/crypto/deserializationUtils.d.mts +2 -10
  140. package/dist/esm/core/crypto/deserializationUtils.mjs +1 -1
  141. package/dist/esm/core/crypto/ed25519.d.mts +2 -301
  142. package/dist/esm/core/crypto/ed25519.mjs +1 -1
  143. package/dist/esm/core/crypto/ephemeral.d.mts +2 -10
  144. package/dist/esm/core/crypto/ephemeral.mjs +1 -1
  145. package/dist/esm/core/crypto/federatedKeyless.d.mts +4 -12
  146. package/dist/esm/core/crypto/federatedKeyless.mjs +1 -1
  147. package/dist/esm/core/crypto/index.d.mts +3 -17
  148. package/dist/esm/core/crypto/index.mjs +1 -1
  149. package/dist/esm/core/crypto/keyless.d.mts +3 -11
  150. package/dist/esm/core/crypto/keyless.mjs +1 -1
  151. package/dist/esm/core/crypto/multiEd25519.d.mts +2 -228
  152. package/dist/esm/core/crypto/multiEd25519.mjs +1 -1
  153. package/dist/esm/core/crypto/multiKey.d.mts +2 -254
  154. package/dist/esm/core/crypto/multiKey.mjs +1 -1
  155. package/dist/esm/core/crypto/privateKey.d.mts +2 -71
  156. package/dist/esm/core/crypto/privateKey.mjs +1 -1
  157. package/dist/esm/core/crypto/proof.d.mts +3 -4
  158. package/dist/esm/core/crypto/proof.mjs +1 -1
  159. package/dist/esm/core/crypto/publicKey.d.mts +2 -10
  160. package/dist/esm/core/crypto/publicKey.mjs +1 -1
  161. package/dist/esm/core/crypto/secp256k1.d.mts +2 -274
  162. package/dist/esm/core/crypto/secp256k1.mjs +1 -1
  163. package/dist/esm/core/crypto/signature.d.mts +3 -31
  164. package/dist/esm/core/crypto/signature.mjs +1 -1
  165. package/dist/esm/core/crypto/singleKey.d.mts +2 -182
  166. package/dist/esm/core/crypto/singleKey.mjs +1 -1
  167. package/dist/esm/core/crypto/utils.d.mts +3 -1
  168. package/dist/esm/core/hex.d.mts +3 -156
  169. package/dist/esm/core/index.d.mts +2 -16
  170. package/dist/esm/core/index.mjs +1 -1
  171. package/dist/esm/errors/index.d.mts +2 -1
  172. package/dist/esm/errors/index.mjs +1 -1
  173. package/dist/esm/{federatedKeyless-DAYXjY2Y.d.mts → federatedKeyless-CVKW5pnz.d.mts} +1 -7
  174. package/dist/esm/index.d.mts +4 -31
  175. package/dist/esm/index.mjs +1 -1
  176. package/dist/esm/internal/abstraction.d.mts +2 -29
  177. package/dist/esm/internal/abstraction.mjs +1 -1
  178. package/dist/esm/internal/account.d.mts +3 -30
  179. package/dist/esm/internal/account.mjs +1 -1
  180. package/dist/esm/internal/ans.d.mts +3 -30
  181. package/dist/esm/internal/ans.mjs +1 -1
  182. package/dist/esm/internal/coin.d.mts +3 -30
  183. package/dist/esm/internal/coin.mjs +1 -1
  184. package/dist/esm/internal/digitalAsset.d.mts +3 -30
  185. package/dist/esm/internal/digitalAsset.mjs +1 -1
  186. package/dist/esm/internal/event.d.mts +2 -8
  187. package/dist/esm/internal/event.mjs +1 -1
  188. package/dist/esm/internal/faucet.d.mts +3 -9
  189. package/dist/esm/internal/faucet.mjs +1 -1
  190. package/dist/esm/internal/fungibleAsset.d.mts +3 -30
  191. package/dist/esm/internal/fungibleAsset.mjs +1 -1
  192. package/dist/esm/internal/general.d.mts +2 -2
  193. package/dist/esm/internal/general.mjs +1 -1
  194. package/dist/esm/internal/keyless.d.mts +5 -32
  195. package/dist/esm/internal/keyless.mjs +1 -1
  196. package/dist/esm/internal/object.d.mts +2 -8
  197. package/dist/esm/internal/object.mjs +1 -1
  198. package/dist/esm/internal/staking.d.mts +2 -8
  199. package/dist/esm/internal/staking.mjs +1 -1
  200. package/dist/esm/internal/table.d.mts +2 -2
  201. package/dist/esm/internal/table.mjs +1 -1
  202. package/dist/esm/internal/transaction.d.mts +3 -3
  203. package/dist/esm/internal/transaction.mjs +1 -1
  204. package/dist/esm/internal/transactionSubmission.d.mts +6 -33
  205. package/dist/esm/internal/transactionSubmission.mjs +1 -1
  206. package/dist/esm/internal/utils/index.d.mts +2 -8
  207. package/dist/esm/internal/utils/index.mjs +1 -1
  208. package/dist/esm/internal/utils/utils.d.mts +2 -8
  209. package/dist/esm/internal/utils/utils.mjs +1 -1
  210. package/dist/esm/internal/view.d.mts +1 -28
  211. package/dist/esm/internal/view.mjs +1 -1
  212. package/dist/esm/transactions/authenticator/account.d.mts +2 -179
  213. package/dist/esm/transactions/authenticator/account.mjs +1 -1
  214. package/dist/esm/transactions/authenticator/index.d.mts +2 -17
  215. package/dist/esm/transactions/authenticator/index.mjs +1 -1
  216. package/dist/esm/transactions/authenticator/transaction.d.mts +2 -17
  217. package/dist/esm/transactions/authenticator/transaction.mjs +1 -1
  218. package/dist/esm/transactions/index.d.mts +3 -30
  219. package/dist/esm/transactions/index.mjs +1 -1
  220. package/dist/esm/transactions/instances/chainId.d.mts +3 -44
  221. package/dist/esm/transactions/instances/identifier.d.mts +2 -44
  222. package/dist/esm/transactions/instances/index.d.mts +2 -27
  223. package/dist/esm/transactions/instances/index.mjs +1 -1
  224. package/dist/esm/transactions/instances/moduleId.d.mts +3 -57
  225. package/dist/esm/transactions/instances/moduleId.mjs +1 -1
  226. package/dist/esm/transactions/instances/multiAgentTransaction.d.mts +2 -60
  227. package/dist/esm/transactions/instances/multiAgentTransaction.mjs +1 -1
  228. package/dist/esm/transactions/instances/rawTransaction.d.mts +2 -150
  229. package/dist/esm/transactions/instances/rawTransaction.mjs +1 -1
  230. package/dist/esm/transactions/instances/rotationProofChallenge.d.mts +2 -12
  231. package/dist/esm/transactions/instances/rotationProofChallenge.mjs +1 -1
  232. package/dist/esm/transactions/instances/signedTransaction.d.mts +2 -23
  233. package/dist/esm/transactions/instances/signedTransaction.mjs +1 -1
  234. package/dist/esm/transactions/instances/simpleTransaction.d.mts +2 -59
  235. package/dist/esm/transactions/instances/simpleTransaction.mjs +1 -1
  236. package/dist/esm/transactions/instances/transactionArgument.d.mts +2 -74
  237. package/dist/esm/transactions/instances/transactionPayload.d.mts +2 -300
  238. package/dist/esm/transactions/instances/transactionPayload.mjs +1 -1
  239. package/dist/esm/transactions/management/accountSequenceNumber.d.mts +2 -29
  240. package/dist/esm/transactions/management/accountSequenceNumber.mjs +1 -1
  241. package/dist/esm/transactions/management/index.d.mts +2 -29
  242. package/dist/esm/transactions/management/index.mjs +1 -1
  243. package/dist/esm/transactions/management/transactionWorker.d.mts +2 -29
  244. package/dist/esm/transactions/management/transactionWorker.mjs +1 -1
  245. package/dist/esm/transactions/transactionBuilder/helpers.d.mts +3 -30
  246. package/dist/esm/transactions/transactionBuilder/helpers.mjs +1 -1
  247. package/dist/esm/transactions/transactionBuilder/index.d.mts +2 -29
  248. package/dist/esm/transactions/transactionBuilder/index.mjs +1 -1
  249. package/dist/esm/transactions/transactionBuilder/remoteAbi.d.mts +2 -29
  250. package/dist/esm/transactions/transactionBuilder/remoteAbi.mjs +1 -1
  251. package/dist/esm/transactions/transactionBuilder/signingMessage.d.mts +1 -28
  252. package/dist/esm/transactions/transactionBuilder/signingMessage.mjs +1 -1
  253. package/dist/esm/transactions/transactionBuilder/transactionBuilder.d.mts +3 -29
  254. package/dist/esm/transactions/transactionBuilder/transactionBuilder.mjs +1 -1
  255. package/dist/esm/transactions/typeTag/index.d.mts +2 -462
  256. package/dist/esm/transactions/typeTag/index.mjs +1 -1
  257. package/dist/esm/transactions/typeTag/parser.d.mts +2 -8
  258. package/dist/esm/transactions/typeTag/parser.mjs +1 -1
  259. package/dist/esm/transactions/types.d.mts +3 -399
  260. package/dist/esm/types/index.d.mts +3 -1
  261. package/dist/esm/types/index.mjs +1 -1
  262. package/dist/esm/types/types.d.mts +5 -1298
  263. package/dist/esm/types/types.mjs +1 -1
  264. package/dist/esm/utils/helpers.d.mts +2 -6
  265. package/dist/esm/utils/helpers.mjs +1 -1
  266. package/dist/esm/utils/index.d.mts +1 -6
  267. package/dist/esm/utils/index.mjs +1 -1
  268. package/dist/esm/utils/normalizeBundle.d.mts +2 -4
  269. package/dist/esm/utils/normalizeBundle.mjs +1 -1
  270. package/dist/esm/version.d.mts +1 -1
  271. package/dist/esm/version.mjs +1 -1
  272. package/package.json +18 -19
  273. package/src/api/aptos.ts +6 -2
  274. package/src/api/aptosConfig.ts +73 -2
  275. package/src/api/transaction.ts +9 -6
  276. package/src/api/transactionSubmission/build.ts +5 -1
  277. package/src/api/transactionSubmission/submit.ts +16 -12
  278. package/src/core/crypto/multiKey.ts +14 -1
  279. package/src/internal/transactionSubmission.ts +20 -10
  280. package/src/transactions/instances/transactionPayload.ts +165 -2
  281. package/src/transactions/management/transactionWorker.ts +1 -1
  282. package/src/transactions/transactionBuilder/transactionBuilder.ts +64 -5
  283. package/src/transactions/types.ts +61 -10
  284. package/src/types/types.ts +111 -0
  285. package/src/version.ts +1 -1
  286. package/dist/common/accountAddress-AL8HRxQC.d.ts +0 -3148
  287. package/dist/common/chunk-ZMDE3DNL.js +0 -4
  288. package/dist/common/chunk-ZMDE3DNL.js.map +0 -1
  289. package/dist/esm/chunk-BK56GLTP.mjs +0 -4
  290. package/dist/esm/chunk-BK56GLTP.mjs.map +0 -1
  291. package/dist/esm/chunk-ODAAZLPK.mjs +0 -2
  292. package/dist/esm/chunk-ODAAZLPK.mjs.map +0 -1
  293. package/dist/esm/chunk-VEGW6HP5.mjs +0 -2
  294. package/dist/esm/chunk-XTMUMN74.mjs +0 -2
  295. package/dist/esm/chunk-XTMUMN74.mjs.map +0 -1
  296. package/dist/esm/publicKey-CJOcUwJK.d.mts +0 -213
  297. package/src/internal/move/jwks/build/jwk/BuildInfo.yaml +0 -56
  298. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/account.mv +0 -0
  299. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator.mv +0 -0
  300. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator_factory.mv +0 -0
  301. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aggregator_v2.mv +0 -0
  302. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_account.mv +0 -0
  303. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_coin.mv +0 -0
  304. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/aptos_governance.mv +0 -0
  305. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/block.mv +0 -0
  306. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/chain_id.mv +0 -0
  307. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/chain_status.mv +0 -0
  308. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/code.mv +0 -0
  309. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/coin.mv +0 -0
  310. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/config_buffer.mv +0 -0
  311. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/consensus_config.mv +0 -0
  312. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/create_signer.mv +0 -0
  313. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/delegation_pool.mv +0 -0
  314. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/dispatchable_fungible_asset.mv +0 -0
  315. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/dkg.mv +0 -0
  316. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/event.mv +0 -0
  317. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/execution_config.mv +0 -0
  318. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/function_info.mv +0 -0
  319. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/fungible_asset.mv +0 -0
  320. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/gas_schedule.mv +0 -0
  321. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/genesis.mv +0 -0
  322. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/governance_proposal.mv +0 -0
  323. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/guid.mv +0 -0
  324. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/jwk_consensus_config.mv +0 -0
  325. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/jwks.mv +0 -0
  326. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/keyless_account.mv +0 -0
  327. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/managed_coin.mv +0 -0
  328. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/multisig_account.mv +0 -0
  329. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/object.mv +0 -0
  330. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/object_code_deployment.mv +0 -0
  331. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/optional_aggregator.mv +0 -0
  332. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/primary_fungible_store.mv +0 -0
  333. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness.mv +0 -0
  334. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_api_v0_config.mv +0 -0
  335. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_config.mv +0 -0
  336. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/randomness_config_seqnum.mv +0 -0
  337. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration.mv +0 -0
  338. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration_state.mv +0 -0
  339. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/reconfiguration_with_dkg.mv +0 -0
  340. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/resource_account.mv +0 -0
  341. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/stake.mv +0 -0
  342. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_config.mv +0 -0
  343. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_contract.mv +0 -0
  344. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/staking_proxy.mv +0 -0
  345. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/state_storage.mv +0 -0
  346. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/storage_gas.mv +0 -0
  347. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/system_addresses.mv +0 -0
  348. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/timestamp.mv +0 -0
  349. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_context.mv +0 -0
  350. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_fee.mv +0 -0
  351. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/transaction_validation.mv +0 -0
  352. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/util.mv +0 -0
  353. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/validator_consensus_info.mv +0 -0
  354. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/version.mv +0 -0
  355. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/vesting.mv +0 -0
  356. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosFramework/voting.mv +0 -0
  357. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/any.mv +0 -0
  358. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/aptos_hash.mv +0 -0
  359. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/big_vector.mv +0 -0
  360. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bls12381.mv +0 -0
  361. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bls12381_algebra.mv +0 -0
  362. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/bn254_algebra.mv +0 -0
  363. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/capability.mv +0 -0
  364. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/comparator.mv +0 -0
  365. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/copyable_any.mv +0 -0
  366. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/crypto_algebra.mv +0 -0
  367. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/debug.mv +0 -0
  368. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ed25519.mv +0 -0
  369. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/fixed_point64.mv +0 -0
  370. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/from_bcs.mv +0 -0
  371. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math128.mv +0 -0
  372. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math64.mv +0 -0
  373. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math_fixed.mv +0 -0
  374. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/math_fixed64.mv +0 -0
  375. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/multi_ed25519.mv +0 -0
  376. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/pool_u64.mv +0 -0
  377. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/pool_u64_unbound.mv +0 -0
  378. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255.mv +0 -0
  379. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_bulletproofs.mv +0 -0
  380. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_elgamal.mv +0 -0
  381. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/ristretto255_pedersen.mv +0 -0
  382. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/secp256k1.mv +0 -0
  383. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/simple_map.mv +0 -0
  384. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/smart_table.mv +0 -0
  385. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/smart_vector.mv +0 -0
  386. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/string_utils.mv +0 -0
  387. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/table.mv +0 -0
  388. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/table_with_length.mv +0 -0
  389. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/AptosStdlib/type_info.mv +0 -0
  390. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/acl.mv +0 -0
  391. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/bcs.mv +0 -0
  392. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/bit_vector.mv +0 -0
  393. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/error.mv +0 -0
  394. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/features.mv +0 -0
  395. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/fixed_point32.mv +0 -0
  396. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/hash.mv +0 -0
  397. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/option.mv +0 -0
  398. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/signer.mv +0 -0
  399. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/string.mv +0 -0
  400. package/src/internal/move/jwks/build/jwk/bytecode_modules/dependencies/MoveStdlib/vector.mv +0 -0
  401. package/src/internal/move/jwks/build/jwk/bytecode_scripts/main.mv +0 -0
  402. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/account.mvsm +0 -0
  403. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator.mvsm +0 -0
  404. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator_factory.mvsm +0 -0
  405. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aggregator_v2.mvsm +0 -0
  406. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_account.mvsm +0 -0
  407. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_coin.mvsm +0 -0
  408. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/aptos_governance.mvsm +0 -0
  409. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/block.mvsm +0 -0
  410. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/chain_id.mvsm +0 -0
  411. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/chain_status.mvsm +0 -0
  412. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/code.mvsm +0 -0
  413. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/coin.mvsm +0 -0
  414. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/config_buffer.mvsm +0 -0
  415. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/consensus_config.mvsm +0 -0
  416. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/create_signer.mvsm +0 -0
  417. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/delegation_pool.mvsm +0 -0
  418. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/dispatchable_fungible_asset.mvsm +0 -0
  419. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/dkg.mvsm +0 -0
  420. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/event.mvsm +0 -0
  421. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/execution_config.mvsm +0 -0
  422. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/function_info.mvsm +0 -0
  423. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/fungible_asset.mvsm +0 -0
  424. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/gas_schedule.mvsm +0 -0
  425. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/genesis.mvsm +0 -0
  426. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/governance_proposal.mvsm +0 -0
  427. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/guid.mvsm +0 -0
  428. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/jwk_consensus_config.mvsm +0 -0
  429. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/jwks.mvsm +0 -0
  430. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/keyless_account.mvsm +0 -0
  431. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/managed_coin.mvsm +0 -0
  432. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/multisig_account.mvsm +0 -0
  433. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/object.mvsm +0 -0
  434. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/object_code_deployment.mvsm +0 -0
  435. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/optional_aggregator.mvsm +0 -0
  436. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/primary_fungible_store.mvsm +0 -0
  437. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness.mvsm +0 -0
  438. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_api_v0_config.mvsm +0 -0
  439. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_config.mvsm +0 -0
  440. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/randomness_config_seqnum.mvsm +0 -0
  441. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration.mvsm +0 -0
  442. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration_state.mvsm +0 -0
  443. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/reconfiguration_with_dkg.mvsm +0 -0
  444. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/resource_account.mvsm +0 -0
  445. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/stake.mvsm +0 -0
  446. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_config.mvsm +0 -0
  447. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_contract.mvsm +0 -0
  448. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/staking_proxy.mvsm +0 -0
  449. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/state_storage.mvsm +0 -0
  450. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/storage_gas.mvsm +0 -0
  451. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/system_addresses.mvsm +0 -0
  452. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/timestamp.mvsm +0 -0
  453. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_context.mvsm +0 -0
  454. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_fee.mvsm +0 -0
  455. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/transaction_validation.mvsm +0 -0
  456. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/util.mvsm +0 -0
  457. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/validator_consensus_info.mvsm +0 -0
  458. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/version.mvsm +0 -0
  459. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/vesting.mvsm +0 -0
  460. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosFramework/voting.mvsm +0 -0
  461. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/any.mvsm +0 -0
  462. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/aptos_hash.mvsm +0 -0
  463. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/big_vector.mvsm +0 -0
  464. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bls12381.mvsm +0 -0
  465. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bls12381_algebra.mvsm +0 -0
  466. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/bn254_algebra.mvsm +0 -0
  467. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/capability.mvsm +0 -0
  468. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/comparator.mvsm +0 -0
  469. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/copyable_any.mvsm +0 -0
  470. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/crypto_algebra.mvsm +0 -0
  471. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/debug.mvsm +0 -0
  472. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ed25519.mvsm +0 -0
  473. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/fixed_point64.mvsm +0 -0
  474. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/from_bcs.mvsm +0 -0
  475. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math128.mvsm +0 -0
  476. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math64.mvsm +0 -0
  477. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math_fixed.mvsm +0 -0
  478. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/math_fixed64.mvsm +0 -0
  479. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/multi_ed25519.mvsm +0 -0
  480. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/pool_u64.mvsm +0 -0
  481. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/pool_u64_unbound.mvsm +0 -0
  482. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255.mvsm +0 -0
  483. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_bulletproofs.mvsm +0 -0
  484. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_elgamal.mvsm +0 -0
  485. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/ristretto255_pedersen.mvsm +0 -0
  486. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/secp256k1.mvsm +0 -0
  487. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/simple_map.mvsm +0 -0
  488. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/smart_table.mvsm +0 -0
  489. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/smart_vector.mvsm +0 -0
  490. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/string_utils.mvsm +0 -0
  491. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/table.mvsm +0 -0
  492. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/table_with_length.mvsm +0 -0
  493. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/AptosStdlib/type_info.mvsm +0 -0
  494. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/acl.mvsm +0 -0
  495. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/bcs.mvsm +0 -0
  496. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/bit_vector.mvsm +0 -0
  497. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/error.mvsm +0 -0
  498. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/features.mvsm +0 -0
  499. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/fixed_point32.mvsm +0 -0
  500. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/hash.mvsm +0 -0
  501. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/option.mvsm +0 -0
  502. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/signer.mvsm +0 -0
  503. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/string.mvsm +0 -0
  504. package/src/internal/move/jwks/build/jwk/source_maps/dependencies/MoveStdlib/vector.mvsm +0 -0
  505. package/src/internal/move/jwks/build/jwk/source_maps/main.mvsm +0 -0
  506. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/account.move +0 -1533
  507. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator.move +0 -48
  508. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator_factory.move +0 -66
  509. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aggregator_v2.move +0 -280
  510. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_account.move +0 -443
  511. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_coin.move +0 -204
  512. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/aptos_governance.move +0 -1387
  513. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/block.move +0 -394
  514. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/chain_id.move +0 -41
  515. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/chain_status.move +0 -48
  516. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/code.move +0 -367
  517. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/coin.move +0 -2214
  518. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/config_buffer.move +0 -101
  519. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/consensus_config.move +0 -77
  520. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/create_signer.move +0 -21
  521. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/delegation_pool.move +0 -5568
  522. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/dispatchable_fungible_asset.move +0 -228
  523. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/dkg.move +0 -121
  524. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/event.move +0 -92
  525. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/execution_config.move +0 -66
  526. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/function_info.move +0 -100
  527. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/fungible_asset.move +0 -1566
  528. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/gas_schedule.move +0 -176
  529. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/genesis.move +0 -550
  530. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/governance_proposal.move +0 -23
  531. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/guid.move +0 -68
  532. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/jwk_consensus_config.move +0 -148
  533. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/jwks.move +0 -817
  534. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/keyless_account.move +0 -312
  535. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/managed_coin.move +0 -205
  536. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/multisig_account.move +0 -2477
  537. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/object.move +0 -1073
  538. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/object_code_deployment.move +0 -147
  539. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/optional_aggregator.move +0 -295
  540. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/primary_fungible_store.move +0 -405
  541. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness.move +0 -574
  542. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_api_v0_config.move +0 -57
  543. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_config.move +0 -153
  544. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/randomness_config_seqnum.move +0 -49
  545. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration.move +0 -237
  546. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration_state.move +0 -132
  547. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/reconfiguration_with_dkg.move +0 -69
  548. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/resource_account.move +0 -267
  549. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/stake.move +0 -3286
  550. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_config.move +0 -686
  551. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_contract.move +0 -1618
  552. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/staking_proxy.move +0 -228
  553. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/state_storage.move +0 -90
  554. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/storage_gas.move +0 -622
  555. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/system_addresses.move +0 -82
  556. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/timestamp.move +0 -88
  557. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_context.move +0 -262
  558. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_fee.move +0 -457
  559. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/transaction_validation.move +0 -501
  560. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/util.move +0 -16
  561. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/validator_consensus_info.move +0 -42
  562. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/version.move +0 -115
  563. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/vesting.move +0 -2183
  564. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosFramework/voting.move +0 -1279
  565. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/any.move +0 -57
  566. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/aptos_hash.move +0 -253
  567. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/big_vector.move +0 -469
  568. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bls12381.move +0 -985
  569. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bls12381_algebra.move +0 -802
  570. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/bn254_algebra.move +0 -855
  571. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/capability.move +0 -193
  572. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/comparator.move +0 -173
  573. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/copyable_any.move +0 -45
  574. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/crypto_algebra.move +0 -351
  575. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/debug.move +0 -278
  576. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ed25519.move +0 -262
  577. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/fixed_point64.move +0 -447
  578. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/from_bcs.move +0 -91
  579. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math128.move +0 -381
  580. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math64.move +0 -336
  581. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math_fixed.move +0 -139
  582. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/math_fixed64.move +0 -142
  583. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/multi_ed25519.move +0 -482
  584. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/pool_u64.move +0 -571
  585. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/pool_u64_unbound.move +0 -270
  586. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255.move +0 -1310
  587. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_bulletproofs.move +0 -253
  588. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_elgamal.move +0 -234
  589. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/ristretto255_pedersen.move +0 -158
  590. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/secp256k1.move +0 -114
  591. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/simple_map.move +0 -319
  592. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/smart_table.move +0 -769
  593. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/smart_vector.move +0 -766
  594. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/string_utils.move +0 -148
  595. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/table.move +0 -152
  596. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/table_with_length.move +0 -141
  597. package/src/internal/move/jwks/build/jwk/sources/dependencies/AptosStdlib/type_info.move +0 -351
  598. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/acl.move +0 -46
  599. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/bcs.move +0 -27
  600. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/bit_vector.move +0 -239
  601. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/error.move +0 -88
  602. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/features.move +0 -780
  603. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/fixed_point32.move +0 -295
  604. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/hash.move +0 -8
  605. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/option.move +0 -356
  606. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/signer.move +0 -21
  607. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/string.move +0 -93
  608. package/src/internal/move/jwks/build/jwk/sources/dependencies/MoveStdlib/vector.move +0 -669
  609. package/src/internal/move/jwks/build/jwk/sources/main.move +0 -20
  610. /package/dist/esm/{chunk-V74WPKSY.mjs.map → chunk-2XQKGWHQ.mjs.map} +0 -0
  611. /package/dist/esm/{chunk-UOP7GBXB.mjs.map → chunk-5ZRPV4YI.mjs.map} +0 -0
  612. /package/dist/esm/{chunk-V2QSMVJ5.mjs.map → chunk-7T62PEFI.mjs.map} +0 -0
  613. /package/dist/esm/{chunk-U7HD6PQV.mjs.map → chunk-FSP4QM2T.mjs.map} +0 -0
  614. /package/dist/esm/{chunk-GBNAG7KK.mjs.map → chunk-IDHVW7HS.mjs.map} +0 -0
  615. /package/dist/esm/{chunk-57J5YBMT.mjs.map → chunk-PFXXFUBL.mjs.map} +0 -0
  616. /package/dist/esm/{chunk-KRBZ54CY.mjs.map → chunk-R7NQJWDG.mjs.map} +0 -0
  617. /package/dist/esm/{chunk-AMAPBD4D.mjs.map → chunk-SAMHWS73.mjs.map} +0 -0
  618. /package/dist/esm/{chunk-HETYL3WN.mjs.map → chunk-WOTQ7227.mjs.map} +0 -0
  619. /package/dist/esm/{chunk-CZYH3G7E.mjs.map → chunk-YHGGNYYL.mjs.map} +0 -0
@@ -1,1566 +0,0 @@
1
- /// This defines the fungible asset module that can issue fungible asset of any `Metadata` object. The
2
- /// metadata object can be any object that equipped with `Metadata` resource.
3
- module aptos_framework::fungible_asset {
4
- use aptos_framework::aggregator_v2::{Self, Aggregator};
5
- use aptos_framework::create_signer;
6
- use aptos_framework::event;
7
- use aptos_framework::function_info::{Self, FunctionInfo};
8
- use aptos_framework::object::{Self, Object, ConstructorRef, DeleteRef, ExtendRef};
9
- use std::string;
10
- use std::features;
11
-
12
- use std::error;
13
- use std::option::{Self, Option};
14
- use std::signer;
15
- use std::string::String;
16
-
17
- friend aptos_framework::coin;
18
- friend aptos_framework::primary_fungible_store;
19
- friend aptos_framework::aptos_account;
20
-
21
- friend aptos_framework::dispatchable_fungible_asset;
22
-
23
- /// Amount cannot be zero.
24
- const EAMOUNT_CANNOT_BE_ZERO: u64 = 1;
25
- /// The transfer ref and the fungible asset do not match.
26
- const ETRANSFER_REF_AND_FUNGIBLE_ASSET_MISMATCH: u64 = 2;
27
- /// Store is disabled from sending and receiving this fungible asset.
28
- const ESTORE_IS_FROZEN: u64 = 3;
29
- /// Insufficient balance to withdraw or transfer.
30
- const EINSUFFICIENT_BALANCE: u64 = 4;
31
- /// The fungible asset's supply has exceeded maximum.
32
- const EMAX_SUPPLY_EXCEEDED: u64 = 5;
33
- /// Fungible asset do not match when merging.
34
- const EFUNGIBLE_ASSET_MISMATCH: u64 = 6;
35
- /// The mint ref and the store do not match.
36
- const EMINT_REF_AND_STORE_MISMATCH: u64 = 7;
37
- /// Account is not the store's owner.
38
- const ENOT_STORE_OWNER: u64 = 8;
39
- /// Transfer ref and store do not match.
40
- const ETRANSFER_REF_AND_STORE_MISMATCH: u64 = 9;
41
- /// Burn ref and store do not match.
42
- const EBURN_REF_AND_STORE_MISMATCH: u64 = 10;
43
- /// Fungible asset and store do not match.
44
- const EFUNGIBLE_ASSET_AND_STORE_MISMATCH: u64 = 11;
45
- /// Cannot destroy non-empty fungible assets.
46
- const EAMOUNT_IS_NOT_ZERO: u64 = 12;
47
- /// Burn ref and fungible asset do not match.
48
- const EBURN_REF_AND_FUNGIBLE_ASSET_MISMATCH: u64 = 13;
49
- /// Cannot destroy fungible stores with a non-zero balance.
50
- const EBALANCE_IS_NOT_ZERO: u64 = 14;
51
- /// Name of the fungible asset metadata is too long
52
- const ENAME_TOO_LONG: u64 = 15;
53
- /// Symbol of the fungible asset metadata is too long
54
- const ESYMBOL_TOO_LONG: u64 = 16;
55
- /// Decimals is over the maximum of 32
56
- const EDECIMALS_TOO_LARGE: u64 = 17;
57
- /// Fungibility is only available for non-deletable objects.
58
- const EOBJECT_IS_DELETABLE: u64 = 18;
59
- /// URI for the icon of the fungible asset metadata is too long
60
- const EURI_TOO_LONG: u64 = 19;
61
- /// The fungible asset's supply will be negative which should be impossible.
62
- const ESUPPLY_UNDERFLOW: u64 = 20;
63
- /// Supply resource is not found for a metadata object.
64
- const ESUPPLY_NOT_FOUND: u64 = 21;
65
- /// Flag for Concurrent Supply not enabled
66
- const ECONCURRENT_SUPPLY_NOT_ENABLED: u64 = 22;
67
- /// Flag for the existence of fungible store.
68
- const EFUNGIBLE_STORE_EXISTENCE: u64 = 23;
69
- /// Account is not the owner of metadata object.
70
- const ENOT_METADATA_OWNER: u64 = 24;
71
- /// Provided withdraw function type doesn't meet the signature requirement.
72
- const EWITHDRAW_FUNCTION_SIGNATURE_MISMATCH: u64 = 25;
73
- /// Provided deposit function type doesn't meet the signature requirement.
74
- const EDEPOSIT_FUNCTION_SIGNATURE_MISMATCH: u64 = 26;
75
- /// Provided derived_balance function type doesn't meet the signature requirement.
76
- const EDERIVED_BALANCE_FUNCTION_SIGNATURE_MISMATCH: u64 = 27;
77
- /// Invalid withdraw/deposit on dispatchable token. The specified token has a dispatchable function hook.
78
- /// Need to invoke dispatchable_fungible_asset::withdraw/deposit to perform transfer.
79
- const EINVALID_DISPATCHABLE_OPERATIONS: u64 = 28;
80
- /// Trying to re-register dispatch hook on a fungible asset.
81
- const EALREADY_REGISTERED: u64 = 29;
82
- /// Fungible metadata does not exist on this account.
83
- const EFUNGIBLE_METADATA_EXISTENCE: u64 = 30;
84
- /// Cannot register dispatch hook for APT.
85
- const EAPT_NOT_DISPATCHABLE: u64 = 31;
86
- /// Flag for Concurrent Supply not enabled
87
- const ECONCURRENT_BALANCE_NOT_ENABLED: u64 = 32;
88
- /// Provided derived_supply function type doesn't meet the signature requirement.
89
- const EDERIVED_SUPPLY_FUNCTION_SIGNATURE_MISMATCH: u64 = 33;
90
-
91
- //
92
- // Constants
93
- //
94
-
95
- const MAX_NAME_LENGTH: u64 = 32;
96
- const MAX_SYMBOL_LENGTH: u64 = 10;
97
- const MAX_DECIMALS: u8 = 32;
98
- const MAX_URI_LENGTH: u64 = 512;
99
-
100
- /// Maximum possible coin supply.
101
- const MAX_U128: u128 = 340282366920938463463374607431768211455;
102
-
103
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
104
- struct Supply has key {
105
- current: u128,
106
- // option::none() means unlimited supply.
107
- maximum: Option<u128>,
108
- }
109
-
110
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
111
- struct ConcurrentSupply has key {
112
- current: Aggregator<u128>,
113
- }
114
-
115
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
116
- /// Metadata of a Fungible asset
117
- struct Metadata has key, copy, drop {
118
- /// Name of the fungible metadata, i.e., "USDT".
119
- name: String,
120
- /// Symbol of the fungible metadata, usually a shorter version of the name.
121
- /// For example, Singapore Dollar is SGD.
122
- symbol: String,
123
- /// Number of decimals used for display purposes.
124
- /// For example, if `decimals` equals `2`, a balance of `505` coins should
125
- /// be displayed to a user as `5.05` (`505 / 10 ** 2`).
126
- decimals: u8,
127
- /// The Uniform Resource Identifier (uri) pointing to an image that can be used as the icon for this fungible
128
- /// asset.
129
- icon_uri: String,
130
- /// The Uniform Resource Identifier (uri) pointing to the website for the fungible asset.
131
- project_uri: String,
132
- }
133
-
134
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
135
- /// Defines a `FungibleAsset`, such that all `FungibleStore`s stores are untransferable at
136
- /// the object layer.
137
- struct Untransferable has key {}
138
-
139
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
140
- /// The store object that holds fungible assets of a specific type associated with an account.
141
- struct FungibleStore has key {
142
- /// The address of the base metadata object.
143
- metadata: Object<Metadata>,
144
- /// The balance of the fungible metadata.
145
- balance: u64,
146
- /// If true, owner transfer is disabled that only `TransferRef` can move in/out from this store.
147
- frozen: bool,
148
- }
149
-
150
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
151
- struct DispatchFunctionStore has key {
152
- withdraw_function: Option<FunctionInfo>,
153
- deposit_function: Option<FunctionInfo>,
154
- derived_balance_function: Option<FunctionInfo>,
155
- }
156
-
157
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
158
- struct DeriveSupply has key {
159
- dispatch_function: Option<FunctionInfo>
160
- }
161
-
162
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
163
- /// The store object that holds concurrent fungible asset balance.
164
- struct ConcurrentFungibleBalance has key {
165
- /// The balance of the fungible metadata.
166
- balance: Aggregator<u64>,
167
- }
168
-
169
- /// FungibleAsset can be passed into function for type safety and to guarantee a specific amount.
170
- /// FungibleAsset is ephemeral and cannot be stored directly. It must be deposited back into a store.
171
- struct FungibleAsset {
172
- metadata: Object<Metadata>,
173
- amount: u64,
174
- }
175
-
176
- /// MintRef can be used to mint the fungible asset into an account's store.
177
- struct MintRef has drop, store {
178
- metadata: Object<Metadata>
179
- }
180
-
181
- /// TransferRef can be used to allow or disallow the owner of fungible assets from transferring the asset
182
- /// and allow the holder of TransferRef to transfer fungible assets from any account.
183
- struct TransferRef has drop, store {
184
- metadata: Object<Metadata>
185
- }
186
-
187
- /// BurnRef can be used to burn fungible assets from a given holder account.
188
- struct BurnRef has drop, store {
189
- metadata: Object<Metadata>
190
- }
191
-
192
- /// MutateMetadataRef can be used to directly modify the fungible asset's Metadata.
193
- struct MutateMetadataRef has drop, store {
194
- metadata: Object<Metadata>
195
- }
196
-
197
- #[event]
198
- /// Emitted when fungible assets are deposited into a store.
199
- struct Deposit has drop, store {
200
- store: address,
201
- amount: u64,
202
- }
203
-
204
- #[event]
205
- /// Emitted when fungible assets are withdrawn from a store.
206
- struct Withdraw has drop, store {
207
- store: address,
208
- amount: u64,
209
- }
210
-
211
- #[event]
212
- /// Emitted when a store's frozen status is updated.
213
- struct Frozen has drop, store {
214
- store: address,
215
- frozen: bool,
216
- }
217
-
218
- inline fun default_to_concurrent_fungible_supply(): bool {
219
- features::concurrent_fungible_assets_enabled()
220
- }
221
-
222
- inline fun allow_upgrade_to_concurrent_fungible_balance(): bool {
223
- features::concurrent_fungible_balance_enabled()
224
- }
225
-
226
- inline fun default_to_concurrent_fungible_balance(): bool {
227
- features::default_to_concurrent_fungible_balance_enabled()
228
- }
229
-
230
- /// Make an existing object fungible by adding the Metadata resource.
231
- /// This returns the capabilities to mint, burn, and transfer.
232
- /// maximum_supply defines the behavior of maximum supply when monitoring:
233
- /// - option::none(): Monitoring unlimited supply
234
- /// (width of the field - MAX_U128 is the implicit maximum supply)
235
- /// if option::some(MAX_U128) is used, it is treated as unlimited supply.
236
- /// - option::some(max): Monitoring fixed supply with `max` as the maximum supply.
237
- public fun add_fungibility(
238
- constructor_ref: &ConstructorRef,
239
- maximum_supply: Option<u128>,
240
- name: String,
241
- symbol: String,
242
- decimals: u8,
243
- icon_uri: String,
244
- project_uri: String,
245
- ): Object<Metadata> {
246
- assert!(!object::can_generate_delete_ref(constructor_ref), error::invalid_argument(EOBJECT_IS_DELETABLE));
247
- let metadata_object_signer = &object::generate_signer(constructor_ref);
248
- assert!(string::length(&name) <= MAX_NAME_LENGTH, error::out_of_range(ENAME_TOO_LONG));
249
- assert!(string::length(&symbol) <= MAX_SYMBOL_LENGTH, error::out_of_range(ESYMBOL_TOO_LONG));
250
- assert!(decimals <= MAX_DECIMALS, error::out_of_range(EDECIMALS_TOO_LARGE));
251
- assert!(string::length(&icon_uri) <= MAX_URI_LENGTH, error::out_of_range(EURI_TOO_LONG));
252
- assert!(string::length(&project_uri) <= MAX_URI_LENGTH, error::out_of_range(EURI_TOO_LONG));
253
- move_to(metadata_object_signer,
254
- Metadata {
255
- name,
256
- symbol,
257
- decimals,
258
- icon_uri,
259
- project_uri,
260
- }
261
- );
262
-
263
- if (default_to_concurrent_fungible_supply()) {
264
- let unlimited = option::is_none(&maximum_supply);
265
- move_to(metadata_object_signer, ConcurrentSupply {
266
- current: if (unlimited) {
267
- aggregator_v2::create_unbounded_aggregator()
268
- } else {
269
- aggregator_v2::create_aggregator(option::extract(&mut maximum_supply))
270
- },
271
- });
272
- } else {
273
- move_to(metadata_object_signer, Supply {
274
- current: 0,
275
- maximum: maximum_supply
276
- });
277
- };
278
-
279
- object::object_from_constructor_ref<Metadata>(constructor_ref)
280
- }
281
-
282
- /// Set that only untransferable stores can be created for this fungible asset.
283
- public fun set_untransferable(constructor_ref: &ConstructorRef) {
284
- let metadata_addr = object::address_from_constructor_ref(constructor_ref);
285
- assert!(exists<Metadata>(metadata_addr), error::not_found(EFUNGIBLE_METADATA_EXISTENCE));
286
- let metadata_signer = &object::generate_signer(constructor_ref);
287
- move_to(metadata_signer, Untransferable {});
288
- }
289
-
290
-
291
- #[view]
292
- /// Returns true if the FA is untransferable.
293
- public fun is_untransferable<T: key>(metadata: Object<T>): bool {
294
- exists<Untransferable>(object::object_address(&metadata))
295
- }
296
-
297
- /// Create a fungible asset store whose transfer rule would be overloaded by the provided function.
298
- public(friend) fun register_dispatch_functions(
299
- constructor_ref: &ConstructorRef,
300
- withdraw_function: Option<FunctionInfo>,
301
- deposit_function: Option<FunctionInfo>,
302
- derived_balance_function: Option<FunctionInfo>,
303
- ) {
304
- // Verify that caller type matches callee type so wrongly typed function cannot be registered.
305
- option::for_each_ref(&withdraw_function, |withdraw_function| {
306
- let dispatcher_withdraw_function_info = function_info::new_function_info_from_address(
307
- @aptos_framework,
308
- string::utf8(b"dispatchable_fungible_asset"),
309
- string::utf8(b"dispatchable_withdraw"),
310
- );
311
-
312
- assert!(
313
- function_info::check_dispatch_type_compatibility(
314
- &dispatcher_withdraw_function_info,
315
- withdraw_function
316
- ),
317
- error::invalid_argument(
318
- EWITHDRAW_FUNCTION_SIGNATURE_MISMATCH
319
- )
320
- );
321
- });
322
-
323
- option::for_each_ref(&deposit_function, |deposit_function| {
324
- let dispatcher_deposit_function_info = function_info::new_function_info_from_address(
325
- @aptos_framework,
326
- string::utf8(b"dispatchable_fungible_asset"),
327
- string::utf8(b"dispatchable_deposit"),
328
- );
329
- // Verify that caller type matches callee type so wrongly typed function cannot be registered.
330
- assert!(
331
- function_info::check_dispatch_type_compatibility(
332
- &dispatcher_deposit_function_info,
333
- deposit_function
334
- ),
335
- error::invalid_argument(
336
- EDEPOSIT_FUNCTION_SIGNATURE_MISMATCH
337
- )
338
- );
339
- });
340
-
341
- option::for_each_ref(&derived_balance_function, |balance_function| {
342
- let dispatcher_derived_balance_function_info = function_info::new_function_info_from_address(
343
- @aptos_framework,
344
- string::utf8(b"dispatchable_fungible_asset"),
345
- string::utf8(b"dispatchable_derived_balance"),
346
- );
347
- // Verify that caller type matches callee type so wrongly typed function cannot be registered.
348
- assert!(
349
- function_info::check_dispatch_type_compatibility(
350
- &dispatcher_derived_balance_function_info,
351
- balance_function
352
- ),
353
- error::invalid_argument(
354
- EDERIVED_BALANCE_FUNCTION_SIGNATURE_MISMATCH
355
- )
356
- );
357
- });
358
- register_dispatch_function_sanity_check(constructor_ref);
359
- assert!(
360
- !exists<DispatchFunctionStore>(
361
- object::address_from_constructor_ref(constructor_ref)
362
- ),
363
- error::already_exists(EALREADY_REGISTERED)
364
- );
365
-
366
- let store_obj = &object::generate_signer(constructor_ref);
367
-
368
- // Store the overload function hook.
369
- move_to<DispatchFunctionStore>(
370
- store_obj,
371
- DispatchFunctionStore {
372
- withdraw_function,
373
- deposit_function,
374
- derived_balance_function,
375
- }
376
- );
377
- }
378
-
379
- /// Define the derived supply dispatch with the provided function.
380
- public(friend) fun register_derive_supply_dispatch_function(
381
- constructor_ref: &ConstructorRef,
382
- dispatch_function: Option<FunctionInfo>
383
- ) {
384
- // Verify that caller type matches callee type so wrongly typed function cannot be registered.
385
- option::for_each_ref(&dispatch_function, |supply_function| {
386
- let function_info = function_info::new_function_info_from_address(
387
- @aptos_framework,
388
- string::utf8(b"dispatchable_fungible_asset"),
389
- string::utf8(b"dispatchable_derived_supply"),
390
- );
391
- // Verify that caller type matches callee type so wrongly typed function cannot be registered.
392
- assert!(
393
- function_info::check_dispatch_type_compatibility(
394
- &function_info,
395
- supply_function
396
- ),
397
- error::invalid_argument(
398
- EDERIVED_SUPPLY_FUNCTION_SIGNATURE_MISMATCH
399
- )
400
- );
401
- });
402
- register_dispatch_function_sanity_check(constructor_ref);
403
- assert!(
404
- !exists<DeriveSupply>(
405
- object::address_from_constructor_ref(constructor_ref)
406
- ),
407
- error::already_exists(EALREADY_REGISTERED)
408
- );
409
-
410
-
411
- let store_obj = &object::generate_signer(constructor_ref);
412
-
413
- // Store the overload function hook.
414
- move_to<DeriveSupply>(
415
- store_obj,
416
- DeriveSupply {
417
- dispatch_function
418
- }
419
- );
420
- }
421
-
422
- /// Check the requirements for registering a dispatchable function.
423
- inline fun register_dispatch_function_sanity_check(
424
- constructor_ref: &ConstructorRef,
425
- ) {
426
- // Cannot register hook for APT.
427
- assert!(
428
- object::address_from_constructor_ref(constructor_ref) != @aptos_fungible_asset,
429
- error::permission_denied(EAPT_NOT_DISPATCHABLE)
430
- );
431
- assert!(
432
- !object::can_generate_delete_ref(constructor_ref),
433
- error::invalid_argument(EOBJECT_IS_DELETABLE)
434
- );
435
- assert!(
436
- exists<Metadata>(
437
- object::address_from_constructor_ref(constructor_ref)
438
- ),
439
- error::not_found(EFUNGIBLE_METADATA_EXISTENCE),
440
- );
441
- }
442
-
443
- /// Creates a mint ref that can be used to mint fungible assets from the given fungible object's constructor ref.
444
- /// This can only be called at object creation time as constructor_ref is only available then.
445
- public fun generate_mint_ref(constructor_ref: &ConstructorRef): MintRef {
446
- let metadata = object::object_from_constructor_ref<Metadata>(constructor_ref);
447
- MintRef { metadata }
448
- }
449
-
450
- /// Creates a burn ref that can be used to burn fungible assets from the given fungible object's constructor ref.
451
- /// This can only be called at object creation time as constructor_ref is only available then.
452
- public fun generate_burn_ref(constructor_ref: &ConstructorRef): BurnRef {
453
- let metadata = object::object_from_constructor_ref<Metadata>(constructor_ref);
454
- BurnRef { metadata }
455
- }
456
-
457
- /// Creates a transfer ref that can be used to freeze/unfreeze/transfer fungible assets from the given fungible
458
- /// object's constructor ref.
459
- /// This can only be called at object creation time as constructor_ref is only available then.
460
- public fun generate_transfer_ref(constructor_ref: &ConstructorRef): TransferRef {
461
- let metadata = object::object_from_constructor_ref<Metadata>(constructor_ref);
462
- TransferRef { metadata }
463
- }
464
-
465
- /// Creates a mutate metadata ref that can be used to change the metadata information of fungible assets from the
466
- /// given fungible object's constructor ref.
467
- /// This can only be called at object creation time as constructor_ref is only available then.
468
- public fun generate_mutate_metadata_ref(constructor_ref: &ConstructorRef): MutateMetadataRef {
469
- let metadata = object::object_from_constructor_ref<Metadata>(constructor_ref);
470
- MutateMetadataRef { metadata }
471
- }
472
-
473
- #[view]
474
- /// Get the current supply from the `metadata` object.
475
- public fun supply<T: key>(metadata: Object<T>): Option<u128> acquires Supply, ConcurrentSupply {
476
- let metadata_address = object::object_address(&metadata);
477
- if (exists<ConcurrentSupply>(metadata_address)) {
478
- let supply = borrow_global<ConcurrentSupply>(metadata_address);
479
- option::some(aggregator_v2::read(&supply.current))
480
- } else if (exists<Supply>(metadata_address)) {
481
- let supply = borrow_global<Supply>(metadata_address);
482
- option::some(supply.current)
483
- } else {
484
- option::none()
485
- }
486
- }
487
-
488
- #[view]
489
- /// Get the maximum supply from the `metadata` object.
490
- /// If supply is unlimited (or set explicitly to MAX_U128), none is returned
491
- public fun maximum<T: key>(metadata: Object<T>): Option<u128> acquires Supply, ConcurrentSupply {
492
- let metadata_address = object::object_address(&metadata);
493
- if (exists<ConcurrentSupply>(metadata_address)) {
494
- let supply = borrow_global<ConcurrentSupply>(metadata_address);
495
- let max_value = aggregator_v2::max_value(&supply.current);
496
- if (max_value == MAX_U128) {
497
- option::none()
498
- } else {
499
- option::some(max_value)
500
- }
501
- } else if (exists<Supply>(metadata_address)) {
502
- let supply = borrow_global<Supply>(metadata_address);
503
- supply.maximum
504
- } else {
505
- option::none()
506
- }
507
- }
508
-
509
- #[view]
510
- /// Get the name of the fungible asset from the `metadata` object.
511
- public fun name<T: key>(metadata: Object<T>): String acquires Metadata {
512
- borrow_fungible_metadata(&metadata).name
513
- }
514
-
515
- #[view]
516
- /// Get the symbol of the fungible asset from the `metadata` object.
517
- public fun symbol<T: key>(metadata: Object<T>): String acquires Metadata {
518
- borrow_fungible_metadata(&metadata).symbol
519
- }
520
-
521
- #[view]
522
- /// Get the decimals from the `metadata` object.
523
- public fun decimals<T: key>(metadata: Object<T>): u8 acquires Metadata {
524
- borrow_fungible_metadata(&metadata).decimals
525
- }
526
-
527
- #[view]
528
- /// Get the icon uri from the `metadata` object.
529
- public fun icon_uri<T: key>(metadata: Object<T>): String acquires Metadata {
530
- borrow_fungible_metadata(&metadata).icon_uri
531
- }
532
-
533
- #[view]
534
- /// Get the project uri from the `metadata` object.
535
- public fun project_uri<T: key>(metadata: Object<T>): String acquires Metadata {
536
- borrow_fungible_metadata(&metadata).project_uri
537
- }
538
-
539
- #[view]
540
- /// Get the metadata struct from the `metadata` object.
541
- public fun metadata<T: key>(metadata: Object<T>): Metadata acquires Metadata {
542
- *borrow_fungible_metadata(&metadata)
543
- }
544
-
545
- #[view]
546
- /// Return whether the provided address has a store initialized.
547
- public fun store_exists(store: address): bool {
548
- store_exists_inline(store)
549
- }
550
-
551
- /// Return whether the provided address has a store initialized.
552
- inline fun store_exists_inline(store: address): bool {
553
- exists<FungibleStore>(store)
554
- }
555
-
556
- /// Return whether the provided address has a concurrent fungible balance initialized,
557
- /// at the fungible store address.
558
- inline fun concurrent_fungible_balance_exists_inline(store: address): bool {
559
- exists<ConcurrentFungibleBalance>(store)
560
- }
561
-
562
- /// Return the underlying metadata object
563
- public fun metadata_from_asset(fa: &FungibleAsset): Object<Metadata> {
564
- fa.metadata
565
- }
566
-
567
- #[view]
568
- /// Return the underlying metadata object.
569
- public fun store_metadata<T: key>(store: Object<T>): Object<Metadata> acquires FungibleStore {
570
- borrow_store_resource(&store).metadata
571
- }
572
-
573
- /// Return the `amount` of a given fungible asset.
574
- public fun amount(fa: &FungibleAsset): u64 {
575
- fa.amount
576
- }
577
-
578
- #[view]
579
- /// Get the balance of a given store.
580
- public fun balance<T: key>(store: Object<T>): u64 acquires FungibleStore, ConcurrentFungibleBalance {
581
- let store_addr = object::object_address(&store);
582
- if (store_exists_inline(store_addr)) {
583
- let store_balance = borrow_store_resource(&store).balance;
584
- if (store_balance == 0 && concurrent_fungible_balance_exists_inline(store_addr)) {
585
- let balance_resource = borrow_global<ConcurrentFungibleBalance>(store_addr);
586
- aggregator_v2::read(&balance_resource.balance)
587
- } else {
588
- store_balance
589
- }
590
- } else {
591
- 0
592
- }
593
- }
594
-
595
- #[view]
596
- /// Check whether the balance of a given store is >= `amount`.
597
- public fun is_balance_at_least<T: key>(store: Object<T>, amount: u64): bool acquires FungibleStore, ConcurrentFungibleBalance {
598
- let store_addr = object::object_address(&store);
599
- is_address_balance_at_least(store_addr, amount)
600
- }
601
-
602
- /// Check whether the balance of a given store is >= `amount`.
603
- public(friend) fun is_address_balance_at_least(store_addr: address, amount: u64): bool acquires FungibleStore, ConcurrentFungibleBalance {
604
- if (store_exists_inline(store_addr)) {
605
- let store_balance = borrow_global<FungibleStore>(store_addr).balance;
606
- if (store_balance == 0 && concurrent_fungible_balance_exists_inline(store_addr)) {
607
- let balance_resource = borrow_global<ConcurrentFungibleBalance>(store_addr);
608
- aggregator_v2::is_at_least(&balance_resource.balance, amount)
609
- } else {
610
- store_balance >= amount
611
- }
612
- } else {
613
- amount == 0
614
- }
615
- }
616
-
617
- #[view]
618
- /// Return whether a store is frozen.
619
- ///
620
- /// If the store has not been created, we default to returning false so deposits can be sent to it.
621
- public fun is_frozen<T: key>(store: Object<T>): bool acquires FungibleStore {
622
- let store_addr = object::object_address(&store);
623
- store_exists_inline(store_addr) && borrow_global<FungibleStore>(store_addr).frozen
624
- }
625
-
626
- #[view]
627
- /// Return whether a fungible asset type is dispatchable.
628
- public fun is_store_dispatchable<T: key>(store: Object<T>): bool acquires FungibleStore {
629
- let fa_store = borrow_store_resource(&store);
630
- let metadata_addr = object::object_address(&fa_store.metadata);
631
- exists<DispatchFunctionStore>(metadata_addr)
632
- }
633
-
634
- public fun deposit_dispatch_function<T: key>(store: Object<T>): Option<FunctionInfo> acquires FungibleStore, DispatchFunctionStore {
635
- let fa_store = borrow_store_resource(&store);
636
- let metadata_addr = object::object_address(&fa_store.metadata);
637
- if(exists<DispatchFunctionStore>(metadata_addr)) {
638
- borrow_global<DispatchFunctionStore>(metadata_addr).deposit_function
639
- } else {
640
- option::none()
641
- }
642
- }
643
-
644
- fun has_deposit_dispatch_function(metadata: Object<Metadata>): bool acquires DispatchFunctionStore {
645
- let metadata_addr = object::object_address(&metadata);
646
- // Short circuit on APT for better perf
647
- if(metadata_addr != @aptos_fungible_asset && exists<DispatchFunctionStore>(metadata_addr)) {
648
- option::is_some(&borrow_global<DispatchFunctionStore>(metadata_addr).deposit_function)
649
- } else {
650
- false
651
- }
652
- }
653
-
654
- public fun withdraw_dispatch_function<T: key>(store: Object<T>): Option<FunctionInfo> acquires FungibleStore, DispatchFunctionStore {
655
- let fa_store = borrow_store_resource(&store);
656
- let metadata_addr = object::object_address(&fa_store.metadata);
657
- if(exists<DispatchFunctionStore>(metadata_addr)) {
658
- borrow_global<DispatchFunctionStore>(metadata_addr).withdraw_function
659
- } else {
660
- option::none()
661
- }
662
- }
663
-
664
- fun has_withdraw_dispatch_function(metadata: Object<Metadata>): bool acquires DispatchFunctionStore {
665
- let metadata_addr = object::object_address(&metadata);
666
- // Short circuit on APT for better perf
667
- if (metadata_addr != @aptos_fungible_asset && exists<DispatchFunctionStore>(metadata_addr)) {
668
- option::is_some(&borrow_global<DispatchFunctionStore>(metadata_addr).withdraw_function)
669
- } else {
670
- false
671
- }
672
- }
673
-
674
- public(friend) fun derived_balance_dispatch_function<T: key>(store: Object<T>): Option<FunctionInfo> acquires FungibleStore, DispatchFunctionStore {
675
- let fa_store = borrow_store_resource(&store);
676
- let metadata_addr = object::object_address(&fa_store.metadata);
677
- if (exists<DispatchFunctionStore>(metadata_addr)) {
678
- borrow_global<DispatchFunctionStore>(metadata_addr).derived_balance_function
679
- } else {
680
- option::none()
681
- }
682
- }
683
-
684
- public(friend) fun derived_supply_dispatch_function<T: key>(metadata: Object<T>): Option<FunctionInfo> acquires DeriveSupply {
685
- let metadata_addr = object::object_address(&metadata);
686
- if (exists<DeriveSupply>(metadata_addr)) {
687
- borrow_global<DeriveSupply>(metadata_addr).dispatch_function
688
- } else {
689
- option::none()
690
- }
691
- }
692
-
693
- public fun asset_metadata(fa: &FungibleAsset): Object<Metadata> {
694
- fa.metadata
695
- }
696
-
697
- /// Get the underlying metadata object from the `MintRef`.
698
- public fun mint_ref_metadata(ref: &MintRef): Object<Metadata> {
699
- ref.metadata
700
- }
701
-
702
- /// Get the underlying metadata object from the `TransferRef`.
703
- public fun transfer_ref_metadata(ref: &TransferRef): Object<Metadata> {
704
- ref.metadata
705
- }
706
-
707
- /// Get the underlying metadata object from the `BurnRef`.
708
- public fun burn_ref_metadata(ref: &BurnRef): Object<Metadata> {
709
- ref.metadata
710
- }
711
-
712
- /// Get the underlying metadata object from the `MutateMetadataRef`.
713
- public fun object_from_metadata_ref(ref: &MutateMetadataRef): Object<Metadata> {
714
- ref.metadata
715
- }
716
-
717
- /// Transfer an `amount` of fungible asset from `from_store`, which should be owned by `sender`, to `receiver`.
718
- /// Note: it does not move the underlying object.
719
- public entry fun transfer<T: key>(
720
- sender: &signer,
721
- from: Object<T>,
722
- to: Object<T>,
723
- amount: u64,
724
- ) acquires FungibleStore, DispatchFunctionStore, ConcurrentFungibleBalance {
725
- let fa = withdraw(sender, from, amount);
726
- deposit(to, fa);
727
- }
728
-
729
- /// Allow an object to hold a store for fungible assets.
730
- /// Applications can use this to create multiple stores for isolating fungible assets for different purposes.
731
- public fun create_store<T: key>(
732
- constructor_ref: &ConstructorRef,
733
- metadata: Object<T>,
734
- ): Object<FungibleStore> {
735
- let store_obj = &object::generate_signer(constructor_ref);
736
- move_to(store_obj, FungibleStore {
737
- metadata: object::convert(metadata),
738
- balance: 0,
739
- frozen: false,
740
- });
741
-
742
- if (is_untransferable(metadata)) {
743
- object::set_untransferable(constructor_ref);
744
- };
745
-
746
- if (default_to_concurrent_fungible_balance()) {
747
- move_to(store_obj, ConcurrentFungibleBalance {
748
- balance: aggregator_v2::create_unbounded_aggregator(),
749
- });
750
- };
751
-
752
- object::object_from_constructor_ref<FungibleStore>(constructor_ref)
753
- }
754
-
755
- /// Used to delete a store. Requires the store to be completely empty prior to removing it
756
- public fun remove_store(delete_ref: &DeleteRef) acquires FungibleStore, FungibleAssetEvents, ConcurrentFungibleBalance {
757
- let store = &object::object_from_delete_ref<FungibleStore>(delete_ref);
758
- let addr = object::object_address(store);
759
- let FungibleStore { metadata: _, balance, frozen: _ }
760
- = move_from<FungibleStore>(addr);
761
- assert!(balance == 0, error::permission_denied(EBALANCE_IS_NOT_ZERO));
762
-
763
- if (concurrent_fungible_balance_exists_inline(addr)) {
764
- let ConcurrentFungibleBalance { balance } = move_from<ConcurrentFungibleBalance>(addr);
765
- assert!(aggregator_v2::read(&balance) == 0, error::permission_denied(EBALANCE_IS_NOT_ZERO));
766
- };
767
-
768
- // Cleanup deprecated event handles if exist.
769
- if (exists<FungibleAssetEvents>(addr)) {
770
- let FungibleAssetEvents {
771
- deposit_events,
772
- withdraw_events,
773
- frozen_events,
774
- } = move_from<FungibleAssetEvents>(addr);
775
- event::destroy_handle(deposit_events);
776
- event::destroy_handle(withdraw_events);
777
- event::destroy_handle(frozen_events);
778
- };
779
- }
780
-
781
- /// Withdraw `amount` of the fungible asset from `store` by the owner.
782
- public fun withdraw<T: key>(
783
- owner: &signer,
784
- store: Object<T>,
785
- amount: u64,
786
- ): FungibleAsset acquires FungibleStore, DispatchFunctionStore, ConcurrentFungibleBalance {
787
- withdraw_sanity_check(owner, store, true);
788
- withdraw_internal(object::object_address(&store), amount)
789
- }
790
-
791
- /// Check the permission for withdraw operation.
792
- public(friend) fun withdraw_sanity_check<T: key>(
793
- owner: &signer,
794
- store: Object<T>,
795
- abort_on_dispatch: bool,
796
- ) acquires FungibleStore, DispatchFunctionStore {
797
- assert!(object::owns(store, signer::address_of(owner)), error::permission_denied(ENOT_STORE_OWNER));
798
- let fa_store = borrow_store_resource(&store);
799
- assert!(
800
- !abort_on_dispatch || !has_withdraw_dispatch_function(fa_store.metadata),
801
- error::invalid_argument(EINVALID_DISPATCHABLE_OPERATIONS)
802
- );
803
- assert!(!fa_store.frozen, error::permission_denied(ESTORE_IS_FROZEN));
804
- }
805
-
806
- /// Deposit `amount` of the fungible asset to `store`.
807
- public fun deposit_sanity_check<T: key>(
808
- store: Object<T>,
809
- abort_on_dispatch: bool
810
- ) acquires FungibleStore, DispatchFunctionStore {
811
- let fa_store = borrow_store_resource(&store);
812
- assert!(
813
- !abort_on_dispatch || !has_deposit_dispatch_function(fa_store.metadata),
814
- error::invalid_argument(EINVALID_DISPATCHABLE_OPERATIONS)
815
- );
816
- assert!(!fa_store.frozen, error::permission_denied(ESTORE_IS_FROZEN));
817
- }
818
-
819
- /// Deposit `amount` of the fungible asset to `store`.
820
- public fun deposit<T: key>(store: Object<T>, fa: FungibleAsset) acquires FungibleStore, DispatchFunctionStore, ConcurrentFungibleBalance {
821
- deposit_sanity_check(store, true);
822
- deposit_internal(object::object_address(&store), fa);
823
- }
824
-
825
- /// Mint the specified `amount` of the fungible asset.
826
- public fun mint(ref: &MintRef, amount: u64): FungibleAsset acquires Supply, ConcurrentSupply {
827
- let metadata = ref.metadata;
828
- mint_internal(metadata, amount)
829
- }
830
-
831
- /// CAN ONLY BE CALLED BY coin.move for migration.
832
- public(friend) fun mint_internal(
833
- metadata: Object<Metadata>,
834
- amount: u64
835
- ): FungibleAsset acquires Supply, ConcurrentSupply {
836
- increase_supply(&metadata, amount);
837
- FungibleAsset {
838
- metadata,
839
- amount
840
- }
841
- }
842
-
843
- /// Mint the specified `amount` of the fungible asset to a destination store.
844
- public fun mint_to<T: key>(ref: &MintRef, store: Object<T>, amount: u64)
845
- acquires FungibleStore, Supply, ConcurrentSupply, DispatchFunctionStore, ConcurrentFungibleBalance {
846
- deposit_sanity_check(store, false);
847
- deposit_internal(object::object_address(&store), mint(ref, amount));
848
- }
849
-
850
- /// Enable/disable a store's ability to do direct transfers of the fungible asset.
851
- public fun set_frozen_flag<T: key>(
852
- ref: &TransferRef,
853
- store: Object<T>,
854
- frozen: bool,
855
- ) acquires FungibleStore {
856
- assert!(
857
- ref.metadata == store_metadata(store),
858
- error::invalid_argument(ETRANSFER_REF_AND_STORE_MISMATCH),
859
- );
860
- set_frozen_flag_internal(store, frozen)
861
- }
862
-
863
- public(friend) fun set_frozen_flag_internal<T: key>(
864
- store: Object<T>,
865
- frozen: bool
866
- ) acquires FungibleStore {
867
- let store_addr = object::object_address(&store);
868
- borrow_global_mut<FungibleStore>(store_addr).frozen = frozen;
869
-
870
- event::emit(Frozen { store: store_addr, frozen });
871
- }
872
-
873
- /// Burns a fungible asset
874
- public fun burn(ref: &BurnRef, fa: FungibleAsset) acquires Supply, ConcurrentSupply {
875
- assert!(
876
- ref.metadata == metadata_from_asset(&fa),
877
- error::invalid_argument(EBURN_REF_AND_FUNGIBLE_ASSET_MISMATCH)
878
- );
879
- burn_internal(fa);
880
- }
881
-
882
- /// CAN ONLY BE CALLED BY coin.move for migration.
883
- public(friend) fun burn_internal(
884
- fa: FungibleAsset
885
- ): u64 acquires Supply, ConcurrentSupply {
886
- let FungibleAsset {
887
- metadata,
888
- amount
889
- } = fa;
890
- decrease_supply(&metadata, amount);
891
- amount
892
- }
893
-
894
- /// Burn the `amount` of the fungible asset from the given store.
895
- public fun burn_from<T: key>(
896
- ref: &BurnRef,
897
- store: Object<T>,
898
- amount: u64
899
- ) acquires FungibleStore, Supply, ConcurrentSupply, ConcurrentFungibleBalance {
900
- // ref metadata match is checked in burn() call
901
- burn(ref, withdraw_internal(object::object_address(&store), amount));
902
- }
903
-
904
- public(friend) fun address_burn_from(
905
- ref: &BurnRef,
906
- store_addr: address,
907
- amount: u64
908
- ) acquires FungibleStore, Supply, ConcurrentSupply, ConcurrentFungibleBalance {
909
- // ref metadata match is checked in burn() call
910
- burn(ref, withdraw_internal(store_addr, amount));
911
- }
912
-
913
- /// Withdraw `amount` of the fungible asset from the `store` ignoring `frozen`.
914
- public fun withdraw_with_ref<T: key>(
915
- ref: &TransferRef,
916
- store: Object<T>,
917
- amount: u64
918
- ): FungibleAsset acquires FungibleStore, ConcurrentFungibleBalance {
919
- assert!(
920
- ref.metadata == store_metadata(store),
921
- error::invalid_argument(ETRANSFER_REF_AND_STORE_MISMATCH),
922
- );
923
- withdraw_internal(object::object_address(&store), amount)
924
- }
925
-
926
- /// Deposit the fungible asset into the `store` ignoring `frozen`.
927
- public fun deposit_with_ref<T: key>(
928
- ref: &TransferRef,
929
- store: Object<T>,
930
- fa: FungibleAsset
931
- ) acquires FungibleStore, ConcurrentFungibleBalance {
932
- assert!(
933
- ref.metadata == fa.metadata,
934
- error::invalid_argument(ETRANSFER_REF_AND_FUNGIBLE_ASSET_MISMATCH)
935
- );
936
- deposit_internal(object::object_address(&store), fa);
937
- }
938
-
939
- /// Transfer `amount` of the fungible asset with `TransferRef` even it is frozen.
940
- public fun transfer_with_ref<T: key>(
941
- transfer_ref: &TransferRef,
942
- from: Object<T>,
943
- to: Object<T>,
944
- amount: u64,
945
- ) acquires FungibleStore, ConcurrentFungibleBalance {
946
- let fa = withdraw_with_ref(transfer_ref, from, amount);
947
- deposit_with_ref(transfer_ref, to, fa);
948
- }
949
-
950
- /// Mutate specified fields of the fungible asset's `Metadata`.
951
- public fun mutate_metadata(
952
- metadata_ref: &MutateMetadataRef,
953
- name: Option<String>,
954
- symbol: Option<String>,
955
- decimals: Option<u8>,
956
- icon_uri: Option<String>,
957
- project_uri: Option<String>,
958
- ) acquires Metadata {
959
- let metadata_address = object::object_address(&metadata_ref.metadata);
960
- let mutable_metadata = borrow_global_mut<Metadata>(metadata_address);
961
-
962
- if (option::is_some(&name)){
963
- mutable_metadata.name = option::extract(&mut name);
964
- };
965
- if (option::is_some(&symbol)){
966
- mutable_metadata.symbol = option::extract(&mut symbol);
967
- };
968
- if (option::is_some(&decimals)){
969
- mutable_metadata.decimals = option::extract(&mut decimals);
970
- };
971
- if (option::is_some(&icon_uri)){
972
- mutable_metadata.icon_uri = option::extract(&mut icon_uri);
973
- };
974
- if (option::is_some(&project_uri)){
975
- mutable_metadata.project_uri = option::extract(&mut project_uri);
976
- };
977
- }
978
-
979
- /// Create a fungible asset with zero amount.
980
- /// This can be useful when starting a series of computations where the initial value is 0.
981
- public fun zero<T: key>(metadata: Object<T>): FungibleAsset {
982
- FungibleAsset {
983
- metadata: object::convert(metadata),
984
- amount: 0,
985
- }
986
- }
987
-
988
- /// Extract a given amount from the given fungible asset and return a new one.
989
- public fun extract(fungible_asset: &mut FungibleAsset, amount: u64): FungibleAsset {
990
- assert!(fungible_asset.amount >= amount, error::invalid_argument(EINSUFFICIENT_BALANCE));
991
- fungible_asset.amount = fungible_asset.amount - amount;
992
- FungibleAsset {
993
- metadata: fungible_asset.metadata,
994
- amount,
995
- }
996
- }
997
-
998
- /// "Merges" the two given fungible assets. The fungible asset passed in as `dst_fungible_asset` will have a value
999
- /// equal to the sum of the two (`dst_fungible_asset` and `src_fungible_asset`).
1000
- public fun merge(dst_fungible_asset: &mut FungibleAsset, src_fungible_asset: FungibleAsset) {
1001
- let FungibleAsset { metadata, amount } = src_fungible_asset;
1002
- assert!(metadata == dst_fungible_asset.metadata, error::invalid_argument(EFUNGIBLE_ASSET_MISMATCH));
1003
- dst_fungible_asset.amount = dst_fungible_asset.amount + amount;
1004
- }
1005
-
1006
- /// Destroy an empty fungible asset.
1007
- public fun destroy_zero(fungible_asset: FungibleAsset) {
1008
- let FungibleAsset { amount, metadata: _ } = fungible_asset;
1009
- assert!(amount == 0, error::invalid_argument(EAMOUNT_IS_NOT_ZERO));
1010
- }
1011
-
1012
- public(friend) fun deposit_internal(store_addr: address, fa: FungibleAsset) acquires FungibleStore, ConcurrentFungibleBalance {
1013
- let FungibleAsset { metadata, amount } = fa;
1014
- assert!(exists<FungibleStore>(store_addr), error::not_found(EFUNGIBLE_STORE_EXISTENCE));
1015
- let store = borrow_global_mut<FungibleStore>(store_addr);
1016
- assert!(metadata == store.metadata, error::invalid_argument(EFUNGIBLE_ASSET_AND_STORE_MISMATCH));
1017
-
1018
- if (amount == 0) return;
1019
-
1020
- if (store.balance == 0 && concurrent_fungible_balance_exists_inline(store_addr)) {
1021
- let balance_resource = borrow_global_mut<ConcurrentFungibleBalance>(store_addr);
1022
- aggregator_v2::add(&mut balance_resource.balance, amount);
1023
- } else {
1024
- store.balance = store.balance + amount;
1025
- };
1026
-
1027
- event::emit(Deposit { store: store_addr, amount });
1028
- }
1029
-
1030
- /// Extract `amount` of the fungible asset from `store`.
1031
- public(friend) fun withdraw_internal(
1032
- store_addr: address,
1033
- amount: u64,
1034
- ): FungibleAsset acquires FungibleStore, ConcurrentFungibleBalance {
1035
- assert!(exists<FungibleStore>(store_addr), error::not_found(EFUNGIBLE_STORE_EXISTENCE));
1036
-
1037
- let store = borrow_global_mut<FungibleStore>(store_addr);
1038
- let metadata = store.metadata;
1039
- if (amount != 0) {
1040
- if (store.balance == 0 && concurrent_fungible_balance_exists_inline(store_addr)) {
1041
- let balance_resource = borrow_global_mut<ConcurrentFungibleBalance>(store_addr);
1042
- assert!(
1043
- aggregator_v2::try_sub(&mut balance_resource.balance, amount),
1044
- error::invalid_argument(EINSUFFICIENT_BALANCE)
1045
- );
1046
- } else {
1047
- assert!(store.balance >= amount, error::invalid_argument(EINSUFFICIENT_BALANCE));
1048
- store.balance = store.balance - amount;
1049
- };
1050
-
1051
- event::emit<Withdraw>(Withdraw { store: store_addr, amount });
1052
- };
1053
- FungibleAsset { metadata, amount }
1054
- }
1055
-
1056
- /// Increase the supply of a fungible asset by minting.
1057
- fun increase_supply<T: key>(metadata: &Object<T>, amount: u64) acquires Supply, ConcurrentSupply {
1058
- if (amount == 0) {
1059
- return
1060
- };
1061
- let metadata_address = object::object_address(metadata);
1062
-
1063
- if (exists<ConcurrentSupply>(metadata_address)) {
1064
- let supply = borrow_global_mut<ConcurrentSupply>(metadata_address);
1065
- assert!(
1066
- aggregator_v2::try_add(&mut supply.current, (amount as u128)),
1067
- error::out_of_range(EMAX_SUPPLY_EXCEEDED)
1068
- );
1069
- } else if (exists<Supply>(metadata_address)) {
1070
- let supply = borrow_global_mut<Supply>(metadata_address);
1071
- if (option::is_some(&supply.maximum)) {
1072
- let max = *option::borrow_mut(&mut supply.maximum);
1073
- assert!(
1074
- max - supply.current >= (amount as u128),
1075
- error::out_of_range(EMAX_SUPPLY_EXCEEDED)
1076
- )
1077
- };
1078
- supply.current = supply.current + (amount as u128);
1079
- } else {
1080
- abort error::not_found(ESUPPLY_NOT_FOUND)
1081
- }
1082
- }
1083
-
1084
- /// Decrease the supply of a fungible asset by burning.
1085
- fun decrease_supply<T: key>(metadata: &Object<T>, amount: u64) acquires Supply, ConcurrentSupply {
1086
- if (amount == 0) {
1087
- return
1088
- };
1089
- let metadata_address = object::object_address(metadata);
1090
-
1091
- if (exists<ConcurrentSupply>(metadata_address)) {
1092
- let supply = borrow_global_mut<ConcurrentSupply>(metadata_address);
1093
-
1094
- assert!(
1095
- aggregator_v2::try_sub(&mut supply.current, (amount as u128)),
1096
- error::out_of_range(ESUPPLY_UNDERFLOW)
1097
- );
1098
- } else if (exists<Supply>(metadata_address)) {
1099
- assert!(exists<Supply>(metadata_address), error::not_found(ESUPPLY_NOT_FOUND));
1100
- let supply = borrow_global_mut<Supply>(metadata_address);
1101
- assert!(
1102
- supply.current >= (amount as u128),
1103
- error::invalid_state(ESUPPLY_UNDERFLOW)
1104
- );
1105
- supply.current = supply.current - (amount as u128);
1106
- } else {
1107
- assert!(false, error::not_found(ESUPPLY_NOT_FOUND));
1108
- }
1109
- }
1110
-
1111
- inline fun borrow_fungible_metadata<T: key>(
1112
- metadata: &Object<T>
1113
- ): &Metadata acquires Metadata {
1114
- let addr = object::object_address(metadata);
1115
- borrow_global<Metadata>(addr)
1116
- }
1117
-
1118
- inline fun borrow_fungible_metadata_mut<T: key>(
1119
- metadata: &Object<T>
1120
- ): &mut Metadata acquires Metadata {
1121
- let addr = object::object_address(metadata);
1122
- borrow_global_mut<Metadata>(addr)
1123
- }
1124
-
1125
- inline fun borrow_store_resource<T: key>(store: &Object<T>): &FungibleStore acquires FungibleStore {
1126
- let store_addr = object::object_address(store);
1127
- assert!(exists<FungibleStore>(store_addr), error::not_found(EFUNGIBLE_STORE_EXISTENCE));
1128
- borrow_global<FungibleStore>(store_addr)
1129
- }
1130
-
1131
- public fun upgrade_to_concurrent(
1132
- ref: &ExtendRef,
1133
- ) acquires Supply {
1134
- let metadata_object_address = object::address_from_extend_ref(ref);
1135
- let metadata_object_signer = object::generate_signer_for_extending(ref);
1136
- assert!(
1137
- features::concurrent_fungible_assets_enabled(),
1138
- error::invalid_argument(ECONCURRENT_SUPPLY_NOT_ENABLED)
1139
- );
1140
- assert!(exists<Supply>(metadata_object_address), error::not_found(ESUPPLY_NOT_FOUND));
1141
- let Supply {
1142
- current,
1143
- maximum,
1144
- } = move_from<Supply>(metadata_object_address);
1145
-
1146
- let unlimited = option::is_none(&maximum);
1147
- let supply = ConcurrentSupply {
1148
- current: if (unlimited) {
1149
- aggregator_v2::create_unbounded_aggregator_with_value(current)
1150
- }
1151
- else {
1152
- aggregator_v2::create_aggregator_with_value(current, option::extract(&mut maximum))
1153
- },
1154
- };
1155
- move_to(&metadata_object_signer, supply);
1156
- }
1157
-
1158
- public entry fun upgrade_store_to_concurrent<T: key>(
1159
- owner: &signer,
1160
- store: Object<T>,
1161
- ) acquires FungibleStore {
1162
- assert!(object::owns(store, signer::address_of(owner)), error::permission_denied(ENOT_STORE_OWNER));
1163
- assert!(!is_frozen(store), error::invalid_argument(ESTORE_IS_FROZEN));
1164
- assert!(allow_upgrade_to_concurrent_fungible_balance(), error::invalid_argument(ECONCURRENT_BALANCE_NOT_ENABLED));
1165
- ensure_store_upgraded_to_concurrent_internal(object::object_address(&store));
1166
- }
1167
-
1168
- /// Ensure a known `FungibleStore` has `ConcurrentFungibleBalance`.
1169
- fun ensure_store_upgraded_to_concurrent_internal(
1170
- fungible_store_address: address,
1171
- ) acquires FungibleStore {
1172
- if (exists<ConcurrentFungibleBalance>(fungible_store_address)) {
1173
- return
1174
- };
1175
- let store = borrow_global_mut<FungibleStore>(fungible_store_address);
1176
- let balance = aggregator_v2::create_unbounded_aggregator_with_value(store.balance);
1177
- store.balance = 0;
1178
- let object_signer = create_signer::create_signer(fungible_store_address);
1179
- move_to(&object_signer, ConcurrentFungibleBalance { balance });
1180
- }
1181
-
1182
- #[test_only]
1183
- use aptos_framework::account;
1184
-
1185
- #[test_only]
1186
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
1187
-
1188
- struct TestToken has key {}
1189
-
1190
- #[test_only]
1191
- public fun create_test_token(creator: &signer): (ConstructorRef, Object<TestToken>) {
1192
- account::create_account_for_test(signer::address_of(creator));
1193
- let creator_ref = object::create_named_object(creator, b"TEST");
1194
- let object_signer = object::generate_signer(&creator_ref);
1195
- move_to(&object_signer, TestToken {});
1196
-
1197
- let token = object::object_from_constructor_ref<TestToken>(&creator_ref);
1198
- (creator_ref, token)
1199
- }
1200
-
1201
- #[test_only]
1202
- public fun init_test_metadata(constructor_ref: &ConstructorRef): (MintRef, TransferRef, BurnRef, MutateMetadataRef) {
1203
- add_fungibility(
1204
- constructor_ref,
1205
- option::some(100) /* max supply */,
1206
- string::utf8(b"TEST"),
1207
- string::utf8(b"@@"),
1208
- 0,
1209
- string::utf8(b"http://www.example.com/favicon.ico"),
1210
- string::utf8(b"http://www.example.com"),
1211
- );
1212
- let mint_ref = generate_mint_ref(constructor_ref);
1213
- let burn_ref = generate_burn_ref(constructor_ref);
1214
- let transfer_ref = generate_transfer_ref(constructor_ref);
1215
- let mutate_metadata_ref= generate_mutate_metadata_ref(constructor_ref);
1216
- (mint_ref, transfer_ref, burn_ref, mutate_metadata_ref)
1217
- }
1218
-
1219
- #[test_only]
1220
- public fun create_fungible_asset(
1221
- creator: &signer
1222
- ): (MintRef, TransferRef, BurnRef, MutateMetadataRef, Object<Metadata>) {
1223
- let (creator_ref, token_object) = create_test_token(creator);
1224
- let (mint, transfer, burn, mutate_metadata) = init_test_metadata(&creator_ref);
1225
- (mint, transfer, burn, mutate_metadata, object::convert(token_object))
1226
- }
1227
-
1228
- #[test_only]
1229
- public fun create_test_store<T: key>(owner: &signer, metadata: Object<T>): Object<FungibleStore> {
1230
- let owner_addr = signer::address_of(owner);
1231
- if (!account::exists_at(owner_addr)) {
1232
- account::create_account_for_test(owner_addr);
1233
- };
1234
- create_store(&object::create_object_from_account(owner), metadata)
1235
- }
1236
-
1237
- #[test(creator = @0xcafe)]
1238
- fun test_metadata_basic_flow(creator: &signer) acquires Metadata, Supply, ConcurrentSupply {
1239
- let (creator_ref, metadata) = create_test_token(creator);
1240
- init_test_metadata(&creator_ref);
1241
- assert!(supply(metadata) == option::some(0), 1);
1242
- assert!(maximum(metadata) == option::some(100), 2);
1243
- assert!(name(metadata) == string::utf8(b"TEST"), 3);
1244
- assert!(symbol(metadata) == string::utf8(b"@@"), 4);
1245
- assert!(decimals(metadata) == 0, 5);
1246
- assert!(icon_uri(metadata) == string::utf8(b"http://www.example.com/favicon.ico"), 6);
1247
- assert!(project_uri(metadata) == string::utf8(b"http://www.example.com"), 7);
1248
-
1249
- assert!(metadata(metadata) == Metadata {
1250
- name: string::utf8(b"TEST"),
1251
- symbol: string::utf8(b"@@"),
1252
- decimals: 0,
1253
- icon_uri: string::utf8(b"http://www.example.com/favicon.ico"),
1254
- project_uri: string::utf8(b"http://www.example.com"),
1255
- }, 8);
1256
-
1257
- increase_supply(&metadata, 50);
1258
- assert!(supply(metadata) == option::some(50), 9);
1259
- decrease_supply(&metadata, 30);
1260
- assert!(supply(metadata) == option::some(20), 10);
1261
- }
1262
-
1263
- #[test(creator = @0xcafe)]
1264
- #[expected_failure(abort_code = 0x20005, location = Self)]
1265
- fun test_supply_overflow(creator: &signer) acquires Supply, ConcurrentSupply {
1266
- let (creator_ref, metadata) = create_test_token(creator);
1267
- init_test_metadata(&creator_ref);
1268
- increase_supply(&metadata, 101);
1269
- }
1270
-
1271
- #[test(creator = @0xcafe)]
1272
- fun test_create_and_remove_store(creator: &signer) acquires FungibleStore, FungibleAssetEvents, ConcurrentFungibleBalance {
1273
- let (_, _, _, _, metadata) = create_fungible_asset(creator);
1274
- let creator_ref = object::create_object_from_account(creator);
1275
- create_store(&creator_ref, metadata);
1276
- let delete_ref = object::generate_delete_ref(&creator_ref);
1277
- remove_store(&delete_ref);
1278
- }
1279
-
1280
- #[test(creator = @0xcafe, aaron = @0xface)]
1281
- fun test_e2e_basic_flow(
1282
- creator: &signer,
1283
- aaron: &signer,
1284
- ) acquires FungibleStore, Supply, ConcurrentSupply, DispatchFunctionStore, ConcurrentFungibleBalance, Metadata {
1285
- let (mint_ref, transfer_ref, burn_ref, mutate_metadata_ref, test_token) = create_fungible_asset(creator);
1286
- let metadata = mint_ref.metadata;
1287
- let creator_store = create_test_store(creator, metadata);
1288
- let aaron_store = create_test_store(aaron, metadata);
1289
-
1290
- assert!(supply(test_token) == option::some(0), 1);
1291
- // Mint
1292
- let fa = mint(&mint_ref, 100);
1293
- assert!(supply(test_token) == option::some(100), 2);
1294
- // Deposit
1295
- deposit(creator_store, fa);
1296
- // Withdraw
1297
- let fa = withdraw(creator, creator_store, 80);
1298
- assert!(supply(test_token) == option::some(100), 3);
1299
- deposit(aaron_store, fa);
1300
- // Burn
1301
- burn_from(&burn_ref, aaron_store, 30);
1302
- assert!(supply(test_token) == option::some(70), 4);
1303
- // Transfer
1304
- transfer(creator, creator_store, aaron_store, 10);
1305
- assert!(balance(creator_store) == 10, 5);
1306
- assert!(balance(aaron_store) == 60, 6);
1307
-
1308
- set_frozen_flag(&transfer_ref, aaron_store, true);
1309
- assert!(is_frozen(aaron_store), 7);
1310
- // Mutate Metadata
1311
- mutate_metadata(
1312
- &mutate_metadata_ref,
1313
- option::some(string::utf8(b"mutated_name")),
1314
- option::some(string::utf8(b"mutated_symbol")),
1315
- option::none(),
1316
- option::none(),
1317
- option::none()
1318
- );
1319
- assert!(name(metadata) == string::utf8(b"mutated_name"), 8);
1320
- assert!(symbol(metadata) == string::utf8(b"mutated_symbol"), 9);
1321
- assert!(decimals(metadata) == 0, 10);
1322
- assert!(icon_uri(metadata) == string::utf8(b"http://www.example.com/favicon.ico"), 11);
1323
- assert!(project_uri(metadata) == string::utf8(b"http://www.example.com"), 12);
1324
- }
1325
-
1326
- #[test(creator = @0xcafe)]
1327
- #[expected_failure(abort_code = 0x50003, location = Self)]
1328
- fun test_frozen(
1329
- creator: &signer
1330
- ) acquires FungibleStore, Supply, ConcurrentSupply, DispatchFunctionStore, ConcurrentFungibleBalance {
1331
- let (mint_ref, transfer_ref, _burn_ref, _mutate_metadata_ref, _) = create_fungible_asset(creator);
1332
-
1333
- let creator_store = create_test_store(creator, mint_ref.metadata);
1334
- let fa = mint(&mint_ref, 100);
1335
- set_frozen_flag(&transfer_ref, creator_store, true);
1336
- deposit(creator_store, fa);
1337
- }
1338
-
1339
- #[test(creator = @0xcafe)]
1340
- #[expected_failure(abort_code = 0x50003, location = Self)]
1341
- fun test_mint_to_frozen(
1342
- creator: &signer
1343
- ) acquires FungibleStore, ConcurrentFungibleBalance, Supply, ConcurrentSupply, DispatchFunctionStore {
1344
- let (mint_ref, transfer_ref, _burn_ref, _mutate_metadata_ref, _) = create_fungible_asset(creator);
1345
-
1346
- let creator_store = create_test_store(creator, mint_ref.metadata);
1347
- set_frozen_flag(&transfer_ref, creator_store, true);
1348
- mint_to(&mint_ref, creator_store, 100);
1349
- }
1350
-
1351
- #[test(creator = @0xcafe)]
1352
- #[expected_failure(abort_code = 0x50003, location = aptos_framework::object)]
1353
- fun test_untransferable(
1354
- creator: &signer
1355
- ) {
1356
- let (creator_ref, _) = create_test_token(creator);
1357
- let (mint_ref, _, _, _) = init_test_metadata(&creator_ref);
1358
- set_untransferable(&creator_ref);
1359
-
1360
- let creator_store = create_test_store(creator, mint_ref.metadata);
1361
- object::transfer(creator, creator_store, @0x456);
1362
- }
1363
-
1364
- #[test(creator = @0xcafe, aaron = @0xface)]
1365
- fun test_transfer_with_ref(
1366
- creator: &signer,
1367
- aaron: &signer,
1368
- ) acquires FungibleStore, Supply, ConcurrentSupply, ConcurrentFungibleBalance {
1369
- let (mint_ref, transfer_ref, _burn_ref, _mutate_metadata_ref, _) = create_fungible_asset(creator);
1370
- let metadata = mint_ref.metadata;
1371
- let creator_store = create_test_store(creator, metadata);
1372
- let aaron_store = create_test_store(aaron, metadata);
1373
-
1374
- let fa = mint(&mint_ref, 100);
1375
- set_frozen_flag(&transfer_ref, creator_store, true);
1376
- set_frozen_flag(&transfer_ref, aaron_store, true);
1377
- deposit_with_ref(&transfer_ref, creator_store, fa);
1378
- transfer_with_ref(&transfer_ref, creator_store, aaron_store, 80);
1379
- assert!(balance(creator_store) == 20, 1);
1380
- assert!(balance(aaron_store) == 80, 2);
1381
- assert!(!!is_frozen(creator_store), 3);
1382
- assert!(!!is_frozen(aaron_store), 4);
1383
- }
1384
-
1385
- #[test(creator = @0xcafe)]
1386
- fun test_mutate_metadata(
1387
- creator: &signer
1388
- ) acquires Metadata {
1389
- let (mint_ref, _transfer_ref, _burn_ref, mutate_metadata_ref, _) = create_fungible_asset(creator);
1390
- let metadata = mint_ref.metadata;
1391
-
1392
- mutate_metadata(
1393
- &mutate_metadata_ref,
1394
- option::some(string::utf8(b"mutated_name")),
1395
- option::some(string::utf8(b"mutated_symbol")),
1396
- option::some(10),
1397
- option::some(string::utf8(b"http://www.mutated-example.com/favicon.ico")),
1398
- option::some(string::utf8(b"http://www.mutated-example.com"))
1399
- );
1400
- assert!(name(metadata) == string::utf8(b"mutated_name"), 1);
1401
- assert!(symbol(metadata) == string::utf8(b"mutated_symbol"), 2);
1402
- assert!(decimals(metadata) == 10, 3);
1403
- assert!(icon_uri(metadata) == string::utf8(b"http://www.mutated-example.com/favicon.ico"), 4);
1404
- assert!(project_uri(metadata) == string::utf8(b"http://www.mutated-example.com"), 5);
1405
- }
1406
-
1407
- #[test(creator = @0xcafe)]
1408
- fun test_partial_mutate_metadata(
1409
- creator: &signer
1410
- ) acquires Metadata {
1411
- let (mint_ref, _transfer_ref, _burn_ref, mutate_metadata_ref, _) = create_fungible_asset(creator);
1412
- let metadata = mint_ref.metadata;
1413
-
1414
- mutate_metadata(
1415
- &mutate_metadata_ref,
1416
- option::some(string::utf8(b"mutated_name")),
1417
- option::some(string::utf8(b"mutated_symbol")),
1418
- option::none(),
1419
- option::none(),
1420
- option::none()
1421
- );
1422
- assert!(name(metadata) == string::utf8(b"mutated_name"), 8);
1423
- assert!(symbol(metadata) == string::utf8(b"mutated_symbol"), 9);
1424
- assert!(decimals(metadata) == 0, 10);
1425
- assert!(icon_uri(metadata) == string::utf8(b"http://www.example.com/favicon.ico"), 11);
1426
- assert!(project_uri(metadata) == string::utf8(b"http://www.example.com"), 12);
1427
- }
1428
-
1429
- #[test(creator = @0xcafe)]
1430
- fun test_merge_and_exact(creator: &signer) acquires Supply, ConcurrentSupply {
1431
- let (mint_ref, _transfer_ref, burn_ref, _mutate_metadata_ref, _) = create_fungible_asset(creator);
1432
- let fa = mint(&mint_ref, 100);
1433
- let cash = extract(&mut fa, 80);
1434
- assert!(fa.amount == 20, 1);
1435
- assert!(cash.amount == 80, 2);
1436
- let more_cash = extract(&mut fa, 20);
1437
- destroy_zero(fa);
1438
- merge(&mut cash, more_cash);
1439
- assert!(cash.amount == 100, 3);
1440
- burn(&burn_ref, cash);
1441
- }
1442
-
1443
- #[test(creator = @0xcafe)]
1444
- #[expected_failure(abort_code = 0x10012, location = Self)]
1445
- fun test_add_fungibility_to_deletable_object(creator: &signer) {
1446
- account::create_account_for_test(signer::address_of(creator));
1447
- let creator_ref = &object::create_object_from_account(creator);
1448
- init_test_metadata(creator_ref);
1449
- }
1450
-
1451
- #[test(creator = @0xcafe, aaron = @0xface)]
1452
- #[expected_failure(abort_code = 0x10006, location = Self)]
1453
- fun test_fungible_asset_mismatch_when_merge(creator: &signer, aaron: &signer) {
1454
- let (_, _, _, _, metadata1) = create_fungible_asset(creator);
1455
- let (_, _, _, _, metadata2) = create_fungible_asset(aaron);
1456
- let base = FungibleAsset {
1457
- metadata: metadata1,
1458
- amount: 1,
1459
- };
1460
- let addon = FungibleAsset {
1461
- metadata: metadata2,
1462
- amount: 1
1463
- };
1464
- merge(&mut base, addon);
1465
- let FungibleAsset {
1466
- metadata: _,
1467
- amount: _
1468
- } = base;
1469
- }
1470
-
1471
- #[test(fx = @aptos_framework, creator = @0xcafe)]
1472
- fun test_fungible_asset_upgrade(fx: &signer, creator: &signer) acquires Supply, ConcurrentSupply, FungibleStore, ConcurrentFungibleBalance {
1473
- let supply_feature = features::get_concurrent_fungible_assets_feature();
1474
- let balance_feature = features::get_concurrent_fungible_balance_feature();
1475
- let default_balance_feature = features::get_default_to_concurrent_fungible_balance_feature();
1476
-
1477
- features::change_feature_flags_for_testing(fx, vector[], vector[supply_feature, balance_feature, default_balance_feature]);
1478
-
1479
- let (creator_ref, token_object) = create_test_token(creator);
1480
- let (mint_ref, transfer_ref, _burn, _mutate_metadata_ref) = init_test_metadata(&creator_ref);
1481
- let test_token = object::convert<TestToken, Metadata>(token_object);
1482
- assert!(exists<Supply>(object::object_address(&test_token)), 1);
1483
- assert!(!exists<ConcurrentSupply>(object::object_address(&test_token)), 2);
1484
- let creator_store = create_test_store(creator, test_token);
1485
- assert!(exists<FungibleStore>(object::object_address(&creator_store)), 3);
1486
- assert!(!exists<ConcurrentFungibleBalance>(object::object_address(&creator_store)), 4);
1487
-
1488
- let fa = mint(&mint_ref, 30);
1489
- assert!(supply(test_token) == option::some(30), 5);
1490
-
1491
- deposit_with_ref(&transfer_ref, creator_store, fa);
1492
- assert!(exists<FungibleStore>(object::object_address(&creator_store)), 13);
1493
- assert!(borrow_store_resource(&creator_store).balance == 30, 14);
1494
- assert!(!exists<ConcurrentFungibleBalance>(object::object_address(&creator_store)), 15);
1495
-
1496
- features::change_feature_flags_for_testing(fx, vector[supply_feature, balance_feature], vector[default_balance_feature]);
1497
-
1498
- let extend_ref = object::generate_extend_ref(&creator_ref);
1499
- // manual conversion of supply
1500
- upgrade_to_concurrent(&extend_ref);
1501
- assert!(!exists<Supply>(object::object_address(&test_token)), 6);
1502
- assert!(exists<ConcurrentSupply>(object::object_address(&test_token)), 7);
1503
-
1504
- // assert conversion of balance
1505
- upgrade_store_to_concurrent(creator, creator_store);
1506
- let fb = withdraw_with_ref(&transfer_ref, creator_store, 20);
1507
- // both store and new balance need to exist. Old balance should be 0.
1508
- assert!(exists<FungibleStore>(object::object_address(&creator_store)), 9);
1509
- assert!(borrow_store_resource(&creator_store).balance == 0, 10);
1510
- assert!(exists<ConcurrentFungibleBalance>(object::object_address(&creator_store)), 11);
1511
- assert!(aggregator_v2::read(&borrow_global<ConcurrentFungibleBalance>(object::object_address(&creator_store)).balance) == 10, 12);
1512
-
1513
- deposit_with_ref(&transfer_ref, creator_store, fb);
1514
- }
1515
-
1516
- #[test(fx = @aptos_framework, creator = @0xcafe)]
1517
- fun test_fungible_asset_default_concurrent(fx: &signer, creator: &signer) acquires Supply, ConcurrentSupply, FungibleStore, ConcurrentFungibleBalance {
1518
- let supply_feature = features::get_concurrent_fungible_assets_feature();
1519
- let balance_feature = features::get_concurrent_fungible_balance_feature();
1520
- let default_balance_feature = features::get_default_to_concurrent_fungible_balance_feature();
1521
-
1522
- features::change_feature_flags_for_testing(fx, vector[supply_feature, balance_feature, default_balance_feature], vector[]);
1523
-
1524
- let (creator_ref, token_object) = create_test_token(creator);
1525
- let (mint_ref, transfer_ref, _burn, _mutate_metadata_ref) = init_test_metadata(&creator_ref);
1526
- let test_token = object::convert<TestToken, Metadata>(token_object);
1527
- assert!(!exists<Supply>(object::object_address(&test_token)), 1);
1528
- assert!(exists<ConcurrentSupply>(object::object_address(&test_token)), 2);
1529
- let creator_store = create_test_store(creator, test_token);
1530
- assert!(exists<FungibleStore>(object::object_address(&creator_store)), 3);
1531
- assert!(exists<ConcurrentFungibleBalance>(object::object_address(&creator_store)), 4);
1532
-
1533
- let fa = mint(&mint_ref, 30);
1534
- assert!(supply(test_token) == option::some(30), 5);
1535
-
1536
- deposit_with_ref(&transfer_ref, creator_store, fa);
1537
-
1538
- assert!(exists<FungibleStore>(object::object_address(&creator_store)), 9);
1539
- assert!(borrow_store_resource(&creator_store).balance == 0, 10);
1540
- assert!(exists<ConcurrentFungibleBalance>(object::object_address(&creator_store)), 11);
1541
- assert!(aggregator_v2::read(&borrow_global<ConcurrentFungibleBalance>(object::object_address(&creator_store)).balance) == 30, 12);
1542
- }
1543
-
1544
- #[deprecated]
1545
- #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
1546
- struct FungibleAssetEvents has key {
1547
- deposit_events: event::EventHandle<DepositEvent>,
1548
- withdraw_events: event::EventHandle<WithdrawEvent>,
1549
- frozen_events: event::EventHandle<FrozenEvent>,
1550
- }
1551
-
1552
- #[deprecated]
1553
- struct DepositEvent has drop, store {
1554
- amount: u64,
1555
- }
1556
-
1557
- #[deprecated]
1558
- struct WithdrawEvent has drop, store {
1559
- amount: u64,
1560
- }
1561
-
1562
- #[deprecated]
1563
- struct FrozenEvent has drop, store {
1564
- frozen: bool,
1565
- }
1566
- }