wowok 2.1.39 → 2.1.41

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 (1019) hide show
  1. package/dist/cjs/bcs/bcs.d.ts +0 -8
  2. package/dist/cjs/bcs/bcs.js +1 -278
  3. package/dist/cjs/bcs/effects.js +1 -203
  4. package/dist/cjs/bcs/index.js +1 -55
  5. package/dist/cjs/bcs/pure.js +1 -39
  6. package/dist/cjs/bcs/type-tag-serializer.js +1 -107
  7. package/dist/cjs/bcs/types.d.ts +0 -49
  8. package/dist/cjs/bcs/types.js +1 -6
  9. package/dist/cjs/client/index.js +1 -7
  10. package/dist/cjs/client/network.js +1 -24
  11. package/dist/cjs/cryptography/index.js +1 -9
  12. package/dist/cjs/cryptography/intent.d.ts +0 -3
  13. package/dist/cjs/cryptography/intent.js +1 -20
  14. package/dist/cjs/cryptography/keypair.d.ts +4 -38
  15. package/dist/cjs/cryptography/keypair.js +1 -104
  16. package/dist/cjs/cryptography/mnemonics.d.ts +0 -23
  17. package/dist/cjs/cryptography/mnemonics.js +1 -46
  18. package/dist/cjs/cryptography/publickey.d.ts +0 -42
  19. package/dist/cjs/cryptography/publickey.js +1 -114
  20. package/dist/cjs/cryptography/signature-scheme.js +1 -25
  21. package/dist/cjs/cryptography/signature.d.ts +0 -11
  22. package/dist/cjs/cryptography/signature.js +1 -50
  23. package/dist/cjs/experimental/cache.js +1 -61
  24. package/dist/cjs/experimental/client.js +1 -23
  25. package/dist/cjs/experimental/core.d.ts +0 -2
  26. package/dist/cjs/experimental/core.js +1 -85
  27. package/dist/cjs/experimental/errors.js +1 -27
  28. package/dist/cjs/experimental/index.js +1 -8
  29. package/dist/cjs/experimental/persistent-storage.d.ts +0 -98
  30. package/dist/cjs/experimental/persistent-storage.js +1 -337
  31. package/dist/cjs/experimental/persistent-storage.test.d.ts +0 -4
  32. package/dist/cjs/experimental/persistent-storage.test.js +1 -198
  33. package/dist/cjs/experimental/transports/utils.js +1 -100
  34. package/dist/cjs/experimental/types.d.ts +0 -6
  35. package/dist/cjs/experimental/types.js +1 -5
  36. package/dist/cjs/faucet/faucet.d.ts +0 -9
  37. package/dist/cjs/faucet/faucet.js +1 -111
  38. package/dist/cjs/faucet/index.js +1 -4
  39. package/dist/cjs/grpc/client.js +1 -45
  40. package/dist/cjs/grpc/core.js +1 -603
  41. package/dist/cjs/grpc/index.js +1 -5
  42. package/dist/cjs/grpc/proto/google/protobuf/any.d.ts +0 -151
  43. package/dist/cjs/grpc/proto/google/protobuf/any.js +1 -168
  44. package/dist/cjs/grpc/proto/google/protobuf/duration.d.ts +0 -89
  45. package/dist/cjs/grpc/proto/google/protobuf/duration.js +1 -106
  46. package/dist/cjs/grpc/proto/google/protobuf/empty.d.ts +0 -17
  47. package/dist/cjs/grpc/proto/google/protobuf/empty.js +1 -49
  48. package/dist/cjs/grpc/proto/google/protobuf/field_mask.d.ts +0 -217
  49. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +1 -95
  50. package/dist/cjs/grpc/proto/google/protobuf/struct.d.ts +0 -112
  51. package/dist/cjs/grpc/proto/google/protobuf/struct.js +1 -272
  52. package/dist/cjs/grpc/proto/google/protobuf/timestamp.d.ts +0 -127
  53. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +1 -150
  54. package/dist/cjs/grpc/proto/google/rpc/error_details.d.ts +0 -407
  55. package/dist/cjs/grpc/proto/google/rpc/error_details.js +1 -343
  56. package/dist/cjs/grpc/proto/google/rpc/status.d.ts +0 -34
  57. package/dist/cjs/grpc/proto/google/rpc/status.js +1 -49
  58. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.d.ts +0 -48
  59. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +1 -83
  60. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.d.ts +0 -23
  61. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +1 -44
  62. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.d.ts +0 -20
  63. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +1 -37
  64. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.d.ts +0 -48
  65. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +1 -69
  66. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.d.ts +0 -51
  67. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +1 -79
  68. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.d.ts +0 -149
  69. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +1 -184
  70. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.d.ts +0 -257
  71. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +1 -370
  72. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.d.ts +0 -41
  73. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +1 -79
  74. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.d.ts +0 -12
  75. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +1 -29
  76. package/dist/cjs/grpc/proto/sui/rpc/v2/event.d.ts +0 -63
  77. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +1 -81
  78. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.d.ts +0 -56
  79. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +1 -79
  80. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.d.ts +0 -623
  81. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +1 -886
  82. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.d.ts +0 -29
  83. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +1 -55
  84. package/dist/cjs/grpc/proto/sui/rpc/v2/input.d.ts +0 -75
  85. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +1 -102
  86. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.d.ts +0 -50
  87. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +1 -76
  88. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts +0 -52
  89. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +1 -68
  90. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.d.ts +0 -260
  91. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +1 -407
  92. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.d.ts +0 -429
  93. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +1 -608
  94. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.d.ts +0 -30
  95. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +1 -45
  96. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.d.ts +0 -151
  97. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +1 -256
  98. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.d.ts +0 -18
  99. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +1 -31
  100. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.d.ts +0 -97
  101. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +1 -143
  102. package/dist/cjs/grpc/proto/sui/rpc/v2/object.d.ts +0 -95
  103. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +1 -109
  104. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.d.ts +0 -23
  105. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +1 -45
  106. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.d.ts +0 -42
  107. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +1 -75
  108. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.d.ts +0 -15
  109. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +1 -45
  110. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.d.ts +0 -447
  111. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +1 -584
  112. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.d.ts +0 -31
  113. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +1 -52
  114. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.ts +0 -16
  115. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +1 -26
  116. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.d.ts +0 -54
  117. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +1 -84
  118. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.d.ts +0 -36
  119. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +1 -52
  120. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.d.ts +0 -518
  121. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +1 -659
  122. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.d.ts +0 -36
  123. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +1 -36
  124. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.d.ts +0 -36
  125. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +1 -59
  126. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.d.ts +0 -538
  127. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +1 -756
  128. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.d.ts +0 -945
  129. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1 -1245
  130. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.ts +0 -18
  131. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +1 -31
  132. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.d.ts +0 -118
  133. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +1 -193
  134. package/dist/cjs/index.js +1 -33
  135. package/dist/cjs/jsonRpc/client.d.ts +0 -140
  136. package/dist/cjs/jsonRpc/client.js +1 -653
  137. package/dist/cjs/jsonRpc/core.js +1 -590
  138. package/dist/cjs/jsonRpc/errors.js +1 -41
  139. package/dist/cjs/jsonRpc/http-transport.d.ts +0 -3
  140. package/dist/cjs/jsonRpc/http-transport.js +1 -73
  141. package/dist/cjs/jsonRpc/index.js +1 -6
  142. package/dist/cjs/jsonRpc/json-rpc-resolver.js +1 -314
  143. package/dist/cjs/jsonRpc/rpc-websocket-client.d.ts +0 -15
  144. package/dist/cjs/jsonRpc/rpc-websocket-client.js +1 -159
  145. package/dist/cjs/jsonRpc/types/chain.js +1 -4
  146. package/dist/cjs/jsonRpc/types/changes.js +1 -4
  147. package/dist/cjs/jsonRpc/types/coins.js +1 -4
  148. package/dist/cjs/jsonRpc/types/common.js +1 -4
  149. package/dist/cjs/jsonRpc/types/generated.d.ts +56 -542
  150. package/dist/cjs/jsonRpc/types/generated.js +1 -4
  151. package/dist/cjs/jsonRpc/types/index.js +1 -4
  152. package/dist/cjs/jsonRpc/types/params.d.ts +0 -336
  153. package/dist/cjs/jsonRpc/types/params.js +1 -4
  154. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +1 -63
  155. package/dist/cjs/keypairs/ed25519/index.js +1 -5
  156. package/dist/cjs/keypairs/ed25519/keypair.d.ts +0 -52
  157. package/dist/cjs/keypairs/ed25519/keypair.js +1 -140
  158. package/dist/cjs/keypairs/ed25519/publickey.d.ts +0 -19
  159. package/dist/cjs/keypairs/ed25519/publickey.js +1 -72
  160. package/dist/cjs/keypairs/index.js +1 -7
  161. package/dist/cjs/keypairs/passkey/index.js +1 -5
  162. package/dist/cjs/keypairs/passkey/keypair.d.ts +0 -80
  163. package/dist/cjs/keypairs/passkey/keypair.js +1 -251
  164. package/dist/cjs/keypairs/passkey/publickey.d.ts +0 -47
  165. package/dist/cjs/keypairs/passkey/publickey.js +1 -170
  166. package/dist/cjs/keypairs/passkey/types.d.ts +0 -6
  167. package/dist/cjs/keypairs/passkey/types.js +1 -4
  168. package/dist/cjs/keypairs/secp256k1/index.js +1 -5
  169. package/dist/cjs/keypairs/secp256k1/keypair.d.ts +0 -51
  170. package/dist/cjs/keypairs/secp256k1/keypair.js +1 -133
  171. package/dist/cjs/keypairs/secp256k1/publickey.d.ts +0 -19
  172. package/dist/cjs/keypairs/secp256k1/publickey.js +1 -73
  173. package/dist/cjs/keypairs/secp256r1/index.js +1 -5
  174. package/dist/cjs/keypairs/secp256r1/keypair.d.ts +0 -51
  175. package/dist/cjs/keypairs/secp256r1/keypair.js +1 -130
  176. package/dist/cjs/keypairs/secp256r1/publickey.d.ts +0 -19
  177. package/dist/cjs/keypairs/secp256r1/publickey.js +1 -74
  178. package/dist/cjs/multisig/index.js +1 -5
  179. package/dist/cjs/multisig/publickey.d.ts +1 -36
  180. package/dist/cjs/multisig/publickey.js +1 -243
  181. package/dist/cjs/multisig/signer.d.ts +0 -1
  182. package/dist/cjs/multisig/signer.js +1 -62
  183. package/dist/cjs/transactions/Arguments.js +1 -12
  184. package/dist/cjs/transactions/Commands.d.ts +0 -3
  185. package/dist/cjs/transactions/Commands.js +1 -110
  186. package/dist/cjs/transactions/Inputs.js +1 -55
  187. package/dist/cjs/transactions/ObjectCache.js +1 -208
  188. package/dist/cjs/transactions/Transaction.d.ts +0 -56
  189. package/dist/cjs/transactions/Transaction.js +1 -646
  190. package/dist/cjs/transactions/TransactionData.d.ts +0 -6
  191. package/dist/cjs/transactions/TransactionData.js +1 -424
  192. package/dist/cjs/transactions/__tests__/Transaction.test.js +1 -167
  193. package/dist/cjs/transactions/__tests__/bcs.test.js +1 -200
  194. package/dist/cjs/transactions/data/internal.js +1 -185
  195. package/dist/cjs/transactions/data/v1.js +1 -474
  196. package/dist/cjs/transactions/data/v2.js +1 -108
  197. package/dist/cjs/transactions/executor/caching.d.ts +0 -4
  198. package/dist/cjs/transactions/executor/caching.js +1 -72
  199. package/dist/cjs/transactions/executor/parallel.d.ts +0 -11
  200. package/dist/cjs/transactions/executor/parallel.js +1 -352
  201. package/dist/cjs/transactions/executor/queue.js +1 -62
  202. package/dist/cjs/transactions/executor/serial.d.ts +0 -1
  203. package/dist/cjs/transactions/executor/serial.js +1 -102
  204. package/dist/cjs/transactions/hash.d.ts +0 -6
  205. package/dist/cjs/transactions/hash.js +1 -17
  206. package/dist/cjs/transactions/index.d.ts +0 -1
  207. package/dist/cjs/transactions/index.js +1 -15
  208. package/dist/cjs/transactions/intents/CoinWithBalance.js +1 -148
  209. package/dist/cjs/transactions/object.js +1 -90
  210. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.d.ts +0 -18
  211. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +1 -20
  212. package/dist/cjs/transactions/pure.js +1 -39
  213. package/dist/cjs/transactions/resolve.js +1 -72
  214. package/dist/cjs/transactions/serializer.js +1 -170
  215. package/dist/cjs/transactions/utils.js +1 -124
  216. package/dist/cjs/utils/constants.js +1 -27
  217. package/dist/cjs/utils/derived-objects.d.ts +0 -3
  218. package/dist/cjs/utils/derived-objects.js +1 -14
  219. package/dist/cjs/utils/dynamic-fields.js +1 -20
  220. package/dist/cjs/utils/format.js +1 -15
  221. package/dist/cjs/utils/index.js +1 -15
  222. package/dist/cjs/utils/move-registry.d.ts +0 -4
  223. package/dist/cjs/utils/move-registry.js +1 -41
  224. package/dist/cjs/utils/sui-types.d.ts +0 -12
  225. package/dist/cjs/utils/sui-types.js +1 -86
  226. package/dist/cjs/utils/suins.js +1 -36
  227. package/dist/cjs/verify/index.js +1 -5
  228. package/dist/cjs/verify/verify.js +1 -91
  229. package/dist/cjs/version.js +1 -6
  230. package/dist/cjs/w/call/allocation.js +1 -369
  231. package/dist/cjs/w/call/arb.js +1 -109
  232. package/dist/cjs/w/call/arbitration.js +1 -1223
  233. package/dist/cjs/w/call/base.js +1 -324
  234. package/dist/cjs/w/call/contact.js +1 -350
  235. package/dist/cjs/w/call/demand.js +1 -702
  236. package/dist/cjs/w/call/entity.js +1 -180
  237. package/dist/cjs/w/call/guard-ins.d.ts +0 -3
  238. package/dist/cjs/w/call/guard-ins.js +1 -4387
  239. package/dist/cjs/w/call/guard.d.ts +111 -27
  240. package/dist/cjs/w/call/guard.js +1 -1154
  241. package/dist/cjs/w/call/index.js +1 -27
  242. package/dist/cjs/w/call/machine.js +1 -1146
  243. package/dist/cjs/w/call/order.js +1 -348
  244. package/dist/cjs/w/call/passport.js +1 -234
  245. package/dist/cjs/w/call/payment.js +1 -192
  246. package/dist/cjs/w/call/permission.d.ts +0 -20
  247. package/dist/cjs/w/call/permission.js +1 -1227
  248. package/dist/cjs/w/call/personal.js +1 -142
  249. package/dist/cjs/w/call/progress.js +1 -691
  250. package/dist/cjs/w/call/proof.js +1 -69
  251. package/dist/cjs/w/call/repository.js +1 -1097
  252. package/dist/cjs/w/call/resource.js +1 -119
  253. package/dist/cjs/w/call/reward.js +1 -688
  254. package/dist/cjs/w/call/service.js +1 -1991
  255. package/dist/cjs/w/call/treasury.js +1 -877
  256. package/dist/cjs/w/call/util.d.ts +1 -0
  257. package/dist/cjs/w/call/util.js +1 -624
  258. package/dist/cjs/w/common.d.ts +48 -68
  259. package/dist/cjs/w/common.js +1 -604
  260. package/dist/cjs/w/exception.d.ts +1 -0
  261. package/dist/cjs/w/exception.js +1 -582
  262. package/dist/cjs/w/index.js +1 -12
  263. package/dist/cjs/w/local/account.d.ts +0 -45
  264. package/dist/cjs/w/local/account.js +1 -746
  265. package/dist/cjs/w/local/cache.js +1 -191
  266. package/dist/cjs/w/local/config.d.ts +0 -3
  267. package/dist/cjs/w/local/config.js +1 -50
  268. package/dist/cjs/w/local/index.js +1 -233
  269. package/dist/cjs/w/local/local.js +1 -664
  270. package/dist/cjs/w/local/storage.d.ts +0 -20
  271. package/dist/cjs/w/local/storage.js +1 -222
  272. package/dist/cjs/w/local/token.d.ts +1 -4
  273. package/dist/cjs/w/local/token.js +1 -161
  274. package/dist/cjs/w/local/util.d.ts +0 -4
  275. package/dist/cjs/w/local/util.js +1 -50
  276. package/dist/cjs/w/local/wip.d.ts +0 -92
  277. package/dist/cjs/w/local/wip.js +1 -1202
  278. package/dist/cjs/w/messenger/crypto.d.ts +0 -186
  279. package/dist/cjs/w/messenger/crypto.js +1 -574
  280. package/dist/cjs/w/messenger/index.d.ts +0 -18
  281. package/dist/cjs/w/messenger/index.js +1 -28
  282. package/dist/cjs/w/messenger/messenger-api.d.ts +0 -177
  283. package/dist/cjs/w/messenger/messenger-api.js +1 -1503
  284. package/dist/cjs/w/messenger/messenger-manager.d.ts +0 -24
  285. package/dist/cjs/w/messenger/messenger-manager.js +1 -1065
  286. package/dist/cjs/w/messenger/messenger.d.ts +0 -206
  287. package/dist/cjs/w/messenger/messenger.js +1 -1439
  288. package/dist/cjs/w/messenger/server.d.ts +0 -94
  289. package/dist/cjs/w/messenger/server.js +1 -460
  290. package/dist/cjs/w/messenger/session.d.ts +0 -76
  291. package/dist/cjs/w/messenger/session.js +1 -768
  292. package/dist/cjs/w/messenger/storage.d.ts +0 -143
  293. package/dist/cjs/w/messenger/storage.js +1 -1256
  294. package/dist/cjs/w/messenger/templates/wts-html-template.d.ts +0 -31
  295. package/dist/cjs/w/messenger/templates/wts-html-template.js +1 -414
  296. package/dist/cjs/w/messenger/types.d.ts +7 -218
  297. package/dist/cjs/w/messenger/types.js +1 -98
  298. package/dist/cjs/w/messenger/utils.d.ts +0 -14
  299. package/dist/cjs/w/messenger/utils.js +1 -29
  300. package/dist/cjs/w/query/bult-in.d.ts +0 -11
  301. package/dist/cjs/w/query/bult-in.js +1 -107
  302. package/dist/cjs/w/query/event.d.ts +0 -7
  303. package/dist/cjs/w/query/event.js +1 -140
  304. package/dist/cjs/w/query/index.js +1 -8
  305. package/dist/cjs/w/query/object.d.ts +7 -51
  306. package/dist/cjs/w/query/object.js +1 -1636
  307. package/dist/cjs/w/query/received.d.ts +0 -6
  308. package/dist/cjs/w/query/received.js +1 -67
  309. package/dist/cjs/w/query/util.d.ts +1 -2
  310. package/dist/cjs/w/query/util.js +1 -54
  311. package/dist/cjs/w/util.d.ts +2 -5
  312. package/dist/cjs/w/util.js +1 -616
  313. package/dist/esm/bcs/bcs.d.ts +0 -8
  314. package/dist/esm/bcs/bcs.js +1 -278
  315. package/dist/esm/bcs/effects.js +1 -203
  316. package/dist/esm/bcs/index.js +1 -55
  317. package/dist/esm/bcs/pure.js +1 -39
  318. package/dist/esm/bcs/type-tag-serializer.js +1 -107
  319. package/dist/esm/bcs/types.d.ts +0 -49
  320. package/dist/esm/bcs/types.js +1 -6
  321. package/dist/esm/client/index.js +1 -7
  322. package/dist/esm/client/network.js +1 -24
  323. package/dist/esm/cryptography/index.js +1 -9
  324. package/dist/esm/cryptography/intent.d.ts +0 -3
  325. package/dist/esm/cryptography/intent.js +1 -20
  326. package/dist/esm/cryptography/keypair.d.ts +4 -38
  327. package/dist/esm/cryptography/keypair.js +1 -104
  328. package/dist/esm/cryptography/mnemonics.d.ts +0 -23
  329. package/dist/esm/cryptography/mnemonics.js +1 -46
  330. package/dist/esm/cryptography/publickey.d.ts +0 -42
  331. package/dist/esm/cryptography/publickey.js +1 -114
  332. package/dist/esm/cryptography/signature-scheme.js +1 -25
  333. package/dist/esm/cryptography/signature.d.ts +0 -11
  334. package/dist/esm/cryptography/signature.js +1 -50
  335. package/dist/esm/experimental/cache.js +1 -61
  336. package/dist/esm/experimental/client.js +1 -23
  337. package/dist/esm/experimental/core.d.ts +0 -2
  338. package/dist/esm/experimental/core.js +1 -85
  339. package/dist/esm/experimental/errors.js +1 -27
  340. package/dist/esm/experimental/index.js +1 -8
  341. package/dist/esm/experimental/persistent-storage.d.ts +0 -98
  342. package/dist/esm/experimental/persistent-storage.js +1 -337
  343. package/dist/esm/experimental/persistent-storage.test.d.ts +0 -4
  344. package/dist/esm/experimental/persistent-storage.test.js +1 -198
  345. package/dist/esm/experimental/transports/utils.js +1 -100
  346. package/dist/esm/experimental/types.d.ts +0 -6
  347. package/dist/esm/experimental/types.js +1 -5
  348. package/dist/esm/faucet/faucet.d.ts +0 -9
  349. package/dist/esm/faucet/faucet.js +1 -111
  350. package/dist/esm/faucet/index.js +1 -4
  351. package/dist/esm/grpc/client.js +1 -45
  352. package/dist/esm/grpc/core.js +1 -603
  353. package/dist/esm/grpc/index.js +1 -5
  354. package/dist/esm/grpc/proto/google/protobuf/any.d.ts +0 -151
  355. package/dist/esm/grpc/proto/google/protobuf/any.js +1 -168
  356. package/dist/esm/grpc/proto/google/protobuf/duration.d.ts +0 -89
  357. package/dist/esm/grpc/proto/google/protobuf/duration.js +1 -106
  358. package/dist/esm/grpc/proto/google/protobuf/empty.d.ts +0 -17
  359. package/dist/esm/grpc/proto/google/protobuf/empty.js +1 -49
  360. package/dist/esm/grpc/proto/google/protobuf/field_mask.d.ts +0 -217
  361. package/dist/esm/grpc/proto/google/protobuf/field_mask.js +1 -95
  362. package/dist/esm/grpc/proto/google/protobuf/struct.d.ts +0 -112
  363. package/dist/esm/grpc/proto/google/protobuf/struct.js +1 -272
  364. package/dist/esm/grpc/proto/google/protobuf/timestamp.d.ts +0 -127
  365. package/dist/esm/grpc/proto/google/protobuf/timestamp.js +1 -150
  366. package/dist/esm/grpc/proto/google/rpc/error_details.d.ts +0 -407
  367. package/dist/esm/grpc/proto/google/rpc/error_details.js +1 -343
  368. package/dist/esm/grpc/proto/google/rpc/status.d.ts +0 -34
  369. package/dist/esm/grpc/proto/google/rpc/status.js +1 -49
  370. package/dist/esm/grpc/proto/sui/rpc/v2/argument.d.ts +0 -48
  371. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js +1 -83
  372. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.d.ts +0 -23
  373. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js +1 -44
  374. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.d.ts +0 -20
  375. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js +1 -37
  376. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.d.ts +0 -48
  377. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +1 -69
  378. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.d.ts +0 -51
  379. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +1 -79
  380. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.d.ts +0 -149
  381. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +1 -184
  382. package/dist/esm/grpc/proto/sui/rpc/v2/effects.d.ts +0 -257
  383. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +1 -370
  384. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.d.ts +0 -41
  385. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js +1 -79
  386. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.d.ts +0 -12
  387. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js +1 -29
  388. package/dist/esm/grpc/proto/sui/rpc/v2/event.d.ts +0 -63
  389. package/dist/esm/grpc/proto/sui/rpc/v2/event.js +1 -81
  390. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.d.ts +0 -56
  391. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +1 -79
  392. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.d.ts +0 -623
  393. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +1 -886
  394. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.d.ts +0 -29
  395. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js +1 -55
  396. package/dist/esm/grpc/proto/sui/rpc/v2/input.d.ts +0 -75
  397. package/dist/esm/grpc/proto/sui/rpc/v2/input.js +1 -102
  398. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.d.ts +0 -50
  399. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +1 -76
  400. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts +0 -52
  401. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js +1 -68
  402. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.d.ts +0 -260
  403. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +1 -407
  404. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.d.ts +0 -429
  405. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +1 -608
  406. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.d.ts +0 -30
  407. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js +1 -45
  408. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.d.ts +0 -151
  409. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +1 -256
  410. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.d.ts +0 -18
  411. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +1 -31
  412. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.d.ts +0 -97
  413. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +1 -143
  414. package/dist/esm/grpc/proto/sui/rpc/v2/object.d.ts +0 -95
  415. package/dist/esm/grpc/proto/sui/rpc/v2/object.js +1 -109
  416. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.d.ts +0 -23
  417. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js +1 -45
  418. package/dist/esm/grpc/proto/sui/rpc/v2/owner.d.ts +0 -42
  419. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js +1 -75
  420. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.d.ts +0 -15
  421. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js +1 -45
  422. package/dist/esm/grpc/proto/sui/rpc/v2/signature.d.ts +0 -447
  423. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +1 -584
  424. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.d.ts +0 -31
  425. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +1 -52
  426. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.ts +0 -16
  427. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +1 -26
  428. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.d.ts +0 -54
  429. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +1 -84
  430. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.d.ts +0 -36
  431. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js +1 -52
  432. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.d.ts +0 -518
  433. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +1 -659
  434. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.d.ts +0 -36
  435. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js +1 -36
  436. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.d.ts +0 -36
  437. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js +1 -59
  438. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.d.ts +0 -538
  439. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +1 -756
  440. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.d.ts +0 -945
  441. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +1 -1245
  442. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.ts +0 -18
  443. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +1 -31
  444. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.d.ts +0 -118
  445. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +1 -193
  446. package/dist/esm/index.js +1 -33
  447. package/dist/esm/jsonRpc/client.d.ts +0 -140
  448. package/dist/esm/jsonRpc/client.js +1 -653
  449. package/dist/esm/jsonRpc/core.js +1 -590
  450. package/dist/esm/jsonRpc/errors.js +1 -41
  451. package/dist/esm/jsonRpc/http-transport.d.ts +0 -3
  452. package/dist/esm/jsonRpc/http-transport.js +1 -73
  453. package/dist/esm/jsonRpc/index.js +1 -6
  454. package/dist/esm/jsonRpc/json-rpc-resolver.js +1 -314
  455. package/dist/esm/jsonRpc/rpc-websocket-client.d.ts +0 -15
  456. package/dist/esm/jsonRpc/rpc-websocket-client.js +1 -159
  457. package/dist/esm/jsonRpc/types/chain.js +1 -4
  458. package/dist/esm/jsonRpc/types/changes.js +1 -4
  459. package/dist/esm/jsonRpc/types/coins.js +1 -4
  460. package/dist/esm/jsonRpc/types/common.js +1 -4
  461. package/dist/esm/jsonRpc/types/generated.d.ts +56 -542
  462. package/dist/esm/jsonRpc/types/generated.js +1 -4
  463. package/dist/esm/jsonRpc/types/index.js +1 -4
  464. package/dist/esm/jsonRpc/types/params.d.ts +0 -336
  465. package/dist/esm/jsonRpc/types/params.js +1 -4
  466. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +1 -63
  467. package/dist/esm/keypairs/ed25519/index.js +1 -5
  468. package/dist/esm/keypairs/ed25519/keypair.d.ts +0 -52
  469. package/dist/esm/keypairs/ed25519/keypair.js +1 -140
  470. package/dist/esm/keypairs/ed25519/publickey.d.ts +0 -19
  471. package/dist/esm/keypairs/ed25519/publickey.js +1 -72
  472. package/dist/esm/keypairs/index.js +1 -7
  473. package/dist/esm/keypairs/passkey/index.js +1 -5
  474. package/dist/esm/keypairs/passkey/keypair.d.ts +0 -80
  475. package/dist/esm/keypairs/passkey/keypair.js +1 -251
  476. package/dist/esm/keypairs/passkey/publickey.d.ts +0 -47
  477. package/dist/esm/keypairs/passkey/publickey.js +1 -170
  478. package/dist/esm/keypairs/passkey/types.d.ts +0 -6
  479. package/dist/esm/keypairs/passkey/types.js +1 -4
  480. package/dist/esm/keypairs/secp256k1/index.js +1 -5
  481. package/dist/esm/keypairs/secp256k1/keypair.d.ts +0 -51
  482. package/dist/esm/keypairs/secp256k1/keypair.js +1 -133
  483. package/dist/esm/keypairs/secp256k1/publickey.d.ts +0 -19
  484. package/dist/esm/keypairs/secp256k1/publickey.js +1 -73
  485. package/dist/esm/keypairs/secp256r1/index.js +1 -5
  486. package/dist/esm/keypairs/secp256r1/keypair.d.ts +0 -51
  487. package/dist/esm/keypairs/secp256r1/keypair.js +1 -130
  488. package/dist/esm/keypairs/secp256r1/publickey.d.ts +0 -19
  489. package/dist/esm/keypairs/secp256r1/publickey.js +1 -74
  490. package/dist/esm/multisig/index.js +1 -5
  491. package/dist/esm/multisig/publickey.d.ts +1 -36
  492. package/dist/esm/multisig/publickey.js +1 -243
  493. package/dist/esm/multisig/signer.d.ts +0 -1
  494. package/dist/esm/multisig/signer.js +1 -62
  495. package/dist/esm/transactions/Arguments.js +1 -12
  496. package/dist/esm/transactions/Commands.d.ts +0 -3
  497. package/dist/esm/transactions/Commands.js +1 -110
  498. package/dist/esm/transactions/Inputs.js +1 -55
  499. package/dist/esm/transactions/ObjectCache.js +1 -208
  500. package/dist/esm/transactions/Transaction.d.ts +0 -56
  501. package/dist/esm/transactions/Transaction.js +1 -646
  502. package/dist/esm/transactions/TransactionData.d.ts +0 -6
  503. package/dist/esm/transactions/TransactionData.js +1 -424
  504. package/dist/esm/transactions/__tests__/Transaction.test.js +1 -167
  505. package/dist/esm/transactions/__tests__/bcs.test.js +1 -200
  506. package/dist/esm/transactions/data/internal.js +1 -185
  507. package/dist/esm/transactions/data/v1.js +1 -474
  508. package/dist/esm/transactions/data/v2.js +1 -108
  509. package/dist/esm/transactions/executor/caching.d.ts +0 -4
  510. package/dist/esm/transactions/executor/caching.js +1 -72
  511. package/dist/esm/transactions/executor/parallel.d.ts +0 -11
  512. package/dist/esm/transactions/executor/parallel.js +1 -352
  513. package/dist/esm/transactions/executor/queue.js +1 -62
  514. package/dist/esm/transactions/executor/serial.d.ts +0 -1
  515. package/dist/esm/transactions/executor/serial.js +1 -102
  516. package/dist/esm/transactions/hash.d.ts +0 -6
  517. package/dist/esm/transactions/hash.js +1 -17
  518. package/dist/esm/transactions/index.d.ts +0 -1
  519. package/dist/esm/transactions/index.js +1 -15
  520. package/dist/esm/transactions/intents/CoinWithBalance.js +1 -148
  521. package/dist/esm/transactions/object.js +1 -90
  522. package/dist/esm/transactions/plugins/NamedPackagesPlugin.d.ts +0 -18
  523. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js +1 -20
  524. package/dist/esm/transactions/pure.js +1 -39
  525. package/dist/esm/transactions/resolve.js +1 -72
  526. package/dist/esm/transactions/serializer.js +1 -170
  527. package/dist/esm/transactions/utils.js +1 -124
  528. package/dist/esm/utils/constants.js +1 -27
  529. package/dist/esm/utils/derived-objects.d.ts +0 -3
  530. package/dist/esm/utils/derived-objects.js +1 -14
  531. package/dist/esm/utils/dynamic-fields.js +1 -20
  532. package/dist/esm/utils/format.js +1 -15
  533. package/dist/esm/utils/index.js +1 -15
  534. package/dist/esm/utils/move-registry.d.ts +0 -4
  535. package/dist/esm/utils/move-registry.js +1 -41
  536. package/dist/esm/utils/sui-types.d.ts +0 -12
  537. package/dist/esm/utils/sui-types.js +1 -86
  538. package/dist/esm/utils/suins.js +1 -36
  539. package/dist/esm/verify/index.js +1 -5
  540. package/dist/esm/verify/verify.js +1 -91
  541. package/dist/esm/version.js +1 -6
  542. package/dist/esm/w/call/allocation.js +1 -369
  543. package/dist/esm/w/call/arb.js +1 -109
  544. package/dist/esm/w/call/arbitration.js +1 -1223
  545. package/dist/esm/w/call/base.js +1 -324
  546. package/dist/esm/w/call/contact.js +1 -350
  547. package/dist/esm/w/call/demand.js +1 -702
  548. package/dist/esm/w/call/entity.js +1 -180
  549. package/dist/esm/w/call/guard-ins.d.ts +0 -3
  550. package/dist/esm/w/call/guard-ins.js +1 -4387
  551. package/dist/esm/w/call/guard.d.ts +111 -27
  552. package/dist/esm/w/call/guard.js +1 -1154
  553. package/dist/esm/w/call/index.js +1 -27
  554. package/dist/esm/w/call/machine.js +1 -1146
  555. package/dist/esm/w/call/order.js +1 -348
  556. package/dist/esm/w/call/passport.js +1 -234
  557. package/dist/esm/w/call/payment.js +1 -192
  558. package/dist/esm/w/call/permission.d.ts +0 -20
  559. package/dist/esm/w/call/permission.js +1 -1227
  560. package/dist/esm/w/call/personal.js +1 -142
  561. package/dist/esm/w/call/progress.js +1 -691
  562. package/dist/esm/w/call/proof.js +1 -69
  563. package/dist/esm/w/call/repository.js +1 -1097
  564. package/dist/esm/w/call/resource.js +1 -119
  565. package/dist/esm/w/call/reward.js +1 -688
  566. package/dist/esm/w/call/service.js +1 -1991
  567. package/dist/esm/w/call/treasury.js +1 -877
  568. package/dist/esm/w/call/util.d.ts +1 -0
  569. package/dist/esm/w/call/util.js +1 -624
  570. package/dist/esm/w/common.d.ts +48 -68
  571. package/dist/esm/w/common.js +1 -604
  572. package/dist/esm/w/exception.d.ts +1 -0
  573. package/dist/esm/w/exception.js +1 -582
  574. package/dist/esm/w/index.js +1 -12
  575. package/dist/esm/w/local/account.d.ts +0 -45
  576. package/dist/esm/w/local/account.js +1 -746
  577. package/dist/esm/w/local/cache.js +1 -191
  578. package/dist/esm/w/local/config.d.ts +0 -3
  579. package/dist/esm/w/local/config.js +1 -50
  580. package/dist/esm/w/local/index.js +1 -233
  581. package/dist/esm/w/local/local.js +1 -664
  582. package/dist/esm/w/local/storage.d.ts +0 -20
  583. package/dist/esm/w/local/storage.js +1 -222
  584. package/dist/esm/w/local/token.d.ts +1 -4
  585. package/dist/esm/w/local/token.js +1 -161
  586. package/dist/esm/w/local/util.d.ts +0 -4
  587. package/dist/esm/w/local/util.js +1 -50
  588. package/dist/esm/w/local/wip.d.ts +0 -92
  589. package/dist/esm/w/local/wip.js +1 -1202
  590. package/dist/esm/w/messenger/crypto.d.ts +0 -186
  591. package/dist/esm/w/messenger/crypto.js +1 -574
  592. package/dist/esm/w/messenger/index.d.ts +0 -18
  593. package/dist/esm/w/messenger/index.js +1 -28
  594. package/dist/esm/w/messenger/messenger-api.d.ts +0 -177
  595. package/dist/esm/w/messenger/messenger-api.js +1 -1503
  596. package/dist/esm/w/messenger/messenger-manager.d.ts +0 -24
  597. package/dist/esm/w/messenger/messenger-manager.js +1 -1065
  598. package/dist/esm/w/messenger/messenger.d.ts +0 -206
  599. package/dist/esm/w/messenger/messenger.js +1 -1439
  600. package/dist/esm/w/messenger/server.d.ts +0 -94
  601. package/dist/esm/w/messenger/server.js +1 -460
  602. package/dist/esm/w/messenger/session.d.ts +0 -76
  603. package/dist/esm/w/messenger/session.js +1 -768
  604. package/dist/esm/w/messenger/storage.d.ts +0 -143
  605. package/dist/esm/w/messenger/storage.js +1 -1256
  606. package/dist/esm/w/messenger/templates/wts-html-template.d.ts +0 -31
  607. package/dist/esm/w/messenger/templates/wts-html-template.js +1 -414
  608. package/dist/esm/w/messenger/types.d.ts +7 -218
  609. package/dist/esm/w/messenger/types.js +1 -98
  610. package/dist/esm/w/messenger/utils.d.ts +0 -14
  611. package/dist/esm/w/messenger/utils.js +1 -29
  612. package/dist/esm/w/query/bult-in.d.ts +0 -11
  613. package/dist/esm/w/query/bult-in.js +1 -107
  614. package/dist/esm/w/query/event.d.ts +0 -7
  615. package/dist/esm/w/query/event.js +1 -140
  616. package/dist/esm/w/query/index.js +1 -8
  617. package/dist/esm/w/query/object.d.ts +7 -51
  618. package/dist/esm/w/query/object.js +1 -1636
  619. package/dist/esm/w/query/received.d.ts +0 -6
  620. package/dist/esm/w/query/received.js +1 -67
  621. package/dist/esm/w/query/util.d.ts +1 -2
  622. package/dist/esm/w/query/util.js +1 -54
  623. package/dist/esm/w/util.d.ts +2 -5
  624. package/dist/esm/w/util.js +1 -616
  625. package/package.json +5 -2
  626. package/dist/cjs/bcs/bcs.js.map +0 -1
  627. package/dist/cjs/bcs/effects.js.map +0 -1
  628. package/dist/cjs/bcs/index.js.map +0 -1
  629. package/dist/cjs/bcs/pure.js.map +0 -1
  630. package/dist/cjs/bcs/type-tag-serializer.js.map +0 -1
  631. package/dist/cjs/bcs/types.js.map +0 -1
  632. package/dist/cjs/client/index.js.map +0 -1
  633. package/dist/cjs/client/network.js.map +0 -1
  634. package/dist/cjs/cryptography/index.js.map +0 -1
  635. package/dist/cjs/cryptography/intent.js.map +0 -1
  636. package/dist/cjs/cryptography/keypair.js.map +0 -1
  637. package/dist/cjs/cryptography/mnemonics.js.map +0 -1
  638. package/dist/cjs/cryptography/publickey.js.map +0 -1
  639. package/dist/cjs/cryptography/signature-scheme.js.map +0 -1
  640. package/dist/cjs/cryptography/signature.js.map +0 -1
  641. package/dist/cjs/experimental/cache.js.map +0 -1
  642. package/dist/cjs/experimental/client.js.map +0 -1
  643. package/dist/cjs/experimental/core.js.map +0 -1
  644. package/dist/cjs/experimental/errors.js.map +0 -1
  645. package/dist/cjs/experimental/index.js.map +0 -1
  646. package/dist/cjs/experimental/persistent-storage.js.map +0 -1
  647. package/dist/cjs/experimental/persistent-storage.test.js.map +0 -1
  648. package/dist/cjs/experimental/transports/utils.js.map +0 -1
  649. package/dist/cjs/experimental/types.js.map +0 -1
  650. package/dist/cjs/faucet/faucet.js.map +0 -1
  651. package/dist/cjs/faucet/index.js.map +0 -1
  652. package/dist/cjs/grpc/client.js.map +0 -1
  653. package/dist/cjs/grpc/core.js.map +0 -1
  654. package/dist/cjs/grpc/index.js.map +0 -1
  655. package/dist/cjs/grpc/proto/google/protobuf/any.js.map +0 -1
  656. package/dist/cjs/grpc/proto/google/protobuf/duration.js.map +0 -1
  657. package/dist/cjs/grpc/proto/google/protobuf/empty.js.map +0 -1
  658. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js.map +0 -1
  659. package/dist/cjs/grpc/proto/google/protobuf/struct.js.map +0 -1
  660. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js.map +0 -1
  661. package/dist/cjs/grpc/proto/google/rpc/error_details.js.map +0 -1
  662. package/dist/cjs/grpc/proto/google/rpc/status.js.map +0 -1
  663. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js.map +0 -1
  664. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js.map +0 -1
  665. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js.map +0 -1
  666. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js.map +0 -1
  667. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +0 -1
  668. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +0 -1
  669. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js.map +0 -1
  670. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js.map +0 -1
  671. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js.map +0 -1
  672. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js.map +0 -1
  673. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js.map +0 -1
  674. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js.map +0 -1
  675. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +0 -1
  676. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js.map +0 -1
  677. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js.map +0 -1
  678. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +0 -1
  679. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js.map +0 -1
  680. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js.map +0 -1
  681. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +0 -1
  682. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js.map +0 -1
  683. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js.map +0 -1
  684. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js.map +0 -1
  685. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js.map +0 -1
  686. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js.map +0 -1
  687. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js.map +0 -1
  688. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js.map +0 -1
  689. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js.map +0 -1
  690. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js.map +0 -1
  691. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +0 -1
  692. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +0 -1
  693. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js.map +0 -1
  694. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js.map +0 -1
  695. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +0 -1
  696. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js.map +0 -1
  697. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js.map +0 -1
  698. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js.map +0 -1
  699. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +0 -1
  700. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +0 -1
  701. package/dist/cjs/index.js.map +0 -1
  702. package/dist/cjs/jsonRpc/client.js.map +0 -1
  703. package/dist/cjs/jsonRpc/core.js.map +0 -1
  704. package/dist/cjs/jsonRpc/errors.js.map +0 -1
  705. package/dist/cjs/jsonRpc/http-transport.js.map +0 -1
  706. package/dist/cjs/jsonRpc/index.js.map +0 -1
  707. package/dist/cjs/jsonRpc/json-rpc-resolver.js.map +0 -1
  708. package/dist/cjs/jsonRpc/rpc-websocket-client.js.map +0 -1
  709. package/dist/cjs/jsonRpc/types/chain.js.map +0 -1
  710. package/dist/cjs/jsonRpc/types/changes.js.map +0 -1
  711. package/dist/cjs/jsonRpc/types/coins.js.map +0 -1
  712. package/dist/cjs/jsonRpc/types/common.js.map +0 -1
  713. package/dist/cjs/jsonRpc/types/generated.js.map +0 -1
  714. package/dist/cjs/jsonRpc/types/index.js.map +0 -1
  715. package/dist/cjs/jsonRpc/types/params.js.map +0 -1
  716. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +0 -1
  717. package/dist/cjs/keypairs/ed25519/index.js.map +0 -1
  718. package/dist/cjs/keypairs/ed25519/keypair.js.map +0 -1
  719. package/dist/cjs/keypairs/ed25519/publickey.js.map +0 -1
  720. package/dist/cjs/keypairs/index.js.map +0 -1
  721. package/dist/cjs/keypairs/passkey/index.js.map +0 -1
  722. package/dist/cjs/keypairs/passkey/keypair.js.map +0 -1
  723. package/dist/cjs/keypairs/passkey/publickey.js.map +0 -1
  724. package/dist/cjs/keypairs/passkey/types.js.map +0 -1
  725. package/dist/cjs/keypairs/secp256k1/index.js.map +0 -1
  726. package/dist/cjs/keypairs/secp256k1/keypair.js.map +0 -1
  727. package/dist/cjs/keypairs/secp256k1/publickey.js.map +0 -1
  728. package/dist/cjs/keypairs/secp256r1/index.js.map +0 -1
  729. package/dist/cjs/keypairs/secp256r1/keypair.js.map +0 -1
  730. package/dist/cjs/keypairs/secp256r1/publickey.js.map +0 -1
  731. package/dist/cjs/multisig/index.js.map +0 -1
  732. package/dist/cjs/multisig/publickey.js.map +0 -1
  733. package/dist/cjs/multisig/signer.js.map +0 -1
  734. package/dist/cjs/transactions/Arguments.js.map +0 -1
  735. package/dist/cjs/transactions/Commands.js.map +0 -1
  736. package/dist/cjs/transactions/Inputs.js.map +0 -1
  737. package/dist/cjs/transactions/ObjectCache.js.map +0 -1
  738. package/dist/cjs/transactions/Transaction.js.map +0 -1
  739. package/dist/cjs/transactions/TransactionData.js.map +0 -1
  740. package/dist/cjs/transactions/__tests__/Transaction.test.js.map +0 -1
  741. package/dist/cjs/transactions/__tests__/bcs.test.js.map +0 -1
  742. package/dist/cjs/transactions/data/internal.js.map +0 -1
  743. package/dist/cjs/transactions/data/v1.js.map +0 -1
  744. package/dist/cjs/transactions/data/v2.js.map +0 -1
  745. package/dist/cjs/transactions/executor/caching.js.map +0 -1
  746. package/dist/cjs/transactions/executor/parallel.js.map +0 -1
  747. package/dist/cjs/transactions/executor/queue.js.map +0 -1
  748. package/dist/cjs/transactions/executor/serial.js.map +0 -1
  749. package/dist/cjs/transactions/hash.js.map +0 -1
  750. package/dist/cjs/transactions/index.js.map +0 -1
  751. package/dist/cjs/transactions/intents/CoinWithBalance.js.map +0 -1
  752. package/dist/cjs/transactions/object.js.map +0 -1
  753. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +0 -1
  754. package/dist/cjs/transactions/pure.js.map +0 -1
  755. package/dist/cjs/transactions/resolve.js.map +0 -1
  756. package/dist/cjs/transactions/serializer.js.map +0 -1
  757. package/dist/cjs/transactions/utils.js.map +0 -1
  758. package/dist/cjs/utils/constants.js.map +0 -1
  759. package/dist/cjs/utils/derived-objects.js.map +0 -1
  760. package/dist/cjs/utils/dynamic-fields.js.map +0 -1
  761. package/dist/cjs/utils/format.js.map +0 -1
  762. package/dist/cjs/utils/index.js.map +0 -1
  763. package/dist/cjs/utils/move-registry.js.map +0 -1
  764. package/dist/cjs/utils/sui-types.js.map +0 -1
  765. package/dist/cjs/utils/suins.js.map +0 -1
  766. package/dist/cjs/verify/index.js.map +0 -1
  767. package/dist/cjs/verify/verify.js.map +0 -1
  768. package/dist/cjs/version.js.map +0 -1
  769. package/dist/cjs/w/call/allocation.js.map +0 -1
  770. package/dist/cjs/w/call/arb.js.map +0 -1
  771. package/dist/cjs/w/call/arbitration.js.map +0 -1
  772. package/dist/cjs/w/call/base.js.map +0 -1
  773. package/dist/cjs/w/call/contact.js.map +0 -1
  774. package/dist/cjs/w/call/demand.js.map +0 -1
  775. package/dist/cjs/w/call/entity.js.map +0 -1
  776. package/dist/cjs/w/call/guard-ins.js.map +0 -1
  777. package/dist/cjs/w/call/guard.js.map +0 -1
  778. package/dist/cjs/w/call/index.js.map +0 -1
  779. package/dist/cjs/w/call/machine.js.map +0 -1
  780. package/dist/cjs/w/call/order.js.map +0 -1
  781. package/dist/cjs/w/call/passport.js.map +0 -1
  782. package/dist/cjs/w/call/payment.js.map +0 -1
  783. package/dist/cjs/w/call/permission.js.map +0 -1
  784. package/dist/cjs/w/call/personal.js.map +0 -1
  785. package/dist/cjs/w/call/progress.js.map +0 -1
  786. package/dist/cjs/w/call/proof.js.map +0 -1
  787. package/dist/cjs/w/call/repository.js.map +0 -1
  788. package/dist/cjs/w/call/resource.js.map +0 -1
  789. package/dist/cjs/w/call/reward.js.map +0 -1
  790. package/dist/cjs/w/call/service.js.map +0 -1
  791. package/dist/cjs/w/call/treasury.js.map +0 -1
  792. package/dist/cjs/w/call/util.js.map +0 -1
  793. package/dist/cjs/w/common.js.map +0 -1
  794. package/dist/cjs/w/exception.js.map +0 -1
  795. package/dist/cjs/w/index.js.map +0 -1
  796. package/dist/cjs/w/local/account.js.map +0 -1
  797. package/dist/cjs/w/local/cache.js.map +0 -1
  798. package/dist/cjs/w/local/config.js.map +0 -1
  799. package/dist/cjs/w/local/index.js.map +0 -1
  800. package/dist/cjs/w/local/local.js.map +0 -1
  801. package/dist/cjs/w/local/storage.js.map +0 -1
  802. package/dist/cjs/w/local/token.js.map +0 -1
  803. package/dist/cjs/w/local/util.js.map +0 -1
  804. package/dist/cjs/w/local/wip.js.map +0 -1
  805. package/dist/cjs/w/messenger/crypto.js.map +0 -1
  806. package/dist/cjs/w/messenger/index.js.map +0 -1
  807. package/dist/cjs/w/messenger/messenger-api.js.map +0 -1
  808. package/dist/cjs/w/messenger/messenger-manager.js.map +0 -1
  809. package/dist/cjs/w/messenger/messenger.js.map +0 -1
  810. package/dist/cjs/w/messenger/server.js.map +0 -1
  811. package/dist/cjs/w/messenger/session.js.map +0 -1
  812. package/dist/cjs/w/messenger/storage.js.map +0 -1
  813. package/dist/cjs/w/messenger/templates/wts-html-template.js.map +0 -1
  814. package/dist/cjs/w/messenger/types.js.map +0 -1
  815. package/dist/cjs/w/messenger/utils.js.map +0 -1
  816. package/dist/cjs/w/query/bult-in.js.map +0 -1
  817. package/dist/cjs/w/query/event.js.map +0 -1
  818. package/dist/cjs/w/query/index.js.map +0 -1
  819. package/dist/cjs/w/query/object.js.map +0 -1
  820. package/dist/cjs/w/query/received.js.map +0 -1
  821. package/dist/cjs/w/query/util.js.map +0 -1
  822. package/dist/cjs/w/util.js.map +0 -1
  823. package/dist/esm/bcs/bcs.js.map +0 -1
  824. package/dist/esm/bcs/effects.js.map +0 -1
  825. package/dist/esm/bcs/index.js.map +0 -1
  826. package/dist/esm/bcs/pure.js.map +0 -1
  827. package/dist/esm/bcs/type-tag-serializer.js.map +0 -1
  828. package/dist/esm/bcs/types.js.map +0 -1
  829. package/dist/esm/client/index.js.map +0 -1
  830. package/dist/esm/client/network.js.map +0 -1
  831. package/dist/esm/cryptography/index.js.map +0 -1
  832. package/dist/esm/cryptography/intent.js.map +0 -1
  833. package/dist/esm/cryptography/keypair.js.map +0 -1
  834. package/dist/esm/cryptography/mnemonics.js.map +0 -1
  835. package/dist/esm/cryptography/publickey.js.map +0 -1
  836. package/dist/esm/cryptography/signature-scheme.js.map +0 -1
  837. package/dist/esm/cryptography/signature.js.map +0 -1
  838. package/dist/esm/experimental/cache.js.map +0 -1
  839. package/dist/esm/experimental/client.js.map +0 -1
  840. package/dist/esm/experimental/core.js.map +0 -1
  841. package/dist/esm/experimental/errors.js.map +0 -1
  842. package/dist/esm/experimental/index.js.map +0 -1
  843. package/dist/esm/experimental/persistent-storage.js.map +0 -1
  844. package/dist/esm/experimental/persistent-storage.test.js.map +0 -1
  845. package/dist/esm/experimental/transports/utils.js.map +0 -1
  846. package/dist/esm/experimental/types.js.map +0 -1
  847. package/dist/esm/faucet/faucet.js.map +0 -1
  848. package/dist/esm/faucet/index.js.map +0 -1
  849. package/dist/esm/grpc/client.js.map +0 -1
  850. package/dist/esm/grpc/core.js.map +0 -1
  851. package/dist/esm/grpc/index.js.map +0 -1
  852. package/dist/esm/grpc/proto/google/protobuf/any.js.map +0 -1
  853. package/dist/esm/grpc/proto/google/protobuf/duration.js.map +0 -1
  854. package/dist/esm/grpc/proto/google/protobuf/empty.js.map +0 -1
  855. package/dist/esm/grpc/proto/google/protobuf/field_mask.js.map +0 -1
  856. package/dist/esm/grpc/proto/google/protobuf/struct.js.map +0 -1
  857. package/dist/esm/grpc/proto/google/protobuf/timestamp.js.map +0 -1
  858. package/dist/esm/grpc/proto/google/rpc/error_details.js.map +0 -1
  859. package/dist/esm/grpc/proto/google/rpc/status.js.map +0 -1
  860. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js.map +0 -1
  861. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js.map +0 -1
  862. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js.map +0 -1
  863. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js.map +0 -1
  864. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +0 -1
  865. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +0 -1
  866. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js.map +0 -1
  867. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js.map +0 -1
  868. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js.map +0 -1
  869. package/dist/esm/grpc/proto/sui/rpc/v2/event.js.map +0 -1
  870. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js.map +0 -1
  871. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js.map +0 -1
  872. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +0 -1
  873. package/dist/esm/grpc/proto/sui/rpc/v2/input.js.map +0 -1
  874. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js.map +0 -1
  875. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +0 -1
  876. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js.map +0 -1
  877. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js.map +0 -1
  878. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +0 -1
  879. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js.map +0 -1
  880. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js.map +0 -1
  881. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js.map +0 -1
  882. package/dist/esm/grpc/proto/sui/rpc/v2/object.js.map +0 -1
  883. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js.map +0 -1
  884. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js.map +0 -1
  885. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js.map +0 -1
  886. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js.map +0 -1
  887. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js.map +0 -1
  888. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +0 -1
  889. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +0 -1
  890. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js.map +0 -1
  891. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js.map +0 -1
  892. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +0 -1
  893. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js.map +0 -1
  894. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js.map +0 -1
  895. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js.map +0 -1
  896. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +0 -1
  897. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +0 -1
  898. package/dist/esm/index.js.map +0 -1
  899. package/dist/esm/jsonRpc/client.js.map +0 -1
  900. package/dist/esm/jsonRpc/core.js.map +0 -1
  901. package/dist/esm/jsonRpc/errors.js.map +0 -1
  902. package/dist/esm/jsonRpc/http-transport.js.map +0 -1
  903. package/dist/esm/jsonRpc/index.js.map +0 -1
  904. package/dist/esm/jsonRpc/json-rpc-resolver.js.map +0 -1
  905. package/dist/esm/jsonRpc/rpc-websocket-client.js.map +0 -1
  906. package/dist/esm/jsonRpc/types/chain.js.map +0 -1
  907. package/dist/esm/jsonRpc/types/changes.js.map +0 -1
  908. package/dist/esm/jsonRpc/types/coins.js.map +0 -1
  909. package/dist/esm/jsonRpc/types/common.js.map +0 -1
  910. package/dist/esm/jsonRpc/types/generated.js.map +0 -1
  911. package/dist/esm/jsonRpc/types/index.js.map +0 -1
  912. package/dist/esm/jsonRpc/types/params.js.map +0 -1
  913. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +0 -1
  914. package/dist/esm/keypairs/ed25519/index.js.map +0 -1
  915. package/dist/esm/keypairs/ed25519/keypair.js.map +0 -1
  916. package/dist/esm/keypairs/ed25519/publickey.js.map +0 -1
  917. package/dist/esm/keypairs/index.js.map +0 -1
  918. package/dist/esm/keypairs/passkey/index.js.map +0 -1
  919. package/dist/esm/keypairs/passkey/keypair.js.map +0 -1
  920. package/dist/esm/keypairs/passkey/publickey.js.map +0 -1
  921. package/dist/esm/keypairs/passkey/types.js.map +0 -1
  922. package/dist/esm/keypairs/secp256k1/index.js.map +0 -1
  923. package/dist/esm/keypairs/secp256k1/keypair.js.map +0 -1
  924. package/dist/esm/keypairs/secp256k1/publickey.js.map +0 -1
  925. package/dist/esm/keypairs/secp256r1/index.js.map +0 -1
  926. package/dist/esm/keypairs/secp256r1/keypair.js.map +0 -1
  927. package/dist/esm/keypairs/secp256r1/publickey.js.map +0 -1
  928. package/dist/esm/multisig/index.js.map +0 -1
  929. package/dist/esm/multisig/publickey.js.map +0 -1
  930. package/dist/esm/multisig/signer.js.map +0 -1
  931. package/dist/esm/transactions/Arguments.js.map +0 -1
  932. package/dist/esm/transactions/Commands.js.map +0 -1
  933. package/dist/esm/transactions/Inputs.js.map +0 -1
  934. package/dist/esm/transactions/ObjectCache.js.map +0 -1
  935. package/dist/esm/transactions/Transaction.js.map +0 -1
  936. package/dist/esm/transactions/TransactionData.js.map +0 -1
  937. package/dist/esm/transactions/__tests__/Transaction.test.js.map +0 -1
  938. package/dist/esm/transactions/__tests__/bcs.test.js.map +0 -1
  939. package/dist/esm/transactions/data/internal.js.map +0 -1
  940. package/dist/esm/transactions/data/v1.js.map +0 -1
  941. package/dist/esm/transactions/data/v2.js.map +0 -1
  942. package/dist/esm/transactions/executor/caching.js.map +0 -1
  943. package/dist/esm/transactions/executor/parallel.js.map +0 -1
  944. package/dist/esm/transactions/executor/queue.js.map +0 -1
  945. package/dist/esm/transactions/executor/serial.js.map +0 -1
  946. package/dist/esm/transactions/hash.js.map +0 -1
  947. package/dist/esm/transactions/index.js.map +0 -1
  948. package/dist/esm/transactions/intents/CoinWithBalance.js.map +0 -1
  949. package/dist/esm/transactions/object.js.map +0 -1
  950. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js.map +0 -1
  951. package/dist/esm/transactions/pure.js.map +0 -1
  952. package/dist/esm/transactions/resolve.js.map +0 -1
  953. package/dist/esm/transactions/serializer.js.map +0 -1
  954. package/dist/esm/transactions/utils.js.map +0 -1
  955. package/dist/esm/utils/constants.js.map +0 -1
  956. package/dist/esm/utils/derived-objects.js.map +0 -1
  957. package/dist/esm/utils/dynamic-fields.js.map +0 -1
  958. package/dist/esm/utils/format.js.map +0 -1
  959. package/dist/esm/utils/index.js.map +0 -1
  960. package/dist/esm/utils/move-registry.js.map +0 -1
  961. package/dist/esm/utils/sui-types.js.map +0 -1
  962. package/dist/esm/utils/suins.js.map +0 -1
  963. package/dist/esm/verify/index.js.map +0 -1
  964. package/dist/esm/verify/verify.js.map +0 -1
  965. package/dist/esm/version.js.map +0 -1
  966. package/dist/esm/w/call/allocation.js.map +0 -1
  967. package/dist/esm/w/call/arb.js.map +0 -1
  968. package/dist/esm/w/call/arbitration.js.map +0 -1
  969. package/dist/esm/w/call/base.js.map +0 -1
  970. package/dist/esm/w/call/contact.js.map +0 -1
  971. package/dist/esm/w/call/demand.js.map +0 -1
  972. package/dist/esm/w/call/entity.js.map +0 -1
  973. package/dist/esm/w/call/guard-ins.js.map +0 -1
  974. package/dist/esm/w/call/guard.js.map +0 -1
  975. package/dist/esm/w/call/index.js.map +0 -1
  976. package/dist/esm/w/call/machine.js.map +0 -1
  977. package/dist/esm/w/call/order.js.map +0 -1
  978. package/dist/esm/w/call/passport.js.map +0 -1
  979. package/dist/esm/w/call/payment.js.map +0 -1
  980. package/dist/esm/w/call/permission.js.map +0 -1
  981. package/dist/esm/w/call/personal.js.map +0 -1
  982. package/dist/esm/w/call/progress.js.map +0 -1
  983. package/dist/esm/w/call/proof.js.map +0 -1
  984. package/dist/esm/w/call/repository.js.map +0 -1
  985. package/dist/esm/w/call/resource.js.map +0 -1
  986. package/dist/esm/w/call/reward.js.map +0 -1
  987. package/dist/esm/w/call/service.js.map +0 -1
  988. package/dist/esm/w/call/treasury.js.map +0 -1
  989. package/dist/esm/w/call/util.js.map +0 -1
  990. package/dist/esm/w/common.js.map +0 -1
  991. package/dist/esm/w/exception.js.map +0 -1
  992. package/dist/esm/w/index.js.map +0 -1
  993. package/dist/esm/w/local/account.js.map +0 -1
  994. package/dist/esm/w/local/cache.js.map +0 -1
  995. package/dist/esm/w/local/config.js.map +0 -1
  996. package/dist/esm/w/local/index.js.map +0 -1
  997. package/dist/esm/w/local/local.js.map +0 -1
  998. package/dist/esm/w/local/storage.js.map +0 -1
  999. package/dist/esm/w/local/token.js.map +0 -1
  1000. package/dist/esm/w/local/util.js.map +0 -1
  1001. package/dist/esm/w/local/wip.js.map +0 -1
  1002. package/dist/esm/w/messenger/crypto.js.map +0 -1
  1003. package/dist/esm/w/messenger/index.js.map +0 -1
  1004. package/dist/esm/w/messenger/messenger-api.js.map +0 -1
  1005. package/dist/esm/w/messenger/messenger-manager.js.map +0 -1
  1006. package/dist/esm/w/messenger/messenger.js.map +0 -1
  1007. package/dist/esm/w/messenger/server.js.map +0 -1
  1008. package/dist/esm/w/messenger/session.js.map +0 -1
  1009. package/dist/esm/w/messenger/storage.js.map +0 -1
  1010. package/dist/esm/w/messenger/templates/wts-html-template.js.map +0 -1
  1011. package/dist/esm/w/messenger/types.js.map +0 -1
  1012. package/dist/esm/w/messenger/utils.js.map +0 -1
  1013. package/dist/esm/w/query/bult-in.js.map +0 -1
  1014. package/dist/esm/w/query/event.js.map +0 -1
  1015. package/dist/esm/w/query/index.js.map +0 -1
  1016. package/dist/esm/w/query/object.js.map +0 -1
  1017. package/dist/esm/w/query/received.js.map +0 -1
  1018. package/dist/esm/w/query/util.js.map +0 -1
  1019. package/dist/esm/w/util.js.map +0 -1
@@ -1,1503 +1 @@
1
- // Copyright (c) Wowok.
2
- // SPDX-License-Identifier: Apache-2.0
3
- import { MessengerManager } from "./messenger-manager.js";
4
- import { Account } from "../local/account.js";
5
- import { W_ERROR, WErrors } from "../exception.js";
6
- import { LocalMark } from "../local/local.js";
7
- import { MessageStorage } from "./storage.js";
8
- import { MessengerError, MessengerErrorCode, CHAIN_PROOF_TYPE, MessageDirection, } from "./types.js";
9
- import { createHash } from "crypto";
10
- import * as fs from "fs";
11
- import * as path from "path";
12
- import { isValidU64 } from "../common.js";
13
- import { verifySingleMerkleRoot, hashPlaintext, verifyEd25519Signature, } from "./crypto.js";
14
- import { canonicalizeJson } from "./utils.js";
15
- import { generateHtmlPage, getThemeColors, } from "./templates/wts-html-template.js";
16
- import { GetAccountOrMark_Address, GetManyAccountOrMark_Address, } from "../local/index.js";
17
- import { query_objects } from "../query/object.js";
18
- import { Messenger } from "./messenger.js";
19
- let managerInstance = null;
20
- let isInitialized = false;
21
- let backgroundTimer = null;
22
- /**
23
- * 自动检查并注册所有设置了 messenger name 的账号
24
- * 如果账号已注册(identity 已存在),则跳过
25
- */
26
- async function autoRegisterMessengerAccounts() {
27
- const accounts = await Account.Instance().list_messenger_accounts();
28
- for (const account of accounts) {
29
- if (!account.address || !account.m) {
30
- continue;
31
- }
32
- try {
33
- const messenger = new Messenger(account.address);
34
- await messenger.initialize();
35
- }
36
- catch (error) {
37
- console.error(`Failed to initialize account ${account.address}:`, error);
38
- // 继续处理下一个账号
39
- }
40
- }
41
- }
42
- /**
43
- * 获取 MessengerManager 实例(单例)
44
- * 首次调用时会自动启动后台服务
45
- */
46
- export function getMessengerManager() {
47
- if (!managerInstance) {
48
- managerInstance = new MessengerManager();
49
- }
50
- if (!isInitialized) {
51
- isInitialized = true;
52
- // 启动时先自动检查并注册账号
53
- autoRegisterMessengerAccounts().catch((err) => {
54
- console.error("Failed to auto-register messenger accounts:", err);
55
- });
56
- managerInstance.start().catch((err) => {
57
- console.error("Failed to auto-start messenger manager:", err);
58
- });
59
- }
60
- return managerInstance;
61
- }
62
- /**
63
- * 进程退出时自动清理
64
- */
65
- function registerCleanupHandler() {
66
- const cleanup = () => {
67
- if (backgroundTimer) {
68
- clearInterval(backgroundTimer);
69
- backgroundTimer = null;
70
- }
71
- if (managerInstance) {
72
- managerInstance.stop();
73
- }
74
- };
75
- process.on("exit", cleanup);
76
- process.on("SIGINT", () => {
77
- cleanup();
78
- process.exit();
79
- });
80
- process.on("SIGTERM", () => {
81
- cleanup();
82
- process.exit();
83
- });
84
- }
85
- registerCleanupHandler();
86
- // startBackgroundTimer(); // 暂时注释掉,避免干扰测试
87
- /**
88
- * 获取会话列表
89
- *
90
- * 查询当前账号的所有会话,支持多种过滤和排序选项。
91
- * 返回的 unreadCount 基于 viewedAt 字段计算。
92
- *
93
- * @param filter 过滤条件(可选)
94
- * @returns 会话信息列表,按指定方式排序
95
- *
96
- * @example
97
- * // 获取所有会话(默认按最后消息时间排序,每个会话2条预览,自动标记为已查看)
98
- * const conversations = await watch_conversations();
99
- *
100
- * // 只获取有未读消息的会话
101
- * const unreadConversations = await watch_conversations({ unreadOnly: true });
102
- *
103
- * // 获取最近7天的会话,包含5条预览消息,跳过自动标记
104
- * const recent = await watch_conversations({
105
- * startTime: Date.now() - 7 * 24 * 60 * 60 * 1000,
106
- * previewMessageCount: 5,
107
- * skipAutoMarkViewed: true
108
- * });
109
- */
110
- export async function watch_conversations(filter) {
111
- const address = await Account.Instance().get_address(filter?.account);
112
- if (!address) {
113
- W_ERROR(WErrors.AccountNotFound, `watch_conversations.account ${filter?.account}`);
114
- }
115
- const myAddress = address.toLowerCase();
116
- // 【修改】使用 MessengerManager 确保账号已就绪并拉取消息
117
- const manager = getMessengerManager();
118
- if (!isInitialized) {
119
- await manager.start();
120
- }
121
- // 确保账号已就绪(自动初始化)
122
- const accountInfo = await manager.ensureAccountReady(address);
123
- // 拉取消息
124
- await accountInfo.messenger.pullMessages();
125
- const messageStorage = new MessageStorage(myAddress);
126
- const allMessages = messageStorage.getAllMessages(myAddress);
127
- const conversations = new Map();
128
- // 默认参数
129
- const previewMessageCount = filter?.previewMessageCount ?? 2;
130
- const skipAutoMarkViewed = filter?.skipAutoMarkViewed ?? false;
131
- for (const msg of allMessages) {
132
- const peerAddress = msg.fromAddress.toLowerCase() === myAddress
133
- ? msg.toAddress
134
- : msg.fromAddress;
135
- if (!conversations.has(peerAddress)) {
136
- conversations.set(peerAddress, {
137
- peerAddress,
138
- lastMessageAt: msg.createdAt,
139
- messageCount: 0,
140
- unreadCount: 0,
141
- lastMessagePreview: msg.plaintext,
142
- messages: [],
143
- });
144
- }
145
- const conv = conversations.get(peerAddress);
146
- conv.messages.push(msg);
147
- conv.messageCount++;
148
- if (msg.createdAt > conv.lastMessageAt) {
149
- conv.lastMessageAt = msg.createdAt;
150
- conv.lastMessagePreview = msg.plaintext;
151
- }
152
- // 未读判断:接收到的消息且没有 viewedAt
153
- if (msg.direction === MessageDirection.RECEIVED &&
154
- msg.viewedAt === undefined) {
155
- conv.unreadCount++;
156
- }
157
- }
158
- // 构建结果数组
159
- const result = [];
160
- for (const [, conv] of conversations) {
161
- // 时间段过滤
162
- if (filter?.startTime !== undefined &&
163
- conv.lastMessageAt < filter.startTime) {
164
- continue;
165
- }
166
- if (filter?.endTime !== undefined &&
167
- conv.lastMessageAt > filter.endTime) {
168
- continue;
169
- }
170
- // 未读过滤
171
- if (filter?.unreadOnly && conv.unreadCount === 0) {
172
- continue;
173
- }
174
- // 准备预览消息
175
- const previewMessages = [];
176
- if (previewMessageCount > 0) {
177
- // 按时间倒序取最新的消息
178
- const sortedMessages = conv.messages.sort((a, b) => b.createdAt - a.createdAt);
179
- const selectedMessages = sortedMessages.slice(0, previewMessageCount);
180
- previewMessages.push(...selectedMessages.reverse());
181
- // 自动标记为已查看(如果不是跳过模式)
182
- if (!skipAutoMarkViewed) {
183
- const unviewedIds = selectedMessages
184
- .filter((m) => m.direction === MessageDirection.RECEIVED &&
185
- m.viewedAt === undefined)
186
- .map((m) => m.messageId);
187
- if (unviewedIds.length > 0) {
188
- messageStorage.updateMessagesViewed(unviewedIds);
189
- }
190
- }
191
- }
192
- result.push({
193
- peerAddress: conv.peerAddress,
194
- lastMessageAt: conv.lastMessageAt,
195
- messageCount: conv.messageCount,
196
- unreadCount: conv.unreadCount,
197
- lastMessagePreview: conv.lastMessagePreview,
198
- ...(previewMessageCount > 0 && { previewMessages }),
199
- });
200
- }
201
- // 排序
202
- const sortBy = filter?.sortBy ?? "lastMessageAt";
203
- const sortOrder = filter?.sortOrder ?? "desc";
204
- result.sort((a, b) => {
205
- let comparison = 0;
206
- switch (sortBy) {
207
- case "lastMessageAt":
208
- comparison = a.lastMessageAt - b.lastMessageAt;
209
- break;
210
- case "unreadCount":
211
- comparison = a.unreadCount - b.unreadCount;
212
- break;
213
- case "messageCount":
214
- comparison = a.messageCount - b.messageCount;
215
- break;
216
- }
217
- return sortOrder === "asc" ? comparison : -comparison;
218
- });
219
- return result;
220
- }
221
- /**
222
- * 标记消息为已查看
223
- *
224
- * 将指定消息标记为当前用户已查看,设置 viewedAt 为当前时间戳。
225
- * 通常用于用户主动查看消息后调用。
226
- *
227
- * @param messageIds 消息ID列表(至少1条)
228
- * @param account 账号地址或名称(可选,默认当前账号)
229
- * @returns 成功标记的消息数量
230
- *
231
- * @example
232
- * // 标记单条消息
233
- * await mark_messages_as_viewed(["msg-123"]);
234
- *
235
- * // 标记多条消息
236
- * await mark_messages_as_viewed(["msg-1", "msg-2", "msg-3"]);
237
- */
238
- export async function mark_messages_as_viewed(messageIds, account) {
239
- if (!messageIds || messageIds.length === 0) {
240
- return 0;
241
- }
242
- const address = await Account.Instance().get_address(account);
243
- if (!address) {
244
- W_ERROR(WErrors.AccountNotFound, `mark_messages_as_viewed.account ${account}`);
245
- }
246
- const myAddress = address.toLowerCase();
247
- const messageStorage = new MessageStorage(myAddress);
248
- return messageStorage.updateMessagesViewed(messageIds);
249
- }
250
- /**
251
- * 标记整个会话为已查看
252
- *
253
- * 将指定会话中的所有未查看消息标记为已查看。
254
- * 通常用于用户点击进入聊天界面时调用。
255
- *
256
- * @param peerAddress 对方地址或名称标记
257
- * @param account 账号地址或名称(可选,默认当前账号)
258
- * @returns 成功标记的消息数量
259
- *
260
- * @example
261
- * // 标记与某人的所有消息为已查看
262
- * await mark_conversation_as_viewed("0x123...");
263
- *
264
- * // 使用名称标记
265
- * await mark_conversation_as_viewed("alice");
266
- */
267
- export async function mark_conversation_as_viewed(peerAddress, account) {
268
- const address = await Account.Instance().get_address(account);
269
- if (!address) {
270
- W_ERROR(WErrors.AccountNotFound, `mark_conversation_as_viewed.account ${account}`);
271
- }
272
- const myAddress = address.toLowerCase();
273
- // 解析对方地址
274
- const peerAddr = await GetAccountOrMark_Address(peerAddress);
275
- if (!peerAddr) {
276
- W_ERROR(WErrors.AccountNotFound, `mark_conversation_as_viewed.peerAddress ${peerAddress} is not a valid account/address`);
277
- }
278
- const peerAddrLower = peerAddr.toLowerCase();
279
- const messageStorage = new MessageStorage(myAddress);
280
- const sessionMessages = messageStorage.getMessagesBySession(myAddress, peerAddrLower);
281
- // 筛选出未查看的接收消息
282
- const unviewedIds = sessionMessages
283
- .filter((m) => m.direction === MessageDirection.RECEIVED &&
284
- m.viewedAt === undefined)
285
- .map((m) => m.messageId);
286
- if (unviewedIds.length === 0) {
287
- return 0;
288
- }
289
- return messageStorage.updateMessagesViewed(unviewedIds);
290
- }
291
- /**
292
- * 发送消息
293
- *
294
- * @param from 发送者地址
295
- * @param to 接收者地址
296
- * @param content 消息内容
297
- * @param options 可选配置
298
- * @returns SendMessageResult
299
- */
300
- export async function send_message(from, to, content, options) {
301
- const fromAddress = await Account.Instance().get_address(from);
302
- if (!fromAddress) {
303
- W_ERROR(WErrors.AccountNotFound, `send_message.from ${from}`);
304
- }
305
- const t = await GetAccountOrMark_Address(to);
306
- if (!t) {
307
- W_ERROR(WErrors.AccountNotFound, `send_message.to ${to} is not a valid account/address`);
308
- }
309
- if (options?.guardAddress != null && options?.passportAddress != null) {
310
- [options.guardAddress, options.passportAddress] =
311
- await LocalMark.Instance().get_many_address([
312
- options.guardAddress,
313
- options.passportAddress,
314
- ]);
315
- if (!options.guardAddress || !options.passportAddress) {
316
- W_ERROR(WErrors.AccountNotFound, `send_message.guardAddress or passportAddress not found`);
317
- }
318
- }
319
- // 【修改】使用 MessengerManager 确保账号已就绪并发送消息
320
- const manager = getMessengerManager();
321
- if (!isInitialized) {
322
- await manager.start();
323
- }
324
- return manager.send(fromAddress, t, content, options);
325
- }
326
- /**
327
- * 发送文件(ZIP 格式)
328
- *
329
- * 支持发送本地文件,经过 ZIP 压缩后发送给对方
330
- * 支持 Guard 验证,如果提供 guardAddress 和 passportAddress,消息将进入 Guard 验证流程
331
- *
332
- * @param from 发送者账号或地址
333
- * @param to 接收者地址
334
- * @param filePath 本地文件路径
335
- * @param options 可选配置
336
- * @returns SendMessageResult
337
- */
338
- export async function send_file(from, to, filePath, options) {
339
- const fromAddress = await Account.Instance().get_address(from);
340
- if (!fromAddress) {
341
- W_ERROR(WErrors.AccountNotFound, `send_file.from ${from}`);
342
- }
343
- const t = await GetAccountOrMark_Address(to);
344
- if (!t) {
345
- W_ERROR(WErrors.AccountNotFound, `send_file.to ${to} is not a valid account/address`);
346
- }
347
- if (options?.guardAddress != null && options?.passportAddress != null) {
348
- [options.guardAddress, options.passportAddress] =
349
- await LocalMark.Instance().get_many_address([
350
- options.guardAddress,
351
- options.passportAddress,
352
- ]);
353
- if (!options.guardAddress || !options.passportAddress) {
354
- W_ERROR(WErrors.AccountNotFound, `send_file.guardAddress or passportAddress not found`);
355
- }
356
- }
357
- // 【修改】使用 MessengerManager 确保账号已就绪并发送文件
358
- const manager = getMessengerManager();
359
- if (!isInitialized) {
360
- await manager.start();
361
- }
362
- return manager.send_file(fromAddress, t, filePath, options);
363
- }
364
- /**
365
- * 查询消息
366
- *
367
- * 支持按已读状态过滤,可自动标记为已查看。
368
- *
369
- * @param filter 过滤条件(可选)
370
- * @returns Message 数组
371
- *
372
- * @example
373
- * // 获取所有未读消息(不自动标记)
374
- * const unread = await watch_messages({ viewed: false, skipAutoMarkViewed: true });
375
- *
376
- * // 获取并自动标记为已查看(用户进入聊天界面)
377
- * const messages = await watch_messages({
378
- * peerAddress: "0x123...",
379
- * });
380
- *
381
- * // 获取已查看的消息
382
- * const viewed = await watch_messages({ viewed: true });
383
- */
384
- export async function watch_messages(filter) {
385
- if (filter?.account !== undefined) {
386
- filter.account = await Account.Instance().get_address(filter.account);
387
- if (!filter.account) {
388
- W_ERROR(WErrors.AccountNotFound, `watch_messages.account ${filter.account}`);
389
- }
390
- }
391
- if (filter?.customListFilter?.includeAddresses != null) {
392
- filter.customListFilter.includeAddresses = (await Account.Instance().get_many_address(filter.customListFilter.includeAddresses)).filter((v) => v != null);
393
- }
394
- if (filter?.customListFilter?.excludeAddresses != null) {
395
- filter.customListFilter.excludeAddresses = (await Account.Instance().get_many_address(filter.customListFilter.excludeAddresses)).filter((v) => v != null);
396
- }
397
- // 【修改】使用 MessengerManager 确保账号已就绪并查询消息
398
- const manager = getMessengerManager();
399
- if (!isInitialized) {
400
- await manager.start();
401
- }
402
- const messages = await manager.watch(filter);
403
- // 自动标记为已查看(如果不是跳过模式)
404
- const skipAutoMarkViewed = filter?.skipAutoMarkViewed ?? false;
405
- if (!skipAutoMarkViewed && messages.length > 0 && filter?.account) {
406
- const myAddress = filter.account.toLowerCase();
407
- const messageStorage = new MessageStorage(myAddress);
408
- // 筛选出未查看的接收消息
409
- const unviewedIds = messages
410
- .filter((m) => m.direction === MessageDirection.RECEIVED &&
411
- m.viewedAt === undefined)
412
- .map((m) => m.messageId);
413
- if (unviewedIds.length > 0) {
414
- messageStorage.updateMessagesViewed(unviewedIds);
415
- }
416
- }
417
- return messages;
418
- }
419
- export async function pull_messages(account, limit) {
420
- const address = await Account.Instance().get_address(account);
421
- if (!address) {
422
- W_ERROR(WErrors.AccountNotFound, `pull_messages.account ${account}`);
423
- }
424
- // 【修改】使用 MessengerManager 确保账号已就绪并拉取消息
425
- const manager = getMessengerManager();
426
- if (!isInitialized) {
427
- await manager.start();
428
- }
429
- const accountInfo = await manager.ensureAccountReady(address);
430
- const result = await accountInfo.messenger.pullMessages(limit);
431
- return result.messages.map((dm) => dm);
432
- }
433
- /**
434
- * 解压 ZIP 消息到指定目录
435
- *
436
- * @param message 包含 ZIP 数据的消息对象
437
- * @param outputDir 输出目录路径
438
- * @returns 解压后的文件路径
439
- */
440
- async function extract_zip_message(message, outputDir) {
441
- if (!message.zipMetadata) {
442
- throw new MessengerError(MessengerErrorCode.INVALID_MESSAGE_TYPE, "Message is not a ZIP archive");
443
- }
444
- if (!message.plaintext) {
445
- throw new MessengerError(MessengerErrorCode.MESSAGE_NOT_DECRYPTED, "Message plaintext not available");
446
- }
447
- // 1. 解码 base64 ZIP 数据
448
- const zipBase64 = message.plaintext;
449
- const zipData = Buffer.from(zipBase64, "base64");
450
- // 2. 验证文件哈希
451
- if (message.zipMetadata?.fileHash) {
452
- const actualHash = createHash("sha256").update(zipData).digest("hex");
453
- const expectedHash = message.zipMetadata.fileHash.replace("0x", "");
454
- if (actualHash !== expectedHash) {
455
- throw new MessengerError(MessengerErrorCode.HASH_MISMATCH, `ZIP file hash mismatch: expected ${expectedHash}, got ${actualHash}`);
456
- }
457
- }
458
- // 3. 解压 ZIP 文件
459
- const { ZipReader, BlobReader, BlobWriter } = await import("@zip.js/zip.js");
460
- const zipReader = new ZipReader(new BlobReader(new Blob([zipData])));
461
- const entries = await zipReader.getEntries();
462
- // 4. 确保输出目录存在
463
- if (!fs.existsSync(outputDir)) {
464
- fs.mkdirSync(outputDir, { recursive: true });
465
- }
466
- // 5. 保存文件
467
- const savedPaths = [];
468
- for (const entry of entries) {
469
- if (!entry.directory) {
470
- const fileEntry = entry;
471
- const writer = new BlobWriter();
472
- const blob = await fileEntry.getData(writer);
473
- const content = Buffer.from(await blob.arrayBuffer());
474
- const outputPath = path.join(outputDir, entry.filename);
475
- fs.writeFileSync(outputPath, content);
476
- savedPaths.push(outputPath);
477
- }
478
- }
479
- await zipReader.close();
480
- // 6. 更新消息元数据
481
- if (savedPaths.length > 0 && message.zipMetadata) {
482
- const updatedMetadata = {
483
- fileName: message.zipMetadata.fileName,
484
- fileSize: message.zipMetadata.fileSize,
485
- fileHash: message.zipMetadata.fileHash,
486
- contentType: message.zipMetadata.contentType,
487
- localCachePath: savedPaths[0],
488
- downloadedAt: Date.now(),
489
- };
490
- message.zipMetadata = updatedMetadata;
491
- // 根据消息方向确定用户地址
492
- const userAddress = message.direction === "sent"
493
- ? message.fromAddress
494
- : message.toAddress;
495
- const messageStorage = new MessageStorage(userAddress);
496
- messageStorage.saveMessage(message);
497
- }
498
- return savedPaths[0] || "";
499
- }
500
- /**
501
- * 批量解压多个 ZIP 消息到指定目录
502
- *
503
- * @param messages 包含 ZIP 数据的消息数组,或消息 ID 数组
504
- * @param outputDir 输出目录路径
505
- * @param userAddress 用户地址(当传入消息ID数组时需要)
506
- * @returns 解压后的文件路径数组
507
- */
508
- export async function extract_zip_messages(account, messages, outputDir) {
509
- const results = [];
510
- const userAddress = await Account.Instance().get_address(account);
511
- if (!userAddress) {
512
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, "account is required when extracting by message IDs");
513
- }
514
- for (const item of messages) {
515
- try {
516
- let message;
517
- // 逐个判断是 Message 对象还是 messageId 字符串
518
- if (typeof item === "string") {
519
- const messageId = item;
520
- const messageStorage = new MessageStorage(userAddress);
521
- const storedMessage = messageStorage.getMessageById(messageId);
522
- if (!storedMessage) {
523
- console.error(`Message not found: ${messageId}`);
524
- continue;
525
- }
526
- message = storedMessage;
527
- }
528
- else {
529
- message = item;
530
- }
531
- // 检查是否为 ZIP 消息
532
- if (!message.zipMetadata) {
533
- console.error(`Message ${message.messageId} is not a ZIP archive`);
534
- continue;
535
- }
536
- const filePath = await extract_zip_message(message, outputDir);
537
- results.push(filePath);
538
- }
539
- catch (e) {
540
- const id = typeof item === "string" ? item : item.messageId;
541
- console.error(`Failed to extract message ${id}:`, e);
542
- }
543
- }
544
- return results;
545
- }
546
- export async function generate_wts(params) {
547
- const myAddress = await Account.Instance().get_address(params.myAccount);
548
- if (!myAddress) {
549
- W_ERROR(WErrors.AccountNotFound, `generate_wts.myAccount ${params.myAccount}`);
550
- }
551
- const peerAddress = await GetAccountOrMark_Address(params.peerAccount);
552
- if (!peerAddress) {
553
- W_ERROR(WErrors.AccountNotFound, `generate_wts.peerAccount ${params.peerAccount}`);
554
- }
555
- return getMessengerManager().generate_wts(params.outputDir, myAddress, peerAddress, params.range, params.excludePlaintext);
556
- }
557
- /**
558
- * 加载 WTS 文件
559
- *
560
- * @param filePath WTS 文件路径
561
- * @returns WtsFile 对象
562
- */
563
- function load_wts(filePath) {
564
- const content = fs.readFileSync(filePath, "utf-8");
565
- return JSON.parse(content);
566
- }
567
- /**
568
- * 保存 WTS 文件
569
- *
570
- * @param wtsFile WTS 文件对象
571
- * @param filePath 保存路径
572
- */
573
- function save_wts(wtsFile, filePath) {
574
- const dir = path.dirname(filePath);
575
- if (!fs.existsSync(dir)) {
576
- fs.mkdirSync(dir, { recursive: true });
577
- }
578
- fs.writeFileSync(filePath, JSON.stringify(wtsFile, null, 2), "utf-8");
579
- }
580
- /**
581
- * 验证 WTS 文件
582
- *
583
- * 验证内容包括:
584
- * 1. 文件结构完整性
585
- * 2. Merkle 链连续性
586
- * 3. 消息哈希格式
587
- * 4. Payload 哈希匹配
588
- * 5. 数字签名(如果存在)
589
- *
590
- * @param wtsFilePath WTS 文件路径(本地或网络文件)
591
- * @returns 验证结果
592
- */
593
- export async function verify_wts(wtsFilePath) {
594
- try {
595
- // 1. 加载 WTS 文件
596
- const wtsFile = load_wts(wtsFilePath);
597
- // 2. 验证基本结构
598
- if (!wtsFile.payload || !wtsFile.meta) {
599
- return { valid: false, error: "Invalid WTS file structure" };
600
- }
601
- if (wtsFile.meta.type !== "wts") {
602
- return {
603
- valid: false,
604
- error: `Invalid meta.type: ${wtsFile.meta.type}`,
605
- };
606
- }
607
- const { payload, meta } = wtsFile;
608
- // 2. 验证每个消息的 Merkle Root 计算和链连续性
609
- // 首先按leafIndex排序消息
610
- const sortedMessages = [...payload.messages].sort((a, b) => {
611
- if (a.leafIndex === undefined || b.leafIndex === undefined)
612
- return 0;
613
- return a.leafIndex - b.leafIndex;
614
- });
615
- for (let i = 0; i < sortedMessages.length; i++) {
616
- const msg = sortedMessages[i];
617
- // 检查消息对象是否为空
618
- if (!msg) {
619
- return {
620
- valid: false,
621
- error: `Message ${i}: Message is null or undefined`,
622
- };
623
- }
624
- // 检查关键字段是否为空
625
- if (!msg.prevRoot) {
626
- return {
627
- valid: false,
628
- error: `Message ${i}: Missing prevRoot`,
629
- };
630
- }
631
- if (!msg.merkleRoot) {
632
- return {
633
- valid: false,
634
- error: `Message ${i}: Missing merkleRoot`,
635
- };
636
- }
637
- if (!msg.plaintextHash) {
638
- return {
639
- valid: false,
640
- error: `Message ${i}: Missing plaintextHash`,
641
- };
642
- }
643
- if (msg.timestamp === undefined || msg.timestamp === null) {
644
- return {
645
- valid: false,
646
- error: `Message ${i}: Missing timestamp`,
647
- };
648
- }
649
- if (msg.leafIndex === undefined || msg.leafIndex === null) {
650
- return {
651
- valid: false,
652
- error: `Message ${i}: Missing leafIndex`,
653
- };
654
- }
655
- // 验证单个消息的Merkle Root计算
656
- const result = verifySingleMerkleRoot(msg.prevRoot, msg.merkleRoot, msg.plaintextHash, msg.timestamp, msg.leafIndex);
657
- if (!result.valid) {
658
- return {
659
- valid: false,
660
- error: `${result.error} at message ${i}, leafIndex ${msg.leafIndex}`,
661
- };
662
- }
663
- // 【新增】验证Merkle链连续性(除了第一条消息)
664
- if (i > 0) {
665
- const prevMsg = sortedMessages[i - 1];
666
- // 检查leafIndex是否连续
667
- if (msg.leafIndex !== prevMsg.leafIndex + 1) {
668
- return {
669
- valid: false,
670
- error: `Merkle chain discontinuity: leafIndex ${prevMsg.leafIndex} -> ${msg.leafIndex} (expected ${prevMsg.leafIndex + 1})`,
671
- };
672
- }
673
- // 检查merkleRoot是否匹配
674
- if (msg.prevRoot.toLowerCase() !==
675
- prevMsg.merkleRoot.toLowerCase()) {
676
- return {
677
- valid: false,
678
- error: `Merkle root mismatch at leafIndex ${msg.leafIndex}: expected prevRoot=${prevMsg.merkleRoot}, got ${msg.prevRoot}`,
679
- };
680
- }
681
- }
682
- }
683
- // 3. 验证每个消息的 plaintextHash 和服务器签名(如果提供了明文)
684
- for (let i = 0; i < payload.messages.length; i++) {
685
- const msg = payload.messages[i];
686
- // 检查消息对象是否为空
687
- if (!msg) {
688
- return {
689
- valid: false,
690
- error: `Message ${i}: Message is null or undefined`,
691
- };
692
- }
693
- // 判断是否为非文本消息(ZIP/WTS/WIP)
694
- const isNonTextMsg = !!msg.zipMetadata;
695
- // 对于非文本消息,跳过 plaintextHash 格式验证(它们使用不同的哈希格式)
696
- if (!isNonTextMsg) {
697
- // 验证普通消息的 plaintextHash 格式
698
- if (!msg.plaintextHash.startsWith("0x") ||
699
- msg.plaintextHash.length !== 66) {
700
- return {
701
- valid: false,
702
- error: `Message ${i}: Invalid plaintextHash format`,
703
- };
704
- }
705
- // 如果提供了明文,验证 plaintextHash
706
- if (msg.plaintext) {
707
- const computedHash = hashPlaintext(msg.plaintext, msg.clientTimestamp, msg.guardAddress, msg.passportAddress, msg.lastReceivedLeafIndex);
708
- if (computedHash.toLowerCase() !==
709
- msg.plaintextHash.toLowerCase()) {
710
- return {
711
- valid: false,
712
- error: `Message ${i}: Plaintext hash mismatch`,
713
- };
714
- }
715
- }
716
- }
717
- // 验证服务器签名(如果提供了签名和公钥)
718
- if (msg.serverSignature && msg.serverPublicKey) {
719
- // 检查必需的字段
720
- if (!msg.timestamp) {
721
- return {
722
- valid: false,
723
- error: `Message ${i}: Missing timestamp for signature verification`,
724
- };
725
- }
726
- if (!msg.merkleRoot) {
727
- return {
728
- valid: false,
729
- error: `Message ${i}: Missing merkleRoot for signature verification`,
730
- };
731
- }
732
- if (!msg.prevRoot) {
733
- return {
734
- valid: false,
735
- error: `Message ${i}: Missing prevRoot for signature verification`,
736
- };
737
- }
738
- const signData = `${msg.prevRoot}:${msg.merkleRoot}:${msg.timestamp}:${msg.serverPublicKey}`;
739
- const signatureValid = verifyEd25519Signature(msg.serverPublicKey, signData, msg.serverSignature);
740
- if (!signatureValid) {
741
- return {
742
- valid: false,
743
- error: `Message ${i}: Server signature verification failed`,
744
- };
745
- }
746
- }
747
- }
748
- // 4. 验证 payload 哈希
749
- const { sha256 } = await import("@noble/hashes/sha256");
750
- const { bytesToHex } = await import("@noble/hashes/utils");
751
- const canonicalPayload = canonicalizeJson(payload);
752
- const computedHash = "sha256:" +
753
- bytesToHex(sha256(new TextEncoder().encode(canonicalPayload)));
754
- // DEBUG: 打印调试信息
755
- /*console.log("=== WTS Hash Verification Debug ===");
756
- console.log("Stored hash:", meta.hash);
757
- console.log("Computed hash:", computedHash);
758
- console.log(
759
- "Canonical payload:",
760
- canonicalPayload.substring(0, 500) + "...",
761
- );
762
- console.log("Payload keys:", Object.keys(payload));
763
- console.log("Messages count:", payload.messages.length);
764
- if (payload.messages.length > 0) {
765
- console.log(
766
- "First message keys:",
767
- Object.keys(payload.messages[0]),
768
- );
769
- console.log(
770
- "First message:",
771
- JSON.stringify(payload.messages[0], null, 2).substring(0, 500),
772
- );
773
- }*/
774
- if (computedHash !== meta.hash) {
775
- return {
776
- valid: false,
777
- error: "Hash mismatch - content has been tampered",
778
- hashValid: false,
779
- hasSignature: !!meta.signature,
780
- };
781
- }
782
- // 5. 验证数字签名(如果存在)
783
- const signatures = [];
784
- let signatureValid;
785
- if (meta.signature) {
786
- const { Ed25519PublicKey } = await import("../../keypairs/ed25519/publickey.js");
787
- // 支持多签名验证
788
- const sigArray = Array.isArray(meta.signature)
789
- ? meta.signature
790
- : [meta.signature];
791
- let allValid = true;
792
- for (const sig of sigArray) {
793
- let pkToUse;
794
- const pk = sig.publicKey;
795
- if (pk.startsWith("0x")) {
796
- // 16进制格式,转换为base64
797
- const buffer = Buffer.from(pk.slice(2), "hex");
798
- if (buffer.length === 33) {
799
- pkToUse = buffer.slice(1).toString("base64");
800
- }
801
- else if (buffer.length === 32) {
802
- pkToUse = buffer.toString("base64");
803
- }
804
- else {
805
- // 尝试推导地址
806
- let address;
807
- try {
808
- const pubKey = new Ed25519PublicKey(pk.slice(2));
809
- address = pubKey.toWAddress();
810
- }
811
- catch {
812
- // 推导失败不影响
813
- }
814
- signatures.push({
815
- publicKey: pk,
816
- address,
817
- valid: false,
818
- });
819
- allValid = false;
820
- continue;
821
- }
822
- }
823
- else {
824
- // 假设是base64格式,但需要确保是32字节
825
- try {
826
- const buffer = Buffer.from(pk, "base64");
827
- if (buffer.length === 33) {
828
- pkToUse = buffer.slice(1).toString("base64");
829
- }
830
- else if (buffer.length === 32) {
831
- pkToUse = buffer.toString("base64");
832
- }
833
- else {
834
- // 尝试推导地址
835
- let address;
836
- try {
837
- const pubKey = new Ed25519PublicKey(pk);
838
- address = pubKey.toWAddress();
839
- }
840
- catch {
841
- // 推导失败不影响
842
- }
843
- signatures.push({
844
- publicKey: pk,
845
- address,
846
- valid: false,
847
- });
848
- allValid = false;
849
- continue;
850
- }
851
- }
852
- catch {
853
- // 如果解码失败,直接使用原始值
854
- pkToUse = pk;
855
- }
856
- }
857
- try {
858
- const pubKey = new Ed25519PublicKey(pkToUse);
859
- const signatureBytes = Uint8Array.from(Buffer.from(sig.value, "base64"));
860
- const signValid = await pubKey.verify(new TextEncoder().encode(meta.hash), signatureBytes);
861
- // 通过公钥推导地址
862
- let address;
863
- try {
864
- address = pubKey.toWAddress();
865
- }
866
- catch {
867
- // 推导失败不影响验证
868
- }
869
- signatures.push({
870
- publicKey: pk,
871
- address,
872
- valid: signValid,
873
- });
874
- if (!signValid) {
875
- allValid = false;
876
- }
877
- }
878
- catch {
879
- // 尝试推导地址
880
- let address;
881
- try {
882
- const pubKey = new Ed25519PublicKey(pkToUse);
883
- address = pubKey.toWAddress();
884
- }
885
- catch {
886
- // 推导失败不影响
887
- }
888
- signatures.push({ publicKey: pk, address, valid: false });
889
- allValid = false;
890
- }
891
- }
892
- signatureValid = allValid;
893
- if (!signatureValid) {
894
- // 收集失败的地址
895
- const failedAddresses = signatures
896
- .filter((s) => !s.valid && s.address)
897
- .map((s) => s.address);
898
- return {
899
- valid: false,
900
- error: `Signatures from the following addresses are invalid: ${failedAddresses.join(", ")}`,
901
- hashValid: true,
902
- hasSignature: true,
903
- signatureValid: false,
904
- signatures,
905
- };
906
- }
907
- }
908
- return {
909
- valid: true,
910
- hashValid: true,
911
- hasSignature: !!meta.signature,
912
- signatureValid,
913
- signatures: signatures.length > 0 ? signatures : undefined,
914
- };
915
- }
916
- catch (error) {
917
- return {
918
- valid: false,
919
- error: `Verification error: ${error}`,
920
- hashValid: false,
921
- hasSignature: false,
922
- };
923
- }
924
- }
925
- /**
926
- * 使用账号签名 WTS 文件
927
- *
928
- * 此函数会自动加载 WTS 文件、验证格式、签名并保存。
929
- *
930
- * @param wtsFilePath WTS 文件路径(本地或网络文件)
931
- * @param account 签名账号
932
- * @param outputPath 输出文件路径(可选,默认覆盖原文件)
933
- * @returns 签名后的 WTS 文件路径
934
- */
935
- export async function sign_wts(wtsFilePath, account, outputPath) {
936
- // 1. 验证 WTS 文件格式(内部会加载文件)
937
- const verifyResult = await verify_wts(wtsFilePath);
938
- if (!verifyResult.valid) {
939
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `WTS file verification failed: ${verifyResult.error}`);
940
- }
941
- // 2. 加载 WTS 文件
942
- const wtsFile = load_wts(wtsFilePath);
943
- // 3. 获取签名者地址
944
- const address = await Account.Instance().get_address(account);
945
- if (!address) {
946
- W_ERROR(WErrors.AccountNotFound, `sign_wts.account ${account}`);
947
- }
948
- // 4. 使用 Account 签名(同时获取公钥)
949
- const signResult = await Account.Instance().signData(address, wtsFile.meta.hash);
950
- // 6. 转换公钥格式为 base64 (32字节)
951
- let publicKeyBase64;
952
- const pk = signResult.publicKey;
953
- if (pk.startsWith("0x")) {
954
- const buffer = Buffer.from(pk.slice(2), "hex");
955
- if (buffer.length === 33) {
956
- // 去掉第一个字节(通常是压缩标志)
957
- publicKeyBase64 = buffer.slice(1).toString("base64");
958
- }
959
- else if (buffer.length === 32) {
960
- publicKeyBase64 = buffer.toString("base64");
961
- }
962
- else {
963
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `Invalid public key length: ${buffer.length}, expected 32 or 33 bytes`);
964
- }
965
- }
966
- else {
967
- // 假设已经是 base64 格式
968
- publicKeyBase64 = pk;
969
- }
970
- // 7. 构建新签名
971
- const newSignature = {
972
- value: Buffer.from(signResult.signature.slice(2), "hex").toString("base64"),
973
- publicKey: publicKeyBase64,
974
- algorithm: "Ed25519",
975
- address: signResult.address,
976
- };
977
- // 8. 处理多签名:相同公钥只能有一个签名(替换已有签名)
978
- let signatures;
979
- if (wtsFile.meta.signature) {
980
- // 将已有签名转换为数组
981
- const existingSigs = Array.isArray(wtsFile.meta.signature)
982
- ? [...wtsFile.meta.signature]
983
- : [wtsFile.meta.signature];
984
- // 检查是否已存在相同公钥的签名
985
- const existingIndex = existingSigs.findIndex((sig) => sig.publicKey === publicKeyBase64);
986
- if (existingIndex >= 0) {
987
- // 替换已有签名
988
- existingSigs[existingIndex] = newSignature;
989
- signatures = existingSigs;
990
- }
991
- else {
992
- // 追加新签名
993
- signatures = [...existingSigs, newSignature];
994
- }
995
- }
996
- else {
997
- signatures = [newSignature];
998
- }
999
- // 9. 添加签名到 meta
1000
- const signedWtsFile = {
1001
- ...wtsFile,
1002
- meta: {
1003
- ...wtsFile.meta,
1004
- signature: signatures,
1005
- },
1006
- };
1007
- // 8. 确定保存路径
1008
- let savePath;
1009
- if (outputPath) {
1010
- savePath = outputPath;
1011
- }
1012
- else {
1013
- // 在原文件名前添加 signed_ 前缀
1014
- const dir = path.dirname(wtsFilePath);
1015
- const ext = path.extname(wtsFilePath);
1016
- const baseName = path.basename(wtsFilePath, ext);
1017
- savePath = path.join(dir, `signed_${baseName}${ext}`);
1018
- }
1019
- save_wts(signedWtsFile, savePath);
1020
- return savePath;
1021
- }
1022
- export async function wts2html(wtsPath, options = {}) {
1023
- const fs = await import("fs");
1024
- const path = await import("path");
1025
- // 检查是文件还是文件夹
1026
- const stats = fs.statSync(wtsPath);
1027
- if (stats.isDirectory()) {
1028
- // 处理文件夹中的所有 .wts 文件
1029
- const files = fs.readdirSync(wtsPath);
1030
- const wtsFiles = files.filter((f) => f.endsWith(".wts"));
1031
- if (wtsFiles.length === 0) {
1032
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `No .wts files found in directory: ${wtsPath}`);
1033
- }
1034
- const results = [];
1035
- for (const file of wtsFiles) {
1036
- const filePath = path.join(wtsPath, file);
1037
- const html = await convertWtsToHtml(filePath, options);
1038
- // 生成输出文件名
1039
- const outputFileName = file.replace(".wts", ".html");
1040
- const outputFilePath = options.outputPath
1041
- ? path.join(options.outputPath, outputFileName)
1042
- : path.join(wtsPath, outputFileName);
1043
- // 确保输出目录存在
1044
- const outputDir = path.dirname(outputFilePath);
1045
- if (!fs.existsSync(outputDir)) {
1046
- fs.mkdirSync(outputDir, { recursive: true });
1047
- }
1048
- fs.writeFileSync(outputFilePath, html, "utf-8");
1049
- results.push(outputFilePath);
1050
- }
1051
- return results;
1052
- }
1053
- // 处理单个文件
1054
- const html = await convertWtsToHtml(wtsPath, options);
1055
- // 如果指定了输出路径,保存到文件
1056
- if (options.outputPath) {
1057
- // 生成输出文件名
1058
- const outputFileName = path.basename(wtsPath).replace(".wts", ".html");
1059
- const outputFilePath = path.join(options.outputPath, outputFileName);
1060
- // 确保输出目录存在
1061
- const outputDir = path.dirname(outputFilePath);
1062
- if (!fs.existsSync(outputDir)) {
1063
- fs.mkdirSync(outputDir, { recursive: true });
1064
- }
1065
- fs.writeFileSync(outputFilePath, html, "utf-8");
1066
- return outputFilePath;
1067
- }
1068
- return html;
1069
- }
1070
- /**
1071
- * 将单个 WTS 文件转换为 HTML
1072
- */
1073
- async function convertWtsToHtml(wtsFilePath, options = {}) {
1074
- const { title = "WTS Document", theme = "light" } = options;
1075
- // 1. 验证文件
1076
- const verifyResult = await verify_wts(wtsFilePath);
1077
- // 2. 加载 WTS 文件
1078
- const wtsFile = load_wts(wtsFilePath);
1079
- const { payload, meta } = wtsFile;
1080
- // 获取主题颜色
1081
- const { bgColor, textColor, borderColor } = getThemeColors(theme);
1082
- // 【修正】分析消息确定"我"是谁,并收集最大 lastReceivedLeafIndex
1083
- // 算法:找出生成WTS的账户(myAccount)收到的消息中,lastReceivedLeafIndex的最大值
1084
- // 生成WTS的账户 = meta.creator
1085
- const myAddress = meta.creator;
1086
- let maxLastReceivedLeafIndex = -1;
1087
- for (const msg of payload.messages) {
1088
- // 只考虑"我"收到的消息(to === myAddress)
1089
- if (msg.to.toLowerCase() === myAddress.toLowerCase()) {
1090
- if (msg.lastReceivedLeafIndex !== undefined &&
1091
- msg.lastReceivedLeafIndex >= 0) {
1092
- // 收集最大 lastReceivedLeafIndex
1093
- if (msg.lastReceivedLeafIndex > maxLastReceivedLeafIndex) {
1094
- maxLastReceivedLeafIndex = msg.lastReceivedLeafIndex;
1095
- }
1096
- }
1097
- }
1098
- }
1099
- // 使用模板生成 HTML
1100
- return generateHtmlPage({
1101
- title,
1102
- theme,
1103
- bgColor,
1104
- textColor,
1105
- borderColor,
1106
- meta,
1107
- payload,
1108
- verifyResult,
1109
- maxLastReceivedLeafIndex,
1110
- myAddress,
1111
- });
1112
- }
1113
- /**
1114
- * 提交消息链上证明
1115
- *
1116
- * 将消息的 Merkle 证明提交到链上,创建不可篡改的证明记录。
1117
- * 此函数会先验证消息的完整性和合法性。
1118
- *
1119
- * @param account 账号名称或地址
1120
- * @param messageId 消息ID
1121
- * @param env 调用环境(包含网络、签名账号等)
1122
- * @returns 证明对象地址
1123
- */
1124
- export async function proof_message(account, messageId, network) {
1125
- // 1. 解析账号地址
1126
- const address = await Account.Instance().get_address(account);
1127
- if (!address) {
1128
- W_ERROR(WErrors.AccountNotFound, `proof_message.account ${account}`);
1129
- }
1130
- // 2. 获取消息
1131
- const messageStorage = new MessageStorage(address);
1132
- const message = messageStorage.getMessageById(messageId);
1133
- if (!message) {
1134
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `Message not found: ${messageId}`);
1135
- }
1136
- // 3. 验证消息属于该账号
1137
- if (message.fromAddress.toLowerCase() !== address.toLowerCase() &&
1138
- message.toAddress.toLowerCase() !== address.toLowerCase()) {
1139
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `Message does not belong to account ${address}`);
1140
- }
1141
- // 4. 验证服务器签名存在
1142
- if (!message.serverSignature) {
1143
- throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message does not have server signature`);
1144
- }
1145
- if (!message.serverPublicKey) {
1146
- throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message does not have server public key`);
1147
- }
1148
- // 5. 使用 verifyMessage 验证消息完整性(包含服务器签名验证)
1149
- if (!message.plaintext) {
1150
- throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message does not have plaintext`);
1151
- }
1152
- const { verifyMessage } = await import("./crypto.js");
1153
- // 构造验证参数
1154
- const verifyParams = {
1155
- messageId: message.messageId,
1156
- plaintext: message.plaintext,
1157
- plaintextHash: message.plaintextHash,
1158
- createdAt: message.createdAt,
1159
- guardAddress: message.guardAddress,
1160
- passportAddress: message.passportAddress,
1161
- lastReceivedLeafIndex: message.lastReceivedLeafIndex,
1162
- serverSignature: message.serverSignature,
1163
- serverPublicKey: message.serverPublicKey,
1164
- };
1165
- // 如果消息有完整的 Merkle 证明数据,则添加 merkleMetadata
1166
- if (message.newRoot && message.leafIndex !== undefined) {
1167
- // 检查服务器时间戳是否存在
1168
- if (!message.serverTimestamp) {
1169
- throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message ${message.messageId} missing server timestamp for verification`);
1170
- }
1171
- verifyParams.merkleMetadata = {
1172
- newRoot: message.newRoot,
1173
- prevRoot: message.prevRoot,
1174
- leafIndex: message.leafIndex,
1175
- serverTimestamp: message.serverTimestamp, // 必须使用服务器时间戳
1176
- // 注意:proofSiblings 和 proofIndices 从服务器拉取时不提供
1177
- // verifyMessage 会跳过 Merkle Proof 验证,只验证 Root 计算
1178
- };
1179
- }
1180
- const verifyResult = verifyMessage(verifyParams);
1181
- if (!verifyResult.valid) {
1182
- throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message verification failed: ${verifyResult.error}`);
1183
- }
1184
- // 6. 从消息中获取服务器公钥
1185
- if (!message.serverPublicKey) {
1186
- throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Message does not have server public key`);
1187
- }
1188
- // 7. 创建链上证明
1189
- const { CallProof } = await import("../call/proof.js");
1190
- const callProof = new CallProof({
1191
- proof: message.newRoot, // 证明root存在
1192
- server_pubkey: message.serverPublicKey,
1193
- server_signature: message.serverSignature,
1194
- proof_type: CHAIN_PROOF_TYPE, // 消息证明类型
1195
- description: `Message proof for ${messageId}`,
1196
- item_count: message.leafIndex ?? 1,
1197
- about_address: message.fromAddress.toLowerCase() === address.toLowerCase()
1198
- ? message.toAddress
1199
- : message.fromAddress,
1200
- });
1201
- // 8. 构造调用环境并执行
1202
- const env = {
1203
- network,
1204
- account: address,
1205
- };
1206
- const result = await callProof.call(env);
1207
- // 9. 使用 ResponseData 提取 Proof 对象地址
1208
- const { ResponseData: extractResponseData } = await import("../call/base.js");
1209
- const responseData = extractResponseData(result);
1210
- // 查找 Proof 类型的对象
1211
- const proofResult = responseData.find((item) => item.type === "Proof");
1212
- if (!proofResult || !proofResult.object) {
1213
- throw new MessengerError(MessengerErrorCode.INVALID_PROOF, `Failed to get proof address from transaction result`);
1214
- }
1215
- message.proof = proofResult.object;
1216
- messageStorage.saveMessage(message);
1217
- return { proofAddress: proofResult.object };
1218
- }
1219
- const MIN_PASSPORT_VALIDITY = 10; // 10 seconds
1220
- const MAX_PASSPORT_VALIDITY = 10 * 365 * 24 * 60 * 60; // 10 years in seconds
1221
- const MAX_BLACKLIST_SIZE_ONCE = 100;
1222
- const MAX_FRIENDS_SIZE_ONCE = 100;
1223
- const MAX_GUARDS_SIZE_ONCE = 10;
1224
- /**
1225
- * 黑名单管理 - 统一入口
1226
- * @param request 操作请求
1227
- * @returns 操作结果
1228
- */
1229
- export async function blacklist(request) {
1230
- const acc = await Account.Instance().get_address(request.account);
1231
- if (!acc) {
1232
- W_ERROR(WErrors.AccountNotFound, `blacklist.account ${request.account}`);
1233
- }
1234
- // 【修改】使用 MessengerManager 确保账号已就绪
1235
- const manager = getMessengerManager();
1236
- if (!isInitialized) {
1237
- await manager.start();
1238
- }
1239
- // 确保账号已就绪(自动初始化)
1240
- await manager.ensureAccountReady(acc);
1241
- switch (request.op) {
1242
- case "add": {
1243
- let addresses = await GetManyAccountOrMark_Address(request.users);
1244
- if (addresses.length === 0) {
1245
- W_ERROR(WErrors.InvalidParam, `blacklist.add.users ${request.users} have not valid addresses`);
1246
- }
1247
- // 去重
1248
- addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
1249
- if (addresses.length > MAX_BLACKLIST_SIZE_ONCE) {
1250
- W_ERROR(WErrors.InvalidParam, `blacklist.add.users ${request.users} have too many addresses, max ${MAX_BLACKLIST_SIZE_ONCE}`);
1251
- }
1252
- const result = await manager.addToBlacklist(acc, addresses);
1253
- return { op: "add", result };
1254
- }
1255
- case "remove": {
1256
- let addresses = await GetManyAccountOrMark_Address(request.users);
1257
- if (addresses.length === 0) {
1258
- W_ERROR(WErrors.InvalidParam, `blacklist.remove.users ${request.users} have not valid addresses`);
1259
- }
1260
- // 去重
1261
- addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
1262
- if (addresses.length > MAX_BLACKLIST_SIZE_ONCE) {
1263
- W_ERROR(WErrors.InvalidParam, `blacklist.remove.users ${request.users} have too many addresses, max ${MAX_BLACKLIST_SIZE_ONCE}`);
1264
- }
1265
- const result = await manager.removeFromBlacklist(acc, addresses);
1266
- return { op: "remove", result };
1267
- }
1268
- case "clear": {
1269
- const result = await manager.clearBlacklist(acc);
1270
- return { op: "clear", result };
1271
- }
1272
- case "get": {
1273
- const result = await manager.getBlacklist(acc);
1274
- return { op: "get", result };
1275
- }
1276
- case "exist": {
1277
- let addresses = await GetManyAccountOrMark_Address(request.users);
1278
- if (addresses.length === 0) {
1279
- W_ERROR(WErrors.InvalidParam, `blacklist.exist.users ${request.users} have not valid addresses`);
1280
- }
1281
- // 去重
1282
- addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
1283
- if (addresses.length > MAX_BLACKLIST_SIZE_ONCE) {
1284
- W_ERROR(WErrors.InvalidParam, `blacklist.exist.users ${request.users} have too many addresses, max ${MAX_BLACKLIST_SIZE_ONCE}`);
1285
- }
1286
- const result = await manager.existInBlacklist(acc, addresses);
1287
- return { op: "exist", result };
1288
- }
1289
- default:
1290
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `blacklist.unknown op: ${request}`);
1291
- }
1292
- }
1293
- /**
1294
- * 好友列表管理 - 统一入口
1295
- * @param request 操作请求
1296
- * @returns 操作结果
1297
- */
1298
- export async function friendslist(request) {
1299
- const acc = await Account.Instance().get_address(request.account);
1300
- if (!acc) {
1301
- W_ERROR(WErrors.AccountNotFound, `friendslist.account ${request.account}`);
1302
- }
1303
- // 【修改】使用 MessengerManager 确保账号已就绪
1304
- const manager = getMessengerManager();
1305
- if (!isInitialized) {
1306
- await manager.start();
1307
- }
1308
- // 确保账号已就绪(自动初始化)
1309
- await manager.ensureAccountReady(acc);
1310
- switch (request.op) {
1311
- case "add": {
1312
- let addresses = await GetManyAccountOrMark_Address(request.users);
1313
- if (addresses.length === 0) {
1314
- W_ERROR(WErrors.InvalidParam, `friendslist.add.users ${request.users} have not valid addresses`);
1315
- }
1316
- // 去重
1317
- addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
1318
- const result = await manager.addToFriendsList(acc, addresses);
1319
- return { op: "add", result };
1320
- }
1321
- case "remove": {
1322
- let addresses = await GetManyAccountOrMark_Address(request.users);
1323
- if (addresses.length === 0) {
1324
- W_ERROR(WErrors.InvalidParam, `friendslist.remove.users ${request.users} have not valid addresses`);
1325
- }
1326
- // 去重
1327
- addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
1328
- if (addresses.length > MAX_FRIENDS_SIZE_ONCE) {
1329
- W_ERROR(WErrors.InvalidParam, `friendslist.remove.users ${request.users} have too many addresses, max ${MAX_FRIENDS_SIZE_ONCE}`);
1330
- }
1331
- const result = await manager.removeFromFriendsList(acc, addresses);
1332
- return { op: "remove", result };
1333
- }
1334
- case "clear": {
1335
- const result = await manager.clearFriendsList(acc);
1336
- return { op: "clear", result };
1337
- }
1338
- case "get": {
1339
- const result = await manager.getFriendsList(acc);
1340
- return { op: "get", result };
1341
- }
1342
- case "exist": {
1343
- let addresses = await GetManyAccountOrMark_Address(request.users);
1344
- if (addresses.length === 0) {
1345
- W_ERROR(WErrors.InvalidParam, `friendslist.exist.users ${request.users} have not valid addresses`);
1346
- }
1347
- // 去重
1348
- addresses = [...new Set(addresses.map((a) => a.toLowerCase()))];
1349
- if (addresses.length > MAX_FRIENDS_SIZE_ONCE) {
1350
- W_ERROR(WErrors.InvalidParam, `friendslist.exist.users ${request.users} have too many addresses, max ${MAX_FRIENDS_SIZE_ONCE}`);
1351
- }
1352
- const result = await manager.existInFriendsList(acc, addresses);
1353
- return { op: "exist", result };
1354
- }
1355
- default:
1356
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `friendslist.unknown op: ${request}`);
1357
- }
1358
- }
1359
- /**
1360
- * Guard 列表管理 - 统一入口
1361
- * @param request 操作请求
1362
- * @returns 操作结果
1363
- */
1364
- export async function guardlist(request) {
1365
- const acc = await Account.Instance().get_address(request.account);
1366
- if (!acc) {
1367
- W_ERROR(WErrors.AccountNotFound, `guardlist.account ${request.account}`);
1368
- }
1369
- // 【修改】使用 MessengerManager 确保账号已就绪
1370
- const manager = getMessengerManager();
1371
- if (!isInitialized) {
1372
- await manager.start();
1373
- }
1374
- // 确保账号已就绪(自动初始化)
1375
- await manager.ensureAccountReady(acc);
1376
- switch (request.op) {
1377
- case "add": {
1378
- // 按 guard 字段去重,保留最后一个
1379
- const uniqueGuardsMap = new Map();
1380
- for (const g of request.guards) {
1381
- uniqueGuardsMap.set(g.guard.toLowerCase(), g);
1382
- }
1383
- const guards = Array.from(uniqueGuardsMap.values());
1384
- if (guards.length === 0) {
1385
- W_ERROR(WErrors.InvalidParam, `guardlist.add.guards ${request.guards} have not valid guards`);
1386
- }
1387
- // 去重
1388
- if (guards.length > MAX_GUARDS_SIZE_ONCE) {
1389
- W_ERROR(WErrors.InvalidParam, `guardlist.add.guards ${request.guards} have too many guards, max ${MAX_GUARDS_SIZE_ONCE}`);
1390
- }
1391
- // Validate TTL range
1392
- for (const g of guards) {
1393
- if (!isValidU64(g.passportValiditySeconds) ||
1394
- g.passportValiditySeconds < MIN_PASSPORT_VALIDITY ||
1395
- g.passportValiditySeconds > MAX_PASSPORT_VALIDITY) {
1396
- W_ERROR(WErrors.InvalidParam, `Guard ${g.guard}: passport validity ${g.passportValiditySeconds} must be between ${MIN_PASSPORT_VALIDITY} and ${MAX_PASSPORT_VALIDITY} seconds`);
1397
- }
1398
- }
1399
- const addresses = await LocalMark.Instance().get_many_address(guards.map((g) => g.guard));
1400
- // Validate all addresses were found
1401
- if (addresses.length !== guards.length) {
1402
- const foundAddresses = new Set(addresses);
1403
- const missingGuards = [];
1404
- for (const g of guards) {
1405
- if (!foundAddresses.has(g.guard) &&
1406
- !g.guard.startsWith("0x")) {
1407
- missingGuards.push(g.guard);
1408
- }
1409
- }
1410
- W_ERROR(WErrors.InvalidParam, `Guard not found: ${missingGuards.join(", ")}`);
1411
- }
1412
- // 通过查询检查是不是guard地址
1413
- const objs = await query_objects({
1414
- objects: addresses,
1415
- no_cache: false,
1416
- network: manager.getConfig().network,
1417
- });
1418
- if (!objs || !objs.objects || objs.objects.length === 0) {
1419
- W_ERROR(WErrors.InvalidParam, `Guard not found: ${guards.map((g) => g.guard).join(", ")}`);
1420
- }
1421
- objs.objects.forEach((obj) => {
1422
- if (obj.type !== "Guard") {
1423
- W_ERROR(WErrors.InvalidParam, `Guard ${obj.object} is not a Guard`);
1424
- }
1425
- });
1426
- const guardListItems = guards.map((g, index) => ({
1427
- guardAddress: addresses[index],
1428
- passportValiditySeconds: g.passportValiditySeconds,
1429
- }));
1430
- const result = await manager.addToGuardList(acc, guardListItems);
1431
- return { op: "add", result };
1432
- }
1433
- case "remove": {
1434
- const guards = [
1435
- ...new Set(request.guards.map((g) => g.toLowerCase())),
1436
- ];
1437
- if (guards.length === 0) {
1438
- W_ERROR(WErrors.InvalidParam, `guardlist.remove.guards ${request.guards} have not valid guards`);
1439
- }
1440
- // 去重
1441
- if (guards.length > MAX_GUARDS_SIZE_ONCE) {
1442
- W_ERROR(WErrors.InvalidParam, `guardlist.remove.guards ${request.guards} have too many guards, max ${MAX_GUARDS_SIZE_ONCE}`);
1443
- }
1444
- const addresses = await LocalMark.Instance().get_many_address(guards);
1445
- if (addresses.length !== guards.length) {
1446
- const foundAddresses = new Set(addresses);
1447
- const missingGuards = [];
1448
- for (const g of guards) {
1449
- if (!foundAddresses.has(g) && !g.startsWith("0x")) {
1450
- missingGuards.push(g);
1451
- }
1452
- }
1453
- W_ERROR(WErrors.InvalidParam, `Guard not found: ${missingGuards.join(", ")}`);
1454
- }
1455
- const result = await manager.removeFromGuardList(acc, addresses);
1456
- return { op: "remove", result };
1457
- }
1458
- case "get": {
1459
- const result = await manager.getGuardList(acc);
1460
- return { op: "get", result };
1461
- }
1462
- default:
1463
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `guardlist.unknown op: ${request}`);
1464
- }
1465
- }
1466
- /**
1467
- * 用户设置管理 - 统一入口
1468
- * @param request 操作请求
1469
- * @returns 操作结果
1470
- */
1471
- export async function settings(request) {
1472
- const acc = await Account.Instance().get_address(request.account);
1473
- if (!acc) {
1474
- W_ERROR(WErrors.AccountNotFound, `settings.account ${request.account}`);
1475
- }
1476
- // 使用 MessengerManager 确保账号已就绪
1477
- const manager = getMessengerManager();
1478
- if (!isInitialized) {
1479
- await manager.start();
1480
- }
1481
- // 确保账号已就绪(自动初始化)
1482
- await manager.ensureAccountReady(acc);
1483
- switch (request.op) {
1484
- case "get": {
1485
- const result = await manager.getSettings(acc);
1486
- return { op: "get", result };
1487
- }
1488
- case "set": {
1489
- const settings = {};
1490
- if (request.allowStrangerMessages !== undefined) {
1491
- settings.allowStrangerMessages = request.allowStrangerMessages;
1492
- }
1493
- if (request.maxInboxSize !== undefined) {
1494
- settings.maxInboxSize = request.maxInboxSize;
1495
- }
1496
- const result = await manager.setSettings(acc, settings);
1497
- return { op: "set", result };
1498
- }
1499
- default:
1500
- throw new MessengerError(MessengerErrorCode.INVALID_INPUT, `settings.unknown op: ${request}`);
1501
- }
1502
- }
1503
- //# sourceMappingURL=messenger-api.js.map
1
+ import{MessengerManager}from'./messenger-manager.js';import{Account}from'../local/account.js';import{W_ERROR,WErrors}from'../exception.js';import{LocalMark}from'../local/local.js';import{MessageStorage}from'./storage.js';import{MessengerError,MessengerErrorCode,CHAIN_PROOF_TYPE,MessageDirection}from'./types.js';import{createHash}from'crypto';import*as a181a from'fs';import*as a181b from'path';import{isValidU64}from'../common.js';import{verifySingleMerkleRoot,hashPlaintext,verifyEd25519Signature}from'./crypto.js';import{canonicalizeJson}from'./utils.js';import{generateHtmlPage,getThemeColors}from'./templates/wts-html-template.js';import{GetAccountOrMark_Address,GetManyAccountOrMark_Address}from'../local/index.js';import{query_objects}from'../query/object.js';import{Messenger}from'./messenger.js';let managerInstance=null,isInitialized=![],backgroundTimer=null;async function autoRegisterMessengerAccounts(){const a=await Account['Instance']()['list_messenger_accounts']();for(const b of a){if(!b['address']||!b['m'])continue;try{const c=new Messenger(b['address']);await c['initialize']();}catch(d){console['error']('Failed\x20to\x20initialize\x20account\x20'+b['address']+':',d);}}}export function getMessengerManager(){return!managerInstance&&(managerInstance=new MessengerManager()),!isInitialized&&(isInitialized=!![],autoRegisterMessengerAccounts()['catch'](a=>{console['error']('Failed\x20to\x20auto-register\x20messenger\x20accounts:',a);}),managerInstance['start']()['catch'](a=>{console['error']('Failed\x20to\x20auto-start\x20messenger\x20manager:',a);})),managerInstance;}function registerCleanupHandler(){const a=()=>{backgroundTimer&&(clearInterval(backgroundTimer),backgroundTimer=null),managerInstance&&managerInstance['stop']();};process['on']('exit',a),process['on']('SIGINT',()=>{a(),process['exit']();}),process['on']('SIGTERM',()=>{a(),process['exit']();});}registerCleanupHandler();export async function watch_conversations(a){const b=await Account['Instance']()['get_address'](a?.['account']);!b&&W_ERROR(WErrors['AccountNotFound'],'watch_conversations.account\x20'+a?.['account']);const c=b['toLowerCase'](),d=getMessengerManager();!isInitialized&&await d['start']();const e=await d['ensureAccountReady'](b);await e['messenger']['pullMessages']();const f=new MessageStorage(c),g=f['getAllMessages'](c),h=new Map(),i=a?.['previewMessageCount']??0x2,j=a?.['skipAutoMarkViewed']??![];for(const n of g){const o=n['fromAddress']['toLowerCase']()===c?n['toAddress']:n['fromAddress'];!h['has'](o)&&h['set'](o,{'peerAddress':o,'lastMessageAt':n['createdAt'],'messageCount':0x0,'unreadCount':0x0,'lastMessagePreview':n['plaintext'],'messages':[]});const p=h['get'](o);p['messages']['push'](n),p['messageCount']++,n['createdAt']>p['lastMessageAt']&&(p['lastMessageAt']=n['createdAt'],p['lastMessagePreview']=n['plaintext']),n['direction']===MessageDirection['RECEIVED']&&n['viewedAt']===undefined&&p['unreadCount']++;}const k=[];for(const [,q]of h){if(a?.['startTime']!==undefined&&q['lastMessageAt']<a['startTime'])continue;if(a?.['endTime']!==undefined&&q['lastMessageAt']>a['endTime'])continue;if(a?.['unreadOnly']&&q['unreadCount']===0x0)continue;const r=[];if(i>0x0){const s=q['messages']['sort']((u,v)=>v['createdAt']-u['createdAt']),t=s['slice'](0x0,i);r['push'](...t['reverse']());if(!j){const u=t['filter'](v=>v['direction']===MessageDirection['RECEIVED']&&v['viewedAt']===undefined)['map'](v=>v['messageId']);u['length']>0x0&&f['updateMessagesViewed'](u);}}k['push']({'peerAddress':q['peerAddress'],'lastMessageAt':q['lastMessageAt'],'messageCount':q['messageCount'],'unreadCount':q['unreadCount'],'lastMessagePreview':q['lastMessagePreview'],...i>0x0&&{'previewMessages':r}});}const l=a?.['sortBy']??'lastMessageAt',m=a?.['sortOrder']??'desc';return k['sort']((v,w)=>{let x=0x0;switch(l){case'lastMessageAt':x=v['lastMessageAt']-w['lastMessageAt'];break;case'unreadCount':x=v['unreadCount']-w['unreadCount'];break;case'messageCount':x=v['messageCount']-w['messageCount'];break;}return m==='asc'?x:-x;}),k;}export async function mark_messages_as_viewed(a,b){if(!a||a['length']===0x0)return 0x0;const c=await Account['Instance']()['get_address'](b);!c&&W_ERROR(WErrors['AccountNotFound'],'mark_messages_as_viewed.account\x20'+b);const d=c['toLowerCase'](),e=new MessageStorage(d);return e['updateMessagesViewed'](a);}export async function mark_conversation_as_viewed(a,b){const c=await Account['Instance']()['get_address'](b);!c&&W_ERROR(WErrors['AccountNotFound'],'mark_conversation_as_viewed.account\x20'+b);const d=c['toLowerCase'](),e=await GetAccountOrMark_Address(a);!e&&W_ERROR(WErrors['AccountNotFound'],'mark_conversation_as_viewed.peerAddress\x20'+a+'\x20is\x20not\x20a\x20valid\x20account/address');const f=e['toLowerCase'](),g=new MessageStorage(d),h=g['getMessagesBySession'](d,f),i=h['filter'](j=>j['direction']===MessageDirection['RECEIVED']&&j['viewedAt']===undefined)['map'](j=>j['messageId']);if(i['length']===0x0)return 0x0;return g['updateMessagesViewed'](i);}export async function send_message(a,b,c,d){const e=await Account['Instance']()['get_address'](a);!e&&W_ERROR(WErrors['AccountNotFound'],'send_message.from\x20'+a);const f=await GetAccountOrMark_Address(b);!f&&W_ERROR(WErrors['AccountNotFound'],'send_message.to\x20'+b+'\x20is\x20not\x20a\x20valid\x20account/address');d?.['guardAddress']!=null&&d?.['passportAddress']!=null&&([d['guardAddress'],d['passportAddress']]=await LocalMark['Instance']()['get_many_address']([d['guardAddress'],d['passportAddress']]),(!d['guardAddress']||!d['passportAddress'])&&W_ERROR(WErrors['AccountNotFound'],'send_message.guardAddress\x20or\x20passportAddress\x20not\x20found'));const g=getMessengerManager();return!isInitialized&&await g['start'](),g['send'](e,f,c,d);}export async function send_file(a,b,c,d){const e=await Account['Instance']()['get_address'](a);!e&&W_ERROR(WErrors['AccountNotFound'],'send_file.from\x20'+a);const f=await GetAccountOrMark_Address(b);!f&&W_ERROR(WErrors['AccountNotFound'],'send_file.to\x20'+b+'\x20is\x20not\x20a\x20valid\x20account/address');d?.['guardAddress']!=null&&d?.['passportAddress']!=null&&([d['guardAddress'],d['passportAddress']]=await LocalMark['Instance']()['get_many_address']([d['guardAddress'],d['passportAddress']]),(!d['guardAddress']||!d['passportAddress'])&&W_ERROR(WErrors['AccountNotFound'],'send_file.guardAddress\x20or\x20passportAddress\x20not\x20found'));const g=getMessengerManager();return!isInitialized&&await g['start'](),g['send_file'](e,f,c,d);}export async function watch_messages(a){a?.['account']!==undefined&&(a['account']=await Account['Instance']()['get_address'](a['account']),!a['account']&&W_ERROR(WErrors['AccountNotFound'],'watch_messages.account\x20'+a['account']));a?.['customListFilter']?.['includeAddresses']!=null&&(a['customListFilter']['includeAddresses']=(await Account['Instance']()['get_many_address'](a['customListFilter']['includeAddresses']))['filter'](e=>e!=null));a?.['customListFilter']?.['excludeAddresses']!=null&&(a['customListFilter']['excludeAddresses']=(await Account['Instance']()['get_many_address'](a['customListFilter']['excludeAddresses']))['filter'](e=>e!=null));const b=getMessengerManager();!isInitialized&&await b['start']();const c=await b['watch'](a),d=a?.['skipAutoMarkViewed']??![];if(!d&&c['length']>0x0&&a?.['account']){const e=a['account']['toLowerCase'](),f=new MessageStorage(e),g=c['filter'](h=>h['direction']===MessageDirection['RECEIVED']&&h['viewedAt']===undefined)['map'](h=>h['messageId']);g['length']>0x0&&f['updateMessagesViewed'](g);}return c;}export async function pull_messages(a,b){const c=await Account['Instance']()['get_address'](a);!c&&W_ERROR(WErrors['AccountNotFound'],'pull_messages.account\x20'+a);const d=getMessengerManager();!isInitialized&&await d['start']();const e=await d['ensureAccountReady'](c),f=await e['messenger']['pullMessages'](b);return f['messages']['map'](g=>g);}async function extract_zip_message(a,b){if(!a['zipMetadata'])throw new MessengerError(MessengerErrorCode['INVALID_MESSAGE_TYPE'],'Message\x20is\x20not\x20a\x20ZIP\x20archive');if(!a['plaintext'])throw new MessengerError(MessengerErrorCode['MESSAGE_NOT_DECRYPTED'],'Message\x20plaintext\x20not\x20available');const c=a['plaintext'],d=Buffer['from'](c,'base64');if(a['zipMetadata']?.['fileHash']){const k=createHash('sha256')['update'](d)['digest']('hex'),l=a['zipMetadata']['fileHash']['replace']('0x','');if(k!==l)throw new MessengerError(MessengerErrorCode['HASH_MISMATCH'],'ZIP\x20file\x20hash\x20mismatch:\x20expected\x20'+l+',\x20got\x20'+k);}const {ZipReader:e,BlobReader:f,BlobWriter:g}=await import('@zip.js/zip.js'),h=new e(new f(new Blob([d]))),i=await h['getEntries']();!a181a['existsSync'](b)&&a181a['mkdirSync'](b,{'recursive':!![]});const j=[];for(const m of i){if(!m['directory']){const n=m,o=new g(),p=await n['getData'](o),q=Buffer['from'](await p['arrayBuffer']()),r=a181b['join'](b,m['filename']);a181a['writeFileSync'](r,q),j['push'](r);}}await h['close']();if(j['length']>0x0&&a['zipMetadata']){const s={'fileName':a['zipMetadata']['fileName'],'fileSize':a['zipMetadata']['fileSize'],'fileHash':a['zipMetadata']['fileHash'],'contentType':a['zipMetadata']['contentType'],'localCachePath':j[0x0],'downloadedAt':Date['now']()};a['zipMetadata']=s;const t=a['direction']==='sent'?a['fromAddress']:a['toAddress'],u=new MessageStorage(t);u['saveMessage'](a);}return j[0x0]||'';}export async function extract_zip_messages(a,b,c){const d=[],f=await Account['Instance']()['get_address'](a);if(!f)throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'account\x20is\x20required\x20when\x20extracting\x20by\x20message\x20IDs');for(const g of b){try{let h;if(typeof g==='string'){const j=g,k=new MessageStorage(f),l=k['getMessageById'](j);if(!l){console['error']('Message\x20not\x20found:\x20'+j);continue;}h=l;}else h=g;if(!h['zipMetadata']){console['error']('Message\x20'+h['messageId']+'\x20is\x20not\x20a\x20ZIP\x20archive');continue;}const i=await extract_zip_message(h,c);d['push'](i);}catch(m){const n=typeof g==='string'?g:g['messageId'];console['error']('Failed\x20to\x20extract\x20message\x20'+n+':',m);}}return d;}export async function generate_wts(a){const b=await Account['Instance']()['get_address'](a['myAccount']);!b&&W_ERROR(WErrors['AccountNotFound'],'generate_wts.myAccount\x20'+a['myAccount']);const c=await GetAccountOrMark_Address(a['peerAccount']);return!c&&W_ERROR(WErrors['AccountNotFound'],'generate_wts.peerAccount\x20'+a['peerAccount']),getMessengerManager()['generate_wts'](a['outputDir'],b,c,a['range'],a['excludePlaintext']);}function load_wts(a){const b=a181a['readFileSync'](a,'utf-8');return JSON['parse'](b);}function save_wts(a,b){const c=a181b['dirname'](b);!a181a['existsSync'](c)&&a181a['mkdirSync'](c,{'recursive':!![]}),a181a['writeFileSync'](b,JSON['stringify'](a,null,0x2),'utf-8');}export async function verify_wts(a){try{const b=load_wts(a);if(!b['payload']||!b['meta'])return{'valid':![],'error':'Invalid\x20WTS\x20file\x20structure'};if(b['meta']['type']!=='wts')return{'valid':![],'error':'Invalid\x20meta.type:\x20'+b['meta']['type']};const {payload:c,meta:d}=b,e=[...c['messages']]['sort']((m,n)=>{if(m['leafIndex']===undefined||n['leafIndex']===undefined)return 0x0;return m['leafIndex']-n['leafIndex'];});for(let m=0x0;m<e['length'];m++){const n=e[m];if(!n)return{'valid':![],'error':'Message\x20'+m+':\x20Message\x20is\x20null\x20or\x20undefined'};if(!n['prevRoot'])return{'valid':![],'error':'Message\x20'+m+':\x20Missing\x20prevRoot'};if(!n['merkleRoot'])return{'valid':![],'error':'Message\x20'+m+':\x20Missing\x20merkleRoot'};if(!n['plaintextHash'])return{'valid':![],'error':'Message\x20'+m+':\x20Missing\x20plaintextHash'};if(n['timestamp']===undefined||n['timestamp']===null)return{'valid':![],'error':'Message\x20'+m+':\x20Missing\x20timestamp'};if(n['leafIndex']===undefined||n['leafIndex']===null)return{'valid':![],'error':'Message\x20'+m+':\x20Missing\x20leafIndex'};const o=verifySingleMerkleRoot(n['prevRoot'],n['merkleRoot'],n['plaintextHash'],n['timestamp'],n['leafIndex']);if(!o['valid'])return{'valid':![],'error':o['error']+'\x20at\x20message\x20'+m+',\x20leafIndex\x20'+n['leafIndex']};if(m>0x0){const p=e[m-0x1];if(n['leafIndex']!==p['leafIndex']+0x1)return{'valid':![],'error':'Merkle\x20chain\x20discontinuity:\x20leafIndex\x20'+p['leafIndex']+'\x20->\x20'+n['leafIndex']+'\x20(expected\x20'+(p['leafIndex']+0x1)+')'};if(n['prevRoot']['toLowerCase']()!==p['merkleRoot']['toLowerCase']())return{'valid':![],'error':'Merkle\x20root\x20mismatch\x20at\x20leafIndex\x20'+n['leafIndex']+':\x20expected\x20prevRoot='+p['merkleRoot']+',\x20got\x20'+n['prevRoot']};}}for(let q=0x0;q<c['messages']['length'];q++){const r=c['messages'][q];if(!r)return{'valid':![],'error':'Message\x20'+q+':\x20Message\x20is\x20null\x20or\x20undefined'};const s=!!r['zipMetadata'];if(!s){if(!r['plaintextHash']['startsWith']('0x')||r['plaintextHash']['length']!==0x42)return{'valid':![],'error':'Message\x20'+q+':\x20Invalid\x20plaintextHash\x20format'};if(r['plaintext']){const t=hashPlaintext(r['plaintext'],r['clientTimestamp'],r['guardAddress'],r['passportAddress'],r['lastReceivedLeafIndex']);if(t['toLowerCase']()!==r['plaintextHash']['toLowerCase']())return{'valid':![],'error':'Message\x20'+q+':\x20Plaintext\x20hash\x20mismatch'};}}if(r['serverSignature']&&r['serverPublicKey']){if(!r['timestamp'])return{'valid':![],'error':'Message\x20'+q+':\x20Missing\x20timestamp\x20for\x20signature\x20verification'};if(!r['merkleRoot'])return{'valid':![],'error':'Message\x20'+q+':\x20Missing\x20merkleRoot\x20for\x20signature\x20verification'};if(!r['prevRoot'])return{'valid':![],'error':'Message\x20'+q+':\x20Missing\x20prevRoot\x20for\x20signature\x20verification'};const u=r['prevRoot']+':'+r['merkleRoot']+':'+r['timestamp']+':'+r['serverPublicKey'],v=verifyEd25519Signature(r['serverPublicKey'],u,r['serverSignature']);if(!v)return{'valid':![],'error':'Message\x20'+q+':\x20Server\x20signature\x20verification\x20failed'};}}const {sha256:f}=await import('@noble/hashes/sha256'),{bytesToHex:g}=await import('@noble/hashes/utils'),h=canonicalizeJson(c),j='sha256:'+g(f(new TextEncoder()['encode'](h)));if(j!==d['hash'])return{'valid':![],'error':'Hash\x20mismatch\x20-\x20content\x20has\x20been\x20tampered','hashValid':![],'hasSignature':!!d['signature']};const k=[];let l;if(d['signature']){const {Ed25519PublicKey:w}=await import('../../keypairs/ed25519/publickey.js'),x=Array['isArray'](d['signature'])?d['signature']:[d['signature']];let y=!![];for(const z of x){let A;const B=z['publicKey'];if(B['startsWith']('0x')){const C=Buffer['from'](B['slice'](0x2),'hex');if(C['length']===0x21)A=C['slice'](0x1)['toString']('base64');else{if(C['length']===0x20)A=C['toString']('base64');else{let D;try{const E=new w(B['slice'](0x2));D=E['toWAddress']();}catch{}k['push']({'publicKey':B,'address':D,'valid':![]}),y=![];continue;}}}else try{const F=Buffer['from'](B,'base64');if(F['length']===0x21)A=F['slice'](0x1)['toString']('base64');else{if(F['length']===0x20)A=F['toString']('base64');else{let G;try{const H=new w(B);G=H['toWAddress']();}catch{}k['push']({'publicKey':B,'address':G,'valid':![]}),y=![];continue;}}}catch{A=B;}try{const I=new w(A),J=Uint8Array['from'](Buffer['from'](z['value'],'base64')),K=await I['verify'](new TextEncoder()['encode'](d['hash']),J);let L;try{L=I['toWAddress']();}catch{}k['push']({'publicKey':B,'address':L,'valid':K}),!K&&(y=![]);}catch{let M;try{const N=new w(A);M=N['toWAddress']();}catch{}k['push']({'publicKey':B,'address':M,'valid':![]}),y=![];}}l=y;if(!l){const O=k['filter'](P=>!P['valid']&&P['address'])['map'](P=>P['address']);return{'valid':![],'error':'Signatures\x20from\x20the\x20following\x20addresses\x20are\x20invalid:\x20'+O['join'](',\x20'),'hashValid':!![],'hasSignature':!![],'signatureValid':![],'signatures':k};}}return{'valid':!![],'hashValid':!![],'hasSignature':!!d['signature'],'signatureValid':l,'signatures':k['length']>0x0?k:undefined};}catch(P){return{'valid':![],'error':'Verification\x20error:\x20'+P,'hashValid':![],'hasSignature':![]};}}export async function sign_wts(a,b,c){const d=await verify_wts(a);if(!d['valid'])throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'WTS\x20file\x20verification\x20failed:\x20'+d['error']);const e=load_wts(a),f=await Account['Instance']()['get_address'](b);!f&&W_ERROR(WErrors['AccountNotFound'],'sign_wts.account\x20'+b);const g=await Account['Instance']()['signData'](f,e['meta']['hash']);let h;const i=g['publicKey'];if(i['startsWith']('0x')){const n=Buffer['from'](i['slice'](0x2),'hex');if(n['length']===0x21)h=n['slice'](0x1)['toString']('base64');else{if(n['length']===0x20)h=n['toString']('base64');else throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'Invalid\x20public\x20key\x20length:\x20'+n['length']+',\x20expected\x2032\x20or\x2033\x20bytes');}}else h=i;const j={'value':Buffer['from'](g['signature']['slice'](0x2),'hex')['toString']('base64'),'publicKey':h,'algorithm':'Ed25519','address':g['address']};let k;if(e['meta']['signature']){const o=Array['isArray'](e['meta']['signature'])?[...e['meta']['signature']]:[e['meta']['signature']],p=o['findIndex'](q=>q['publicKey']===h);p>=0x0?(o[p]=j,k=o):k=[...o,j];}else k=[j];const l={...e,'meta':{...e['meta'],'signature':k}};let m;if(c)m=c;else{const q=a181b['dirname'](a),r=a181b['extname'](a),s=a181b['basename'](a,r);m=a181b['join'](q,'signed_'+s+r);}return save_wts(l,m),m;}export async function wts2html(a,b={}){const c=await import('fs'),d=await import('path'),e=c['statSync'](a);if(e['isDirectory']()){const g=c['readdirSync'](a),h=g['filter'](j=>j['endsWith']('.wts'));if(h['length']===0x0)throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'No\x20.wts\x20files\x20found\x20in\x20directory:\x20'+a);const i=[];for(const j of h){const k=d['join'](a,j),l=await convertWtsToHtml(k,b),m=j['replace']('.wts','.html'),n=b['outputPath']?d['join'](b['outputPath'],m):d['join'](a,m),o=d['dirname'](n);!c['existsSync'](o)&&c['mkdirSync'](o,{'recursive':!![]}),c['writeFileSync'](n,l,'utf-8'),i['push'](n);}return i;}const f=await convertWtsToHtml(a,b);if(b['outputPath']){const p=d['basename'](a)['replace']('.wts','.html'),q=d['join'](b['outputPath'],p),r=d['dirname'](q);return!c['existsSync'](r)&&c['mkdirSync'](r,{'recursive':!![]}),c['writeFileSync'](q,f,'utf-8'),q;}return f;}async function convertWtsToHtml(a,b={}){const {title:title='WTS\x20Document',theme:theme='light'}=b,c=await verify_wts(a),d=load_wts(a),{payload:e,meta:f}=d,{bgColor:g,textColor:h,borderColor:i}=getThemeColors(theme),j=f['creator'];let k=-0x1;for(const l of e['messages']){l['to']['toLowerCase']()===j['toLowerCase']()&&(l['lastReceivedLeafIndex']!==undefined&&l['lastReceivedLeafIndex']>=0x0&&(l['lastReceivedLeafIndex']>k&&(k=l['lastReceivedLeafIndex'])));}return generateHtmlPage({'title':title,'theme':theme,'bgColor':g,'textColor':h,'borderColor':i,'meta':f,'payload':e,'verifyResult':c,'maxLastReceivedLeafIndex':k,'myAddress':j});}export async function proof_message(a,b,c){const d=await Account['Instance']()['get_address'](a);!d&&W_ERROR(WErrors['AccountNotFound'],'proof_message.account\x20'+a);const e=new MessageStorage(d),f=e['getMessageById'](b);if(!f)throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'Message\x20not\x20found:\x20'+b);if(f['fromAddress']['toLowerCase']()!==d['toLowerCase']()&&f['toAddress']['toLowerCase']()!==d['toLowerCase']())throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'Message\x20does\x20not\x20belong\x20to\x20account\x20'+d);if(!f['serverSignature'])throw new MessengerError(MessengerErrorCode['INVALID_PROOF'],'Message\x20does\x20not\x20have\x20server\x20signature');if(!f['serverPublicKey'])throw new MessengerError(MessengerErrorCode['INVALID_PROOF'],'Message\x20does\x20not\x20have\x20server\x20public\x20key');if(!f['plaintext'])throw new MessengerError(MessengerErrorCode['INVALID_PROOF'],'Message\x20does\x20not\x20have\x20plaintext');const {verifyMessage:g}=await import('./crypto.js'),h={'messageId':f['messageId'],'plaintext':f['plaintext'],'plaintextHash':f['plaintextHash'],'createdAt':f['createdAt'],'guardAddress':f['guardAddress'],'passportAddress':f['passportAddress'],'lastReceivedLeafIndex':f['lastReceivedLeafIndex'],'serverSignature':f['serverSignature'],'serverPublicKey':f['serverPublicKey']};if(f['newRoot']&&f['leafIndex']!==undefined){if(!f['serverTimestamp'])throw new MessengerError(MessengerErrorCode['INVALID_PROOF'],'Message\x20'+f['messageId']+'\x20missing\x20server\x20timestamp\x20for\x20verification');h['merkleMetadata']={'newRoot':f['newRoot'],'prevRoot':f['prevRoot'],'leafIndex':f['leafIndex'],'serverTimestamp':f['serverTimestamp']};}const i=g(h);if(!i['valid'])throw new MessengerError(MessengerErrorCode['INVALID_PROOF'],'Message\x20verification\x20failed:\x20'+i['error']);if(!f['serverPublicKey'])throw new MessengerError(MessengerErrorCode['INVALID_PROOF'],'Message\x20does\x20not\x20have\x20server\x20public\x20key');const {CallProof:j}=await import('../call/proof.js'),k=new j({'proof':f['newRoot'],'server_pubkey':f['serverPublicKey'],'server_signature':f['serverSignature'],'proof_type':CHAIN_PROOF_TYPE,'description':'Message\x20proof\x20for\x20'+b,'item_count':f['leafIndex']??0x1,'about_address':f['fromAddress']['toLowerCase']()===d['toLowerCase']()?f['toAddress']:f['fromAddress']}),l={'network':c,'account':d},m=await k['call'](l),{ResponseData:n}=await import('../call/base.js'),o=n(m),p=o['find'](q=>q['type']==='Proof');if(!p||!p['object'])throw new MessengerError(MessengerErrorCode['INVALID_PROOF'],'Failed\x20to\x20get\x20proof\x20address\x20from\x20transaction\x20result');return f['proof']=p['object'],e['saveMessage'](f),{'proofAddress':p['object']};}const MIN_PASSPORT_VALIDITY=0xa,MAX_PASSPORT_VALIDITY=0xa*0x16d*0x18*0x3c*0x3c,MAX_BLACKLIST_SIZE_ONCE=0x64,MAX_FRIENDS_SIZE_ONCE=0x64,MAX_GUARDS_SIZE_ONCE=0xa;export async function blacklist(a){const b=await Account['Instance']()['get_address'](a['account']);!b&&W_ERROR(WErrors['AccountNotFound'],'blacklist.account\x20'+a['account']);const c=getMessengerManager();!isInitialized&&await c['start']();await c['ensureAccountReady'](b);switch(a['op']){case'add':{let d=await GetManyAccountOrMark_Address(a['users']);d['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'blacklist.add.users\x20'+a['users']+'\x20have\x20not\x20valid\x20addresses');d=[...new Set(d['map'](f=>f['toLowerCase']()))];d['length']>MAX_BLACKLIST_SIZE_ONCE&&W_ERROR(WErrors['InvalidParam'],'blacklist.add.users\x20'+a['users']+'\x20have\x20too\x20many\x20addresses,\x20max\x20'+MAX_BLACKLIST_SIZE_ONCE);const e=await c['addToBlacklist'](b,d);return{'op':'add','result':e};}case'remove':{let f=await GetManyAccountOrMark_Address(a['users']);f['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'blacklist.remove.users\x20'+a['users']+'\x20have\x20not\x20valid\x20addresses');f=[...new Set(f['map'](h=>h['toLowerCase']()))];f['length']>MAX_BLACKLIST_SIZE_ONCE&&W_ERROR(WErrors['InvalidParam'],'blacklist.remove.users\x20'+a['users']+'\x20have\x20too\x20many\x20addresses,\x20max\x20'+MAX_BLACKLIST_SIZE_ONCE);const g=await c['removeFromBlacklist'](b,f);return{'op':'remove','result':g};}case'clear':{const h=await c['clearBlacklist'](b);return{'op':'clear','result':h};}case'get':{const i=await c['getBlacklist'](b);return{'op':'get','result':i};}case'exist':{let j=await GetManyAccountOrMark_Address(a['users']);j['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'blacklist.exist.users\x20'+a['users']+'\x20have\x20not\x20valid\x20addresses');j=[...new Set(j['map'](l=>l['toLowerCase']()))];j['length']>MAX_BLACKLIST_SIZE_ONCE&&W_ERROR(WErrors['InvalidParam'],'blacklist.exist.users\x20'+a['users']+'\x20have\x20too\x20many\x20addresses,\x20max\x20'+MAX_BLACKLIST_SIZE_ONCE);const k=await c['existInBlacklist'](b,j);return{'op':'exist','result':k};}default:throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'blacklist.unknown\x20op:\x20'+a);}}export async function friendslist(a){const b=await Account['Instance']()['get_address'](a['account']);!b&&W_ERROR(WErrors['AccountNotFound'],'friendslist.account\x20'+a['account']);const c=getMessengerManager();!isInitialized&&await c['start']();await c['ensureAccountReady'](b);switch(a['op']){case'add':{let d=await GetManyAccountOrMark_Address(a['users']);d['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'friendslist.add.users\x20'+a['users']+'\x20have\x20not\x20valid\x20addresses');d=[...new Set(d['map'](f=>f['toLowerCase']()))];const e=await c['addToFriendsList'](b,d);return{'op':'add','result':e};}case'remove':{let f=await GetManyAccountOrMark_Address(a['users']);f['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'friendslist.remove.users\x20'+a['users']+'\x20have\x20not\x20valid\x20addresses');f=[...new Set(f['map'](h=>h['toLowerCase']()))];f['length']>MAX_FRIENDS_SIZE_ONCE&&W_ERROR(WErrors['InvalidParam'],'friendslist.remove.users\x20'+a['users']+'\x20have\x20too\x20many\x20addresses,\x20max\x20'+MAX_FRIENDS_SIZE_ONCE);const g=await c['removeFromFriendsList'](b,f);return{'op':'remove','result':g};}case'clear':{const h=await c['clearFriendsList'](b);return{'op':'clear','result':h};}case'get':{const i=await c['getFriendsList'](b);return{'op':'get','result':i};}case'exist':{let j=await GetManyAccountOrMark_Address(a['users']);j['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'friendslist.exist.users\x20'+a['users']+'\x20have\x20not\x20valid\x20addresses');j=[...new Set(j['map'](l=>l['toLowerCase']()))];j['length']>MAX_FRIENDS_SIZE_ONCE&&W_ERROR(WErrors['InvalidParam'],'friendslist.exist.users\x20'+a['users']+'\x20have\x20too\x20many\x20addresses,\x20max\x20'+MAX_FRIENDS_SIZE_ONCE);const k=await c['existInFriendsList'](b,j);return{'op':'exist','result':k};}default:throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'friendslist.unknown\x20op:\x20'+a);}}export async function guardlist(a){const b=await Account['Instance']()['get_address'](a['account']);!b&&W_ERROR(WErrors['AccountNotFound'],'guardlist.account\x20'+a['account']);const c=getMessengerManager();!isInitialized&&await c['start']();await c['ensureAccountReady'](b);switch(a['op']){case'add':{const d=new Map();for(const k of a['guards']){d['set'](k['guard']['toLowerCase'](),k);}const e=Array['from'](d['values']());e['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'guardlist.add.guards\x20'+a['guards']+'\x20have\x20not\x20valid\x20guards');e['length']>MAX_GUARDS_SIZE_ONCE&&W_ERROR(WErrors['InvalidParam'],'guardlist.add.guards\x20'+a['guards']+'\x20have\x20too\x20many\x20guards,\x20max\x20'+MAX_GUARDS_SIZE_ONCE);for(const l of e){(!isValidU64(l['passportValiditySeconds'])||l['passportValiditySeconds']<MIN_PASSPORT_VALIDITY||l['passportValiditySeconds']>MAX_PASSPORT_VALIDITY)&&W_ERROR(WErrors['InvalidParam'],'Guard\x20'+l['guard']+':\x20passport\x20validity\x20'+l['passportValiditySeconds']+'\x20must\x20be\x20between\x20'+MIN_PASSPORT_VALIDITY+'\x20and\x20'+MAX_PASSPORT_VALIDITY+'\x20seconds');}const f=await LocalMark['Instance']()['get_many_address'](e['map'](m=>m['guard']));if(f['length']!==e['length']){const m=new Set(f),n=[];for(const o of e){!m['has'](o['guard'])&&!o['guard']['startsWith']('0x')&&n['push'](o['guard']);}W_ERROR(WErrors['InvalidParam'],'Guard\x20not\x20found:\x20'+n['join'](',\x20'));}const h=await query_objects({'objects':f,'no_cache':![],'network':c['getConfig']()['network']});(!h||!h['objects']||h['objects']['length']===0x0)&&W_ERROR(WErrors['InvalidParam'],'Guard\x20not\x20found:\x20'+e['map'](p=>p['guard'])['join'](',\x20'));h['objects']['forEach'](p=>{p['type']!=='Guard'&&W_ERROR(WErrors['InvalidParam'],'Guard\x20'+p['object']+'\x20is\x20not\x20a\x20Guard');});const i=e['map']((p,q)=>({'guardAddress':f[q],'passportValiditySeconds':p['passportValiditySeconds']})),j=await c['addToGuardList'](b,i);return{'op':'add','result':j};}case'remove':{const p=[...new Set(a['guards']['map'](s=>s['toLowerCase']()))];p['length']===0x0&&W_ERROR(WErrors['InvalidParam'],'guardlist.remove.guards\x20'+a['guards']+'\x20have\x20not\x20valid\x20guards');p['length']>MAX_GUARDS_SIZE_ONCE&&W_ERROR(WErrors['InvalidParam'],'guardlist.remove.guards\x20'+a['guards']+'\x20have\x20too\x20many\x20guards,\x20max\x20'+MAX_GUARDS_SIZE_ONCE);const q=await LocalMark['Instance']()['get_many_address'](p);if(q['length']!==p['length']){const s=new Set(q),t=[];for(const u of p){!s['has'](u)&&!u['startsWith']('0x')&&t['push'](u);}W_ERROR(WErrors['InvalidParam'],'Guard\x20not\x20found:\x20'+t['join'](',\x20'));}const r=await c['removeFromGuardList'](b,q);return{'op':'remove','result':r};}case'get':{const v=await c['getGuardList'](b);return{'op':'get','result':v};}default:throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'guardlist.unknown\x20op:\x20'+a);}}export async function settings(a){const b=await Account['Instance']()['get_address'](a['account']);!b&&W_ERROR(WErrors['AccountNotFound'],'settings.account\x20'+a['account']);const c=getMessengerManager();!isInitialized&&await c['start']();await c['ensureAccountReady'](b);switch(a['op']){case'get':{const d=await c['getSettings'](b);return{'op':'get','result':d};}case'set':{const e={};a['allowStrangerMessages']!==undefined&&(e['allowStrangerMessages']=a['allowStrangerMessages']);a['maxInboxSize']!==undefined&&(e['maxInboxSize']=a['maxInboxSize']);const f=await c['setSettings'](b,e);return{'op':'set','result':f};}default:throw new MessengerError(MessengerErrorCode['INVALID_INPUT'],'settings.unknown\x20op:\x20'+a);}}