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