@haneullabs/haneul 2.5.1 → 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (454) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/README.md +36 -36
  3. package/dist/bcs/bcs.d.mts +6 -7
  4. package/dist/bcs/bcs.d.mts.map +1 -1
  5. package/dist/bcs/bcs.mjs.map +1 -1
  6. package/dist/bcs/effects.mjs.map +1 -1
  7. package/dist/bcs/index.d.mts +2 -2
  8. package/dist/bcs/index.d.mts.map +1 -1
  9. package/dist/bcs/index.mjs +2 -2
  10. package/dist/bcs/index.mjs.map +1 -1
  11. package/dist/bcs/pure.d.mts.map +1 -1
  12. package/dist/bcs/type-tag-serializer.d.mts.map +1 -1
  13. package/dist/bcs/types.d.mts +0 -1
  14. package/dist/bcs/types.d.mts.map +1 -1
  15. package/dist/client/cache.d.mts.map +1 -1
  16. package/dist/client/client.d.mts.map +1 -1
  17. package/dist/client/core-resolver.d.mts.map +1 -1
  18. package/dist/client/core-resolver.mjs +87 -68
  19. package/dist/client/core-resolver.mjs.map +1 -1
  20. package/dist/client/core.d.mts +9 -8
  21. package/dist/client/core.d.mts.map +1 -1
  22. package/dist/client/core.mjs +29 -10
  23. package/dist/client/core.mjs.map +1 -1
  24. package/dist/client/errors.d.mts.map +1 -1
  25. package/dist/client/mvr.d.mts +0 -1
  26. package/dist/client/mvr.d.mts.map +1 -1
  27. package/dist/client/types.d.mts +110 -24
  28. package/dist/client/types.d.mts.map +1 -1
  29. package/dist/client/utils.d.mts.map +1 -1
  30. package/dist/client/utils.mjs +7 -7
  31. package/dist/client/utils.mjs.map +1 -1
  32. package/dist/cryptography/index.d.mts +2 -2
  33. package/dist/cryptography/index.mjs +2 -2
  34. package/dist/cryptography/intent.d.mts +2 -2
  35. package/dist/cryptography/intent.d.mts.map +1 -1
  36. package/dist/cryptography/intent.mjs +2 -2
  37. package/dist/cryptography/intent.mjs.map +1 -1
  38. package/dist/cryptography/keypair.d.mts +3 -3
  39. package/dist/cryptography/keypair.d.mts.map +1 -1
  40. package/dist/cryptography/keypair.mjs +3 -3
  41. package/dist/cryptography/keypair.mjs.map +1 -1
  42. package/dist/cryptography/mnemonics.d.mts +5 -5
  43. package/dist/cryptography/mnemonics.d.mts.map +1 -1
  44. package/dist/cryptography/mnemonics.mjs +7 -7
  45. package/dist/cryptography/mnemonics.mjs.map +1 -1
  46. package/dist/cryptography/publickey.d.mts +2 -3
  47. package/dist/cryptography/publickey.d.mts.map +1 -1
  48. package/dist/cryptography/publickey.mjs +10 -10
  49. package/dist/cryptography/publickey.mjs.map +1 -1
  50. package/dist/cryptography/signature-scheme.d.mts.map +1 -1
  51. package/dist/cryptography/signature.d.mts +10 -13
  52. package/dist/cryptography/signature.d.mts.map +1 -1
  53. package/dist/cryptography/signature.mjs +2 -2
  54. package/dist/cryptography/signature.mjs.map +1 -1
  55. package/dist/faucet/faucet.d.mts +2 -2
  56. package/dist/faucet/faucet.d.mts.map +1 -1
  57. package/dist/faucet/faucet.mjs +2 -2
  58. package/dist/faucet/faucet.mjs.map +1 -1
  59. package/dist/faucet/index.d.mts +2 -2
  60. package/dist/faucet/index.mjs +2 -2
  61. package/dist/graphql/client.d.mts +20 -5
  62. package/dist/graphql/client.d.mts.map +1 -1
  63. package/dist/graphql/client.mjs +55 -7
  64. package/dist/graphql/client.mjs.map +1 -1
  65. package/dist/graphql/core.d.mts +6 -5
  66. package/dist/graphql/core.d.mts.map +1 -1
  67. package/dist/graphql/core.mjs +43 -47
  68. package/dist/graphql/core.mjs.map +1 -1
  69. package/dist/graphql/generated/queries.d.mts +0 -1
  70. package/dist/graphql/generated/queries.d.mts.map +1 -1
  71. package/dist/graphql/generated/queries.mjs +46 -10
  72. package/dist/graphql/generated/queries.mjs.map +1 -1
  73. package/dist/graphql/generated/tada-env.d.mts +706 -98
  74. package/dist/graphql/generated/tada-env.d.mts.map +1 -1
  75. package/dist/graphql/index.d.mts +2 -2
  76. package/dist/graphql/index.mjs +2 -2
  77. package/dist/graphql/schema/index.d.mts +0 -1
  78. package/dist/graphql/schema/index.d.mts.map +1 -1
  79. package/dist/graphql/types.d.mts.map +1 -1
  80. package/dist/grpc/client.d.mts +20 -5
  81. package/dist/grpc/client.d.mts.map +1 -1
  82. package/dist/grpc/client.mjs +47 -7
  83. package/dist/grpc/client.mjs.map +1 -1
  84. package/dist/grpc/core.d.mts +6 -5
  85. package/dist/grpc/core.d.mts.map +1 -1
  86. package/dist/grpc/core.mjs +35 -34
  87. package/dist/grpc/core.mjs.map +1 -1
  88. package/dist/grpc/index.d.mts +2 -2
  89. package/dist/grpc/index.mjs +2 -2
  90. package/dist/grpc/proto/google/protobuf/any.d.mts +0 -1
  91. package/dist/grpc/proto/google/protobuf/any.d.mts.map +1 -1
  92. package/dist/grpc/proto/google/protobuf/duration.d.mts +0 -1
  93. package/dist/grpc/proto/google/protobuf/duration.d.mts.map +1 -1
  94. package/dist/grpc/proto/google/protobuf/field_mask.d.mts +0 -1
  95. package/dist/grpc/proto/google/protobuf/field_mask.d.mts.map +1 -1
  96. package/dist/grpc/proto/google/protobuf/struct.d.mts +1 -2
  97. package/dist/grpc/proto/google/protobuf/struct.d.mts.map +1 -1
  98. package/dist/grpc/proto/google/protobuf/timestamp.d.mts +0 -1
  99. package/dist/grpc/proto/google/protobuf/timestamp.d.mts.map +1 -1
  100. package/dist/grpc/proto/google/rpc/status.d.mts +0 -1
  101. package/dist/grpc/proto/google/rpc/status.d.mts.map +1 -1
  102. package/dist/grpc/proto/haneul/rpc/v2/argument.d.mts +1 -2
  103. package/dist/grpc/proto/haneul/rpc/v2/argument.d.mts.map +1 -1
  104. package/dist/grpc/proto/haneul/rpc/v2/balance_change.d.mts +0 -1
  105. package/dist/grpc/proto/haneul/rpc/v2/balance_change.d.mts.map +1 -1
  106. package/dist/grpc/proto/haneul/rpc/v2/bcs.d.mts +1 -2
  107. package/dist/grpc/proto/haneul/rpc/v2/bcs.d.mts.map +1 -1
  108. package/dist/grpc/proto/haneul/rpc/v2/bcs.mjs.map +1 -1
  109. package/dist/grpc/proto/haneul/rpc/v2/checkpoint.d.mts +0 -1
  110. package/dist/grpc/proto/haneul/rpc/v2/checkpoint.d.mts.map +1 -1
  111. package/dist/grpc/proto/haneul/rpc/v2/checkpoint_contents.d.mts +0 -1
  112. package/dist/grpc/proto/haneul/rpc/v2/checkpoint_contents.d.mts.map +1 -1
  113. package/dist/grpc/proto/haneul/rpc/v2/checkpoint_summary.d.mts +1 -2
  114. package/dist/grpc/proto/haneul/rpc/v2/checkpoint_summary.d.mts.map +1 -1
  115. package/dist/grpc/proto/haneul/rpc/v2/effects.d.mts +5 -6
  116. package/dist/grpc/proto/haneul/rpc/v2/effects.d.mts.map +1 -1
  117. package/dist/grpc/proto/haneul/rpc/v2/epoch.d.mts +0 -1
  118. package/dist/grpc/proto/haneul/rpc/v2/epoch.d.mts.map +1 -1
  119. package/dist/grpc/proto/haneul/rpc/v2/error_reason.d.mts +1 -1
  120. package/dist/grpc/proto/haneul/rpc/v2/error_reason.d.mts.map +1 -1
  121. package/dist/grpc/proto/haneul/rpc/v2/event.d.mts +0 -1
  122. package/dist/grpc/proto/haneul/rpc/v2/event.d.mts.map +1 -1
  123. package/dist/grpc/proto/haneul/rpc/v2/executed_transaction.d.mts +0 -1
  124. package/dist/grpc/proto/haneul/rpc/v2/executed_transaction.d.mts.map +1 -1
  125. package/dist/grpc/proto/haneul/rpc/v2/execution_status.d.mts +8 -9
  126. package/dist/grpc/proto/haneul/rpc/v2/execution_status.d.mts.map +1 -1
  127. package/dist/grpc/proto/haneul/rpc/v2/execution_status.mjs +4 -4
  128. package/dist/grpc/proto/haneul/rpc/v2/execution_status.mjs.map +1 -1
  129. package/dist/grpc/proto/haneul/rpc/v2/gas_cost_summary.d.mts +0 -1
  130. package/dist/grpc/proto/haneul/rpc/v2/gas_cost_summary.d.mts.map +1 -1
  131. package/dist/grpc/proto/haneul/rpc/v2/input.d.mts +3 -4
  132. package/dist/grpc/proto/haneul/rpc/v2/input.d.mts.map +1 -1
  133. package/dist/grpc/proto/haneul/rpc/v2/jwk.d.mts +0 -1
  134. package/dist/grpc/proto/haneul/rpc/v2/jwk.d.mts.map +1 -1
  135. package/dist/grpc/proto/haneul/rpc/v2/ledger_service.client.d.mts +4 -5
  136. package/dist/grpc/proto/haneul/rpc/v2/ledger_service.client.d.mts.map +1 -1
  137. package/dist/grpc/proto/haneul/rpc/v2/ledger_service.d.mts +0 -1
  138. package/dist/grpc/proto/haneul/rpc/v2/ledger_service.d.mts.map +1 -1
  139. package/dist/grpc/proto/haneul/rpc/v2/move_package.d.mts +5 -6
  140. package/dist/grpc/proto/haneul/rpc/v2/move_package.d.mts.map +1 -1
  141. package/dist/grpc/proto/haneul/rpc/v2/move_package_service.client.d.mts +4 -5
  142. package/dist/grpc/proto/haneul/rpc/v2/move_package_service.client.d.mts.map +1 -1
  143. package/dist/grpc/proto/haneul/rpc/v2/move_package_service.d.mts +0 -1
  144. package/dist/grpc/proto/haneul/rpc/v2/move_package_service.d.mts.map +1 -1
  145. package/dist/grpc/proto/haneul/rpc/v2/name_service.client.d.mts +4 -5
  146. package/dist/grpc/proto/haneul/rpc/v2/name_service.client.d.mts.map +1 -1
  147. package/dist/grpc/proto/haneul/rpc/v2/name_service.d.mts +0 -1
  148. package/dist/grpc/proto/haneul/rpc/v2/name_service.d.mts.map +1 -1
  149. package/dist/grpc/proto/haneul/rpc/v2/object.d.mts +38 -2
  150. package/dist/grpc/proto/haneul/rpc/v2/object.d.mts.map +1 -1
  151. package/dist/grpc/proto/haneul/rpc/v2/object.mjs +26 -1
  152. package/dist/grpc/proto/haneul/rpc/v2/object.mjs.map +1 -1
  153. package/dist/grpc/proto/haneul/rpc/v2/object_reference.d.mts +0 -1
  154. package/dist/grpc/proto/haneul/rpc/v2/object_reference.d.mts.map +1 -1
  155. package/dist/grpc/proto/haneul/rpc/v2/owner.d.mts +1 -2
  156. package/dist/grpc/proto/haneul/rpc/v2/owner.d.mts.map +1 -1
  157. package/dist/grpc/proto/haneul/rpc/v2/protocol_config.d.mts +0 -1
  158. package/dist/grpc/proto/haneul/rpc/v2/protocol_config.d.mts.map +1 -1
  159. package/dist/grpc/proto/haneul/rpc/v2/signature.d.mts +1 -2
  160. package/dist/grpc/proto/haneul/rpc/v2/signature.d.mts.map +1 -1
  161. package/dist/grpc/proto/haneul/rpc/v2/signature.mjs.map +1 -1
  162. package/dist/grpc/proto/haneul/rpc/v2/signature_scheme.d.mts +2 -2
  163. package/dist/grpc/proto/haneul/rpc/v2/signature_scheme.d.mts.map +1 -1
  164. package/dist/grpc/proto/haneul/rpc/v2/signature_scheme.mjs +1 -1
  165. package/dist/grpc/proto/haneul/rpc/v2/signature_scheme.mjs.map +1 -1
  166. package/dist/grpc/proto/haneul/rpc/v2/signature_verification_service.client.d.mts +4 -5
  167. package/dist/grpc/proto/haneul/rpc/v2/signature_verification_service.client.d.mts.map +1 -1
  168. package/dist/grpc/proto/haneul/rpc/v2/signature_verification_service.d.mts +0 -1
  169. package/dist/grpc/proto/haneul/rpc/v2/signature_verification_service.d.mts.map +1 -1
  170. package/dist/grpc/proto/haneul/rpc/v2/state_service.client.d.mts +4 -5
  171. package/dist/grpc/proto/haneul/rpc/v2/state_service.client.d.mts.map +1 -1
  172. package/dist/grpc/proto/haneul/rpc/v2/state_service.d.mts +4 -5
  173. package/dist/grpc/proto/haneul/rpc/v2/state_service.d.mts.map +1 -1
  174. package/dist/grpc/proto/haneul/rpc/v2/subscription_service.client.d.mts +4 -5
  175. package/dist/grpc/proto/haneul/rpc/v2/subscription_service.client.d.mts.map +1 -1
  176. package/dist/grpc/proto/haneul/rpc/v2/subscription_service.d.mts +0 -1
  177. package/dist/grpc/proto/haneul/rpc/v2/subscription_service.d.mts.map +1 -1
  178. package/dist/grpc/proto/haneul/rpc/v2/system_state.d.mts +3 -4
  179. package/dist/grpc/proto/haneul/rpc/v2/system_state.d.mts.map +1 -1
  180. package/dist/grpc/proto/haneul/rpc/v2/system_state.mjs +1 -1
  181. package/dist/grpc/proto/haneul/rpc/v2/system_state.mjs.map +1 -1
  182. package/dist/grpc/proto/haneul/rpc/v2/transaction.d.mts +4 -5
  183. package/dist/grpc/proto/haneul/rpc/v2/transaction.d.mts.map +1 -1
  184. package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.client.d.mts +0 -1
  185. package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.client.d.mts.map +1 -1
  186. package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.d.mts +9 -2
  187. package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.d.mts.map +1 -1
  188. package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.mjs +23 -12
  189. package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.mjs.map +1 -1
  190. package/dist/grpc/proto/types.d.mts +2 -2
  191. package/dist/grpc/proto/types.d.mts.map +1 -1
  192. package/dist/grpc/proto/types.mjs +2 -1
  193. package/dist/jsonRpc/client.d.mts +4 -7
  194. package/dist/jsonRpc/client.d.mts.map +1 -1
  195. package/dist/jsonRpc/client.mjs +4 -33
  196. package/dist/jsonRpc/client.mjs.map +1 -1
  197. package/dist/jsonRpc/core.d.mts +8 -15
  198. package/dist/jsonRpc/core.d.mts.map +1 -1
  199. package/dist/jsonRpc/core.mjs +81 -34
  200. package/dist/jsonRpc/core.mjs.map +1 -1
  201. package/dist/jsonRpc/errors.d.mts.map +1 -1
  202. package/dist/jsonRpc/http-transport.d.mts +1 -17
  203. package/dist/jsonRpc/http-transport.d.mts.map +1 -1
  204. package/dist/jsonRpc/http-transport.mjs +0 -23
  205. package/dist/jsonRpc/http-transport.mjs.map +1 -1
  206. package/dist/jsonRpc/index.d.mts +3 -3
  207. package/dist/jsonRpc/network.d.mts.map +1 -1
  208. package/dist/jsonRpc/types/chain.d.mts.map +1 -1
  209. package/dist/jsonRpc/types/changes.d.mts.map +1 -1
  210. package/dist/jsonRpc/types/coins.d.mts.map +1 -1
  211. package/dist/jsonRpc/types/common.d.mts +1 -2
  212. package/dist/jsonRpc/types/common.d.mts.map +1 -1
  213. package/dist/jsonRpc/types/generated.d.mts +101 -129
  214. package/dist/jsonRpc/types/generated.d.mts.map +1 -1
  215. package/dist/jsonRpc/types/index.d.mts +1 -1
  216. package/dist/jsonRpc/types/params.d.mts +9 -14
  217. package/dist/jsonRpc/types/params.d.mts.map +1 -1
  218. package/dist/keypairs/ed25519/keypair.d.mts +8 -6
  219. package/dist/keypairs/ed25519/keypair.d.mts.map +1 -1
  220. package/dist/keypairs/ed25519/keypair.mjs +13 -9
  221. package/dist/keypairs/ed25519/keypair.mjs.map +1 -1
  222. package/dist/keypairs/ed25519/publickey.d.mts +0 -1
  223. package/dist/keypairs/ed25519/publickey.d.mts.map +1 -1
  224. package/dist/keypairs/passkey/keypair.d.mts +12 -5
  225. package/dist/keypairs/passkey/keypair.d.mts.map +1 -1
  226. package/dist/keypairs/passkey/keypair.mjs +20 -7
  227. package/dist/keypairs/passkey/keypair.mjs.map +1 -1
  228. package/dist/keypairs/passkey/publickey.d.mts +0 -1
  229. package/dist/keypairs/passkey/publickey.d.mts.map +1 -1
  230. package/dist/keypairs/passkey/types.d.mts.map +1 -1
  231. package/dist/keypairs/secp256k1/keypair.d.mts +3 -3
  232. package/dist/keypairs/secp256k1/keypair.d.mts.map +1 -1
  233. package/dist/keypairs/secp256k1/keypair.mjs +6 -6
  234. package/dist/keypairs/secp256k1/keypair.mjs.map +1 -1
  235. package/dist/keypairs/secp256k1/publickey.d.mts +0 -1
  236. package/dist/keypairs/secp256k1/publickey.d.mts.map +1 -1
  237. package/dist/keypairs/secp256r1/keypair.d.mts +3 -3
  238. package/dist/keypairs/secp256r1/keypair.d.mts.map +1 -1
  239. package/dist/keypairs/secp256r1/keypair.mjs +6 -6
  240. package/dist/keypairs/secp256r1/keypair.mjs.map +1 -1
  241. package/dist/keypairs/secp256r1/publickey.d.mts +0 -1
  242. package/dist/keypairs/secp256r1/publickey.d.mts.map +1 -1
  243. package/dist/multisig/publickey.d.mts +1 -0
  244. package/dist/multisig/publickey.d.mts.map +1 -1
  245. package/dist/multisig/publickey.mjs +8 -8
  246. package/dist/multisig/publickey.mjs.map +1 -1
  247. package/dist/multisig/signer.d.mts.map +1 -1
  248. package/dist/transactions/Arguments.d.mts.map +1 -1
  249. package/dist/transactions/Commands.d.mts +1 -1
  250. package/dist/transactions/Commands.d.mts.map +1 -1
  251. package/dist/transactions/Commands.mjs.map +1 -1
  252. package/dist/transactions/Inputs.d.mts.map +1 -1
  253. package/dist/transactions/ObjectCache.d.mts +3 -3
  254. package/dist/transactions/ObjectCache.d.mts.map +1 -1
  255. package/dist/transactions/Transaction.d.mts +32 -6
  256. package/dist/transactions/Transaction.d.mts.map +1 -1
  257. package/dist/transactions/Transaction.mjs +23 -1
  258. package/dist/transactions/Transaction.mjs.map +1 -1
  259. package/dist/transactions/TransactionData.d.mts.map +1 -1
  260. package/dist/transactions/TransactionData.mjs +8 -8
  261. package/dist/transactions/TransactionData.mjs.map +1 -1
  262. package/dist/transactions/data/internal.d.mts +109 -109
  263. package/dist/transactions/data/internal.d.mts.map +1 -1
  264. package/dist/transactions/data/internal.mjs.map +1 -1
  265. package/dist/transactions/data/v1.d.mts +220 -221
  266. package/dist/transactions/data/v1.d.mts.map +1 -1
  267. package/dist/transactions/data/v2.d.mts +16 -16
  268. package/dist/transactions/data/v2.d.mts.map +1 -1
  269. package/dist/transactions/data/v2.mjs.map +1 -1
  270. package/dist/transactions/executor/caching.mjs +2 -2
  271. package/dist/transactions/executor/caching.mjs.map +1 -1
  272. package/dist/transactions/executor/parallel.d.mts +1 -1
  273. package/dist/transactions/executor/parallel.d.mts.map +1 -1
  274. package/dist/transactions/executor/parallel.mjs +1 -1
  275. package/dist/transactions/executor/parallel.mjs.map +1 -1
  276. package/dist/transactions/executor/serial.d.mts +3 -3
  277. package/dist/transactions/executor/serial.d.mts.map +1 -1
  278. package/dist/transactions/executor/serial.mjs.map +1 -1
  279. package/dist/transactions/intents/CoinWithBalance.d.mts.map +1 -1
  280. package/dist/transactions/intents/CoinWithBalance.mjs +174 -97
  281. package/dist/transactions/intents/CoinWithBalance.mjs.map +1 -1
  282. package/dist/transactions/object.d.mts.map +1 -1
  283. package/dist/transactions/pure.d.mts.map +1 -1
  284. package/dist/transactions/pure.mjs +12 -12
  285. package/dist/transactions/pure.mjs.map +1 -1
  286. package/dist/transactions/resolve.d.mts.map +1 -1
  287. package/dist/transactions/resolve.mjs +3 -3
  288. package/dist/transactions/resolve.mjs.map +1 -1
  289. package/dist/transactions/serializer.d.mts.map +1 -1
  290. package/dist/transactions/serializer.mjs +15 -15
  291. package/dist/transactions/serializer.mjs.map +1 -1
  292. package/dist/transactions/utils.d.mts +0 -1
  293. package/dist/transactions/utils.d.mts.map +1 -1
  294. package/dist/utils/coin-reservation.mjs +67 -0
  295. package/dist/utils/coin-reservation.mjs.map +1 -0
  296. package/dist/utils/constants.d.mts +2 -1
  297. package/dist/utils/constants.d.mts.map +1 -1
  298. package/dist/utils/constants.mjs +2 -1
  299. package/dist/utils/constants.mjs.map +1 -1
  300. package/dist/utils/derived-objects.d.mts +0 -1
  301. package/dist/utils/derived-objects.d.mts.map +1 -1
  302. package/dist/utils/dynamic-fields.d.mts.map +1 -1
  303. package/dist/utils/dynamic-fields.mjs +4 -4
  304. package/dist/utils/dynamic-fields.mjs.map +1 -1
  305. package/dist/utils/format.d.mts.map +1 -1
  306. package/dist/utils/haneul-types.d.mts.map +1 -1
  307. package/dist/utils/haneul-types.mjs +8 -0
  308. package/dist/utils/haneul-types.mjs.map +1 -1
  309. package/dist/utils/haneulns.d.mts.map +1 -1
  310. package/dist/utils/index.d.mts +2 -2
  311. package/dist/utils/index.mjs +2 -2
  312. package/dist/utils/move-registry.d.mts.map +1 -1
  313. package/dist/verify/index.d.mts +2 -2
  314. package/dist/verify/index.mjs +2 -2
  315. package/dist/verify/verify.d.mts +2 -2
  316. package/dist/verify/verify.d.mts.map +1 -1
  317. package/dist/verify/verify.mjs +2 -2
  318. package/dist/verify/verify.mjs.map +1 -1
  319. package/dist/version.mjs +1 -1
  320. package/dist/version.mjs.map +1 -1
  321. package/dist/zklogin/address.d.mts.map +1 -1
  322. package/dist/zklogin/bcs.d.mts +14 -14
  323. package/dist/zklogin/bcs.d.mts.map +1 -1
  324. package/dist/zklogin/jwt-decode.d.mts +0 -1
  325. package/dist/zklogin/jwt-decode.d.mts.map +1 -1
  326. package/dist/zklogin/jwt-utils.d.mts +0 -1
  327. package/dist/zklogin/jwt-utils.d.mts.map +1 -1
  328. package/dist/zklogin/nonce.d.mts.map +1 -1
  329. package/dist/zklogin/nonce.mjs +1 -1
  330. package/dist/zklogin/nonce.mjs.map +1 -1
  331. package/dist/zklogin/poseidon.d.mts.map +1 -1
  332. package/dist/zklogin/publickey.d.mts +0 -1
  333. package/dist/zklogin/publickey.d.mts.map +1 -1
  334. package/dist/zklogin/signature.d.mts.map +1 -1
  335. package/dist/zklogin/utils.d.mts.map +1 -1
  336. package/dist/zklogin/utils.mjs +1 -1
  337. package/dist/zklogin/utils.mjs.map +1 -1
  338. package/docs/bcs.md +132 -0
  339. package/docs/clients/core.md +616 -0
  340. package/docs/clients/graphql.md +99 -0
  341. package/docs/clients/grpc.md +152 -0
  342. package/docs/clients/index.md +93 -0
  343. package/docs/clients/json-rpc.md +235 -0
  344. package/docs/cryptography/keypairs.md +259 -0
  345. package/docs/cryptography/multisig.md +192 -0
  346. package/docs/cryptography/passkey.md +111 -0
  347. package/docs/cryptography/webcrypto-signer.md +81 -0
  348. package/docs/executors.md +148 -0
  349. package/docs/faucet.md +26 -0
  350. package/docs/hello-haneul.md +115 -0
  351. package/docs/index.md +56 -0
  352. package/docs/install.md +61 -0
  353. package/docs/llm-docs.md +32 -0
  354. package/docs/llms-index.md +66 -0
  355. package/docs/migrations/0.38.md +57 -0
  356. package/docs/migrations/haneul-1.0.md +454 -0
  357. package/docs/migrations/haneul-2.0/agent-prompt.md +42 -0
  358. package/docs/migrations/haneul-2.0/dapp-kit.md +350 -0
  359. package/docs/migrations/haneul-2.0/deepbook-v3.md +33 -0
  360. package/docs/migrations/haneul-2.0/haneul.md +341 -0
  361. package/docs/migrations/haneul-2.0/haneulns.md +42 -0
  362. package/docs/migrations/haneul-2.0/index.md +161 -0
  363. package/docs/migrations/haneul-2.0/json-rpc-migration.md +399 -0
  364. package/docs/migrations/haneul-2.0/kiosk.md +120 -0
  365. package/docs/migrations/haneul-2.0/sdk-maintainers.md +91 -0
  366. package/docs/migrations/haneul-2.0/seal.md +14 -0
  367. package/docs/migrations/haneul-2.0/wallet-builders.md +66 -0
  368. package/docs/migrations/haneul-2.0/walrus.md +41 -0
  369. package/docs/migrations/haneul-2.0/zksend.md +94 -0
  370. package/docs/plugins.md +255 -0
  371. package/docs/sdk-building.md +341 -0
  372. package/docs/transaction-building/basics.md +297 -0
  373. package/docs/transaction-building/gas.md +62 -0
  374. package/docs/transaction-building/intents.md +61 -0
  375. package/docs/transaction-building/offline.md +71 -0
  376. package/docs/transaction-building/sponsored-transactions.md +22 -0
  377. package/docs/utils/derived_objects.md +80 -0
  378. package/docs/utils/index.md +53 -0
  379. package/docs/zklogin.md +78 -0
  380. package/package.json +199 -199
  381. package/src/bcs/bcs.ts +13 -13
  382. package/src/bcs/effects.ts +20 -20
  383. package/src/bcs/index.ts +2 -2
  384. package/src/client/core-resolver.ts +150 -100
  385. package/src/client/core.ts +62 -22
  386. package/src/client/types.ts +109 -24
  387. package/src/cryptography/index.ts +2 -2
  388. package/src/cryptography/keypair.ts +2 -2
  389. package/src/cryptography/mnemonics.ts +7 -7
  390. package/src/cryptography/publickey.ts +8 -8
  391. package/src/faucet/faucet.ts +1 -1
  392. package/src/faucet/index.ts +1 -1
  393. package/src/graphql/client.ts +100 -8
  394. package/src/graphql/core.ts +73 -80
  395. package/src/graphql/generated/queries.ts +301 -51
  396. package/src/graphql/generated/schema.graphql +407 -104
  397. package/src/graphql/generated/tada-env.ts +779 -58
  398. package/src/graphql/index.ts +1 -1
  399. package/src/graphql/queries/getAllBalances.graphql +1 -1
  400. package/src/graphql/queries/getBalance.graphql +1 -1
  401. package/src/graphql/queries/getCoins.graphql +2 -2
  402. package/src/graphql/queries/getDynamicFields.graphql +9 -1
  403. package/src/graphql/queries/getMoveFunction.graphql +1 -1
  404. package/src/graphql/queries/getProtocolConfig.graphql +18 -0
  405. package/src/graphql/queries/nameService.graphql +1 -1
  406. package/src/graphql/queries/objects.graphql +11 -1
  407. package/src/graphql/queries/transactions.graphql +1 -3
  408. package/src/graphql/queries/verifyZkLoginSignature.graphql +1 -2
  409. package/src/grpc/client.ts +66 -8
  410. package/src/grpc/core.ts +74 -35
  411. package/src/grpc/index.ts +1 -1
  412. package/src/grpc/proto/haneul/rpc/v2/bcs.ts +1 -1
  413. package/src/grpc/proto/haneul/rpc/v2/execution_status.ts +4 -4
  414. package/src/grpc/proto/haneul/rpc/v2/object.ts +44 -0
  415. package/src/grpc/proto/haneul/rpc/v2/signature.ts +1 -1
  416. package/src/grpc/proto/haneul/rpc/v2/signature_scheme.ts +1 -1
  417. package/src/grpc/proto/haneul/rpc/v2/system_state.ts +4 -4
  418. package/src/grpc/proto/haneul/rpc/v2/transaction_execution_service.ts +16 -0
  419. package/src/jsonRpc/client.ts +5 -23
  420. package/src/jsonRpc/core.ts +114 -41
  421. package/src/jsonRpc/http-transport.ts +0 -52
  422. package/src/jsonRpc/index.ts +0 -1
  423. package/src/jsonRpc/types/common.ts +0 -1
  424. package/src/jsonRpc/types/generated.ts +2 -2
  425. package/src/jsonRpc/types/params.ts +6 -6
  426. package/src/keypairs/ed25519/keypair.ts +14 -10
  427. package/src/keypairs/passkey/keypair.ts +22 -8
  428. package/src/keypairs/secp256k1/keypair.ts +6 -6
  429. package/src/keypairs/secp256r1/keypair.ts +6 -6
  430. package/src/multisig/publickey.ts +1 -1
  431. package/src/transactions/Commands.ts +1 -1
  432. package/src/transactions/Transaction.ts +38 -1
  433. package/src/transactions/TransactionData.ts +3 -3
  434. package/src/transactions/__tests__/bcs.test.ts +3 -3
  435. package/src/transactions/data/internal.ts +12 -12
  436. package/src/transactions/data/v2.ts +6 -6
  437. package/src/transactions/executor/caching.ts +2 -2
  438. package/src/transactions/executor/parallel.ts +1 -2
  439. package/src/transactions/executor/serial.ts +1 -1
  440. package/src/transactions/intents/CoinWithBalance.ts +247 -121
  441. package/src/utils/coin-reservation.ts +84 -0
  442. package/src/utils/constants.ts +2 -0
  443. package/src/utils/haneul-types.ts +16 -1
  444. package/src/utils/index.ts +1 -0
  445. package/src/verify/index.ts +1 -1
  446. package/src/verify/verify.ts +1 -1
  447. package/src/version.ts +1 -1
  448. package/src/zklogin/nonce.ts +1 -1
  449. package/src/zklogin/utils.ts +1 -1
  450. package/dist/jsonRpc/rpc-websocket-client.d.mts +0 -26
  451. package/dist/jsonRpc/rpc-websocket-client.d.mts.map +0 -1
  452. package/dist/jsonRpc/rpc-websocket-client.mjs +0 -135
  453. package/dist/jsonRpc/rpc-websocket-client.mjs.map +0 -1
  454. package/src/jsonRpc/rpc-websocket-client.ts +0 -241
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../src/bcs/index.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/bcs';\n\nimport {\n\tAddress,\n\tAppId,\n\tArgument,\n\tCallArg,\n\tCommand,\n\tCompressedSignature,\n\tData,\n\tGasData,\n\tIntent,\n\tIntentMessage,\n\tIntentScope,\n\tIntentVersion,\n\tMoveObject,\n\tMoveObjectType,\n\tMovePackage,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObjectArg,\n\tObjectDigest,\n\tObjectInner,\n\tOwner,\n\tPasskeyAuthenticator,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tHaneulObjectRef,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeOrigin,\n\tTypeTag,\n\tUpgradeInfo,\n} from './bcs.js';\nimport { TransactionEffects } from './effects.js';\n\nexport type { TypeTag } from './types.js';\n\nexport { TypeTagSerializer } from './type-tag-serializer.js';\nexport {\n\tBcsType,\n\tBcsStruct,\n\tBcsEnum,\n\tBcsTuple,\n\ttype BcsTypeOptions,\n\tcompareBcsBytes,\n} from '@haneullabs/bcs';\n\nconst suiBcs = {\n\t...bcs,\n\tU8: bcs.u8(),\n\tU16: bcs.u16(),\n\tU32: bcs.u32(),\n\tU64: bcs.u64(),\n\tU128: bcs.u128(),\n\tU256: bcs.u256(),\n\tULEB128: bcs.uleb128(),\n\tBool: bcs.bool(),\n\tString: bcs.string(),\n\tAddress,\n\tAppId,\n\tArgument,\n\tCallArg,\n\tCommand,\n\tCompressedSignature,\n\tData,\n\tGasData,\n\tIntent,\n\tIntentMessage,\n\tIntentScope,\n\tIntentVersion,\n\tMoveObject,\n\tMoveObjectType,\n\tMovePackage,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObject: ObjectInner,\n\tObjectArg,\n\tObjectDigest,\n\tOwner,\n\tPasskeyAuthenticator,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tHaneulObjectRef,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionEffects,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeOrigin,\n\tTypeTag,\n\tUpgradeInfo,\n};\nexport {\n\tpureBcsSchemaFromTypeName,\n\ttype ShapeFromPureTypeName,\n\ttype PureTypeName,\n} from './pure.js';\n\nexport { suiBcs as bcs };\n"],"mappings":";;;;;;;AA2DA,MAAM,SAAS;CACd,GAAG;CACH,IAAI,IAAI,IAAI;CACZ,KAAK,IAAI,KAAK;CACd,KAAK,IAAI,KAAK;CACd,KAAK,IAAI,KAAK;CACd,MAAM,IAAI,MAAM;CAChB,MAAM,IAAI,MAAM;CAChB,SAAS,IAAI,SAAS;CACtB,MAAM,IAAI,MAAM;CAChB,QAAQ,IAAI,QAAQ;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ;CACR;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/bcs/index.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/bcs';\n\nimport {\n\tAddress,\n\tAppId,\n\tArgument,\n\tCallArg,\n\tCommand,\n\tCompressedSignature,\n\tData,\n\tGasData,\n\tIntent,\n\tIntentMessage,\n\tIntentScope,\n\tIntentVersion,\n\tMoveObject,\n\tMoveObjectType,\n\tMovePackage,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObjectArg,\n\tObjectDigest,\n\tObjectInner,\n\tOwner,\n\tPasskeyAuthenticator,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tHaneulObjectRef,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeOrigin,\n\tTypeTag,\n\tUpgradeInfo,\n} from './bcs.js';\nimport { TransactionEffects } from './effects.js';\n\nexport type { TypeTag } from './types.js';\n\nexport { TypeTagSerializer } from './type-tag-serializer.js';\nexport {\n\tBcsType,\n\tBcsStruct,\n\tBcsEnum,\n\tBcsTuple,\n\ttype BcsTypeOptions,\n\tcompareBcsBytes,\n} from '@haneullabs/bcs';\n\nconst haneulBcs = {\n\t...bcs,\n\tU8: bcs.u8(),\n\tU16: bcs.u16(),\n\tU32: bcs.u32(),\n\tU64: bcs.u64(),\n\tU128: bcs.u128(),\n\tU256: bcs.u256(),\n\tULEB128: bcs.uleb128(),\n\tBool: bcs.bool(),\n\tString: bcs.string(),\n\tAddress,\n\tAppId,\n\tArgument,\n\tCallArg,\n\tCommand,\n\tCompressedSignature,\n\tData,\n\tGasData,\n\tIntent,\n\tIntentMessage,\n\tIntentScope,\n\tIntentVersion,\n\tMoveObject,\n\tMoveObjectType,\n\tMovePackage,\n\tMultiSig,\n\tMultiSigPkMap,\n\tMultiSigPublicKey,\n\tObject: ObjectInner,\n\tObjectArg,\n\tObjectDigest,\n\tOwner,\n\tPasskeyAuthenticator,\n\tProgrammableMoveCall,\n\tProgrammableTransaction,\n\tPublicKey,\n\tSenderSignedData,\n\tSenderSignedTransaction,\n\tSharedObjectRef,\n\tStructTag,\n\tHaneulObjectRef,\n\tTransactionData,\n\tTransactionDataV1,\n\tTransactionEffects,\n\tTransactionExpiration,\n\tTransactionKind,\n\tTypeOrigin,\n\tTypeTag,\n\tUpgradeInfo,\n};\nexport {\n\tpureBcsSchemaFromTypeName,\n\ttype ShapeFromPureTypeName,\n\ttype PureTypeName,\n} from './pure.js';\n\nexport { haneulBcs as bcs };\n"],"mappings":";;;;;;;AA2DA,MAAM,YAAY;CACjB,GAAG;CACH,IAAI,IAAI,IAAI;CACZ,KAAK,IAAI,KAAK;CACd,KAAK,IAAI,KAAK;CACd,KAAK,IAAI,KAAK;CACd,MAAM,IAAI,MAAM;CAChB,MAAM,IAAI,MAAM;CAChB,SAAS,IAAI,SAAS;CACtB,MAAM,IAAI,MAAM;CAChB,QAAQ,IAAI,QAAQ;CACpB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,QAAQ;CACR;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pure.d.mts","names":[],"sources":["../../src/bcs/pure.ts"],"sourcesContent":[],"mappings":";;;KAQY,YAAA;UAYF,eAAA;EAZE,EAAA,EAAA,MAAA;EAYF,GAAA,EAAA,MAAA;EAaE,GAAA,EAAA,MAAA;EACA,GAAA,EAAA,MAAA,GAAA,MAAiB,GAAA,MAAA;EAAqB,IAAA,EAAA,MAAA,GAAA,MAAA,GAAA,MAAA;EAAU,IAAA,EAAA,MAAA,GAAA,MAAA,GAAA,MAAA;EACzD,IAAA,EAAA,OAAA;EACA,MAAA,EAAA,MAAA;EACmB,EAAA,EAAA,MAAA,GARR,UAQQ;EAAlB,OAAA,EAAA,MAAA,GAPe,UAOf;;AAEmB,KANX,YAAA,GAAe,YAMJ,GAAA,UAAA,MAAA,GAAA,GAAA,UAAA,MAAA,GAAA;AAAlB,KALO,iBAKP,CAAA,UAAA,MAAA,CAAA,GAL6C,CAK7C,SALuD,YAKvD,GAJF,YAIE,GAHF,CAGE,SAAA,UAAA,KAAA,EAAA,GAAA,GAFD,iBAEC,CAFiB,CAEjB,CAAA,GADD,CACC,SAAA,UAAA,KAAA,EAAA,GAAA,GAAA,iBAAA,CAAkB,CAAlB,CAAA,GACA,uBADA,CACwB,CADxB,CAAA;AACwB,KAEjB,qBAFiB,CAAA,UAEe,YAFf,CAAA,GAE+B,CAF/B,SAEyC,YAFzC,GAG1B,eAH0B,CAGV,CAHU,CAAA,GAI1B,CAJ0B,SAAA,UAAA,KAAA,WAIU,YAJV,GAAA,GAKzB,qBALyB,CAKH,CALG,CAAA,EAAA,GAMzB,CANyB,SAAA,UAAA,KAAA,WAMW,YANX,GAAA,GAOxB,qBAPwB,CAOF,CAPE,CAAA,GAAA,IAAA,GAAA,KAAA;KAUxB,uBAVA,CAAA,UAAA,MAAA,CAAA,GAAA;EAAuB,KAAA,EAAA,2BAWO,CAXP,EAAA;AAE5B,CAAA,GAAY,CAAA,CAAA;AAAgC,iBAY5B,yBAZ4B,CAAA,UAYQ,YAZR,CAAA,CAAA,IAAA,EAarC,CAbqC,SAa3B,YAb2B,GAaZ,iBAbY,CAaM,CAbN,CAAA,GAaW,CAbX,CAAA,EAczC,OAdyC,CAcjC,qBAdiC,CAcX,CAdW,CAAA,CAAA"}
1
+ {"version":3,"file":"pure.d.mts","names":[],"sources":["../../src/bcs/pure.ts"],"mappings":";;;KAQY,YAAA;AAAA,UAYF,eAAA;EACT,EAAA;EACA,GAAA;EACA,GAAA;EACA,GAAA;EACA,IAAA;EACA,IAAA;EACA,IAAA;EACA,MAAA;EACA,EAAA,WAAa,UAAA;EACb,OAAA,WAAkB,UAAA;AAAA;AAAA,KAGP,YAAA,GAAe,YAAA;AAAA,KACf,iBAAA,qBAAsC,CAAA,SAAU,YAAA,GACzD,YAAA,GACA,CAAA,gCACC,iBAAA,CAAkB,CAAA,IAClB,CAAA,gCACC,iBAAA,CAAkB,CAAA,IAClB,uBAAA,CAAwB,CAAA;AAAA,KAEjB,qBAAA,WAAgC,YAAA,IAAgB,CAAA,SAAU,YAAA,GACnE,eAAA,CAAgB,CAAA,IAChB,CAAA,mCAAoC,YAAA,MACnC,qBAAA,CAAsB,CAAA,MACtB,CAAA,mCAAoC,YAAA,MACnC,qBAAA,CAAsB,CAAA;AAAA,KAGtB,uBAAA;EACJ,KAAA,6BAAkC,CAAA;AAAA;AAAA,iBAGnB,yBAAA,WAAoC,YAAA,CAAA,CACnD,IAAA,EAAM,CAAA,SAAU,YAAA,GAAe,iBAAA,CAAkB,CAAA,IAAK,CAAA,GACpD,OAAA,CAAQ,qBAAA,CAAsB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"type-tag-serializer.d.mts","names":[],"sources":["../../src/bcs/type-tag-serializer.ts"],"sourcesContent":[],"mappings":";;;cAWa,iBAAA;gEACgD;EADhD,OAAA,mBAAiB,CAAA,GAAA,EAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,CAAA,EAgDsC,OAhDtC,EAAA;EAC+B,OAAA,WAAA,CAAA,GAAA,EAqDpC,OArDoC,CAAA,EAAA,MAAA;;AAqDpC,iBA0CT,gBAAA,CA1CS,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"type-tag-serializer.d.mts","names":[],"sources":["../../src/bcs/type-tag-serializer.ts"],"mappings":";;;cAWa,iBAAA;EAAA,OACL,YAAA,CAAa,GAAA,UAAa,gBAAA,aAA2B,OAAA;EAAA,OA+CrD,mBAAA,CAAoB,GAAA,UAAa,gBAAA,aAA2B,OAAA;EAAA,OAM5D,WAAA,CAAY,GAAA,EAAK,OAAA;AAAA;AAAA,iBA0CT,gBAAA,CAAiB,IAAA"}
@@ -1,5 +1,4 @@
1
1
  //#region src/bcs/types.d.ts
2
-
3
2
  /**
4
3
  * Kind of a TypeTag which is represented by a Move type identifier.
5
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","names":[],"sources":["../../src/bcs/types.ts"],"sourcesContent":[],"mappings":";;;;;KAoFY,SAAA;;;;cAIC;;;;;KAMD,OAAA;;;;;;;;;;;;;UAOC;;UACA"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../src/bcs/types.ts"],"mappings":";;;;KAoFY,SAAA;EACX,OAAA;EACA,MAAA;EACA,IAAA;EACA,UAAA,EAAY,OAAA;AAAA;;;;KAMD,OAAA;EACP,IAAA;AAAA;EACA,EAAA;AAAA;EACA,GAAA;AAAA;EACA,IAAA;AAAA;EACA,OAAA;AAAA;EACA,MAAA;AAAA;EACA,MAAA,EAAQ,OAAA;AAAA;EACR,MAAA,EAAQ,SAAA;AAAA;EACR,GAAA;AAAA;EACA,GAAA;AAAA;EACA,IAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.mts","names":[],"sources":["../../src/client/cache.ts"],"sourcesContent":[],"mappings":";UAGiB,kBAAA;EAAA,MAAA,CAAA,EAAA,MAAA,EAAA;EAKJ,KAAA,CAAA,EAHJ,GAGI,CAAA,MAAW,EAAA,OAAA,CAAA;;AAID,cAJV,WAAA,CAIU;EAAS,CAAA,OAAA;EAKiB,WAAA,CAAA;IAAA,MAAA;IAAA;EAAA,CAAA,CAAA,EALjB,kBAKiB;EAAY,IAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,GAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,GAAA,GAAZ,CAAY,GAAR,OAAQ,CAAA,CAAA,CAAA,CAAA,EAAK,CAAL,GAAS,OAAT,CAAiB,CAAjB,CAAA;EAAR,QAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,MAAA,EAAA,GAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,GAAA,GA0BA,CA1BA,CAAA,EA0BI,CA1BJ;EAAa,KAAA,CAAA,MAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA;EAAY,KAAA,CAAA,MAAA,EAAA,MAAA,GAAA,MAAA,EAAA,CAAA,EAsD9C,WAtD8C"}
1
+ {"version":3,"file":"cache.d.mts","names":[],"sources":["../../src/client/cache.ts"],"mappings":";UAGiB,kBAAA;EAChB,MAAA;EACA,KAAA,GAAQ,GAAA;AAAA;AAAA,cAGI,WAAA;EAAA;;IAIE,MAAA;IAAQ;EAAA,IAAS,kBAAA;EAK/B,IAAA,GAAA,CAAQ,GAAA,yBAA4B,IAAA,QAAY,CAAA,GAAI,OAAA,CAAQ,CAAA,IAAK,CAAA,GAAI,OAAA,CAAQ,CAAA;EA0B7E,QAAA,GAAA,CAAY,GAAA,yBAA4B,IAAA,QAAY,CAAA,GAAI,CAAA;EAcxD,KAAA,CAAM,MAAA;EAcN,KAAA,CAAM,MAAA,sBAAyB,WAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.mts","names":[],"sources":["../../src/client/client.ts"],"sourcesContent":[],"mappings":";;;;;;uBAQsB,UAAA;WACZ,iBAAA,CAAkB;EADN,KAAA,EAEd,WAFwB;EACtB,IAAA,EAEH,UAFqB;EACpB,WAAA,CAAA;IAAA,OAAA;IAAA,IAAA;IAAA;EAAA,CAAA,EAOJ,iBAAA,CAAkB,mBAPd;EACD,SAAA,IAAA,EAYS,UAZT;EAGL,OAAA,CAAA,4BAWmC,wBAXnC,CAAA,IAAA,CAAA,EAAA,CAAA,CAAA,GAAA,aAAA,EAYkB,aAZlB,CAAA,EAuCM,oBAvCN,CAwCC,QAxCD,CAyCE,mBAzCF,CAAA,QAAA,MA2CgB,aA3ChB,GA2CgC,aA3ChC,CA2C8C,CA3C9C,CAAA,SA2CyD,wBA3CzD,CAAA,IAAA,EAAA,KAAA,cAAA,MAAA,EAAA,KAAA,UAAA,CAAA,GAAA,SAiDc,IAjDd,GAiDqB,SAjDrB,EAAA,GAAA,KAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,IAAA,CAAA"}
1
+ {"version":3,"file":"client.d.mts","names":[],"sources":["../../src/client/client.ts"],"mappings":";;;;;;uBAQsB,UAAA;EACrB,OAAA,EAAS,iBAAA,CAAkB,OAAA;EAC3B,KAAA,EAAO,WAAA;EACP,IAAA,EAAM,UAAA;;IAGL,OAAA;IACA,IAAA;IACA;EAAA,GACE,iBAAA,CAAkB,mBAAA;EAAA,SAMZ,IAAA,EAAM,UAAA;EAEf,OAAA,6BAAoC,wBAAA,SAAA,CAAA,GAChC,aAAA,EAAe,aAAA,GA2BZ,oBAAA,CACL,QAAA,CACC,mBAAA,eAEc,aAAA,GAAgB,aAAA,CAAc,CAAA,UAAW,wBAAA,8DAM3C,IAAA,GAAO,SAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"core-resolver.d.mts","names":[],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":[],"mappings":";;;;;iBAiCsB,kCAAA,kBACJ,iCACR,qCACG,gBAAa"}
1
+ {"version":3,"file":"core-resolver.d.mts","names":[],"sources":["../../src/client/core-resolver.ts"],"mappings":";;;;;iBAoCsB,kCAAA,CACrB,eAAA,EAAiB,sBAAA,EACjB,OAAA,EAAS,uBAAA,EACT,IAAA,QAAY,OAAA,SAAa,OAAA"}
@@ -1,11 +1,10 @@
1
- import { normalizeHaneulAddress, normalizeHaneulObjectId } from "../utils/haneul-types.mjs";
2
- import { ObjectRefSchema } from "../transactions/data/internal.mjs";
1
+ import { normalizeHaneulAddress, normalizeHaneulObjectId, normalizeStructTag } from "../utils/haneul-types.mjs";
3
2
  import { SimulationError } from "./errors.mjs";
4
3
  import { HANEUL_TYPE_ARG } from "../utils/constants.mjs";
4
+ import { createCoinReservationRef } from "../utils/coin-reservation.mjs";
5
5
  import { Inputs } from "../transactions/Inputs.mjs";
6
6
  import { getPureBcsSchema, isTxContext } from "../transactions/serializer.mjs";
7
7
  import { chunk } from "@haneullabs/utils";
8
- import { parse } from "valibot";
9
8
 
10
9
  //#region src/client/core-resolver.ts
11
10
  const MAX_OBJECTS_PER_FETCH = 50;
@@ -17,20 +16,56 @@ function getClient(options) {
17
16
  }
18
17
  async function coreClientResolveTransactionPlugin(transactionData, options, next) {
19
18
  const client = getClient(options);
20
- await normalizeInputs(transactionData, client);
19
+ const needsGasPrice = !options.onlyTransactionKind && !transactionData.gasData.price;
20
+ const needsPayment = !options.onlyTransactionKind && !transactionData.gasData.payment;
21
+ const gasPayer = transactionData.gasData.owner ?? transactionData.sender;
22
+ let usesGasCoin = false;
23
+ let withdrawals = 0n;
24
+ transactionData.mapArguments((arg) => {
25
+ if (arg.$kind === "GasCoin") usesGasCoin = true;
26
+ return arg;
27
+ });
28
+ const normalizedGasPayer = gasPayer ? normalizeHaneulAddress(gasPayer) : null;
29
+ for (const input of transactionData.inputs) {
30
+ if (input.$kind !== "FundsWithdrawal" || !normalizedGasPayer) continue;
31
+ if (normalizeStructTag(input.FundsWithdrawal.typeArg.Balance) !== HANEUL_TYPE_ARG) continue;
32
+ const withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender ? transactionData.sender : gasPayer;
33
+ if (withdrawalOwner && normalizeHaneulAddress(withdrawalOwner) === normalizedGasPayer && input.FundsWithdrawal.reservation.$kind === "MaxAmountU64") withdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);
34
+ }
35
+ const needsSystemState = needsGasPrice || needsPayment && usesGasCoin;
36
+ const [, systemStateResult, balanceResult, coinsResult, protocolConfigResult, chainIdResult] = await Promise.all([
37
+ normalizeInputs(transactionData, client),
38
+ needsSystemState ? client.core.getCurrentSystemState() : null,
39
+ needsPayment && gasPayer ? client.core.getBalance({ owner: gasPayer }) : null,
40
+ needsPayment && gasPayer ? client.core.listCoins({
41
+ owner: gasPayer,
42
+ coinType: HANEUL_TYPE_ARG
43
+ }) : null,
44
+ needsPayment && usesGasCoin ? client.core.getProtocolConfig() : null,
45
+ needsPayment && usesGasCoin ? client.core.getChainIdentifier() : null
46
+ ]);
21
47
  await resolveObjectReferences(transactionData, client);
22
- if (!options.onlyTransactionKind) await setGasData(transactionData, client);
23
- return await next();
24
- }
25
- async function setGasData(transactionData, client) {
26
- let systemState = null;
27
- if (!transactionData.gasData.price) {
28
- systemState = (await client.core.getCurrentSystemState()).systemState;
29
- transactionData.gasData.price = systemState.referenceGasPrice;
48
+ if (!options.onlyTransactionKind) {
49
+ const systemState = systemStateResult?.systemState ?? null;
50
+ if (systemState && !transactionData.gasData.price) transactionData.gasData.price = systemState.referenceGasPrice;
51
+ await setGasBudget(transactionData, client);
52
+ if (needsPayment) {
53
+ if (!balanceResult || !coinsResult) throw new Error("Could not resolve gas payment: a gas owner or sender must be set to fetch balance and coins.");
54
+ setGasPayment({
55
+ transactionData,
56
+ balance: balanceResult,
57
+ coins: coinsResult,
58
+ usesGasCoin,
59
+ withdrawals,
60
+ protocolConfig: protocolConfigResult?.protocolConfig,
61
+ gasPayer,
62
+ chainIdentifier: chainIdResult?.chainIdentifier ?? null,
63
+ epoch: systemState?.epoch ?? null
64
+ });
65
+ }
66
+ if (!transactionData.expiration && transactionData.gasData.payment?.length === 0) await setExpiration(transactionData, client, systemState, chainIdResult?.chainIdentifier ?? null);
30
67
  }
31
- await setGasBudget(transactionData, client);
32
- await setGasPayment(transactionData, client);
33
- if (!transactionData.expiration) await setExpiration(transactionData, client, systemState);
68
+ return await next();
34
69
  }
35
70
  async function setGasBudget(transactionData, client) {
36
71
  if (transactionData.gasData.budget) return;
@@ -54,48 +89,32 @@ async function setGasBudget(transactionData, client) {
54
89
  const gasBudget = baseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);
55
90
  transactionData.gasData.budget = String(gasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead);
56
91
  }
57
- async function setGasPayment(transactionData, client) {
58
- if (!transactionData.gasData.payment) {
59
- const gasPayer = transactionData.gasData.owner ?? transactionData.sender;
60
- let usesGasCoin = false;
61
- let withdrawals = 0n;
62
- transactionData.mapArguments((arg) => {
63
- if (arg.$kind === "GasCoin") usesGasCoin = true;
64
- else if (arg.$kind === "Input") {
65
- const input = transactionData.inputs[arg.Input];
66
- if (input.$kind === "FundsWithdrawal") {
67
- if ((input.FundsWithdrawal.withdrawFrom.Sender ? transactionData.sender : gasPayer) === gasPayer) {
68
- if (input.FundsWithdrawal.reservation.$kind === "MaxAmountU64") withdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);
69
- }
70
- }
71
- }
72
- return arg;
73
- });
74
- const [suiBalance, coins] = await Promise.all([usesGasCoin || !transactionData.gasData.owner ? null : client.core.getBalance({ owner: transactionData.gasData.owner }), client.core.listCoins({
75
- owner: transactionData.gasData.owner || transactionData.sender,
76
- coinType: HANEUL_TYPE_ARG
77
- })]);
78
- if (suiBalance?.balance.addressBalance && BigInt(suiBalance.balance.addressBalance) >= BigInt(transactionData.gasData.budget || "0") + withdrawals) {
79
- transactionData.gasData.payment = [];
80
- return;
81
- }
82
- const paymentCoins = coins.objects.filter((coin) => {
83
- return !transactionData.inputs.find((input) => {
84
- if (input.Object?.ImmOrOwnedObject) return coin.objectId === input.Object.ImmOrOwnedObject.objectId;
85
- return false;
86
- });
87
- }).map((coin) => parse(ObjectRefSchema, {
88
- objectId: coin.objectId,
89
- digest: coin.digest,
90
- version: coin.version
91
- }));
92
- if (!paymentCoins.length) throw new Error("No valid gas coins found for the transaction.");
93
- transactionData.gasData.payment = paymentCoins;
92
+ function setGasPayment({ transactionData, balance, coins, usesGasCoin, withdrawals, protocolConfig, gasPayer, chainIdentifier, epoch }) {
93
+ const budget = BigInt(transactionData.gasData.budget);
94
+ const addressBalance = BigInt(balance.balance.addressBalance);
95
+ if (budget === 0n || !usesGasCoin && addressBalance >= budget + withdrawals) {
96
+ transactionData.gasData.payment = [];
97
+ return;
94
98
  }
99
+ const filteredCoins = coins.objects.filter((coin) => {
100
+ return !transactionData.inputs.find((input) => {
101
+ if (input.Object?.ImmOrOwnedObject) return coin.objectId === input.Object.ImmOrOwnedObject.objectId;
102
+ return false;
103
+ });
104
+ });
105
+ const paymentCoins = filteredCoins.map((coin) => ({
106
+ objectId: coin.objectId,
107
+ digest: coin.digest,
108
+ version: coin.version
109
+ }));
110
+ const reservationAmount = addressBalance - withdrawals;
111
+ if (usesGasCoin && reservationAmount > 0n && protocolConfig?.featureFlags?.["enable_coin_reservation_obj_refs"] && chainIdentifier && epoch) transactionData.gasData.payment = [createCoinReservationRef(reservationAmount, gasPayer, chainIdentifier, epoch), ...paymentCoins];
112
+ else if (!filteredCoins.length) throw new Error("No valid gas coins found for the transaction.");
113
+ else transactionData.gasData.payment = paymentCoins;
95
114
  }
96
- async function setExpiration(transactionData, client, existingSystemState) {
97
- const [systemState, { chainIdentifier }] = await Promise.all([existingSystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState), client.core.getChainIdentifier()]);
98
- const currentEpoch = BigInt(systemState.epoch);
115
+ async function setExpiration(transactionData, client, systemState, existingChainIdentifier = null) {
116
+ const [chainIdentifier, resolvedSystemState] = await Promise.all([existingChainIdentifier ?? client.core.getChainIdentifier().then((r) => r.chainIdentifier), systemState ?? client.core.getCurrentSystemState().then((r) => r.systemState)]);
117
+ const currentEpoch = BigInt(resolvedSystemState.epoch);
99
118
  transactionData.expiration = {
100
119
  $kind: "ValidDuring",
101
120
  ValidDuring: {
@@ -120,14 +139,14 @@ async function resolveObjectReferences(transactionData, client) {
120
139
  }));
121
140
  const invalidObjects = Array.from(responsesById).filter(([_, obj]) => obj instanceof Error).map(([_, obj]) => obj.message);
122
141
  if (invalidObjects.length) throw new Error(`The following input objects are invalid: ${invalidObjects.join(", ")}`);
123
- const objects = resolved.map((object$1) => {
124
- if (object$1 instanceof Error) throw new Error(`Failed to fetch object: ${object$1.message}`);
125
- const owner = object$1.owner;
142
+ const objects = resolved.map((object) => {
143
+ if (object instanceof Error) throw new Error(`Failed to fetch object: ${object.message}`);
144
+ const owner = object.owner;
126
145
  const initialSharedVersion = owner && typeof owner === "object" ? owner.$kind === "Shared" ? owner.Shared.initialSharedVersion : owner.$kind === "ConsensusAddressOwner" ? owner.ConsensusAddressOwner.startVersion : null : null;
127
146
  return {
128
- objectId: object$1.objectId,
129
- digest: object$1.digest,
130
- version: object$1.version,
147
+ objectId: object.objectId,
148
+ digest: object.digest,
149
+ version: object.version,
131
150
  initialSharedVersion
132
151
  };
133
152
  });
@@ -138,21 +157,21 @@ async function resolveObjectReferences(transactionData, client) {
138
157
  if (!input.UnresolvedObject) continue;
139
158
  let updated;
140
159
  const id = normalizeHaneulAddress(input.UnresolvedObject.objectId);
141
- const object$1 = objectsById.get(id);
142
- if (input.UnresolvedObject.initialSharedVersion ?? object$1?.initialSharedVersion) updated = Inputs.SharedObjectRef({
160
+ const object = objectsById.get(id);
161
+ if (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) updated = Inputs.SharedObjectRef({
143
162
  objectId: id,
144
- initialSharedVersion: input.UnresolvedObject.initialSharedVersion || object$1?.initialSharedVersion,
163
+ initialSharedVersion: input.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion,
145
164
  mutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index)
146
165
  });
147
166
  else if (isUsedAsReceiving(transactionData, index)) updated = Inputs.ReceivingRef({
148
167
  objectId: id,
149
- digest: input.UnresolvedObject.digest ?? object$1?.digest,
150
- version: input.UnresolvedObject.version ?? object$1?.version
168
+ digest: input.UnresolvedObject.digest ?? object?.digest,
169
+ version: input.UnresolvedObject.version ?? object?.version
151
170
  });
152
171
  transactionData.inputs[transactionData.inputs.indexOf(input)] = updated ?? Inputs.ObjectRef({
153
172
  objectId: id,
154
- digest: input.UnresolvedObject.digest ?? object$1?.digest,
155
- version: input.UnresolvedObject.version ?? object$1?.version
173
+ digest: input.UnresolvedObject.digest ?? object?.digest,
174
+ version: input.UnresolvedObject.version ?? object?.version
156
175
  });
157
176
  }
158
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"core-resolver.mjs","names":["object"],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { parse } from 'valibot';\n\nimport { normalizeHaneulAddress, normalizeHaneulObjectId, HANEUL_TYPE_ARG } from '../utils/index.js';\nimport type { ClientWithCoreApi } from './core.js';\nimport { ObjectRefSchema } from '../transactions/data/internal.js';\nimport type { CallArg, Command } from '../transactions/data/internal.js';\nimport type { HaneulClientTypes } from './types.js';\nimport { SimulationError } from './errors.js';\nimport { Inputs } from '../transactions/Inputs.js';\nimport { getPureBcsSchema, isTxContext } from '../transactions/serializer.js';\nimport type { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@haneullabs/utils';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\n// An amount of gas (in gas units) that is added to transactions as an overhead to ensure transactions do not fail.\nconst GAS_SAFE_OVERHEAD = 1000n;\nconst MAX_GAS = 50_000_000_000;\n\nfunction getClient(options: BuildTransactionOptions): ClientWithCoreApi {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No haneul client passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\treturn options.client;\n}\n\nexport async function coreClientResolveTransactionPlugin(\n\ttransactionData: TransactionDataBuilder,\n\toptions: BuildTransactionOptions,\n\tnext: () => Promise<void>,\n) {\n\tconst client = getClient(options);\n\n\tawait normalizeInputs(transactionData, client);\n\tawait resolveObjectReferences(transactionData, client);\n\n\tif (!options.onlyTransactionKind) {\n\t\tawait setGasData(transactionData, client);\n\t}\n\n\treturn await next();\n}\n\ninterface SystemStateData {\n\tepoch: string;\n\treferenceGasPrice: string;\n}\n\nasync function setGasData(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tlet systemState: SystemStateData | null = null;\n\n\tif (!transactionData.gasData.price) {\n\t\tconst response = await client.core.getCurrentSystemState();\n\t\tsystemState = response.systemState;\n\t\ttransactionData.gasData.price = systemState.referenceGasPrice;\n\t}\n\n\tawait setGasBudget(transactionData, client);\n\tawait setGasPayment(transactionData, client);\n\n\tif (!transactionData.expiration) {\n\t\tawait setExpiration(transactionData, client, systemState);\n\t}\n}\n\nasync function setGasBudget(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (transactionData.gasData.budget) {\n\t\treturn;\n\t}\n\n\tconst simulateResult = await client.core.simulateTransaction({\n\t\ttransaction: transactionData.build({\n\t\t\toverrides: {\n\t\t\t\tgasData: {\n\t\t\t\t\tbudget: String(MAX_GAS),\n\t\t\t\t\tpayment: [],\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\tinclude: { effects: true },\n\t});\n\n\tif (simulateResult.$kind === 'FailedTransaction') {\n\t\tconst executionError = simulateResult.FailedTransaction.status.error ?? undefined;\n\t\tconst errorMessage = executionError?.message ?? 'Unknown error';\n\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\tcause: simulateResult,\n\t\t\texecutionError,\n\t\t});\n\t}\n\n\tconst gasUsed = simulateResult.Transaction.effects!.gasUsed;\n\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(transactionData.gasData.price || 1n);\n\n\tconst baseComputationCostWithOverhead = BigInt(gasUsed.computationCost) + safeOverhead;\n\n\tconst gasBudget =\n\t\tbaseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);\n\n\ttransactionData.gasData.budget = String(\n\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t);\n}\n\n// The current default is just picking _all_ coins we can which may not be ideal.\nasync function setGasPayment(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (!transactionData.gasData.payment) {\n\t\tconst gasPayer = transactionData.gasData.owner ?? transactionData.sender!;\n\t\tlet usesGasCoin = false;\n\t\tlet withdrawals = 0n;\n\n\t\ttransactionData.mapArguments((arg) => {\n\t\t\tif (arg.$kind === 'GasCoin') {\n\t\t\t\tusesGasCoin = true;\n\t\t\t} else if (arg.$kind === 'Input') {\n\t\t\t\tconst input = transactionData.inputs[arg.Input];\n\n\t\t\t\tif (input.$kind === 'FundsWithdrawal') {\n\t\t\t\t\tconst withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender\n\t\t\t\t\t\t? transactionData.sender\n\t\t\t\t\t\t: gasPayer;\n\n\t\t\t\t\tif (withdrawalOwner === gasPayer) {\n\t\t\t\t\t\tif (input.FundsWithdrawal.reservation.$kind === 'MaxAmountU64') {\n\t\t\t\t\t\t\twithdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn arg;\n\t\t});\n\n\t\tconst [suiBalance, coins] = await Promise.all([\n\t\t\tusesGasCoin || !transactionData.gasData.owner\n\t\t\t\t? null\n\t\t\t\t: client.core.getBalance({\n\t\t\t\t\t\towner: transactionData.gasData.owner,\n\t\t\t\t\t}),\n\t\t\tclient.core.listCoins({\n\t\t\t\towner: transactionData.gasData.owner || transactionData.sender!,\n\t\t\t\tcoinType: HANEUL_TYPE_ARG,\n\t\t\t}),\n\t\t]);\n\n\t\tif (\n\t\t\tsuiBalance?.balance.addressBalance &&\n\t\t\tBigInt(suiBalance.balance.addressBalance) >=\n\t\t\t\tBigInt(transactionData.gasData.budget || '0') + withdrawals\n\t\t) {\n\t\t\ttransactionData.gasData.payment = [];\n\t\t\treturn;\n\t\t}\n\n\t\tconst paymentCoins = coins.objects\n\t\t\t// Filter out coins that are also used as input:\n\t\t\t.filter((coin) => {\n\t\t\t\tconst matchingInput = transactionData.inputs.find((input) => {\n\t\t\t\t\tif (input.Object?.ImmOrOwnedObject) {\n\t\t\t\t\t\treturn coin.objectId === input.Object.ImmOrOwnedObject.objectId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t\treturn !matchingInput;\n\t\t\t})\n\t\t\t.map((coin) =>\n\t\t\t\tparse(ObjectRefSchema, {\n\t\t\t\t\tobjectId: coin.objectId,\n\t\t\t\t\tdigest: coin.digest,\n\t\t\t\t\tversion: coin.version,\n\t\t\t\t}),\n\t\t\t);\n\n\t\tif (!paymentCoins.length) {\n\t\t\tthrow new Error('No valid gas coins found for the transaction.');\n\t\t}\n\n\t\ttransactionData.gasData.payment = paymentCoins;\n\t}\n}\n\nasync function setExpiration(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\texistingSystemState: SystemStateData | null,\n) {\n\tconst [systemState, { chainIdentifier }] = await Promise.all([\n\t\texistingSystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState),\n\t\tclient.core.getChainIdentifier(),\n\t]);\n\tconst currentEpoch = BigInt(systemState.epoch);\n\n\ttransactionData.expiration = {\n\t\t$kind: 'ValidDuring',\n\t\tValidDuring: {\n\t\t\tminEpoch: String(currentEpoch),\n\t\t\tmaxEpoch: String(currentEpoch + 1n),\n\t\t\tminTimestamp: null,\n\t\t\tmaxTimestamp: null,\n\t\t\tchain: chainIdentifier,\n\t\t\tnonce: (Math.random() * 0x100000000) >>> 0,\n\t\t},\n\t};\n}\n\nasync function resolveObjectReferences(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n) {\n\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t// We keep the input by-reference to avoid needing to re-resolve it:\n\tconst objectsToResolve = transactionData.inputs.filter((input) => {\n\t\treturn (\n\t\t\tinput.UnresolvedObject &&\n\t\t\t!(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion)\n\t\t);\n\t}) as Extract<CallArg, { UnresolvedObject: unknown }>[];\n\n\tconst dedupedIds = [\n\t\t...new Set(\n\t\t\tobjectsToResolve.map((input) => normalizeHaneulObjectId(input.UnresolvedObject.objectId)),\n\t\t),\n\t];\n\n\tconst objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];\n\tconst resolved = (\n\t\tawait Promise.all(\n\t\t\tobjectChunks.map((chunkIds) =>\n\t\t\t\tclient.core.getObjects({\n\t\t\t\t\tobjectIds: chunkIds,\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t).flatMap((result) => result.objects);\n\n\tconst responsesById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, resolved[index]];\n\t\t}),\n\t);\n\n\tconst invalidObjects = Array.from(responsesById)\n\t\t.filter(([_, obj]) => obj instanceof Error)\n\t\t.map(([_, obj]) => (obj as Error).message);\n\n\tif (invalidObjects.length) {\n\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t}\n\n\tconst objects = resolved.map((object) => {\n\t\tif (object instanceof Error) {\n\t\t\tthrow new Error(`Failed to fetch object: ${object.message}`);\n\t\t}\n\t\tconst owner = object.owner;\n\t\tconst initialSharedVersion =\n\t\t\towner && typeof owner === 'object'\n\t\t\t\t? owner.$kind === 'Shared'\n\t\t\t\t\t? owner.Shared.initialSharedVersion\n\t\t\t\t\t: owner.$kind === 'ConsensusAddressOwner'\n\t\t\t\t\t\t? owner.ConsensusAddressOwner.startVersion\n\t\t\t\t\t\t: null\n\t\t\t\t: null;\n\n\t\treturn {\n\t\t\tobjectId: object.objectId,\n\t\t\tdigest: object.digest,\n\t\t\tversion: object.version,\n\t\t\tinitialSharedVersion,\n\t\t};\n\t});\n\n\tconst objectsById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, objects[index]];\n\t\t}),\n\t);\n\n\tfor (const [index, input] of transactionData.inputs.entries()) {\n\t\tif (!input.UnresolvedObject) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet updated: CallArg | undefined;\n\t\tconst id = normalizeHaneulAddress(input.UnresolvedObject.objectId);\n\t\tconst object = objectsById.get(id);\n\n\t\tif (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) {\n\t\t\tupdated = Inputs.SharedObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tinitialSharedVersion:\n\t\t\t\t\tinput.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion!,\n\t\t\t\tmutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index),\n\t\t\t});\n\t\t} else if (isUsedAsReceiving(transactionData, index)) {\n\t\t\tupdated = Inputs.ReceivingRef(\n\t\t\t\t{\n\t\t\t\t\tobjectId: id,\n\t\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t\t}!,\n\t\t\t);\n\t\t}\n\n\t\ttransactionData.inputs[transactionData.inputs.indexOf(input)] =\n\t\t\tupdated ??\n\t\t\tInputs.ObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t});\n\t}\n}\n\nasync function normalizeInputs(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tconst { inputs, commands } = transactionData;\n\tconst moveCallsToResolve: Extract<Command, { MoveCall: unknown }>['MoveCall'][] = [];\n\tconst moveFunctionsToResolve = new Set<string>();\n\n\tcommands.forEach((command) => {\n\t\t// Special case move call:\n\t\tif (command.MoveCall) {\n\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t// - If they don't, then this is good to go.\n\t\t\t// - If they do, then we need to fetch the normalized move module.\n\n\t\t\t// If we already know the argument types, we don't need to resolve them again\n\t\t\tif (command.MoveCall._argumentTypes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputs = command.MoveCall.arguments.map((arg) => {\n\t\t\t\tif (arg.$kind === 'Input') {\n\t\t\t\t\treturn transactionData.inputs[arg.Input];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tconst needsResolution = inputs.some(\n\t\t\t\t(input) =>\n\t\t\t\t\tinput?.UnresolvedPure ||\n\t\t\t\t\t(input?.UnresolvedObject && typeof input?.UnresolvedObject.mutable !== 'boolean'),\n\t\t\t);\n\n\t\t\tif (needsResolution) {\n\t\t\t\tconst functionName = `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`;\n\t\t\t\tmoveFunctionsToResolve.add(functionName);\n\t\t\t\tmoveCallsToResolve.push(command.MoveCall);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst moveFunctionParameters = new Map<string, HaneulClientTypes.OpenSignature[]>();\n\tif (moveFunctionsToResolve.size > 0) {\n\t\tawait Promise.all(\n\t\t\t[...moveFunctionsToResolve].map(async (functionName) => {\n\t\t\t\tconst [packageId, moduleName, name] = functionName.split('::');\n\t\t\t\tconst { function: def } = await client.core.getMoveFunction({\n\t\t\t\t\tpackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t\tname,\n\t\t\t\t});\n\n\t\t\t\tmoveFunctionParameters.set(functionName, def.parameters);\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (moveCallsToResolve.length) {\n\t\tawait Promise.all(\n\t\t\tmoveCallsToResolve.map(async (moveCall) => {\n\t\t\t\tconst parameters = moveFunctionParameters.get(\n\t\t\t\t\t`${moveCall.package}::${moveCall.module}::${moveCall.function}`,\n\t\t\t\t);\n\n\t\t\t\tif (!parameters) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\tconst hasTxContext = parameters.length > 0 && isTxContext(parameters.at(-1)!);\n\t\t\t\tconst params = hasTxContext ? parameters.slice(0, parameters.length - 1) : parameters;\n\n\t\t\t\tmoveCall._argumentTypes = params;\n\t\t\t}),\n\t\t);\n\t}\n\n\tcommands.forEach((command) => {\n\t\tif (!command.MoveCall) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst moveCall = command.MoveCall;\n\t\tconst fnName = `${moveCall.package}::${moveCall.module}::${moveCall.function}`;\n\t\tconst params = moveCall._argumentTypes;\n\n\t\tif (!params) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (params.length !== command.MoveCall.arguments.length) {\n\t\t\tthrow new Error(`Incorrect number of arguments for ${fnName}`);\n\t\t}\n\n\t\tparams.forEach((param, i) => {\n\t\t\tconst arg = moveCall.arguments[i];\n\t\t\tif (arg.$kind !== 'Input') return;\n\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t// Skip if the input is already resolved\n\t\t\tif (!input.UnresolvedPure && !input.UnresolvedObject) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputValue = input.UnresolvedPure?.value ?? input.UnresolvedObject?.objectId!;\n\n\t\t\tconst schema = getPureBcsSchema(param.body);\n\t\t\tif (schema) {\n\t\t\t\targ.type = 'pure';\n\t\t\t\tinputs[inputs.indexOf(input)] = Inputs.Pure(schema.serialize(inputValue));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ.type = 'object';\n\t\t\tconst unresolvedObject: typeof input = input.UnresolvedPure\n\t\t\t\t? {\n\t\t\t\t\t\t$kind: 'UnresolvedObject',\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: inputValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: input;\n\n\t\t\tinputs[arg.Input] = unresolvedObject;\n\t\t});\n\t});\n}\n\nfunction isUsedAsMutable(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsMutable = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsMutable =\n\t\t\t\ttx.MoveCall._argumentTypes[argIndex].reference !== 'immutable' || usedAsMutable;\n\t\t}\n\n\t\tif (\n\t\t\ttx.$kind === 'MakeMoveVec' ||\n\t\t\ttx.$kind === 'MergeCoins' ||\n\t\t\ttx.$kind === 'SplitCoins' ||\n\t\t\ttx.$kind === 'TransferObjects'\n\t\t) {\n\t\t\tusedAsMutable = true;\n\t\t}\n\t});\n\n\treturn usedAsMutable;\n}\n\nfunction isUsedAsReceiving(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsReceiving = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsReceiving = isReceivingType(tx.MoveCall._argumentTypes[argIndex]) || usedAsReceiving;\n\t\t}\n\t});\n\n\treturn usedAsReceiving;\n}\n\nconst RECEIVING_TYPE =\n\t'0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';\n\nfunction isReceivingType(type: HaneulClientTypes.OpenSignature): boolean {\n\tif (type.body.$kind !== 'datatype') {\n\t\treturn false;\n\t}\n\n\treturn type.body.datatype.typeName === RECEIVING_TYPE;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core-resolver.mjs","names":[],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tnormalizeHaneulAddress,\n\tnormalizeHaneulObjectId,\n\tnormalizeStructTag,\n\tHANEUL_TYPE_ARG,\n} from '../utils/index.js';\nimport { createCoinReservationRef } from '../utils/coin-reservation.js';\nimport type { ClientWithCoreApi } from './core.js';\nimport type { CallArg, Command } from '../transactions/data/internal.js';\nimport type { HaneulClientTypes } from './types.js';\nimport { SimulationError } from './errors.js';\nimport { Inputs } from '../transactions/Inputs.js';\nimport { getPureBcsSchema, isTxContext } from '../transactions/serializer.js';\nimport type { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@haneullabs/utils';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\n// An amount of gas (in gas units) that is added to transactions as an overhead to ensure transactions do not fail.\nconst GAS_SAFE_OVERHEAD = 1000n;\nconst MAX_GAS = 50_000_000_000;\n\nfunction getClient(options: BuildTransactionOptions): ClientWithCoreApi {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No haneul client passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\treturn options.client;\n}\n\nexport async function coreClientResolveTransactionPlugin(\n\ttransactionData: TransactionDataBuilder,\n\toptions: BuildTransactionOptions,\n\tnext: () => Promise<void>,\n) {\n\tconst client = getClient(options);\n\n\tconst needsGasPrice = !options.onlyTransactionKind && !transactionData.gasData.price;\n\tconst needsPayment = !options.onlyTransactionKind && !transactionData.gasData.payment;\n\tconst gasPayer = transactionData.gasData.owner ?? transactionData.sender;\n\n\tlet usesGasCoin = false;\n\tlet withdrawals = 0n;\n\n\ttransactionData.mapArguments((arg) => {\n\t\tif (arg.$kind === 'GasCoin') usesGasCoin = true;\n\t\treturn arg;\n\t});\n\n\tconst normalizedGasPayer = gasPayer ? normalizeHaneulAddress(gasPayer) : null;\n\tfor (const input of transactionData.inputs) {\n\t\tif (input.$kind !== 'FundsWithdrawal' || !normalizedGasPayer) continue;\n\t\tif (normalizeStructTag(input.FundsWithdrawal.typeArg.Balance) !== HANEUL_TYPE_ARG) continue;\n\n\t\tconst withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender\n\t\t\t? transactionData.sender\n\t\t\t: gasPayer;\n\t\tif (\n\t\t\twithdrawalOwner &&\n\t\t\tnormalizeHaneulAddress(withdrawalOwner) === normalizedGasPayer &&\n\t\t\tinput.FundsWithdrawal.reservation.$kind === 'MaxAmountU64'\n\t\t) {\n\t\t\twithdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);\n\t\t}\n\t}\n\n\tconst needsSystemState = needsGasPrice || (needsPayment && usesGasCoin);\n\tconst [, systemStateResult, balanceResult, coinsResult, protocolConfigResult, chainIdResult] =\n\t\tawait Promise.all([\n\t\t\tnormalizeInputs(transactionData, client),\n\t\t\tneedsSystemState ? client.core.getCurrentSystemState() : null,\n\t\t\tneedsPayment && gasPayer ? client.core.getBalance({ owner: gasPayer }) : null,\n\t\t\tneedsPayment && gasPayer\n\t\t\t\t? client.core.listCoins({ owner: gasPayer, coinType: HANEUL_TYPE_ARG })\n\t\t\t\t: null,\n\t\t\tneedsPayment && usesGasCoin ? client.core.getProtocolConfig() : null,\n\t\t\tneedsPayment && usesGasCoin ? client.core.getChainIdentifier() : null,\n\t\t]);\n\n\tawait resolveObjectReferences(transactionData, client);\n\n\tif (!options.onlyTransactionKind) {\n\t\tconst systemState = systemStateResult?.systemState ?? null;\n\n\t\tif (systemState && !transactionData.gasData.price) {\n\t\t\ttransactionData.gasData.price = systemState.referenceGasPrice;\n\t\t}\n\n\t\tawait setGasBudget(transactionData, client);\n\n\t\tif (needsPayment) {\n\t\t\tif (!balanceResult || !coinsResult) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Could not resolve gas payment: a gas owner or sender must be set to fetch balance and coins.',\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetGasPayment({\n\t\t\t\ttransactionData,\n\t\t\t\tbalance: balanceResult,\n\t\t\t\tcoins: coinsResult,\n\t\t\t\tusesGasCoin,\n\t\t\t\twithdrawals,\n\t\t\t\tprotocolConfig: protocolConfigResult?.protocolConfig,\n\t\t\t\tgasPayer: gasPayer!,\n\t\t\t\tchainIdentifier: chainIdResult?.chainIdentifier ?? null,\n\t\t\t\tepoch: systemState?.epoch ?? null,\n\t\t\t});\n\t\t}\n\n\t\tif (!transactionData.expiration && transactionData.gasData.payment?.length === 0) {\n\t\t\tawait setExpiration(\n\t\t\t\ttransactionData,\n\t\t\t\tclient,\n\t\t\t\tsystemState,\n\t\t\t\tchainIdResult?.chainIdentifier ?? null,\n\t\t\t);\n\t\t}\n\t}\n\n\treturn await next();\n}\n\nasync function setGasBudget(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tif (transactionData.gasData.budget) {\n\t\treturn;\n\t}\n\n\tconst simulateResult = await client.core.simulateTransaction({\n\t\ttransaction: transactionData.build({\n\t\t\toverrides: {\n\t\t\t\tgasData: {\n\t\t\t\t\tbudget: String(MAX_GAS),\n\t\t\t\t\tpayment: [],\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t\tinclude: { effects: true },\n\t});\n\n\tif (simulateResult.$kind === 'FailedTransaction') {\n\t\tconst executionError = simulateResult.FailedTransaction.status.error ?? undefined;\n\t\tconst errorMessage = executionError?.message ?? 'Unknown error';\n\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\tcause: simulateResult,\n\t\t\texecutionError,\n\t\t});\n\t}\n\n\tconst gasUsed = simulateResult.Transaction.effects!.gasUsed;\n\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(transactionData.gasData.price || 1n);\n\n\tconst baseComputationCostWithOverhead = BigInt(gasUsed.computationCost) + safeOverhead;\n\n\tconst gasBudget =\n\t\tbaseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);\n\n\ttransactionData.gasData.budget = String(\n\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t);\n}\n\nfunction setGasPayment({\n\ttransactionData,\n\tbalance,\n\tcoins,\n\tusesGasCoin,\n\twithdrawals,\n\tprotocolConfig,\n\tgasPayer,\n\tchainIdentifier,\n\tepoch,\n}: {\n\ttransactionData: TransactionDataBuilder;\n\tbalance: HaneulClientTypes.GetBalanceResponse;\n\tcoins: HaneulClientTypes.ListCoinsResponse;\n\tusesGasCoin: boolean;\n\twithdrawals: bigint;\n\tprotocolConfig: HaneulClientTypes.ProtocolConfig | undefined;\n\tgasPayer: string;\n\tchainIdentifier: string | null;\n\tepoch: string | null;\n}) {\n\tconst budget = BigInt(transactionData.gasData.budget!);\n\tconst addressBalance = BigInt(balance.balance.addressBalance);\n\n\tif (budget === 0n || (!usesGasCoin && addressBalance >= budget + withdrawals)) {\n\t\ttransactionData.gasData.payment = [];\n\t\treturn;\n\t}\n\n\tconst filteredCoins = coins.objects.filter((coin) => {\n\t\tconst matchingInput = transactionData.inputs.find((input) => {\n\t\t\tif (input.Object?.ImmOrOwnedObject) {\n\t\t\t\treturn coin.objectId === input.Object.ImmOrOwnedObject.objectId;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\treturn !matchingInput;\n\t});\n\n\tconst paymentCoins = filteredCoins.map((coin) => ({\n\t\tobjectId: coin.objectId,\n\t\tdigest: coin.digest,\n\t\tversion: coin.version,\n\t}));\n\n\tconst reservationAmount = addressBalance - withdrawals;\n\n\tif (\n\t\tusesGasCoin &&\n\t\treservationAmount > 0n &&\n\t\tprotocolConfig?.featureFlags?.['enable_coin_reservation_obj_refs'] &&\n\t\tchainIdentifier &&\n\t\tepoch\n\t) {\n\t\ttransactionData.gasData.payment = [\n\t\t\tcreateCoinReservationRef(reservationAmount, gasPayer, chainIdentifier, epoch),\n\t\t\t...paymentCoins,\n\t\t];\n\t} else if (!filteredCoins.length) {\n\t\tthrow new Error('No valid gas coins found for the transaction.');\n\t} else {\n\t\ttransactionData.gasData.payment = paymentCoins;\n\t}\n}\n\ninterface SystemStateData {\n\tepoch: string;\n\treferenceGasPrice: string;\n}\n\nasync function setExpiration(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\tsystemState: SystemStateData | null,\n\texistingChainIdentifier: string | null = null,\n) {\n\tconst [chainIdentifier, resolvedSystemState] = await Promise.all([\n\t\texistingChainIdentifier ?? client.core.getChainIdentifier().then((r) => r.chainIdentifier),\n\t\tsystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState),\n\t]);\n\tconst currentEpoch = BigInt(resolvedSystemState.epoch);\n\n\ttransactionData.expiration = {\n\t\t$kind: 'ValidDuring',\n\t\tValidDuring: {\n\t\t\tminEpoch: String(currentEpoch),\n\t\t\tmaxEpoch: String(currentEpoch + 1n),\n\t\t\tminTimestamp: null,\n\t\t\tmaxTimestamp: null,\n\t\t\tchain: chainIdentifier,\n\t\t\tnonce: (Math.random() * 0x100000000) >>> 0,\n\t\t},\n\t};\n}\n\nasync function resolveObjectReferences(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n) {\n\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t// We keep the input by-reference to avoid needing to re-resolve it:\n\tconst objectsToResolve = transactionData.inputs.filter((input) => {\n\t\treturn (\n\t\t\tinput.UnresolvedObject &&\n\t\t\t!(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion)\n\t\t);\n\t}) as Extract<CallArg, { UnresolvedObject: unknown }>[];\n\n\tconst dedupedIds = [\n\t\t...new Set(\n\t\t\tobjectsToResolve.map((input) => normalizeHaneulObjectId(input.UnresolvedObject.objectId)),\n\t\t),\n\t];\n\n\tconst objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];\n\tconst resolved = (\n\t\tawait Promise.all(\n\t\t\tobjectChunks.map((chunkIds) =>\n\t\t\t\tclient.core.getObjects({\n\t\t\t\t\tobjectIds: chunkIds,\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t).flatMap((result) => result.objects);\n\n\tconst responsesById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, resolved[index]];\n\t\t}),\n\t);\n\n\tconst invalidObjects = Array.from(responsesById)\n\t\t.filter(([_, obj]) => obj instanceof Error)\n\t\t.map(([_, obj]) => (obj as Error).message);\n\n\tif (invalidObjects.length) {\n\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t}\n\n\tconst objects = resolved.map((object) => {\n\t\tif (object instanceof Error) {\n\t\t\tthrow new Error(`Failed to fetch object: ${object.message}`);\n\t\t}\n\t\tconst owner = object.owner;\n\t\tconst initialSharedVersion =\n\t\t\towner && typeof owner === 'object'\n\t\t\t\t? owner.$kind === 'Shared'\n\t\t\t\t\t? owner.Shared.initialSharedVersion\n\t\t\t\t\t: owner.$kind === 'ConsensusAddressOwner'\n\t\t\t\t\t\t? owner.ConsensusAddressOwner.startVersion\n\t\t\t\t\t\t: null\n\t\t\t\t: null;\n\n\t\treturn {\n\t\t\tobjectId: object.objectId,\n\t\t\tdigest: object.digest,\n\t\t\tversion: object.version,\n\t\t\tinitialSharedVersion,\n\t\t};\n\t});\n\n\tconst objectsById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, objects[index]];\n\t\t}),\n\t);\n\n\tfor (const [index, input] of transactionData.inputs.entries()) {\n\t\tif (!input.UnresolvedObject) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet updated: CallArg | undefined;\n\t\tconst id = normalizeHaneulAddress(input.UnresolvedObject.objectId);\n\t\tconst object = objectsById.get(id);\n\n\t\tif (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) {\n\t\t\tupdated = Inputs.SharedObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tinitialSharedVersion:\n\t\t\t\t\tinput.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion!,\n\t\t\t\tmutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index),\n\t\t\t});\n\t\t} else if (isUsedAsReceiving(transactionData, index)) {\n\t\t\tupdated = Inputs.ReceivingRef(\n\t\t\t\t{\n\t\t\t\t\tobjectId: id,\n\t\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t\t}!,\n\t\t\t);\n\t\t}\n\n\t\ttransactionData.inputs[transactionData.inputs.indexOf(input)] =\n\t\t\tupdated ??\n\t\t\tInputs.ObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t});\n\t}\n}\n\nasync function normalizeInputs(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tconst { inputs, commands } = transactionData;\n\tconst moveCallsToResolve: Extract<Command, { MoveCall: unknown }>['MoveCall'][] = [];\n\tconst moveFunctionsToResolve = new Set<string>();\n\n\tcommands.forEach((command) => {\n\t\t// Special case move call:\n\t\tif (command.MoveCall) {\n\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t// - If they don't, then this is good to go.\n\t\t\t// - If they do, then we need to fetch the normalized move module.\n\n\t\t\t// If we already know the argument types, we don't need to resolve them again\n\t\t\tif (command.MoveCall._argumentTypes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputs = command.MoveCall.arguments.map((arg) => {\n\t\t\t\tif (arg.$kind === 'Input') {\n\t\t\t\t\treturn transactionData.inputs[arg.Input];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tconst needsResolution = inputs.some(\n\t\t\t\t(input) =>\n\t\t\t\t\tinput?.UnresolvedPure ||\n\t\t\t\t\t(input?.UnresolvedObject && typeof input?.UnresolvedObject.mutable !== 'boolean'),\n\t\t\t);\n\n\t\t\tif (needsResolution) {\n\t\t\t\tconst functionName = `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`;\n\t\t\t\tmoveFunctionsToResolve.add(functionName);\n\t\t\t\tmoveCallsToResolve.push(command.MoveCall);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst moveFunctionParameters = new Map<string, HaneulClientTypes.OpenSignature[]>();\n\tif (moveFunctionsToResolve.size > 0) {\n\t\tawait Promise.all(\n\t\t\t[...moveFunctionsToResolve].map(async (functionName) => {\n\t\t\t\tconst [packageId, moduleName, name] = functionName.split('::');\n\t\t\t\tconst { function: def } = await client.core.getMoveFunction({\n\t\t\t\t\tpackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t\tname,\n\t\t\t\t});\n\n\t\t\t\tmoveFunctionParameters.set(functionName, def.parameters);\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (moveCallsToResolve.length) {\n\t\tawait Promise.all(\n\t\t\tmoveCallsToResolve.map(async (moveCall) => {\n\t\t\t\tconst parameters = moveFunctionParameters.get(\n\t\t\t\t\t`${moveCall.package}::${moveCall.module}::${moveCall.function}`,\n\t\t\t\t);\n\n\t\t\t\tif (!parameters) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\tconst hasTxContext = parameters.length > 0 && isTxContext(parameters.at(-1)!);\n\t\t\t\tconst params = hasTxContext ? parameters.slice(0, parameters.length - 1) : parameters;\n\n\t\t\t\tmoveCall._argumentTypes = params;\n\t\t\t}),\n\t\t);\n\t}\n\n\tcommands.forEach((command) => {\n\t\tif (!command.MoveCall) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst moveCall = command.MoveCall;\n\t\tconst fnName = `${moveCall.package}::${moveCall.module}::${moveCall.function}`;\n\t\tconst params = moveCall._argumentTypes;\n\n\t\tif (!params) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (params.length !== command.MoveCall.arguments.length) {\n\t\t\tthrow new Error(`Incorrect number of arguments for ${fnName}`);\n\t\t}\n\n\t\tparams.forEach((param, i) => {\n\t\t\tconst arg = moveCall.arguments[i];\n\t\t\tif (arg.$kind !== 'Input') return;\n\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t// Skip if the input is already resolved\n\t\t\tif (!input.UnresolvedPure && !input.UnresolvedObject) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputValue = input.UnresolvedPure?.value ?? input.UnresolvedObject?.objectId!;\n\n\t\t\tconst schema = getPureBcsSchema(param.body);\n\t\t\tif (schema) {\n\t\t\t\targ.type = 'pure';\n\t\t\t\tinputs[inputs.indexOf(input)] = Inputs.Pure(schema.serialize(inputValue));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ.type = 'object';\n\t\t\tconst unresolvedObject: typeof input = input.UnresolvedPure\n\t\t\t\t? {\n\t\t\t\t\t\t$kind: 'UnresolvedObject',\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: inputValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: input;\n\n\t\t\tinputs[arg.Input] = unresolvedObject;\n\t\t});\n\t});\n}\n\nfunction isUsedAsMutable(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsMutable = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsMutable =\n\t\t\t\ttx.MoveCall._argumentTypes[argIndex].reference !== 'immutable' || usedAsMutable;\n\t\t}\n\n\t\tif (\n\t\t\ttx.$kind === 'MakeMoveVec' ||\n\t\t\ttx.$kind === 'MergeCoins' ||\n\t\t\ttx.$kind === 'SplitCoins' ||\n\t\t\ttx.$kind === 'TransferObjects'\n\t\t) {\n\t\t\tusedAsMutable = true;\n\t\t}\n\t});\n\n\treturn usedAsMutable;\n}\n\nfunction isUsedAsReceiving(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsReceiving = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsReceiving = isReceivingType(tx.MoveCall._argumentTypes[argIndex]) || usedAsReceiving;\n\t\t}\n\t});\n\n\treturn usedAsReceiving;\n}\n\nconst RECEIVING_TYPE =\n\t'0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';\n\nfunction isReceivingType(type: HaneulClientTypes.OpenSignature): boolean {\n\tif (type.body.$kind !== 'datatype') {\n\t\treturn false;\n\t}\n\n\treturn type.body.datatype.typeName === RECEIVING_TYPE;\n}\n"],"mappings":"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"}
@@ -15,18 +15,19 @@ declare abstract class CoreClient extends BaseClient implements HaneulClientType
15
15
  core: this;
16
16
  mvr: HaneulClientTypes.MvrMethods;
17
17
  constructor(options: CoreClientOptions);
18
- abstract getObjects<Include extends HaneulClientTypes.ObjectInclude = object>(options: HaneulClientTypes.GetObjectsOptions<Include>): Promise<HaneulClientTypes.GetObjectsResponse<Include>>;
19
- getObject<Include extends HaneulClientTypes.ObjectInclude = object>(options: HaneulClientTypes.GetObjectOptions<Include>): Promise<HaneulClientTypes.GetObjectResponse<Include>>;
18
+ abstract getObjects<Include extends HaneulClientTypes.ObjectInclude = {}>(options: HaneulClientTypes.GetObjectsOptions<Include>): Promise<HaneulClientTypes.GetObjectsResponse<Include>>;
19
+ getObject<Include extends HaneulClientTypes.ObjectInclude = {}>(options: HaneulClientTypes.GetObjectOptions<Include>): Promise<HaneulClientTypes.GetObjectResponse<Include>>;
20
20
  abstract listCoins(options: HaneulClientTypes.ListCoinsOptions): Promise<HaneulClientTypes.ListCoinsResponse>;
21
- abstract listOwnedObjects<Include extends HaneulClientTypes.ObjectInclude = object>(options: HaneulClientTypes.ListOwnedObjectsOptions<Include>): Promise<HaneulClientTypes.ListOwnedObjectsResponse<Include>>;
21
+ abstract listOwnedObjects<Include extends HaneulClientTypes.ObjectInclude = {}>(options: HaneulClientTypes.ListOwnedObjectsOptions<Include>): Promise<HaneulClientTypes.ListOwnedObjectsResponse<Include>>;
22
22
  abstract getBalance(options: HaneulClientTypes.GetBalanceOptions): Promise<HaneulClientTypes.GetBalanceResponse>;
23
23
  abstract listBalances(options: HaneulClientTypes.ListBalancesOptions): Promise<HaneulClientTypes.ListBalancesResponse>;
24
24
  abstract getCoinMetadata(options: HaneulClientTypes.GetCoinMetadataOptions): Promise<HaneulClientTypes.GetCoinMetadataResponse>;
25
- abstract getTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(options: HaneulClientTypes.GetTransactionOptions<Include>): Promise<HaneulClientTypes.TransactionResult<Include>>;
26
- abstract executeTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(options: HaneulClientTypes.ExecuteTransactionOptions<Include>): Promise<HaneulClientTypes.TransactionResult<Include>>;
27
- abstract simulateTransaction<Include extends HaneulClientTypes.SimulateTransactionInclude = object>(options: HaneulClientTypes.SimulateTransactionOptions<Include>): Promise<HaneulClientTypes.SimulateTransactionResult<Include>>;
25
+ abstract getTransaction<Include extends HaneulClientTypes.TransactionInclude = {}>(options: HaneulClientTypes.GetTransactionOptions<Include>): Promise<HaneulClientTypes.TransactionResult<Include>>;
26
+ abstract executeTransaction<Include extends HaneulClientTypes.TransactionInclude = {}>(options: HaneulClientTypes.ExecuteTransactionOptions<Include>): Promise<HaneulClientTypes.TransactionResult<Include>>;
27
+ abstract simulateTransaction<Include extends HaneulClientTypes.SimulateTransactionInclude = {}>(options: HaneulClientTypes.SimulateTransactionOptions<Include>): Promise<HaneulClientTypes.SimulateTransactionResult<Include>>;
28
28
  abstract getReferenceGasPrice(options?: HaneulClientTypes.GetReferenceGasPriceOptions): Promise<HaneulClientTypes.GetReferenceGasPriceResponse>;
29
29
  abstract getCurrentSystemState(options?: HaneulClientTypes.GetCurrentSystemStateOptions): Promise<HaneulClientTypes.GetCurrentSystemStateResponse>;
30
+ abstract getProtocolConfig(options?: HaneulClientTypes.GetProtocolConfigOptions): Promise<HaneulClientTypes.GetProtocolConfigResponse>;
30
31
  abstract getChainIdentifier(options?: HaneulClientTypes.GetChainIdentifierOptions): Promise<HaneulClientTypes.GetChainIdentifierResponse>;
31
32
  abstract listDynamicFields(options: HaneulClientTypes.ListDynamicFieldsOptions): Promise<HaneulClientTypes.ListDynamicFieldsResponse>;
32
33
  abstract resolveTransactionPlugin(): TransactionPlugin;
@@ -34,8 +35,8 @@ declare abstract class CoreClient extends BaseClient implements HaneulClientType
34
35
  abstract getMoveFunction(options: HaneulClientTypes.GetMoveFunctionOptions): Promise<HaneulClientTypes.GetMoveFunctionResponse>;
35
36
  abstract defaultNameServiceName(options: HaneulClientTypes.DefaultNameServiceNameOptions): Promise<HaneulClientTypes.DefaultNameServiceNameResponse>;
36
37
  getDynamicField(options: HaneulClientTypes.GetDynamicFieldOptions): Promise<HaneulClientTypes.GetDynamicFieldResponse>;
37
- getDynamicObjectField<Include extends HaneulClientTypes.ObjectInclude = object>(options: HaneulClientTypes.GetDynamicObjectFieldOptions<Include>): Promise<HaneulClientTypes.GetDynamicObjectFieldResponse<Include>>;
38
- waitForTransaction<Include extends HaneulClientTypes.TransactionInclude = object>(options: HaneulClientTypes.WaitForTransactionOptions<Include>): Promise<HaneulClientTypes.TransactionResult<Include>>;
38
+ getDynamicObjectField<Include extends HaneulClientTypes.ObjectInclude = {}>(options: HaneulClientTypes.GetDynamicObjectFieldOptions<Include>): Promise<HaneulClientTypes.GetDynamicObjectFieldResponse<Include>>;
39
+ waitForTransaction<Include extends HaneulClientTypes.TransactionInclude = {}>(options: HaneulClientTypes.WaitForTransactionOptions<Include>): Promise<HaneulClientTypes.TransactionResult<Include>>;
39
40
  signAndExecuteTransaction<Include extends HaneulClientTypes.TransactionInclude = {}>({
40
41
  transaction,
41
42
  signer,
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.mts","names":[],"sources":["../../src/client/core.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.mts","names":[],"sources":["../../src/client/core.ts"],"mappings":";;;;;;KAYY,iBAAA,GAAoB,oBAAA;EAC/B,IAAA,EAAM,UAAA;AAAA;AAAA,UAGU,iBAAA,SAA0B,iBAAA,CAAkB,mBAAA;EAC5D,IAAA,EAAM,UAAA;EACN,GAAA,GAAM,iBAAA,CAAkB,UAAA;AAAA;AAAA,uBAQH,UAAA,SAAmB,UAAA,YAAsB,iBAAA,CAAkB,gBAAA;EAChF,IAAA;EACA,GAAA,EAAK,iBAAA,CAAkB,UAAA;cAEX,OAAA,EAAS,iBAAA;EAAA,SAWZ,UAAA,iBAA2B,iBAAA,CAAkB,aAAA,MAAA,CACrD,OAAA,EAAS,iBAAA,CAAkB,iBAAA,CAAkB,OAAA,IAC3C,OAAA,CAAQ,iBAAA,CAAkB,kBAAA,CAAmB,OAAA;EAE1C,SAAA,iBAA0B,iBAAA,CAAkB,aAAA,MAAA,CACjD,OAAA,EAAS,iBAAA,CAAkB,gBAAA,CAAiB,OAAA,IAC1C,OAAA,CAAQ,iBAAA,CAAkB,iBAAA,CAAkB,OAAA;EAAA,SAetC,SAAA,CACR,OAAA,EAAS,iBAAA,CAAkB,gBAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,iBAAA;EAAA,SAEpB,gBAAA,iBAAiC,iBAAA,CAAkB,aAAA,MAAA,CAC3D,OAAA,EAAS,iBAAA,CAAkB,uBAAA,CAAwB,OAAA,IACjD,OAAA,CAAQ,iBAAA,CAAkB,wBAAA,CAAyB,OAAA;EAAA,SAE7C,UAAA,CACR,OAAA,EAAS,iBAAA,CAAkB,iBAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,kBAAA;EAAA,SAEpB,YAAA,CACR,OAAA,EAAS,iBAAA,CAAkB,mBAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,oBAAA;EAAA,SAEpB,eAAA,CACR,OAAA,EAAS,iBAAA,CAAkB,sBAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,uBAAA;EAAA,SAEpB,cAAA,iBAA+B,iBAAA,CAAkB,kBAAA,MAAA,CACzD,OAAA,EAAS,iBAAA,CAAkB,qBAAA,CAAsB,OAAA,IAC/C,OAAA,CAAQ,iBAAA,CAAkB,iBAAA,CAAkB,OAAA;EAAA,SAEtC,kBAAA,iBAAmC,iBAAA,CAAkB,kBAAA,MAAA,CAC7D,OAAA,EAAS,iBAAA,CAAkB,yBAAA,CAA0B,OAAA,IACnD,OAAA,CAAQ,iBAAA,CAAkB,iBAAA,CAAkB,OAAA;EAAA,SAEtC,mBAAA,iBAAoC,iBAAA,CAAkB,0BAAA,MAAA,CAC9D,OAAA,EAAS,iBAAA,CAAkB,0BAAA,CAA2B,OAAA,IACpD,OAAA,CAAQ,iBAAA,CAAkB,yBAAA,CAA0B,OAAA;EAAA,SAE9C,oBAAA,CACR,OAAA,GAAU,iBAAA,CAAkB,2BAAA,GAC1B,OAAA,CAAQ,iBAAA,CAAkB,4BAAA;EAAA,SAEpB,qBAAA,CACR,OAAA,GAAU,iBAAA,CAAkB,4BAAA,GAC1B,OAAA,CAAQ,iBAAA,CAAkB,6BAAA;EAAA,SAEpB,iBAAA,CACR,OAAA,GAAU,iBAAA,CAAkB,wBAAA,GAC1B,OAAA,CAAQ,iBAAA,CAAkB,yBAAA;EAAA,SAEpB,kBAAA,CACR,OAAA,GAAU,iBAAA,CAAkB,yBAAA,GAC1B,OAAA,CAAQ,iBAAA,CAAkB,0BAAA;EAAA,SAEpB,iBAAA,CACR,OAAA,EAAS,iBAAA,CAAkB,wBAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,yBAAA;EAAA,SAEpB,wBAAA,CAAA,GAA4B,iBAAA;EAAA,SAE5B,sBAAA,CACR,OAAA,EAAS,iBAAA,CAAkB,6BAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,qBAAA;EAAA,SAEpB,eAAA,CACR,OAAA,EAAS,iBAAA,CAAkB,sBAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,uBAAA;EAAA,SAEpB,sBAAA,CACR,OAAA,EAAS,iBAAA,CAAkB,6BAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,8BAAA;EAEvB,eAAA,CACL,OAAA,EAAS,iBAAA,CAAkB,sBAAA,GACzB,OAAA,CAAQ,iBAAA,CAAkB,uBAAA;EA8DvB,qBAAA,iBAAsC,iBAAA,CAAkB,aAAA,MAAA,CAC7D,OAAA,EAAS,iBAAA,CAAkB,4BAAA,CAA6B,OAAA,IACtD,OAAA,CAAQ,iBAAA,CAAkB,6BAAA,CAA8B,OAAA;EA0BrD,kBAAA,iBAAmC,iBAAA,CAAkB,kBAAA,MAAA,CAC1D,OAAA,EAAS,iBAAA,CAAkB,yBAAA,CAA0B,OAAA,IACnD,OAAA,CAAQ,iBAAA,CAAkB,iBAAA,CAAkB,OAAA;EA4DzC,yBAAA,iBAA0C,iBAAA,CAAkB,kBAAA,MAAA,CAAA;IACjE,WAAA;IACA,MAAA;IACA,oBAAA;IAAA,GACG;EAAA,GACD,iBAAA,CAAkB,gCAAA,CAAiC,OAAA,IAAW,OAAA,CAChE,iBAAA,CAAkB,iBAAA,CAAkB,OAAA;AAAA"}
@@ -1,6 +1,6 @@
1
1
  import { HANEUL_ADDRESS_LENGTH, normalizeStructTag, parseStructTag } from "../utils/haneul-types.mjs";
2
2
  import { TypeTagSerializer } from "../bcs/type-tag-serializer.mjs";
3
- import { bcs as suiBcs } from "../bcs/index.mjs";
3
+ import { bcs as haneulBcs } from "../bcs/index.mjs";
4
4
  import { BaseClient } from "./client.mjs";
5
5
  import { deriveDynamicFieldID } from "../utils/dynamic-fields.mjs";
6
6
  import { MvrClient } from "./mvr.mjs";
@@ -45,20 +45,26 @@ var CoreClient = class extends BaseClient {
45
45
  if (fieldObject instanceof Error) throw fieldObject;
46
46
  const fieldType = parseStructTag(fieldObject.type);
47
47
  const content = await fieldObject.content;
48
+ const nameTypeParam = fieldType.typeParams[0];
49
+ const isDynamicObject = typeof nameTypeParam !== "string" && nameTypeParam.module === "dynamic_object_field" && nameTypeParam.name === "Wrapper";
50
+ const valueBcs = content.slice(HANEUL_ADDRESS_LENGTH + options.name.bcs.length);
51
+ const valueType = typeof fieldType.typeParams[1] === "string" ? fieldType.typeParams[1] : normalizeStructTag(fieldType.typeParams[1]);
48
52
  return { dynamicField: {
53
+ $kind: isDynamicObject ? "DynamicObject" : "DynamicField",
49
54
  fieldId: fieldObject.objectId,
50
55
  digest: fieldObject.digest,
51
56
  version: fieldObject.version,
52
57
  type: fieldObject.type,
53
58
  previousTransaction: fieldObject.previousTransaction,
54
59
  name: {
55
- type: typeof fieldType.typeParams[0] === "string" ? fieldType.typeParams[0] : normalizeStructTag(fieldType.typeParams[0]),
60
+ type: typeof nameTypeParam === "string" ? nameTypeParam : normalizeStructTag(nameTypeParam),
56
61
  bcs: options.name.bcs
57
62
  },
58
63
  value: {
59
- type: typeof fieldType.typeParams[1] === "string" ? fieldType.typeParams[1] : normalizeStructTag(fieldType.typeParams[1]),
60
- bcs: content.slice(HANEUL_ADDRESS_LENGTH + options.name.bcs.length)
61
- }
64
+ type: valueType,
65
+ bcs: valueBcs
66
+ },
67
+ childId: isDynamicObject ? haneulBcs.Address.parse(valueBcs) : void 0
62
68
  } };
63
69
  }
64
70
  async getDynamicObjectField(options) {
@@ -72,21 +78,36 @@ var CoreClient = class extends BaseClient {
72
78
  signal: options.signal
73
79
  });
74
80
  const { object } = await this.getObject({
75
- objectId: suiBcs.Address.parse(dynamicField.value.bcs),
81
+ objectId: dynamicField.childId,
76
82
  signal: options.signal,
77
83
  include: options.include
78
84
  });
79
85
  return { object };
80
86
  }
81
87
  async waitForTransaction(options) {
82
- const { signal, timeout = 60 * 1e3, include } = options;
88
+ const { signal, timeout = 60 * 1e3, pollSchedule, include } = options;
83
89
  const digest = "result" in options && options.result ? (options.result.Transaction ?? options.result.FailedTransaction).digest : options.digest;
84
90
  const abortSignal = signal ? AbortSignal.any([AbortSignal.timeout(timeout), signal]) : AbortSignal.timeout(timeout);
85
91
  const abortPromise = new Promise((_, reject) => {
86
92
  abortSignal.addEventListener("abort", () => reject(abortSignal.reason));
87
93
  });
88
94
  abortPromise.catch(() => {});
95
+ const schedule = pollSchedule ?? [
96
+ 0,
97
+ 300,
98
+ 600,
99
+ 1500,
100
+ 3500
101
+ ];
102
+ const t0 = Date.now();
103
+ let scheduleIndex = 0;
104
+ const lastInterval = schedule.length > 0 ? schedule[schedule.length - 1] - (schedule[schedule.length - 2] ?? 0) : 2e3;
89
105
  while (true) {
106
+ if (scheduleIndex < schedule.length) {
107
+ const remaining = t0 + schedule[scheduleIndex] - Date.now();
108
+ scheduleIndex++;
109
+ if (remaining > 0) await Promise.race([new Promise((resolve) => setTimeout(resolve, remaining)), abortPromise]);
110
+ } else await Promise.race([new Promise((resolve) => setTimeout(resolve, lastInterval)), abortPromise]);
90
111
  abortSignal.throwIfAborted();
91
112
  try {
92
113
  return await this.getTransaction({
@@ -94,9 +115,7 @@ var CoreClient = class extends BaseClient {
94
115
  include,
95
116
  signal: abortSignal
96
117
  });
97
- } catch {
98
- await Promise.race([new Promise((resolve) => setTimeout(resolve, 2e3)), abortPromise]);
99
- }
118
+ } catch {}
100
119
  }
101
120
  }
102
121
  async signAndExecuteTransaction({ transaction, signer, additionalSignatures = [], ...input }) {