wowok 2.2.3 → 2.2.5

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 (427) hide show
  1. package/dist/cjs/_deps/bcs/bcs-type.d.ts +127 -0
  2. package/dist/cjs/_deps/bcs/bcs-type.js +1 -0
  3. package/dist/cjs/_deps/bcs/bcs.d.ts +49 -0
  4. package/dist/cjs/_deps/bcs/bcs.js +1 -0
  5. package/dist/cjs/_deps/bcs/index.d.ts +16 -0
  6. package/dist/cjs/_deps/bcs/index.js +1 -0
  7. package/dist/cjs/_deps/bcs/reader.d.ts +15 -0
  8. package/dist/cjs/_deps/bcs/reader.js +1 -0
  9. package/dist/cjs/_deps/bcs/types.d.ts +24 -0
  10. package/dist/cjs/_deps/bcs/uleb.d.ts +5 -0
  11. package/dist/cjs/_deps/bcs/uleb.js +1 -0
  12. package/dist/cjs/_deps/bcs/utils.d.ts +4 -0
  13. package/dist/cjs/_deps/bcs/utils.js +1 -0
  14. package/dist/cjs/_deps/bcs/writer.d.ts +28 -0
  15. package/dist/cjs/_deps/bcs/writer.js +1 -0
  16. package/dist/cjs/_deps/utils/b58.d.ts +2 -0
  17. package/dist/cjs/_deps/utils/b58.js +1 -0
  18. package/dist/cjs/_deps/utils/b64.d.ts +2 -0
  19. package/dist/cjs/_deps/utils/b64.js +1 -0
  20. package/dist/cjs/_deps/utils/chunk.d.ts +1 -0
  21. package/dist/cjs/_deps/utils/chunk.js +1 -0
  22. package/dist/cjs/_deps/utils/dataloader.d.ts +43 -0
  23. package/dist/cjs/_deps/utils/dataloader.js +1 -0
  24. package/dist/cjs/_deps/utils/hex.d.ts +2 -0
  25. package/dist/cjs/_deps/utils/hex.js +1 -0
  26. package/dist/cjs/_deps/utils/index.d.ts +7 -0
  27. package/dist/cjs/_deps/utils/index.js +1 -0
  28. package/dist/cjs/_deps/utils/types.d.ts +4 -0
  29. package/dist/cjs/_deps/utils/with-resolver.d.ts +6 -0
  30. package/dist/cjs/_deps/utils/with-resolver.js +1 -0
  31. package/dist/cjs/bcs/bcs.d.ts +275 -313
  32. package/dist/cjs/bcs/bcs.js +1 -1
  33. package/dist/cjs/bcs/effects.d.ts +193 -193
  34. package/dist/cjs/bcs/effects.js +1 -1
  35. package/dist/cjs/bcs/index.d.ts +1 -1
  36. package/dist/cjs/bcs/index.js +1 -1
  37. package/dist/cjs/bcs/pure.d.ts +1 -1
  38. package/dist/cjs/bcs/pure.js +1 -1
  39. package/dist/cjs/bcs/type-tag-serializer.js +1 -1
  40. package/dist/cjs/cryptography/index.d.ts +1 -1
  41. package/dist/cjs/cryptography/index.js +1 -1
  42. package/dist/cjs/cryptography/intent.js +1 -1
  43. package/dist/cjs/cryptography/keypair.d.ts +2 -2
  44. package/dist/cjs/cryptography/keypair.js +1 -1
  45. package/dist/cjs/cryptography/mnemonics.js +1 -1
  46. package/dist/cjs/cryptography/publickey.d.ts +1 -1
  47. package/dist/cjs/cryptography/publickey.js +1 -1
  48. package/dist/cjs/cryptography/signature-scheme.d.ts +4 -15
  49. package/dist/cjs/cryptography/signature-scheme.js +1 -1
  50. package/dist/cjs/cryptography/signature.d.ts +1 -9
  51. package/dist/cjs/cryptography/signature.js +1 -1
  52. package/dist/cjs/experimental/client.d.ts +1 -1
  53. package/dist/cjs/grpc/client.d.ts +0 -2
  54. package/dist/cjs/grpc/client.js +1 -1
  55. package/dist/cjs/grpc/core.js +1 -1
  56. package/dist/cjs/grpc/proto/google/protobuf/any.d.ts +7 -0
  57. package/dist/cjs/grpc/proto/google/protobuf/any.js +1 -1
  58. package/dist/cjs/grpc/proto/google/protobuf/duration.d.ts +8 -0
  59. package/dist/cjs/grpc/proto/google/protobuf/duration.js +1 -1
  60. package/dist/cjs/grpc/proto/google/protobuf/empty.d.ts +8 -0
  61. package/dist/cjs/grpc/proto/google/protobuf/empty.js +1 -1
  62. package/dist/cjs/grpc/proto/google/protobuf/field_mask.d.ts +8 -0
  63. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +1 -1
  64. package/dist/cjs/grpc/proto/google/protobuf/struct.d.ts +15 -0
  65. package/dist/cjs/grpc/proto/google/protobuf/struct.js +1 -1
  66. package/dist/cjs/grpc/proto/google/protobuf/timestamp.d.ts +8 -0
  67. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +1 -1
  68. package/dist/cjs/grpc/proto/google/rpc/error_details.d.ts +48 -0
  69. package/dist/cjs/grpc/proto/google/rpc/error_details.js +1 -1
  70. package/dist/cjs/grpc/proto/google/rpc/status.d.ts +8 -0
  71. package/dist/cjs/grpc/proto/google/rpc/status.js +1 -1
  72. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +1 -1
  73. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +1 -1
  74. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +1 -1
  75. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +1 -1
  76. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +1 -1
  77. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +1 -1
  78. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.d.ts +2 -2
  79. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +1 -1
  80. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +1 -1
  81. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +1 -1
  82. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +1 -1
  83. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +1 -1
  84. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.d.ts +9 -87
  85. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +1 -1
  86. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.d.ts +2 -6
  87. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +1 -1
  88. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.d.ts +0 -2
  89. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +1 -1
  90. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +1 -1
  91. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.d.ts +2 -2
  92. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +1 -1
  93. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.d.ts +13 -51
  94. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1 -1
  95. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +1 -1
  96. package/dist/cjs/index.d.ts +1 -1
  97. package/dist/cjs/index.js +1 -1
  98. package/dist/cjs/jsonRpc/client.js +1 -1
  99. package/dist/cjs/jsonRpc/core.js +1 -1
  100. package/dist/cjs/jsonRpc/json-rpc-resolver.js +1 -1
  101. package/dist/cjs/jsonRpc/types/chain.d.ts +0 -5
  102. package/dist/cjs/jsonRpc/types/generated.d.ts +5 -57
  103. package/dist/cjs/jsonRpc/types/params.d.ts +0 -17
  104. package/dist/cjs/keypairs/falcon512/index.d.ts +2 -0
  105. package/dist/cjs/keypairs/falcon512/index.js +1 -0
  106. package/dist/cjs/keypairs/falcon512/keypair.d.ts +19 -0
  107. package/dist/cjs/keypairs/falcon512/keypair.js +1 -0
  108. package/dist/{esm/keypairs/ed25519 → cjs/keypairs/falcon512}/publickey.d.ts +2 -2
  109. package/dist/cjs/keypairs/falcon512/publickey.js +1 -0
  110. package/dist/cjs/keypairs/index.d.ts +1 -4
  111. package/dist/cjs/keypairs/index.js +1 -1
  112. package/dist/cjs/multisig/publickey.js +1 -1
  113. package/dist/cjs/multisig/signer.js +1 -1
  114. package/dist/cjs/transactions/Commands.js +1 -1
  115. package/dist/cjs/transactions/Inputs.d.ts +1 -1
  116. package/dist/cjs/transactions/Inputs.js +1 -1
  117. package/dist/cjs/transactions/Transaction.d.ts +5 -5
  118. package/dist/cjs/transactions/Transaction.js +1 -1
  119. package/dist/cjs/transactions/TransactionData.js +1 -1
  120. package/dist/cjs/transactions/__tests__/Transaction.test.js +1 -1
  121. package/dist/cjs/transactions/__tests__/bcs.test.js +1 -1
  122. package/dist/cjs/transactions/data/internal.d.ts +2 -2
  123. package/dist/cjs/transactions/data/v1.d.ts +2 -2
  124. package/dist/cjs/transactions/data/v1.js +1 -1
  125. package/dist/cjs/transactions/data/v2.d.ts +1 -1
  126. package/dist/cjs/transactions/executor/parallel.js +1 -1
  127. package/dist/cjs/transactions/executor/serial.js +1 -1
  128. package/dist/cjs/transactions/pure.d.ts +1 -1
  129. package/dist/cjs/transactions/pure.js +1 -1
  130. package/dist/cjs/transactions/serializer.d.ts +1 -1
  131. package/dist/cjs/utils/dynamic-fields.js +1 -1
  132. package/dist/cjs/utils/index.d.ts +1 -1
  133. package/dist/cjs/utils/index.js +1 -1
  134. package/dist/cjs/utils/move-registry.js +1 -1
  135. package/dist/cjs/utils/sui-types.js +1 -1
  136. package/dist/cjs/verify/verify.js +1 -1
  137. package/dist/cjs/w/call/arbitration.js +1 -1
  138. package/dist/cjs/w/call/base.js +1 -1
  139. package/dist/cjs/w/call/contact.js +1 -1
  140. package/dist/cjs/w/call/demand.js +1 -1
  141. package/dist/cjs/w/call/guard.js +1 -1
  142. package/dist/cjs/w/call/machine.js +1 -1
  143. package/dist/cjs/w/call/personal.js +1 -1
  144. package/dist/cjs/w/call/proof.d.ts +3 -3
  145. package/dist/cjs/w/call/proof.js +1 -1
  146. package/dist/cjs/w/call/repository.js +1 -1
  147. package/dist/cjs/w/call/reward.js +1 -1
  148. package/dist/cjs/w/call/service.js +1 -1
  149. package/dist/cjs/w/call/treasury.js +1 -1
  150. package/dist/cjs/w/local/account.d.ts +11 -4
  151. package/dist/cjs/w/local/account.js +1 -1
  152. package/dist/cjs/w/local/storage.js +1 -1
  153. package/dist/cjs/w/local/util.js +1 -1
  154. package/dist/cjs/w/local/wip.d.ts +1 -1
  155. package/dist/cjs/w/local/wip.js +1 -1
  156. package/dist/cjs/w/messenger/crypto.d.ts +1 -3
  157. package/dist/cjs/w/messenger/crypto.js +1 -1
  158. package/dist/cjs/w/messenger/messenger-api.js +1 -1
  159. package/dist/cjs/w/messenger/messenger-manager.js +1 -1
  160. package/dist/cjs/w/messenger/messenger.js +1 -1
  161. package/dist/cjs/w/messenger/pq/crypto.d.ts +6 -6
  162. package/dist/cjs/w/messenger/pq/crypto.js +1 -1
  163. package/dist/cjs/w/messenger/pq/pqxdh.d.ts +3 -6
  164. package/dist/cjs/w/messenger/pq/pqxdh.js +1 -1
  165. package/dist/cjs/w/messenger/pq/session.d.ts +6 -4
  166. package/dist/cjs/w/messenger/pq/session.js +1 -1
  167. package/dist/cjs/w/messenger/pq/spqr.js +1 -1
  168. package/dist/cjs/w/messenger/pq/store-adapter.d.ts +1 -3
  169. package/dist/cjs/w/messenger/pq/store-adapter.js +1 -1
  170. package/dist/cjs/w/messenger/pq/types.d.ts +4 -5
  171. package/dist/cjs/w/messenger/pq/types.js +1 -1
  172. package/dist/cjs/w/messenger/session.d.ts +4 -5
  173. package/dist/cjs/w/messenger/session.js +1 -1
  174. package/dist/cjs/w/messenger/storage.js +1 -1
  175. package/dist/cjs/w/messenger/types.d.ts +7 -10
  176. package/dist/cjs/w/messenger/types.js +1 -1
  177. package/dist/cjs/w/query/object.js +1 -1
  178. package/dist/esm/_deps/bcs/bcs-type.d.ts +127 -0
  179. package/dist/esm/_deps/bcs/bcs-type.js +1 -0
  180. package/dist/esm/_deps/bcs/bcs.d.ts +49 -0
  181. package/dist/esm/_deps/bcs/bcs.js +1 -0
  182. package/dist/esm/_deps/bcs/index.d.ts +16 -0
  183. package/dist/esm/_deps/bcs/index.js +1 -0
  184. package/dist/esm/_deps/bcs/reader.d.ts +15 -0
  185. package/dist/esm/_deps/bcs/reader.js +1 -0
  186. package/dist/esm/_deps/bcs/types.d.ts +24 -0
  187. package/dist/esm/_deps/bcs/types.js +1 -0
  188. package/dist/esm/_deps/bcs/uleb.d.ts +5 -0
  189. package/dist/esm/_deps/bcs/uleb.js +1 -0
  190. package/dist/esm/_deps/bcs/utils.d.ts +4 -0
  191. package/dist/esm/_deps/bcs/utils.js +1 -0
  192. package/dist/esm/_deps/bcs/writer.d.ts +28 -0
  193. package/dist/esm/_deps/bcs/writer.js +1 -0
  194. package/dist/esm/_deps/utils/b58.d.ts +2 -0
  195. package/dist/esm/_deps/utils/b58.js +1 -0
  196. package/dist/esm/_deps/utils/b64.d.ts +2 -0
  197. package/dist/esm/_deps/utils/b64.js +1 -0
  198. package/dist/esm/_deps/utils/chunk.d.ts +1 -0
  199. package/dist/esm/_deps/utils/chunk.js +1 -0
  200. package/dist/esm/_deps/utils/dataloader.d.ts +43 -0
  201. package/dist/esm/_deps/utils/dataloader.js +1 -0
  202. package/dist/esm/_deps/utils/hex.d.ts +2 -0
  203. package/dist/esm/_deps/utils/hex.js +1 -0
  204. package/dist/esm/_deps/utils/index.d.ts +7 -0
  205. package/dist/esm/_deps/utils/index.js +1 -0
  206. package/dist/esm/_deps/utils/types.d.ts +4 -0
  207. package/dist/esm/_deps/utils/types.js +1 -0
  208. package/dist/esm/_deps/utils/with-resolver.d.ts +6 -0
  209. package/dist/esm/_deps/utils/with-resolver.js +1 -0
  210. package/dist/esm/bcs/bcs.d.ts +275 -313
  211. package/dist/esm/bcs/bcs.js +1 -1
  212. package/dist/esm/bcs/effects.d.ts +193 -193
  213. package/dist/esm/bcs/effects.js +1 -1
  214. package/dist/esm/bcs/index.d.ts +1 -1
  215. package/dist/esm/bcs/index.js +1 -1
  216. package/dist/esm/bcs/pure.d.ts +1 -1
  217. package/dist/esm/bcs/pure.js +1 -1
  218. package/dist/esm/bcs/type-tag-serializer.js +1 -1
  219. package/dist/esm/cryptography/index.d.ts +1 -1
  220. package/dist/esm/cryptography/index.js +1 -1
  221. package/dist/esm/cryptography/intent.js +1 -1
  222. package/dist/esm/cryptography/keypair.d.ts +2 -2
  223. package/dist/esm/cryptography/keypair.js +1 -1
  224. package/dist/esm/cryptography/mnemonics.js +1 -1
  225. package/dist/esm/cryptography/publickey.d.ts +1 -1
  226. package/dist/esm/cryptography/publickey.js +1 -1
  227. package/dist/esm/cryptography/signature-scheme.d.ts +4 -15
  228. package/dist/esm/cryptography/signature-scheme.js +1 -1
  229. package/dist/esm/cryptography/signature.d.ts +1 -9
  230. package/dist/esm/cryptography/signature.js +1 -1
  231. package/dist/esm/experimental/client.d.ts +1 -1
  232. package/dist/esm/grpc/client.d.ts +0 -2
  233. package/dist/esm/grpc/client.js +1 -1
  234. package/dist/esm/grpc/core.js +1 -1
  235. package/dist/esm/grpc/proto/google/protobuf/any.d.ts +7 -0
  236. package/dist/esm/grpc/proto/google/protobuf/any.js +1 -1
  237. package/dist/esm/grpc/proto/google/protobuf/duration.d.ts +8 -0
  238. package/dist/esm/grpc/proto/google/protobuf/duration.js +1 -1
  239. package/dist/esm/grpc/proto/google/protobuf/empty.d.ts +8 -0
  240. package/dist/esm/grpc/proto/google/protobuf/empty.js +1 -1
  241. package/dist/esm/grpc/proto/google/protobuf/field_mask.d.ts +8 -0
  242. package/dist/esm/grpc/proto/google/protobuf/field_mask.js +1 -1
  243. package/dist/esm/grpc/proto/google/protobuf/struct.d.ts +15 -0
  244. package/dist/esm/grpc/proto/google/protobuf/struct.js +1 -1
  245. package/dist/esm/grpc/proto/google/protobuf/timestamp.d.ts +8 -0
  246. package/dist/esm/grpc/proto/google/protobuf/timestamp.js +1 -1
  247. package/dist/esm/grpc/proto/google/rpc/error_details.d.ts +48 -0
  248. package/dist/esm/grpc/proto/google/rpc/error_details.js +1 -1
  249. package/dist/esm/grpc/proto/google/rpc/status.d.ts +8 -0
  250. package/dist/esm/grpc/proto/google/rpc/status.js +1 -1
  251. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +1 -1
  252. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +1 -1
  253. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +1 -1
  254. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +1 -1
  255. package/dist/esm/grpc/proto/sui/rpc/v2/event.js +1 -1
  256. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +1 -1
  257. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.d.ts +2 -2
  258. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +1 -1
  259. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +1 -1
  260. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +1 -1
  261. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +1 -1
  262. package/dist/esm/grpc/proto/sui/rpc/v2/object.js +1 -1
  263. package/dist/esm/grpc/proto/sui/rpc/v2/signature.d.ts +9 -87
  264. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +1 -1
  265. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.d.ts +2 -6
  266. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +1 -1
  267. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.d.ts +0 -2
  268. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +1 -1
  269. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +1 -1
  270. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.d.ts +2 -2
  271. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +1 -1
  272. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.d.ts +13 -51
  273. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +1 -1
  274. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +1 -1
  275. package/dist/esm/index.d.ts +1 -1
  276. package/dist/esm/index.js +1 -1
  277. package/dist/esm/jsonRpc/client.js +1 -1
  278. package/dist/esm/jsonRpc/core.js +1 -1
  279. package/dist/esm/jsonRpc/json-rpc-resolver.js +1 -1
  280. package/dist/esm/jsonRpc/types/chain.d.ts +0 -5
  281. package/dist/esm/jsonRpc/types/generated.d.ts +5 -57
  282. package/dist/esm/jsonRpc/types/params.d.ts +0 -17
  283. package/dist/esm/keypairs/falcon512/index.d.ts +2 -0
  284. package/dist/esm/keypairs/falcon512/index.js +1 -0
  285. package/dist/esm/keypairs/falcon512/keypair.d.ts +19 -0
  286. package/dist/esm/keypairs/falcon512/keypair.js +1 -0
  287. package/dist/{cjs/keypairs/ed25519 → esm/keypairs/falcon512}/publickey.d.ts +2 -2
  288. package/dist/esm/keypairs/falcon512/publickey.js +1 -0
  289. package/dist/esm/keypairs/index.d.ts +1 -4
  290. package/dist/esm/keypairs/index.js +1 -1
  291. package/dist/esm/multisig/publickey.js +1 -1
  292. package/dist/esm/multisig/signer.js +1 -1
  293. package/dist/esm/transactions/Commands.js +1 -1
  294. package/dist/esm/transactions/Inputs.d.ts +1 -1
  295. package/dist/esm/transactions/Inputs.js +1 -1
  296. package/dist/esm/transactions/Transaction.d.ts +5 -5
  297. package/dist/esm/transactions/Transaction.js +1 -1
  298. package/dist/esm/transactions/TransactionData.js +1 -1
  299. package/dist/esm/transactions/__tests__/Transaction.test.js +1 -1
  300. package/dist/esm/transactions/__tests__/bcs.test.js +1 -1
  301. package/dist/esm/transactions/data/internal.d.ts +2 -2
  302. package/dist/esm/transactions/data/v1.d.ts +2 -2
  303. package/dist/esm/transactions/data/v1.js +1 -1
  304. package/dist/esm/transactions/data/v2.d.ts +1 -1
  305. package/dist/esm/transactions/executor/parallel.js +1 -1
  306. package/dist/esm/transactions/executor/serial.js +1 -1
  307. package/dist/esm/transactions/pure.d.ts +1 -1
  308. package/dist/esm/transactions/pure.js +1 -1
  309. package/dist/esm/transactions/serializer.d.ts +1 -1
  310. package/dist/esm/utils/dynamic-fields.js +1 -1
  311. package/dist/esm/utils/index.d.ts +1 -1
  312. package/dist/esm/utils/index.js +1 -1
  313. package/dist/esm/utils/move-registry.js +1 -1
  314. package/dist/esm/utils/sui-types.js +1 -1
  315. package/dist/esm/verify/verify.js +1 -1
  316. package/dist/esm/w/call/arbitration.js +1 -1
  317. package/dist/esm/w/call/base.js +1 -1
  318. package/dist/esm/w/call/contact.js +1 -1
  319. package/dist/esm/w/call/demand.js +1 -1
  320. package/dist/esm/w/call/guard.js +1 -1
  321. package/dist/esm/w/call/machine.js +1 -1
  322. package/dist/esm/w/call/personal.js +1 -1
  323. package/dist/esm/w/call/proof.d.ts +3 -3
  324. package/dist/esm/w/call/proof.js +1 -1
  325. package/dist/esm/w/call/repository.js +1 -1
  326. package/dist/esm/w/call/reward.js +1 -1
  327. package/dist/esm/w/call/service.js +1 -1
  328. package/dist/esm/w/call/treasury.js +1 -1
  329. package/dist/esm/w/local/account.d.ts +11 -4
  330. package/dist/esm/w/local/account.js +1 -1
  331. package/dist/esm/w/local/storage.js +1 -1
  332. package/dist/esm/w/local/util.js +1 -1
  333. package/dist/esm/w/local/wip.d.ts +1 -1
  334. package/dist/esm/w/local/wip.js +1 -1
  335. package/dist/esm/w/messenger/crypto.d.ts +1 -3
  336. package/dist/esm/w/messenger/crypto.js +1 -1
  337. package/dist/esm/w/messenger/messenger-api.js +1 -1
  338. package/dist/esm/w/messenger/messenger-manager.js +1 -1
  339. package/dist/esm/w/messenger/messenger.js +1 -1
  340. package/dist/esm/w/messenger/pq/crypto.d.ts +6 -6
  341. package/dist/esm/w/messenger/pq/crypto.js +1 -1
  342. package/dist/esm/w/messenger/pq/pqxdh.d.ts +3 -6
  343. package/dist/esm/w/messenger/pq/pqxdh.js +1 -1
  344. package/dist/esm/w/messenger/pq/session.d.ts +6 -4
  345. package/dist/esm/w/messenger/pq/session.js +1 -1
  346. package/dist/esm/w/messenger/pq/spqr.js +1 -1
  347. package/dist/esm/w/messenger/pq/store-adapter.d.ts +1 -3
  348. package/dist/esm/w/messenger/pq/store-adapter.js +1 -1
  349. package/dist/esm/w/messenger/pq/types.d.ts +4 -5
  350. package/dist/esm/w/messenger/pq/types.js +1 -1
  351. package/dist/esm/w/messenger/session.d.ts +4 -5
  352. package/dist/esm/w/messenger/session.js +1 -1
  353. package/dist/esm/w/messenger/storage.js +1 -1
  354. package/dist/esm/w/messenger/types.d.ts +7 -10
  355. package/dist/esm/w/messenger/types.js +1 -1
  356. package/dist/esm/w/query/object.js +1 -1
  357. package/package.json +22 -24
  358. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.d.ts +0 -20
  359. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +0 -1
  360. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.d.ts +0 -23
  361. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +0 -1
  362. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.d.ts +0 -47
  363. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +0 -1
  364. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.d.ts +0 -8
  365. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +0 -1
  366. package/dist/cjs/keypairs/ed25519/index.d.ts +0 -2
  367. package/dist/cjs/keypairs/ed25519/index.js +0 -1
  368. package/dist/cjs/keypairs/ed25519/keypair.d.ts +0 -22
  369. package/dist/cjs/keypairs/ed25519/keypair.js +0 -1
  370. package/dist/cjs/keypairs/ed25519/publickey.js +0 -1
  371. package/dist/cjs/keypairs/passkey/index.d.ts +0 -3
  372. package/dist/cjs/keypairs/passkey/index.js +0 -1
  373. package/dist/cjs/keypairs/passkey/keypair.d.ts +0 -33
  374. package/dist/cjs/keypairs/passkey/keypair.js +0 -1
  375. package/dist/cjs/keypairs/passkey/publickey.d.ts +0 -25
  376. package/dist/cjs/keypairs/passkey/publickey.js +0 -1
  377. package/dist/cjs/keypairs/passkey/types.d.ts +0 -6
  378. package/dist/cjs/keypairs/secp256k1/index.d.ts +0 -2
  379. package/dist/cjs/keypairs/secp256k1/index.js +0 -1
  380. package/dist/cjs/keypairs/secp256k1/keypair.d.ts +0 -22
  381. package/dist/cjs/keypairs/secp256k1/keypair.js +0 -1
  382. package/dist/cjs/keypairs/secp256k1/publickey.d.ts +0 -11
  383. package/dist/cjs/keypairs/secp256k1/publickey.js +0 -1
  384. package/dist/cjs/keypairs/secp256r1/index.d.ts +0 -2
  385. package/dist/cjs/keypairs/secp256r1/index.js +0 -1
  386. package/dist/cjs/keypairs/secp256r1/keypair.d.ts +0 -22
  387. package/dist/cjs/keypairs/secp256r1/keypair.js +0 -1
  388. package/dist/cjs/keypairs/secp256r1/publickey.d.ts +0 -11
  389. package/dist/cjs/keypairs/secp256r1/publickey.js +0 -1
  390. package/dist/cjs/utils/suins.d.ts +0 -2
  391. package/dist/cjs/utils/suins.js +0 -1
  392. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.d.ts +0 -20
  393. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +0 -1
  394. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.d.ts +0 -23
  395. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +0 -1
  396. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.d.ts +0 -47
  397. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +0 -1
  398. package/dist/esm/keypairs/ed25519/ed25519-hd-key.d.ts +0 -8
  399. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +0 -1
  400. package/dist/esm/keypairs/ed25519/index.d.ts +0 -2
  401. package/dist/esm/keypairs/ed25519/index.js +0 -1
  402. package/dist/esm/keypairs/ed25519/keypair.d.ts +0 -22
  403. package/dist/esm/keypairs/ed25519/keypair.js +0 -1
  404. package/dist/esm/keypairs/ed25519/publickey.js +0 -1
  405. package/dist/esm/keypairs/passkey/index.d.ts +0 -3
  406. package/dist/esm/keypairs/passkey/index.js +0 -1
  407. package/dist/esm/keypairs/passkey/keypair.d.ts +0 -33
  408. package/dist/esm/keypairs/passkey/keypair.js +0 -1
  409. package/dist/esm/keypairs/passkey/publickey.d.ts +0 -25
  410. package/dist/esm/keypairs/passkey/publickey.js +0 -1
  411. package/dist/esm/keypairs/passkey/types.d.ts +0 -6
  412. package/dist/esm/keypairs/secp256k1/index.d.ts +0 -2
  413. package/dist/esm/keypairs/secp256k1/index.js +0 -1
  414. package/dist/esm/keypairs/secp256k1/keypair.d.ts +0 -22
  415. package/dist/esm/keypairs/secp256k1/keypair.js +0 -1
  416. package/dist/esm/keypairs/secp256k1/publickey.d.ts +0 -11
  417. package/dist/esm/keypairs/secp256k1/publickey.js +0 -1
  418. package/dist/esm/keypairs/secp256r1/index.d.ts +0 -2
  419. package/dist/esm/keypairs/secp256r1/index.js +0 -1
  420. package/dist/esm/keypairs/secp256r1/keypair.d.ts +0 -22
  421. package/dist/esm/keypairs/secp256r1/keypair.js +0 -1
  422. package/dist/esm/keypairs/secp256r1/publickey.d.ts +0 -11
  423. package/dist/esm/keypairs/secp256r1/publickey.js +0 -1
  424. package/dist/esm/utils/suins.d.ts +0 -2
  425. package/dist/esm/utils/suins.js +0 -1
  426. /package/dist/cjs/{keypairs/passkey → _deps/bcs}/types.js +0 -0
  427. /package/dist/{esm/keypairs/passkey → cjs/_deps/utils}/types.js +0 -0
@@ -1 +1 @@
1
- export*from'./ed25519/index.js';export*from'./passkey/index.js';export*from'./secp256k1/index.js';export*from'./secp256r1/index.js';
1
+ export*from'./falcon512/index.js';
@@ -1 +1 @@
1
- import{fromBase64,toBase64}from'@mysten/bcs';import{blake2b}from'@noble/hashes/blake2b';import{bytesToHex}from'@noble/hashes/utils';import{bcs}from'../bcs/index.js';import{bytesEqual,PublicKey}from'../cryptography/publickey.js';import{SIGNATURE_FLAG_TO_SCHEME,SIGNATURE_SCHEME_TO_FLAG}from'../cryptography/signature-scheme.js';import{parseSerializedSignature}from'../cryptography/signature.js';import{normalizeWowAddress}from'../utils/sui-types.js';import{publicKeyFromRawBytes}from'../verify/index.js';import{MultiSigSigner}from'./signer.js';export const MAX_SIGNER_IN_MULTISIG=0xa;export const MIN_SIGNER_IN_MULTISIG=0x1;export class MultiSigPublicKey extends PublicKey{['rawBytes'];['multisigPublicKey'];['publicKeys'];constructor(a){super();if(typeof a==='string')this['rawBytes']=fromBase64(a),this['multisigPublicKey']=bcs['MultiSigPublicKey']['parse'](this['rawBytes']);else a instanceof Uint8Array?(this['rawBytes']=a,this['multisigPublicKey']=bcs['MultiSigPublicKey']['parse'](this['rawBytes'])):(this['multisigPublicKey']=a,this['rawBytes']=bcs['MultiSigPublicKey']['serialize'](a)['toBytes']());if(this['multisigPublicKey']['threshold']<0x1)throw new Error('Invalid\x20threshold');const b=new Set();this['publicKeys']=this['multisigPublicKey']['pk_map']['map'](({pubKey:d,weight:e})=>{const [f,g]=Object['entries'](d)['filter'](([i])=>i!=='$kind')[0x0],h=Uint8Array['from'](g)['toString']();if(b['has'](h))throw new Error('Multisig\x20does\x20not\x20support\x20duplicate\x20public\x20keys');b['add'](h);if(e<0x1)throw new Error('Invalid\x20weight');return{'publicKey':publicKeyFromRawBytes(f,Uint8Array['from'](g)),'weight':e};});const c=this['publicKeys']['reduce']((d,{weight:e})=>d+e,0x0);if(this['multisigPublicKey']['threshold']>c)throw new Error('Unreachable\x20threshold');if(this['publicKeys']['length']>MAX_SIGNER_IN_MULTISIG)throw new Error('Max\x20number\x20of\x20signers\x20in\x20a\x20multisig\x20is\x20'+MAX_SIGNER_IN_MULTISIG);if(this['publicKeys']['length']<MIN_SIGNER_IN_MULTISIG)throw new Error('Min\x20number\x20of\x20signers\x20in\x20a\x20multisig\x20is\x20'+MIN_SIGNER_IN_MULTISIG);}static['fromPublicKeys']({threshold:a,publicKeys:b}){return new MultiSigPublicKey({'pk_map':b['map'](({publicKey:c,weight:d})=>{const e=SIGNATURE_FLAG_TO_SCHEME[c['flag']()];return{'pubKey':{[e]:c['toRawBytes']()},'weight':d};}),'threshold':a});}['equals'](a){return super['equals'](a);}['toRawBytes'](){return this['rawBytes'];}['getPublicKeys'](){return this['publicKeys'];}['getThreshold'](){return this['multisigPublicKey']['threshold'];}['getSigner'](...a){return new MultiSigSigner(this,a);}['toWAddress'](){const a=0x1+(0x40+0x1)*MAX_SIGNER_IN_MULTISIG+0x2,b=new Uint8Array(a);b['set']([SIGNATURE_SCHEME_TO_FLAG['MultiSig']]),b['set'](bcs['u16']()['serialize'](this['multisigPublicKey']['threshold'])['toBytes'](),0x1);let c=0x3;for(const {publicKey:d,weight:e}of this['publicKeys']){const f=d['toWBytes']();b['set'](f,c),c+=f['length'],b['set']([e],c++);}return normalizeWowAddress(bytesToHex(blake2b(b['slice'](0x0,c),{'dkLen':0x20})));}['flag'](){return SIGNATURE_SCHEME_TO_FLAG['MultiSig'];}async['verify'](a,b){const c=parseSerializedSignature(b);if(c['signatureScheme']!=='MultiSig')throw new Error('Invalid\x20signature\x20scheme');const {multisig:d}=c;let e=0x0;if(!bytesEqual(bcs['MultiSigPublicKey']['serialize'](this['multisigPublicKey'])['toBytes'](),bcs['MultiSigPublicKey']['serialize'](d['multisig_pk'])['toBytes']()))return![];for(const {publicKey:f,weight:g,signature:h}of parsePartialSignatures(d)){if(!await f['verify'](a,h))return![];e+=g;}return e>=this['multisigPublicKey']['threshold'];}['combinePartialSignatures'](a){if(a['length']>MAX_SIGNER_IN_MULTISIG)throw new Error('Max\x20number\x20of\x20signatures\x20in\x20a\x20multisig\x20is\x20'+MAX_SIGNER_IN_MULTISIG);let b=0x0;const c=new Array(a['length']);for(let g=0x0;g<a['length'];g++){const h=parseSerializedSignature(a[g]);if(h['signatureScheme']==='MultiSig')throw new Error('MultiSig\x20is\x20not\x20supported\x20inside\x20MultiSig');const k=h['publicKey'];c[g]={[h['signatureScheme']]:h['signature']};let l;for(let m=0x0;m<this['publicKeys']['length'];m++){if(bytesEqual(k,this['publicKeys'][m]['publicKey']['toRawBytes']())){if(b&0x1<<m)throw new Error('Received\x20multiple\x20signatures\x20from\x20the\x20same\x20public\x20key');l=m;break;}}if(l===undefined)throw new Error('Received\x20signature\x20from\x20unknown\x20public\x20key');b|=0x1<<l;}const d={'sigs':c,'bitmap':b,'multisig_pk':this['multisigPublicKey']},e=bcs['MultiSig']['serialize'](d,{'maxSize':0x2000})['toBytes'](),f=new Uint8Array(e['length']+0x1);return f['set']([SIGNATURE_SCHEME_TO_FLAG['MultiSig']]),f['set'](e,0x1),toBase64(f);}}export function parsePartialSignatures(a){const b=new Array(a['sigs']['length']);for(let c=0x0;c<a['sigs']['length'];c++){const [d,e]=Object['entries'](a['sigs'][c])['filter'](([l])=>l!=='$kind')[0x0],f=asIndices(a['bitmap']),g=f[c],h=a['multisig_pk']['pk_map'][g],j=Uint8Array['from'](Object['values'](h['pubKey'])[0x0]);if(d==='MultiSig')throw new Error('MultiSig\x20is\x20not\x20supported\x20inside\x20MultiSig');const k=publicKeyFromRawBytes(d,j);b[c]={'signatureScheme':d,'signature':Uint8Array['from'](e),'publicKey':k,'weight':h['weight']};}return b;}function asIndices(a){if(a<0x0||a>0x400)throw new Error('Invalid\x20bitmap');const b=[];for(let c=0x0;c<0xa;c++){(a&0x1<<c)!==0x0&&b['push'](c);}return Uint8Array['from'](b);}
1
+ import{fromBase64,toBase64}from'../_deps/bcs/index.js';import{blake2b}from'@noble/hashes/blake2b';import{bytesToHex}from'@noble/hashes/utils';import{bcs}from'../bcs/index.js';import{bytesEqual,PublicKey}from'../cryptography/publickey.js';import{SIGNATURE_FLAG_TO_SCHEME,SIGNATURE_SCHEME_TO_FLAG}from'../cryptography/signature-scheme.js';import{parseSerializedSignature}from'../cryptography/signature.js';import{normalizeWowAddress}from'../utils/sui-types.js';import{publicKeyFromRawBytes}from'../verify/index.js';import{MultiSigSigner}from'./signer.js';export const MAX_SIGNER_IN_MULTISIG=0xa;export const MIN_SIGNER_IN_MULTISIG=0x1;export class MultiSigPublicKey extends PublicKey{['rawBytes'];['multisigPublicKey'];['publicKeys'];constructor(a){super();if(typeof a==='string')this['rawBytes']=fromBase64(a),this['multisigPublicKey']=bcs['MultiSigPublicKey']['parse'](this['rawBytes']);else a instanceof Uint8Array?(this['rawBytes']=a,this['multisigPublicKey']=bcs['MultiSigPublicKey']['parse'](this['rawBytes'])):(this['multisigPublicKey']=a,this['rawBytes']=bcs['MultiSigPublicKey']['serialize'](a)['toBytes']());if(this['multisigPublicKey']['threshold']<0x1)throw new Error('Invalid\x20threshold');const b=new Set();this['publicKeys']=this['multisigPublicKey']['pk_map']['map'](({pubKey:d,weight:e})=>{const [f,g]=Object['entries'](d)['filter'](([i])=>i!=='$kind')[0x0],h=Uint8Array['from'](g)['toString']();if(b['has'](h))throw new Error('Multisig\x20does\x20not\x20support\x20duplicate\x20public\x20keys');b['add'](h);if(e<0x1)throw new Error('Invalid\x20weight');return{'publicKey':publicKeyFromRawBytes(f,Uint8Array['from'](g)),'weight':e};});const c=this['publicKeys']['reduce']((d,{weight:e})=>d+e,0x0);if(this['multisigPublicKey']['threshold']>c)throw new Error('Unreachable\x20threshold');if(this['publicKeys']['length']>MAX_SIGNER_IN_MULTISIG)throw new Error('Max\x20number\x20of\x20signers\x20in\x20a\x20multisig\x20is\x20'+MAX_SIGNER_IN_MULTISIG);if(this['publicKeys']['length']<MIN_SIGNER_IN_MULTISIG)throw new Error('Min\x20number\x20of\x20signers\x20in\x20a\x20multisig\x20is\x20'+MIN_SIGNER_IN_MULTISIG);}static['fromPublicKeys']({threshold:a,publicKeys:b}){return new MultiSigPublicKey({'pk_map':b['map'](({publicKey:c,weight:d})=>{const e=SIGNATURE_FLAG_TO_SCHEME[c['flag']()];return{'pubKey':{[e]:c['toRawBytes']()},'weight':d};}),'threshold':a});}['equals'](a){return super['equals'](a);}['toRawBytes'](){return this['rawBytes'];}['getPublicKeys'](){return this['publicKeys'];}['getThreshold'](){return this['multisigPublicKey']['threshold'];}['getSigner'](...a){return new MultiSigSigner(this,a);}['toWAddress'](){const a=0x1+(0x40+0x1)*MAX_SIGNER_IN_MULTISIG+0x2,b=new Uint8Array(a);b['set']([SIGNATURE_SCHEME_TO_FLAG['MultiSig']]),b['set'](bcs['u16']()['serialize'](this['multisigPublicKey']['threshold'])['toBytes'](),0x1);let c=0x3;for(const {publicKey:d,weight:e}of this['publicKeys']){const f=d['toWBytes']();b['set'](f,c),c+=f['length'],b['set']([e],c++);}return normalizeWowAddress(bytesToHex(blake2b(b['slice'](0x0,c),{'dkLen':0x20})));}['flag'](){return SIGNATURE_SCHEME_TO_FLAG['MultiSig'];}async['verify'](a,b){const c=parseSerializedSignature(b);if(c['signatureScheme']!=='MultiSig')throw new Error('Invalid\x20signature\x20scheme');const {multisig:d}=c;let e=0x0;if(!bytesEqual(bcs['MultiSigPublicKey']['serialize'](this['multisigPublicKey'])['toBytes'](),bcs['MultiSigPublicKey']['serialize'](d['multisig_pk'])['toBytes']()))return![];for(const {publicKey:f,weight:g,signature:h}of parsePartialSignatures(d)){if(!await f['verify'](a,h))return![];e+=g;}return e>=this['multisigPublicKey']['threshold'];}['combinePartialSignatures'](a){if(a['length']>MAX_SIGNER_IN_MULTISIG)throw new Error('Max\x20number\x20of\x20signatures\x20in\x20a\x20multisig\x20is\x20'+MAX_SIGNER_IN_MULTISIG);let b=0x0;const c=new Array(a['length']);for(let g=0x0;g<a['length'];g++){const h=parseSerializedSignature(a[g]);if(h['signatureScheme']==='MultiSig')throw new Error('MultiSig\x20is\x20not\x20supported\x20inside\x20MultiSig');const k=h['publicKey'];c[g]={[h['signatureScheme']]:h['signature']};let l;for(let m=0x0;m<this['publicKeys']['length'];m++){if(bytesEqual(k,this['publicKeys'][m]['publicKey']['toRawBytes']())){if(b&0x1<<m)throw new Error('Received\x20multiple\x20signatures\x20from\x20the\x20same\x20public\x20key');l=m;break;}}if(l===undefined)throw new Error('Received\x20signature\x20from\x20unknown\x20public\x20key');b|=0x1<<l;}const d={'sigs':c,'bitmap':b,'multisig_pk':this['multisigPublicKey']},e=bcs['MultiSig']['serialize'](d,{'maxSize':0x2000})['toBytes'](),f=new Uint8Array(e['length']+0x1);return f['set']([SIGNATURE_SCHEME_TO_FLAG['MultiSig']]),f['set'](e,0x1),toBase64(f);}}export function parsePartialSignatures(a){const b=new Array(a['sigs']['length']);for(let c=0x0;c<a['sigs']['length'];c++){const [d,e]=Object['entries'](a['sigs'][c])['filter'](([l])=>l!=='$kind')[0x0],f=asIndices(a['bitmap']),g=f[c],h=a['multisig_pk']['pk_map'][g],j=Uint8Array['from'](Object['values'](h['pubKey'])[0x0]);if(d==='MultiSig')throw new Error('MultiSig\x20is\x20not\x20supported\x20inside\x20MultiSig');const k=publicKeyFromRawBytes(d,j);b[c]={'signatureScheme':d,'signature':Uint8Array['from'](e),'publicKey':k,'weight':h['weight']};}return b;}function asIndices(a){if(a<0x0||a>0x400)throw new Error('Invalid\x20bitmap');const b=[];for(let c=0x0;c<0xa;c++){(a&0x1<<c)!==0x0&&b['push'](c);}return Uint8Array['from'](b);}
@@ -1 +1 @@
1
- import{toBase64}from'@mysten/bcs';import{Signer}from'../cryptography/index.js';export class MultiSigSigner extends Signer{#pubkey;#signers;constructor(a,b=[]){super(),this.#pubkey=a,this.#signers=b;const c=new Set();let d=0x0;const e=a['getPublicKeys']()['map'](({weight:f,publicKey:g})=>({'weight':f,'address':g['toWAddress']()}));for(const f of b){const g=f['toWAddress']();if(c['has'](g))throw new Error('Can\x27t\x20create\x20MultiSigSigner\x20with\x20duplicate\x20signers');c['add'](g);const h=e['find'](i=>i['address']===g)?.['weight'];if(!h)throw new Error('Signer\x20'+g+'\x20is\x20not\x20part\x20of\x20the\x20MultiSig\x20public\x20key');d+=h;}if(d<a['getThreshold']())throw new Error('Combined\x20weight\x20of\x20signers\x20is\x20less\x20than\x20threshold');}['getKeyScheme'](){return'MultiSig';}['getPublicKey'](){return this.#pubkey;}['sign'](a){throw new Error('MultiSigSigner\x20does\x20not\x20support\x20signing\x20directly.\x20Use\x20signTransaction\x20or\x20signPersonalMessage\x20instead');}['signData'](a){throw new Error('MultiSigSigner\x20does\x20not\x20support\x20signing\x20directly.\x20Use\x20signTransaction\x20or\x20signPersonalMessage\x20instead');}async['signTransaction'](a){const b=this.#pubkey['combinePartialSignatures'](await Promise['all'](this.#signers['map'](async c=>(await c['signTransaction'](a))['signature'])));return{'signature':b,'bytes':toBase64(a)};}async['signPersonalMessage'](a){const b=this.#pubkey['combinePartialSignatures'](await Promise['all'](this.#signers['map'](async c=>(await c['signPersonalMessage'](a))['signature'])));return{'signature':b,'bytes':toBase64(a)};}}
1
+ import{toBase64}from'../_deps/bcs/index.js';import{Signer}from'../cryptography/index.js';export class MultiSigSigner extends Signer{#pubkey;#signers;constructor(a,b=[]){super(),this.#pubkey=a,this.#signers=b;const c=new Set();let d=0x0;const e=a['getPublicKeys']()['map'](({weight:f,publicKey:g})=>({'weight':f,'address':g['toWAddress']()}));for(const f of b){const g=f['toWAddress']();if(c['has'](g))throw new Error('Can\x27t\x20create\x20MultiSigSigner\x20with\x20duplicate\x20signers');c['add'](g);const h=e['find'](i=>i['address']===g)?.['weight'];if(!h)throw new Error('Signer\x20'+g+'\x20is\x20not\x20part\x20of\x20the\x20MultiSig\x20public\x20key');d+=h;}if(d<a['getThreshold']())throw new Error('Combined\x20weight\x20of\x20signers\x20is\x20less\x20than\x20threshold');}['getKeyScheme'](){return'MultiSig';}['getPublicKey'](){return this.#pubkey;}['sign'](a){throw new Error('MultiSigSigner\x20does\x20not\x20support\x20signing\x20directly.\x20Use\x20signTransaction\x20or\x20signPersonalMessage\x20instead');}['signData'](a){throw new Error('MultiSigSigner\x20does\x20not\x20support\x20signing\x20directly.\x20Use\x20signTransaction\x20or\x20signPersonalMessage\x20instead');}async['signTransaction'](a){const b=this.#pubkey['combinePartialSignatures'](await Promise['all'](this.#signers['map'](async c=>(await c['signTransaction'](a))['signature'])));return{'signature':b,'bytes':toBase64(a)};}async['signPersonalMessage'](a){const b=this.#pubkey['combinePartialSignatures'](await Promise['all'](this.#signers['map'](async c=>(await c['signPersonalMessage'](a))['signature'])));return{'signature':b,'bytes':toBase64(a)};}}
@@ -1 +1 @@
1
- import{toBase64}from'@mysten/bcs';import{parse}from'valibot';import{normalizeWowObjectId}from'../utils/sui-types.js';import{ArgumentSchema}from'./data/internal.js';export var UpgradePolicy;(function(a){a[a['COMPATIBLE']=0x0]='COMPATIBLE',a[a['ADDITIVE']=0x80]='ADDITIVE',a[a['DEP_ONLY']=0xc0]='DEP_ONLY';}(UpgradePolicy||(UpgradePolicy={})));export const Commands={'MoveCall'(a){const [b,c='',d='']='target'in a?a['target']['split']('::'):[a['package'],a['module'],a['function']];return{'$kind':'MoveCall','MoveCall':{'package':b,'module':c,'function':d,'typeArguments':a['typeArguments']??[],'arguments':a['arguments']??[]}};},'TransferObjects'(a,b){return{'$kind':'TransferObjects','TransferObjects':{'objects':a['map'](c=>parse(ArgumentSchema,c)),'address':parse(ArgumentSchema,b)}};},'SplitCoins'(a,b){return{'$kind':'SplitCoins','SplitCoins':{'coin':parse(ArgumentSchema,a),'amounts':b['map'](c=>parse(ArgumentSchema,c))}};},'MergeCoins'(a,b){return{'$kind':'MergeCoins','MergeCoins':{'destination':parse(ArgumentSchema,a),'sources':b['map'](c=>parse(ArgumentSchema,c))}};},'Publish'({modules:a,dependencies:b}){return{'$kind':'Publish','Publish':{'modules':a['map'](c=>typeof c==='string'?c:toBase64(new Uint8Array(c))),'dependencies':b['map'](c=>normalizeWowObjectId(c))}};},'Upgrade'({modules:a,dependencies:b,package:c,ticket:d}){return{'$kind':'Upgrade','Upgrade':{'modules':a['map'](e=>typeof e==='string'?e:toBase64(new Uint8Array(e))),'dependencies':b['map'](e=>normalizeWowObjectId(e)),'package':c,'ticket':parse(ArgumentSchema,d)}};},'MakeMoveVec'({type:a,elements:b}){return{'$kind':'MakeMoveVec','MakeMoveVec':{'type':a??null,'elements':b['map'](c=>parse(ArgumentSchema,c))}};},'Intent'({name:a,inputs:inputs={},data:data={}}){return{'$kind':'$Intent','$Intent':{'name':a,'inputs':Object['fromEntries'](Object['entries'](inputs)['map'](([b,c])=>[b,Array['isArray'](c)?c['map'](d=>parse(ArgumentSchema,d)):parse(ArgumentSchema,c)])),'data':data}};}};
1
+ import{toBase64}from'../_deps/bcs/index.js';import{parse}from'valibot';import{normalizeWowObjectId}from'../utils/sui-types.js';import{ArgumentSchema}from'./data/internal.js';export var UpgradePolicy;(function(a){a[a['COMPATIBLE']=0x0]='COMPATIBLE',a[a['ADDITIVE']=0x80]='ADDITIVE',a[a['DEP_ONLY']=0xc0]='DEP_ONLY';}(UpgradePolicy||(UpgradePolicy={})));export const Commands={'MoveCall'(a){const [b,c='',d='']='target'in a?a['target']['split']('::'):[a['package'],a['module'],a['function']];return{'$kind':'MoveCall','MoveCall':{'package':b,'module':c,'function':d,'typeArguments':a['typeArguments']??[],'arguments':a['arguments']??[]}};},'TransferObjects'(a,b){return{'$kind':'TransferObjects','TransferObjects':{'objects':a['map'](c=>parse(ArgumentSchema,c)),'address':parse(ArgumentSchema,b)}};},'SplitCoins'(a,b){return{'$kind':'SplitCoins','SplitCoins':{'coin':parse(ArgumentSchema,a),'amounts':b['map'](c=>parse(ArgumentSchema,c))}};},'MergeCoins'(a,b){return{'$kind':'MergeCoins','MergeCoins':{'destination':parse(ArgumentSchema,a),'sources':b['map'](c=>parse(ArgumentSchema,c))}};},'Publish'({modules:a,dependencies:b}){return{'$kind':'Publish','Publish':{'modules':a['map'](c=>typeof c==='string'?c:toBase64(new Uint8Array(c))),'dependencies':b['map'](c=>normalizeWowObjectId(c))}};},'Upgrade'({modules:a,dependencies:b,package:c,ticket:d}){return{'$kind':'Upgrade','Upgrade':{'modules':a['map'](e=>typeof e==='string'?e:toBase64(new Uint8Array(e))),'dependencies':b['map'](e=>normalizeWowObjectId(e)),'package':c,'ticket':parse(ArgumentSchema,d)}};},'MakeMoveVec'({type:a,elements:b}){return{'$kind':'MakeMoveVec','MakeMoveVec':{'type':a??null,'elements':b['map'](c=>parse(ArgumentSchema,c))}};},'Intent'({name:a,inputs:inputs={},data:data={}}){return{'$kind':'$Intent','$Intent':{'name':a,'inputs':Object['fromEntries'](Object['entries'](inputs)['map'](([b,c])=>[b,Array['isArray'](c)?c['map'](d=>parse(ArgumentSchema,d)):parse(ArgumentSchema,c)])),'data':data}};}};
@@ -1,4 +1,4 @@
1
- import type { SerializedBcs } from "@mysten/bcs";
1
+ import type { SerializedBcs } from "../_deps/bcs/index.js";
2
2
  import type { CallArg, ObjectRef } from "./data/internal.js";
3
3
  declare function Pure(data: Uint8Array | SerializedBcs<any>): Extract<CallArg, {
4
4
  Pure: unknown;
@@ -1 +1 @@
1
- import{toBase64}from'@mysten/bcs';import{normalizeWowAddress}from'../utils/sui-types.js';function Pure(a){return{'$kind':'Pure','Pure':{'bytes':a instanceof Uint8Array?toBase64(a):a['toBase64']()}};}export const Inputs={'Pure':Pure,'ObjectRef'({objectId:a,digest:b,version:c}){return{'$kind':'Object','Object':{'$kind':'ImmOrOwnedObject','ImmOrOwnedObject':{'digest':b,'version':c,'objectId':normalizeWowAddress(a)}}};},'SharedObjectRef'({objectId:a,mutable:b,initialSharedVersion:c}){return{'$kind':'Object','Object':{'$kind':'SharedObject','SharedObject':{'mutable':b,'initialSharedVersion':c,'objectId':normalizeWowAddress(a)}}};},'ReceivingRef'({objectId:a,digest:b,version:c}){return{'$kind':'Object','Object':{'$kind':'Receiving','Receiving':{'digest':b,'version':c,'objectId':normalizeWowAddress(a)}}};}};
1
+ import{toBase64}from'../_deps/bcs/index.js';import{normalizeWowAddress}from'../utils/sui-types.js';function Pure(a){return{'$kind':'Pure','Pure':{'bytes':a instanceof Uint8Array?toBase64(a):a['toBase64']()}};}export const Inputs={'Pure':Pure,'ObjectRef'({objectId:a,digest:b,version:c}){return{'$kind':'Object','Object':{'$kind':'ImmOrOwnedObject','ImmOrOwnedObject':{'digest':b,'version':c,'objectId':normalizeWowAddress(a)}}};},'SharedObjectRef'({objectId:a,mutable:b,initialSharedVersion:c}){return{'$kind':'Object','Object':{'$kind':'SharedObject','SharedObject':{'mutable':b,'initialSharedVersion':c,'objectId':normalizeWowAddress(a)}}};},'ReceivingRef'({objectId:a,digest:b,version:c}){return{'$kind':'Object','Object':{'$kind':'Receiving','Receiving':{'digest':b,'version':c,'objectId':normalizeWowAddress(a)}}};}};
@@ -1,4 +1,4 @@
1
- import type { SerializedBcs } from "@mysten/bcs";
1
+ import type { SerializedBcs } from "../_deps/bcs/index.js";
2
2
  import type { InferInput } from "valibot";
3
3
  import type { SignatureWithBytes, Signer } from "../cryptography/index.js";
4
4
  import type { TransactionArgument } from "./Commands.js";
@@ -298,7 +298,7 @@ export declare class Transaction {
298
298
  getData(): {
299
299
  version: 2;
300
300
  sender?: string;
301
- expiration?: import("@mysten/bcs").EnumOutputShapeWithKeys<{
301
+ expiration?: import("../_deps/bcs/types.js").EnumOutputShapeWithKeys<{
302
302
  None: true;
303
303
  Epoch: string | number;
304
304
  }, "None" | "Epoch">;
@@ -312,8 +312,8 @@ export declare class Transaction {
312
312
  digest: string;
313
313
  }[];
314
314
  };
315
- inputs: import("@mysten/bcs").EnumOutputShapeWithKeys<{
316
- Object: import("@mysten/bcs").EnumOutputShapeWithKeys<{
315
+ inputs: import("../_deps/bcs/types.js").EnumOutputShapeWithKeys<{
316
+ Object: import("../_deps/bcs/types.js").EnumOutputShapeWithKeys<{
317
317
  ImmOrOwnedObject: {
318
318
  objectId: string;
319
319
  version: string | number;
@@ -344,7 +344,7 @@ export declare class Transaction {
344
344
  mutable?: boolean;
345
345
  };
346
346
  }, "Object" | "Pure" | "UnresolvedPure" | "UnresolvedObject">[];
347
- commands: import("@mysten/bcs").EnumOutputShapeWithKeys<{
347
+ commands: import("../_deps/bcs/types.js").EnumOutputShapeWithKeys<{
348
348
  MoveCall: {
349
349
  package: string;
350
350
  module: string;
@@ -1 +1 @@
1
- var _a;import{fromBase64,isSerializedBcs}from'@mysten/bcs';import{is,parse}from'valibot';import{normalizeWowAddress}from'../utils/sui-types.js';import{Commands}from'./Commands.js';import{ArgumentSchema,NormalizedCallArg,ObjectRefSchema,TransactionExpiration}from'./data/internal.js';import{serializeV1TransactionData}from'./data/v1.js';import{SerializedTransactionDataV2Schema}from'./data/v2.js';import{Inputs}from'./Inputs.js';import{needsTransactionResolution,resolveTransactionPlugin}from'./resolve.js';import{createObjectMethods}from'./object.js';import{createPure}from'./pure.js';import{TransactionDataBuilder}from'./TransactionData.js';import{getIdFromCallArg}from'./utils.js';import{namedPackagesPlugin}from'./plugins/NamedPackagesPlugin.js';function createTransactionResult(a,b=Infinity){const c={'$kind':'Result',get 'Result'(){return typeof a==='function'?a():a;}},d=[],e=f=>d[f]??={'$kind':'NestedResult',get 'NestedResult'(){return[typeof a==='function'?a():a,f];}};return new Proxy(c,{'set'(){throw new Error('The\x20transaction\x20result\x20is\x20a\x20proxy,\x20and\x20does\x20not\x20support\x20setting\x20properties\x20directly');},'get'(f,g){if(g in f)return Reflect['get'](f,g);if(g===Symbol['iterator'])return function*(){let j=0x0;while(j<b){yield e(j),j++;}};if(typeof g==='symbol')return;const h=parseInt(g,0xa);if(Number['isNaN'](h)||h<0x0)return;return e(h);}});}const TRANSACTION_BRAND=Symbol['for']('@mysten/transaction');export function isTransaction(a){return!!a&&typeof a==='object'&&a[TRANSACTION_BRAND]===!![];}const modulePluginRegistry={'buildPlugins':new Map(),'serializationPlugins':new Map()},TRANSACTION_REGISTRY_KEY=Symbol['for']('@mysten/transaction/registry');function getGlobalPluginRegistry(){try{const a=globalThis;return!a[TRANSACTION_REGISTRY_KEY]&&(a[TRANSACTION_REGISTRY_KEY]=modulePluginRegistry),a[TRANSACTION_REGISTRY_KEY];}catch{return modulePluginRegistry;}}export class Transaction{#serializationPlugins;#buildPlugins;#intentResolvers=new Map();#inputSection=[];#commandSection=[];#availableResults=new Set();#pendingPromises=new Set();#added=new Map();static['fromKind'](a){const b=new _a();return b.#data=TransactionDataBuilder['fromKindBytes'](typeof a==='string'?fromBase64(a):a),b.#inputSection=b.#data['inputs']['slice'](),b.#commandSection=b.#data['commands']['slice'](),b.#availableResults=new Set(b.#commandSection['map']((c,d)=>d)),b;}static['from'](a){const b=new _a();if(isTransaction(a))b.#data=TransactionDataBuilder['restore'](a['getData']());else typeof a!=='string'||!a['startsWith']('{')?b.#data=TransactionDataBuilder['fromBytes'](typeof a==='string'?fromBase64(a):a):b.#data=TransactionDataBuilder['restore'](JSON['parse'](a));return b.#inputSection=b.#data['inputs']['slice'](),b.#commandSection=b.#data['commands']['slice'](),b.#availableResults=new Set(b.#commandSection['map']((c,d)=>d)),b;}static['registerGlobalSerializationPlugin'](a,b){getGlobalPluginRegistry()['serializationPlugins']['set'](a,b??a);}static['unregisterGlobalSerializationPlugin'](a){getGlobalPluginRegistry()['serializationPlugins']['delete'](a);}static['registerGlobalBuildPlugin'](a,b){getGlobalPluginRegistry()['buildPlugins']['set'](a,b??a);}static['unregisterGlobalBuildPlugin'](a){getGlobalPluginRegistry()['buildPlugins']['delete'](a);}['addSerializationPlugin'](a){this.#serializationPlugins['push'](a);}['addBuildPlugin'](a){this.#buildPlugins['push'](a);}['addIntentResolver'](a,b){if(this.#intentResolvers['has'](a)&&this.#intentResolvers['get'](a)!==b)throw new Error('Intent\x20resolver\x20for\x20'+a+'\x20already\x20exists');this.#intentResolvers['set'](a,b);}['setSender'](a){this.#data['sender']=a;}['setSenderIfNotSet'](a){!this.#data['sender']&&(this.#data['sender']=a);}['setExpiration'](a){this.#data['expiration']=a?parse(TransactionExpiration,a):null;}['setGasPrice'](a){this.#data['gasConfig']['price']=String(a);}['setGasBudget'](a){this.#data['gasConfig']['budget']=String(a);}['setGasBudgetIfNotSet'](a){this.#data['gasData']['budget']==null&&(this.#data['gasConfig']['budget']=String(a));}['setGasOwner'](a){this.#data['gasConfig']['owner']=a;}['setGasPayment'](a){this.#data['gasConfig']['payment']=a['map'](b=>parse(ObjectRefSchema,b));}#data;get['blockData'](){return serializeV1TransactionData(this.#data['snapshot']());}['getData'](){return this.#data['snapshot']();}get[TRANSACTION_BRAND](){return!![];}get['pure'](){return Object['defineProperty'](this,'pure',{'enumerable':![],'value':createPure(a=>{if(isSerializedBcs(a))return this.#addInput('pure',{'$kind':'Pure','Pure':{'bytes':a['toBase64']()}});return this.#addInput('pure',is(NormalizedCallArg,a)?parse(NormalizedCallArg,a):a instanceof Uint8Array?Inputs['Pure'](a):{'$kind':'UnresolvedPure','UnresolvedPure':{'value':a}});})}),this['pure'];}constructor(){const a=getGlobalPluginRegistry();this.#data=new TransactionDataBuilder(),this.#buildPlugins=[...a['buildPlugins']['values']()],this.#serializationPlugins=[...a['serializationPlugins']['values']()];}get['gas'](){return{'$kind':'GasCoin','GasCoin':!![]};}['object']=createObjectMethods(value=>{if(typeof value==='function')return this['object'](this['add'](value));if(typeof value==='object'&&is(ArgumentSchema,value))return value;const id=getIdFromCallArg(value),inserted=this.#data['inputs']['find'](i=>id===getIdFromCallArg(i));return inserted?.['Object']?.['SharedObject']&&typeof value==='object'&&value['Object']?.['SharedObject']&&(inserted['Object']['SharedObject']['mutable']=inserted['Object']['SharedObject']['mutable']||value['Object']['SharedObject']['mutable']),inserted?{'$kind':'Input','Input':this.#data['inputs']['indexOf'](inserted),'type':'object'}:this.#addInput('object',typeof value==='string'?{'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':normalizeWowAddress(value)}}:value);});['objectRef'](...a){return this['object'](Inputs['ObjectRef'](...a));}['receivingRef'](...a){return this['object'](Inputs['ReceivingRef'](...a));}['sharedObjectRef'](...a){return this['object'](Inputs['SharedObjectRef'](...a));}#fork(){const a=new _a();return a.#data=this.#data,a.#serializationPlugins=this.#serializationPlugins,a.#buildPlugins=this.#buildPlugins,a.#intentResolvers=this.#intentResolvers,a.#pendingPromises=this.#pendingPromises,a.#availableResults=new Set(this.#availableResults),a.#added=this.#added,this.#inputSection['push'](a.#inputSection),this.#commandSection['push'](a.#commandSection),a;}['add'](a){if(typeof a==='function'){if(this.#added['has'](a))return this.#added['get'](a);const b=this.#fork(),c=a(b);if(!(c&&typeof c==='object'&&'then'in c))return this.#availableResults=b.#availableResults,this.#added['set'](a,c),c;const d=this.#addCommand({'$kind':'$Intent','$Intent':{'name':'AsyncTransactionThunk','inputs':{},'data':{'resultIndex':this.#data['commands']['length'],'result':null}}});this.#pendingPromises['add'](Promise['resolve'](c)['then'](f=>{d['$Intent']['data']['result']=f;}));const e=createTransactionResult(()=>d['$Intent']['data']['resultIndex']);return this.#added['set'](a,e),e;}else this.#addCommand(a);return createTransactionResult(this.#data['commands']['length']-0x1);}#addCommand(a){const b=this.#data['commands']['length'];return this.#commandSection['push'](a),this.#availableResults['add'](b),this.#data['commands']['push'](a),this.#data['mapCommandArguments'](b,c=>{if(c['$kind']==='Result'&&!this.#availableResults['has'](c['Result']))throw new Error('Result\x20{\x20Result:\x20'+c['Result']+'\x20}\x20is\x20not\x20available\x20to\x20use\x20in\x20the\x20current\x20transaction');if(c['$kind']==='NestedResult'&&!this.#availableResults['has'](c['NestedResult'][0x0]))throw new Error('Result\x20{\x20NestedResult:\x20['+c['NestedResult'][0x0]+',\x20'+c['NestedResult'][0x1]+']\x20}\x20is\x20not\x20available\x20to\x20use\x20in\x20the\x20current\x20transaction');if(c['$kind']==='Input'&&c['Input']>=this.#data['inputs']['length'])throw new Error('Input\x20{\x20Input:\x20'+c['Input']+'\x20}\x20references\x20an\x20input\x20that\x20does\x20not\x20exist\x20in\x20the\x20current\x20transaction');return c;}),a;}#addInput(a,b){return this.#inputSection['push'](b),this.#data['addInput'](a,b);}#normalizeTransactionArgument(a){if(isSerializedBcs(a))return this['pure'](a);return this.#resolveArgument(a);}#resolveArgument(a){if(typeof a==='function'){const b=this['add'](a);if(typeof b==='function')return this.#resolveArgument(b);return parse(ArgumentSchema,b);}return parse(ArgumentSchema,a);}['splitCoins'](a,b){const c=Commands['SplitCoins'](typeof a==='string'?this['object'](a):this.#resolveArgument(a),b['map'](d=>typeof d==='number'||typeof d==='bigint'||typeof d==='string'?this['pure']['u64'](d):this.#normalizeTransactionArgument(d)));return this.#addCommand(c),createTransactionResult(this.#data['commands']['length']-0x1,b['length']);}['mergeCoins'](a,b){return this['add'](Commands['MergeCoins'](this['object'](a),b['map'](c=>this['object'](c))));}['publish']({modules:a,dependencies:b}){return this['add'](Commands['Publish']({'modules':a,'dependencies':b}));}['upgrade']({modules:a,dependencies:b,package:c,ticket:d}){return this['add'](Commands['Upgrade']({'modules':a,'dependencies':b,'package':c,'ticket':this['object'](d)}));}['moveCall']({arguments:a,...b}){return this['add'](Commands['MoveCall']({...b,'arguments':a?.['map'](c=>this.#normalizeTransactionArgument(c))}));}['transferObjects'](a,b){return this['add'](Commands['TransferObjects'](a['map'](c=>this['object'](c)),typeof b==='string'?this['pure']['address'](b):this.#normalizeTransactionArgument(b)));}['makeMoveVec']({type:a,elements:b}){return this['add'](Commands['MakeMoveVec']({'type':a,'elements':b['map'](c=>this['object'](c))}));}['serialize'](){return JSON['stringify'](serializeV1TransactionData(this.#data['snapshot']()));}async['toJSON'](a={}){await this['prepareForSerialization'](a);const b=this['isFullyResolved']();return JSON['stringify'](parse(SerializedTransactionDataV2Schema,b?{...this.#data['snapshot'](),'digest':this.#data['getDigest']()}:this.#data['snapshot']()),(c,d)=>typeof d==='bigint'?d['toString']():d,0x2);}async['sign'](a){const {signer:b,...c}=a,d=await this['build'](c);return b['signTransaction'](d);}['isFullyResolved'](){if(!this.#data['sender'])return![];if(this.#pendingPromises['size']>0x0)return![];if(this.#data['commands']['some'](a=>a['$Intent']))return![];if(needsTransactionResolution(this.#data,{}))return![];return!![];}async['build'](a={}){return await this['prepareForSerialization'](a),await this.#prepareBuild(a),this.#data['build']({'onlyTransactionKind':a['onlyTransactionKind']});}async['getDigest'](a={}){return await this['prepareForSerialization'](a),await this.#prepareBuild(a),this.#data['getDigest']();}async #prepareBuild(a){if(!a['onlyTransactionKind']&&!this.#data['sender'])throw new Error('Missing\x20transaction\x20sender');await this.#runPlugins([...this.#buildPlugins,resolveTransactionPlugin],a);}async #runPlugins(a,b){try{const c=d=>{if(d>=a['length'])return()=>{};const e=a[d];return async()=>{const f=c(d+0x1);let g=![],h=![];await e(this.#data,b,async()=>{if(g)throw new Error('next()\x20was\x20call\x20multiple\x20times\x20in\x20TransactionPlugin\x20'+d);g=!![],await f(),h=!![];});if(!g)throw new Error('next()\x20was\x20not\x20called\x20in\x20TransactionPlugin\x20'+d);if(!h)throw new Error('next()\x20was\x20not\x20awaited\x20in\x20TransactionPlugin\x20'+d);};};await c(0x0)();}finally{this.#inputSection=this.#data['inputs']['slice'](),this.#commandSection=this.#data['commands']['slice'](),this.#availableResults=new Set(this.#commandSection['map']((d,e)=>e));}}async #waitForPendingTasks(){while(this.#pendingPromises['size']>0x0){const a=Promise['all'](this.#pendingPromises);this.#pendingPromises['clear'](),this.#pendingPromises['add'](a),await a,this.#pendingPromises['delete'](a);}}#sortCommandsAndInputs(){const a=this.#data['commands'],b=this.#data['inputs'],c=this.#commandSection['flat'](Infinity),d=this.#inputSection['flat'](Infinity);if(c['length']!==a['length'])throw new Error('Unexpected\x20number\x20of\x20commands\x20found\x20in\x20transaction\x20data');if(d['length']!==b['length'])throw new Error('Unexpected\x20number\x20of\x20inputs\x20found\x20in\x20transaction\x20data');const e=c['filter'](g=>g['$Intent']?.['name']!=='AsyncTransactionThunk');this.#data['commands']=e,this.#data['inputs']=d,this.#commandSection=e,this.#inputSection=d,this.#availableResults=new Set(e['map']((g,h)=>h));function f(g){const h=a[g];if(h['$Intent']?.['name']==='AsyncTransactionThunk'){const k=h['$Intent']['data']['result'];if(k==null)throw new Error('AsyncTransactionThunk\x20has\x20not\x20been\x20resolved');return f(k['Result']);}const j=e['indexOf'](h);if(j===-0x1)throw new Error('Unable\x20to\x20find\x20original\x20index\x20for\x20command');return j;}this.#data['mapArguments'](g=>{if(g['$kind']==='Input'){const h=d['indexOf'](b[g['Input']]);if(h===-0x1)throw new Error('Input\x20has\x20not\x20been\x20resolved');return{...g,'Input':h};}else{if(g['$kind']==='Result'){const j=f(g['Result']);return{...g,'Result':j};}else{if(g['$kind']==='NestedResult'){const k=f(g['NestedResult'][0x0]);return{...g,'NestedResult':[k,g['NestedResult'][0x1]]};}}}return g;});for(const [g,h]of a['entries']()){if(h['$Intent']?.['name']==='AsyncTransactionThunk')try{h['$Intent']['data']['resultIndex']=f(g);}catch{}}}async['prepareForSerialization'](a){await this.#waitForPendingTasks(),this.#sortCommandsAndInputs();const b=new Set();for(const d of this.#data['commands']){d['$Intent']&&b['add'](d['$Intent']['name']);}const c=[...this.#serializationPlugins];for(const e of b){if(a['supportedIntents']?.['includes'](e))continue;if(!this.#intentResolvers['has'](e))throw new Error('Missing\x20intent\x20resolver\x20for\x20'+e);c['push'](this.#intentResolvers['get'](e));}c['push'](namedPackagesPlugin()),await this.#runPlugins(c,a);}}_a=Transaction;
1
+ var _a;import{fromBase64,isSerializedBcs}from'../_deps/bcs/index.js';import{is,parse}from'valibot';import{normalizeWowAddress}from'../utils/sui-types.js';import{Commands}from'./Commands.js';import{ArgumentSchema,NormalizedCallArg,ObjectRefSchema,TransactionExpiration}from'./data/internal.js';import{serializeV1TransactionData}from'./data/v1.js';import{SerializedTransactionDataV2Schema}from'./data/v2.js';import{Inputs}from'./Inputs.js';import{needsTransactionResolution,resolveTransactionPlugin}from'./resolve.js';import{createObjectMethods}from'./object.js';import{createPure}from'./pure.js';import{TransactionDataBuilder}from'./TransactionData.js';import{getIdFromCallArg}from'./utils.js';import{namedPackagesPlugin}from'./plugins/NamedPackagesPlugin.js';function createTransactionResult(a,b=Infinity){const c={'$kind':'Result',get 'Result'(){return typeof a==='function'?a():a;}},d=[],e=f=>d[f]??={'$kind':'NestedResult',get 'NestedResult'(){return[typeof a==='function'?a():a,f];}};return new Proxy(c,{'set'(){throw new Error('The\x20transaction\x20result\x20is\x20a\x20proxy,\x20and\x20does\x20not\x20support\x20setting\x20properties\x20directly');},'get'(f,g){if(g in f)return Reflect['get'](f,g);if(g===Symbol['iterator'])return function*(){let j=0x0;while(j<b){yield e(j),j++;}};if(typeof g==='symbol')return;const h=parseInt(g,0xa);if(Number['isNaN'](h)||h<0x0)return;return e(h);}});}const TRANSACTION_BRAND=Symbol['for']('@mysten/transaction');export function isTransaction(a){return!!a&&typeof a==='object'&&a[TRANSACTION_BRAND]===!![];}const modulePluginRegistry={'buildPlugins':new Map(),'serializationPlugins':new Map()},TRANSACTION_REGISTRY_KEY=Symbol['for']('@mysten/transaction/registry');function getGlobalPluginRegistry(){try{const a=globalThis;return!a[TRANSACTION_REGISTRY_KEY]&&(a[TRANSACTION_REGISTRY_KEY]=modulePluginRegistry),a[TRANSACTION_REGISTRY_KEY];}catch{return modulePluginRegistry;}}export class Transaction{#serializationPlugins;#buildPlugins;#intentResolvers=new Map();#inputSection=[];#commandSection=[];#availableResults=new Set();#pendingPromises=new Set();#added=new Map();static['fromKind'](a){const b=new _a();return b.#data=TransactionDataBuilder['fromKindBytes'](typeof a==='string'?fromBase64(a):a),b.#inputSection=b.#data['inputs']['slice'](),b.#commandSection=b.#data['commands']['slice'](),b.#availableResults=new Set(b.#commandSection['map']((c,d)=>d)),b;}static['from'](a){const b=new _a();if(isTransaction(a))b.#data=TransactionDataBuilder['restore'](a['getData']());else typeof a!=='string'||!a['startsWith']('{')?b.#data=TransactionDataBuilder['fromBytes'](typeof a==='string'?fromBase64(a):a):b.#data=TransactionDataBuilder['restore'](JSON['parse'](a));return b.#inputSection=b.#data['inputs']['slice'](),b.#commandSection=b.#data['commands']['slice'](),b.#availableResults=new Set(b.#commandSection['map']((c,d)=>d)),b;}static['registerGlobalSerializationPlugin'](a,b){getGlobalPluginRegistry()['serializationPlugins']['set'](a,b??a);}static['unregisterGlobalSerializationPlugin'](a){getGlobalPluginRegistry()['serializationPlugins']['delete'](a);}static['registerGlobalBuildPlugin'](a,b){getGlobalPluginRegistry()['buildPlugins']['set'](a,b??a);}static['unregisterGlobalBuildPlugin'](a){getGlobalPluginRegistry()['buildPlugins']['delete'](a);}['addSerializationPlugin'](a){this.#serializationPlugins['push'](a);}['addBuildPlugin'](a){this.#buildPlugins['push'](a);}['addIntentResolver'](a,b){if(this.#intentResolvers['has'](a)&&this.#intentResolvers['get'](a)!==b)throw new Error('Intent\x20resolver\x20for\x20'+a+'\x20already\x20exists');this.#intentResolvers['set'](a,b);}['setSender'](a){this.#data['sender']=a;}['setSenderIfNotSet'](a){!this.#data['sender']&&(this.#data['sender']=a);}['setExpiration'](a){this.#data['expiration']=a?parse(TransactionExpiration,a):null;}['setGasPrice'](a){this.#data['gasConfig']['price']=String(a);}['setGasBudget'](a){this.#data['gasConfig']['budget']=String(a);}['setGasBudgetIfNotSet'](a){this.#data['gasData']['budget']==null&&(this.#data['gasConfig']['budget']=String(a));}['setGasOwner'](a){this.#data['gasConfig']['owner']=a;}['setGasPayment'](a){this.#data['gasConfig']['payment']=a['map'](b=>parse(ObjectRefSchema,b));}#data;get['blockData'](){return serializeV1TransactionData(this.#data['snapshot']());}['getData'](){return this.#data['snapshot']();}get[TRANSACTION_BRAND](){return!![];}get['pure'](){return Object['defineProperty'](this,'pure',{'enumerable':![],'value':createPure(a=>{if(isSerializedBcs(a))return this.#addInput('pure',{'$kind':'Pure','Pure':{'bytes':a['toBase64']()}});return this.#addInput('pure',is(NormalizedCallArg,a)?parse(NormalizedCallArg,a):a instanceof Uint8Array?Inputs['Pure'](a):{'$kind':'UnresolvedPure','UnresolvedPure':{'value':a}});})}),this['pure'];}constructor(){const a=getGlobalPluginRegistry();this.#data=new TransactionDataBuilder(),this.#buildPlugins=[...a['buildPlugins']['values']()],this.#serializationPlugins=[...a['serializationPlugins']['values']()];}get['gas'](){return{'$kind':'GasCoin','GasCoin':!![]};}['object']=createObjectMethods(value=>{if(typeof value==='function')return this['object'](this['add'](value));if(typeof value==='object'&&is(ArgumentSchema,value))return value;const id=getIdFromCallArg(value),inserted=this.#data['inputs']['find'](i=>id===getIdFromCallArg(i));return inserted?.['Object']?.['SharedObject']&&typeof value==='object'&&value['Object']?.['SharedObject']&&(inserted['Object']['SharedObject']['mutable']=inserted['Object']['SharedObject']['mutable']||value['Object']['SharedObject']['mutable']),inserted?{'$kind':'Input','Input':this.#data['inputs']['indexOf'](inserted),'type':'object'}:this.#addInput('object',typeof value==='string'?{'$kind':'UnresolvedObject','UnresolvedObject':{'objectId':normalizeWowAddress(value)}}:value);});['objectRef'](...a){return this['object'](Inputs['ObjectRef'](...a));}['receivingRef'](...a){return this['object'](Inputs['ReceivingRef'](...a));}['sharedObjectRef'](...a){return this['object'](Inputs['SharedObjectRef'](...a));}#fork(){const a=new _a();return a.#data=this.#data,a.#serializationPlugins=this.#serializationPlugins,a.#buildPlugins=this.#buildPlugins,a.#intentResolvers=this.#intentResolvers,a.#pendingPromises=this.#pendingPromises,a.#availableResults=new Set(this.#availableResults),a.#added=this.#added,this.#inputSection['push'](a.#inputSection),this.#commandSection['push'](a.#commandSection),a;}['add'](a){if(typeof a==='function'){if(this.#added['has'](a))return this.#added['get'](a);const b=this.#fork(),c=a(b);if(!(c&&typeof c==='object'&&'then'in c))return this.#availableResults=b.#availableResults,this.#added['set'](a,c),c;const d=this.#addCommand({'$kind':'$Intent','$Intent':{'name':'AsyncTransactionThunk','inputs':{},'data':{'resultIndex':this.#data['commands']['length'],'result':null}}});this.#pendingPromises['add'](Promise['resolve'](c)['then'](f=>{d['$Intent']['data']['result']=f;}));const e=createTransactionResult(()=>d['$Intent']['data']['resultIndex']);return this.#added['set'](a,e),e;}else this.#addCommand(a);return createTransactionResult(this.#data['commands']['length']-0x1);}#addCommand(a){const b=this.#data['commands']['length'];return this.#commandSection['push'](a),this.#availableResults['add'](b),this.#data['commands']['push'](a),this.#data['mapCommandArguments'](b,c=>{if(c['$kind']==='Result'&&!this.#availableResults['has'](c['Result']))throw new Error('Result\x20{\x20Result:\x20'+c['Result']+'\x20}\x20is\x20not\x20available\x20to\x20use\x20in\x20the\x20current\x20transaction');if(c['$kind']==='NestedResult'&&!this.#availableResults['has'](c['NestedResult'][0x0]))throw new Error('Result\x20{\x20NestedResult:\x20['+c['NestedResult'][0x0]+',\x20'+c['NestedResult'][0x1]+']\x20}\x20is\x20not\x20available\x20to\x20use\x20in\x20the\x20current\x20transaction');if(c['$kind']==='Input'&&c['Input']>=this.#data['inputs']['length'])throw new Error('Input\x20{\x20Input:\x20'+c['Input']+'\x20}\x20references\x20an\x20input\x20that\x20does\x20not\x20exist\x20in\x20the\x20current\x20transaction');return c;}),a;}#addInput(a,b){return this.#inputSection['push'](b),this.#data['addInput'](a,b);}#normalizeTransactionArgument(a){if(isSerializedBcs(a))return this['pure'](a);return this.#resolveArgument(a);}#resolveArgument(a){if(typeof a==='function'){const b=this['add'](a);if(typeof b==='function')return this.#resolveArgument(b);return parse(ArgumentSchema,b);}return parse(ArgumentSchema,a);}['splitCoins'](a,b){const c=Commands['SplitCoins'](typeof a==='string'?this['object'](a):this.#resolveArgument(a),b['map'](d=>typeof d==='number'||typeof d==='bigint'||typeof d==='string'?this['pure']['u64'](d):this.#normalizeTransactionArgument(d)));return this.#addCommand(c),createTransactionResult(this.#data['commands']['length']-0x1,b['length']);}['mergeCoins'](a,b){return this['add'](Commands['MergeCoins'](this['object'](a),b['map'](c=>this['object'](c))));}['publish']({modules:a,dependencies:b}){return this['add'](Commands['Publish']({'modules':a,'dependencies':b}));}['upgrade']({modules:a,dependencies:b,package:c,ticket:d}){return this['add'](Commands['Upgrade']({'modules':a,'dependencies':b,'package':c,'ticket':this['object'](d)}));}['moveCall']({arguments:a,...b}){return this['add'](Commands['MoveCall']({...b,'arguments':a?.['map'](c=>this.#normalizeTransactionArgument(c))}));}['transferObjects'](a,b){return this['add'](Commands['TransferObjects'](a['map'](c=>this['object'](c)),typeof b==='string'?this['pure']['address'](b):this.#normalizeTransactionArgument(b)));}['makeMoveVec']({type:a,elements:b}){return this['add'](Commands['MakeMoveVec']({'type':a,'elements':b['map'](c=>this['object'](c))}));}['serialize'](){return JSON['stringify'](serializeV1TransactionData(this.#data['snapshot']()));}async['toJSON'](a={}){await this['prepareForSerialization'](a);const b=this['isFullyResolved']();return JSON['stringify'](parse(SerializedTransactionDataV2Schema,b?{...this.#data['snapshot'](),'digest':this.#data['getDigest']()}:this.#data['snapshot']()),(c,d)=>typeof d==='bigint'?d['toString']():d,0x2);}async['sign'](a){const {signer:b,...c}=a,d=await this['build'](c);return b['signTransaction'](d);}['isFullyResolved'](){if(!this.#data['sender'])return![];if(this.#pendingPromises['size']>0x0)return![];if(this.#data['commands']['some'](a=>a['$Intent']))return![];if(needsTransactionResolution(this.#data,{}))return![];return!![];}async['build'](a={}){return await this['prepareForSerialization'](a),await this.#prepareBuild(a),this.#data['build']({'onlyTransactionKind':a['onlyTransactionKind']});}async['getDigest'](a={}){return await this['prepareForSerialization'](a),await this.#prepareBuild(a),this.#data['getDigest']();}async #prepareBuild(a){if(!a['onlyTransactionKind']&&!this.#data['sender'])throw new Error('Missing\x20transaction\x20sender');await this.#runPlugins([...this.#buildPlugins,resolveTransactionPlugin],a);}async #runPlugins(a,b){try{const c=d=>{if(d>=a['length'])return()=>{};const e=a[d];return async()=>{const f=c(d+0x1);let g=![],h=![];await e(this.#data,b,async()=>{if(g)throw new Error('next()\x20was\x20call\x20multiple\x20times\x20in\x20TransactionPlugin\x20'+d);g=!![],await f(),h=!![];});if(!g)throw new Error('next()\x20was\x20not\x20called\x20in\x20TransactionPlugin\x20'+d);if(!h)throw new Error('next()\x20was\x20not\x20awaited\x20in\x20TransactionPlugin\x20'+d);};};await c(0x0)();}finally{this.#inputSection=this.#data['inputs']['slice'](),this.#commandSection=this.#data['commands']['slice'](),this.#availableResults=new Set(this.#commandSection['map']((d,e)=>e));}}async #waitForPendingTasks(){while(this.#pendingPromises['size']>0x0){const a=Promise['all'](this.#pendingPromises);this.#pendingPromises['clear'](),this.#pendingPromises['add'](a),await a,this.#pendingPromises['delete'](a);}}#sortCommandsAndInputs(){const a=this.#data['commands'],b=this.#data['inputs'],c=this.#commandSection['flat'](Infinity),d=this.#inputSection['flat'](Infinity);if(c['length']!==a['length'])throw new Error('Unexpected\x20number\x20of\x20commands\x20found\x20in\x20transaction\x20data');if(d['length']!==b['length'])throw new Error('Unexpected\x20number\x20of\x20inputs\x20found\x20in\x20transaction\x20data');const e=c['filter'](g=>g['$Intent']?.['name']!=='AsyncTransactionThunk');this.#data['commands']=e,this.#data['inputs']=d,this.#commandSection=e,this.#inputSection=d,this.#availableResults=new Set(e['map']((g,h)=>h));function f(g){const h=a[g];if(h['$Intent']?.['name']==='AsyncTransactionThunk'){const k=h['$Intent']['data']['result'];if(k==null)throw new Error('AsyncTransactionThunk\x20has\x20not\x20been\x20resolved');return f(k['Result']);}const j=e['indexOf'](h);if(j===-0x1)throw new Error('Unable\x20to\x20find\x20original\x20index\x20for\x20command');return j;}this.#data['mapArguments'](g=>{if(g['$kind']==='Input'){const h=d['indexOf'](b[g['Input']]);if(h===-0x1)throw new Error('Input\x20has\x20not\x20been\x20resolved');return{...g,'Input':h};}else{if(g['$kind']==='Result'){const j=f(g['Result']);return{...g,'Result':j};}else{if(g['$kind']==='NestedResult'){const k=f(g['NestedResult'][0x0]);return{...g,'NestedResult':[k,g['NestedResult'][0x1]]};}}}return g;});for(const [g,h]of a['entries']()){if(h['$Intent']?.['name']==='AsyncTransactionThunk')try{h['$Intent']['data']['resultIndex']=f(g);}catch{}}}async['prepareForSerialization'](a){await this.#waitForPendingTasks(),this.#sortCommandsAndInputs();const b=new Set();for(const d of this.#data['commands']){d['$Intent']&&b['add'](d['$Intent']['name']);}const c=[...this.#serializationPlugins];for(const e of b){if(a['supportedIntents']?.['includes'](e))continue;if(!this.#intentResolvers['has'](e))throw new Error('Missing\x20intent\x20resolver\x20for\x20'+e);c['push'](this.#intentResolvers['get'](e));}c['push'](namedPackagesPlugin()),await this.#runPlugins(c,a);}}_a=Transaction;
@@ -1 +1 @@
1
- import{toBase58}from'@mysten/bcs';import{parse}from'valibot';import{bcs}from'../bcs/index.js';import{normalizeWowAddress}from'../utils/sui-types.js';import{ArgumentSchema,TransactionDataSchema}from'./data/internal.js';import{transactionDataFromV1}from'./data/v1.js';import{hashTypedData}from'./hash.js';import{getIdFromCallArg,remapCommandArguments}from'./utils.js';function prepareWowAddress(a){return normalizeWowAddress(a)['replace']('0x','');}export class TransactionDataBuilder{static['fromKindBytes'](a){const b=bcs['TransactionKind']['parse'](a),c=b['ProgrammableTransaction'];if(!c)throw new Error('Unable\x20to\x20deserialize\x20from\x20bytes.');return TransactionDataBuilder['restore']({'version':0x2,'sender':null,'expiration':null,'gasData':{'budget':null,'owner':null,'payment':null,'price':null},'inputs':c['inputs'],'commands':c['commands']});}static['fromBytes'](a){const b=bcs['TransactionData']['parse'](a),c=b?.['V1'],d=c['kind']['ProgrammableTransaction'];if(!c||!d)throw new Error('Unable\x20to\x20deserialize\x20from\x20bytes.');return TransactionDataBuilder['restore']({'version':0x2,'sender':c['sender'],'expiration':c['expiration'],'gasData':c['gasData'],'inputs':d['inputs'],'commands':d['commands']});}static['restore'](a){return a['version']===0x2?new TransactionDataBuilder(parse(TransactionDataSchema,a)):new TransactionDataBuilder(parse(TransactionDataSchema,transactionDataFromV1(a)));}static['getDigestFromBytes'](a){const b=hashTypedData('TransactionData',a);return toBase58(b);}get['gasConfig'](){return this['gasData'];}set['gasConfig'](a){this['gasData']=a;}['version']=0x2;['sender'];['expiration'];['gasData'];['inputs'];['commands'];constructor(a){this['sender']=a?.['sender']??null,this['expiration']=a?.['expiration']??null,this['inputs']=a?.['inputs']??[],this['commands']=a?.['commands']??[],this['gasData']=a?.['gasData']??{'budget':null,'price':null,'owner':null,'payment':null};}['build']({maxSizeBytes:maxSizeBytes=Infinity,overrides:a,onlyTransactionKind:b}={}){const c=this['inputs'],d=this['commands'],e={'ProgrammableTransaction':{'inputs':c,'commands':d}};if(b)return bcs['TransactionKind']['serialize'](e,{'maxSize':maxSizeBytes})['toBytes']();const f=a?.['expiration']??this['expiration'],g=a?.['sender']??this['sender'],h={...this['gasData'],...a?.['gasConfig'],...a?.['gasData']};if(!g)throw new Error('Missing\x20transaction\x20sender');if(!h['budget'])throw new Error('Missing\x20gas\x20budget');if(!h['payment'])throw new Error('Missing\x20gas\x20payment');if(!h['price'])throw new Error('Missing\x20gas\x20price');const i={'sender':prepareWowAddress(g),'expiration':f?f:{'None':!![]},'gasData':{'payment':h['payment'],'owner':prepareWowAddress(this['gasData']['owner']??g),'price':BigInt(h['price']),'budget':BigInt(h['budget'])},'kind':{'ProgrammableTransaction':{'inputs':c,'commands':d}}};return bcs['TransactionData']['serialize']({'V1':i},{'maxSize':maxSizeBytes})['toBytes']();}['addInput'](a,b){const c=this['inputs']['length'];return this['inputs']['push'](b),{'Input':c,'type':a,'$kind':'Input'};}['getInputUses'](a,b){this['mapArguments']((c,d)=>{return c['$kind']==='Input'&&c['Input']===a&&b(c,d),c;});}['mapCommandArguments'](a,b){const c=this['commands'][a];switch(c['$kind']){case'MoveCall':c['MoveCall']['arguments']=c['MoveCall']['arguments']['map'](e=>b(e,c,a));break;case'TransferObjects':c['TransferObjects']['objects']=c['TransferObjects']['objects']['map'](e=>b(e,c,a)),c['TransferObjects']['address']=b(c['TransferObjects']['address'],c,a);break;case'SplitCoins':c['SplitCoins']['coin']=b(c['SplitCoins']['coin'],c,a),c['SplitCoins']['amounts']=c['SplitCoins']['amounts']['map'](e=>b(e,c,a));break;case'MergeCoins':c['MergeCoins']['destination']=b(c['MergeCoins']['destination'],c,a),c['MergeCoins']['sources']=c['MergeCoins']['sources']['map'](e=>b(e,c,a));break;case'MakeMoveVec':c['MakeMoveVec']['elements']=c['MakeMoveVec']['elements']['map'](e=>b(e,c,a));break;case'Upgrade':c['Upgrade']['ticket']=b(c['Upgrade']['ticket'],c,a);break;case'$Intent':const d=c['$Intent']['inputs'];c['$Intent']['inputs']={};for(const [e,f]of Object['entries'](d)){c['$Intent']['inputs'][e]=Array['isArray'](f)?f['map'](g=>b(g,c,a)):b(f,c,a);}break;case'Publish':break;default:throw new Error('Unexpected\x20transaction\x20kind:\x20'+c['$kind']);}}['mapArguments'](a){for(const b of this['commands']['keys']()){this['mapCommandArguments'](b,a);}}['replaceCommand'](a,b,c=a){if(!Array['isArray'](b)){this['commands'][a]=b;return;}const d=b['length']-0x1;this['commands']['splice'](a,0x1,...structuredClone(b)),this['mapArguments']((e,f,g)=>{if(g<a+b['length'])return e;if(typeof c!=='number'){if(e['$kind']==='Result'&&e['Result']===a||e['$kind']==='NestedResult'&&e['NestedResult'][0x0]===a){if(!('NestedResult'in e)||e['NestedResult'][0x1]===0x0)return parse(ArgumentSchema,structuredClone(c));else throw new Error('Cannot\x20replace\x20command\x20'+a+'\x20with\x20a\x20specific\x20result\x20type:\x20NestedResult['+a+',\x20'+e['NestedResult'][0x1]+']\x20references\x20a\x20nested\x20element\x20that\x20cannot\x20be\x20mapped\x20to\x20the\x20replacement\x20result');}}switch(e['$kind']){case'Result':e['Result']===a&&typeof c==='number'&&(e['Result']=c);e['Result']>a&&(e['Result']+=d);break;case'NestedResult':if(e['NestedResult'][0x0]===a&&typeof c==='number')return{'$kind':'NestedResult','NestedResult':[c,e['NestedResult'][0x1]]};e['NestedResult'][0x0]>a&&(e['NestedResult'][0x0]+=d);break;}return e;});}['replaceCommandWithTransaction'](a,b,c){if(c['$kind']!=='Result'&&c['$kind']!=='NestedResult')throw new Error('Result\x20must\x20be\x20of\x20kind\x20Result\x20or\x20NestedResult');this['insertTransaction'](a,b),this['replaceCommand'](a+b['commands']['length'],[],'Result'in c?{'NestedResult':[c['Result']+a,0x0]}:{'NestedResult':[c['NestedResult'][0x0]+a,c['NestedResult'][0x1]]});}['insertTransaction'](a,b){const c=new Map(),d=new Map();for(let g=0x0;g<b['inputs']['length'];g++){const h=b['inputs'][g],j=getIdFromCallArg(h);let k=-0x1;j!==undefined&&(k=this['inputs']['findIndex'](l=>getIdFromCallArg(l)===j),k!==-0x1&&this['inputs'][k]['Object']?.['SharedObject']&&h['Object']?.['SharedObject']&&(this['inputs'][k]['Object']['SharedObject']['mutable']=this['inputs'][k]['Object']['SharedObject']['mutable']||h['Object']['SharedObject']['mutable']));if(k!==-0x1)c['set'](g,k);else{const l=this['inputs']['length'];this['inputs']['push'](h),c['set'](g,l);}}for(let m=0x0;m<b['commands']['length'];m++){d['set'](m,a+m);}const e=[];for(let n=0x0;n<b['commands']['length'];n++){const o=structuredClone(b['commands'][n]);remapCommandArguments(o,c,d),e['push'](o);}this['commands']['splice'](a,0x0,...e);const f=e['length'];f>0x0&&this['mapArguments']((p,q,r)=>{if(r>=a&&r<a+e['length'])return p;switch(p['$kind']){case'Result':p['Result']>=a&&(p['Result']+=f);break;case'NestedResult':p['NestedResult'][0x0]>=a&&(p['NestedResult'][0x0]+=f);break;}return p;});}['getDigest'](){const a=this['build']({'onlyTransactionKind':![]});return TransactionDataBuilder['getDigestFromBytes'](a);}['snapshot'](){return parse(TransactionDataSchema,this);}['shallowClone'](){return new TransactionDataBuilder({'version':this['version'],'sender':this['sender'],'expiration':this['expiration'],'gasData':{...this['gasData']},'inputs':[...this['inputs']],'commands':[...this['commands']]});}['applyResolvedData'](a){!this['sender']&&(this['sender']=a['sender']??null);!this['expiration']&&(this['expiration']=a['expiration']??null);!this['gasData']['budget']&&(this['gasData']['budget']=a['gasData']['budget']);!this['gasData']['owner']&&(this['gasData']['owner']=a['gasData']['owner']??null);!this['gasData']['payment']&&(this['gasData']['payment']=a['gasData']['payment']);!this['gasData']['price']&&(this['gasData']['price']=a['gasData']['price']);for(let b=0x0;b<this['inputs']['length'];b++){const c=this['inputs'][b],d=a['inputs'][b];switch(c['$kind']){case'UnresolvedPure':if(d['$kind']!=='Pure')throw new Error('Expected\x20input\x20at\x20index\x20'+b+'\x20to\x20resolve\x20to\x20a\x20Pure\x20argument,\x20but\x20got\x20'+JSON['stringify'](d));this['inputs'][b]=d;break;case'UnresolvedObject':if(d['$kind']!=='Object')throw new Error('Expected\x20input\x20at\x20index\x20'+b+'\x20to\x20resolve\x20to\x20an\x20Object\x20argument,\x20but\x20got\x20'+JSON['stringify'](d));if(d['Object']['$kind']==='ImmOrOwnedObject'||d['Object']['$kind']==='Receiving'){const e=c['UnresolvedObject'],f=d['Object']['ImmOrOwnedObject']??d['Object']['Receiving'];if(normalizeWowAddress(e['objectId'])!==normalizeWowAddress(f['objectId'])||e['version']!=null&&e['version']!==f['version']||e['digest']!=null&&e['digest']!==f['digest']||e['mutable']!=null||e['initialSharedVersion']!=null)throw new Error('Input\x20at\x20index\x20'+b+'\x20did\x20not\x20match\x20unresolved\x20object.\x20'+JSON['stringify'](e)+'\x20is\x20not\x20compatible\x20with\x20'+JSON['stringify'](f));}else{if(d['Object']['$kind']==='SharedObject'){const g=c['UnresolvedObject'],h=d['Object']['SharedObject'];if(normalizeWowAddress(g['objectId'])!==normalizeWowAddress(h['objectId'])||g['initialSharedVersion']!=null&&g['initialSharedVersion']!==h['initialSharedVersion']||g['mutable']!=null&&g['mutable']!==h['mutable']||g['version']!=null||g['digest']!=null)throw new Error('Input\x20at\x20index\x20'+b+'\x20did\x20not\x20match\x20unresolved\x20object.\x20'+JSON['stringify'](g)+'\x20is\x20not\x20compatible\x20with\x20'+JSON['stringify'](h));}else throw new Error('Input\x20at\x20index\x20'+b+'\x20resolved\x20to\x20an\x20unexpected\x20Object\x20kind:\x20'+JSON['stringify'](d['Object']));}this['inputs'][b]=d;break;}}}}
1
+ import{toBase58}from'../_deps/bcs/index.js';import{parse}from'valibot';import{bcs}from'../bcs/index.js';import{normalizeWowAddress}from'../utils/sui-types.js';import{ArgumentSchema,TransactionDataSchema}from'./data/internal.js';import{transactionDataFromV1}from'./data/v1.js';import{hashTypedData}from'./hash.js';import{getIdFromCallArg,remapCommandArguments}from'./utils.js';function prepareWowAddress(a){return normalizeWowAddress(a)['replace']('0x','');}export class TransactionDataBuilder{static['fromKindBytes'](a){const b=bcs['TransactionKind']['parse'](a),c=b['ProgrammableTransaction'];if(!c)throw new Error('Unable\x20to\x20deserialize\x20from\x20bytes.');return TransactionDataBuilder['restore']({'version':0x2,'sender':null,'expiration':null,'gasData':{'budget':null,'owner':null,'payment':null,'price':null},'inputs':c['inputs'],'commands':c['commands']});}static['fromBytes'](a){const b=bcs['TransactionData']['parse'](a),c=b?.['V1'],d=c['kind']['ProgrammableTransaction'];if(!c||!d)throw new Error('Unable\x20to\x20deserialize\x20from\x20bytes.');return TransactionDataBuilder['restore']({'version':0x2,'sender':c['sender'],'expiration':c['expiration'],'gasData':c['gasData'],'inputs':d['inputs'],'commands':d['commands']});}static['restore'](a){return a['version']===0x2?new TransactionDataBuilder(parse(TransactionDataSchema,a)):new TransactionDataBuilder(parse(TransactionDataSchema,transactionDataFromV1(a)));}static['getDigestFromBytes'](a){const b=hashTypedData('TransactionData',a);return toBase58(b);}get['gasConfig'](){return this['gasData'];}set['gasConfig'](a){this['gasData']=a;}['version']=0x2;['sender'];['expiration'];['gasData'];['inputs'];['commands'];constructor(a){this['sender']=a?.['sender']??null,this['expiration']=a?.['expiration']??null,this['inputs']=a?.['inputs']??[],this['commands']=a?.['commands']??[],this['gasData']=a?.['gasData']??{'budget':null,'price':null,'owner':null,'payment':null};}['build']({maxSizeBytes:maxSizeBytes=Infinity,overrides:a,onlyTransactionKind:b}={}){const c=this['inputs'],d=this['commands'],e={'ProgrammableTransaction':{'inputs':c,'commands':d}};if(b)return bcs['TransactionKind']['serialize'](e,{'maxSize':maxSizeBytes})['toBytes']();const f=a?.['expiration']??this['expiration'],g=a?.['sender']??this['sender'],h={...this['gasData'],...a?.['gasConfig'],...a?.['gasData']};if(!g)throw new Error('Missing\x20transaction\x20sender');if(!h['budget'])throw new Error('Missing\x20gas\x20budget');if(!h['payment'])throw new Error('Missing\x20gas\x20payment');if(!h['price'])throw new Error('Missing\x20gas\x20price');const i={'sender':prepareWowAddress(g),'expiration':f?f:{'None':!![]},'gasData':{'payment':h['payment'],'owner':prepareWowAddress(this['gasData']['owner']??g),'price':BigInt(h['price']),'budget':BigInt(h['budget'])},'kind':{'ProgrammableTransaction':{'inputs':c,'commands':d}}};return bcs['TransactionData']['serialize']({'V1':i},{'maxSize':maxSizeBytes})['toBytes']();}['addInput'](a,b){const c=this['inputs']['length'];return this['inputs']['push'](b),{'Input':c,'type':a,'$kind':'Input'};}['getInputUses'](a,b){this['mapArguments']((c,d)=>{return c['$kind']==='Input'&&c['Input']===a&&b(c,d),c;});}['mapCommandArguments'](a,b){const c=this['commands'][a];switch(c['$kind']){case'MoveCall':c['MoveCall']['arguments']=c['MoveCall']['arguments']['map'](e=>b(e,c,a));break;case'TransferObjects':c['TransferObjects']['objects']=c['TransferObjects']['objects']['map'](e=>b(e,c,a)),c['TransferObjects']['address']=b(c['TransferObjects']['address'],c,a);break;case'SplitCoins':c['SplitCoins']['coin']=b(c['SplitCoins']['coin'],c,a),c['SplitCoins']['amounts']=c['SplitCoins']['amounts']['map'](e=>b(e,c,a));break;case'MergeCoins':c['MergeCoins']['destination']=b(c['MergeCoins']['destination'],c,a),c['MergeCoins']['sources']=c['MergeCoins']['sources']['map'](e=>b(e,c,a));break;case'MakeMoveVec':c['MakeMoveVec']['elements']=c['MakeMoveVec']['elements']['map'](e=>b(e,c,a));break;case'Upgrade':c['Upgrade']['ticket']=b(c['Upgrade']['ticket'],c,a);break;case'$Intent':const d=c['$Intent']['inputs'];c['$Intent']['inputs']={};for(const [e,f]of Object['entries'](d)){c['$Intent']['inputs'][e]=Array['isArray'](f)?f['map'](g=>b(g,c,a)):b(f,c,a);}break;case'Publish':break;default:throw new Error('Unexpected\x20transaction\x20kind:\x20'+c['$kind']);}}['mapArguments'](a){for(const b of this['commands']['keys']()){this['mapCommandArguments'](b,a);}}['replaceCommand'](a,b,c=a){if(!Array['isArray'](b)){this['commands'][a]=b;return;}const d=b['length']-0x1;this['commands']['splice'](a,0x1,...structuredClone(b)),this['mapArguments']((e,f,g)=>{if(g<a+b['length'])return e;if(typeof c!=='number'){if(e['$kind']==='Result'&&e['Result']===a||e['$kind']==='NestedResult'&&e['NestedResult'][0x0]===a){if(!('NestedResult'in e)||e['NestedResult'][0x1]===0x0)return parse(ArgumentSchema,structuredClone(c));else throw new Error('Cannot\x20replace\x20command\x20'+a+'\x20with\x20a\x20specific\x20result\x20type:\x20NestedResult['+a+',\x20'+e['NestedResult'][0x1]+']\x20references\x20a\x20nested\x20element\x20that\x20cannot\x20be\x20mapped\x20to\x20the\x20replacement\x20result');}}switch(e['$kind']){case'Result':e['Result']===a&&typeof c==='number'&&(e['Result']=c);e['Result']>a&&(e['Result']+=d);break;case'NestedResult':if(e['NestedResult'][0x0]===a&&typeof c==='number')return{'$kind':'NestedResult','NestedResult':[c,e['NestedResult'][0x1]]};e['NestedResult'][0x0]>a&&(e['NestedResult'][0x0]+=d);break;}return e;});}['replaceCommandWithTransaction'](a,b,c){if(c['$kind']!=='Result'&&c['$kind']!=='NestedResult')throw new Error('Result\x20must\x20be\x20of\x20kind\x20Result\x20or\x20NestedResult');this['insertTransaction'](a,b),this['replaceCommand'](a+b['commands']['length'],[],'Result'in c?{'NestedResult':[c['Result']+a,0x0]}:{'NestedResult':[c['NestedResult'][0x0]+a,c['NestedResult'][0x1]]});}['insertTransaction'](a,b){const c=new Map(),d=new Map();for(let g=0x0;g<b['inputs']['length'];g++){const h=b['inputs'][g],j=getIdFromCallArg(h);let k=-0x1;j!==undefined&&(k=this['inputs']['findIndex'](l=>getIdFromCallArg(l)===j),k!==-0x1&&this['inputs'][k]['Object']?.['SharedObject']&&h['Object']?.['SharedObject']&&(this['inputs'][k]['Object']['SharedObject']['mutable']=this['inputs'][k]['Object']['SharedObject']['mutable']||h['Object']['SharedObject']['mutable']));if(k!==-0x1)c['set'](g,k);else{const l=this['inputs']['length'];this['inputs']['push'](h),c['set'](g,l);}}for(let m=0x0;m<b['commands']['length'];m++){d['set'](m,a+m);}const e=[];for(let n=0x0;n<b['commands']['length'];n++){const o=structuredClone(b['commands'][n]);remapCommandArguments(o,c,d),e['push'](o);}this['commands']['splice'](a,0x0,...e);const f=e['length'];f>0x0&&this['mapArguments']((p,q,r)=>{if(r>=a&&r<a+e['length'])return p;switch(p['$kind']){case'Result':p['Result']>=a&&(p['Result']+=f);break;case'NestedResult':p['NestedResult'][0x0]>=a&&(p['NestedResult'][0x0]+=f);break;}return p;});}['getDigest'](){const a=this['build']({'onlyTransactionKind':![]});return TransactionDataBuilder['getDigestFromBytes'](a);}['snapshot'](){return parse(TransactionDataSchema,this);}['shallowClone'](){return new TransactionDataBuilder({'version':this['version'],'sender':this['sender'],'expiration':this['expiration'],'gasData':{...this['gasData']},'inputs':[...this['inputs']],'commands':[...this['commands']]});}['applyResolvedData'](a){!this['sender']&&(this['sender']=a['sender']??null);!this['expiration']&&(this['expiration']=a['expiration']??null);!this['gasData']['budget']&&(this['gasData']['budget']=a['gasData']['budget']);!this['gasData']['owner']&&(this['gasData']['owner']=a['gasData']['owner']??null);!this['gasData']['payment']&&(this['gasData']['payment']=a['gasData']['payment']);!this['gasData']['price']&&(this['gasData']['price']=a['gasData']['price']);for(let b=0x0;b<this['inputs']['length'];b++){const c=this['inputs'][b],d=a['inputs'][b];switch(c['$kind']){case'UnresolvedPure':if(d['$kind']!=='Pure')throw new Error('Expected\x20input\x20at\x20index\x20'+b+'\x20to\x20resolve\x20to\x20a\x20Pure\x20argument,\x20but\x20got\x20'+JSON['stringify'](d));this['inputs'][b]=d;break;case'UnresolvedObject':if(d['$kind']!=='Object')throw new Error('Expected\x20input\x20at\x20index\x20'+b+'\x20to\x20resolve\x20to\x20an\x20Object\x20argument,\x20but\x20got\x20'+JSON['stringify'](d));if(d['Object']['$kind']==='ImmOrOwnedObject'||d['Object']['$kind']==='Receiving'){const e=c['UnresolvedObject'],f=d['Object']['ImmOrOwnedObject']??d['Object']['Receiving'];if(normalizeWowAddress(e['objectId'])!==normalizeWowAddress(f['objectId'])||e['version']!=null&&e['version']!==f['version']||e['digest']!=null&&e['digest']!==f['digest']||e['mutable']!=null||e['initialSharedVersion']!=null)throw new Error('Input\x20at\x20index\x20'+b+'\x20did\x20not\x20match\x20unresolved\x20object.\x20'+JSON['stringify'](e)+'\x20is\x20not\x20compatible\x20with\x20'+JSON['stringify'](f));}else{if(d['Object']['$kind']==='SharedObject'){const g=c['UnresolvedObject'],h=d['Object']['SharedObject'];if(normalizeWowAddress(g['objectId'])!==normalizeWowAddress(h['objectId'])||g['initialSharedVersion']!=null&&g['initialSharedVersion']!==h['initialSharedVersion']||g['mutable']!=null&&g['mutable']!==h['mutable']||g['version']!=null||g['digest']!=null)throw new Error('Input\x20at\x20index\x20'+b+'\x20did\x20not\x20match\x20unresolved\x20object.\x20'+JSON['stringify'](g)+'\x20is\x20not\x20compatible\x20with\x20'+JSON['stringify'](h));}else throw new Error('Input\x20at\x20index\x20'+b+'\x20resolved\x20to\x20an\x20unexpected\x20Object\x20kind:\x20'+JSON['stringify'](d['Object']));}this['inputs'][b]=d;break;}}}}
@@ -1 +1 @@
1
- import{toBase58}from'@mysten/bcs';import{describe,expect,it}from'vitest';import{bcs}from'../../bcs/index.js';import{Commands,Transaction}from'../index.js';import{Inputs}from'../Inputs.js';it('can\x20construct\x20and\x20serialize\x20an\x20empty\x20tranaction',()=>{const a=new Transaction();expect(()=>a['serialize']())['not']['toThrow']();}),it('can\x20construct\x20a\x20receiving\x20transaction\x20argument',()=>{const a=new Transaction();a['object'](Inputs['ReceivingRef'](ref())),expect(()=>a['serialize']())['not']['toThrow']();}),it('receiving\x20transaction\x20argument\x20different\x20from\x20object\x20argument',()=>{const a=ref(),b=new Transaction();b['object'](Inputs['ReceivingRef'](a));const c=new Transaction();c['object'](Inputs['ObjectRef'](a)),expect(()=>b['serialize']())['not']['toThrow'](),expect(()=>c['serialize']())['not']['toThrow'](),expect(c['serialize']())['not']['toEqual'](b['serialize']());}),it('can\x20be\x20serialized\x20and\x20deserialized\x20to\x20the\x20same\x20values',()=>{const a=new Transaction();a['add'](Commands['SplitCoins'](a['gas'],[a['pure']['u64'](0x64)]));const b=a['serialize'](),c=Transaction['from'](b);expect(b)['toEqual'](c['serialize']());}),it('allows\x20transfer\x20with\x20the\x20result\x20of\x20split\x20Commands',()=>{const a=new Transaction(),b=a['add'](Commands['SplitCoins'](a['gas'],[a['pure']['u64'](0x64)]));a['add'](Commands['TransferObjects']([b],a['object']('0x2')));}),it('supports\x20nested\x20results\x20through\x20either\x20array\x20index\x20or\x20destructuring',()=>{const a=new Transaction(),b=a['add'](Commands['MoveCall']({'target':'0x2::game::register'})),[c,d]=b;expect(c)['toBe'](b[0x0]),expect(d)['toBe'](b[0x1]);}),describe('offline\x20build',()=>{it('builds\x20an\x20empty\x20transaction\x20offline\x20when\x20provided\x20sufficient\x20data',async()=>{const a=setup();await a['build']();}),it('supports\x20epoch\x20expiration',async()=>{const a=setup();a['setExpiration']({'Epoch':0x1}),await a['build']();}),it('builds\x20a\x20split\x20transaction',async()=>{const a=setup();a['add'](Commands['SplitCoins'](a['gas'],[a['pure']['u64'](0x64)])),await a['build']();}),it('breaks\x20reference\x20equality',()=>{const a=setup(),b=Transaction['from'](a);a['setGasBudget'](0x3e7),expect(b['blockData'])['not']['toEqual'](a['blockData']),expect(a['blockData'])['not']['toBe'](a['blockData']),expect(a['blockData']['gasConfig'])['not']['toBe'](a['blockData']['gasConfig']),expect(a['blockData']['transactions'])['not']['toBe'](a['blockData']['transactions']),expect(a['blockData']['inputs'])['not']['toBe'](a['blockData']['inputs']);}),it('can\x20determine\x20the\x20type\x20of\x20inputs\x20for\x20built-in\x20Commands',async()=>{const a=setup();a['splitCoins'](a['gas'],[0x64]),await a['build']();}),it('supports\x20pre-serialized\x20inputs\x20as\x20Uint8Array',async()=>{const a=setup(),b=bcs['U64']['serialize'](0x64n)['toBytes']();a['add'](Commands['SplitCoins'](a['gas'],[a['pure'](b)])),await a['build']();}),it('builds\x20a\x20more\x20complex\x20interaction',async()=>{const a=setup(),b=a['splitCoins'](a['gas'],[0x64]);a['add'](Commands['MergeCoins'](a['gas'],[b,a['object'](Inputs['ObjectRef'](ref()))])),a['add'](Commands['MoveCall']({'target':'0x2::devnet_nft::mint','typeArguments':[],'arguments':[a['pure']['string']('foo'),a['pure']['string']('bar'),a['pure']['string']('baz')]})),await a['build']();}),it('uses\x20a\x20receiving\x20argument',async()=>{const a=setup();a['object'](Inputs['ObjectRef'](ref()));const b=a['splitCoins'](a['gas'],[0x64]);a['add'](Commands['MergeCoins'](a['gas'],[b,a['object'](Inputs['ObjectRef'](ref()))])),a['add'](Commands['MoveCall']({'target':'0x2::devnet_nft::mint','typeArguments':[],'arguments':[a['object'](Inputs['ObjectRef'](ref())),a['object'](Inputs['ReceivingRef'](ref()))]}));const c=await a['build'](),d=Transaction['from'](c),e=await d['build']();expect(c)['toEqual'](e);}),it('builds\x20a\x20more\x20complex\x20interaction',async()=>{const a=setup(),b=a['splitCoins'](a['gas'],[0x64]);a['add'](Commands['MergeCoins'](a['gas'],[b,a['object'](Inputs['ObjectRef'](ref()))])),a['add'](Commands['MoveCall']({'target':'0x2::devnet_nft::mint','typeArguments':[],'arguments':[a['pure']['string']('foo'),a['pure']['string']('bar'),a['pure']['string']('baz')]}));const c=await a['build'](),d=Transaction['from'](c),e=await d['build']();expect(c)['toEqual'](e);});});function ref(){return{'objectId':(Math['random']()*0x186a0)['toFixed'](0x0)['padEnd'](0x40,'0'),'version':String((Math['random']()*0x2710)['toFixed'](0x0)),'digest':toBase58(new Uint8Array([0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x1,0x2]))};}function setup(){const a=new Transaction();return a['setSender']('0x2'),a['setGasPrice'](0x5),a['setGasBudget'](0x64),a['setGasPayment']([ref()]),a;}
1
+ import{toBase58}from'../../_deps/bcs/index.js';import{describe,expect,it}from'vitest';import{bcs}from'../../bcs/index.js';import{Commands,Transaction}from'../index.js';import{Inputs}from'../Inputs.js';it('can\x20construct\x20and\x20serialize\x20an\x20empty\x20tranaction',()=>{const a=new Transaction();expect(()=>a['serialize']())['not']['toThrow']();}),it('can\x20construct\x20a\x20receiving\x20transaction\x20argument',()=>{const a=new Transaction();a['object'](Inputs['ReceivingRef'](ref())),expect(()=>a['serialize']())['not']['toThrow']();}),it('receiving\x20transaction\x20argument\x20different\x20from\x20object\x20argument',()=>{const a=ref(),b=new Transaction();b['object'](Inputs['ReceivingRef'](a));const c=new Transaction();c['object'](Inputs['ObjectRef'](a)),expect(()=>b['serialize']())['not']['toThrow'](),expect(()=>c['serialize']())['not']['toThrow'](),expect(c['serialize']())['not']['toEqual'](b['serialize']());}),it('can\x20be\x20serialized\x20and\x20deserialized\x20to\x20the\x20same\x20values',()=>{const a=new Transaction();a['add'](Commands['SplitCoins'](a['gas'],[a['pure']['u64'](0x64)]));const b=a['serialize'](),c=Transaction['from'](b);expect(b)['toEqual'](c['serialize']());}),it('allows\x20transfer\x20with\x20the\x20result\x20of\x20split\x20Commands',()=>{const a=new Transaction(),b=a['add'](Commands['SplitCoins'](a['gas'],[a['pure']['u64'](0x64)]));a['add'](Commands['TransferObjects']([b],a['object']('0x2')));}),it('supports\x20nested\x20results\x20through\x20either\x20array\x20index\x20or\x20destructuring',()=>{const a=new Transaction(),b=a['add'](Commands['MoveCall']({'target':'0x2::game::register'})),[c,d]=b;expect(c)['toBe'](b[0x0]),expect(d)['toBe'](b[0x1]);}),describe('offline\x20build',()=>{it('builds\x20an\x20empty\x20transaction\x20offline\x20when\x20provided\x20sufficient\x20data',async()=>{const a=setup();await a['build']();}),it('supports\x20epoch\x20expiration',async()=>{const a=setup();a['setExpiration']({'Epoch':0x1}),await a['build']();}),it('builds\x20a\x20split\x20transaction',async()=>{const a=setup();a['add'](Commands['SplitCoins'](a['gas'],[a['pure']['u64'](0x64)])),await a['build']();}),it('breaks\x20reference\x20equality',()=>{const a=setup(),b=Transaction['from'](a);a['setGasBudget'](0x3e7),expect(b['blockData'])['not']['toEqual'](a['blockData']),expect(a['blockData'])['not']['toBe'](a['blockData']),expect(a['blockData']['gasConfig'])['not']['toBe'](a['blockData']['gasConfig']),expect(a['blockData']['transactions'])['not']['toBe'](a['blockData']['transactions']),expect(a['blockData']['inputs'])['not']['toBe'](a['blockData']['inputs']);}),it('can\x20determine\x20the\x20type\x20of\x20inputs\x20for\x20built-in\x20Commands',async()=>{const a=setup();a['splitCoins'](a['gas'],[0x64]),await a['build']();}),it('supports\x20pre-serialized\x20inputs\x20as\x20Uint8Array',async()=>{const a=setup(),b=bcs['U64']['serialize'](0x64n)['toBytes']();a['add'](Commands['SplitCoins'](a['gas'],[a['pure'](b)])),await a['build']();}),it('builds\x20a\x20more\x20complex\x20interaction',async()=>{const a=setup(),b=a['splitCoins'](a['gas'],[0x64]);a['add'](Commands['MergeCoins'](a['gas'],[b,a['object'](Inputs['ObjectRef'](ref()))])),a['add'](Commands['MoveCall']({'target':'0x2::devnet_nft::mint','typeArguments':[],'arguments':[a['pure']['string']('foo'),a['pure']['string']('bar'),a['pure']['string']('baz')]})),await a['build']();}),it('uses\x20a\x20receiving\x20argument',async()=>{const a=setup();a['object'](Inputs['ObjectRef'](ref()));const b=a['splitCoins'](a['gas'],[0x64]);a['add'](Commands['MergeCoins'](a['gas'],[b,a['object'](Inputs['ObjectRef'](ref()))])),a['add'](Commands['MoveCall']({'target':'0x2::devnet_nft::mint','typeArguments':[],'arguments':[a['object'](Inputs['ObjectRef'](ref())),a['object'](Inputs['ReceivingRef'](ref()))]}));const c=await a['build'](),d=Transaction['from'](c),e=await d['build']();expect(c)['toEqual'](e);}),it('builds\x20a\x20more\x20complex\x20interaction',async()=>{const a=setup(),b=a['splitCoins'](a['gas'],[0x64]);a['add'](Commands['MergeCoins'](a['gas'],[b,a['object'](Inputs['ObjectRef'](ref()))])),a['add'](Commands['MoveCall']({'target':'0x2::devnet_nft::mint','typeArguments':[],'arguments':[a['pure']['string']('foo'),a['pure']['string']('bar'),a['pure']['string']('baz')]}));const c=await a['build'](),d=Transaction['from'](c),e=await d['build']();expect(c)['toEqual'](e);});});function ref(){return{'objectId':(Math['random']()*0x186a0)['toFixed'](0x0)['padEnd'](0x40,'0'),'version':String((Math['random']()*0x2710)['toFixed'](0x0)),'digest':toBase58(new Uint8Array([0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x1,0x2]))};}function setup(){const a=new Transaction();return a['setSender']('0x2'),a['setGasPrice'](0x5),a['setGasBudget'](0x64),a['setGasPayment']([ref()]),a;}
@@ -1 +1 @@
1
- import{toBase58}from'@mysten/bcs';import{expect,it}from'vitest';import{bcs}from'../../bcs/index.js';import{normalizeStructTag,normalizeWowAddress}from'../../utils/sui-types.js';it('can\x20serialize\x20simplified\x20programmable\x20call\x20struct',()=>{const a={'package':'0x2','module':'display','function':'new','typeArguments':[normalizeStructTag('0x6::capy::Capy')],'arguments':[{'$kind':'GasCoin','GasCoin':!![]},{'$kind':'NestedResult','NestedResult':[0x0,0x1]},{'$kind':'Input','Input':0x3},{'$kind':'Result','Result':0x1}]},b=bcs['ProgrammableMoveCall']['serialize'](a)['toBytes'](),c=bcs['ProgrammableMoveCall']['parse'](b);expect(c['arguments'])['toEqual'](a['arguments']),expect(c['function'])['toEqual'](a['function']),expect(c['module'])['toEqual'](a['module']),expect(normalizeWowAddress(c['package']))['toEqual'](normalizeWowAddress(a['package'])),expect(c['typeArguments'][0x0])['toEqual'](a['typeArguments'][0x0]);});function ref(){return{'objectId':normalizeWowAddress((Math['random']()*0x186a0)['toFixed'](0x0)['padEnd'](0x40,'0')),'version':String((Math['random']()*0x2710)['toFixed'](0x0)),'digest':toBase58(new Uint8Array([0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x1,0x2]))};}it('can\x20serialize\x20transaction\x20data\x20with\x20a\x20programmable\x20transaction',()=>{const a=normalizeWowAddress('0x2'),b={'$kind':'V1','V1':{'sender':normalizeWowAddress('0xBAD'),'expiration':{'$kind':'None','None':!![]},'gasData':{'payment':[ref()],'owner':a,'price':'1','budget':'1000000'},'kind':{'$kind':'ProgrammableTransaction','ProgrammableTransaction':{'inputs':[{'$kind':'Object','Object':{'$kind':'ImmOrOwnedObject','ImmOrOwnedObject':ref()}},{'$kind':'Pure','Pure':{'bytes':bcs['vector'](bcs['String'])['serialize'](['name','description','img_url'])['toBase64']()}},{'$kind':'Pure','Pure':{'bytes':bcs['vector'](bcs['String'])['serialize'](['Capy\x20{name}','A\x20cute\x20little\x20creature','https://api.capy.art/{id}/svg'])['toBase64']()}},{'$kind':'Pure','Pure':{'bytes':bcs['Address']['serialize'](ref()['objectId'])['toBase64']()}}],'commands':[{'$kind':'MoveCall','MoveCall':{'package':a,'module':'display','function':'new','typeArguments':[a+'::capy::Capy'],'arguments':[{'$kind':'Input','Input':0x0}]}},{'$kind':'MoveCall','MoveCall':{'package':a,'module':'display','function':'add_multiple','typeArguments':[a+'::capy::Capy'],'arguments':[{'$kind':'Result','Result':0x0},{'$kind':'Input','Input':0x1},{'$kind':'Input','Input':0x2}]}},{'$kind':'MoveCall','MoveCall':{'package':a,'module':'display','function':'update_version','typeArguments':[a+'::capy::Capy'],'arguments':[{'$kind':'Result','Result':0x0}]}},{'$kind':'TransferObjects','TransferObjects':{'objects':[{'$kind':'Result','Result':0x0}],'address':{'$kind':'Input','Input':0x3}}}]}}}},c=bcs['TransactionData']['serialize'](b)['toBytes'](),d=bcs['TransactionData']['parse'](c);expect(d)['toMatchObject'](b);});
1
+ import{toBase58}from'../../_deps/bcs/index.js';import{expect,it}from'vitest';import{bcs}from'../../bcs/index.js';import{normalizeStructTag,normalizeWowAddress}from'../../utils/sui-types.js';it('can\x20serialize\x20simplified\x20programmable\x20call\x20struct',()=>{const a={'package':'0x2','module':'display','function':'new','typeArguments':[normalizeStructTag('0x6::capy::Capy')],'arguments':[{'$kind':'GasCoin','GasCoin':!![]},{'$kind':'NestedResult','NestedResult':[0x0,0x1]},{'$kind':'Input','Input':0x3},{'$kind':'Result','Result':0x1}]},b=bcs['ProgrammableMoveCall']['serialize'](a)['toBytes'](),c=bcs['ProgrammableMoveCall']['parse'](b);expect(c['arguments'])['toEqual'](a['arguments']),expect(c['function'])['toEqual'](a['function']),expect(c['module'])['toEqual'](a['module']),expect(normalizeWowAddress(c['package']))['toEqual'](normalizeWowAddress(a['package'])),expect(c['typeArguments'][0x0])['toEqual'](a['typeArguments'][0x0]);});function ref(){return{'objectId':normalizeWowAddress((Math['random']()*0x186a0)['toFixed'](0x0)['padEnd'](0x40,'0')),'version':String((Math['random']()*0x2710)['toFixed'](0x0)),'digest':toBase58(new Uint8Array([0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x1,0x2]))};}it('can\x20serialize\x20transaction\x20data\x20with\x20a\x20programmable\x20transaction',()=>{const a=normalizeWowAddress('0x2'),b={'$kind':'V1','V1':{'sender':normalizeWowAddress('0xBAD'),'expiration':{'$kind':'None','None':!![]},'gasData':{'payment':[ref()],'owner':a,'price':'1','budget':'1000000'},'kind':{'$kind':'ProgrammableTransaction','ProgrammableTransaction':{'inputs':[{'$kind':'Object','Object':{'$kind':'ImmOrOwnedObject','ImmOrOwnedObject':ref()}},{'$kind':'Pure','Pure':{'bytes':bcs['vector'](bcs['String'])['serialize'](['name','description','img_url'])['toBase64']()}},{'$kind':'Pure','Pure':{'bytes':bcs['vector'](bcs['String'])['serialize'](['Capy\x20{name}','A\x20cute\x20little\x20creature','https://api.capy.art/{id}/svg'])['toBase64']()}},{'$kind':'Pure','Pure':{'bytes':bcs['Address']['serialize'](ref()['objectId'])['toBase64']()}}],'commands':[{'$kind':'MoveCall','MoveCall':{'package':a,'module':'display','function':'new','typeArguments':[a+'::capy::Capy'],'arguments':[{'$kind':'Input','Input':0x0}]}},{'$kind':'MoveCall','MoveCall':{'package':a,'module':'display','function':'add_multiple','typeArguments':[a+'::capy::Capy'],'arguments':[{'$kind':'Result','Result':0x0},{'$kind':'Input','Input':0x1},{'$kind':'Input','Input':0x2}]}},{'$kind':'MoveCall','MoveCall':{'package':a,'module':'display','function':'update_version','typeArguments':[a+'::capy::Capy'],'arguments':[{'$kind':'Result','Result':0x0}]}},{'$kind':'TransferObjects','TransferObjects':{'objects':[{'$kind':'Result','Result':0x0}],'address':{'$kind':'Input','Input':0x3}}}]}}}},c=bcs['TransactionData']['serialize'](b)['toBytes'](),d=bcs['TransactionData']['parse'](c);expect(d)['toMatchObject'](b);});
@@ -1,6 +1,6 @@
1
- import type { EnumInputShape, EnumOutputShape } from "@mysten/bcs";
1
+ import type { EnumInputShape, EnumOutputShape } from "../../_deps/bcs/index.js";
2
2
  import type { GenericSchema, InferInput, InferOutput } from "valibot";
3
- import type { Simplify } from "@mysten/utils";
3
+ import type { Simplify } from "../../_deps/utils/index.js";
4
4
  type EnumSchemaInput<T extends Record<string, GenericSchema<any>>> = EnumInputShape<Simplify<{
5
5
  [K in keyof T]: InferInput<T[K]>;
6
6
  }>>;
@@ -28,8 +28,8 @@ export declare const NormalizedCallArg: import("valibot").BaseSchema<{
28
28
  };
29
29
  } | {
30
30
  Pure: number[];
31
- }, import("@mysten/bcs").EnumOutputShapeWithKeys<{
32
- Object: import("@mysten/bcs").EnumOutputShapeWithKeys<{
31
+ }, import("../../_deps/bcs/types.js").EnumOutputShapeWithKeys<{
32
+ Object: import("../../_deps/bcs/types.js").EnumOutputShapeWithKeys<{
33
33
  ImmOrOwned: {
34
34
  digest: string;
35
35
  objectId: string;
@@ -1 +1 @@
1
- import{fromBase64,toBase64}from'@mysten/bcs';import{array,bigint,boolean,check,integer,is,lazy,literal,nullable,nullish,number,object,optional,parse,pipe,string,union,unknown}from'valibot';import{TypeTagSerializer}from'../../bcs/index.js';import{JsonU64,ObjectID,safeEnum,TransactionDataSchema}from'./internal.js';export const ObjectRef=object({'digest':string(),'objectId':string(),'version':union([pipe(number(),integer()),string(),bigint()])});const ObjectArg=safeEnum({'ImmOrOwned':ObjectRef,'Shared':object({'objectId':ObjectID,'initialSharedVersion':JsonU64,'mutable':boolean()}),'Receiving':ObjectRef});export const NormalizedCallArg=safeEnum({'Object':ObjectArg,'Pure':array(pipe(number(),integer()))});const TransactionInput=union([object({'kind':literal('Input'),'index':pipe(number(),integer()),'value':unknown(),'type':optional(literal('object'))}),object({'kind':literal('Input'),'index':pipe(number(),integer()),'value':unknown(),'type':literal('pure')})]),TransactionExpiration=union([object({'Epoch':pipe(number(),integer())}),object({'None':nullable(literal(!![]))})]),StringEncodedBigint=pipe(union([number(),string(),bigint()]),check(a=>{if(!['string','number','bigint']['includes'](typeof a))return![];try{return BigInt(a),!![];}catch{return![];}}));export const TypeTag=union([object({'bool':nullable(literal(!![]))}),object({'u8':nullable(literal(!![]))}),object({'u64':nullable(literal(!![]))}),object({'u128':nullable(literal(!![]))}),object({'address':nullable(literal(!![]))}),object({'signer':nullable(literal(!![]))}),object({'vector':lazy(()=>TypeTag)}),object({'struct':lazy(()=>StructTag)}),object({'u16':nullable(literal(!![]))}),object({'u32':nullable(literal(!![]))}),object({'u256':nullable(literal(!![]))})]);export const StructTag=object({'address':string(),'module':string(),'name':string(),'typeParams':array(TypeTag)});const GasConfig=object({'budget':optional(StringEncodedBigint),'price':optional(StringEncodedBigint),'payment':optional(array(ObjectRef)),'owner':optional(string())}),TransactionArgumentTypes=[TransactionInput,object({'kind':literal('GasCoin')}),object({'kind':literal('Result'),'index':pipe(number(),integer())}),object({'kind':literal('NestedResult'),'index':pipe(number(),integer()),'resultIndex':pipe(number(),integer())})];export const TransactionArgument=union([...TransactionArgumentTypes]);const MoveCallTransaction=object({'kind':literal('MoveCall'),'target':pipe(string(),check(a=>a['split']('::')['length']===0x3)),'typeArguments':array(string()),'arguments':array(TransactionArgument)}),TransferObjectsTransaction=object({'kind':literal('TransferObjects'),'objects':array(TransactionArgument),'address':TransactionArgument}),SplitCoinsTransaction=object({'kind':literal('SplitCoins'),'coin':TransactionArgument,'amounts':array(TransactionArgument)}),MergeCoinsTransaction=object({'kind':literal('MergeCoins'),'destination':TransactionArgument,'sources':array(TransactionArgument)}),MakeMoveVecTransaction=object({'kind':literal('MakeMoveVec'),'type':union([object({'Some':TypeTag}),object({'None':nullable(literal(!![]))})]),'objects':array(TransactionArgument)}),PublishTransaction=object({'kind':literal('Publish'),'modules':array(array(pipe(number(),integer()))),'dependencies':array(string())}),UpgradeTransaction=object({'kind':literal('Upgrade'),'modules':array(array(pipe(number(),integer()))),'dependencies':array(string()),'packageId':string(),'ticket':TransactionArgument}),TransactionTypes=[MoveCallTransaction,TransferObjectsTransaction,SplitCoinsTransaction,MergeCoinsTransaction,PublishTransaction,UpgradeTransaction,MakeMoveVecTransaction],TransactionType=union([...TransactionTypes]);export const SerializedTransactionDataV1=object({'version':literal(0x1),'sender':optional(string()),'expiration':nullish(TransactionExpiration),'gasConfig':GasConfig,'inputs':array(TransactionInput),'transactions':array(TransactionType)});export function serializeV1TransactionData(a){const b=a['inputs']['map']((c,d)=>{if(c['Object'])return{'kind':'Input','index':d,'value':{'Object':c['Object']['ImmOrOwnedObject']?{'ImmOrOwned':c['Object']['ImmOrOwnedObject']}:c['Object']['Receiving']?{'Receiving':{'digest':c['Object']['Receiving']['digest'],'version':c['Object']['Receiving']['version'],'objectId':c['Object']['Receiving']['objectId']}}:{'Shared':{'mutable':c['Object']['SharedObject']['mutable'],'initialSharedVersion':c['Object']['SharedObject']['initialSharedVersion'],'objectId':c['Object']['SharedObject']['objectId']}}},'type':'object'};if(c['Pure'])return{'kind':'Input','index':d,'value':{'Pure':Array['from'](fromBase64(c['Pure']['bytes']))},'type':'pure'};if(c['UnresolvedPure'])return{'kind':'Input','type':'pure','index':d,'value':c['UnresolvedPure']['value']};if(c['UnresolvedObject'])return{'kind':'Input','type':'object','index':d,'value':c['UnresolvedObject']['objectId']};throw new Error('Invalid\x20input');});return{'version':0x1,'sender':a['sender']??undefined,'expiration':a['expiration']?.['$kind']==='Epoch'?{'Epoch':Number(a['expiration']['Epoch'])}:a['expiration']?{'None':!![]}:null,'gasConfig':{'owner':a['gasData']['owner']??undefined,'budget':a['gasData']['budget']??undefined,'price':a['gasData']['price']??undefined,'payment':a['gasData']['payment']??undefined},'inputs':b,'transactions':a['commands']['map'](c=>{if(c['MakeMoveVec'])return{'kind':'MakeMoveVec','type':c['MakeMoveVec']['type']===null?{'None':!![]}:{'Some':TypeTagSerializer['parseFromStr'](c['MakeMoveVec']['type'])},'objects':c['MakeMoveVec']['elements']['map'](d=>convertTransactionArgument(d,b))};if(c['MergeCoins'])return{'kind':'MergeCoins','destination':convertTransactionArgument(c['MergeCoins']['destination'],b),'sources':c['MergeCoins']['sources']['map'](d=>convertTransactionArgument(d,b))};if(c['MoveCall'])return{'kind':'MoveCall','target':c['MoveCall']['package']+'::'+c['MoveCall']['module']+'::'+c['MoveCall']['function'],'typeArguments':c['MoveCall']['typeArguments'],'arguments':c['MoveCall']['arguments']['map'](d=>convertTransactionArgument(d,b))};if(c['Publish'])return{'kind':'Publish','modules':c['Publish']['modules']['map'](d=>Array['from'](fromBase64(d))),'dependencies':c['Publish']['dependencies']};if(c['SplitCoins'])return{'kind':'SplitCoins','coin':convertTransactionArgument(c['SplitCoins']['coin'],b),'amounts':c['SplitCoins']['amounts']['map'](d=>convertTransactionArgument(d,b))};if(c['TransferObjects'])return{'kind':'TransferObjects','objects':c['TransferObjects']['objects']['map'](d=>convertTransactionArgument(d,b)),'address':convertTransactionArgument(c['TransferObjects']['address'],b)};if(c['Upgrade'])return{'kind':'Upgrade','modules':c['Upgrade']['modules']['map'](d=>Array['from'](fromBase64(d))),'dependencies':c['Upgrade']['dependencies'],'packageId':c['Upgrade']['package'],'ticket':convertTransactionArgument(c['Upgrade']['ticket'],b)};throw new Error('Unknown\x20transaction\x20'+Object['keys'](c));})};}function convertTransactionArgument(a,b){if(a['$kind']==='GasCoin')return{'kind':'GasCoin'};if(a['$kind']==='Result')return{'kind':'Result','index':a['Result']};if(a['$kind']==='NestedResult')return{'kind':'NestedResult','index':a['NestedResult'][0x0],'resultIndex':a['NestedResult'][0x1]};if(a['$kind']==='Input')return b[a['Input']];throw new Error('Invalid\x20argument\x20'+Object['keys'](a));}export function transactionDataFromV1(a){return parse(TransactionDataSchema,{'version':0x2,'sender':a['sender']??null,'expiration':a['expiration']?'Epoch'in a['expiration']?{'Epoch':a['expiration']['Epoch']}:{'None':!![]}:null,'gasData':{'owner':a['gasConfig']['owner']??null,'budget':a['gasConfig']['budget']?.['toString']()??null,'price':a['gasConfig']['price']?.['toString']()??null,'payment':a['gasConfig']['payment']?.['map'](b=>({'digest':b['digest'],'objectId':b['objectId'],'version':b['version']['toString']()}))??null},'inputs':a['inputs']['map'](b=>{if(b['kind']==='Input'){if(is(NormalizedCallArg,b['value'])){const c=parse(NormalizedCallArg,b['value']);if(c['Object']){if(c['Object']['ImmOrOwned'])return{'Object':{'ImmOrOwnedObject':{'objectId':c['Object']['ImmOrOwned']['objectId'],'version':String(c['Object']['ImmOrOwned']['version']),'digest':c['Object']['ImmOrOwned']['digest']}}};if(c['Object']['Shared'])return{'Object':{'SharedObject':{'mutable':c['Object']['Shared']['mutable']??null,'initialSharedVersion':c['Object']['Shared']['initialSharedVersion'],'objectId':c['Object']['Shared']['objectId']}}};if(c['Object']['Receiving'])return{'Object':{'Receiving':{'digest':c['Object']['Receiving']['digest'],'version':String(c['Object']['Receiving']['version']),'objectId':c['Object']['Receiving']['objectId']}}};throw new Error('Invalid\x20object\x20input');}return{'Pure':{'bytes':toBase64(new Uint8Array(c['Pure']))}};}if(b['type']==='object')return{'UnresolvedObject':{'objectId':b['value']}};return{'UnresolvedPure':{'value':b['value']}};}throw new Error('Invalid\x20input');}),'commands':a['transactions']['map'](b=>{switch(b['kind']){case'MakeMoveVec':return{'MakeMoveVec':{'type':'Some'in b['type']?TypeTagSerializer['tagToString'](b['type']['Some']):null,'elements':b['objects']['map'](c=>parseV1TransactionArgument(c))}};case'MergeCoins':{return{'MergeCoins':{'destination':parseV1TransactionArgument(b['destination']),'sources':b['sources']['map'](c=>parseV1TransactionArgument(c))}};}case'MoveCall':{const [c,d,e]=b['target']['split']('::');return{'MoveCall':{'package':c,'module':d,'function':e,'typeArguments':b['typeArguments'],'arguments':b['arguments']['map'](f=>parseV1TransactionArgument(f))}};}case'Publish':{return{'Publish':{'modules':b['modules']['map'](f=>toBase64(Uint8Array['from'](f))),'dependencies':b['dependencies']}};}case'SplitCoins':{return{'SplitCoins':{'coin':parseV1TransactionArgument(b['coin']),'amounts':b['amounts']['map'](f=>parseV1TransactionArgument(f))}};}case'TransferObjects':{return{'TransferObjects':{'objects':b['objects']['map'](f=>parseV1TransactionArgument(f)),'address':parseV1TransactionArgument(b['address'])}};}case'Upgrade':{return{'Upgrade':{'modules':b['modules']['map'](f=>toBase64(Uint8Array['from'](f))),'dependencies':b['dependencies'],'package':b['packageId'],'ticket':parseV1TransactionArgument(b['ticket'])}};}}throw new Error('Unknown\x20transaction\x20'+Object['keys'](b));})});}function parseV1TransactionArgument(a){switch(a['kind']){case'GasCoin':{return{'GasCoin':!![]};}case'Result':return{'Result':a['index']};case'NestedResult':{return{'NestedResult':[a['index'],a['resultIndex']]};}case'Input':{return{'Input':a['index']};}}}
1
+ import{fromBase64,toBase64}from'../../_deps/bcs/index.js';import{array,bigint,boolean,check,integer,is,lazy,literal,nullable,nullish,number,object,optional,parse,pipe,string,union,unknown}from'valibot';import{TypeTagSerializer}from'../../bcs/index.js';import{JsonU64,ObjectID,safeEnum,TransactionDataSchema}from'./internal.js';export const ObjectRef=object({'digest':string(),'objectId':string(),'version':union([pipe(number(),integer()),string(),bigint()])});const ObjectArg=safeEnum({'ImmOrOwned':ObjectRef,'Shared':object({'objectId':ObjectID,'initialSharedVersion':JsonU64,'mutable':boolean()}),'Receiving':ObjectRef});export const NormalizedCallArg=safeEnum({'Object':ObjectArg,'Pure':array(pipe(number(),integer()))});const TransactionInput=union([object({'kind':literal('Input'),'index':pipe(number(),integer()),'value':unknown(),'type':optional(literal('object'))}),object({'kind':literal('Input'),'index':pipe(number(),integer()),'value':unknown(),'type':literal('pure')})]),TransactionExpiration=union([object({'Epoch':pipe(number(),integer())}),object({'None':nullable(literal(!![]))})]),StringEncodedBigint=pipe(union([number(),string(),bigint()]),check(a=>{if(!['string','number','bigint']['includes'](typeof a))return![];try{return BigInt(a),!![];}catch{return![];}}));export const TypeTag=union([object({'bool':nullable(literal(!![]))}),object({'u8':nullable(literal(!![]))}),object({'u64':nullable(literal(!![]))}),object({'u128':nullable(literal(!![]))}),object({'address':nullable(literal(!![]))}),object({'signer':nullable(literal(!![]))}),object({'vector':lazy(()=>TypeTag)}),object({'struct':lazy(()=>StructTag)}),object({'u16':nullable(literal(!![]))}),object({'u32':nullable(literal(!![]))}),object({'u256':nullable(literal(!![]))})]);export const StructTag=object({'address':string(),'module':string(),'name':string(),'typeParams':array(TypeTag)});const GasConfig=object({'budget':optional(StringEncodedBigint),'price':optional(StringEncodedBigint),'payment':optional(array(ObjectRef)),'owner':optional(string())}),TransactionArgumentTypes=[TransactionInput,object({'kind':literal('GasCoin')}),object({'kind':literal('Result'),'index':pipe(number(),integer())}),object({'kind':literal('NestedResult'),'index':pipe(number(),integer()),'resultIndex':pipe(number(),integer())})];export const TransactionArgument=union([...TransactionArgumentTypes]);const MoveCallTransaction=object({'kind':literal('MoveCall'),'target':pipe(string(),check(a=>a['split']('::')['length']===0x3)),'typeArguments':array(string()),'arguments':array(TransactionArgument)}),TransferObjectsTransaction=object({'kind':literal('TransferObjects'),'objects':array(TransactionArgument),'address':TransactionArgument}),SplitCoinsTransaction=object({'kind':literal('SplitCoins'),'coin':TransactionArgument,'amounts':array(TransactionArgument)}),MergeCoinsTransaction=object({'kind':literal('MergeCoins'),'destination':TransactionArgument,'sources':array(TransactionArgument)}),MakeMoveVecTransaction=object({'kind':literal('MakeMoveVec'),'type':union([object({'Some':TypeTag}),object({'None':nullable(literal(!![]))})]),'objects':array(TransactionArgument)}),PublishTransaction=object({'kind':literal('Publish'),'modules':array(array(pipe(number(),integer()))),'dependencies':array(string())}),UpgradeTransaction=object({'kind':literal('Upgrade'),'modules':array(array(pipe(number(),integer()))),'dependencies':array(string()),'packageId':string(),'ticket':TransactionArgument}),TransactionTypes=[MoveCallTransaction,TransferObjectsTransaction,SplitCoinsTransaction,MergeCoinsTransaction,PublishTransaction,UpgradeTransaction,MakeMoveVecTransaction],TransactionType=union([...TransactionTypes]);export const SerializedTransactionDataV1=object({'version':literal(0x1),'sender':optional(string()),'expiration':nullish(TransactionExpiration),'gasConfig':GasConfig,'inputs':array(TransactionInput),'transactions':array(TransactionType)});export function serializeV1TransactionData(a){const b=a['inputs']['map']((c,d)=>{if(c['Object'])return{'kind':'Input','index':d,'value':{'Object':c['Object']['ImmOrOwnedObject']?{'ImmOrOwned':c['Object']['ImmOrOwnedObject']}:c['Object']['Receiving']?{'Receiving':{'digest':c['Object']['Receiving']['digest'],'version':c['Object']['Receiving']['version'],'objectId':c['Object']['Receiving']['objectId']}}:{'Shared':{'mutable':c['Object']['SharedObject']['mutable'],'initialSharedVersion':c['Object']['SharedObject']['initialSharedVersion'],'objectId':c['Object']['SharedObject']['objectId']}}},'type':'object'};if(c['Pure'])return{'kind':'Input','index':d,'value':{'Pure':Array['from'](fromBase64(c['Pure']['bytes']))},'type':'pure'};if(c['UnresolvedPure'])return{'kind':'Input','type':'pure','index':d,'value':c['UnresolvedPure']['value']};if(c['UnresolvedObject'])return{'kind':'Input','type':'object','index':d,'value':c['UnresolvedObject']['objectId']};throw new Error('Invalid\x20input');});return{'version':0x1,'sender':a['sender']??undefined,'expiration':a['expiration']?.['$kind']==='Epoch'?{'Epoch':Number(a['expiration']['Epoch'])}:a['expiration']?{'None':!![]}:null,'gasConfig':{'owner':a['gasData']['owner']??undefined,'budget':a['gasData']['budget']??undefined,'price':a['gasData']['price']??undefined,'payment':a['gasData']['payment']??undefined},'inputs':b,'transactions':a['commands']['map'](c=>{if(c['MakeMoveVec'])return{'kind':'MakeMoveVec','type':c['MakeMoveVec']['type']===null?{'None':!![]}:{'Some':TypeTagSerializer['parseFromStr'](c['MakeMoveVec']['type'])},'objects':c['MakeMoveVec']['elements']['map'](d=>convertTransactionArgument(d,b))};if(c['MergeCoins'])return{'kind':'MergeCoins','destination':convertTransactionArgument(c['MergeCoins']['destination'],b),'sources':c['MergeCoins']['sources']['map'](d=>convertTransactionArgument(d,b))};if(c['MoveCall'])return{'kind':'MoveCall','target':c['MoveCall']['package']+'::'+c['MoveCall']['module']+'::'+c['MoveCall']['function'],'typeArguments':c['MoveCall']['typeArguments'],'arguments':c['MoveCall']['arguments']['map'](d=>convertTransactionArgument(d,b))};if(c['Publish'])return{'kind':'Publish','modules':c['Publish']['modules']['map'](d=>Array['from'](fromBase64(d))),'dependencies':c['Publish']['dependencies']};if(c['SplitCoins'])return{'kind':'SplitCoins','coin':convertTransactionArgument(c['SplitCoins']['coin'],b),'amounts':c['SplitCoins']['amounts']['map'](d=>convertTransactionArgument(d,b))};if(c['TransferObjects'])return{'kind':'TransferObjects','objects':c['TransferObjects']['objects']['map'](d=>convertTransactionArgument(d,b)),'address':convertTransactionArgument(c['TransferObjects']['address'],b)};if(c['Upgrade'])return{'kind':'Upgrade','modules':c['Upgrade']['modules']['map'](d=>Array['from'](fromBase64(d))),'dependencies':c['Upgrade']['dependencies'],'packageId':c['Upgrade']['package'],'ticket':convertTransactionArgument(c['Upgrade']['ticket'],b)};throw new Error('Unknown\x20transaction\x20'+Object['keys'](c));})};}function convertTransactionArgument(a,b){if(a['$kind']==='GasCoin')return{'kind':'GasCoin'};if(a['$kind']==='Result')return{'kind':'Result','index':a['Result']};if(a['$kind']==='NestedResult')return{'kind':'NestedResult','index':a['NestedResult'][0x0],'resultIndex':a['NestedResult'][0x1]};if(a['$kind']==='Input')return b[a['Input']];throw new Error('Invalid\x20argument\x20'+Object['keys'](a));}export function transactionDataFromV1(a){return parse(TransactionDataSchema,{'version':0x2,'sender':a['sender']??null,'expiration':a['expiration']?'Epoch'in a['expiration']?{'Epoch':a['expiration']['Epoch']}:{'None':!![]}:null,'gasData':{'owner':a['gasConfig']['owner']??null,'budget':a['gasConfig']['budget']?.['toString']()??null,'price':a['gasConfig']['price']?.['toString']()??null,'payment':a['gasConfig']['payment']?.['map'](b=>({'digest':b['digest'],'objectId':b['objectId'],'version':b['version']['toString']()}))??null},'inputs':a['inputs']['map'](b=>{if(b['kind']==='Input'){if(is(NormalizedCallArg,b['value'])){const c=parse(NormalizedCallArg,b['value']);if(c['Object']){if(c['Object']['ImmOrOwned'])return{'Object':{'ImmOrOwnedObject':{'objectId':c['Object']['ImmOrOwned']['objectId'],'version':String(c['Object']['ImmOrOwned']['version']),'digest':c['Object']['ImmOrOwned']['digest']}}};if(c['Object']['Shared'])return{'Object':{'SharedObject':{'mutable':c['Object']['Shared']['mutable']??null,'initialSharedVersion':c['Object']['Shared']['initialSharedVersion'],'objectId':c['Object']['Shared']['objectId']}}};if(c['Object']['Receiving'])return{'Object':{'Receiving':{'digest':c['Object']['Receiving']['digest'],'version':String(c['Object']['Receiving']['version']),'objectId':c['Object']['Receiving']['objectId']}}};throw new Error('Invalid\x20object\x20input');}return{'Pure':{'bytes':toBase64(new Uint8Array(c['Pure']))}};}if(b['type']==='object')return{'UnresolvedObject':{'objectId':b['value']}};return{'UnresolvedPure':{'value':b['value']}};}throw new Error('Invalid\x20input');}),'commands':a['transactions']['map'](b=>{switch(b['kind']){case'MakeMoveVec':return{'MakeMoveVec':{'type':'Some'in b['type']?TypeTagSerializer['tagToString'](b['type']['Some']):null,'elements':b['objects']['map'](c=>parseV1TransactionArgument(c))}};case'MergeCoins':{return{'MergeCoins':{'destination':parseV1TransactionArgument(b['destination']),'sources':b['sources']['map'](c=>parseV1TransactionArgument(c))}};}case'MoveCall':{const [c,d,e]=b['target']['split']('::');return{'MoveCall':{'package':c,'module':d,'function':e,'typeArguments':b['typeArguments'],'arguments':b['arguments']['map'](f=>parseV1TransactionArgument(f))}};}case'Publish':{return{'Publish':{'modules':b['modules']['map'](f=>toBase64(Uint8Array['from'](f))),'dependencies':b['dependencies']}};}case'SplitCoins':{return{'SplitCoins':{'coin':parseV1TransactionArgument(b['coin']),'amounts':b['amounts']['map'](f=>parseV1TransactionArgument(f))}};}case'TransferObjects':{return{'TransferObjects':{'objects':b['objects']['map'](f=>parseV1TransactionArgument(f)),'address':parseV1TransactionArgument(b['address'])}};}case'Upgrade':{return{'Upgrade':{'modules':b['modules']['map'](f=>toBase64(Uint8Array['from'](f))),'dependencies':b['dependencies'],'package':b['packageId'],'ticket':parseV1TransactionArgument(b['ticket'])}};}}throw new Error('Unknown\x20transaction\x20'+Object['keys'](b));})});}function parseV1TransactionArgument(a){switch(a['kind']){case'GasCoin':{return{'GasCoin':!![]};}case'Result':return{'Result':a['index']};case'NestedResult':{return{'NestedResult':[a['index'],a['resultIndex']]};}case'Input':{return{'Input':a['index']};}}}
@@ -1,4 +1,4 @@
1
- import type { EnumInputShape } from "@mysten/bcs";
1
+ import type { EnumInputShape } from "../../_deps/bcs/index.js";
2
2
  import type { GenericSchema, InferOutput } from "valibot";
3
3
  export declare const SerializedTransactionDataV2Schema: import("valibot").ObjectSchema<{
4
4
  readonly version: import("valibot").LiteralSchema<2, undefined>;
@@ -1 +1 @@
1
- import{toBase64}from'@mysten/bcs';import{promiseWithResolvers}from'@mysten/utils';import{bcs}from'../../bcs/index.js';import{Transaction}from'../Transaction.js';import{TransactionDataBuilder}from'../TransactionData.js';import{CachingTransactionExecutor}from'./caching.js';import{ParallelQueue,SerialQueue}from'./queue.js';import{getGasCoinFromEffects}from'./serial.js';const PARALLEL_EXECUTOR_DEFAULTS={'coinBatchSize':0x14,'initialCoinBalance':0xbebc200n,'minimumCoinBalance':0x2faf080n,'maxPoolSize':0x32,'epochBoundaryWindow':0x3e8};export class ParallelTransactionExecutor{#signer;#client;#coinBatchSize;#initialCoinBalance;#minimumCoinBalance;#epochBoundaryWindow;#defaultGasBudget;#maxPoolSize;#sourceCoins;#coinPool=[];#cache;#objectIdQueues=new Map();#buildQueue=new SerialQueue();#executeQueue;#lastDigest=null;#cacheLock=null;#pendingTransactions=0x0;#gasPrice=null;constructor(a){this.#signer=a['signer'],this.#client=a['client'],this.#coinBatchSize=a['coinBatchSize']??PARALLEL_EXECUTOR_DEFAULTS['coinBatchSize'],this.#initialCoinBalance=a['initialCoinBalance']??PARALLEL_EXECUTOR_DEFAULTS['initialCoinBalance'],this.#minimumCoinBalance=a['minimumCoinBalance']??PARALLEL_EXECUTOR_DEFAULTS['minimumCoinBalance'],this.#defaultGasBudget=a['defaultGasBudget']??this.#minimumCoinBalance,this.#epochBoundaryWindow=a['epochBoundaryWindow']??PARALLEL_EXECUTOR_DEFAULTS['epochBoundaryWindow'],this.#maxPoolSize=a['maxPoolSize']??PARALLEL_EXECUTOR_DEFAULTS['maxPoolSize'],this.#cache=new CachingTransactionExecutor({'client':a['client'],'cache':a['cache']}),this.#executeQueue=new ParallelQueue(this.#maxPoolSize),this.#sourceCoins=a['sourceCoins']?new Map(a['sourceCoins']['map'](b=>[b,null])):null;}['resetCache'](){return this.#gasPrice=null,this.#updateCache(()=>this.#cache['reset']());}async['waitForLastTransaction'](){await this.#updateCache(()=>this.#waitForLastDigest());}async['executeTransaction'](a,b,c=[]){const {promise:d,resolve:e,reject:f}=promiseWithResolvers(),g=await this.#getUsedObjects(a),h=()=>{this.#executeQueue['runTask'](()=>{const j=this.#execute(a,g,b,c);return j['then'](e,f);});},i=new Set();return g['forEach'](j=>{const k=this.#objectIdQueues['get'](j);k?(i['add'](j),this.#objectIdQueues['get'](j)['push'](()=>{i['delete'](j),i['size']===0x0&&h();})):this.#objectIdQueues['set'](j,[]);}),i['size']===0x0&&h(),d;}async #getUsedObjects(a){const b=new Set();let c=![];return a['addSerializationPlugin'](async(d,e,f)=>{await f();if(c)return;c=!![],d['inputs']['forEach'](g=>{if(g['Object']?.['ImmOrOwnedObject']?.['objectId'])b['add'](g['Object']['ImmOrOwnedObject']['objectId']);else{if(g['Object']?.['Receiving']?.['objectId'])b['add'](g['Object']['Receiving']['objectId']);else g['UnresolvedObject']?.['objectId']&&!g['UnresolvedObject']['initialSharedVersion']&&b['add'](g['UnresolvedObject']['objectId']);}});}),await a['prepareForSerialization']({'client':this.#client}),b;}async #execute(a,b,c,d=[]){let e;try{a['setSenderIfNotSet'](this.#signer['toWAddress']()),await this.#buildQueue['runTask'](async()=>{const m=a['getData']();!m['gasData']['price']&&a['setGasPrice'](await this.#getGasPrice()),a['setGasBudgetIfNotSet'](this.#defaultGasBudget),await this.#updateCache(),e=await this.#getGasCoin(),this.#pendingTransactions++,a['setGasPayment']([{'objectId':e['id'],'version':e['version'],'digest':e['digest']}]),await this.#cache['buildTransaction']({'transaction':a,'onlyTransactionKind':!![]});});const f=await a['build']({'client':this.#client}),{signature:g}=await this.#signer['signTransaction'](f),h=await this.#cache['executeTransaction']({'transaction':f,'signature':[g,...d],'options':{...c,'showEffects':!![]}}),i=Uint8Array['from'](h['rawEffects']),j=bcs['TransactionEffects']['parse'](i),k=getGasCoinFromEffects(j),l=j['V2']?.['gasUsed'];if(e&&l&&k['owner']===this.#signer['toWAddress']()){const m=BigInt(l['computationCost'])+BigInt(l['storageCost'])+BigInt(l['storageCost'])-BigInt(l['storageRebate']),n=e['balance']-m;let o=![];new TransactionDataBuilder(a['getData']())['mapArguments'](p=>{return p['$kind']==='GasCoin'&&(o=!![]),p;}),!o&&n>=this.#minimumCoinBalance?this.#coinPool['push']({'id':k['ref']['objectId'],'version':k['ref']['version'],'digest':k['ref']['digest'],'balance':n}):(!this.#sourceCoins&&(this.#sourceCoins=new Map()),this.#sourceCoins['set'](k['ref']['objectId'],k['ref']));}return this.#lastDigest=h['digest'],{'digest':h['digest'],'effects':toBase64(i),'data':h};}catch(p){e&&(!this.#sourceCoins&&(this.#sourceCoins=new Map()),this.#sourceCoins['set'](e['id'],null));await this.#updateCache(async()=>{await Promise['all']([this.#cache['cache']['deleteObjects']([...b]),this.#waitForLastDigest()]);});throw p;}finally{b['forEach'](q=>{const r=this.#objectIdQueues['get'](q);if(r&&r['length']>0x0)r['shift']()();else r&&this.#objectIdQueues['delete'](q);}),this.#pendingTransactions--;}}async #updateCache(a){this.#cacheLock&&await this.#cacheLock,this.#cacheLock=a?.()['then'](()=>{this.#cacheLock=null;},()=>{})??null;}async #waitForLastDigest(){const a=this.#lastDigest;a&&(this.#lastDigest=null,await this.#client['waitForTransaction']({'digest':a}));}async #getGasCoin(){this.#coinPool['length']===0x0&&this.#pendingTransactions<=this.#maxPoolSize&&await this.#refillCoinPool();if(this.#coinPool['length']===0x0)throw new Error('No\x20coins\x20available');const a=this.#coinPool['shift']();return a;}async #getGasPrice(){const a=this.#gasPrice?this.#gasPrice['expiration']-this.#epochBoundaryWindow-Date['now']():0x0;if(a>0x0)return this.#gasPrice['price'];if(this.#gasPrice){const c=Math['max'](this.#gasPrice['expiration']+this.#epochBoundaryWindow-Date['now'](),0x3e8);await new Promise(d=>setTimeout(d,c));}const b=await this.#client['getLatestSuiSystemState']();return this.#gasPrice={'price':BigInt(b['referenceGasPrice']),'expiration':Number['parseInt'](b['epochStartTimestampMs'],0xa)+Number['parseInt'](b['epochDurationMs'],0xa)},this.#getGasPrice();}async #refillCoinPool(){const a=Math['min'](this.#coinBatchSize,this.#maxPoolSize-(this.#coinPool['length']+this.#pendingTransactions)+0x1);if(a===0x0)return;const b=new Transaction(),c=this.#signer['toWAddress']();b['setSender'](c);if(this.#sourceCoins){const k=[],l=[];for(const [m,n]of this.#sourceCoins){n?k['push'](n):l['push'](m);}if(l['length']>0x0){const o=await this.#client['multiGetObjects']({'ids':l});k['push'](...o['filter'](p=>p['data']!==null)['map'](({data:p})=>({'objectId':p['objectId'],'version':p['version'],'digest':p['digest']})));}b['setGasPayment'](k),this.#sourceCoins=new Map();}const d=new Array(a)['fill'](this.#initialCoinBalance),e=b['splitCoins'](b['gas'],d),f=[];for(let p=0x0;p<d['length'];p++){f['push'](e[p]);}b['transferObjects'](f,c),await this['waitForLastTransaction']();const g=await this.#client['signAndExecuteTransaction']({'transaction':b,'signer':this.#signer,'options':{'showRawEffects':!![]}}),h=bcs['TransactionEffects']['parse'](Uint8Array['from'](g['rawEffects']));h['V2']?.['changedObjects']['forEach'](([q,{outputState:r}],s)=>{if(s===h['V2']?.['gasObjectIndex']||!r['ObjectWrite'])return;this.#coinPool['push']({'id':q,'version':h['V2']['lamportVersion'],'digest':r['ObjectWrite'][0x0],'balance':BigInt(this.#initialCoinBalance)});});!this.#sourceCoins&&(this.#sourceCoins=new Map());const j=getGasCoinFromEffects(h)['ref'];this.#sourceCoins['set'](j['objectId'],j),await this.#client['waitForTransaction']({'digest':g['digest']});}}
1
+ import{toBase64}from'../../_deps/bcs/index.js';import{promiseWithResolvers}from'../../_deps/utils/index.js';import{bcs}from'../../bcs/index.js';import{Transaction}from'../Transaction.js';import{TransactionDataBuilder}from'../TransactionData.js';import{CachingTransactionExecutor}from'./caching.js';import{ParallelQueue,SerialQueue}from'./queue.js';import{getGasCoinFromEffects}from'./serial.js';const PARALLEL_EXECUTOR_DEFAULTS={'coinBatchSize':0x14,'initialCoinBalance':0xbebc200n,'minimumCoinBalance':0x2faf080n,'maxPoolSize':0x32,'epochBoundaryWindow':0x3e8};export class ParallelTransactionExecutor{#signer;#client;#coinBatchSize;#initialCoinBalance;#minimumCoinBalance;#epochBoundaryWindow;#defaultGasBudget;#maxPoolSize;#sourceCoins;#coinPool=[];#cache;#objectIdQueues=new Map();#buildQueue=new SerialQueue();#executeQueue;#lastDigest=null;#cacheLock=null;#pendingTransactions=0x0;#gasPrice=null;constructor(a){this.#signer=a['signer'],this.#client=a['client'],this.#coinBatchSize=a['coinBatchSize']??PARALLEL_EXECUTOR_DEFAULTS['coinBatchSize'],this.#initialCoinBalance=a['initialCoinBalance']??PARALLEL_EXECUTOR_DEFAULTS['initialCoinBalance'],this.#minimumCoinBalance=a['minimumCoinBalance']??PARALLEL_EXECUTOR_DEFAULTS['minimumCoinBalance'],this.#defaultGasBudget=a['defaultGasBudget']??this.#minimumCoinBalance,this.#epochBoundaryWindow=a['epochBoundaryWindow']??PARALLEL_EXECUTOR_DEFAULTS['epochBoundaryWindow'],this.#maxPoolSize=a['maxPoolSize']??PARALLEL_EXECUTOR_DEFAULTS['maxPoolSize'],this.#cache=new CachingTransactionExecutor({'client':a['client'],'cache':a['cache']}),this.#executeQueue=new ParallelQueue(this.#maxPoolSize),this.#sourceCoins=a['sourceCoins']?new Map(a['sourceCoins']['map'](b=>[b,null])):null;}['resetCache'](){return this.#gasPrice=null,this.#updateCache(()=>this.#cache['reset']());}async['waitForLastTransaction'](){await this.#updateCache(()=>this.#waitForLastDigest());}async['executeTransaction'](a,b,c=[]){const {promise:d,resolve:e,reject:f}=promiseWithResolvers(),g=await this.#getUsedObjects(a),h=()=>{this.#executeQueue['runTask'](()=>{const j=this.#execute(a,g,b,c);return j['then'](e,f);});},i=new Set();return g['forEach'](j=>{const k=this.#objectIdQueues['get'](j);k?(i['add'](j),this.#objectIdQueues['get'](j)['push'](()=>{i['delete'](j),i['size']===0x0&&h();})):this.#objectIdQueues['set'](j,[]);}),i['size']===0x0&&h(),d;}async #getUsedObjects(a){const b=new Set();let c=![];return a['addSerializationPlugin'](async(d,e,f)=>{await f();if(c)return;c=!![],d['inputs']['forEach'](g=>{if(g['Object']?.['ImmOrOwnedObject']?.['objectId'])b['add'](g['Object']['ImmOrOwnedObject']['objectId']);else{if(g['Object']?.['Receiving']?.['objectId'])b['add'](g['Object']['Receiving']['objectId']);else g['UnresolvedObject']?.['objectId']&&!g['UnresolvedObject']['initialSharedVersion']&&b['add'](g['UnresolvedObject']['objectId']);}});}),await a['prepareForSerialization']({'client':this.#client}),b;}async #execute(a,b,c,d=[]){let e;try{a['setSenderIfNotSet'](this.#signer['toWAddress']()),await this.#buildQueue['runTask'](async()=>{const m=a['getData']();!m['gasData']['price']&&a['setGasPrice'](await this.#getGasPrice()),a['setGasBudgetIfNotSet'](this.#defaultGasBudget),await this.#updateCache(),e=await this.#getGasCoin(),this.#pendingTransactions++,a['setGasPayment']([{'objectId':e['id'],'version':e['version'],'digest':e['digest']}]),await this.#cache['buildTransaction']({'transaction':a,'onlyTransactionKind':!![]});});const f=await a['build']({'client':this.#client}),{signature:g}=await this.#signer['signTransaction'](f),h=await this.#cache['executeTransaction']({'transaction':f,'signature':[g,...d],'options':{...c,'showEffects':!![]}}),i=Uint8Array['from'](h['rawEffects']),j=bcs['TransactionEffects']['parse'](i),k=getGasCoinFromEffects(j),l=j['V2']?.['gasUsed'];if(e&&l&&k['owner']===this.#signer['toWAddress']()){const m=BigInt(l['computationCost'])+BigInt(l['storageCost'])+BigInt(l['storageCost'])-BigInt(l['storageRebate']),n=e['balance']-m;let o=![];new TransactionDataBuilder(a['getData']())['mapArguments'](p=>{return p['$kind']==='GasCoin'&&(o=!![]),p;}),!o&&n>=this.#minimumCoinBalance?this.#coinPool['push']({'id':k['ref']['objectId'],'version':k['ref']['version'],'digest':k['ref']['digest'],'balance':n}):(!this.#sourceCoins&&(this.#sourceCoins=new Map()),this.#sourceCoins['set'](k['ref']['objectId'],k['ref']));}return this.#lastDigest=h['digest'],{'digest':h['digest'],'effects':toBase64(i),'data':h};}catch(p){e&&(!this.#sourceCoins&&(this.#sourceCoins=new Map()),this.#sourceCoins['set'](e['id'],null));await this.#updateCache(async()=>{await Promise['all']([this.#cache['cache']['deleteObjects']([...b]),this.#waitForLastDigest()]);});throw p;}finally{b['forEach'](q=>{const r=this.#objectIdQueues['get'](q);if(r&&r['length']>0x0)r['shift']()();else r&&this.#objectIdQueues['delete'](q);}),this.#pendingTransactions--;}}async #updateCache(a){this.#cacheLock&&await this.#cacheLock,this.#cacheLock=a?.()['then'](()=>{this.#cacheLock=null;},()=>{})??null;}async #waitForLastDigest(){const a=this.#lastDigest;a&&(this.#lastDigest=null,await this.#client['waitForTransaction']({'digest':a}));}async #getGasCoin(){this.#coinPool['length']===0x0&&this.#pendingTransactions<=this.#maxPoolSize&&await this.#refillCoinPool();if(this.#coinPool['length']===0x0)throw new Error('No\x20coins\x20available');const a=this.#coinPool['shift']();return a;}async #getGasPrice(){const a=this.#gasPrice?this.#gasPrice['expiration']-this.#epochBoundaryWindow-Date['now']():0x0;if(a>0x0)return this.#gasPrice['price'];if(this.#gasPrice){const c=Math['max'](this.#gasPrice['expiration']+this.#epochBoundaryWindow-Date['now'](),0x3e8);await new Promise(d=>setTimeout(d,c));}const b=await this.#client['getLatestSuiSystemState']();return this.#gasPrice={'price':BigInt(b['referenceGasPrice']),'expiration':Number['parseInt'](b['epochStartTimestampMs'],0xa)+Number['parseInt'](b['epochDurationMs'],0xa)},this.#getGasPrice();}async #refillCoinPool(){const a=Math['min'](this.#coinBatchSize,this.#maxPoolSize-(this.#coinPool['length']+this.#pendingTransactions)+0x1);if(a===0x0)return;const b=new Transaction(),c=this.#signer['toWAddress']();b['setSender'](c);if(this.#sourceCoins){const k=[],l=[];for(const [m,n]of this.#sourceCoins){n?k['push'](n):l['push'](m);}if(l['length']>0x0){const o=await this.#client['multiGetObjects']({'ids':l});k['push'](...o['filter'](p=>p['data']!==null)['map'](({data:p})=>({'objectId':p['objectId'],'version':p['version'],'digest':p['digest']})));}b['setGasPayment'](k),this.#sourceCoins=new Map();}const d=new Array(a)['fill'](this.#initialCoinBalance),e=b['splitCoins'](b['gas'],d),f=[];for(let p=0x0;p<d['length'];p++){f['push'](e[p]);}b['transferObjects'](f,c),await this['waitForLastTransaction']();const g=await this.#client['signAndExecuteTransaction']({'transaction':b,'signer':this.#signer,'options':{'showRawEffects':!![]}}),h=bcs['TransactionEffects']['parse'](Uint8Array['from'](g['rawEffects']));h['V2']?.['changedObjects']['forEach'](([q,{outputState:r}],s)=>{if(s===h['V2']?.['gasObjectIndex']||!r['ObjectWrite'])return;this.#coinPool['push']({'id':q,'version':h['V2']['lamportVersion'],'digest':r['ObjectWrite'][0x0],'balance':BigInt(this.#initialCoinBalance)});});!this.#sourceCoins&&(this.#sourceCoins=new Map());const j=getGasCoinFromEffects(h)['ref'];this.#sourceCoins['set'](j['objectId'],j),await this.#client['waitForTransaction']({'digest':g['digest']});}}
@@ -1 +1 @@
1
- import{toBase64}from'@mysten/bcs';import{isTransaction,Transaction}from'../Transaction.js';import{CachingTransactionExecutor}from'./caching.js';import{SerialQueue}from'./queue.js';export class SerialTransactionExecutor{#queue=new SerialQueue();#signer;#cache;#defaultGasBudget;constructor({signer:a,defaultGasBudget:defaultGasBudget=0x2faf080n,...b}){this.#signer=a,this.#defaultGasBudget=defaultGasBudget,this.#cache=new CachingTransactionExecutor({'client':b['client'],'cache':b['cache'],'onEffects':c=>this.#cacheGasCoin(c)});}async['applyEffects'](a){return this.#cache['applyEffects'](a);}#cacheGasCoin=async a=>{if(!a['V2'])return;const b=getGasCoinFromEffects(a)['ref'];b?this.#cache['cache']['setCustom']('gasCoin',b):this.#cache['cache']['deleteCustom']('gasCoin');};async['buildTransaction'](a){return this.#queue['runTask'](()=>this.#buildTransaction(a));}#buildTransaction=async a=>{const b=await this.#cache['cache']['getCustom']('gasCoin'),c=Transaction['from'](a);return b&&c['setGasPayment']([b]),c['setGasBudgetIfNotSet'](this.#defaultGasBudget),c['setSenderIfNotSet'](this.#signer['toWAddress']()),this.#cache['buildTransaction']({'transaction':c});};['resetCache'](){return this.#cache['reset']();}['waitForLastTransaction'](){return this.#cache['waitForLastTransaction']();}['executeTransaction'](a,b,c=[]){return this.#queue['runTask'](async()=>{const d=isTransaction(a)?await this.#buildTransaction(a):a,{signature:e}=await this.#signer['signTransaction'](d),f=await this.#cache['executeTransaction']({'signature':[e,...c],'transaction':d,'options':b})['catch'](async h=>{await this['resetCache']();throw h;}),g=Uint8Array['from'](f['rawEffects']);return{'digest':f['digest'],'effects':toBase64(g),'data':f};});}}export function getGasCoinFromEffects(a){if(!a['V2'])throw new Error('Unexpected\x20effects\x20version');const b=a['V2']['changedObjects'][a['V2']['gasObjectIndex']];if(!b)throw new Error('Gas\x20object\x20not\x20found\x20in\x20effects');const [c,{outputState:d}]=b;if(!d['ObjectWrite'])throw new Error('Unexpected\x20gas\x20object\x20state');const [e,f]=d['ObjectWrite'];return{'ref':{'objectId':c,'digest':e,'version':a['V2']['lamportVersion']},'owner':f['AddressOwner']||f['ObjectOwner']};}
1
+ import{toBase64}from'../../_deps/bcs/index.js';import{isTransaction,Transaction}from'../Transaction.js';import{CachingTransactionExecutor}from'./caching.js';import{SerialQueue}from'./queue.js';export class SerialTransactionExecutor{#queue=new SerialQueue();#signer;#cache;#defaultGasBudget;constructor({signer:a,defaultGasBudget:defaultGasBudget=0x2faf080n,...b}){this.#signer=a,this.#defaultGasBudget=defaultGasBudget,this.#cache=new CachingTransactionExecutor({'client':b['client'],'cache':b['cache'],'onEffects':c=>this.#cacheGasCoin(c)});}async['applyEffects'](a){return this.#cache['applyEffects'](a);}#cacheGasCoin=async a=>{if(!a['V2'])return;const b=getGasCoinFromEffects(a)['ref'];b?this.#cache['cache']['setCustom']('gasCoin',b):this.#cache['cache']['deleteCustom']('gasCoin');};async['buildTransaction'](a){return this.#queue['runTask'](()=>this.#buildTransaction(a));}#buildTransaction=async a=>{const b=await this.#cache['cache']['getCustom']('gasCoin'),c=Transaction['from'](a);return b&&c['setGasPayment']([b]),c['setGasBudgetIfNotSet'](this.#defaultGasBudget),c['setSenderIfNotSet'](this.#signer['toWAddress']()),this.#cache['buildTransaction']({'transaction':c});};['resetCache'](){return this.#cache['reset']();}['waitForLastTransaction'](){return this.#cache['waitForLastTransaction']();}['executeTransaction'](a,b,c=[]){return this.#queue['runTask'](async()=>{const d=isTransaction(a)?await this.#buildTransaction(a):a,{signature:e}=await this.#signer['signTransaction'](d),f=await this.#cache['executeTransaction']({'signature':[e,...c],'transaction':d,'options':b})['catch'](async h=>{await this['resetCache']();throw h;}),g=Uint8Array['from'](f['rawEffects']);return{'digest':f['digest'],'effects':toBase64(g),'data':f};});}}export function getGasCoinFromEffects(a){if(!a['V2'])throw new Error('Unexpected\x20effects\x20version');const b=a['V2']['changedObjects'][a['V2']['gasObjectIndex']];if(!b)throw new Error('Gas\x20object\x20not\x20found\x20in\x20effects');const [c,{outputState:d}]=b;if(!d['ObjectWrite'])throw new Error('Unexpected\x20gas\x20object\x20state');const [e,f]=d['ObjectWrite'];return{'ref':{'objectId':c,'digest':e,'version':a['V2']['lamportVersion']},'owner':f['AddressOwner']||f['ObjectOwner']};}
@@ -1,4 +1,4 @@
1
- import type { SerializedBcs } from "@mysten/bcs";
1
+ import type { SerializedBcs } from "../_deps/bcs/index.js";
2
2
  import type { PureTypeName, ShapeFromPureTypeName, ValidPureTypeName } from "../bcs/pure.js";
3
3
  export declare function createPure<T>(makePure: (value: SerializedBcs<any, any> | Uint8Array) => T): {
4
4
  <Type extends PureTypeName>(type: Type extends PureTypeName ? ValidPureTypeName<Type> : Type, value: ShapeFromPureTypeName<Type>): T;
@@ -1 +1 @@
1
- import{isSerializedBcs}from'@mysten/bcs';import{bcs}from'../bcs/index.js';import{pureBcsSchemaFromTypeName}from'../bcs/pure.js';export function createPure(a){function b(c,d){if(typeof c==='string')return a(pureBcsSchemaFromTypeName(c)['serialize'](d));if(c instanceof Uint8Array||isSerializedBcs(c))return a(c);throw new Error('tx.pure\x20must\x20be\x20called\x20either\x20a\x20bcs\x20type\x20name,\x20or\x20a\x20serialized\x20bcs\x20value');}return b['u8']=c=>a(bcs['U8']['serialize'](c)),b['u16']=c=>a(bcs['U16']['serialize'](c)),b['u32']=c=>a(bcs['U32']['serialize'](c)),b['u64']=c=>a(bcs['U64']['serialize'](c)),b['u128']=c=>a(bcs['U128']['serialize'](c)),b['u256']=c=>a(bcs['U256']['serialize'](c)),b['bool']=c=>a(bcs['Bool']['serialize'](c)),b['string']=c=>a(bcs['String']['serialize'](c)),b['address']=c=>a(bcs['Address']['serialize'](c)),b['id']=b['address'],b['vector']=(c,d)=>{return a(bcs['vector'](pureBcsSchemaFromTypeName(c))['serialize'](d));},b['option']=(c,d)=>{return a(bcs['option'](pureBcsSchemaFromTypeName(c))['serialize'](d));},b;}
1
+ import{isSerializedBcs}from'../_deps/bcs/index.js';import{bcs}from'../bcs/index.js';import{pureBcsSchemaFromTypeName}from'../bcs/pure.js';export function createPure(a){function b(c,d){if(typeof c==='string')return a(pureBcsSchemaFromTypeName(c)['serialize'](d));if(c instanceof Uint8Array||isSerializedBcs(c))return a(c);throw new Error('tx.pure\x20must\x20be\x20called\x20either\x20a\x20bcs\x20type\x20name,\x20or\x20a\x20serialized\x20bcs\x20value');}return b['u8']=c=>a(bcs['U8']['serialize'](c)),b['u16']=c=>a(bcs['U16']['serialize'](c)),b['u32']=c=>a(bcs['U32']['serialize'](c)),b['u64']=c=>a(bcs['U64']['serialize'](c)),b['u128']=c=>a(bcs['U128']['serialize'](c)),b['u256']=c=>a(bcs['U256']['serialize'](c)),b['bool']=c=>a(bcs['Bool']['serialize'](c)),b['string']=c=>a(bcs['String']['serialize'](c)),b['address']=c=>a(bcs['Address']['serialize'](c)),b['id']=b['address'],b['vector']=(c,d)=>{return a(bcs['vector'](pureBcsSchemaFromTypeName(c))['serialize'](d));},b['option']=(c,d)=>{return a(bcs['option'](pureBcsSchemaFromTypeName(c))['serialize'](d));},b;}
@@ -1,4 +1,4 @@
1
- import type { BcsType } from "@mysten/bcs";
1
+ import type { BcsType } from "../_deps/bcs/index.js";
2
2
  import type { SuiMoveNormalizedType } from "../client/index.js";
3
3
  import type { OpenMoveTypeSignature, OpenMoveTypeSignatureBody } from "./data/internal.js";
4
4
  export declare function isTxContext(param: OpenMoveTypeSignature): boolean;
@@ -1 +1 @@
1
- import{toHex}from'@mysten/bcs';import{blake2b}from'@noble/hashes/blake2b';import{bcs}from'../bcs/index.js';export function deriveDynamicFieldID(a,b,c){const d=bcs['Address']['serialize'](a)['toBytes'](),e=bcs['TypeTag']['serialize'](b)['toBytes'](),f=bcs['u64']()['serialize'](c['length'])['toBytes'](),g=blake2b['create']({'dkLen':0x20});return g['update'](new Uint8Array([0xf0])),g['update'](d),g['update'](f),g['update'](c),g['update'](e),'0x'+toHex(g['digest']()['slice'](0x0,0x20));}
1
+ import{toHex}from'../_deps/bcs/index.js';import{blake2b}from'@noble/hashes/blake2b';import{bcs}from'../bcs/index.js';export function deriveDynamicFieldID(a,b,c){const d=bcs['Address']['serialize'](a)['toBytes'](),e=bcs['TypeTag']['serialize'](b)['toBytes'](),f=bcs['u64']()['serialize'](c['length'])['toBytes'](),g=blake2b['create']({'dkLen':0x20});return g['update'](new Uint8Array([0xf0])),g['update'](d),g['update'](f),g['update'](c),g['update'](e),'0x'+toHex(g['digest']()['slice'](0x0,0x20));}
@@ -1,6 +1,6 @@
1
1
  export { formatAddress, formatDigest } from "./format.js";
2
2
  export { isValidWowAddress, isValidWowObjectId, isValidTransactionDigest, normalizeStructTag, normalizeWowAddress, normalizeWowObjectId, parseStructTag, WOW_ADDRESS_LENGTH, } from "./sui-types.js";
3
- export { fromB64, toB64, fromHEX, toHex, toHEX, fromHex, fromBase64, toBase64, fromBase58, toBase58, } from "@mysten/bcs";
3
+ export { fromB64, toB64, fromHEX, toHex, toHEX, fromHex, fromBase64, toBase64, fromBase58, toBase58, } from "../_deps/bcs/index.js";
4
4
  export { WOW_DECIMALS, MIST_PER_WOW, MOVE_STDLIB_ADDRESS, WOW_FRAMEWORK_ADDRESS, WOW_SYSTEM_ADDRESS, WOW_CLOCK_OBJECT_ID, WOW_SYSTEM_MODULE_NAME, WOW_TYPE_ARG, WOW_SYSTEM_STATE_OBJECT_ID, WOW_RANDOM_OBJECT_ID, } from "./constants.js";
5
5
  export { isValidNamedPackage, isValidNamedType } from "./move-registry.js";
6
6
  export { deriveDynamicFieldID } from "./dynamic-fields.js";
@@ -1 +1 @@
1
- export{formatAddress,formatDigest}from'./format.js';export{isValidWowAddress,isValidWowObjectId,isValidTransactionDigest,normalizeStructTag,normalizeWowAddress,normalizeWowObjectId,parseStructTag,WOW_ADDRESS_LENGTH}from'./sui-types.js';export{fromB64,toB64,fromHEX,toHex,toHEX,fromHex,fromBase64,toBase64,fromBase58,toBase58}from'@mysten/bcs';export{WOW_DECIMALS,MIST_PER_WOW,MOVE_STDLIB_ADDRESS,WOW_FRAMEWORK_ADDRESS,WOW_SYSTEM_ADDRESS,WOW_CLOCK_OBJECT_ID,WOW_SYSTEM_MODULE_NAME,WOW_TYPE_ARG,WOW_SYSTEM_STATE_OBJECT_ID,WOW_RANDOM_OBJECT_ID}from'./constants.js';export{isValidNamedPackage,isValidNamedType}from'./move-registry.js';export{deriveDynamicFieldID}from'./dynamic-fields.js';export{deriveObjectID}from'./derived-objects.js';export{normalizeTypeTag}from'../bcs/type-tag-serializer.js';
1
+ export{formatAddress,formatDigest}from'./format.js';export{isValidWowAddress,isValidWowObjectId,isValidTransactionDigest,normalizeStructTag,normalizeWowAddress,normalizeWowObjectId,parseStructTag,WOW_ADDRESS_LENGTH}from'./sui-types.js';export{fromB64,toB64,fromHEX,toHex,toHEX,fromHex,fromBase64,toBase64,fromBase58,toBase58}from'../_deps/bcs/index.js';export{WOW_DECIMALS,MIST_PER_WOW,MOVE_STDLIB_ADDRESS,WOW_FRAMEWORK_ADDRESS,WOW_SYSTEM_ADDRESS,WOW_CLOCK_OBJECT_ID,WOW_SYSTEM_MODULE_NAME,WOW_TYPE_ARG,WOW_SYSTEM_STATE_OBJECT_ID,WOW_RANDOM_OBJECT_ID}from'./constants.js';export{isValidNamedPackage,isValidNamedType}from'./move-registry.js';export{deriveDynamicFieldID}from'./dynamic-fields.js';export{deriveObjectID}from'./derived-objects.js';export{normalizeTypeTag}from'../bcs/type-tag-serializer.js';
@@ -1 +1 @@
1
- import{isValidSuiNSName}from'./suins.js';const NAME_PATTERN=/^([a-z0-9]+(?:-[a-z0-9]+)*)$/,VERSION_REGEX=/^\d+$/,MAX_APP_SIZE=0x40,NAME_SEPARATOR='/';export const isValidNamedPackage=a=>{const b=a['split'](NAME_SEPARATOR);if(b['length']<0x2||b['length']>0x3)return![];const [c,d,e]=b;if(e!==undefined&&!VERSION_REGEX['test'](e))return![];if(!isValidSuiNSName(c))return![];return NAME_PATTERN['test'](d)&&d['length']<MAX_APP_SIZE;};export const isValidNamedType=a=>{const b=a['split'](/::|<|>|,/);for(const c of b){if(c['includes'](NAME_SEPARATOR)&&!isValidNamedPackage(c))return![];}return!![];};
1
+ const ORG_NAME_REGEX=/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i,NAME_PATTERN=/^([a-z0-9]+(?:-[a-z0-9]+)*)$/,VERSION_REGEX=/^\d+$/,MAX_APP_SIZE=0x40,NAME_SEPARATOR='/';export const isValidNamedPackage=a=>{const b=a['split'](NAME_SEPARATOR);if(b['length']<0x2||b['length']>0x3)return![];const [c,d,e]=b;if(e!==undefined&&!VERSION_REGEX['test'](e))return![];if(!ORG_NAME_REGEX['test'](c))return![];return NAME_PATTERN['test'](d)&&d['length']<MAX_APP_SIZE;};export const isValidNamedType=a=>{const b=a['split'](/::|<|>|,/);for(const c of b){if(c['includes'](NAME_SEPARATOR)&&!isValidNamedPackage(c))return![];}return!![];};
@@ -1 +1 @@
1
- import{fromBase58,splitGenericParameters}from'@mysten/bcs';import{isValidNamedPackage}from'./move-registry.js';const TX_DIGEST_LENGTH=0x20;export function isValidTransactionDigest(a){try{const b=fromBase58(a);return b['length']===TX_DIGEST_LENGTH;}catch{return![];}}export const WOW_ADDRESS_LENGTH=0x20;export function isValidWowAddress(a){return isHex(a)&&getHexByteLength(a)===WOW_ADDRESS_LENGTH;}export function isValidWowObjectId(a){return isValidWowAddress(a);}function parseTypeTag(a){if(!a['includes']('::'))return a;return parseStructTag(a);}export function parseStructTag(a){const [b,c]=a['split']('::'),d=isValidNamedPackage(b),e=a['slice'](b['length']+c['length']+0x4),f=e['includes']('<')?e['slice'](0x0,e['indexOf']('<')):e,g=e['includes']('<')?splitGenericParameters(e['slice'](e['indexOf']('<')+0x1,e['lastIndexOf']('>')))['map'](h=>parseTypeTag(h['trim']())):[];return{'address':d?b:normalizeWowAddress(b),'module':c,'name':f,'typeParams':g};}export function normalizeStructTag(a){const {address:b,module:c,name:d,typeParams:e}=typeof a==='string'?parseStructTag(a):a,f=e?.['length']>0x0?'<'+e['map'](g=>typeof g==='string'?g:normalizeStructTag(g))['join'](',')+'>':'';return b+'::'+c+'::'+d+f;}export function normalizeWowAddress(a,b=![]){let c=a['toLowerCase']();return!b&&c['startsWith']('0x')&&(c=c['slice'](0x2)),'0x'+c['padStart'](WOW_ADDRESS_LENGTH*0x2,'0');}export function normalizeWowObjectId(a,b=![]){return normalizeWowAddress(a,b);}function isHex(a){return/^(0x|0X)?[a-fA-F0-9]+$/['test'](a)&&a['length']%0x2===0x0;}function getHexByteLength(a){return/^(0x|0X)/['test'](a)?(a['length']-0x2)/0x2:a['length']/0x2;}
1
+ import{fromBase58,splitGenericParameters}from'../_deps/bcs/index.js';const TX_DIGEST_LENGTH=0x20;export function isValidTransactionDigest(a){try{const b=fromBase58(a);return b['length']===TX_DIGEST_LENGTH;}catch{return![];}}export const WOW_ADDRESS_LENGTH=0x20;export function isValidWowAddress(a){return isHex(a)&&getHexByteLength(a)===WOW_ADDRESS_LENGTH;}export function isValidWowObjectId(a){return isValidWowAddress(a);}function parseTypeTag(a){if(!a['includes']('::'))return a;return parseStructTag(a);}export function parseStructTag(a){const [b,c]=a['split']('::'),d=a['slice'](b['length']+c['length']+0x4),e=d['includes']('<')?d['slice'](0x0,d['indexOf']('<')):d,f=d['includes']('<')?splitGenericParameters(d['slice'](d['indexOf']('<')+0x1,d['lastIndexOf']('>')))['map'](g=>parseTypeTag(g['trim']())):[];return{'address':normalizeWowAddress(b),'module':c,'name':e,'typeParams':f};}export function normalizeStructTag(a){const {address:b,module:c,name:d,typeParams:e}=typeof a==='string'?parseStructTag(a):a,f=e?.['length']>0x0?'<'+e['map'](g=>typeof g==='string'?g:normalizeStructTag(g))['join'](',')+'>':'';return b+'::'+c+'::'+d+f;}export function normalizeWowAddress(a,b=![]){let c=a['toLowerCase']();return!b&&c['startsWith']('0x')&&(c=c['slice'](0x2)),'0x'+c['padStart'](WOW_ADDRESS_LENGTH*0x2,'0');}export function normalizeWowObjectId(a,b=![]){return normalizeWowAddress(a,b);}function isHex(a){return/^(0x|0X)?[a-fA-F0-9]+$/['test'](a)&&a['length']%0x2===0x0;}function getHexByteLength(a){return/^(0x|0X)/['test'](a)?(a['length']-0x2)/0x2:a['length']/0x2;}