wowok 2.1.10 → 2.1.13

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 (896) hide show
  1. package/dist/cjs/bcs/bcs.d.ts +199 -199
  2. package/dist/cjs/bcs/bcs.js +273 -318
  3. package/dist/cjs/bcs/bcs.js.map +1 -0
  4. package/dist/cjs/bcs/effects.d.ts +109 -109
  5. package/dist/cjs/bcs/effects.js +205 -230
  6. package/dist/cjs/bcs/effects.js.map +1 -0
  7. package/dist/cjs/bcs/index.d.ts +1 -2584
  8. package/dist/cjs/bcs/index.js +61 -76
  9. package/dist/cjs/bcs/index.js.map +1 -0
  10. package/dist/cjs/bcs/pure.js +38 -58
  11. package/dist/cjs/bcs/pure.js.map +1 -0
  12. package/dist/cjs/bcs/type-tag-serializer.js +102 -114
  13. package/dist/cjs/bcs/type-tag-serializer.js.map +1 -0
  14. package/dist/cjs/bcs/types.js +6 -23
  15. package/dist/cjs/bcs/types.js.map +1 -0
  16. package/dist/cjs/client/index.js +17 -33
  17. package/dist/cjs/client/index.js.map +1 -0
  18. package/dist/cjs/client/network.js +25 -40
  19. package/dist/cjs/client/network.js.map +1 -0
  20. package/dist/cjs/cryptography/index.js +29 -45
  21. package/dist/cjs/cryptography/index.js.map +1 -0
  22. package/dist/cjs/cryptography/intent.d.ts +1 -1
  23. package/dist/cjs/cryptography/intent.js +20 -31
  24. package/dist/cjs/cryptography/intent.js.map +1 -0
  25. package/dist/cjs/cryptography/keypair.js +102 -116
  26. package/dist/cjs/cryptography/keypair.js.map +1 -0
  27. package/dist/cjs/cryptography/mnemonics.js +43 -41
  28. package/dist/cjs/cryptography/mnemonics.js.map +1 -0
  29. package/dist/cjs/cryptography/publickey.js +112 -134
  30. package/dist/cjs/cryptography/publickey.js.map +1 -0
  31. package/dist/cjs/cryptography/signature-scheme.js +24 -43
  32. package/dist/cjs/cryptography/signature-scheme.js.map +1 -0
  33. package/dist/cjs/cryptography/signature.d.ts +2 -24
  34. package/dist/cjs/cryptography/signature.js +50 -67
  35. package/dist/cjs/cryptography/signature.js.map +1 -0
  36. package/dist/cjs/experimental/cache.js +65 -0
  37. package/dist/cjs/experimental/cache.js.map +1 -0
  38. package/dist/cjs/experimental/client.js +27 -0
  39. package/dist/cjs/experimental/client.js.map +1 -0
  40. package/dist/cjs/experimental/core.js +89 -0
  41. package/dist/cjs/experimental/core.js.map +1 -0
  42. package/dist/cjs/experimental/errors.js +32 -0
  43. package/dist/cjs/experimental/errors.js.map +1 -0
  44. package/dist/cjs/experimental/index.js +15 -0
  45. package/dist/cjs/experimental/index.js.map +1 -0
  46. package/dist/cjs/experimental/persistent-storage.js +343 -0
  47. package/dist/cjs/experimental/persistent-storage.js.map +1 -0
  48. package/dist/cjs/experimental/persistent-storage.test.js +200 -0
  49. package/dist/cjs/experimental/persistent-storage.test.js.map +1 -0
  50. package/dist/cjs/experimental/transports/utils.js +104 -0
  51. package/dist/cjs/experimental/transports/utils.js.map +1 -0
  52. package/dist/cjs/experimental/types.js +6 -0
  53. package/dist/cjs/experimental/types.js.map +1 -0
  54. package/dist/cjs/faucet/faucet.js +106 -124
  55. package/dist/cjs/faucet/faucet.js.map +1 -0
  56. package/dist/cjs/faucet/index.js +12 -28
  57. package/dist/cjs/faucet/index.js.map +1 -0
  58. package/dist/cjs/grpc/client.js +47 -62
  59. package/dist/cjs/grpc/client.js.map +1 -0
  60. package/dist/cjs/grpc/core.js +580 -617
  61. package/dist/cjs/grpc/core.js.map +1 -0
  62. package/dist/cjs/grpc/index.js +9 -25
  63. package/dist/cjs/grpc/index.js.map +1 -0
  64. package/dist/cjs/grpc/proto/google/protobuf/any.js +168 -135
  65. package/dist/cjs/grpc/proto/google/protobuf/any.js.map +1 -0
  66. package/dist/cjs/grpc/proto/google/protobuf/duration.js +105 -90
  67. package/dist/cjs/grpc/proto/google/protobuf/duration.js.map +1 -0
  68. package/dist/cjs/grpc/proto/google/protobuf/empty.js +50 -28
  69. package/dist/cjs/grpc/proto/google/protobuf/empty.js.map +1 -0
  70. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js +96 -75
  71. package/dist/cjs/grpc/proto/google/protobuf/field_mask.js.map +1 -0
  72. package/dist/cjs/grpc/proto/google/protobuf/struct.js +266 -215
  73. package/dist/cjs/grpc/proto/google/protobuf/struct.js.map +1 -0
  74. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js +150 -131
  75. package/dist/cjs/grpc/proto/google/protobuf/timestamp.js.map +1 -0
  76. package/dist/cjs/grpc/proto/google/rpc/error_details.js +331 -302
  77. package/dist/cjs/grpc/proto/google/rpc/error_details.js.map +1 -0
  78. package/dist/cjs/grpc/proto/google/rpc/status.js +50 -50
  79. package/dist/cjs/grpc/proto/google/rpc/status.js.map +1 -0
  80. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js +84 -68
  81. package/dist/cjs/grpc/proto/sui/rpc/v2/argument.js.map +1 -0
  82. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js +45 -50
  83. package/dist/cjs/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -0
  84. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js +38 -43
  85. package/dist/cjs/grpc/proto/sui/rpc/v2/bcs.js.map +1 -0
  86. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js +70 -75
  87. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -0
  88. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js +79 -81
  89. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -0
  90. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js +183 -166
  91. package/dist/cjs/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -0
  92. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js +369 -296
  93. package/dist/cjs/grpc/proto/sui/rpc/v2/effects.js.map +1 -0
  94. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js +80 -85
  95. package/dist/cjs/grpc/proto/sui/rpc/v2/epoch.js.map +1 -0
  96. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js +31 -28
  97. package/dist/cjs/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -0
  98. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js +81 -83
  99. package/dist/cjs/grpc/proto/sui/rpc/v2/event.js.map +1 -0
  100. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js +80 -85
  101. package/dist/cjs/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -0
  102. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js +876 -506
  103. package/dist/cjs/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -0
  104. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js +56 -61
  105. package/dist/cjs/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -0
  106. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js +103 -83
  107. package/dist/cjs/grpc/proto/sui/rpc/v2/input.js.map +1 -0
  108. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js +76 -78
  109. package/dist/cjs/grpc/proto/sui/rpc/v2/jwk.js.map +1 -0
  110. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js +69 -119
  111. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -0
  112. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js +392 -350
  113. package/dist/cjs/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -0
  114. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js +599 -473
  115. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package.js.map +1 -0
  116. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js +46 -78
  117. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -0
  118. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js +242 -224
  119. package/dist/cjs/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -0
  120. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js +32 -52
  121. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -0
  122. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js +139 -134
  123. package/dist/cjs/grpc/proto/sui/rpc/v2/name_service.js.map +1 -0
  124. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js +109 -111
  125. package/dist/cjs/grpc/proto/sui/rpc/v2/object.js.map +1 -0
  126. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js +46 -51
  127. package/dist/cjs/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -0
  128. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js +76 -61
  129. package/dist/cjs/grpc/proto/sui/rpc/v2/owner.js.map +1 -0
  130. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js +46 -59
  131. package/dist/cjs/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -0
  132. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js +568 -522
  133. package/dist/cjs/grpc/proto/sui/rpc/v2/signature.js.map +1 -0
  134. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js +54 -32
  135. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -0
  136. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +27 -47
  137. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -0
  138. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js +83 -86
  139. package/dist/cjs/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -0
  140. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js +53 -85
  141. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -0
  142. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js +645 -529
  143. package/dist/cjs/grpc/proto/sui/rpc/v2/state_service.js.map +1 -0
  144. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js +37 -51
  145. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -0
  146. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js +58 -61
  147. package/dist/cjs/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -0
  148. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js +749 -730
  149. package/dist/cjs/grpc/proto/sui/rpc/v2/system_state.js.map +1 -0
  150. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js +1218 -975
  151. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction.js.map +1 -0
  152. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +32 -46
  153. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -0
  154. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js +186 -167
  155. package/dist/cjs/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -0
  156. package/dist/cjs/index.js +96 -91
  157. package/dist/cjs/index.js.map +1 -0
  158. package/dist/cjs/jsonRpc/client.js +654 -743
  159. package/dist/cjs/jsonRpc/client.js.map +1 -0
  160. package/dist/cjs/jsonRpc/core.d.ts +7 -7
  161. package/dist/cjs/jsonRpc/core.js +562 -606
  162. package/dist/cjs/jsonRpc/core.js.map +1 -0
  163. package/dist/cjs/jsonRpc/errors.js +38 -56
  164. package/dist/cjs/jsonRpc/errors.js.map +1 -0
  165. package/dist/cjs/jsonRpc/http-transport.js +70 -114
  166. package/dist/cjs/jsonRpc/http-transport.js.map +1 -0
  167. package/dist/cjs/jsonRpc/index.js +14 -30
  168. package/dist/cjs/jsonRpc/index.js.map +1 -0
  169. package/dist/cjs/jsonRpc/json-rpc-resolver.js +286 -290
  170. package/dist/cjs/jsonRpc/json-rpc-resolver.js.map +1 -0
  171. package/dist/cjs/jsonRpc/rpc-websocket-client.js +150 -207
  172. package/dist/cjs/jsonRpc/rpc-websocket-client.js.map +1 -0
  173. package/dist/cjs/jsonRpc/types/chain.js +4 -15
  174. package/dist/cjs/jsonRpc/types/chain.js.map +1 -0
  175. package/dist/cjs/jsonRpc/types/changes.js +4 -15
  176. package/dist/cjs/jsonRpc/types/changes.js.map +1 -0
  177. package/dist/cjs/jsonRpc/types/coins.js +4 -15
  178. package/dist/cjs/jsonRpc/types/coins.js.map +1 -0
  179. package/dist/cjs/jsonRpc/types/common.js +4 -15
  180. package/dist/cjs/jsonRpc/types/common.js.map +1 -0
  181. package/dist/cjs/jsonRpc/types/generated.d.ts +1 -1
  182. package/dist/cjs/jsonRpc/types/generated.js +4 -15
  183. package/dist/cjs/jsonRpc/types/generated.js.map +1 -0
  184. package/dist/cjs/jsonRpc/types/index.js +4 -15
  185. package/dist/cjs/jsonRpc/types/index.js.map +1 -0
  186. package/dist/cjs/jsonRpc/types/params.js +4 -15
  187. package/dist/cjs/jsonRpc/types/params.js.map +1 -0
  188. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js +54 -69
  189. package/dist/cjs/keypairs/ed25519/ed25519-hd-key.js.map +1 -0
  190. package/dist/cjs/keypairs/ed25519/index.js +10 -26
  191. package/dist/cjs/keypairs/ed25519/index.js.map +1 -0
  192. package/dist/cjs/keypairs/ed25519/keypair.js +134 -159
  193. package/dist/cjs/keypairs/ed25519/keypair.js.map +1 -0
  194. package/dist/cjs/keypairs/ed25519/publickey.js +70 -84
  195. package/dist/cjs/keypairs/ed25519/publickey.js.map +1 -0
  196. package/dist/cjs/keypairs/index.js +21 -19
  197. package/dist/cjs/keypairs/index.js.map +1 -0
  198. package/dist/cjs/keypairs/passkey/index.js +11 -27
  199. package/dist/cjs/keypairs/passkey/index.js.map +1 -0
  200. package/dist/cjs/keypairs/passkey/keypair.js +245 -256
  201. package/dist/cjs/keypairs/passkey/keypair.js.map +1 -0
  202. package/dist/cjs/keypairs/passkey/publickey.js +163 -162
  203. package/dist/cjs/keypairs/passkey/publickey.js.map +1 -0
  204. package/dist/cjs/keypairs/passkey/types.js +4 -15
  205. package/dist/cjs/keypairs/passkey/types.js.map +1 -0
  206. package/dist/cjs/keypairs/secp256k1/index.js +10 -26
  207. package/dist/cjs/keypairs/secp256k1/index.js.map +1 -0
  208. package/dist/cjs/keypairs/secp256k1/keypair.js +129 -151
  209. package/dist/cjs/keypairs/secp256k1/keypair.js.map +1 -0
  210. package/dist/cjs/keypairs/secp256k1/publickey.js +71 -89
  211. package/dist/cjs/keypairs/secp256k1/publickey.js.map +1 -0
  212. package/dist/cjs/keypairs/secp256r1/index.js +10 -26
  213. package/dist/cjs/keypairs/secp256r1/index.js.map +1 -0
  214. package/dist/cjs/keypairs/secp256r1/keypair.js +127 -148
  215. package/dist/cjs/keypairs/secp256r1/keypair.js.map +1 -0
  216. package/dist/cjs/keypairs/secp256r1/publickey.js +72 -90
  217. package/dist/cjs/keypairs/secp256r1/publickey.js.map +1 -0
  218. package/dist/cjs/multisig/index.js +10 -26
  219. package/dist/cjs/multisig/index.js.map +1 -0
  220. package/dist/cjs/multisig/publickey.d.ts +1 -1
  221. package/dist/cjs/multisig/publickey.js +228 -276
  222. package/dist/cjs/multisig/publickey.js.map +1 -0
  223. package/dist/cjs/multisig/signer.js +62 -110
  224. package/dist/cjs/multisig/signer.js.map +1 -0
  225. package/dist/cjs/transactions/Arguments.d.ts +4 -4
  226. package/dist/cjs/transactions/Arguments.js +13 -34
  227. package/dist/cjs/transactions/Arguments.js.map +1 -0
  228. package/dist/cjs/transactions/Commands.js +111 -141
  229. package/dist/cjs/transactions/Commands.js.map +1 -0
  230. package/dist/cjs/transactions/Inputs.js +53 -82
  231. package/dist/cjs/transactions/Inputs.js.map +1 -0
  232. package/dist/cjs/transactions/ObjectCache.d.ts +8 -8
  233. package/dist/cjs/transactions/ObjectCache.js +204 -241
  234. package/dist/cjs/transactions/ObjectCache.js.map +1 -0
  235. package/dist/cjs/transactions/Transaction.d.ts +31 -31
  236. package/dist/cjs/transactions/Transaction.js +628 -719
  237. package/dist/cjs/transactions/Transaction.js.map +1 -0
  238. package/dist/cjs/transactions/TransactionData.d.ts +9 -9
  239. package/dist/cjs/transactions/TransactionData.js +396 -440
  240. package/dist/cjs/transactions/TransactionData.js.map +1 -0
  241. package/dist/cjs/transactions/__tests__/Transaction.test.js +169 -0
  242. package/dist/cjs/transactions/__tests__/Transaction.test.js.map +1 -0
  243. package/dist/cjs/transactions/__tests__/bcs.test.js +202 -0
  244. package/dist/cjs/transactions/__tests__/bcs.test.js.map +1 -0
  245. package/dist/cjs/transactions/data/internal.js +166 -207
  246. package/dist/cjs/transactions/data/internal.js.map +1 -0
  247. package/dist/cjs/transactions/data/v1.js +436 -495
  248. package/dist/cjs/transactions/data/v1.js.map +1 -0
  249. package/dist/cjs/transactions/data/v2.d.ts +5 -5
  250. package/dist/cjs/transactions/data/v2.js +94 -107
  251. package/dist/cjs/transactions/data/v2.js.map +1 -0
  252. package/dist/cjs/transactions/executor/caching.js +71 -113
  253. package/dist/cjs/transactions/executor/caching.js.map +1 -0
  254. package/dist/cjs/transactions/executor/parallel.js +339 -378
  255. package/dist/cjs/transactions/executor/parallel.js.map +1 -0
  256. package/dist/cjs/transactions/executor/queue.js +60 -80
  257. package/dist/cjs/transactions/executor/queue.js.map +1 -0
  258. package/dist/cjs/transactions/executor/serial.d.ts +4 -4
  259. package/dist/cjs/transactions/executor/serial.js +102 -131
  260. package/dist/cjs/transactions/executor/serial.js.map +1 -0
  261. package/dist/cjs/transactions/hash.js +17 -28
  262. package/dist/cjs/transactions/hash.js.map +1 -0
  263. package/dist/cjs/transactions/index.js +33 -49
  264. package/dist/cjs/transactions/index.js.map +1 -0
  265. package/dist/cjs/transactions/intents/CoinWithBalance.js +137 -191
  266. package/dist/cjs/transactions/intents/CoinWithBalance.js.map +1 -0
  267. package/dist/cjs/transactions/object.js +88 -111
  268. package/dist/cjs/transactions/object.js.map +1 -0
  269. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js +20 -32
  270. package/dist/cjs/transactions/plugins/NamedPackagesPlugin.js.map +1 -0
  271. package/dist/cjs/transactions/pure.js +38 -60
  272. package/dist/cjs/transactions/pure.js.map +1 -0
  273. package/dist/cjs/transactions/resolve.js +62 -88
  274. package/dist/cjs/transactions/resolve.js.map +1 -0
  275. package/dist/cjs/transactions/serializer.js +150 -163
  276. package/dist/cjs/transactions/serializer.js.map +1 -0
  277. package/dist/cjs/transactions/utils.d.ts +1 -1
  278. package/dist/cjs/transactions/utils.js +114 -125
  279. package/dist/cjs/transactions/utils.js.map +1 -0
  280. package/dist/cjs/utils/constants.js +29 -56
  281. package/dist/cjs/utils/constants.js.map +1 -0
  282. package/dist/cjs/utils/derived-objects.js +14 -30
  283. package/dist/cjs/utils/derived-objects.js.map +1 -0
  284. package/dist/cjs/utils/dynamic-fields.js +20 -37
  285. package/dist/cjs/utils/dynamic-fields.js.map +1 -0
  286. package/dist/cjs/utils/format.js +14 -30
  287. package/dist/cjs/utils/format.js.map +1 -0
  288. package/dist/cjs/utils/index.js +50 -64
  289. package/dist/cjs/utils/index.js.map +1 -0
  290. package/dist/cjs/utils/move-registry.js +37 -35
  291. package/dist/cjs/utils/move-registry.js.map +1 -0
  292. package/dist/cjs/utils/sui-types.js +74 -68
  293. package/dist/cjs/utils/sui-types.js.map +1 -0
  294. package/dist/cjs/utils/suins.js +30 -46
  295. package/dist/cjs/utils/suins.js.map +1 -0
  296. package/dist/cjs/verify/index.js +12 -27
  297. package/dist/cjs/verify/index.js.map +1 -0
  298. package/dist/cjs/verify/verify.js +83 -110
  299. package/dist/cjs/verify/verify.js.map +1 -0
  300. package/dist/cjs/version.js +8 -25
  301. package/dist/cjs/version.js.map +1 -0
  302. package/dist/cjs/w/call/allocation.js +323 -413
  303. package/dist/cjs/w/call/allocation.js.map +1 -0
  304. package/dist/cjs/w/call/arb.js +105 -136
  305. package/dist/cjs/w/call/arb.js.map +1 -0
  306. package/dist/cjs/w/call/arbitration.js +1206 -1581
  307. package/dist/cjs/w/call/arbitration.js.map +1 -0
  308. package/dist/cjs/w/call/base.js +303 -333
  309. package/dist/cjs/w/call/base.js.map +1 -0
  310. package/dist/cjs/w/call/contact.js +335 -452
  311. package/dist/cjs/w/call/contact.js.map +1 -0
  312. package/dist/cjs/w/call/demand.js +690 -844
  313. package/dist/cjs/w/call/demand.js.map +1 -0
  314. package/dist/cjs/w/call/entity.js +167 -201
  315. package/dist/cjs/w/call/entity.js.map +1 -0
  316. package/dist/cjs/w/call/guard-ins.js +4376 -4389
  317. package/dist/cjs/w/call/guard-ins.js.map +1 -0
  318. package/dist/cjs/w/call/guard.js +1078 -1112
  319. package/dist/cjs/w/call/guard.js.map +1 -0
  320. package/dist/cjs/w/call/index.js +69 -70
  321. package/dist/cjs/w/call/index.js.map +1 -0
  322. package/dist/cjs/w/call/machine.js +1105 -1419
  323. package/dist/cjs/w/call/machine.js.map +1 -0
  324. package/dist/cjs/w/call/order.js +314 -454
  325. package/dist/cjs/w/call/order.js.map +1 -0
  326. package/dist/cjs/w/call/passport.js +214 -253
  327. package/dist/cjs/w/call/passport.js.map +1 -0
  328. package/dist/cjs/w/call/payment.js +187 -224
  329. package/dist/cjs/w/call/payment.js.map +1 -0
  330. package/dist/cjs/w/call/permission.js +1183 -1294
  331. package/dist/cjs/w/call/permission.js.map +1 -0
  332. package/dist/cjs/w/call/personal.js +132 -170
  333. package/dist/cjs/w/call/personal.js.map +1 -0
  334. package/dist/cjs/w/call/progress.js +634 -794
  335. package/dist/cjs/w/call/progress.js.map +1 -0
  336. package/dist/cjs/w/call/proof.js +67 -116
  337. package/dist/cjs/w/call/proof.js.map +1 -0
  338. package/dist/cjs/w/call/repository.js +1037 -1251
  339. package/dist/cjs/w/call/repository.js.map +1 -0
  340. package/dist/cjs/w/call/resource.js +111 -131
  341. package/dist/cjs/w/call/resource.js.map +1 -0
  342. package/dist/cjs/w/call/reward.js +675 -853
  343. package/dist/cjs/w/call/reward.js.map +1 -0
  344. package/dist/cjs/w/call/service.js +1879 -2385
  345. package/dist/cjs/w/call/service.js.map +1 -0
  346. package/dist/cjs/w/call/treasury.js +841 -1138
  347. package/dist/cjs/w/call/treasury.js.map +1 -0
  348. package/dist/cjs/w/call/util.js +593 -624
  349. package/dist/cjs/w/call/util.js.map +1 -0
  350. package/dist/cjs/w/common.d.ts +1 -1
  351. package/dist/cjs/w/common.js +548 -518
  352. package/dist/cjs/w/common.js.map +1 -0
  353. package/dist/cjs/w/exception.js +574 -584
  354. package/dist/cjs/w/exception.js.map +1 -0
  355. package/dist/cjs/w/index.js +26 -23
  356. package/dist/cjs/w/index.js.map +1 -0
  357. package/dist/cjs/w/local/account.js +664 -741
  358. package/dist/cjs/w/local/account.js.map +1 -0
  359. package/dist/cjs/w/local/cache.js +180 -166
  360. package/dist/cjs/w/local/cache.js.map +1 -0
  361. package/dist/cjs/w/local/config.js +51 -80
  362. package/dist/cjs/w/local/config.js.map +1 -0
  363. package/dist/cjs/w/local/index.js +225 -290
  364. package/dist/cjs/w/local/index.js.map +1 -0
  365. package/dist/cjs/w/local/local.d.ts +2 -2
  366. package/dist/cjs/w/local/local.js +638 -646
  367. package/dist/cjs/w/local/local.js.map +1 -0
  368. package/dist/cjs/w/local/storage.js +210 -164
  369. package/dist/cjs/w/local/storage.js.map +1 -0
  370. package/dist/cjs/w/local/token.js +158 -175
  371. package/dist/cjs/w/local/token.js.map +1 -0
  372. package/dist/cjs/w/local/util.js +80 -51
  373. package/dist/cjs/w/local/util.js.map +1 -0
  374. package/dist/cjs/w/local/wip.js +1078 -802
  375. package/dist/cjs/w/local/wip.js.map +1 -0
  376. package/dist/cjs/w/messenger/crypto.js +496 -389
  377. package/dist/cjs/w/messenger/crypto.js.map +1 -0
  378. package/dist/cjs/w/messenger/index.js +53 -35
  379. package/dist/cjs/w/messenger/index.js.map +1 -0
  380. package/dist/cjs/w/messenger/messenger-api.js +1159 -1035
  381. package/dist/cjs/w/messenger/messenger-api.js.map +1 -0
  382. package/dist/cjs/w/messenger/messenger-manager.js +954 -1083
  383. package/dist/cjs/w/messenger/messenger-manager.js.map +1 -0
  384. package/dist/cjs/w/messenger/messenger.d.ts +1 -1
  385. package/dist/cjs/w/messenger/messenger.js +1304 -1450
  386. package/dist/cjs/w/messenger/messenger.js.map +1 -0
  387. package/dist/cjs/w/messenger/server.js +390 -512
  388. package/dist/cjs/w/messenger/server.js.map +1 -0
  389. package/dist/cjs/w/messenger/session.js +399 -403
  390. package/dist/cjs/w/messenger/session.js.map +1 -0
  391. package/dist/cjs/w/messenger/storage.js +881 -777
  392. package/dist/cjs/w/messenger/storage.js.map +1 -0
  393. package/dist/cjs/w/messenger/types.d.ts +2 -2
  394. package/dist/cjs/w/messenger/types.js +83 -103
  395. package/dist/cjs/w/messenger/types.js.map +1 -0
  396. package/dist/cjs/w/messenger/utils.js +29 -34
  397. package/dist/cjs/w/messenger/utils.js.map +1 -0
  398. package/dist/cjs/w/query/bult-in.js +101 -110
  399. package/dist/cjs/w/query/bult-in.js.map +1 -0
  400. package/dist/cjs/w/query/event.js +134 -146
  401. package/dist/cjs/w/query/event.js.map +1 -0
  402. package/dist/cjs/w/query/index.js +22 -20
  403. package/dist/cjs/w/query/index.js.map +1 -0
  404. package/dist/cjs/w/query/object.js +1576 -1576
  405. package/dist/cjs/w/query/object.js.map +1 -0
  406. package/dist/cjs/w/query/received.js +66 -88
  407. package/dist/cjs/w/query/received.js.map +1 -0
  408. package/dist/cjs/w/query/util.js +53 -77
  409. package/dist/cjs/w/query/util.js.map +1 -0
  410. package/dist/cjs/w/util.js +589 -675
  411. package/dist/cjs/w/util.js.map +1 -0
  412. package/dist/esm/bcs/bcs.d.ts +199 -199
  413. package/dist/esm/bcs/bcs.js +269 -310
  414. package/dist/esm/bcs/bcs.js.map +1 -0
  415. package/dist/esm/bcs/effects.d.ts +109 -109
  416. package/dist/esm/bcs/effects.js +171 -179
  417. package/dist/esm/bcs/effects.js.map +1 -0
  418. package/dist/esm/bcs/index.d.ts +1 -2584
  419. package/dist/esm/bcs/index.js +51 -94
  420. package/dist/esm/bcs/index.js.map +1 -0
  421. package/dist/esm/bcs/pure.js +35 -38
  422. package/dist/esm/bcs/pure.js.map +1 -0
  423. package/dist/esm/bcs/type-tag-serializer.js +98 -95
  424. package/dist/esm/bcs/type-tag-serializer.js.map +1 -0
  425. package/dist/esm/bcs/types.js +5 -5
  426. package/dist/esm/bcs/types.js.map +1 -0
  427. package/dist/esm/client/index.js +7 -23
  428. package/dist/esm/client/index.js.map +1 -0
  429. package/dist/esm/client/network.js +23 -22
  430. package/dist/esm/client/network.js.map +1 -0
  431. package/dist/esm/cryptography/index.js +9 -46
  432. package/dist/esm/cryptography/index.js.map +1 -0
  433. package/dist/esm/cryptography/intent.d.ts +1 -1
  434. package/dist/esm/cryptography/intent.js +18 -12
  435. package/dist/esm/cryptography/intent.js.map +1 -0
  436. package/dist/esm/cryptography/keypair.js +95 -99
  437. package/dist/esm/cryptography/keypair.js.map +1 -0
  438. package/dist/esm/cryptography/mnemonics.js +40 -24
  439. package/dist/esm/cryptography/mnemonics.js.map +1 -0
  440. package/dist/esm/cryptography/publickey.js +104 -115
  441. package/dist/esm/cryptography/publickey.js.map +1 -0
  442. package/dist/esm/cryptography/signature-scheme.js +22 -24
  443. package/dist/esm/cryptography/signature-scheme.js.map +1 -0
  444. package/dist/esm/cryptography/signature.d.ts +2 -24
  445. package/dist/esm/cryptography/signature.js +44 -48
  446. package/dist/esm/cryptography/signature.js.map +1 -0
  447. package/dist/esm/experimental/cache.js +61 -0
  448. package/dist/esm/experimental/cache.js.map +1 -0
  449. package/dist/esm/experimental/client.js +23 -0
  450. package/dist/esm/experimental/client.js.map +1 -0
  451. package/dist/esm/experimental/core.js +85 -0
  452. package/dist/esm/experimental/core.js.map +1 -0
  453. package/dist/esm/experimental/errors.js +27 -0
  454. package/dist/esm/experimental/errors.js.map +1 -0
  455. package/dist/esm/experimental/index.js +8 -0
  456. package/dist/esm/experimental/index.js.map +1 -0
  457. package/dist/esm/experimental/persistent-storage.js +337 -0
  458. package/dist/esm/experimental/persistent-storage.js.map +1 -0
  459. package/dist/esm/experimental/persistent-storage.test.js +198 -0
  460. package/dist/esm/experimental/persistent-storage.test.js.map +1 -0
  461. package/dist/esm/experimental/transports/utils.js +100 -0
  462. package/dist/esm/experimental/transports/utils.js.map +1 -0
  463. package/dist/esm/experimental/types.js +5 -0
  464. package/dist/esm/experimental/types.js.map +1 -0
  465. package/dist/esm/faucet/faucet.js +104 -111
  466. package/dist/esm/faucet/faucet.js.map +1 -0
  467. package/dist/esm/faucet/index.js +4 -16
  468. package/dist/esm/faucet/index.js.map +1 -0
  469. package/dist/esm/grpc/client.js +34 -34
  470. package/dist/esm/grpc/client.js.map +1 -0
  471. package/dist/esm/grpc/core.js +570 -601
  472. package/dist/esm/grpc/core.js.map +1 -0
  473. package/dist/esm/grpc/index.js +5 -6
  474. package/dist/esm/grpc/index.js.map +1 -0
  475. package/dist/esm/grpc/proto/google/protobuf/any.js +161 -111
  476. package/dist/esm/grpc/proto/google/protobuf/any.js.map +1 -0
  477. package/dist/esm/grpc/proto/google/protobuf/duration.js +99 -67
  478. package/dist/esm/grpc/proto/google/protobuf/duration.js.map +1 -0
  479. package/dist/esm/grpc/proto/google/protobuf/empty.js +46 -7
  480. package/dist/esm/grpc/proto/google/protobuf/empty.js.map +1 -0
  481. package/dist/esm/grpc/proto/google/protobuf/field_mask.js +90 -52
  482. package/dist/esm/grpc/proto/google/protobuf/field_mask.js.map +1 -0
  483. package/dist/esm/grpc/proto/google/protobuf/struct.js +258 -190
  484. package/dist/esm/grpc/proto/google/protobuf/struct.js.map +1 -0
  485. package/dist/esm/grpc/proto/google/protobuf/timestamp.js +144 -108
  486. package/dist/esm/grpc/proto/google/protobuf/timestamp.js.map +1 -0
  487. package/dist/esm/grpc/proto/google/rpc/error_details.js +313 -267
  488. package/dist/esm/grpc/proto/google/rpc/error_details.js.map +1 -0
  489. package/dist/esm/grpc/proto/google/rpc/status.js +45 -28
  490. package/dist/esm/grpc/proto/google/rpc/status.js.map +1 -0
  491. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js +80 -47
  492. package/dist/esm/grpc/proto/sui/rpc/v2/argument.js.map +1 -0
  493. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js +41 -29
  494. package/dist/esm/grpc/proto/sui/rpc/v2/balance_change.js.map +1 -0
  495. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js +34 -22
  496. package/dist/esm/grpc/proto/sui/rpc/v2/bcs.js.map +1 -0
  497. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js +61 -49
  498. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint.js.map +1 -0
  499. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js +72 -57
  500. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_contents.js.map +1 -0
  501. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js +173 -139
  502. package/dist/esm/grpc/proto/sui/rpc/v2/checkpoint_summary.js.map +1 -0
  503. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js +358 -268
  504. package/dist/esm/grpc/proto/sui/rpc/v2/effects.js.map +1 -0
  505. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js +72 -60
  506. package/dist/esm/grpc/proto/sui/rpc/v2/epoch.js.map +1 -0
  507. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js +29 -9
  508. package/dist/esm/grpc/proto/sui/rpc/v2/error_reason.js.map +1 -0
  509. package/dist/esm/grpc/proto/sui/rpc/v2/event.js +74 -59
  510. package/dist/esm/grpc/proto/sui/rpc/v2/event.js.map +1 -0
  511. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js +69 -57
  512. package/dist/esm/grpc/proto/sui/rpc/v2/executed_transaction.js.map +1 -0
  513. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js +861 -474
  514. package/dist/esm/grpc/proto/sui/rpc/v2/execution_status.js.map +1 -0
  515. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js +52 -40
  516. package/dist/esm/grpc/proto/sui/rpc/v2/gas_cost_summary.js.map +1 -0
  517. package/dist/esm/grpc/proto/sui/rpc/v2/input.js +98 -61
  518. package/dist/esm/grpc/proto/sui/rpc/v2/input.js.map +1 -0
  519. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js +71 -56
  520. package/dist/esm/grpc/proto/sui/rpc/v2/jwk.js.map +1 -0
  521. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js +65 -100
  522. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.client.js.map +1 -0
  523. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js +365 -306
  524. package/dist/esm/grpc/proto/sui/rpc/v2/ledger_service.js.map +1 -0
  525. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js +585 -442
  526. package/dist/esm/grpc/proto/sui/rpc/v2/move_package.js.map +1 -0
  527. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js +42 -59
  528. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.client.js.map +1 -0
  529. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js +226 -191
  530. package/dist/esm/grpc/proto/sui/rpc/v2/move_package_service.js.map +1 -0
  531. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js +28 -33
  532. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.client.js.map +1 -0
  533. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js +129 -107
  534. package/dist/esm/grpc/proto/sui/rpc/v2/name_service.js.map +1 -0
  535. package/dist/esm/grpc/proto/sui/rpc/v2/object.js +100 -85
  536. package/dist/esm/grpc/proto/sui/rpc/v2/object.js.map +1 -0
  537. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js +42 -30
  538. package/dist/esm/grpc/proto/sui/rpc/v2/object_reference.js.map +1 -0
  539. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js +72 -40
  540. package/dist/esm/grpc/proto/sui/rpc/v2/owner.js.map +1 -0
  541. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js +42 -38
  542. package/dist/esm/grpc/proto/sui/rpc/v2/protocol_config.js.map +1 -0
  543. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js +544 -481
  544. package/dist/esm/grpc/proto/sui/rpc/v2/signature.js.map +1 -0
  545. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js +52 -13
  546. package/dist/esm/grpc/proto/sui/rpc/v2/signature_scheme.js.map +1 -0
  547. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js +23 -28
  548. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.client.js.map +1 -0
  549. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js +74 -60
  550. package/dist/esm/grpc/proto/sui/rpc/v2/signature_verification_service.js.map +1 -0
  551. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js +49 -66
  552. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.client.js.map +1 -0
  553. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js +623 -490
  554. package/dist/esm/grpc/proto/sui/rpc/v2/state_service.js.map +1 -0
  555. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js +33 -32
  556. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.client.js.map +1 -0
  557. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js +50 -36
  558. package/dist/esm/grpc/proto/sui/rpc/v2/subscription_service.js.map +1 -0
  559. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js +737 -701
  560. package/dist/esm/grpc/proto/sui/rpc/v2/system_state.js.map +1 -0
  561. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js +1177 -917
  562. package/dist/esm/grpc/proto/sui/rpc/v2/transaction.js.map +1 -0
  563. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js +28 -27
  564. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.client.js.map +1 -0
  565. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js +169 -133
  566. package/dist/esm/grpc/proto/sui/rpc/v2/transaction_execution_service.js.map +1 -0
  567. package/dist/esm/index.js +21 -107
  568. package/dist/esm/index.js.map +1 -0
  569. package/dist/esm/jsonRpc/client.js +646 -727
  570. package/dist/esm/jsonRpc/client.js.map +1 -0
  571. package/dist/esm/jsonRpc/core.d.ts +7 -7
  572. package/dist/esm/jsonRpc/core.js +550 -581
  573. package/dist/esm/jsonRpc/core.js.map +1 -0
  574. package/dist/esm/jsonRpc/errors.js +36 -41
  575. package/dist/esm/jsonRpc/errors.js.map +1 -0
  576. package/dist/esm/jsonRpc/http-transport.js +65 -93
  577. package/dist/esm/jsonRpc/http-transport.js.map +1 -0
  578. package/dist/esm/jsonRpc/index.js +6 -20
  579. package/dist/esm/jsonRpc/index.js.map +1 -0
  580. package/dist/esm/jsonRpc/json-rpc-resolver.js +281 -276
  581. package/dist/esm/jsonRpc/json-rpc-resolver.js.map +1 -0
  582. package/dist/esm/jsonRpc/rpc-websocket-client.js +147 -189
  583. package/dist/esm/jsonRpc/rpc-websocket-client.js.map +1 -0
  584. package/dist/esm/jsonRpc/types/chain.js +4 -0
  585. package/dist/esm/jsonRpc/types/chain.js.map +1 -0
  586. package/dist/esm/jsonRpc/types/changes.js +4 -0
  587. package/dist/esm/jsonRpc/types/changes.js.map +1 -0
  588. package/dist/esm/jsonRpc/types/coins.js +4 -0
  589. package/dist/esm/jsonRpc/types/coins.js.map +1 -0
  590. package/dist/esm/jsonRpc/types/common.js +4 -0
  591. package/dist/esm/jsonRpc/types/common.js.map +1 -0
  592. package/dist/esm/jsonRpc/types/generated.d.ts +1 -1
  593. package/dist/esm/jsonRpc/types/generated.js +4 -0
  594. package/dist/esm/jsonRpc/types/generated.js.map +1 -0
  595. package/dist/esm/jsonRpc/types/index.js +4 -0
  596. package/dist/esm/jsonRpc/types/index.js.map +1 -0
  597. package/dist/esm/jsonRpc/types/params.js +4 -0
  598. package/dist/esm/jsonRpc/types/params.js.map +1 -0
  599. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js +49 -48
  600. package/dist/esm/keypairs/ed25519/ed25519-hd-key.js.map +1 -0
  601. package/dist/esm/keypairs/ed25519/index.js +5 -10
  602. package/dist/esm/keypairs/ed25519/index.js.map +1 -0
  603. package/dist/esm/keypairs/ed25519/keypair.js +128 -146
  604. package/dist/esm/keypairs/ed25519/keypair.js.map +1 -0
  605. package/dist/esm/keypairs/ed25519/publickey.js +64 -67
  606. package/dist/esm/keypairs/ed25519/publickey.js.map +1 -0
  607. package/dist/esm/keypairs/index.js +3 -0
  608. package/dist/esm/keypairs/index.js.map +1 -0
  609. package/dist/esm/keypairs/passkey/index.js +5 -12
  610. package/dist/esm/keypairs/passkey/index.js.map +1 -0
  611. package/dist/esm/keypairs/passkey/keypair.js +236 -243
  612. package/dist/esm/keypairs/passkey/keypair.js.map +1 -0
  613. package/dist/esm/keypairs/passkey/publickey.js +154 -140
  614. package/dist/esm/keypairs/passkey/publickey.js.map +1 -0
  615. package/dist/esm/keypairs/passkey/types.js +4 -0
  616. package/dist/esm/keypairs/passkey/types.js.map +1 -0
  617. package/dist/esm/keypairs/secp256k1/index.js +5 -10
  618. package/dist/esm/keypairs/secp256k1/index.js.map +1 -0
  619. package/dist/esm/keypairs/secp256k1/keypair.js +120 -134
  620. package/dist/esm/keypairs/secp256k1/keypair.js.map +1 -0
  621. package/dist/esm/keypairs/secp256k1/publickey.js +64 -71
  622. package/dist/esm/keypairs/secp256k1/publickey.js.map +1 -0
  623. package/dist/esm/keypairs/secp256r1/index.js +5 -10
  624. package/dist/esm/keypairs/secp256r1/index.js.map +1 -0
  625. package/dist/esm/keypairs/secp256r1/keypair.js +118 -131
  626. package/dist/esm/keypairs/secp256r1/keypair.js.map +1 -0
  627. package/dist/esm/keypairs/secp256r1/publickey.js +63 -66
  628. package/dist/esm/keypairs/secp256r1/publickey.js.map +1 -0
  629. package/dist/esm/multisig/index.js +5 -10
  630. package/dist/esm/multisig/index.js.map +1 -0
  631. package/dist/esm/multisig/publickey.d.ts +1 -1
  632. package/dist/esm/multisig/publickey.js +216 -253
  633. package/dist/esm/multisig/publickey.js.map +1 -0
  634. package/dist/esm/multisig/signer.js +57 -89
  635. package/dist/esm/multisig/signer.js.map +1 -0
  636. package/dist/esm/transactions/Arguments.d.ts +4 -4
  637. package/dist/esm/transactions/Arguments.js +9 -13
  638. package/dist/esm/transactions/Arguments.js.map +1 -0
  639. package/dist/esm/transactions/Commands.js +105 -118
  640. package/dist/esm/transactions/Commands.js.map +1 -0
  641. package/dist/esm/transactions/Inputs.js +49 -61
  642. package/dist/esm/transactions/Inputs.js.map +1 -0
  643. package/dist/esm/transactions/ObjectCache.d.ts +8 -8
  644. package/dist/esm/transactions/ObjectCache.js +200 -223
  645. package/dist/esm/transactions/ObjectCache.js.map +1 -0
  646. package/dist/esm/transactions/Transaction.d.ts +32 -32
  647. package/dist/esm/transactions/Transaction.js +611 -696
  648. package/dist/esm/transactions/Transaction.js.map +1 -0
  649. package/dist/esm/transactions/TransactionData.d.ts +9 -9
  650. package/dist/esm/transactions/TransactionData.js +386 -415
  651. package/dist/esm/transactions/TransactionData.js.map +1 -0
  652. package/dist/esm/transactions/__tests__/Transaction.test.js +167 -0
  653. package/dist/esm/transactions/__tests__/Transaction.test.js.map +1 -0
  654. package/dist/esm/transactions/__tests__/bcs.test.js +200 -0
  655. package/dist/esm/transactions/__tests__/bcs.test.js.map +1 -0
  656. package/dist/esm/transactions/data/internal.js +158 -205
  657. package/dist/esm/transactions/data/internal.js.map +1 -0
  658. package/dist/esm/transactions/data/v1.js +419 -487
  659. package/dist/esm/transactions/data/v1.js.map +1 -0
  660. package/dist/esm/transactions/data/v2.d.ts +5 -5
  661. package/dist/esm/transactions/data/v2.js +89 -107
  662. package/dist/esm/transactions/data/v2.js.map +1 -0
  663. package/dist/esm/transactions/executor/caching.d.ts +2 -2
  664. package/dist/esm/transactions/executor/caching.js +66 -93
  665. package/dist/esm/transactions/executor/caching.js.map +1 -0
  666. package/dist/esm/transactions/executor/parallel.js +329 -352
  667. package/dist/esm/transactions/executor/parallel.js.map +1 -0
  668. package/dist/esm/transactions/executor/queue.js +58 -64
  669. package/dist/esm/transactions/executor/queue.js.map +1 -0
  670. package/dist/esm/transactions/executor/serial.d.ts +5 -5
  671. package/dist/esm/transactions/executor/serial.js +96 -110
  672. package/dist/esm/transactions/executor/serial.js.map +1 -0
  673. package/dist/esm/transactions/hash.js +15 -9
  674. package/dist/esm/transactions/hash.js.map +1 -0
  675. package/dist/esm/transactions/index.js +15 -41
  676. package/dist/esm/transactions/index.js.map +1 -0
  677. package/dist/esm/transactions/intents/CoinWithBalance.js +127 -165
  678. package/dist/esm/transactions/intents/CoinWithBalance.js.map +1 -0
  679. package/dist/esm/transactions/object.js +86 -92
  680. package/dist/esm/transactions/object.js.map +1 -0
  681. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js +18 -15
  682. package/dist/esm/transactions/plugins/NamedPackagesPlugin.js.map +1 -0
  683. package/dist/esm/transactions/pure.js +34 -39
  684. package/dist/esm/transactions/pure.js.map +1 -0
  685. package/dist/esm/transactions/resolve.js +58 -69
  686. package/dist/esm/transactions/resolve.js.map +1 -0
  687. package/dist/esm/transactions/serializer.js +145 -144
  688. package/dist/esm/transactions/serializer.js.map +1 -0
  689. package/dist/esm/transactions/utils.d.ts +1 -1
  690. package/dist/esm/transactions/utils.js +110 -109
  691. package/dist/esm/transactions/utils.js.map +1 -0
  692. package/dist/esm/utils/constants.js +26 -36
  693. package/dist/esm/utils/constants.js.map +1 -0
  694. package/dist/esm/utils/derived-objects.js +11 -10
  695. package/dist/esm/utils/derived-objects.js.map +1 -0
  696. package/dist/esm/utils/dynamic-fields.js +16 -16
  697. package/dist/esm/utils/dynamic-fields.js.map +1 -0
  698. package/dist/esm/utils/format.js +13 -13
  699. package/dist/esm/utils/format.js.map +1 -0
  700. package/dist/esm/utils/index.js +15 -76
  701. package/dist/esm/utils/index.js.map +1 -0
  702. package/dist/esm/utils/move-registry.js +34 -17
  703. package/dist/esm/utils/move-registry.js.map +1 -0
  704. package/dist/esm/utils/sui-types.js +70 -54
  705. package/dist/esm/utils/sui-types.js.map +1 -0
  706. package/dist/esm/utils/suins.js +29 -29
  707. package/dist/esm/utils/suins.js.map +1 -0
  708. package/dist/esm/verify/index.js +5 -14
  709. package/dist/esm/verify/index.js.map +1 -0
  710. package/dist/esm/verify/verify.js +76 -93
  711. package/dist/esm/verify/verify.js.map +1 -0
  712. package/dist/esm/version.js +6 -6
  713. package/dist/esm/version.js.map +1 -0
  714. package/dist/esm/w/call/allocation.js +307 -402
  715. package/dist/esm/w/call/allocation.js.map +1 -0
  716. package/dist/esm/w/call/arb.js +100 -129
  717. package/dist/esm/w/call/arb.js.map +1 -0
  718. package/dist/esm/w/call/arbitration.js +1170 -1568
  719. package/dist/esm/w/call/arbitration.js.map +1 -0
  720. package/dist/esm/w/call/base.js +288 -315
  721. package/dist/esm/w/call/base.js.map +1 -0
  722. package/dist/esm/w/call/contact.js +318 -442
  723. package/dist/esm/w/call/contact.js.map +1 -0
  724. package/dist/esm/w/call/demand.js +673 -841
  725. package/dist/esm/w/call/demand.js.map +1 -0
  726. package/dist/esm/w/call/entity.js +162 -203
  727. package/dist/esm/w/call/entity.js.map +1 -0
  728. package/dist/esm/w/call/guard-ins.js +4373 -4371
  729. package/dist/esm/w/call/guard-ins.js.map +1 -0
  730. package/dist/esm/w/call/guard.js +1061 -1108
  731. package/dist/esm/w/call/guard.js.map +1 -0
  732. package/dist/esm/w/call/index.js +24 -56
  733. package/dist/esm/w/call/index.js.map +1 -0
  734. package/dist/esm/w/call/machine.js +1086 -1433
  735. package/dist/esm/w/call/machine.js.map +1 -0
  736. package/dist/esm/w/call/order.js +301 -448
  737. package/dist/esm/w/call/order.js.map +1 -0
  738. package/dist/esm/w/call/passport.js +204 -240
  739. package/dist/esm/w/call/passport.js.map +1 -0
  740. package/dist/esm/w/call/payment.js +177 -215
  741. package/dist/esm/w/call/payment.js.map +1 -0
  742. package/dist/esm/w/call/permission.js +1172 -1320
  743. package/dist/esm/w/call/permission.js.map +1 -0
  744. package/dist/esm/w/call/personal.js +121 -156
  745. package/dist/esm/w/call/personal.js.map +1 -0
  746. package/dist/esm/w/call/progress.js +625 -797
  747. package/dist/esm/w/call/progress.js.map +1 -0
  748. package/dist/esm/w/call/proof.js +61 -103
  749. package/dist/esm/w/call/proof.js.map +1 -0
  750. package/dist/esm/w/call/repository.js +1017 -1251
  751. package/dist/esm/w/call/repository.js.map +1 -0
  752. package/dist/esm/w/call/resource.js +108 -124
  753. package/dist/esm/w/call/resource.js.map +1 -0
  754. package/dist/esm/w/call/reward.js +660 -847
  755. package/dist/esm/w/call/reward.js.map +1 -0
  756. package/dist/esm/w/call/service.js +1849 -2400
  757. package/dist/esm/w/call/service.js.map +1 -0
  758. package/dist/esm/w/call/treasury.js +815 -1125
  759. package/dist/esm/w/call/treasury.js.map +1 -0
  760. package/dist/esm/w/call/util.js +553 -576
  761. package/dist/esm/w/call/util.js.map +1 -0
  762. package/dist/esm/w/common.d.ts +1 -1
  763. package/dist/esm/w/common.js +579 -580
  764. package/dist/esm/w/common.js.map +1 -0
  765. package/dist/esm/w/exception.js +570 -573
  766. package/dist/esm/w/exception.js.map +1 -0
  767. package/dist/esm/w/index.js +4 -0
  768. package/dist/esm/w/index.js.map +1 -0
  769. package/dist/esm/w/local/account.js +652 -709
  770. package/dist/esm/w/local/account.js.map +1 -0
  771. package/dist/esm/w/local/cache.js +176 -147
  772. package/dist/esm/w/local/cache.js.map +1 -0
  773. package/dist/esm/w/local/config.js +46 -60
  774. package/dist/esm/w/local/config.js.map +1 -0
  775. package/dist/esm/w/local/index.js +196 -273
  776. package/dist/esm/w/local/index.js.map +1 -0
  777. package/dist/esm/w/local/local.d.ts +2 -2
  778. package/dist/esm/w/local/local.js +631 -626
  779. package/dist/esm/w/local/local.js.map +1 -0
  780. package/dist/esm/w/local/storage.js +168 -136
  781. package/dist/esm/w/local/storage.js.map +1 -0
  782. package/dist/esm/w/local/token.js +149 -151
  783. package/dist/esm/w/local/token.js.map +1 -0
  784. package/dist/esm/w/local/util.js +45 -22
  785. package/dist/esm/w/local/util.js.map +1 -0
  786. package/dist/esm/w/local/wip.js +1038 -781
  787. package/dist/esm/w/local/wip.js.map +1 -0
  788. package/dist/esm/w/messenger/crypto.js +491 -387
  789. package/dist/esm/w/messenger/crypto.js.map +1 -0
  790. package/dist/esm/w/messenger/index.js +27 -24
  791. package/dist/esm/w/messenger/index.js.map +1 -0
  792. package/dist/esm/w/messenger/messenger-api.js +1111 -1017
  793. package/dist/esm/w/messenger/messenger-api.js.map +1 -0
  794. package/dist/esm/w/messenger/messenger-manager.js +944 -1052
  795. package/dist/esm/w/messenger/messenger-manager.js.map +1 -0
  796. package/dist/esm/w/messenger/messenger.d.ts +1 -1
  797. package/dist/esm/w/messenger/messenger.js +1258 -1421
  798. package/dist/esm/w/messenger/messenger.js.map +1 -0
  799. package/dist/esm/w/messenger/server.js +388 -499
  800. package/dist/esm/w/messenger/server.js.map +1 -0
  801. package/dist/esm/w/messenger/session.js +394 -399
  802. package/dist/esm/w/messenger/session.js.map +1 -0
  803. package/dist/esm/w/messenger/storage.js +840 -751
  804. package/dist/esm/w/messenger/storage.js.map +1 -0
  805. package/dist/esm/w/messenger/types.d.ts +2 -2
  806. package/dist/esm/w/messenger/types.js +80 -85
  807. package/dist/esm/w/messenger/types.js.map +1 -0
  808. package/dist/esm/w/messenger/utils.js +28 -16
  809. package/dist/esm/w/messenger/utils.js.map +1 -0
  810. package/dist/esm/w/query/bult-in.js +95 -100
  811. package/dist/esm/w/query/bult-in.js.map +1 -0
  812. package/dist/esm/w/query/event.js +128 -125
  813. package/dist/esm/w/query/event.js.map +1 -0
  814. package/dist/esm/w/query/index.js +3 -0
  815. package/dist/esm/w/query/index.js.map +1 -0
  816. package/dist/esm/w/query/object.js +1560 -1574
  817. package/dist/esm/w/query/object.js.map +1 -0
  818. package/dist/esm/w/query/received.js +57 -63
  819. package/dist/esm/w/query/received.js.map +1 -0
  820. package/dist/esm/w/query/util.js +48 -56
  821. package/dist/esm/w/query/util.js.map +1 -0
  822. package/dist/esm/w/util.js +578 -673
  823. package/dist/esm/w/util.js.map +1 -0
  824. package/package.json +13 -7
  825. package/prebuilds/better-sqlite3-v12.9.0-node-v115-darwin-arm64.node +0 -0
  826. package/prebuilds/better-sqlite3-v12.9.0-node-v115-darwin-x64.node +0 -0
  827. package/prebuilds/better-sqlite3-v12.9.0-node-v115-linux-arm.node +0 -0
  828. package/prebuilds/better-sqlite3-v12.9.0-node-v115-linux-arm64.node +0 -0
  829. package/prebuilds/better-sqlite3-v12.9.0-node-v115-linux-x64.node +0 -0
  830. package/prebuilds/better-sqlite3-v12.9.0-node-v115-win32-arm64.node +0 -0
  831. package/prebuilds/better-sqlite3-v12.9.0-node-v115-win32-x64.node +0 -0
  832. package/prebuilds/better-sqlite3-v12.9.0-node-v127-darwin-arm64.node +0 -0
  833. package/prebuilds/better-sqlite3-v12.9.0-node-v127-darwin-x64.node +0 -0
  834. package/prebuilds/better-sqlite3-v12.9.0-node-v127-linux-arm.node +0 -0
  835. package/prebuilds/better-sqlite3-v12.9.0-node-v127-linux-arm64.node +0 -0
  836. package/prebuilds/better-sqlite3-v12.9.0-node-v127-linux-x64.node +0 -0
  837. package/prebuilds/better-sqlite3-v12.9.0-node-v127-win32-arm64.node +0 -0
  838. package/prebuilds/better-sqlite3-v12.9.0-node-v127-win32-x64.node +0 -0
  839. package/scripts/download-prebuilds.js +234 -0
  840. package/scripts/install-better-sqlite3.js +377 -0
  841. package/dist/cjs/graphql/client.js +0 -98
  842. package/dist/cjs/graphql/core.js +0 -506
  843. package/dist/cjs/graphql/generated/2024.1/tada-env.js +0 -13141
  844. package/dist/cjs/graphql/generated/2024.1/tsconfig.tada.js +0 -11
  845. package/dist/cjs/graphql/generated/2024.4/tada-env.js +0 -13287
  846. package/dist/cjs/graphql/generated/2024.4/tsconfig.tada.js +0 -11
  847. package/dist/cjs/graphql/generated/latest/tada-env.js +0 -12925
  848. package/dist/cjs/graphql/generated/latest/tsconfig.tada.js +0 -11
  849. package/dist/cjs/graphql/generated/queries.js +0 -807
  850. package/dist/cjs/graphql/index.js +0 -25
  851. package/dist/cjs/graphql/schemas/2024.1/index.js +0 -28
  852. package/dist/cjs/graphql/schemas/2024.4/index.js +0 -28
  853. package/dist/cjs/graphql/schemas/latest/index.js +0 -28
  854. package/dist/cjs/graphql/types.js +0 -16
  855. package/dist/cjs/package.json +0 -5
  856. package/dist/cjs/w/local/.eslintrc.js +0 -15
  857. package/dist/cjs/w/messenger/.eslintrc.js +0 -15
  858. package/dist/cjs/zklogin/address.js +0 -93
  859. package/dist/cjs/zklogin/bcs.js +0 -41
  860. package/dist/cjs/zklogin/index.js +0 -45
  861. package/dist/cjs/zklogin/jwt-decode.js +0 -88
  862. package/dist/cjs/zklogin/jwt-utils.js +0 -128
  863. package/dist/cjs/zklogin/nonce.js +0 -60
  864. package/dist/cjs/zklogin/poseidon.js +0 -64
  865. package/dist/cjs/zklogin/publickey.js +0 -281
  866. package/dist/cjs/zklogin/signature.js +0 -57
  867. package/dist/cjs/zklogin/utils.js +0 -98
  868. package/dist/esm/graphql/client.js +0 -79
  869. package/dist/esm/graphql/core.js +0 -505
  870. package/dist/esm/graphql/generated/2024.1/tada-env.js +0 -13121
  871. package/dist/esm/graphql/generated/2024.1/tsconfig.tada.js +0 -16
  872. package/dist/esm/graphql/generated/2024.4/tada-env.js +0 -13267
  873. package/dist/esm/graphql/generated/2024.4/tsconfig.tada.js +0 -16
  874. package/dist/esm/graphql/generated/latest/tada-env.js +0 -12905
  875. package/dist/esm/graphql/generated/latest/tsconfig.tada.js +0 -16
  876. package/dist/esm/graphql/generated/queries.js +0 -788
  877. package/dist/esm/graphql/index.js +0 -8
  878. package/dist/esm/graphql/schemas/2024.1/index.js +0 -8
  879. package/dist/esm/graphql/schemas/2024.4/index.js +0 -8
  880. package/dist/esm/graphql/schemas/latest/index.js +0 -8
  881. package/dist/esm/graphql/types.js +0 -0
  882. package/dist/esm/package.json +0 -5
  883. package/dist/esm/w/local/.eslintrc.js +0 -23
  884. package/dist/esm/w/messenger/.eslintrc.js +0 -23
  885. package/dist/esm/zklogin/address.js +0 -78
  886. package/dist/esm/zklogin/bcs.js +0 -21
  887. package/dist/esm/zklogin/index.js +0 -38
  888. package/dist/esm/zklogin/jwt-decode.js +0 -68
  889. package/dist/esm/zklogin/jwt-utils.js +0 -108
  890. package/dist/esm/zklogin/nonce.js +0 -40
  891. package/dist/esm/zklogin/poseidon.js +0 -61
  892. package/dist/esm/zklogin/publickey.js +0 -265
  893. package/dist/esm/zklogin/signature.js +0 -37
  894. package/dist/esm/zklogin/utils.js +0 -78
  895. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  896. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,415 +1,410 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import {
5
- KeyHelper,
6
- SessionBuilder,
7
- SessionCipher,
8
- SignalProtocolAddress
9
- } from "libsignal-protocol-typescript";
1
+ // Copyright (c) Wowok.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Messenger 会话管理模块
5
+ *
6
+ * 基于 Signal Protocol 的双棘轮算法实现端到端加密
7
+ * 负责:
8
+ * 1. 身份密钥管理(与 wowok 账户体系集成)
9
+ * 2. 会话建立和维护
10
+ * 3. 消息加密和解密
11
+ */
12
+ import { KeyHelper, SessionBuilder, SessionCipher, SignalProtocolAddress, } from "libsignal-protocol-typescript";
10
13
  import { Account } from "../local/account.js";
11
14
  import { SignalProtocolStorage } from "./storage.js";
12
15
  import { MessengerServerClient } from "./server.js";
13
- import {
14
- recoverXed25519FromX25519PrivateKey,
15
- arrayBufferToUint8Array,
16
- bytesToBase64,
17
- base64ToBytes
18
- } from "./crypto.js";
19
- import {
20
- MessageType,
21
- DEFAULT_MESSENGER_CONFIG,
22
- MessengerError,
23
- MessengerErrorCode,
24
- DEFAULT_DEVICE_ID
25
- } from "./types.js";
26
- class MessengerSession {
27
- constructor(userAddress, config) {
28
- __publicField(this, "store");
29
- __publicField(this, "serverClient");
30
- __publicField(this, "config");
31
- __publicField(this, "identity", null);
32
- this.store = new SignalProtocolStorage(userAddress);
33
- this.config = { ...DEFAULT_MESSENGER_CONFIG, ...config };
34
- this.serverClient = new MessengerServerClient(this.config);
35
- }
36
- /**
37
- * 获取或创建本地身份
38
- *
39
- * 从 wowok 账户的 ED25519 私钥确定性派生 X25519 密钥对,
40
- * 确保恢复钱包后加密身份不变。
41
- */
42
- async ensureIdentity(userAddress) {
43
- if (this.identity) {
44
- return this.identity;
16
+ import { recoverXed25519FromX25519PrivateKey, arrayBufferToUint8Array, bytesToBase64, base64ToBytes, } from "./crypto.js";
17
+ import { MessageType, DEFAULT_MESSENGER_CONFIG, MessengerError, MessengerErrorCode, DEFAULT_DEVICE_ID, } from "./types.js";
18
+ export class MessengerSession {
19
+ store;
20
+ serverClient;
21
+ config;
22
+ identity = null;
23
+ constructor(userAddress, config) {
24
+ this.store = new SignalProtocolStorage(userAddress);
25
+ this.config = { ...DEFAULT_MESSENGER_CONFIG, ...config };
26
+ this.serverClient = new MessengerServerClient(this.config);
45
27
  }
46
- const existingSignalIdentity = await this.store.getIdentityKeyPair();
47
- const existingRegId = await this.store.getLocalRegistrationId();
48
- if (existingSignalIdentity && existingRegId) {
49
- const x25519PrivateKey = new Uint8Array(
50
- existingSignalIdentity.privKey
51
- );
52
- const xed255192 = recoverXed25519FromX25519PrivateKey(x25519PrivateKey);
53
- this.identity = {
54
- xed25519: xed255192,
55
- signalIdentity: existingSignalIdentity,
56
- registrationId: existingRegId
57
- };
58
- return this.identity;
59
- }
60
- if (!userAddress) {
61
- throw new MessengerError(
62
- MessengerErrorCode.IDENTITY_NOT_FOUND,
63
- "userAddress is required to derive identity"
64
- );
65
- }
66
- const { privateKey, publicKey } = await Account.Instance().deriveX25519KeyPair(userAddress);
67
- const registrationId = this.deriveRegistrationId(publicKey);
68
- const prefixedPublicKey = new Uint8Array(33);
69
- prefixedPublicKey[0] = 5;
70
- prefixedPublicKey.set(publicKey, 1);
71
- const signalIdentity = {
72
- privKey: privateKey.buffer.slice(
73
- privateKey.byteOffset,
74
- privateKey.byteOffset + privateKey.byteLength
75
- ),
76
- pubKey: prefixedPublicKey.buffer.slice(
77
- prefixedPublicKey.byteOffset,
78
- prefixedPublicKey.byteOffset + prefixedPublicKey.byteLength
79
- )
80
- };
81
- await this.store.setIdentity(signalIdentity, registrationId);
82
- const xed25519 = recoverXed25519FromX25519PrivateKey(privateKey);
83
- this.identity = {
84
- xed25519,
85
- signalIdentity,
86
- registrationId
87
- };
88
- return this.identity;
89
- }
90
- /**
91
- * 从公钥确定性派生注册 ID
92
- * 确保同一账户的注册 ID 始终相同
93
- */
94
- deriveRegistrationId(publicKey) {
95
- const id = publicKey[0] << 8 | publicKey[1];
96
- return id === 0 ? 1 : id;
97
- }
98
- /**
99
- * 注册设备到服务器
100
- */
101
- async registerDevice(userAddress) {
102
- const identity = await this.ensureIdentity(userAddress);
103
- const prekeys = await this.generatePreKeyBatch(
104
- this.config.prekey_count
105
- );
106
- const prefixedIdentityKey = arrayBufferToUint8Array(
107
- identity.signalIdentity.pubKey
108
- );
109
- const account = await Account.Instance().get(userAddress, false);
110
- if (!account?.pubkey) {
111
- throw new MessengerError(
112
- MessengerErrorCode.IDENTITY_NOT_FOUND,
113
- `Account not found for ${userAddress}`
114
- );
115
- }
116
- const timestamp = Date.now();
117
- const nonce = this.generateNonce();
118
- const message = `register:${account.pubkey}:${timestamp}:${nonce}`;
119
- const signResult = await Account.Instance().signData(
120
- userAddress,
121
- message
122
- );
123
- const signature = Buffer.from(signResult.signature.slice(2), "hex");
124
- const registerRequest = {
125
- userAddress,
126
- deviceId: DEFAULT_DEVICE_ID,
127
- registrationId: identity.registrationId,
128
- identityKey: bytesToBase64(prefixedIdentityKey),
129
- prekeys,
130
- publicKey: account.pubkey,
131
- signatureScheme: "ED25519",
132
- signature: bytesToBase64(signature),
133
- timestamp,
134
- nonce
135
- };
136
- await this.serverClient.registerDevice(registerRequest);
137
- }
138
- /**
139
- * 生成预密钥批次
140
- */
141
- async generatePreKeyBatch(count) {
142
- if (count <= 0) return [];
143
- const identity = await this.ensureIdentity();
144
- const meta = await this.store.getMeta();
145
- let nextPreKeyId = meta.nextPreKeyId || 1;
146
- const prekeys = [];
147
- for (let i = 0; i < count; i++) {
148
- const keyId = nextPreKeyId + i;
149
- const signedPreKey = await KeyHelper.generateSignedPreKey(
150
- identity.signalIdentity,
151
- keyId
152
- );
153
- const prekeyPublicKey = arrayBufferToUint8Array(
154
- signedPreKey.keyPair.pubKey
155
- );
156
- const prefixedPublicKey = prekeyPublicKey;
157
- const signature = arrayBufferToUint8Array(signedPreKey.signature);
158
- await this.store.storePreKey(keyId, signedPreKey.keyPair);
159
- await this.store.storeSignedPreKey(keyId, signedPreKey.keyPair);
160
- prekeys.push({
161
- keyId,
162
- publicKey: bytesToBase64(prefixedPublicKey),
163
- signature: bytesToBase64(signature)
164
- });
28
+ /**
29
+ * 获取或创建本地身份
30
+ *
31
+ * wowok 账户的 ED25519 私钥确定性派生 X25519 密钥对,
32
+ * 确保恢复钱包后加密身份不变。
33
+ */
34
+ async ensureIdentity(userAddress) {
35
+ if (this.identity) {
36
+ return this.identity;
37
+ }
38
+ // 尝试从存储加载
39
+ const existingSignalIdentity = await this.store.getIdentityKeyPair();
40
+ const existingRegId = await this.store.getLocalRegistrationId();
41
+ if (existingSignalIdentity && existingRegId) {
42
+ const x25519PrivateKey = new Uint8Array(existingSignalIdentity.privKey);
43
+ const xed25519 = recoverXed25519FromX25519PrivateKey(x25519PrivateKey);
44
+ this.identity = {
45
+ xed25519,
46
+ signalIdentity: existingSignalIdentity,
47
+ registrationId: existingRegId,
48
+ };
49
+ return this.identity;
50
+ }
51
+ // ED25519 私钥确定性派生 X25519 密钥对
52
+ if (!userAddress) {
53
+ throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, "userAddress is required to derive identity");
54
+ }
55
+ // 从 Account 派生 X25519 密钥对
56
+ const { privateKey, publicKey } = await Account.Instance().deriveX25519KeyPair(userAddress);
57
+ // 生成注册 ID(可以从公钥派生,确保确定性)
58
+ const registrationId = this.deriveRegistrationId(publicKey);
59
+ // 转换为 Signal Protocol 格式
60
+ // Signal Protocol 要求公钥带 0x05 前缀(33字节),私钥32字节
61
+ const prefixedPublicKey = new Uint8Array(33);
62
+ prefixedPublicKey[0] = 0x05; // Signal Protocol 标准前缀
63
+ prefixedPublicKey.set(publicKey, 1);
64
+ const signalIdentity = {
65
+ privKey: privateKey.buffer.slice(privateKey.byteOffset, privateKey.byteOffset + privateKey.byteLength),
66
+ pubKey: prefixedPublicKey.buffer.slice(prefixedPublicKey.byteOffset, prefixedPublicKey.byteOffset + prefixedPublicKey.byteLength),
67
+ };
68
+ await this.store.setIdentity(signalIdentity, registrationId);
69
+ const xed25519 = recoverXed25519FromX25519PrivateKey(privateKey);
70
+ this.identity = {
71
+ xed25519,
72
+ signalIdentity,
73
+ registrationId,
74
+ };
75
+ return this.identity;
165
76
  }
166
- nextPreKeyId += count;
167
- await this.store.setMeta({ nextPreKeyId });
168
- return prekeys;
169
- }
170
- /**
171
- * 确保服务器上有足够可用的预密钥
172
- *
173
- * 逻辑:查询服务器当前预密钥数量,按需生成并上传,补充到服务器最大容量
174
- */
175
- async ensurePreKeys(userAddress, force = false) {
176
- const status = await this.serverClient.getPrekeyStatus(userAddress);
177
- if (!force && status.currentCount >= status.maxAllowed) {
178
- throw new MessengerError(
179
- MessengerErrorCode.PREKEYS_FULL,
180
- `Prekeys already full on server: ${status.currentCount}/${status.maxAllowed}`
181
- );
77
+ /**
78
+ * 从公钥确定性派生注册 ID
79
+ * 确保同一账户的注册 ID 始终相同
80
+ */
81
+ deriveRegistrationId(publicKey) {
82
+ // 取公钥前 2 字节作为注册 ID(范围 0-65535)
83
+ // 确保不为 0(Signal Protocol 要求)
84
+ const id = (publicKey[0] << 8) | publicKey[1];
85
+ return id === 0 ? 1 : id;
182
86
  }
183
- const needCount = status.maxAllowed - status.currentCount;
184
- if (needCount <= 0) {
185
- return;
87
+ /**
88
+ * 注册设备到服务器
89
+ */
90
+ async registerDevice(userAddress) {
91
+ const identity = await this.ensureIdentity(userAddress);
92
+ // 首次注册时上传最大数量的预密钥
93
+ const prekeys = await this.generatePreKeyBatch(this.config.prekey_count);
94
+ // 注意:KeyHelper.generateIdentityKeyPair 返回的 identityKey 已经带有 0x05 前缀了
95
+ // 不要再次 encodeX25519PublicKey,否则会有双重前缀!
96
+ const prefixedIdentityKey = arrayBufferToUint8Array(identity.signalIdentity.pubKey);
97
+ // 获取账户信息用于签名
98
+ const account = await Account.Instance().get(userAddress, false);
99
+ if (!account?.pubkey) {
100
+ throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${userAddress}`);
101
+ }
102
+ // 构造签名
103
+ const timestamp = Date.now();
104
+ const nonce = this.generateNonce();
105
+ const message = `register:${account.pubkey}:${timestamp}:${nonce}`;
106
+ const signResult = await Account.Instance().signData(userAddress, message);
107
+ const signature = Buffer.from(signResult.signature.slice(2), "hex");
108
+ const registerRequest = {
109
+ userAddress,
110
+ deviceId: DEFAULT_DEVICE_ID,
111
+ registrationId: identity.registrationId,
112
+ identityKey: bytesToBase64(prefixedIdentityKey),
113
+ prekeys,
114
+ publicKey: account.pubkey,
115
+ signatureScheme: "ED25519",
116
+ signature: bytesToBase64(signature),
117
+ timestamp,
118
+ nonce,
119
+ };
120
+ await this.serverClient.registerDevice(registerRequest);
186
121
  }
187
- await this.ensureIdentity(userAddress);
188
- const prekeys = await this.generatePreKeyBatch(needCount);
189
- const account = await Account.Instance().get(userAddress, false);
190
- if (!account?.pubkey) {
191
- throw new MessengerError(
192
- MessengerErrorCode.IDENTITY_NOT_FOUND,
193
- `Account not found for ${userAddress}`
194
- );
122
+ /**
123
+ * 生成预密钥批次
124
+ */
125
+ async generatePreKeyBatch(count) {
126
+ if (count <= 0)
127
+ return [];
128
+ const identity = await this.ensureIdentity();
129
+ const meta = await this.store.getMeta();
130
+ let nextPreKeyId = meta.nextPreKeyId || 1;
131
+ const prekeys = [];
132
+ for (let i = 0; i < count; i++) {
133
+ const keyId = nextPreKeyId + i;
134
+ // 使用双棘轮库的 KeyHelper.generateSignedPreKey 生成带 X25519 签名的 signed prekey
135
+ const signedPreKey = await KeyHelper.generateSignedPreKey(identity.signalIdentity, keyId);
136
+ const prekeyPublicKey = arrayBufferToUint8Array(signedPreKey.keyPair.pubKey);
137
+ // 注意:KeyHelper.generateSignedPreKey 返回的 prekey 已经带有 0x05 前缀了
138
+ // 不要再次 encodeX25519PublicKey,否则会有双重前缀!
139
+ const prefixedPublicKey = prekeyPublicKey;
140
+ // 双棘轮库已经生成了 X25519 签名,直接使用
141
+ const signature = arrayBufferToUint8Array(signedPreKey.signature);
142
+ await this.store.storePreKey(keyId, signedPreKey.keyPair);
143
+ await this.store.storeSignedPreKey(keyId, signedPreKey.keyPair);
144
+ prekeys.push({
145
+ keyId,
146
+ publicKey: bytesToBase64(prefixedPublicKey),
147
+ signature: bytesToBase64(signature),
148
+ });
149
+ }
150
+ nextPreKeyId += count;
151
+ await this.store.setMeta({ nextPreKeyId });
152
+ return prekeys;
195
153
  }
196
- const timestamp = Date.now();
197
- const nonce = this.generateNonce();
198
- const message = `upload_prekeys:${account.pubkey}:${timestamp}:${nonce}`;
199
- const signResult = await Account.Instance().signData(
200
- userAddress,
201
- message
202
- );
203
- const signature = Buffer.from(signResult.signature.slice(2), "hex");
204
- await this.serverClient.uploadPreKeys({
205
- userAddress,
206
- prekeys,
207
- publicKey: account.pubkey,
208
- signatureScheme: "ED25519",
209
- signature: bytesToBase64(signature),
210
- timestamp,
211
- nonce
212
- });
213
- }
214
- /**
215
- * 生成随机 nonce
216
- */
217
- generateNonce() {
218
- const array = new Uint8Array(16);
219
- crypto.getRandomValues(array);
220
- return Array.from(array, (b) => b.toString(16).padStart(2, "0")).join(
221
- ""
222
- );
223
- }
224
- /**
225
- * 建立与对方的会话
226
- */
227
- async establishSession(myAddress, peerAddress, peerDeviceId = DEFAULT_DEVICE_ID) {
228
- const protocolAddress = new SignalProtocolAddress(
229
- peerAddress,
230
- peerDeviceId
231
- );
232
- const existingSession = await this.store.loadSession(
233
- protocolAddress.toString()
234
- );
235
- if (existingSession) {
236
- return;
154
+ /**
155
+ * 确保服务器上有足够可用的预密钥
156
+ *
157
+ * 逻辑:查询服务器当前预密钥数量,按需生成并上传,补充到服务器最大容量
158
+ */
159
+ async ensurePreKeys(userAddress, force = false) {
160
+ // 1. 查询服务器当前预密钥状态
161
+ const status = await this.serverClient.getPrekeyStatus(userAddress);
162
+ // 2. 如果服务器已满且非强制模式,直接返回
163
+ if (!force && status.currentCount >= status.maxAllowed) {
164
+ throw new MessengerError(MessengerErrorCode.PREKEYS_FULL, `Prekeys already full on server: ${status.currentCount}/${status.maxAllowed}`);
165
+ }
166
+ // 3. 计算需要补充的数量
167
+ const needCount = status.maxAllowed - status.currentCount;
168
+ if (needCount <= 0) {
169
+ /*console.log(
170
+ `No need to refill prekeys, server has ${status.currentCount}/${status.maxAllowed}`,
171
+ );*/
172
+ return;
173
+ }
174
+ /*console.log(
175
+ `Refilling prekeys: server has ${status.currentCount}/${status.maxAllowed}, need ${needCount}`,
176
+ );*/
177
+ // 4. 确保身份已初始化
178
+ await this.ensureIdentity(userAddress);
179
+ // 5. 生成所需数量的预密钥
180
+ const prekeys = await this.generatePreKeyBatch(needCount);
181
+ // 6. 获取账户信息用于签名
182
+ const account = await Account.Instance().get(userAddress, false);
183
+ if (!account?.pubkey) {
184
+ throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${userAddress}`);
185
+ }
186
+ // 7. 构造上传请求(包含签名)
187
+ // 8. 生成签名
188
+ const timestamp = Date.now();
189
+ const nonce = this.generateNonce();
190
+ const message = `upload_prekeys:${account.pubkey}:${timestamp}:${nonce}`;
191
+ const signResult = await Account.Instance().signData(userAddress, message);
192
+ const signature = Buffer.from(signResult.signature.slice(2), "hex");
193
+ // 9. 上传预密钥(服务器会自动丢弃超过最大数量的部分)
194
+ await this.serverClient.uploadPreKeys({
195
+ userAddress,
196
+ prekeys,
197
+ publicKey: account.pubkey,
198
+ signatureScheme: "ED25519",
199
+ signature: bytesToBase64(signature),
200
+ timestamp,
201
+ nonce,
202
+ });
237
203
  }
238
- const account = await Account.Instance().get(myAddress, false);
239
- if (!account?.pubkey) {
240
- throw new MessengerError(
241
- MessengerErrorCode.IDENTITY_NOT_FOUND,
242
- `Account not found for ${myAddress}`
243
- );
204
+ /**
205
+ * 生成随机 nonce
206
+ */
207
+ generateNonce() {
208
+ const array = new Uint8Array(16);
209
+ crypto.getRandomValues(array);
210
+ return Array.from(array, (b) => b.toString(16).padStart(2, "0")).join("");
244
211
  }
245
- const timestamp = Date.now();
246
- const nonce = this.generateNonce();
247
- const publicKeyWithFlag = account.pubkey;
248
- const message = `get_bundle:${myAddress}:${timestamp}:${nonce}`;
249
- const signResult = await Account.Instance().signData(
250
- myAddress,
251
- message
252
- );
253
- const signature = Buffer.from(signResult.signature.slice(2), "hex");
254
- const remoteBundle = await this.serverClient.fetchRemoteBundle(
255
- peerAddress,
256
- myAddress,
257
- publicKeyWithFlag,
258
- {
259
- signatureScheme: "ED25519",
260
- signature: bytesToBase64(new Uint8Array(signature)),
261
- timestamp,
262
- nonce
263
- },
264
- peerDeviceId
265
- );
266
- const preferredPreKey = remoteBundle.signedPrekey;
267
- if (!preferredPreKey) {
268
- throw new MessengerError(
269
- MessengerErrorCode.IDENTITY_NOT_FOUND,
270
- `No signed prekey available for ${peerAddress}`
271
- );
212
+ /**
213
+ * 建立与对方的会话
214
+ */
215
+ async establishSession(myAddress, peerAddress, peerDeviceId = DEFAULT_DEVICE_ID) {
216
+ const protocolAddress = new SignalProtocolAddress(peerAddress, peerDeviceId);
217
+ // 检查是否已有会话
218
+ const existingSession = await this.store.loadSession(protocolAddress.toString());
219
+ if (existingSession) {
220
+ return;
221
+ }
222
+ // 获取账户信息以生成签名
223
+ const account = await Account.Instance().get(myAddress, false);
224
+ if (!account?.pubkey) {
225
+ throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${myAddress}`);
226
+ }
227
+ // 构造签名
228
+ const timestamp = Date.now();
229
+ const nonce = this.generateNonce();
230
+ const publicKeyWithFlag = account.pubkey;
231
+ // 签名格式: get_bundle:{address}:{timestamp}:{nonce}
232
+ const message = `get_bundle:${myAddress}:${timestamp}:${nonce}`;
233
+ const signResult = await Account.Instance().signData(myAddress, message);
234
+ const signature = Buffer.from(signResult.signature.slice(2), "hex");
235
+ // 获取对方密钥包(带签名验证)
236
+ const remoteBundle = await this.serverClient.fetchRemoteBundle(peerAddress, myAddress, publicKeyWithFlag, {
237
+ signatureScheme: "ED25519",
238
+ signature: bytesToBase64(new Uint8Array(signature)),
239
+ timestamp,
240
+ nonce,
241
+ }, peerDeviceId);
242
+ const preferredPreKey = remoteBundle.signedPrekey;
243
+ if (!preferredPreKey) {
244
+ throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `No signed prekey available for ${peerAddress}`);
245
+ }
246
+ // 转换为 Signal Protocol 设备格式
247
+ const identityKeyBytes = base64ToBytes(remoteBundle.identityKey);
248
+ const preKeyPublicBytes = base64ToBytes(preferredPreKey.publicKey);
249
+ const signatureBytes = base64ToBytes(preferredPreKey.signature);
250
+ // 注意:identityKey 和 signedPreKey.publicKey 都不要 decode 去掉前缀!
251
+ // 因为当初签名时用的就是带 0x05 前缀的原始公钥!
252
+ const originalIdentityKeyWithPrefix = new Uint8Array(identityKeyBytes);
253
+ const originalPreKeyWithPrefix = new Uint8Array(preKeyPublicBytes);
254
+ const device = {
255
+ registrationId: remoteBundle.registrationId,
256
+ identityKey: originalIdentityKeyWithPrefix.buffer.slice(originalIdentityKeyWithPrefix.byteOffset, originalIdentityKeyWithPrefix.byteOffset +
257
+ originalIdentityKeyWithPrefix.byteLength),
258
+ signedPreKey: {
259
+ keyId: preferredPreKey.keyId,
260
+ publicKey: originalPreKeyWithPrefix.buffer.slice(originalPreKeyWithPrefix.byteOffset, originalPreKeyWithPrefix.byteOffset +
261
+ originalPreKeyWithPrefix.byteLength),
262
+ signature: new Uint8Array(signatureBytes).buffer.slice(signatureBytes.byteOffset, signatureBytes.byteOffset + signatureBytes.byteLength),
263
+ },
264
+ // 服务器只提供 signedPreKey,没有单独的 one-time preKey
265
+ // 这是可以的,Signal Protocol 支持仅使用 signedPreKey 建立会话
266
+ preKey: undefined,
267
+ };
268
+ // 建立会话
269
+ const builder = new SessionBuilder(this.store, protocolAddress);
270
+ await builder.processPreKey(device);
271
+ // 显式存储对方的身份密钥,以便后续解密对方的回复
272
+ // 使用 protocolAddress.toString() 作为键(包含 deviceId)
273
+ await this.store.saveIdentity(protocolAddress.toString(), device.identityKey);
272
274
  }
273
- const identityKeyBytes = base64ToBytes(remoteBundle.identityKey);
274
- const preKeyPublicBytes = base64ToBytes(preferredPreKey.publicKey);
275
- const signatureBytes = base64ToBytes(preferredPreKey.signature);
276
- const originalIdentityKeyWithPrefix = new Uint8Array(identityKeyBytes);
277
- const originalPreKeyWithPrefix = new Uint8Array(preKeyPublicBytes);
278
- const device = {
279
- registrationId: remoteBundle.registrationId,
280
- identityKey: originalIdentityKeyWithPrefix.buffer.slice(
281
- originalIdentityKeyWithPrefix.byteOffset,
282
- originalIdentityKeyWithPrefix.byteOffset + originalIdentityKeyWithPrefix.byteLength
283
- ),
284
- signedPreKey: {
285
- keyId: preferredPreKey.keyId,
286
- publicKey: originalPreKeyWithPrefix.buffer.slice(
287
- originalPreKeyWithPrefix.byteOffset,
288
- originalPreKeyWithPrefix.byteOffset + originalPreKeyWithPrefix.byteLength
289
- ),
290
- signature: new Uint8Array(signatureBytes).buffer.slice(
291
- signatureBytes.byteOffset,
292
- signatureBytes.byteOffset + signatureBytes.byteLength
293
- )
294
- },
295
- // 服务器只提供 signedPreKey,没有单独的 one-time preKey
296
- // 这是可以的,Signal Protocol 支持仅使用 signedPreKey 建立会话
297
- preKey: void 0
298
- };
299
- const builder = new SessionBuilder(this.store, protocolAddress);
300
- await builder.processPreKey(device);
301
- await this.store.saveIdentity(
302
- protocolAddress.toString(),
303
- device.identityKey
304
- );
305
- }
306
- /**
307
- * 加密消息
308
- * @param myAddress 发送方地址
309
- * @param peerAddress 接收方地址
310
- * @param plaintext 明文
311
- * @param peerDeviceId 设备ID
312
- * @returns 加密后的消息(type 表示底层 Signal Protocol 消息类型:3=PreKeyMessage, 1=WhisperMessage)
313
- */
314
- async encryptMessage(myAddress, peerAddress, plaintext, peerDeviceId = DEFAULT_DEVICE_ID) {
315
- const protocolAddress = new SignalProtocolAddress(
316
- peerAddress,
317
- peerDeviceId
318
- );
319
- const sessionKey = protocolAddress.toString();
320
- const existingSession = await this.store.loadSession(sessionKey);
321
- const isNewSession = !existingSession;
322
- if (isNewSession) {
323
- await this.establishSession(myAddress, peerAddress, peerDeviceId);
275
+ /**
276
+ * 加密消息
277
+ * @param myAddress 发送方地址
278
+ * @param peerAddress 接收方地址
279
+ * @param plaintext 明文
280
+ * @param peerDeviceId 设备ID
281
+ * @returns 加密后的消息(type 表示底层 Signal Protocol 消息类型:3=PreKeyMessage, 1=WhisperMessage)
282
+ */
283
+ async encryptMessage(myAddress, peerAddress, plaintext, peerDeviceId = DEFAULT_DEVICE_ID) {
284
+ const protocolAddress = new SignalProtocolAddress(peerAddress, peerDeviceId);
285
+ // 检查是否已有会话(用于确定底层消息类型)
286
+ const sessionKey = protocolAddress.toString();
287
+ const existingSession = await this.store.loadSession(sessionKey);
288
+ const isNewSession = !existingSession;
289
+ // 只有在新会话时才建立会话,避免重置已存在的会话状态
290
+ if (isNewSession) {
291
+ await this.establishSession(myAddress, peerAddress, peerDeviceId);
292
+ }
293
+ const cipher = new SessionCipher(this.store, protocolAddress);
294
+ const encoder = new TextEncoder();
295
+ const cipherMessage = await cipher.encrypt(encoder.encode(plaintext).buffer);
296
+ // Convert body to ArrayBuffer if it's a string
297
+ let bodyBuffer;
298
+ if (typeof cipherMessage.body === "string") {
299
+ const bodyBytes = Buffer.from(cipherMessage.body, "binary");
300
+ bodyBuffer = new Uint8Array(bodyBytes).buffer;
301
+ }
302
+ else if (cipherMessage.body) {
303
+ bodyBuffer = cipherMessage.body;
304
+ }
305
+ else {
306
+ throw new MessengerError(MessengerErrorCode.ENCRYPTION_FAILED, "Cipher message body is empty");
307
+ }
308
+ // 使用 SessionCipher 返回的消息类型(1 或 3)
309
+ // SessionCipher 根据 session.pendingPreKey 是否存在来决定消息类型
310
+ /*const msgType = cipherMessage.type === 3 ? "PREKEY" : "WHISPER";
311
+ console.log(
312
+ `[Session Debug] 加密完成: msgType=${msgType}(${cipherMessage.type}), bodyLength=${bodyBuffer.byteLength}, isNewSession=${isNewSession}`,
313
+ );*/
314
+ return {
315
+ type: cipherMessage.type,
316
+ body: bodyBuffer,
317
+ registrationId: cipherMessage.registrationId,
318
+ };
324
319
  }
325
- const cipher = new SessionCipher(this.store, protocolAddress);
326
- const encoder = new TextEncoder();
327
- const cipherMessage = await cipher.encrypt(
328
- encoder.encode(plaintext).buffer
329
- );
330
- let bodyBuffer;
331
- if (typeof cipherMessage.body === "string") {
332
- const bodyBytes = Buffer.from(cipherMessage.body, "binary");
333
- bodyBuffer = new Uint8Array(bodyBytes).buffer;
334
- } else if (cipherMessage.body) {
335
- bodyBuffer = cipherMessage.body;
336
- } else {
337
- throw new MessengerError(
338
- MessengerErrorCode.ENCRYPTION_FAILED,
339
- "Cipher message body is empty"
340
- );
320
+ /**
321
+ * 解密消息
322
+ */
323
+ async decryptMessage(myAddress, peerAddress, ciphertext, msgType, peerDeviceId = DEFAULT_DEVICE_ID) {
324
+ const protocolAddress = new SignalProtocolAddress(peerAddress, peerDeviceId);
325
+ // Signal 协议中,接收方直接使用自己的私钥解密消息
326
+ // decryptPreKeyWhisperMessage 会自动处理会话建立,不需要预先获取发送方的密钥包
327
+ // 发送方使用接收方的预密钥公钥加密,接收方使用自己的预密钥私钥解密
328
+ const cipher = new SessionCipher(this.store, protocolAddress);
329
+ const decoder = new TextDecoder();
330
+ // 检查会话状态
331
+ const sessionKey = protocolAddress.toString();
332
+ const existingSession = await this.store.loadSession(sessionKey);
333
+ let plaintextBuffer;
334
+ const ciphertextArray = new Uint8Array(ciphertext);
335
+ let ciphertextBinary = "";
336
+ for (let i = 0; i < ciphertextArray.length; i++) {
337
+ ciphertextBinary += String.fromCharCode(ciphertextArray[i]);
338
+ }
339
+ try {
340
+ if (msgType === MessageType.PREKEY_MESSAGE) {
341
+ // 【新增】如果已有会话,说明对方重置了会话,需要删除旧会话
342
+ if (existingSession) {
343
+ await this.store.removeSession(sessionKey);
344
+ // 重新创建 cipher(使用更新后的 store)
345
+ const newCipher = new SessionCipher(this.store, protocolAddress);
346
+ plaintextBuffer =
347
+ await newCipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
348
+ }
349
+ else {
350
+ plaintextBuffer = await cipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
351
+ }
352
+ }
353
+ else {
354
+ // 解密前检查会话状态
355
+ /*const sessionBefore = await this.store.loadSession(sessionKey);
356
+ console.log(
357
+ `[Session Debug] 解密前会话状态: ${sessionBefore ? "存在" : "不存在"}`,
358
+ );*/
359
+ plaintextBuffer = await cipher.decryptWhisperMessage(ciphertextBinary, "binary");
360
+ // 解密后检查会话状态
361
+ /*const sessionAfter = await this.store.loadSession(sessionKey);
362
+ console.log(
363
+ `[Session Debug] 解密后会话状态: ${sessionAfter ? "存在" : "不存在"}`,
364
+ );*/
365
+ }
366
+ }
367
+ catch (error) {
368
+ /*console.error(`[Session Debug] 解密失败:`);
369
+ console.error(
370
+ ` 错误类型: ${error instanceof Error ? error.constructor.name : typeof error}`,
371
+ );
372
+ console.error(
373
+ ` 错误消息: ${error instanceof Error ? error.message : String(error)}`,
374
+ );
375
+ if (error instanceof Error && error.stack) {
376
+ console.error(` 堆栈: ${error.stack.split("\n")[0]}`);
377
+ }
378
+ console.error(` 上下文:`);
379
+ console.error(` - myAddress: ${myAddress}`);
380
+ console.error(` - peerAddress: ${peerAddress}`);
381
+ console.error(
382
+ ` - msgType: ${msgType} (${msgType === MessageType.PREKEY_MESSAGE ? "PREKEY" : "WHISPER"})`,
383
+ );
384
+ console.error(` - sessionKey: ${sessionKey}`);
385
+ console.error(
386
+ ` - existingSession: ${existingSession ? "存在" : "不存在"}`,
387
+ );
388
+ console.error(` - ciphertext.length: ${ciphertext.byteLength}`);
389
+ */
390
+ console.log("error:", error);
391
+ throw error;
392
+ }
393
+ return decoder.decode(plaintextBuffer);
341
394
  }
342
- return {
343
- type: cipherMessage.type,
344
- body: bodyBuffer,
345
- registrationId: cipherMessage.registrationId
346
- };
347
- }
348
- /**
349
- * 解密消息
350
- */
351
- async decryptMessage(myAddress, peerAddress, ciphertext, msgType, peerDeviceId = DEFAULT_DEVICE_ID) {
352
- const protocolAddress = new SignalProtocolAddress(
353
- peerAddress,
354
- peerDeviceId
355
- );
356
- const cipher = new SessionCipher(this.store, protocolAddress);
357
- const decoder = new TextDecoder();
358
- const sessionKey = protocolAddress.toString();
359
- const existingSession = await this.store.loadSession(sessionKey);
360
- let plaintextBuffer;
361
- const ciphertextArray = new Uint8Array(ciphertext);
362
- let ciphertextBinary = "";
363
- for (let i = 0; i < ciphertextArray.length; i++) {
364
- ciphertextBinary += String.fromCharCode(ciphertextArray[i]);
395
+ /**
396
+ * 获取本地身份公钥
397
+ */
398
+ async getIdentityKey() {
399
+ const identity = await this.ensureIdentity();
400
+ return bytesToBase64(arrayBufferToUint8Array(identity.signalIdentity.pubKey));
365
401
  }
366
- try {
367
- if (msgType === MessageType.PREKEY_MESSAGE) {
368
- if (existingSession) {
369
- await this.store.removeSession(sessionKey);
370
- const newCipher = new SessionCipher(
371
- this.store,
372
- protocolAddress
373
- );
374
- plaintextBuffer = await newCipher.decryptPreKeyWhisperMessage(
375
- ciphertextBinary,
376
- "binary"
377
- );
378
- } else {
379
- plaintextBuffer = await cipher.decryptPreKeyWhisperMessage(
380
- ciphertextBinary,
381
- "binary"
382
- );
383
- }
384
- } else {
385
- plaintextBuffer = await cipher.decryptWhisperMessage(
386
- ciphertextBinary,
387
- "binary"
388
- );
389
- }
390
- } catch (error) {
391
- console.log("error:", error);
392
- throw error;
402
+ /**
403
+ * 获取注册 ID
404
+ */
405
+ async getRegistrationId() {
406
+ const identity = await this.ensureIdentity();
407
+ return identity.registrationId;
393
408
  }
394
- return decoder.decode(plaintextBuffer);
395
- }
396
- /**
397
- * 获取本地身份公钥
398
- */
399
- async getIdentityKey() {
400
- const identity = await this.ensureIdentity();
401
- return bytesToBase64(
402
- arrayBufferToUint8Array(identity.signalIdentity.pubKey)
403
- );
404
- }
405
- /**
406
- * 获取注册 ID
407
- */
408
- async getRegistrationId() {
409
- const identity = await this.ensureIdentity();
410
- return identity.registrationId;
411
- }
412
409
  }
413
- export {
414
- MessengerSession
415
- };
410
+ //# sourceMappingURL=session.js.map