wowok 1.8.2 → 2.1.9

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 (892) hide show
  1. package/README.md +4 -33
  2. package/dist/cjs/bcs/bcs.d.ts +1973 -0
  3. package/dist/cjs/bcs/bcs.js +327 -0
  4. package/dist/cjs/bcs/effects.d.ts +579 -0
  5. package/dist/cjs/bcs/effects.js +231 -0
  6. package/dist/cjs/bcs/index.d.ts +2589 -0
  7. package/dist/cjs/bcs/index.js +79 -0
  8. package/dist/cjs/bcs/pure.d.ts +22 -0
  9. package/dist/cjs/bcs/pure.js +62 -0
  10. package/dist/cjs/bcs/type-tag-serializer.d.ts +7 -0
  11. package/dist/cjs/bcs/type-tag-serializer.js +124 -0
  12. package/dist/cjs/bcs/types.d.ts +114 -0
  13. package/dist/cjs/bcs/types.js +26 -0
  14. package/dist/cjs/client/index.d.ts +5 -0
  15. package/dist/cjs/client/index.js +34 -0
  16. package/dist/cjs/client/network.d.ts +5 -0
  17. package/dist/cjs/client/network.js +43 -0
  18. package/dist/cjs/cryptography/index.d.ts +7 -0
  19. package/dist/cjs/cryptography/index.js +46 -0
  20. package/dist/cjs/cryptography/intent.d.ts +6 -0
  21. package/dist/cjs/cryptography/intent.js +34 -0
  22. package/dist/cjs/cryptography/keypair.d.ts +73 -0
  23. package/dist/cjs/cryptography/keypair.js +125 -0
  24. package/dist/cjs/cryptography/mnemonics.d.ts +27 -0
  25. package/dist/cjs/cryptography/mnemonics.js +50 -0
  26. package/dist/cjs/cryptography/publickey.d.ts +67 -0
  27. package/dist/cjs/cryptography/publickey.js +142 -0
  28. package/dist/cjs/cryptography/signature-scheme.d.ts +24 -0
  29. package/dist/cjs/cryptography/signature-scheme.js +47 -0
  30. package/dist/cjs/cryptography/signature.d.ts +62 -0
  31. package/dist/cjs/cryptography/signature.js +71 -0
  32. package/dist/cjs/experimental/cache.d.ts +12 -0
  33. package/dist/cjs/experimental/client.d.ts +12 -0
  34. package/dist/cjs/experimental/core.d.ts +33 -0
  35. package/dist/cjs/experimental/errors.d.ts +8 -0
  36. package/dist/cjs/experimental/index.d.ts +7 -0
  37. package/dist/cjs/experimental/persistent-storage.d.ts +134 -0
  38. package/dist/cjs/experimental/persistent-storage.test.d.ts +5 -0
  39. package/dist/cjs/experimental/transports/utils.d.ts +3 -0
  40. package/dist/cjs/experimental/types.d.ts +367 -0
  41. package/dist/cjs/faucet/faucet.d.ts +66 -0
  42. package/dist/cjs/faucet/faucet.js +138 -0
  43. package/dist/cjs/faucet/index.d.ts +1 -0
  44. package/dist/cjs/faucet/index.js +29 -0
  45. package/dist/cjs/graphql/client.js +98 -0
  46. package/dist/cjs/graphql/core.js +506 -0
  47. package/dist/cjs/graphql/generated/2024.1/tada-env.js +13141 -0
  48. package/dist/cjs/graphql/generated/2024.1/tsconfig.tada.js +11 -0
  49. package/dist/cjs/graphql/generated/2024.4/tada-env.js +13287 -0
  50. package/dist/cjs/graphql/generated/2024.4/tsconfig.tada.js +11 -0
  51. package/dist/cjs/graphql/generated/latest/tada-env.js +12925 -0
  52. package/dist/cjs/graphql/generated/latest/tsconfig.tada.js +11 -0
  53. package/dist/cjs/graphql/generated/queries.js +807 -0
  54. package/dist/cjs/graphql/index.js +25 -0
  55. package/dist/cjs/graphql/schemas/2024.1/index.js +28 -0
  56. package/dist/cjs/graphql/schemas/2024.4/index.js +28 -0
  57. package/dist/cjs/graphql/schemas/latest/index.js +28 -0
  58. package/dist/cjs/graphql/types.js +16 -0
  59. package/dist/cjs/grpc/client.d.ts +32 -0
  60. package/dist/cjs/grpc/client.js +64 -0
  61. package/dist/cjs/grpc/core.d.ts +28 -0
  62. package/dist/cjs/grpc/core.js +645 -0
  63. package/dist/cjs/grpc/index.d.ts +4 -0
  64. package/dist/cjs/grpc/index.js +26 -0
  65. package/dist/cjs/grpc/proto/google/protobuf/any.d.ts +173 -0
  66. package/dist/cjs/grpc/proto/google/protobuf/any.js +138 -0
  67. package/dist/cjs/grpc/proto/google/protobuf/duration.d.ts +104 -0
  68. package/dist/cjs/grpc/proto/google/protobuf/duration.js +94 -0
  69. package/dist/cjs/grpc/proto/google/protobuf/empty.d.ts +25 -0
  70. package/dist/cjs/grpc/proto/google/protobuf/empty.js +30 -0
  71. package/dist/cjs/grpc/proto/google/protobuf/field_mask.d.ts +231 -0
  72. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +77 -0
  73. package/dist/cjs/grpc/proto/google/protobuf/struct.d.ts +169 -0
  74. package/dist/cjs/grpc/proto/google/protobuf/struct.js +224 -0
  75. package/dist/cjs/grpc/proto/google/protobuf/timestamp.d.ts +145 -0
  76. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +134 -0
  77. package/dist/cjs/grpc/proto/google/rpc/error_details.d.ts +525 -0
  78. package/dist/cjs/grpc/proto/google/rpc/error_details.js +317 -0
  79. package/dist/cjs/grpc/proto/google/rpc/status.d.ts +46 -0
  80. package/dist/cjs/grpc/proto/google/rpc/status.js +52 -0
  81. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.d.ts +66 -0
  82. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +70 -0
  83. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.d.ts +34 -0
  84. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +52 -0
  85. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.d.ts +30 -0
  86. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +45 -0
  87. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.d.ts +68 -0
  88. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +77 -0
  89. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.d.ts +74 -0
  90. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +84 -0
  91. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.d.ts +195 -0
  92. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +170 -0
  93. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.d.ts +338 -0
  94. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +300 -0
  95. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.d.ts +62 -0
  96. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +87 -0
  97. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.d.ts +17 -0
  98. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +29 -0
  99. package/dist/cjs/grpc/proto/sui/rpc/v2/event.d.ts +88 -0
  100. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +86 -0
  101. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.d.ts +80 -0
  102. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +87 -0
  103. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.d.ts +843 -0
  104. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +519 -0
  105. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.d.ts +41 -0
  106. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +63 -0
  107. package/dist/cjs/grpc/proto/sui/rpc/v2/input.d.ts +98 -0
  108. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +85 -0
  109. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.d.ts +70 -0
  110. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +81 -0
  111. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts +95 -0
  112. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +122 -0
  113. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.d.ts +420 -0
  114. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +368 -0
  115. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.d.ts +579 -0
  116. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +485 -0
  117. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.d.ts +61 -0
  118. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +81 -0
  119. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.d.ts +229 -0
  120. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +241 -0
  121. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.d.ts +41 -0
  122. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +55 -0
  123. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.d.ts +144 -0
  124. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +141 -0
  125. package/dist/cjs/grpc/proto/sui/rpc/v2/object.d.ts +127 -0
  126. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +114 -0
  127. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.d.ts +34 -0
  128. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +53 -0
  129. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.d.ts +61 -0
  130. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +63 -0
  131. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.d.ts +30 -0
  132. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +61 -0
  133. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.d.ts +630 -0
  134. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +541 -0
  135. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.d.ts +40 -0
  136. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +33 -0
  137. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.ts +35 -0
  138. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +50 -0
  139. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.d.ts +79 -0
  140. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +90 -0
  141. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.d.ts +71 -0
  142. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +88 -0
  143. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.d.ts +690 -0
  144. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +546 -0
  145. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.d.ts +55 -0
  146. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +54 -0
  147. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.d.ts +57 -0
  148. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +65 -0
  149. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.d.ts +684 -0
  150. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +740 -0
  151. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.d.ts +1321 -0
  152. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1005 -0
  153. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.ts +41 -0
  154. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +49 -0
  155. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.d.ts +184 -0
  156. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +177 -0
  157. package/dist/cjs/index.d.ts +25 -0
  158. package/dist/cjs/index.js +93 -0
  159. package/dist/cjs/jsonRpc/client.d.ts +261 -0
  160. package/dist/cjs/jsonRpc/client.js +747 -0
  161. package/dist/cjs/jsonRpc/core.d.ts +87 -0
  162. package/dist/cjs/jsonRpc/core.js +638 -0
  163. package/dist/cjs/jsonRpc/errors.d.ts +12 -0
  164. package/dist/cjs/jsonRpc/errors.js +65 -0
  165. package/dist/cjs/jsonRpc/http-transport.d.ts +42 -0
  166. package/dist/cjs/jsonRpc/http-transport.js +121 -0
  167. package/dist/cjs/jsonRpc/index.d.ts +4 -0
  168. package/dist/cjs/jsonRpc/index.js +31 -0
  169. package/dist/cjs/jsonRpc/json-rpc-resolver.d.ts +4 -0
  170. package/dist/cjs/jsonRpc/json-rpc-resolver.js +321 -0
  171. package/dist/cjs/jsonRpc/rpc-websocket-client.d.ts +43 -0
  172. package/dist/cjs/jsonRpc/rpc-websocket-client.js +220 -0
  173. package/dist/cjs/jsonRpc/types/chain.d.ts +99 -0
  174. package/dist/cjs/jsonRpc/types/chain.js +16 -0
  175. package/dist/cjs/jsonRpc/types/changes.d.ts +19 -0
  176. package/dist/cjs/jsonRpc/types/changes.js +16 -0
  177. package/dist/cjs/jsonRpc/types/coins.d.ts +6 -0
  178. package/dist/cjs/jsonRpc/types/coins.js +16 -0
  179. package/dist/cjs/jsonRpc/types/common.d.ts +2 -0
  180. package/dist/cjs/jsonRpc/types/common.js +16 -0
  181. package/dist/cjs/jsonRpc/types/generated.d.ts +1492 -0
  182. package/dist/cjs/jsonRpc/types/generated.js +16 -0
  183. package/dist/cjs/jsonRpc/types/index.d.ts +6 -0
  184. package/dist/cjs/jsonRpc/types/index.js +16 -0
  185. package/dist/cjs/jsonRpc/types/params.d.ts +656 -0
  186. package/dist/cjs/jsonRpc/types/params.js +16 -0
  187. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.d.ts +8 -0
  188. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +82 -0
  189. package/dist/cjs/keypairs/ed25519/index.d.ts +2 -0
  190. package/dist/cjs/keypairs/ed25519/index.js +27 -0
  191. package/dist/cjs/keypairs/ed25519/keypair.d.ts +74 -0
  192. package/dist/cjs/keypairs/ed25519/keypair.js +169 -0
  193. package/dist/cjs/keypairs/ed25519/publickey.d.ts +30 -0
  194. package/dist/cjs/keypairs/ed25519/publickey.js +90 -0
  195. package/dist/cjs/keypairs/index.d.ts +4 -0
  196. package/dist/cjs/keypairs/index.js +21 -0
  197. package/dist/cjs/keypairs/passkey/index.d.ts +3 -0
  198. package/dist/cjs/keypairs/passkey/index.js +28 -0
  199. package/dist/cjs/keypairs/passkey/keypair.d.ts +113 -0
  200. package/dist/cjs/keypairs/passkey/keypair.js +268 -0
  201. package/dist/cjs/keypairs/passkey/publickey.d.ts +72 -0
  202. package/dist/cjs/keypairs/passkey/publickey.js +175 -0
  203. package/dist/cjs/keypairs/passkey/types.d.ts +12 -0
  204. package/dist/cjs/keypairs/passkey/types.js +16 -0
  205. package/dist/cjs/keypairs/secp256k1/index.d.ts +2 -0
  206. package/dist/cjs/keypairs/secp256k1/index.js +27 -0
  207. package/dist/cjs/keypairs/secp256k1/keypair.d.ts +73 -0
  208. package/dist/cjs/keypairs/secp256k1/keypair.js +159 -0
  209. package/dist/cjs/keypairs/secp256k1/publickey.d.ts +30 -0
  210. package/dist/cjs/keypairs/secp256k1/publickey.js +95 -0
  211. package/dist/cjs/keypairs/secp256r1/index.d.ts +2 -0
  212. package/dist/cjs/keypairs/secp256r1/index.js +27 -0
  213. package/dist/cjs/keypairs/secp256r1/keypair.d.ts +73 -0
  214. package/dist/cjs/keypairs/secp256r1/keypair.js +155 -0
  215. package/dist/cjs/keypairs/secp256r1/publickey.d.ts +30 -0
  216. package/dist/cjs/keypairs/secp256r1/publickey.js +96 -0
  217. package/dist/cjs/multisig/index.d.ts +2 -0
  218. package/dist/cjs/multisig/index.js +27 -0
  219. package/dist/cjs/multisig/publickey.d.ts +79 -0
  220. package/dist/cjs/multisig/publickey.js +296 -0
  221. package/dist/cjs/multisig/signer.d.ts +20 -0
  222. package/dist/cjs/multisig/signer.js +114 -0
  223. package/dist/cjs/package.json +5 -0
  224. package/dist/cjs/transactions/Arguments.d.ts +57 -0
  225. package/dist/cjs/transactions/Arguments.js +36 -0
  226. package/dist/cjs/transactions/Commands.d.ts +57 -0
  227. package/dist/cjs/transactions/Commands.js +143 -0
  228. package/dist/cjs/transactions/Inputs.d.ts +22 -0
  229. package/dist/cjs/transactions/Inputs.js +87 -0
  230. package/dist/cjs/transactions/ObjectCache.d.ts +83 -0
  231. package/dist/cjs/transactions/ObjectCache.js +251 -0
  232. package/dist/cjs/transactions/Transaction.d.ts +710 -0
  233. package/dist/cjs/transactions/Transaction.js +742 -0
  234. package/dist/cjs/transactions/TransactionData.d.ts +73 -0
  235. package/dist/cjs/transactions/TransactionData.js +472 -0
  236. package/dist/cjs/transactions/__tests__/Transaction.test.d.ts +1 -0
  237. package/dist/cjs/transactions/__tests__/bcs.test.d.ts +1 -0
  238. package/dist/cjs/transactions/data/internal.d.ts +1010 -0
  239. package/dist/cjs/transactions/data/internal.js +230 -0
  240. package/dist/cjs/transactions/data/v1.d.ts +312 -0
  241. package/dist/cjs/transactions/data/v1.js +538 -0
  242. package/dist/cjs/transactions/data/v2.d.ts +153 -0
  243. package/dist/cjs/transactions/data/v2.js +124 -0
  244. package/dist/cjs/transactions/executor/caching.d.ts +31 -0
  245. package/dist/cjs/transactions/executor/caching.js +118 -0
  246. package/dist/cjs/transactions/executor/parallel.d.ts +37 -0
  247. package/dist/cjs/transactions/executor/parallel.js +395 -0
  248. package/dist/cjs/transactions/executor/queue.d.ts +11 -0
  249. package/dist/cjs/transactions/executor/queue.js +87 -0
  250. package/dist/cjs/transactions/executor/serial.d.ts +31 -0
  251. package/dist/cjs/transactions/executor/serial.js +136 -0
  252. package/dist/cjs/transactions/hash.d.ts +7 -0
  253. package/dist/cjs/transactions/hash.js +31 -0
  254. package/dist/cjs/transactions/index.d.ts +21 -0
  255. package/dist/cjs/transactions/index.js +50 -0
  256. package/dist/cjs/transactions/intents/CoinWithBalance.d.ts +9 -0
  257. package/dist/cjs/transactions/intents/CoinWithBalance.js +206 -0
  258. package/dist/cjs/transactions/object.d.ts +24 -0
  259. package/dist/cjs/transactions/object.js +116 -0
  260. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.d.ts +31 -0
  261. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +37 -0
  262. package/dist/cjs/transactions/pure.d.ts +20 -0
  263. package/dist/cjs/transactions/pure.js +64 -0
  264. package/dist/cjs/transactions/resolve.d.ts +13 -0
  265. package/dist/cjs/transactions/resolve.js +103 -0
  266. package/dist/cjs/transactions/serializer.d.ts +7 -0
  267. package/dist/cjs/transactions/serializer.js +189 -0
  268. package/dist/cjs/transactions/utils.d.ts +10 -0
  269. package/dist/cjs/transactions/utils.js +143 -0
  270. package/dist/cjs/utils/constants.d.ts +17 -0
  271. package/dist/cjs/utils/constants.js +57 -0
  272. package/dist/cjs/utils/derived-objects.d.ts +5 -0
  273. package/dist/cjs/utils/derived-objects.js +33 -0
  274. package/dist/cjs/utils/dynamic-fields.d.ts +2 -0
  275. package/dist/cjs/utils/dynamic-fields.js +40 -0
  276. package/dist/cjs/utils/format.d.ts +2 -0
  277. package/dist/cjs/utils/format.js +35 -0
  278. package/dist/cjs/utils/index.d.ts +8 -0
  279. package/dist/cjs/utils/index.js +65 -0
  280. package/dist/cjs/utils/move-registry.d.ts +6 -0
  281. package/dist/cjs/utils/move-registry.js +44 -0
  282. package/dist/cjs/utils/sui-types.d.ts +26 -0
  283. package/dist/cjs/utils/sui-types.js +90 -0
  284. package/dist/cjs/utils/suins.d.ts +2 -0
  285. package/dist/cjs/utils/suins.js +56 -0
  286. package/dist/cjs/verify/index.d.ts +1 -0
  287. package/dist/cjs/verify/index.js +28 -0
  288. package/dist/cjs/verify/verify.d.ts +16 -0
  289. package/dist/cjs/verify/verify.js +125 -0
  290. package/dist/cjs/version.d.ts +2 -0
  291. package/dist/cjs/version.js +26 -0
  292. package/dist/cjs/w/call/allocation.d.ts +35 -0
  293. package/dist/cjs/w/call/allocation.js +439 -0
  294. package/dist/cjs/w/call/arb.d.ts +17 -0
  295. package/dist/cjs/w/call/arb.js +149 -0
  296. package/dist/cjs/w/call/arbitration.d.ts +106 -0
  297. package/dist/cjs/w/call/arbitration.js +1623 -0
  298. package/dist/cjs/w/call/base.d.ts +42 -0
  299. package/dist/cjs/w/call/base.js +363 -0
  300. package/dist/cjs/w/call/contact.d.ts +45 -0
  301. package/dist/cjs/w/call/contact.js +479 -0
  302. package/dist/cjs/w/call/demand.d.ts +79 -0
  303. package/dist/cjs/w/call/demand.js +872 -0
  304. package/dist/cjs/w/call/entity.d.ts +33 -0
  305. package/dist/cjs/w/call/entity.js +230 -0
  306. package/dist/cjs/w/call/guard-ins.d.ts +31 -0
  307. package/dist/cjs/w/call/guard-ins.js +4391 -0
  308. package/dist/cjs/w/call/guard.d.ts +254 -0
  309. package/dist/cjs/w/call/guard.js +1210 -0
  310. package/dist/cjs/w/call/index.d.ts +37 -0
  311. package/dist/cjs/w/call/index.js +71 -0
  312. package/dist/cjs/w/call/machine.d.ts +124 -0
  313. package/dist/cjs/w/call/machine.js +1486 -0
  314. package/dist/cjs/w/call/order.d.ts +73 -0
  315. package/dist/cjs/w/call/order.js +485 -0
  316. package/dist/cjs/w/call/passport.d.ts +24 -0
  317. package/dist/cjs/w/call/passport.js +281 -0
  318. package/dist/cjs/w/call/payment.d.ts +27 -0
  319. package/dist/cjs/w/call/payment.js +241 -0
  320. package/dist/cjs/w/call/permission.d.ts +222 -0
  321. package/dist/cjs/w/call/permission.js +1368 -0
  322. package/dist/cjs/w/call/personal.d.ts +51 -0
  323. package/dist/cjs/w/call/personal.js +184 -0
  324. package/dist/cjs/w/call/progress.d.ts +94 -0
  325. package/dist/cjs/w/call/progress.js +833 -0
  326. package/dist/cjs/w/call/proof.d.ts +27 -0
  327. package/dist/cjs/w/call/proof.js +124 -0
  328. package/dist/cjs/w/call/repository.d.ts +97 -0
  329. package/dist/cjs/w/call/repository.js +1324 -0
  330. package/dist/cjs/w/call/resource.d.ts +27 -0
  331. package/dist/cjs/w/call/resource.js +149 -0
  332. package/dist/cjs/w/call/reward.d.ts +52 -0
  333. package/dist/cjs/w/call/reward.js +879 -0
  334. package/dist/cjs/w/call/service.d.ts +184 -0
  335. package/dist/cjs/w/call/service.js +2468 -0
  336. package/dist/cjs/w/call/treasury.d.ts +77 -0
  337. package/dist/cjs/w/call/treasury.js +1192 -0
  338. package/dist/cjs/w/call/util.d.ts +12 -0
  339. package/dist/cjs/w/call/util.js +661 -0
  340. package/dist/cjs/w/common.d.ts +359 -0
  341. package/dist/cjs/w/common.js +625 -0
  342. package/dist/cjs/w/exception.d.ts +82 -0
  343. package/dist/cjs/w/exception.js +604 -0
  344. package/dist/cjs/w/index.d.ts +8 -0
  345. package/dist/cjs/w/index.js +25 -0
  346. package/dist/cjs/w/local/.eslintrc.js +15 -0
  347. package/dist/cjs/w/local/account.d.ts +134 -0
  348. package/dist/cjs/w/local/account.js +770 -0
  349. package/dist/cjs/w/local/cache.d.ts +35 -0
  350. package/dist/cjs/w/local/cache.js +181 -0
  351. package/dist/cjs/w/local/config.d.ts +15 -0
  352. package/dist/cjs/w/local/config.js +83 -0
  353. package/dist/cjs/w/local/index.d.ts +193 -0
  354. package/dist/cjs/w/local/index.js +322 -0
  355. package/dist/cjs/w/local/local.d.ts +93 -0
  356. package/dist/cjs/w/local/local.js +673 -0
  357. package/dist/cjs/w/local/storage.d.ts +61 -0
  358. package/dist/cjs/w/local/storage.js +219 -0
  359. package/dist/cjs/w/local/token.d.ts +22 -0
  360. package/dist/cjs/w/local/token.js +182 -0
  361. package/dist/cjs/w/local/util.d.ts +5 -0
  362. package/dist/cjs/w/local/util.js +57 -0
  363. package/dist/cjs/w/local/wip.d.ts +218 -0
  364. package/dist/cjs/w/local/wip.js +911 -0
  365. package/dist/cjs/w/messenger/.eslintrc.js +15 -0
  366. package/dist/cjs/w/messenger/crypto.d.ts +269 -0
  367. package/dist/cjs/w/messenger/crypto.js +448 -0
  368. package/dist/cjs/w/messenger/index.d.ts +23 -0
  369. package/dist/cjs/w/messenger/index.js +37 -0
  370. package/dist/cjs/w/messenger/messenger-api.d.ts +225 -0
  371. package/dist/cjs/w/messenger/messenger-api.js +1247 -0
  372. package/dist/cjs/w/messenger/messenger-manager.d.ts +80 -0
  373. package/dist/cjs/w/messenger/messenger-manager.js +1143 -0
  374. package/dist/cjs/w/messenger/messenger.d.ts +231 -0
  375. package/dist/cjs/w/messenger/messenger.js +1512 -0
  376. package/dist/cjs/w/messenger/server.d.ts +134 -0
  377. package/dist/cjs/w/messenger/server.js +535 -0
  378. package/dist/cjs/w/messenger/session.d.ts +78 -0
  379. package/dist/cjs/w/messenger/session.js +418 -0
  380. package/dist/cjs/w/messenger/storage.d.ts +192 -0
  381. package/dist/cjs/w/messenger/storage.js +964 -0
  382. package/dist/cjs/w/messenger/types.d.ts +705 -0
  383. package/dist/cjs/w/messenger/types.js +107 -0
  384. package/dist/cjs/w/messenger/utils.d.ts +15 -0
  385. package/dist/cjs/w/messenger/utils.js +37 -0
  386. package/dist/cjs/w/query/bult-in.d.ts +73 -0
  387. package/dist/cjs/w/query/bult-in.js +121 -0
  388. package/dist/cjs/w/query/event.d.ts +82 -0
  389. package/dist/cjs/w/query/event.js +157 -0
  390. package/dist/cjs/w/query/index.d.ts +5 -0
  391. package/dist/cjs/w/query/index.js +22 -0
  392. package/dist/cjs/w/query/object.d.ts +658 -0
  393. package/dist/cjs/w/query/object.js +1671 -0
  394. package/dist/cjs/w/query/received.d.ts +34 -0
  395. package/dist/cjs/w/query/received.js +93 -0
  396. package/dist/cjs/w/query/util.d.ts +5 -0
  397. package/dist/cjs/w/query/util.js +82 -0
  398. package/dist/cjs/w/util.d.ts +19 -0
  399. package/dist/cjs/w/util.js +715 -0
  400. package/dist/cjs/zklogin/address.js +93 -0
  401. package/dist/cjs/zklogin/bcs.js +41 -0
  402. package/dist/cjs/zklogin/index.js +45 -0
  403. package/dist/cjs/zklogin/jwt-decode.js +88 -0
  404. package/dist/cjs/zklogin/jwt-utils.js +128 -0
  405. package/dist/cjs/zklogin/nonce.js +60 -0
  406. package/dist/cjs/zklogin/poseidon.js +64 -0
  407. package/dist/cjs/zklogin/publickey.js +281 -0
  408. package/dist/cjs/zklogin/signature.js +57 -0
  409. package/dist/cjs/zklogin/utils.js +98 -0
  410. package/dist/esm/bcs/bcs.d.ts +1973 -0
  411. package/dist/esm/bcs/bcs.js +319 -0
  412. package/dist/esm/bcs/effects.d.ts +579 -0
  413. package/dist/esm/bcs/effects.js +211 -0
  414. package/dist/esm/bcs/index.d.ts +2589 -0
  415. package/dist/esm/bcs/index.js +98 -0
  416. package/dist/esm/bcs/pure.d.ts +22 -0
  417. package/dist/esm/bcs/pure.js +42 -0
  418. package/dist/esm/bcs/type-tag-serializer.d.ts +7 -0
  419. package/dist/esm/bcs/type-tag-serializer.js +104 -0
  420. package/dist/esm/bcs/types.d.ts +114 -0
  421. package/dist/esm/bcs/types.js +6 -0
  422. package/dist/esm/client/index.d.ts +5 -0
  423. package/dist/esm/client/index.js +23 -0
  424. package/dist/esm/client/network.d.ts +5 -0
  425. package/dist/esm/client/network.js +23 -0
  426. package/dist/esm/cryptography/index.d.ts +7 -0
  427. package/dist/esm/cryptography/index.js +46 -0
  428. package/dist/esm/cryptography/intent.d.ts +6 -0
  429. package/dist/esm/cryptography/intent.js +14 -0
  430. package/dist/esm/cryptography/keypair.d.ts +73 -0
  431. package/dist/esm/cryptography/keypair.js +108 -0
  432. package/dist/esm/cryptography/mnemonics.d.ts +27 -0
  433. package/dist/esm/cryptography/mnemonics.js +30 -0
  434. package/dist/esm/cryptography/publickey.d.ts +67 -0
  435. package/dist/esm/cryptography/publickey.js +125 -0
  436. package/dist/esm/cryptography/signature-scheme.d.ts +24 -0
  437. package/dist/esm/cryptography/signature-scheme.js +27 -0
  438. package/dist/esm/cryptography/signature.d.ts +62 -0
  439. package/dist/esm/cryptography/signature.js +54 -0
  440. package/dist/esm/experimental/cache.d.ts +12 -0
  441. package/dist/esm/experimental/client.d.ts +12 -0
  442. package/dist/esm/experimental/core.d.ts +33 -0
  443. package/dist/esm/experimental/errors.d.ts +8 -0
  444. package/dist/esm/experimental/index.d.ts +7 -0
  445. package/dist/esm/experimental/persistent-storage.d.ts +134 -0
  446. package/dist/esm/experimental/persistent-storage.test.d.ts +5 -0
  447. package/dist/esm/experimental/transports/utils.d.ts +3 -0
  448. package/dist/esm/experimental/types.d.ts +367 -0
  449. package/dist/esm/faucet/faucet.d.ts +66 -0
  450. package/dist/esm/faucet/faucet.js +118 -0
  451. package/dist/esm/faucet/index.d.ts +1 -0
  452. package/dist/esm/faucet/index.js +16 -0
  453. package/dist/esm/graphql/client.js +79 -0
  454. package/dist/esm/graphql/core.js +505 -0
  455. package/dist/esm/graphql/generated/2024.1/tada-env.js +13121 -0
  456. package/dist/esm/graphql/generated/2024.1/tsconfig.tada.js +16 -0
  457. package/dist/esm/graphql/generated/2024.4/tada-env.js +13267 -0
  458. package/dist/esm/graphql/generated/2024.4/tsconfig.tada.js +16 -0
  459. package/dist/esm/graphql/generated/latest/tada-env.js +12905 -0
  460. package/dist/esm/graphql/generated/latest/tsconfig.tada.js +16 -0
  461. package/dist/esm/graphql/generated/queries.js +788 -0
  462. package/dist/esm/graphql/index.js +8 -0
  463. package/dist/esm/graphql/schemas/2024.1/index.js +8 -0
  464. package/dist/esm/graphql/schemas/2024.4/index.js +8 -0
  465. package/dist/esm/graphql/schemas/latest/index.js +8 -0
  466. package/dist/esm/graphql/types.js +0 -0
  467. package/dist/esm/grpc/client.d.ts +32 -0
  468. package/dist/esm/grpc/client.js +45 -0
  469. package/dist/esm/grpc/core.d.ts +28 -0
  470. package/dist/esm/grpc/core.js +634 -0
  471. package/dist/esm/grpc/index.d.ts +4 -0
  472. package/dist/esm/grpc/index.js +6 -0
  473. package/dist/esm/grpc/proto/google/protobuf/any.d.ts +173 -0
  474. package/dist/esm/grpc/proto/google/protobuf/any.js +118 -0
  475. package/dist/esm/grpc/proto/google/protobuf/duration.d.ts +104 -0
  476. package/dist/esm/grpc/proto/google/protobuf/duration.js +74 -0
  477. package/dist/esm/grpc/proto/google/protobuf/empty.d.ts +25 -0
  478. package/dist/esm/grpc/proto/google/protobuf/empty.js +10 -0
  479. package/dist/esm/grpc/proto/google/protobuf/field_mask.d.ts +231 -0
  480. package/dist/esm/grpc/proto/google/protobuf/field_mask.js +57 -0
  481. package/dist/esm/grpc/proto/google/protobuf/struct.d.ts +169 -0
  482. package/dist/esm/grpc/proto/google/protobuf/struct.js +204 -0
  483. package/dist/esm/grpc/proto/google/protobuf/timestamp.d.ts +145 -0
  484. package/dist/esm/grpc/proto/google/protobuf/timestamp.js +114 -0
  485. package/dist/esm/grpc/proto/google/rpc/error_details.d.ts +525 -0
  486. package/dist/esm/grpc/proto/google/rpc/error_details.js +297 -0
  487. package/dist/esm/grpc/proto/google/rpc/status.d.ts +46 -0
  488. package/dist/esm/grpc/proto/google/rpc/status.js +32 -0
  489. package/dist/esm/grpc/proto/sui/rpc/v2/argument.d.ts +66 -0
  490. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js +50 -0
  491. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.d.ts +34 -0
  492. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js +32 -0
  493. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.d.ts +30 -0
  494. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js +25 -0
  495. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.d.ts +68 -0
  496. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +57 -0
  497. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.d.ts +74 -0
  498. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +64 -0
  499. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.d.ts +195 -0
  500. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +150 -0
  501. package/dist/esm/grpc/proto/sui/rpc/v2/effects.d.ts +338 -0
  502. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +280 -0
  503. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.d.ts +62 -0
  504. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js +67 -0
  505. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.d.ts +17 -0
  506. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js +9 -0
  507. package/dist/esm/grpc/proto/sui/rpc/v2/event.d.ts +88 -0
  508. package/dist/esm/grpc/proto/sui/rpc/v2/event.js +66 -0
  509. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.d.ts +80 -0
  510. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +67 -0
  511. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.d.ts +843 -0
  512. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +499 -0
  513. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.d.ts +41 -0
  514. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js +43 -0
  515. package/dist/esm/grpc/proto/sui/rpc/v2/input.d.ts +98 -0
  516. package/dist/esm/grpc/proto/sui/rpc/v2/input.js +65 -0
  517. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.d.ts +70 -0
  518. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +61 -0
  519. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts +95 -0
  520. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js +103 -0
  521. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.d.ts +420 -0
  522. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +348 -0
  523. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.d.ts +579 -0
  524. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +465 -0
  525. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.d.ts +61 -0
  526. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js +62 -0
  527. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.d.ts +229 -0
  528. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +221 -0
  529. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.d.ts +41 -0
  530. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +36 -0
  531. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.d.ts +144 -0
  532. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +121 -0
  533. package/dist/esm/grpc/proto/sui/rpc/v2/object.d.ts +127 -0
  534. package/dist/esm/grpc/proto/sui/rpc/v2/object.js +94 -0
  535. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.d.ts +34 -0
  536. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js +33 -0
  537. package/dist/esm/grpc/proto/sui/rpc/v2/owner.d.ts +61 -0
  538. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js +43 -0
  539. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.d.ts +30 -0
  540. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js +41 -0
  541. package/dist/esm/grpc/proto/sui/rpc/v2/signature.d.ts +630 -0
  542. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +521 -0
  543. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.d.ts +40 -0
  544. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +13 -0
  545. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.ts +35 -0
  546. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +31 -0
  547. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.d.ts +79 -0
  548. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +70 -0
  549. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.d.ts +71 -0
  550. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js +69 -0
  551. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.d.ts +690 -0
  552. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +526 -0
  553. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.d.ts +55 -0
  554. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js +35 -0
  555. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.d.ts +57 -0
  556. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js +45 -0
  557. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.d.ts +684 -0
  558. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +720 -0
  559. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.d.ts +1321 -0
  560. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +985 -0
  561. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.ts +41 -0
  562. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +30 -0
  563. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.d.ts +184 -0
  564. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +157 -0
  565. package/dist/esm/index.d.ts +25 -0
  566. package/dist/esm/index.js +119 -0
  567. package/dist/esm/jsonRpc/client.d.ts +261 -0
  568. package/dist/esm/jsonRpc/client.js +734 -0
  569. package/dist/esm/jsonRpc/core.d.ts +87 -0
  570. package/dist/esm/jsonRpc/core.js +621 -0
  571. package/dist/esm/jsonRpc/errors.d.ts +12 -0
  572. package/dist/esm/jsonRpc/errors.js +46 -0
  573. package/dist/esm/jsonRpc/http-transport.d.ts +42 -0
  574. package/dist/esm/jsonRpc/http-transport.js +101 -0
  575. package/dist/esm/jsonRpc/index.d.ts +4 -0
  576. package/dist/esm/jsonRpc/index.js +20 -0
  577. package/dist/esm/jsonRpc/json-rpc-resolver.d.ts +4 -0
  578. package/dist/esm/jsonRpc/json-rpc-resolver.js +309 -0
  579. package/dist/esm/jsonRpc/rpc-websocket-client.d.ts +43 -0
  580. package/dist/esm/jsonRpc/rpc-websocket-client.js +201 -0
  581. package/dist/esm/jsonRpc/types/chain.d.ts +99 -0
  582. package/dist/esm/jsonRpc/types/chain.js +0 -0
  583. package/dist/esm/jsonRpc/types/changes.d.ts +19 -0
  584. package/dist/esm/jsonRpc/types/changes.js +0 -0
  585. package/dist/esm/jsonRpc/types/coins.d.ts +6 -0
  586. package/dist/esm/jsonRpc/types/coins.js +0 -0
  587. package/dist/esm/jsonRpc/types/common.d.ts +2 -0
  588. package/dist/esm/jsonRpc/types/common.js +0 -0
  589. package/dist/esm/jsonRpc/types/generated.d.ts +1492 -0
  590. package/dist/esm/jsonRpc/types/generated.js +0 -0
  591. package/dist/esm/jsonRpc/types/index.d.ts +6 -0
  592. package/dist/esm/jsonRpc/types/index.js +0 -0
  593. package/dist/esm/jsonRpc/types/params.d.ts +656 -0
  594. package/dist/esm/jsonRpc/types/params.js +0 -0
  595. package/dist/esm/keypairs/ed25519/ed25519-hd-key.d.ts +8 -0
  596. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +62 -0
  597. package/dist/esm/keypairs/ed25519/index.d.ts +2 -0
  598. package/dist/esm/keypairs/ed25519/index.js +10 -0
  599. package/dist/esm/keypairs/ed25519/keypair.d.ts +74 -0
  600. package/dist/esm/keypairs/ed25519/keypair.js +158 -0
  601. package/dist/esm/keypairs/ed25519/publickey.d.ts +30 -0
  602. package/dist/esm/keypairs/ed25519/publickey.js +75 -0
  603. package/dist/esm/keypairs/index.d.ts +4 -0
  604. package/dist/esm/keypairs/index.js +4 -0
  605. package/dist/esm/keypairs/passkey/index.d.ts +3 -0
  606. package/dist/esm/keypairs/passkey/index.js +12 -0
  607. package/dist/esm/keypairs/passkey/keypair.d.ts +113 -0
  608. package/dist/esm/keypairs/passkey/keypair.js +258 -0
  609. package/dist/esm/keypairs/passkey/publickey.d.ts +72 -0
  610. package/dist/esm/keypairs/passkey/publickey.js +156 -0
  611. package/dist/esm/keypairs/passkey/types.d.ts +12 -0
  612. package/dist/esm/keypairs/passkey/types.js +0 -0
  613. package/dist/esm/keypairs/secp256k1/index.d.ts +2 -0
  614. package/dist/esm/keypairs/secp256k1/index.js +10 -0
  615. package/dist/esm/keypairs/secp256k1/keypair.d.ts +73 -0
  616. package/dist/esm/keypairs/secp256k1/keypair.js +147 -0
  617. package/dist/esm/keypairs/secp256k1/publickey.d.ts +30 -0
  618. package/dist/esm/keypairs/secp256k1/publickey.js +80 -0
  619. package/dist/esm/keypairs/secp256r1/index.d.ts +2 -0
  620. package/dist/esm/keypairs/secp256r1/index.js +10 -0
  621. package/dist/esm/keypairs/secp256r1/keypair.d.ts +73 -0
  622. package/dist/esm/keypairs/secp256r1/keypair.js +143 -0
  623. package/dist/esm/keypairs/secp256r1/publickey.d.ts +30 -0
  624. package/dist/esm/keypairs/secp256r1/publickey.js +77 -0
  625. package/dist/esm/multisig/index.d.ts +2 -0
  626. package/dist/esm/multisig/index.js +10 -0
  627. package/dist/esm/multisig/publickey.d.ts +79 -0
  628. package/dist/esm/multisig/publickey.js +280 -0
  629. package/dist/esm/multisig/signer.d.ts +20 -0
  630. package/dist/esm/multisig/signer.js +94 -0
  631. package/dist/esm/package.json +5 -0
  632. package/dist/esm/transactions/Arguments.d.ts +57 -0
  633. package/dist/esm/transactions/Arguments.js +16 -0
  634. package/dist/esm/transactions/Commands.d.ts +57 -0
  635. package/dist/esm/transactions/Commands.js +123 -0
  636. package/dist/esm/transactions/Inputs.d.ts +22 -0
  637. package/dist/esm/transactions/Inputs.js +67 -0
  638. package/dist/esm/transactions/ObjectCache.d.ts +83 -0
  639. package/dist/esm/transactions/ObjectCache.js +231 -0
  640. package/dist/esm/transactions/Transaction.d.ts +710 -0
  641. package/dist/esm/transactions/Transaction.js +731 -0
  642. package/dist/esm/transactions/TransactionData.d.ts +73 -0
  643. package/dist/esm/transactions/TransactionData.js +453 -0
  644. package/dist/esm/transactions/__tests__/Transaction.test.d.ts +1 -0
  645. package/dist/esm/transactions/__tests__/bcs.test.d.ts +1 -0
  646. package/dist/esm/transactions/data/internal.d.ts +1010 -0
  647. package/dist/esm/transactions/data/internal.js +232 -0
  648. package/dist/esm/transactions/data/v1.d.ts +312 -0
  649. package/dist/esm/transactions/data/v1.js +542 -0
  650. package/dist/esm/transactions/data/v2.d.ts +153 -0
  651. package/dist/esm/transactions/data/v2.js +126 -0
  652. package/dist/esm/transactions/executor/caching.d.ts +31 -0
  653. package/dist/esm/transactions/executor/caching.js +99 -0
  654. package/dist/esm/transactions/executor/parallel.d.ts +37 -0
  655. package/dist/esm/transactions/executor/parallel.js +375 -0
  656. package/dist/esm/transactions/executor/queue.d.ts +11 -0
  657. package/dist/esm/transactions/executor/queue.js +68 -0
  658. package/dist/esm/transactions/executor/serial.d.ts +31 -0
  659. package/dist/esm/transactions/executor/serial.js +116 -0
  660. package/dist/esm/transactions/hash.d.ts +7 -0
  661. package/dist/esm/transactions/hash.js +11 -0
  662. package/dist/esm/transactions/index.d.ts +21 -0
  663. package/dist/esm/transactions/index.js +41 -0
  664. package/dist/esm/transactions/intents/CoinWithBalance.d.ts +9 -0
  665. package/dist/esm/transactions/intents/CoinWithBalance.js +186 -0
  666. package/dist/esm/transactions/object.d.ts +24 -0
  667. package/dist/esm/transactions/object.js +96 -0
  668. package/dist/esm/transactions/plugins/NamedPackagesPlugin.d.ts +31 -0
  669. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js +17 -0
  670. package/dist/esm/transactions/pure.d.ts +20 -0
  671. package/dist/esm/transactions/pure.js +44 -0
  672. package/dist/esm/transactions/resolve.d.ts +13 -0
  673. package/dist/esm/transactions/resolve.js +83 -0
  674. package/dist/esm/transactions/serializer.d.ts +7 -0
  675. package/dist/esm/transactions/serializer.js +169 -0
  676. package/dist/esm/transactions/utils.d.ts +10 -0
  677. package/dist/esm/transactions/utils.js +123 -0
  678. package/dist/esm/utils/constants.d.ts +17 -0
  679. package/dist/esm/utils/constants.js +37 -0
  680. package/dist/esm/utils/derived-objects.d.ts +5 -0
  681. package/dist/esm/utils/derived-objects.js +13 -0
  682. package/dist/esm/utils/dynamic-fields.d.ts +2 -0
  683. package/dist/esm/utils/dynamic-fields.js +20 -0
  684. package/dist/esm/utils/format.d.ts +2 -0
  685. package/dist/esm/utils/format.js +15 -0
  686. package/dist/esm/utils/index.d.ts +8 -0
  687. package/dist/esm/utils/index.js +76 -0
  688. package/dist/esm/utils/move-registry.d.ts +6 -0
  689. package/dist/esm/utils/move-registry.js +24 -0
  690. package/dist/esm/utils/sui-types.d.ts +26 -0
  691. package/dist/esm/utils/sui-types.js +70 -0
  692. package/dist/esm/utils/suins.d.ts +2 -0
  693. package/dist/esm/utils/suins.js +36 -0
  694. package/dist/esm/verify/index.d.ts +1 -0
  695. package/dist/esm/verify/index.js +14 -0
  696. package/dist/esm/verify/verify.d.ts +16 -0
  697. package/dist/esm/verify/verify.js +108 -0
  698. package/dist/esm/version.d.ts +2 -0
  699. package/dist/esm/version.js +6 -0
  700. package/dist/esm/w/call/allocation.d.ts +35 -0
  701. package/dist/esm/w/call/allocation.js +433 -0
  702. package/dist/esm/w/call/arb.d.ts +17 -0
  703. package/dist/esm/w/call/arb.js +138 -0
  704. package/dist/esm/w/call/arbitration.d.ts +106 -0
  705. package/dist/esm/w/call/arbitration.js +1620 -0
  706. package/dist/esm/w/call/base.d.ts +42 -0
  707. package/dist/esm/w/call/base.js +350 -0
  708. package/dist/esm/w/call/contact.d.ts +45 -0
  709. package/dist/esm/w/call/contact.js +474 -0
  710. package/dist/esm/w/call/demand.d.ts +79 -0
  711. package/dist/esm/w/call/demand.js +869 -0
  712. package/dist/esm/w/call/entity.d.ts +33 -0
  713. package/dist/esm/w/call/entity.js +220 -0
  714. package/dist/esm/w/call/guard-ins.d.ts +31 -0
  715. package/dist/esm/w/call/guard-ins.js +4371 -0
  716. package/dist/esm/w/call/guard.d.ts +254 -0
  717. package/dist/esm/w/call/guard.js +1202 -0
  718. package/dist/esm/w/call/index.d.ts +37 -0
  719. package/dist/esm/w/call/index.js +57 -0
  720. package/dist/esm/w/call/machine.d.ts +124 -0
  721. package/dist/esm/w/call/machine.js +1492 -0
  722. package/dist/esm/w/call/order.d.ts +73 -0
  723. package/dist/esm/w/call/order.js +481 -0
  724. package/dist/esm/w/call/passport.d.ts +24 -0
  725. package/dist/esm/w/call/passport.js +266 -0
  726. package/dist/esm/w/call/payment.d.ts +27 -0
  727. package/dist/esm/w/call/payment.js +233 -0
  728. package/dist/esm/w/call/permission.d.ts +222 -0
  729. package/dist/esm/w/call/permission.js +1375 -0
  730. package/dist/esm/w/call/personal.d.ts +51 -0
  731. package/dist/esm/w/call/personal.js +177 -0
  732. package/dist/esm/w/call/progress.d.ts +94 -0
  733. package/dist/esm/w/call/progress.js +827 -0
  734. package/dist/esm/w/call/proof.d.ts +27 -0
  735. package/dist/esm/w/call/proof.js +110 -0
  736. package/dist/esm/w/call/repository.d.ts +97 -0
  737. package/dist/esm/w/call/repository.js +1325 -0
  738. package/dist/esm/w/call/resource.d.ts +27 -0
  739. package/dist/esm/w/call/resource.js +135 -0
  740. package/dist/esm/w/call/reward.d.ts +52 -0
  741. package/dist/esm/w/call/reward.js +874 -0
  742. package/dist/esm/w/call/service.d.ts +184 -0
  743. package/dist/esm/w/call/service.js +2472 -0
  744. package/dist/esm/w/call/treasury.d.ts +77 -0
  745. package/dist/esm/w/call/treasury.js +1186 -0
  746. package/dist/esm/w/call/util.d.ts +12 -0
  747. package/dist/esm/w/call/util.js +646 -0
  748. package/dist/esm/w/common.d.ts +359 -0
  749. package/dist/esm/w/common.js +605 -0
  750. package/dist/esm/w/exception.d.ts +82 -0
  751. package/dist/esm/w/exception.js +585 -0
  752. package/dist/esm/w/index.d.ts +8 -0
  753. package/dist/esm/w/index.js +8 -0
  754. package/dist/esm/w/local/.eslintrc.js +23 -0
  755. package/dist/esm/w/local/account.d.ts +134 -0
  756. package/dist/esm/w/local/account.js +746 -0
  757. package/dist/esm/w/local/cache.d.ts +35 -0
  758. package/dist/esm/w/local/cache.js +162 -0
  759. package/dist/esm/w/local/config.d.ts +15 -0
  760. package/dist/esm/w/local/config.js +64 -0
  761. package/dist/esm/w/local/index.d.ts +193 -0
  762. package/dist/esm/w/local/index.js +301 -0
  763. package/dist/esm/w/local/local.d.ts +93 -0
  764. package/dist/esm/w/local/local.js +654 -0
  765. package/dist/esm/w/local/storage.d.ts +61 -0
  766. package/dist/esm/w/local/storage.js +190 -0
  767. package/dist/esm/w/local/token.d.ts +22 -0
  768. package/dist/esm/w/local/token.js +163 -0
  769. package/dist/esm/w/local/util.d.ts +5 -0
  770. package/dist/esm/w/local/util.js +27 -0
  771. package/dist/esm/w/local/wip.d.ts +218 -0
  772. package/dist/esm/w/local/wip.js +882 -0
  773. package/dist/esm/w/messenger/.eslintrc.js +23 -0
  774. package/dist/esm/w/messenger/crypto.d.ts +269 -0
  775. package/dist/esm/w/messenger/crypto.js +428 -0
  776. package/dist/esm/w/messenger/index.d.ts +23 -0
  777. package/dist/esm/w/messenger/index.js +25 -0
  778. package/dist/esm/w/messenger/messenger-api.d.ts +225 -0
  779. package/dist/esm/w/messenger/messenger-api.js +1228 -0
  780. package/dist/esm/w/messenger/messenger-manager.d.ts +80 -0
  781. package/dist/esm/w/messenger/messenger-manager.js +1118 -0
  782. package/dist/esm/w/messenger/messenger.d.ts +231 -0
  783. package/dist/esm/w/messenger/messenger.js +1492 -0
  784. package/dist/esm/w/messenger/server.d.ts +134 -0
  785. package/dist/esm/w/messenger/server.js +520 -0
  786. package/dist/esm/w/messenger/session.d.ts +78 -0
  787. package/dist/esm/w/messenger/session.js +415 -0
  788. package/dist/esm/w/messenger/storage.d.ts +192 -0
  789. package/dist/esm/w/messenger/storage.js +935 -0
  790. package/dist/esm/w/messenger/types.d.ts +705 -0
  791. package/dist/esm/w/messenger/types.js +88 -0
  792. package/dist/esm/w/messenger/utils.d.ts +15 -0
  793. package/dist/esm/w/messenger/utils.js +17 -0
  794. package/dist/esm/w/query/bult-in.d.ts +73 -0
  795. package/dist/esm/w/query/bult-in.js +112 -0
  796. package/dist/esm/w/query/event.d.ts +82 -0
  797. package/dist/esm/w/query/event.js +137 -0
  798. package/dist/esm/w/query/index.d.ts +5 -0
  799. package/dist/esm/w/query/index.js +5 -0
  800. package/dist/esm/w/query/object.d.ts +658 -0
  801. package/dist/esm/w/query/object.js +1648 -0
  802. package/dist/esm/w/query/received.d.ts +34 -0
  803. package/dist/esm/w/query/received.js +73 -0
  804. package/dist/esm/w/query/util.d.ts +5 -0
  805. package/dist/esm/w/query/util.js +62 -0
  806. package/dist/esm/w/util.d.ts +19 -0
  807. package/dist/esm/w/util.js +710 -0
  808. package/dist/esm/zklogin/address.js +78 -0
  809. package/dist/esm/zklogin/bcs.js +21 -0
  810. package/dist/esm/zklogin/index.js +38 -0
  811. package/dist/esm/zklogin/jwt-decode.js +68 -0
  812. package/dist/esm/zklogin/jwt-utils.js +108 -0
  813. package/dist/esm/zklogin/nonce.js +40 -0
  814. package/dist/esm/zklogin/poseidon.js +61 -0
  815. package/dist/esm/zklogin/publickey.js +265 -0
  816. package/dist/esm/zklogin/signature.js +37 -0
  817. package/dist/esm/zklogin/utils.js +78 -0
  818. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  819. package/dist/tsconfig.tsbuildinfo +1 -0
  820. package/package.json +295 -61
  821. package/dist/arbitration.d.ts +0 -65
  822. package/dist/arbitration.d.ts.map +0 -1
  823. package/dist/arbitration.js +0 -517
  824. package/dist/arbitration.js.map +0 -1
  825. package/dist/demand.d.ts +0 -27
  826. package/dist/demand.d.ts.map +0 -1
  827. package/dist/demand.js +0 -266
  828. package/dist/demand.js.map +0 -1
  829. package/dist/entity.d.ts +0 -46
  830. package/dist/entity.d.ts.map +0 -1
  831. package/dist/entity.js +0 -146
  832. package/dist/entity.js.map +0 -1
  833. package/dist/exception.d.ts +0 -37
  834. package/dist/exception.d.ts.map +0 -1
  835. package/dist/exception.js +0 -41
  836. package/dist/exception.js.map +0 -1
  837. package/dist/guard.d.ts +0 -110
  838. package/dist/guard.d.ts.map +0 -1
  839. package/dist/guard.js +0 -936
  840. package/dist/guard.js.map +0 -1
  841. package/dist/index.d.ts +0 -40
  842. package/dist/index.d.ts.map +0 -1
  843. package/dist/index.js +0 -28
  844. package/dist/index.js.map +0 -1
  845. package/dist/machine.d.ts +0 -68
  846. package/dist/machine.d.ts.map +0 -1
  847. package/dist/machine.js +0 -520
  848. package/dist/machine.js.map +0 -1
  849. package/dist/passport.d.ts +0 -129
  850. package/dist/passport.d.ts.map +0 -1
  851. package/dist/passport.js +0 -1233
  852. package/dist/passport.js.map +0 -1
  853. package/dist/payment.d.ts +0 -28
  854. package/dist/payment.d.ts.map +0 -1
  855. package/dist/payment.js +0 -60
  856. package/dist/payment.js.map +0 -1
  857. package/dist/permission.d.ts +0 -155
  858. package/dist/permission.d.ts.map +0 -1
  859. package/dist/permission.js +0 -462
  860. package/dist/permission.js.map +0 -1
  861. package/dist/progress.d.ts +0 -66
  862. package/dist/progress.d.ts.map +0 -1
  863. package/dist/progress.js +0 -311
  864. package/dist/progress.js.map +0 -1
  865. package/dist/protocol.d.ts +0 -247
  866. package/dist/protocol.d.ts.map +0 -1
  867. package/dist/protocol.js +0 -726
  868. package/dist/protocol.js.map +0 -1
  869. package/dist/repository.d.ts +0 -94
  870. package/dist/repository.d.ts.map +0 -1
  871. package/dist/repository.js +0 -783
  872. package/dist/repository.js.map +0 -1
  873. package/dist/resource.d.ts +0 -36
  874. package/dist/resource.d.ts.map +0 -1
  875. package/dist/resource.js +0 -129
  876. package/dist/resource.js.map +0 -1
  877. package/dist/service.d.ts +0 -144
  878. package/dist/service.d.ts.map +0 -1
  879. package/dist/service.js +0 -1303
  880. package/dist/service.js.map +0 -1
  881. package/dist/treasury.d.ts +0 -55
  882. package/dist/treasury.d.ts.map +0 -1
  883. package/dist/treasury.js +0 -393
  884. package/dist/treasury.js.map +0 -1
  885. package/dist/utils.d.ts +0 -94
  886. package/dist/utils.d.ts.map +0 -1
  887. package/dist/utils.js +0 -582
  888. package/dist/utils.js.map +0 -1
  889. package/dist/wowok.d.ts +0 -15
  890. package/dist/wowok.d.ts.map +0 -1
  891. package/dist/wowok.js +0 -66
  892. package/dist/wowok.js.map +0 -1
@@ -0,0 +1,1492 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { createHash } from "crypto";
5
+ import * as fs from "fs";
6
+ import * as path from "path";
7
+ import { CallProof } from "../call/proof.js";
8
+ import { MessengerSession } from "./session.js";
9
+ import { MessengerServerClient } from "./server.js";
10
+ import { MessageStorage, SessionStateStorage } from "./storage.js";
11
+ import { hashPlaintext, verifyMessage, bytesToBase64 } from "./crypto.js";
12
+ import { canonicalizeJson } from "./utils.js";
13
+ import {
14
+ DEFAULT_MESSENGER_CONFIG,
15
+ MessengerError,
16
+ MessengerErrorCode,
17
+ MessageDirection,
18
+ MessageStatus,
19
+ WTS_FILE_BYTES_LIMIT,
20
+ NORMAL_MESSAGE_BYTES_LIMIT,
21
+ CHAIN_PROOF_TYPE
22
+ } from "./types.js";
23
+ import { isValidWowAddress } from "../../utils/sui-types.js";
24
+ import { Account } from "../local/account.js";
25
+ if (typeof window === "undefined" && typeof EventSource === "undefined") {
26
+ try {
27
+ const eventsource = require("eventsource");
28
+ const EventSourcePolyfill = eventsource.EventSource || eventsource.default || eventsource;
29
+ globalThis.EventSource = EventSourcePolyfill;
30
+ } catch (error) {
31
+ console.warn(
32
+ "EventSource polyfill not found. SSE functionality will be disabled in Node.js environment."
33
+ );
34
+ }
35
+ }
36
+ class Messenger {
37
+ constructor(userAddress, config) {
38
+ __publicField(this, "session");
39
+ __publicField(this, "serverClient");
40
+ __publicField(this, "config");
41
+ __publicField(this, "userAddress", null);
42
+ __publicField(this, "eventSource", null);
43
+ __publicField(this, "onMessageCallback", null);
44
+ __publicField(this, "prekeyCheckTimer", null);
45
+ __publicField(this, "messageStorage");
46
+ __publicField(this, "sessionStateStorage");
47
+ this.userAddress = userAddress;
48
+ this.config = { ...DEFAULT_MESSENGER_CONFIG, ...config };
49
+ this.session = new MessengerSession(userAddress, this.config);
50
+ this.serverClient = new MessengerServerClient(this.config);
51
+ this.messageStorage = new MessageStorage(userAddress);
52
+ this.sessionStateStorage = new SessionStateStorage(userAddress);
53
+ }
54
+ /**
55
+ * 获取用户地址
56
+ * @returns 用户地址
57
+ */
58
+ getUserAddress() {
59
+ if (!this.userAddress) {
60
+ throw new MessengerError(
61
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
62
+ "User address not set"
63
+ );
64
+ }
65
+ return this.userAddress;
66
+ }
67
+ /**
68
+ * 获取用户公钥
69
+ * @returns 公钥(带标志位)
70
+ */
71
+ async getPublicKey() {
72
+ if (!this.userAddress) {
73
+ throw new MessengerError(
74
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
75
+ "User address not set"
76
+ );
77
+ }
78
+ const account = await Account.Instance().get(this.userAddress, false);
79
+ return account?.pubkey || "";
80
+ }
81
+ /**
82
+ * 验证Guard消息格式
83
+ * @param guardAddress Guard地址
84
+ * @param passportAddress Passport地址
85
+ * @returns 是否为有效的Guard消息
86
+ */
87
+ isValidGuardMessage(guardAddress, passportAddress) {
88
+ return Boolean(
89
+ guardAddress && passportAddress && isValidWowAddress(guardAddress) && isValidWowAddress(passportAddress)
90
+ );
91
+ }
92
+ /**
93
+ * 生成签名参数
94
+ * 用于需要签名验证的 API 调用
95
+ */
96
+ async generateSignatureParams(operation) {
97
+ if (!this.userAddress) {
98
+ throw new MessengerError(
99
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
100
+ "User address not set"
101
+ );
102
+ }
103
+ const account = await Account.Instance().get(this.userAddress, false);
104
+ if (!account?.secret) {
105
+ throw new MessengerError(
106
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
107
+ `Account not found or no secret key for ${this.userAddress}`
108
+ );
109
+ }
110
+ const { Ed25519Keypair } = await import("../../keypairs/ed25519/index.js");
111
+ const keypair = Ed25519Keypair.fromSecretKey(account.secret);
112
+ const publicKey = keypair.getPublicKey();
113
+ const publicKeyWithFlag = publicKey.toWPublicKey();
114
+ const timestamp = Date.now();
115
+ const nonce = this.generateNonce();
116
+ const message = `${operation}:${publicKeyWithFlag}:${timestamp}:${nonce}`;
117
+ const signature = await keypair.sign(new TextEncoder().encode(message));
118
+ return {
119
+ signatureScheme: "ED25519",
120
+ signature: Buffer.from(signature).toString("base64"),
121
+ timestamp,
122
+ nonce
123
+ };
124
+ }
125
+ /**
126
+ * 生成随机 nonce
127
+ */
128
+ generateNonce() {
129
+ const array = new Uint8Array(16);
130
+ crypto.getRandomValues(array);
131
+ return Array.from(array, (b) => b.toString(16).padStart(2, "0")).join(
132
+ ""
133
+ );
134
+ }
135
+ /**
136
+ * 初始化 Messenger
137
+ * 1. 确保本地身份
138
+ * 2. 注册设备到服务器
139
+ * 3. 上传预密钥
140
+ * 4. 检查预密钥状态(如低于阈值则补充)
141
+ * 5. 启动定期预密钥检查
142
+ */
143
+ async initialize() {
144
+ if (!this.userAddress) {
145
+ throw new MessengerError(
146
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
147
+ "User address not set"
148
+ );
149
+ }
150
+ await this.session.ensureIdentity(this.userAddress);
151
+ await this.session.registerDevice(this.userAddress);
152
+ await this.session.ensurePreKeys(this.userAddress);
153
+ await this.checkAndRefillPrekeys();
154
+ this.startPrekeyCheckTimer();
155
+ }
156
+ /**
157
+ * 检查并补充预密钥
158
+ *
159
+ * 逻辑:如果服务器预密钥未满,自动补充到最大容量
160
+ */
161
+ async checkAndRefillPrekeys() {
162
+ if (!this.userAddress) return;
163
+ await this.session.ensurePreKeys(this.userAddress, false);
164
+ }
165
+ /**
166
+ * 启动预密钥定期检查定时器
167
+ */
168
+ startPrekeyCheckTimer() {
169
+ if (this.prekeyCheckTimer) {
170
+ clearInterval(this.prekeyCheckTimer);
171
+ }
172
+ const interval = this.config.prekeyCheckIntervalMs ?? 24 * 60 * 60 * 1e3;
173
+ this.prekeyCheckTimer = setInterval(() => {
174
+ this.checkAndRefillPrekeys();
175
+ }, interval);
176
+ }
177
+ /**
178
+ * 停止预密钥定期检查定时器
179
+ */
180
+ stopPrekeyCheckTimer() {
181
+ if (this.prekeyCheckTimer) {
182
+ clearInterval(this.prekeyCheckTimer);
183
+ this.prekeyCheckTimer = null;
184
+ }
185
+ }
186
+ /**
187
+ * 发送加密消息
188
+ *
189
+ * 流程:
190
+ * 1. 使用 Signal Protocol 加密消息
191
+ * 2. 发送到服务器
192
+ * 3. 接收服务器返回的 Merkle 证明数据
193
+ * 4. 本地存储消息
194
+ */
195
+ async sendMessage(recipientAddress, plaintext, options) {
196
+ if (!this.userAddress) {
197
+ throw new MessengerError(
198
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
199
+ "User address not set"
200
+ );
201
+ }
202
+ const createdAt = Date.now();
203
+ const timestamp = Date.now();
204
+ const nonce = this.generateNonce();
205
+ const plaintextBytes = new TextEncoder().encode(plaintext).length;
206
+ if (plaintextBytes > NORMAL_MESSAGE_BYTES_LIMIT) {
207
+ throw new MessengerError(
208
+ MessengerErrorCode.INVALID_INPUT,
209
+ `Message size (${plaintextBytes} bytes) exceeds maximum allowed size (${NORMAL_MESSAGE_BYTES_LIMIT} bytes). Consider using sendZipFile for large content.`
210
+ );
211
+ }
212
+ const lastReceivedLeafIndex = this.messageStorage.getLastReceivedLeafIndex(
213
+ this.userAddress,
214
+ recipientAddress
215
+ );
216
+ const encrypted = await this.session.encryptMessage(
217
+ this.userAddress,
218
+ recipientAddress,
219
+ plaintext
220
+ );
221
+ const ciphertext = Buffer.from(new Uint8Array(encrypted.body)).toString(
222
+ "base64"
223
+ );
224
+ const plaintextHash = hashPlaintext(
225
+ plaintext,
226
+ createdAt,
227
+ options?.guardAddress,
228
+ options?.passportAddress,
229
+ lastReceivedLeafIndex
230
+ );
231
+ const account = await Account.Instance().get(this.userAddress, false);
232
+ if (!account) {
233
+ throw new MessengerError(
234
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
235
+ "User account not found"
236
+ );
237
+ }
238
+ const publicKey = account.pubkey;
239
+ const guardAddr = options?.guardAddress || "";
240
+ const passportAddr = options?.passportAddress || "";
241
+ const lastReceivedStr = lastReceivedLeafIndex >= 0 ? lastReceivedLeafIndex.toString() : "";
242
+ const forceStr = options?.force ? "true" : "false";
243
+ const signMessage = `send_message:${this.userAddress}:${recipientAddress}:${guardAddr}:${passportAddr}:${plaintextHash}:${lastReceivedStr}:${publicKey}:${timestamp}:${nonce}:${forceStr}`;
244
+ const signResult = await Account.Instance().signData(
245
+ this.userAddress,
246
+ signMessage
247
+ );
248
+ const signatureBuffer = Buffer.from(
249
+ signResult.signature.slice(2),
250
+ "hex"
251
+ );
252
+ const signatureBase64 = bytesToBase64(new Uint8Array(signatureBuffer));
253
+ const response = await this.serverClient.sendMessage({
254
+ sender: signResult.publicKey,
255
+ recipient: recipientAddress,
256
+ ciphertext,
257
+ plaintextHash,
258
+ clientTimestamp: createdAt,
259
+ msgType: encrypted.type,
260
+ signatureScheme: "ED25519",
261
+ signature: signatureBase64,
262
+ timestamp,
263
+ nonce,
264
+ guardAddress: options?.guardAddress,
265
+ passportAddress: options?.passportAddress,
266
+ force: options?.force,
267
+ // 【修复】只有当 lastReceivedLeafIndex >= 0 时才发送,否则发送 undefined
268
+ lastReceivedLeafIndex: lastReceivedLeafIndex >= 0 ? lastReceivedLeafIndex : void 0
269
+ });
270
+ const message = {
271
+ messageId: response.messageId,
272
+ fromAddress: this.userAddress,
273
+ toAddress: recipientAddress,
274
+ plaintextHash,
275
+ plaintext,
276
+ guardAddress: options?.guardAddress,
277
+ passportAddress: options?.passportAddress,
278
+ lastReceivedLeafIndex,
279
+ // 【新增】保存消息确认字段
280
+ direction: MessageDirection.SENT,
281
+ status: response.status === "confirmed" ? MessageStatus.CONFIRMED : MessageStatus.PENDING,
282
+ msgType: encrypted.type,
283
+ createdAt
284
+ };
285
+ if (response.merkleData) {
286
+ message.leafIndex = response.merkleData.leafIndex;
287
+ message.prevRoot = response.merkleData.prevRoot;
288
+ message.newRoot = response.merkleData.newRoot;
289
+ message.serverSignature = response.merkleData.serverSignature;
290
+ message.serverTimestamp = response.merkleData.serverTimestamp;
291
+ message.serverPublicKey = response.merkleData.serverPublicKey;
292
+ this.sessionStateStorage.updateSessionState(
293
+ this.userAddress,
294
+ recipientAddress,
295
+ {
296
+ currentRoot: response.merkleData.newRoot,
297
+ prevRoot: response.merkleData.prevRoot,
298
+ lastLeafIndex: response.merkleData.leafIndex,
299
+ lastSyncAt: Date.now()
300
+ }
301
+ );
302
+ }
303
+ this.messageStorage.saveMessage(message);
304
+ if (response.pendingMerkleData) {
305
+ for (const [msgId, merkleData] of Object.entries(
306
+ response.pendingMerkleData
307
+ )) {
308
+ const existingMsg = this.messageStorage.getMessage(msgId);
309
+ if (existingMsg && existingMsg.status === MessageStatus.PENDING) {
310
+ this.messageStorage.updateMessageStatus(
311
+ msgId,
312
+ MessageStatus.CONFIRMED,
313
+ {
314
+ leafIndex: merkleData.leafIndex,
315
+ newRoot: merkleData.newRoot,
316
+ serverSignature: merkleData.serverSignature,
317
+ serverTimestamp: merkleData.serverTimestamp,
318
+ serverPublicKey: merkleData.serverPublicKey
319
+ }
320
+ );
321
+ }
322
+ }
323
+ }
324
+ return {
325
+ messageId: response.messageId,
326
+ status: message.status,
327
+ merkleData: response.merkleData,
328
+ guardList: response.guard_list
329
+ };
330
+ }
331
+ /**
332
+ * 拉取消息
333
+ *
334
+ * 流程:
335
+ * 1. 从服务器拉取消息
336
+ * 2. 解密消息(Signal Protocol)
337
+ * 3. 验证 Merkle 证明
338
+ * 4. 本地存储并确认消息
339
+ */
340
+ async pullMessages(limit) {
341
+ if (!this.userAddress) {
342
+ throw new MessengerError(
343
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
344
+ "User address not set"
345
+ );
346
+ }
347
+ const timestamp = Date.now();
348
+ const nonce = this.generateNonce();
349
+ const message = `fetch_messages:${this.userAddress}:${limit || 100}:${timestamp}:${nonce}`;
350
+ const account = await Account.Instance().get(this.userAddress, false);
351
+ const publicKey = account?.pubkey || "";
352
+ const signResult = await Account.Instance().signData(
353
+ this.userAddress,
354
+ message
355
+ );
356
+ const signature = Buffer.from(signResult.signature.slice(2), "hex");
357
+ const signatureParams = {
358
+ signatureScheme: "ED25519",
359
+ signature: bytesToBase64(signature),
360
+ timestamp,
361
+ nonce
362
+ };
363
+ const response = await this.serverClient.pullMessages(
364
+ this.userAddress,
365
+ publicKey,
366
+ signatureParams,
367
+ limit
368
+ );
369
+ if (response.messages.length === 0) {
370
+ return [];
371
+ }
372
+ const decryptedMessages = [];
373
+ const acknowledgedIds = [];
374
+ for (const serverMsg of response.messages) {
375
+ try {
376
+ const existingMessage = this.messageStorage.getMessage(
377
+ serverMsg.id
378
+ );
379
+ if (existingMessage) {
380
+ acknowledgedIds.push(serverMsg.id);
381
+ continue;
382
+ }
383
+ const ciphertext = Uint8Array.from(
384
+ Buffer.from(serverMsg.bodyB64, "base64")
385
+ );
386
+ const decryptedData = await this.session.decryptMessage(
387
+ this.userAddress,
388
+ serverMsg.from,
389
+ ciphertext.buffer,
390
+ serverMsg.msgType
391
+ );
392
+ const plaintext = decryptedData;
393
+ const senderLastReceivedIndex = serverMsg.lastReceivedLeafIndex ?? -1;
394
+ if (senderLastReceivedIndex >= 0) {
395
+ const myLastSent = this.getLastSentLeafIndex(
396
+ serverMsg.from
397
+ );
398
+ if (senderLastReceivedIndex < myLastSent) {
399
+ }
400
+ }
401
+ if (!serverMsg.clientTimestamp) {
402
+ throw new Error(
403
+ `Missing clientTimestamp for message ${serverMsg.id}`
404
+ );
405
+ }
406
+ if (!serverMsg.plaintextHash) {
407
+ throw new Error(
408
+ `Missing plaintextHash for message ${serverMsg.id}`
409
+ );
410
+ }
411
+ if (serverMsg.merkleMetadata) {
412
+ if (!serverMsg.merkleMetadata.prevRoot) {
413
+ throw new Error(
414
+ `Message ${serverMsg.id} missing prevRoot in merkleMetadata`
415
+ );
416
+ }
417
+ if (!serverMsg.merkleMetadata.newRoot) {
418
+ throw new Error(
419
+ `Message ${serverMsg.id} missing newRoot in merkleMetadata`
420
+ );
421
+ }
422
+ }
423
+ const verificationResult = verifyMessage({
424
+ messageId: serverMsg.id,
425
+ plaintext,
426
+ plaintextHash: serverMsg.plaintextHash,
427
+ createdAt: serverMsg.clientTimestamp,
428
+ guardAddress: serverMsg.guardAddress,
429
+ passportAddress: serverMsg.passportAddress,
430
+ lastReceivedLeafIndex: serverMsg.lastReceivedLeafIndex,
431
+ // 【新增】传入消息确认字段
432
+ serverSignature: serverMsg.merkleMetadata?.serverSignature,
433
+ serverPublicKey: serverMsg.merkleMetadata?.serverPublicKey,
434
+ merkleMetadata: serverMsg.merkleMetadata ? {
435
+ prevRoot: serverMsg.merkleMetadata.prevRoot,
436
+ newRoot: serverMsg.merkleMetadata.newRoot,
437
+ serverTimestamp: serverMsg.merkleMetadata.serverTimestamp,
438
+ leafIndex: serverMsg.merkleMetadata.leafIndex,
439
+ proofSiblings: serverMsg.merkleMetadata.proofSiblings,
440
+ proofIndices: serverMsg.merkleMetadata.proofIndices
441
+ } : void 0
442
+ });
443
+ if (!verificationResult.valid) {
444
+ throw new Error(verificationResult.error);
445
+ }
446
+ const message2 = {
447
+ messageId: serverMsg.id,
448
+ fromAddress: serverMsg.from,
449
+ toAddress: this.userAddress,
450
+ plaintextHash: serverMsg.plaintextHash,
451
+ plaintext,
452
+ guardAddress: serverMsg.guardAddress,
453
+ passportAddress: serverMsg.passportAddress,
454
+ lastReceivedLeafIndex: serverMsg.lastReceivedLeafIndex,
455
+ // 【新增】保存消息确认字段
456
+ direction: MessageDirection.RECEIVED,
457
+ status: MessageStatus.CONFIRMED,
458
+ msgType: serverMsg.msgType,
459
+ leafIndex: serverMsg.merkleMetadata?.leafIndex,
460
+ prevRoot: serverMsg.merkleMetadata?.prevRoot,
461
+ newRoot: serverMsg.merkleMetadata?.newRoot,
462
+ serverSignature: serverMsg.merkleMetadata?.serverSignature,
463
+ serverTimestamp: serverMsg.merkleMetadata?.serverTimestamp,
464
+ serverPublicKey: serverMsg.merkleMetadata?.serverPublicKey,
465
+ createdAt: serverMsg.clientTimestamp,
466
+ // 保存 ZIP 元数据(如果是 ZIP 消息)
467
+ zipMetadata: serverMsg.zipMetadata
468
+ };
469
+ this.messageStorage.saveMessage(message2);
470
+ if (serverMsg.merkleMetadata) {
471
+ this.sessionStateStorage.updateSessionState(
472
+ this.userAddress,
473
+ serverMsg.from,
474
+ {
475
+ currentRoot: serverMsg.merkleMetadata.newRoot,
476
+ prevRoot: serverMsg.merkleMetadata.prevRoot,
477
+ lastLeafIndex: serverMsg.merkleMetadata.leafIndex,
478
+ lastSyncAt: Date.now()
479
+ }
480
+ );
481
+ }
482
+ const timestamp2 = serverMsg.merkleMetadata?.serverTimestamp || serverMsg.clientTimestamp || Date.now();
483
+ decryptedMessages.push({
484
+ id: serverMsg.id,
485
+ from: serverMsg.from,
486
+ plaintext,
487
+ // 【更新】明文直接是消息内容
488
+ timestamp: timestamp2,
489
+ merkleVerified: !!serverMsg.merkleMetadata,
490
+ merkleData: serverMsg.merkleMetadata ? {
491
+ leafIndex: serverMsg.merkleMetadata.leafIndex,
492
+ rootHash: serverMsg.merkleMetadata.newRoot
493
+ } : void 0
494
+ });
495
+ acknowledgedIds.push(serverMsg.id);
496
+ } catch (error) {
497
+ throw new Error(
498
+ `Failed to decrypt message ${serverMsg.id}: ${error instanceof Error ? error.message : String(error)}`
499
+ );
500
+ }
501
+ }
502
+ if (acknowledgedIds.length > 0 && this.userAddress) {
503
+ const ackTimestamp = Date.now();
504
+ const ackNonce = this.generateNonce();
505
+ const account2 = await Account.Instance().get(
506
+ this.userAddress,
507
+ false
508
+ );
509
+ if (account2?.pubkey) {
510
+ const ackMessage = `ack_messages:${this.userAddress}:${acknowledgedIds.join(",")}:${account2.pubkey}:${ackTimestamp}:${ackNonce}`;
511
+ const signResult2 = await Account.Instance().signData(
512
+ this.userAddress,
513
+ ackMessage
514
+ );
515
+ const signatureBuffer = Buffer.from(
516
+ signResult2.signature.slice(2),
517
+ "hex"
518
+ );
519
+ const signatureBase64 = bytesToBase64(
520
+ new Uint8Array(signatureBuffer)
521
+ );
522
+ await this.serverClient.acknowledgeMessages(
523
+ acknowledgedIds,
524
+ signResult2.publicKey,
525
+ {
526
+ publicKey: signResult2.publicKey,
527
+ signatureScheme: "ED25519",
528
+ signature: signatureBase64,
529
+ timestamp: ackTimestamp,
530
+ nonce: ackNonce
531
+ }
532
+ );
533
+ }
534
+ }
535
+ await this.session.ensurePreKeys(this.userAddress);
536
+ return decryptedMessages;
537
+ }
538
+ /**
539
+ * 获取最后发送的消息序号
540
+ * @param peerAddress 对方地址
541
+ * @returns 最后发送的消息 leafIndex,如果没有发送过返回 -1
542
+ */
543
+ getLastSentLeafIndex(peerAddress) {
544
+ if (!this.userAddress) return -1;
545
+ const messages = this.messageStorage.getMessagesBySession(
546
+ this.userAddress,
547
+ peerAddress
548
+ );
549
+ const sentMessages = messages.filter(
550
+ (m) => m.direction === MessageDirection.SENT && m.leafIndex !== void 0
551
+ );
552
+ if (sentMessages.length === 0) return -1;
553
+ return Math.max(...sentMessages.map((m) => m.leafIndex));
554
+ }
555
+ /**
556
+ * 获取会话历史消息
557
+ */
558
+ getSessionMessages(peerAddress) {
559
+ if (!this.userAddress) {
560
+ return [];
561
+ }
562
+ return this.messageStorage.getMessagesBySession(
563
+ this.userAddress,
564
+ peerAddress
565
+ );
566
+ }
567
+ /**
568
+ * 获取会话当前状态
569
+ */
570
+ getSessionState(peerAddress) {
571
+ if (!this.userAddress) {
572
+ return void 0;
573
+ }
574
+ return this.sessionStateStorage.getSessionState(
575
+ this.userAddress,
576
+ peerAddress
577
+ );
578
+ }
579
+ /**
580
+ * 提交链上证明
581
+ *
582
+ * 使用 proof.ts 将 Merkle Root 提交到链上,获得时间证明
583
+ *
584
+ * @param env CallEnv 环境
585
+ * @param peerAddress 对方地址
586
+ * @param description 证明描述
587
+ */
588
+ async submitChainProof(env, peerAddress, description) {
589
+ if (!this.userAddress) {
590
+ throw new MessengerError(
591
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
592
+ "User address not set"
593
+ );
594
+ }
595
+ const sessionState = this.sessionStateStorage.getSessionState(
596
+ this.userAddress,
597
+ peerAddress
598
+ );
599
+ if (!sessionState || !sessionState.currentRoot) {
600
+ throw new MessengerError(
601
+ MessengerErrorCode.SESSION_NOT_ESTABLISHED,
602
+ "No session state found"
603
+ );
604
+ }
605
+ const messages = this.messageStorage.getMessagesBySession(
606
+ this.userAddress,
607
+ peerAddress
608
+ );
609
+ const lastMessage = messages[messages.length - 1];
610
+ if (!lastMessage || !lastMessage.serverPublicKey || !lastMessage.serverSignature) {
611
+ throw new MessengerError(
612
+ MessengerErrorCode.INVALID_PROOF,
613
+ "No temporal proof (missing server public key or signature), cannot submit Proof to WoWok blockchain"
614
+ );
615
+ }
616
+ const serverPubKey = lastMessage.serverPublicKey;
617
+ const serverSignature = lastMessage.serverSignature;
618
+ const proofData = {
619
+ sessionId: sessionState.sessionId,
620
+ merkleRoot: sessionState.currentRoot,
621
+ messageCount: sessionState.messageCount,
622
+ timestamp: Date.now()
623
+ };
624
+ const callProof = new CallProof({
625
+ proof: JSON.stringify(proofData),
626
+ server_pubkey: serverPubKey,
627
+ server_signature: serverSignature,
628
+ proof_type: CHAIN_PROOF_TYPE,
629
+ // 1 = Messenger Session Proof
630
+ description: description || `Messenger session proof for ${this.userAddress} <-> ${peerAddress}`,
631
+ item_count: sessionState.messageCount,
632
+ about_address: sessionState.sessionId
633
+ });
634
+ const result = await callProof.call(env);
635
+ const responseData = result?.objectChanges;
636
+ const proofAddress = responseData?.find(
637
+ (change) => change.objectType?.includes("Proof")
638
+ )?.objectId;
639
+ return {
640
+ proofAddress: proofAddress || "",
641
+ txHash: result?.digest || ""
642
+ };
643
+ }
644
+ /**
645
+ * 建立 SSE 连接并监听服务器事件
646
+ *
647
+ * 安全要求:必须提供签名验证,防止未授权监听他人事件
648
+ * @param onMessage 新消息回调
649
+ * @param signatureParams 签名参数(可选,不提供时自动生成)
650
+ */
651
+ async connectEventSource(onMessage, signatureParams) {
652
+ if (!this.userAddress) {
653
+ throw new MessengerError(
654
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
655
+ "User address not set"
656
+ );
657
+ }
658
+ this.disconnectEventSource();
659
+ if (onMessage) {
660
+ this.onMessageCallback = onMessage;
661
+ }
662
+ const account = await Account.Instance().get(this.userAddress, false);
663
+ const publicKey = account?.pubkey || "";
664
+ let params = signatureParams;
665
+ if (!params) {
666
+ const timestamp = Date.now();
667
+ const nonce = this.generateNonce();
668
+ const message = `event_stream:${this.userAddress}:${timestamp}:${nonce}`;
669
+ const signResult = await Account.Instance().signData(
670
+ this.userAddress,
671
+ message
672
+ );
673
+ const signatureBuffer = Buffer.from(
674
+ signResult.signature.slice(2),
675
+ "hex"
676
+ );
677
+ const signatureBase64 = bytesToBase64(
678
+ new Uint8Array(signatureBuffer)
679
+ );
680
+ params = {
681
+ signatureScheme: "ED25519",
682
+ signature: signatureBase64,
683
+ timestamp,
684
+ nonce
685
+ };
686
+ }
687
+ const queryParams = new URLSearchParams({
688
+ publicKey,
689
+ signatureScheme: params.signatureScheme,
690
+ signature: params.signature,
691
+ timestamp: params.timestamp.toString(),
692
+ nonce: params.nonce
693
+ });
694
+ const url = `${this.config.serverUrl}/v1/events/${this.userAddress}?${queryParams}`;
695
+ if (typeof EventSource === "undefined") {
696
+ throw new ReferenceError("EventSource is not defined");
697
+ }
698
+ this.eventSource = new EventSource(url);
699
+ this.eventSource.onmessage = async (event) => {
700
+ try {
701
+ const sseEvent = JSON.parse(event.data);
702
+ switch (sseEvent.type) {
703
+ case "NewMessage":
704
+ if (this.onMessageCallback) {
705
+ const messages = await this.pullMessages();
706
+ if (messages.length > 0) {
707
+ this.onMessageCallback(messages);
708
+ }
709
+ }
710
+ break;
711
+ case "ark_confirmed": {
712
+ const {
713
+ message_ids,
714
+ recipient,
715
+ recipient_public_key,
716
+ signature,
717
+ timestamp
718
+ } = sseEvent.data;
719
+ const verifyMessage2 = `ack_messages:${recipient}:${message_ids.join(",")}:${recipient_public_key}:${timestamp}`;
720
+ try {
721
+ const { Ed25519PublicKey } = await import("../../keypairs/ed25519/publickey.js");
722
+ const publicKey2 = new Ed25519PublicKey(
723
+ recipient_public_key
724
+ );
725
+ const signatureBytes = Uint8Array.from(
726
+ Buffer.from(signature, "base64")
727
+ );
728
+ const isValid = await publicKey2.verify(
729
+ new TextEncoder().encode(verifyMessage2),
730
+ signatureBytes
731
+ );
732
+ if (isValid) {
733
+ for (const msgId of message_ids) {
734
+ const existingMsg = this.messageStorage.getMessage(msgId);
735
+ if (existingMsg) {
736
+ existingMsg.arkConfirmed = {
737
+ recipient,
738
+ recipientPublicKey: recipient_public_key,
739
+ signature,
740
+ timestamp
741
+ };
742
+ this.messageStorage.saveMessage(
743
+ existingMsg
744
+ );
745
+ }
746
+ }
747
+ } else {
748
+ console.error(
749
+ "ARK signature verification failed - possible server tampering"
750
+ );
751
+ }
752
+ } catch (error) {
753
+ console.error(
754
+ "Failed to verify ARK signature:",
755
+ error
756
+ );
757
+ }
758
+ break;
759
+ }
760
+ case "PreKeyLow":
761
+ await this.checkAndRefillPrekeys();
762
+ break;
763
+ case "Custom":
764
+ break;
765
+ case "guard_confirmed": {
766
+ const {
767
+ message_id,
768
+ merkle_data,
769
+ timestamp: _timestamp
770
+ } = sseEvent.data;
771
+ const existingMsg = this.messageStorage.getMessage(message_id);
772
+ if (!existingMsg) {
773
+ console.warn(
774
+ `Guard confirmed event received but message ${message_id} not found in local storage`
775
+ );
776
+ break;
777
+ }
778
+ if (!merkle_data.prevRoot) {
779
+ console.error(
780
+ `Guard message ${message_id} missing prevRoot in merkle_data`
781
+ );
782
+ break;
783
+ }
784
+ if (!merkle_data.newRoot) {
785
+ console.error(
786
+ `Guard message ${message_id} missing newRoot in merkle_data`
787
+ );
788
+ break;
789
+ }
790
+ if (!merkle_data.serverTimestamp) {
791
+ console.error(
792
+ `Guard message ${message_id} missing serverTimestamp in merkle_data`
793
+ );
794
+ break;
795
+ }
796
+ if (!merkle_data.serverSignature) {
797
+ console.error(
798
+ `Guard message ${message_id} missing serverSignature in merkle_data`
799
+ );
800
+ break;
801
+ }
802
+ if (!merkle_data.serverPublicKey) {
803
+ console.error(
804
+ `Guard message ${message_id} missing serverPublicKey in merkle_data`
805
+ );
806
+ break;
807
+ }
808
+ const { verifySingleMerkleRoot } = await import("./crypto.js");
809
+ const rootValid = verifySingleMerkleRoot(
810
+ merkle_data.prevRoot,
811
+ merkle_data.newRoot,
812
+ existingMsg.plaintextHash,
813
+ merkle_data.serverTimestamp,
814
+ merkle_data.leafIndex
815
+ );
816
+ if (!rootValid.valid) {
817
+ console.error(
818
+ `Guard message ${message_id} Merkle root verification failed: ${rootValid.error}`
819
+ );
820
+ break;
821
+ }
822
+ const { verifyEd25519Signature } = await import("./crypto.js");
823
+ const signData = `${merkle_data.prevRoot}:${merkle_data.newRoot}:${merkle_data.serverTimestamp}:${merkle_data.serverPublicKey}`;
824
+ const signatureValid = verifyEd25519Signature(
825
+ merkle_data.serverPublicKey,
826
+ signData,
827
+ merkle_data.serverSignature
828
+ );
829
+ if (!signatureValid) {
830
+ console.error(
831
+ `Guard message ${message_id} server signature verification failed`
832
+ );
833
+ break;
834
+ }
835
+ this.messageStorage.updateMessageStatus(
836
+ message_id,
837
+ MessageStatus.CONFIRMED,
838
+ {
839
+ leafIndex: merkle_data.leafIndex,
840
+ newRoot: merkle_data.newRoot,
841
+ serverSignature: merkle_data.serverSignature,
842
+ serverTimestamp: merkle_data.serverTimestamp,
843
+ serverPublicKey: merkle_data.serverPublicKey
844
+ }
845
+ );
846
+ const updated = true;
847
+ if (updated) {
848
+ if (existingMsg.toAddress === null) {
849
+ throw new Error(
850
+ `Guard message ${message_id} has null toAddress`
851
+ );
852
+ }
853
+ const toAddr = existingMsg.toAddress;
854
+ if (toAddr === null) {
855
+ throw new Error(
856
+ `Guard message ${message_id} has null toAddress`
857
+ );
858
+ }
859
+ this.sessionStateStorage.updateSessionState(
860
+ this.userAddress,
861
+ toAddr,
862
+ {
863
+ currentRoot: merkle_data.newRoot,
864
+ prevRoot: merkle_data.prevRoot,
865
+ lastLeafIndex: merkle_data.leafIndex,
866
+ lastSyncAt: Date.now()
867
+ }
868
+ );
869
+ } else {
870
+ console.warn(
871
+ `Failed to update Guard message ${message_id}`
872
+ );
873
+ }
874
+ break;
875
+ }
876
+ case "guard_rejected": {
877
+ const {
878
+ message_id,
879
+ reason: _reason,
880
+ timestamp: _timestamp
881
+ } = sseEvent.data;
882
+ const existingMsg = this.messageStorage.getMessage(message_id);
883
+ if (existingMsg) {
884
+ existingMsg.status = MessageStatus.REJECTED;
885
+ this.messageStorage.saveMessage(existingMsg);
886
+ } else {
887
+ }
888
+ break;
889
+ }
890
+ }
891
+ } catch (error) {
892
+ console.error("Failed to handle SSE event:", error);
893
+ }
894
+ };
895
+ this.eventSource.onopen = () => {
896
+ };
897
+ this.eventSource.onerror = (error) => {
898
+ console.error("SSE connection error:", error);
899
+ this.disconnectEventSource();
900
+ };
901
+ }
902
+ /**
903
+ * 检查 SSE 是否已连接
904
+ */
905
+ isEventSourceConnected() {
906
+ return this.eventSource !== null;
907
+ }
908
+ /**
909
+ * 断开 SSE 连接
910
+ */
911
+ disconnectEventSource() {
912
+ if (this.eventSource) {
913
+ this.eventSource.close();
914
+ this.eventSource = null;
915
+ }
916
+ }
917
+ /**
918
+ * 销毁 Messenger 实例
919
+ * 清理所有资源(定时器、SSE 连接等)
920
+ */
921
+ destroy() {
922
+ this.stopPrekeyCheckTimer();
923
+ this.disconnectEventSource();
924
+ }
925
+ /**
926
+ * 断开连接(destroy 的别名)
927
+ * 用于清理资源
928
+ */
929
+ disconnect() {
930
+ this.destroy();
931
+ }
932
+ /**
933
+ * 发送 ZIP 压缩文件
934
+ *
935
+ * 支持发送本地或网络 WTS/WIP 文件,经过 ZIP 压缩后发送给对方
936
+ * 支持 Guard 验证,如果提供 guardAddress 和 passportAddress,消息将进入 Guard 验证流程
937
+ *
938
+ * @param recipientAddress 接收方地址
939
+ * @param source 文件源(本地路径或网络 URL)
940
+ * @param options 可选参数
941
+ * @returns 发送结果
942
+ */
943
+ async sendZipFile(recipientAddress, source, options) {
944
+ if (!this.userAddress) {
945
+ throw new MessengerError(
946
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
947
+ "User address not set"
948
+ );
949
+ }
950
+ const fileData = await this.loadFileData(source);
951
+ const JSZip = (await import("jszip")).default;
952
+ const zip = new JSZip();
953
+ const fileName = options?.fileName || path.basename(source) || "file.zip";
954
+ const contentType = options?.contentType || this.detectContentType(fileName);
955
+ zip.file(fileName, fileData);
956
+ const zipBlob = await zip.generateAsync({ type: "uint8array" });
957
+ if (zipBlob.length > WTS_FILE_BYTES_LIMIT) {
958
+ throw new MessengerError(
959
+ MessengerErrorCode.INVALID_INPUT,
960
+ `ZIP file size (${zipBlob.length} bytes) exceeds local maximum allowed size (${WTS_FILE_BYTES_LIMIT} bytes)`
961
+ );
962
+ }
963
+ const zipFileHash = "0x" + createHash("sha256").update(zipBlob).digest("hex");
964
+ const zipBase64 = Buffer.from(zipBlob).toString("base64");
965
+ const zipMetadata = {
966
+ fileName: `${fileName}.zip`,
967
+ fileSize: zipBlob.length,
968
+ fileHash: zipFileHash,
969
+ contentType
970
+ };
971
+ const lastReceivedLeafIndex = this.messageStorage.getLastReceivedLeafIndex(
972
+ this.userAddress,
973
+ recipientAddress
974
+ );
975
+ const createdAt = Date.now();
976
+ const encrypted = await this.session.encryptMessage(
977
+ this.userAddress,
978
+ recipientAddress,
979
+ zipBase64
980
+ // 直接加密 ZIP 的 base64 内容
981
+ );
982
+ const ciphertext = Buffer.from(new Uint8Array(encrypted.body)).toString(
983
+ "base64"
984
+ );
985
+ const guardAddr = options?.guardAddress || "";
986
+ const passportAddr = options?.passportAddress || "";
987
+ const plaintextHash = hashPlaintext(
988
+ zipBase64,
989
+ createdAt,
990
+ guardAddr,
991
+ passportAddr,
992
+ lastReceivedLeafIndex
993
+ );
994
+ const timestamp = Date.now();
995
+ const nonce = this.generateNonce();
996
+ const account = await Account.Instance().get(this.userAddress, false);
997
+ if (!account) {
998
+ throw new MessengerError(
999
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1000
+ "User account not found"
1001
+ );
1002
+ }
1003
+ const publicKey = account.pubkey;
1004
+ const lastReceivedStr = lastReceivedLeafIndex >= 0 ? lastReceivedLeafIndex.toString() : "";
1005
+ const forceStr = options?.force ? "true" : "false";
1006
+ const signMessage = `send_message:${this.userAddress}:${recipientAddress}:${guardAddr}:${passportAddr}:${plaintextHash}:${lastReceivedStr}:${publicKey}:${timestamp}:${nonce}:${forceStr}`;
1007
+ const signResult = await Account.Instance().signData(
1008
+ this.userAddress,
1009
+ signMessage
1010
+ );
1011
+ const signatureBuffer = Buffer.from(
1012
+ signResult.signature.slice(2),
1013
+ "hex"
1014
+ );
1015
+ const signatureBase64 = bytesToBase64(new Uint8Array(signatureBuffer));
1016
+ const response = await this.serverClient.sendMessage({
1017
+ sender: signResult.publicKey,
1018
+ recipient: recipientAddress,
1019
+ ciphertext,
1020
+ plaintextHash,
1021
+ clientTimestamp: createdAt,
1022
+ msgType: encrypted.type,
1023
+ // 使用底层 Signal Protocol 消息类型(1 或 3)
1024
+ zipMetadata,
1025
+ guardAddress: options?.guardAddress,
1026
+ passportAddress: options?.passportAddress,
1027
+ force: options?.force,
1028
+ // 【修复】只有当 lastReceivedLeafIndex >= 0 时才发送,否则发送 undefined
1029
+ lastReceivedLeafIndex: lastReceivedLeafIndex >= 0 ? lastReceivedLeafIndex : void 0,
1030
+ signatureScheme: "ED25519",
1031
+ signature: signatureBase64,
1032
+ timestamp,
1033
+ nonce
1034
+ });
1035
+ const message = {
1036
+ messageId: response.messageId,
1037
+ fromAddress: this.userAddress,
1038
+ toAddress: recipientAddress,
1039
+ plaintextHash,
1040
+ plaintext: zipBase64,
1041
+ // 保存 ZIP 数据的 base64 编码,方便本地查看
1042
+ guardAddress: options?.guardAddress,
1043
+ passportAddress: options?.passportAddress,
1044
+ lastReceivedLeafIndex,
1045
+ // 【新增】保存消息确认字段
1046
+ direction: MessageDirection.SENT,
1047
+ status: response.status === "confirmed" ? MessageStatus.CONFIRMED : MessageStatus.PENDING,
1048
+ msgType: encrypted.type,
1049
+ // 使用底层 Signal Protocol 消息类型(1 或 3)
1050
+ zipMetadata,
1051
+ createdAt
1052
+ };
1053
+ if (response.merkleData) {
1054
+ message.leafIndex = response.merkleData.leafIndex;
1055
+ message.prevRoot = response.merkleData.prevRoot;
1056
+ message.newRoot = response.merkleData.newRoot;
1057
+ message.serverSignature = response.merkleData.serverSignature;
1058
+ message.serverTimestamp = response.merkleData.serverTimestamp;
1059
+ message.serverPublicKey = response.merkleData.serverPublicKey;
1060
+ this.sessionStateStorage.updateSessionState(
1061
+ this.userAddress,
1062
+ recipientAddress,
1063
+ {
1064
+ currentRoot: response.merkleData.newRoot,
1065
+ prevRoot: response.merkleData.prevRoot,
1066
+ lastLeafIndex: response.merkleData.leafIndex,
1067
+ lastSyncAt: Date.now()
1068
+ }
1069
+ );
1070
+ }
1071
+ this.messageStorage.saveMessage(message);
1072
+ if (response.pendingMerkleData) {
1073
+ for (const [msgId, merkleData] of Object.entries(
1074
+ response.pendingMerkleData
1075
+ )) {
1076
+ const existingMsg = this.messageStorage.getMessage(msgId);
1077
+ if (existingMsg && existingMsg.status === MessageStatus.PENDING) {
1078
+ this.messageStorage.updateMessageStatus(
1079
+ msgId,
1080
+ MessageStatus.CONFIRMED,
1081
+ {
1082
+ leafIndex: merkleData.leafIndex,
1083
+ newRoot: merkleData.newRoot,
1084
+ serverSignature: merkleData.serverSignature,
1085
+ serverTimestamp: merkleData.serverTimestamp,
1086
+ serverPublicKey: merkleData.serverPublicKey
1087
+ }
1088
+ );
1089
+ }
1090
+ }
1091
+ }
1092
+ return {
1093
+ messageId: response.messageId,
1094
+ status: message.status,
1095
+ merkleData: response.merkleData,
1096
+ guardList: response.guard_list
1097
+ };
1098
+ }
1099
+ /**
1100
+ * 加载文件数据(支持本地路径和网络 URL)
1101
+ */
1102
+ async loadFileData(source) {
1103
+ if (source.startsWith("http://") || source.startsWith("https://")) {
1104
+ const response = await fetch(source);
1105
+ if (!response.ok) {
1106
+ throw new MessengerError(
1107
+ MessengerErrorCode.NETWORK_ERROR,
1108
+ `Failed to fetch file from ${source}: ${response.statusText}`
1109
+ );
1110
+ }
1111
+ const arrayBuffer = await response.arrayBuffer();
1112
+ return new Uint8Array(arrayBuffer);
1113
+ }
1114
+ const resolvedPath = path.resolve(source);
1115
+ if (!fs.existsSync(resolvedPath)) {
1116
+ throw new MessengerError(
1117
+ MessengerErrorCode.FILE_NOT_FOUND,
1118
+ `File not found: ${resolvedPath}`
1119
+ );
1120
+ }
1121
+ const buffer = fs.readFileSync(resolvedPath);
1122
+ return new Uint8Array(buffer);
1123
+ }
1124
+ /**
1125
+ * 检测内容类型
1126
+ */
1127
+ detectContentType(fileName) {
1128
+ const ext = path.extname(fileName).toLowerCase();
1129
+ switch (ext) {
1130
+ case ".wts":
1131
+ return "wts";
1132
+ case ".wip":
1133
+ return "wip";
1134
+ default:
1135
+ return "zip";
1136
+ }
1137
+ }
1138
+ /**
1139
+ * 生成签名的请求
1140
+ */
1141
+ async _createSignedRequest(data) {
1142
+ if (!this.userAddress) {
1143
+ throw new MessengerError(
1144
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1145
+ "User address not set"
1146
+ );
1147
+ }
1148
+ const timestamp = Date.now();
1149
+ const nonce = this.generateNonce();
1150
+ const dataJson = canonicalizeJson(data);
1151
+ const signMessage = `${timestamp}:${nonce}:${dataJson}`;
1152
+ const signResult = await Account.Instance().signData(
1153
+ this.userAddress,
1154
+ signMessage
1155
+ );
1156
+ const signatureBuffer = Buffer.from(
1157
+ signResult.signature.slice(2),
1158
+ "hex"
1159
+ );
1160
+ const signatureBase64 = bytesToBase64(new Uint8Array(signatureBuffer));
1161
+ const account = await Account.Instance().get(this.userAddress, false);
1162
+ if (!account || !account.pubkey) {
1163
+ throw new MessengerError(
1164
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1165
+ "Account public key not found"
1166
+ );
1167
+ }
1168
+ return {
1169
+ userAddress: this.userAddress,
1170
+ publicKey: account.pubkey,
1171
+ signatureScheme: "ED25519",
1172
+ signature: signatureBase64,
1173
+ timestamp,
1174
+ nonce,
1175
+ data
1176
+ };
1177
+ }
1178
+ /**
1179
+ * 验证地址列表
1180
+ */
1181
+ _validateAddresses(addresses) {
1182
+ const valid = [];
1183
+ const invalid = [];
1184
+ for (const addr of addresses) {
1185
+ if (isValidWowAddress(addr)) {
1186
+ valid.push(addr);
1187
+ } else {
1188
+ invalid.push(addr);
1189
+ }
1190
+ }
1191
+ return { valid, invalid };
1192
+ }
1193
+ /**
1194
+ * 黑名单 - 添加地址
1195
+ */
1196
+ async addToBlacklist(addresses) {
1197
+ if (!this.userAddress) {
1198
+ throw new MessengerError(
1199
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1200
+ "User address not set"
1201
+ );
1202
+ }
1203
+ const { valid, invalid } = this._validateAddresses(addresses);
1204
+ if (invalid.length > 0) {
1205
+ return {
1206
+ success: false,
1207
+ operation: "add",
1208
+ modifiedCount: 0,
1209
+ currentCount: 0,
1210
+ maxCount: 0,
1211
+ invalidAddresses: invalid,
1212
+ message: `Invalid addresses: ${invalid.join(", ")}`
1213
+ };
1214
+ }
1215
+ const data = { addresses: valid };
1216
+ const signedRequest = await this._createSignedRequest(data);
1217
+ return this.serverClient.addToBlacklist(
1218
+ this.userAddress,
1219
+ signedRequest
1220
+ );
1221
+ }
1222
+ /**
1223
+ * 黑名单 - 移除地址
1224
+ */
1225
+ async removeFromBlacklist(addresses) {
1226
+ if (!this.userAddress) {
1227
+ throw new MessengerError(
1228
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1229
+ "User address not set"
1230
+ );
1231
+ }
1232
+ const { valid, invalid } = this._validateAddresses(addresses);
1233
+ if (invalid.length > 0) {
1234
+ return {
1235
+ success: false,
1236
+ operation: "remove",
1237
+ modifiedCount: 0,
1238
+ currentCount: 0,
1239
+ maxCount: 0,
1240
+ invalidAddresses: invalid,
1241
+ message: `Invalid addresses: ${invalid.join(", ")}`
1242
+ };
1243
+ }
1244
+ const data = { addresses: valid };
1245
+ const signedRequest = await this._createSignedRequest(data);
1246
+ return this.serverClient.removeFromBlacklist(
1247
+ this.userAddress,
1248
+ signedRequest
1249
+ );
1250
+ }
1251
+ /**
1252
+ * 黑名单 - 清空
1253
+ */
1254
+ async clearBlacklist() {
1255
+ if (!this.userAddress) {
1256
+ throw new MessengerError(
1257
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1258
+ "User address not set"
1259
+ );
1260
+ }
1261
+ const data = {};
1262
+ const signedRequest = await this._createSignedRequest(data);
1263
+ return this.serverClient.clearBlacklist(
1264
+ this.userAddress,
1265
+ signedRequest
1266
+ );
1267
+ }
1268
+ /**
1269
+ * 黑名单 - 获取列表
1270
+ */
1271
+ async getBlacklist() {
1272
+ if (!this.userAddress) {
1273
+ throw new MessengerError(
1274
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1275
+ "User address not set"
1276
+ );
1277
+ }
1278
+ const signedRequest = await this._createSignedRequest({});
1279
+ return this.serverClient.getBlacklist(this.userAddress, signedRequest);
1280
+ }
1281
+ /**
1282
+ * 黑名单 - 检查存在
1283
+ */
1284
+ async existInBlacklist(addresses) {
1285
+ if (!this.userAddress) {
1286
+ throw new MessengerError(
1287
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1288
+ "User address not set"
1289
+ );
1290
+ }
1291
+ const { valid, invalid } = this._validateAddresses(addresses);
1292
+ if (invalid.length > 0) {
1293
+ return {
1294
+ success: false,
1295
+ operation: "exist",
1296
+ modifiedCount: 0,
1297
+ currentCount: 0,
1298
+ maxCount: 0,
1299
+ invalidAddresses: invalid,
1300
+ message: `Invalid addresses: ${invalid.join(", ")}`
1301
+ };
1302
+ }
1303
+ const data = { addresses: valid };
1304
+ const signedRequest = await this._createSignedRequest(data);
1305
+ return this.serverClient.existInBlacklist(
1306
+ this.userAddress,
1307
+ signedRequest
1308
+ );
1309
+ }
1310
+ /**
1311
+ * 好友列表 - 添加地址
1312
+ */
1313
+ async addToFriendsList(addresses) {
1314
+ if (!this.userAddress) {
1315
+ throw new MessengerError(
1316
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1317
+ "User address not set"
1318
+ );
1319
+ }
1320
+ const { valid, invalid } = this._validateAddresses(addresses);
1321
+ if (invalid.length > 0) {
1322
+ return {
1323
+ success: false,
1324
+ operation: "add",
1325
+ modifiedCount: 0,
1326
+ currentCount: 0,
1327
+ maxCount: 0,
1328
+ invalidAddresses: invalid,
1329
+ message: `Invalid addresses: ${invalid.join(", ")}`
1330
+ };
1331
+ }
1332
+ const data = { addresses: valid };
1333
+ const signedRequest = await this._createSignedRequest(data);
1334
+ return this.serverClient.addToFriendsList(
1335
+ this.userAddress,
1336
+ signedRequest
1337
+ );
1338
+ }
1339
+ /**
1340
+ * 好友列表 - 移除地址
1341
+ */
1342
+ async removeFromFriendsList(addresses) {
1343
+ if (!this.userAddress) {
1344
+ throw new MessengerError(
1345
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1346
+ "User address not set"
1347
+ );
1348
+ }
1349
+ const { valid, invalid } = this._validateAddresses(addresses);
1350
+ if (invalid.length > 0) {
1351
+ return {
1352
+ success: false,
1353
+ operation: "remove",
1354
+ modifiedCount: 0,
1355
+ currentCount: 0,
1356
+ maxCount: 0,
1357
+ invalidAddresses: invalid,
1358
+ message: `Invalid addresses: ${invalid.join(", ")}`
1359
+ };
1360
+ }
1361
+ const data = { addresses: valid };
1362
+ const signedRequest = await this._createSignedRequest(data);
1363
+ return this.serverClient.removeFromFriendsList(
1364
+ this.userAddress,
1365
+ signedRequest
1366
+ );
1367
+ }
1368
+ /**
1369
+ * 好友列表 - 清空
1370
+ */
1371
+ async clearFriendsList() {
1372
+ if (!this.userAddress) {
1373
+ throw new MessengerError(
1374
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1375
+ "User address not set"
1376
+ );
1377
+ }
1378
+ const data = {};
1379
+ const signedRequest = await this._createSignedRequest(data);
1380
+ return this.serverClient.clearFriendsList(
1381
+ this.userAddress,
1382
+ signedRequest
1383
+ );
1384
+ }
1385
+ /**
1386
+ * 好友列表 - 获取列表
1387
+ */
1388
+ async getFriendsList() {
1389
+ if (!this.userAddress) {
1390
+ throw new MessengerError(
1391
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1392
+ "User address not set"
1393
+ );
1394
+ }
1395
+ const signedRequest = await this._createSignedRequest({});
1396
+ return this.serverClient.getFriendsList(
1397
+ this.userAddress,
1398
+ signedRequest
1399
+ );
1400
+ }
1401
+ /**
1402
+ * 好友列表 - 检查存在
1403
+ */
1404
+ async existInFriendsList(addresses) {
1405
+ if (!this.userAddress) {
1406
+ throw new MessengerError(
1407
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1408
+ "User address not set"
1409
+ );
1410
+ }
1411
+ const { valid, invalid } = this._validateAddresses(addresses);
1412
+ if (invalid.length > 0) {
1413
+ return {
1414
+ success: false,
1415
+ operation: "exist",
1416
+ modifiedCount: 0,
1417
+ currentCount: 0,
1418
+ maxCount: 0,
1419
+ invalidAddresses: invalid,
1420
+ message: `Invalid addresses: ${invalid.join(", ")}`
1421
+ };
1422
+ }
1423
+ const data = { addresses: valid };
1424
+ const signedRequest = await this._createSignedRequest(data);
1425
+ return this.serverClient.existInFriendsList(
1426
+ this.userAddress,
1427
+ signedRequest
1428
+ );
1429
+ }
1430
+ /**
1431
+ * Guard 列表 - 添加
1432
+ */
1433
+ async addToGuardList(guards) {
1434
+ if (!this.userAddress) {
1435
+ throw new MessengerError(
1436
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1437
+ "User address not set"
1438
+ );
1439
+ }
1440
+ const data = { guards };
1441
+ const signedRequest = await this._createSignedRequest(data);
1442
+ return this.serverClient.addToGuardList(
1443
+ this.userAddress,
1444
+ signedRequest
1445
+ );
1446
+ }
1447
+ /**
1448
+ * Guard 列表 - 移除
1449
+ */
1450
+ async removeFromGuardList(addresses) {
1451
+ if (!this.userAddress) {
1452
+ throw new MessengerError(
1453
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1454
+ "User address not set"
1455
+ );
1456
+ }
1457
+ const { valid, invalid } = this._validateAddresses(addresses);
1458
+ if (invalid.length > 0) {
1459
+ return {
1460
+ success: false,
1461
+ operation: "remove",
1462
+ modifiedCount: 0,
1463
+ currentCount: 0,
1464
+ maxCount: 0,
1465
+ invalidAddresses: invalid,
1466
+ message: `Invalid addresses: ${invalid.join(", ")}`
1467
+ };
1468
+ }
1469
+ const data = { addresses: valid };
1470
+ const signedRequest = await this._createSignedRequest(data);
1471
+ return this.serverClient.removeFromGuardList(
1472
+ this.userAddress,
1473
+ signedRequest
1474
+ );
1475
+ }
1476
+ /**
1477
+ * Guard 列表 - 获取列表
1478
+ */
1479
+ async getGuardList() {
1480
+ if (!this.userAddress) {
1481
+ throw new MessengerError(
1482
+ MessengerErrorCode.IDENTITY_NOT_FOUND,
1483
+ "User address not set"
1484
+ );
1485
+ }
1486
+ const signedRequest = await this._createSignedRequest({});
1487
+ return this.serverClient.getGuardList(this.userAddress, signedRequest);
1488
+ }
1489
+ }
1490
+ export {
1491
+ Messenger
1492
+ };