@bsv/wallet-toolbox 1.7.14 → 1.7.16

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 (1194) hide show
  1. package/.github/workflows/push.yaml +136 -62
  2. package/CHANGELOG.md +5 -0
  3. package/docs/client.md +4 -2
  4. package/docs/storage.md +4 -2
  5. package/docs/wallet.md +4 -2
  6. package/mobile/node_modules/.package-lock.json +14 -0
  7. package/mobile/node_modules/@bsv/sdk/LICENSE.txt +28 -0
  8. package/mobile/node_modules/@bsv/sdk/README.md +133 -0
  9. package/mobile/node_modules/@bsv/sdk/dist/cjs/mod.js +36 -0
  10. package/mobile/node_modules/@bsv/sdk/dist/cjs/mod.js.map +1 -0
  11. package/mobile/node_modules/@bsv/sdk/dist/cjs/package.json +70 -0
  12. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/Peer.js +695 -0
  13. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/Peer.js.map +1 -0
  14. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/SessionManager.js +130 -0
  15. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/SessionManager.js.map +1 -0
  16. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/Certificate.js +236 -0
  17. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/Certificate.js.map +1 -0
  18. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/MasterCertificate.js +245 -0
  19. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -0
  20. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/VerifiableCertificate.js +96 -0
  21. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -0
  22. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +111 -0
  23. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -0
  24. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/index.js +26 -0
  25. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/certificates/index.js.map +1 -0
  26. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/clients/AuthFetch.js +734 -0
  27. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -0
  28. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/clients/__tests__/AuthFetch.test.js +189 -0
  29. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -0
  30. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/clients/index.js +18 -0
  31. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/clients/index.js.map +1 -0
  32. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/index.js +24 -0
  33. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/index.js.map +1 -0
  34. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +424 -0
  35. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -0
  36. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js +144 -0
  37. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -0
  38. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/transports/index.js +18 -0
  39. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/transports/index.js.map +1 -0
  40. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/types.js +3 -0
  41. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/types.js.map +1 -0
  42. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/createNonce.js +62 -0
  43. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/createNonce.js.map +1 -0
  44. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/getVerifiableCertificates.js +31 -0
  45. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -0
  46. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/index.js +21 -0
  47. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/index.js.map +1 -0
  48. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/validateCertificates.js +45 -0
  49. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -0
  50. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/verifyNonce.js +61 -0
  51. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -0
  52. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/BSM.js +94 -0
  53. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/BSM.js.map +1 -0
  54. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/ECIES.js +590 -0
  55. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/ECIES.js.map +1 -0
  56. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/HD.js +354 -0
  57. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/HD.js.map +1 -0
  58. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/Mnemonic.js +314 -0
  59. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/Mnemonic.js.map +1 -0
  60. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/Utxo.js +51 -0
  61. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/Utxo.js.map +1 -0
  62. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/bip-39-wordlist-en.js +2057 -0
  63. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/bip-39-wordlist-en.js.map +1 -0
  64. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/index.js +49 -0
  65. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/compat/index.js.map +1 -0
  66. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/identity/ContactsManager.js +338 -0
  67. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/identity/ContactsManager.js.map +1 -0
  68. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/identity/IdentityClient.js +367 -0
  69. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/identity/IdentityClient.js.map +1 -0
  70. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/identity/index.js +19 -0
  71. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/identity/index.js.map +1 -0
  72. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/identity/types/index.js +30 -0
  73. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/identity/types/index.js.map +1 -0
  74. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/GlobalKVStore.js +470 -0
  75. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -0
  76. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/LocalKVStore.js +343 -0
  77. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -0
  78. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/index.js +11 -0
  79. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/index.js.map +1 -0
  80. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/kvStoreInterpreter.js +88 -0
  81. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -0
  82. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/types.js +12 -0
  83. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/kvstore/types.js.map +1 -0
  84. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/messages/EncryptedMessage.js +71 -0
  85. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/messages/EncryptedMessage.js.map +1 -0
  86. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/messages/SignedMessage.js +86 -0
  87. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/messages/SignedMessage.js.map +1 -0
  88. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/messages/index.js +39 -0
  89. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/messages/index.js.map +1 -0
  90. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/Historian.js +153 -0
  91. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/Historian.js.map +1 -0
  92. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/HostReputationTracker.js +216 -0
  93. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/HostReputationTracker.js.map +1 -0
  94. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/LookupResolver.js +398 -0
  95. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -0
  96. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +81 -0
  97. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -0
  98. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +408 -0
  99. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -0
  100. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/index.js +36 -0
  101. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/index.js.map +1 -0
  102. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +54 -0
  103. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
  104. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/AESGCM.js +376 -0
  105. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/AESGCM.js.map +1 -0
  106. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/BasePoint.js +19 -0
  107. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/BasePoint.js.map +1 -0
  108. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/BigNumber.js +1367 -0
  109. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/BigNumber.js.map +1 -0
  110. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Curve.js +1149 -0
  111. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Curve.js.map +1 -0
  112. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/DRBG.js +109 -0
  113. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/DRBG.js.map +1 -0
  114. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/ECDSA.js +188 -0
  115. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/ECDSA.js.map +1 -0
  116. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Hash.js +1687 -0
  117. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Hash.js.map +1 -0
  118. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/JacobianPoint.js +427 -0
  119. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/JacobianPoint.js.map +1 -0
  120. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/K256.js +127 -0
  121. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/K256.js.map +1 -0
  122. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Mersenne.js +113 -0
  123. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Mersenne.js.map +1 -0
  124. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/MontgomoryMethod.js +150 -0
  125. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -0
  126. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Point.js +1098 -0
  127. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Point.js.map +1 -0
  128. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Polynomial.js +83 -0
  129. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Polynomial.js.map +1 -0
  130. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/PrivateKey.js +519 -0
  131. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/PrivateKey.js.map +1 -0
  132. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/PublicKey.js +261 -0
  133. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/PublicKey.js.map +1 -0
  134. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Random.js +91 -0
  135. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Random.js.map +1 -0
  136. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/ReductionContext.js +490 -0
  137. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/ReductionContext.js.map +1 -0
  138. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Schnorr.js +98 -0
  139. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Schnorr.js.map +1 -0
  140. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Secp256r1.js +327 -0
  141. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Secp256r1.js.map +1 -0
  142. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Signature.js +358 -0
  143. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/Signature.js.map +1 -0
  144. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/SymmetricKey.js +96 -0
  145. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/SymmetricKey.js.map +1 -0
  146. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/TransactionSignature.js +235 -0
  147. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/TransactionSignature.js.map +1 -0
  148. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/hex.js +33 -0
  149. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/hex.js.map +1 -0
  150. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/index.js +69 -0
  151. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/index.js.map +1 -0
  152. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/utils.js +863 -0
  153. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/primitives/utils.js.map +1 -0
  154. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/registry/RegistryClient.js +533 -0
  155. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/registry/RegistryClient.js.map +1 -0
  156. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/registry/index.js +19 -0
  157. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/registry/index.js.map +1 -0
  158. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/registry/types/index.js +3 -0
  159. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/registry/types/index.js.map +1 -0
  160. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/LockingScript.js +35 -0
  161. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/LockingScript.js.map +1 -0
  162. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/OP.js +207 -0
  163. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/OP.js.map +1 -0
  164. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/Script.js +567 -0
  165. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/Script.js.map +1 -0
  166. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/ScriptChunk.js +3 -0
  167. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/ScriptChunk.js.map +1 -0
  168. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/ScriptEvaluationError.js +27 -0
  169. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/ScriptEvaluationError.js.map +1 -0
  170. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/ScriptTemplate.js +3 -0
  171. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/ScriptTemplate.js.map +1 -0
  172. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/ScriptTemplateUnlock.js +3 -0
  173. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/ScriptTemplateUnlock.js.map +1 -0
  174. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/Spend.js +1208 -0
  175. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/Spend.js.map +1 -0
  176. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/UnlockingScript.js +35 -0
  177. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/UnlockingScript.js.map +1 -0
  178. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/index.js +34 -0
  179. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/index.js.map +1 -0
  180. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/templates/P2PKH.js +129 -0
  181. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/templates/P2PKH.js.map +1 -0
  182. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/templates/PushDrop.js +219 -0
  183. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/templates/PushDrop.js.map +1 -0
  184. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/templates/RPuzzle.js +130 -0
  185. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/templates/RPuzzle.js.map +1 -0
  186. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/templates/index.js +13 -0
  187. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/script/templates/index.js.map +1 -0
  188. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/storage/StorageDownloader.js +100 -0
  189. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/storage/StorageDownloader.js.map +1 -0
  190. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/storage/StorageUploader.js +213 -0
  191. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/storage/StorageUploader.js.map +1 -0
  192. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/storage/StorageUtils.js +81 -0
  193. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/storage/StorageUtils.js.map +1 -0
  194. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/storage/index.js +42 -0
  195. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/storage/index.js.map +1 -0
  196. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/totp/index.js +18 -0
  197. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/totp/index.js.map +1 -0
  198. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/totp/totp.js +92 -0
  199. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/totp/totp.js.map +1 -0
  200. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/Beef.js +840 -0
  201. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/Beef.js.map +1 -0
  202. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/BeefParty.js +117 -0
  203. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/BeefParty.js.map +1 -0
  204. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/BeefTx.js +191 -0
  205. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/BeefTx.js.map +1 -0
  206. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/Broadcaster.js +17 -0
  207. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/Broadcaster.js.map +1 -0
  208. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/ChainTracker.js +3 -0
  209. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/ChainTracker.js.map +1 -0
  210. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/FeeModel.js +3 -0
  211. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/FeeModel.js.map +1 -0
  212. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/MerklePath.js +383 -0
  213. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/MerklePath.js.map +1 -0
  214. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/Transaction.js +911 -0
  215. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/Transaction.js.map +1 -0
  216. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/TransactionInput.js +3 -0
  217. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/TransactionInput.js.map +1 -0
  218. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/TransactionOutput.js +3 -0
  219. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/TransactionOutput.js.map +1 -0
  220. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/ARC.js +181 -0
  221. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -0
  222. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +11 -0
  223. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -0
  224. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/Teranode.js +63 -0
  225. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/Teranode.js.map +1 -0
  226. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +65 -0
  227. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -0
  228. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/index.js +15 -0
  229. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/broadcasters/index.js.map +1 -0
  230. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/chaintrackers/BlockHeadersService.js +91 -0
  231. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -0
  232. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +11 -0
  233. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -0
  234. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +67 -0
  235. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -0
  236. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/chaintrackers/index.js +13 -0
  237. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/chaintrackers/index.js.map +1 -0
  238. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/fee-models/LivePolicy.js +90 -0
  239. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/fee-models/LivePolicy.js.map +1 -0
  240. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +69 -0
  241. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -0
  242. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/fee-models/index.js +11 -0
  243. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/fee-models/index.js.map +1 -0
  244. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/BinaryFetchClient.js +94 -0
  245. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -0
  246. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/DefaultHttpClient.js +37 -0
  247. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -0
  248. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/FetchHttpClient.js +31 -0
  249. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -0
  250. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/HttpClient.js +3 -0
  251. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/HttpClient.js.map +1 -0
  252. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/NodejsHttpClient.js +43 -0
  253. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -0
  254. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/index.js +12 -0
  255. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/http/index.js.map +1 -0
  256. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/index.js +33 -0
  257. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/transaction/index.js.map +1 -0
  258. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/CachedKeyDeriver.js +210 -0
  259. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -0
  260. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/KeyDeriver.js +191 -0
  261. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/KeyDeriver.js.map +1 -0
  262. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/ProtoWallet.js +188 -0
  263. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/ProtoWallet.js.map +1 -0
  264. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WERR_INSUFFICIENT_FUNDS.js +26 -0
  265. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WERR_INSUFFICIENT_FUNDS.js.map +1 -0
  266. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WERR_INVALID_PARAMETER.js +20 -0
  267. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WERR_INVALID_PARAMETER.js.map +1 -0
  268. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WERR_REVIEW_ACTIONS.js +29 -0
  269. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WERR_REVIEW_ACTIONS.js.map +1 -0
  270. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/Wallet.interfaces.js +17 -0
  271. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/Wallet.interfaces.js.map +1 -0
  272. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WalletClient.js +222 -0
  273. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WalletClient.js.map +1 -0
  274. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WalletError.js +84 -0
  275. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WalletError.js.map +1 -0
  276. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WalletLoggerInterface.js +8 -0
  277. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/WalletLoggerInterface.js.map +1 -0
  278. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/index.js +64 -0
  279. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/index.js.map +1 -0
  280. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +153 -0
  281. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -0
  282. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +78 -0
  283. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -0
  284. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +175 -0
  285. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -0
  286. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/WalletWire.js +3 -0
  287. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/WalletWire.js.map +1 -0
  288. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/WalletWireCalls.js +36 -0
  289. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/WalletWireCalls.js.map +1 -0
  290. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1854 -0
  291. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -0
  292. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +1411 -0
  293. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -0
  294. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/XDM.js +172 -0
  295. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/XDM.js.map +1 -0
  296. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/index.js +37 -0
  297. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/index.js.map +1 -0
  298. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js +20 -0
  299. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js.map +1 -0
  300. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/window.CWI.js +102 -0
  301. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -0
  302. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/validationHelpers.js +931 -0
  303. package/mobile/node_modules/@bsv/sdk/dist/cjs/src/wallet/validationHelpers.js.map +1 -0
  304. package/mobile/node_modules/@bsv/sdk/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  305. package/mobile/node_modules/@bsv/sdk/dist/esm/mod.js +20 -0
  306. package/mobile/node_modules/@bsv/sdk/dist/esm/mod.js.map +1 -0
  307. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/Peer.js +663 -0
  308. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/Peer.js.map +1 -0
  309. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/SessionManager.js +134 -0
  310. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/SessionManager.js.map +1 -0
  311. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/Certificate.js +225 -0
  312. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/Certificate.js.map +1 -0
  313. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/MasterCertificate.js +206 -0
  314. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -0
  315. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/VerifiableCertificate.js +58 -0
  316. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -0
  317. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +105 -0
  318. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -0
  319. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/index.js +5 -0
  320. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/certificates/index.js.map +1 -0
  321. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/clients/AuthFetch.js +698 -0
  322. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/clients/AuthFetch.js.map +1 -0
  323. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/clients/__tests__/AuthFetch.test.js +187 -0
  324. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -0
  325. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/clients/index.js +2 -0
  326. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/clients/index.js.map +1 -0
  327. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/index.js +8 -0
  328. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/index.js.map +1 -0
  329. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +390 -0
  330. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -0
  331. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js +109 -0
  332. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -0
  333. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/transports/index.js +2 -0
  334. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/transports/index.js.map +1 -0
  335. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/types.js +2 -0
  336. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/types.js.map +1 -0
  337. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/createNonce.js +23 -0
  338. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/createNonce.js.map +1 -0
  339. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/getVerifiableCertificates.js +27 -0
  340. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -0
  341. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/index.js +5 -0
  342. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/index.js.map +1 -0
  343. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/validateCertificates.js +41 -0
  344. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/validateCertificates.js.map +1 -0
  345. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/verifyNonce.js +25 -0
  346. package/mobile/node_modules/@bsv/sdk/dist/esm/src/auth/utils/verifyNonce.js.map +1 -0
  347. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/BSM.js +52 -0
  348. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/BSM.js.map +1 -0
  349. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/ECIES.js +551 -0
  350. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/ECIES.js.map +1 -0
  351. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/HD.js +322 -0
  352. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/HD.js.map +1 -0
  353. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/Mnemonic.js +278 -0
  354. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/Mnemonic.js.map +1 -0
  355. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/Utxo.js +45 -0
  356. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/Utxo.js.map +1 -0
  357. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/bip-39-wordlist-en.js +2054 -0
  358. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/bip-39-wordlist-en.js.map +1 -0
  359. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/index.js +6 -0
  360. package/mobile/node_modules/@bsv/sdk/dist/esm/src/compat/index.js.map +1 -0
  361. package/mobile/node_modules/@bsv/sdk/dist/esm/src/identity/ContactsManager.js +334 -0
  362. package/mobile/node_modules/@bsv/sdk/dist/esm/src/identity/ContactsManager.js.map +1 -0
  363. package/mobile/node_modules/@bsv/sdk/dist/esm/src/identity/IdentityClient.js +364 -0
  364. package/mobile/node_modules/@bsv/sdk/dist/esm/src/identity/IdentityClient.js.map +1 -0
  365. package/mobile/node_modules/@bsv/sdk/dist/esm/src/identity/index.js +3 -0
  366. package/mobile/node_modules/@bsv/sdk/dist/esm/src/identity/index.js.map +1 -0
  367. package/mobile/node_modules/@bsv/sdk/dist/esm/src/identity/types/index.js +27 -0
  368. package/mobile/node_modules/@bsv/sdk/dist/esm/src/identity/types/index.js.map +1 -0
  369. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/GlobalKVStore.js +456 -0
  370. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -0
  371. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/LocalKVStore.js +328 -0
  372. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/LocalKVStore.js.map +1 -0
  373. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/index.js +3 -0
  374. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/index.js.map +1 -0
  375. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/kvStoreInterpreter.js +51 -0
  376. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -0
  377. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/types.js +9 -0
  378. package/mobile/node_modules/@bsv/sdk/dist/esm/src/kvstore/types.js.map +1 -0
  379. package/mobile/node_modules/@bsv/sdk/dist/esm/src/messages/EncryptedMessage.js +63 -0
  380. package/mobile/node_modules/@bsv/sdk/dist/esm/src/messages/EncryptedMessage.js.map +1 -0
  381. package/mobile/node_modules/@bsv/sdk/dist/esm/src/messages/SignedMessage.js +78 -0
  382. package/mobile/node_modules/@bsv/sdk/dist/esm/src/messages/SignedMessage.js.map +1 -0
  383. package/mobile/node_modules/@bsv/sdk/dist/esm/src/messages/index.js +3 -0
  384. package/mobile/node_modules/@bsv/sdk/dist/esm/src/messages/index.js.map +1 -0
  385. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/Historian.js +155 -0
  386. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/Historian.js.map +1 -0
  387. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/HostReputationTracker.js +213 -0
  388. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/HostReputationTracker.js.map +1 -0
  389. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/LookupResolver.js +372 -0
  390. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -0
  391. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +76 -0
  392. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -0
  393. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/SHIPBroadcaster.js +376 -0
  394. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -0
  395. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/index.js +11 -0
  396. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/index.js.map +1 -0
  397. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/withDoubleSpendRetry.js +48 -0
  398. package/mobile/node_modules/@bsv/sdk/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -0
  399. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/AESGCM.js +363 -0
  400. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/AESGCM.js.map +1 -0
  401. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/BasePoint.js +16 -0
  402. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/BasePoint.js.map +1 -0
  403. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/BigNumber.js +1373 -0
  404. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/BigNumber.js.map +1 -0
  405. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Curve.js +1164 -0
  406. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Curve.js.map +1 -0
  407. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/DRBG.js +108 -0
  408. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/DRBG.js.map +1 -0
  409. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/ECDSA.js +180 -0
  410. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/ECDSA.js.map +1 -0
  411. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Hash.js +1693 -0
  412. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Hash.js.map +1 -0
  413. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/JacobianPoint.js +425 -0
  414. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/JacobianPoint.js.map +1 -0
  415. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/K256.js +121 -0
  416. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/K256.js.map +1 -0
  417. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Mersenne.js +112 -0
  418. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Mersenne.js.map +1 -0
  419. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/MontgomoryMethod.js +149 -0
  420. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -0
  421. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Point.js +1078 -0
  422. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Point.js.map +1 -0
  423. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Polynomial.js +79 -0
  424. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Polynomial.js.map +1 -0
  425. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/PrivateKey.js +481 -0
  426. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/PrivateKey.js.map +1 -0
  427. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/PublicKey.js +255 -0
  428. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/PublicKey.js.map +1 -0
  429. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Random.js +90 -0
  430. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Random.js.map +1 -0
  431. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/ReductionContext.js +486 -0
  432. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/ReductionContext.js.map +1 -0
  433. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Schnorr.js +93 -0
  434. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Schnorr.js.map +1 -0
  435. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Secp256r1.js +319 -0
  436. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Secp256r1.js.map +1 -0
  437. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Signature.js +361 -0
  438. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/Signature.js.map +1 -0
  439. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/SymmetricKey.js +90 -0
  440. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/SymmetricKey.js.map +1 -0
  441. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/TransactionSignature.js +197 -0
  442. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/TransactionSignature.js.map +1 -0
  443. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/hex.js +29 -0
  444. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/hex.js.map +1 -0
  445. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/index.js +16 -0
  446. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/index.js.map +1 -0
  447. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/utils.js +847 -0
  448. package/mobile/node_modules/@bsv/sdk/dist/esm/src/primitives/utils.js.map +1 -0
  449. package/mobile/node_modules/@bsv/sdk/dist/esm/src/registry/RegistryClient.js +534 -0
  450. package/mobile/node_modules/@bsv/sdk/dist/esm/src/registry/RegistryClient.js.map +1 -0
  451. package/mobile/node_modules/@bsv/sdk/dist/esm/src/registry/index.js +3 -0
  452. package/mobile/node_modules/@bsv/sdk/dist/esm/src/registry/index.js.map +1 -0
  453. package/mobile/node_modules/@bsv/sdk/dist/esm/src/registry/types/index.js +2 -0
  454. package/mobile/node_modules/@bsv/sdk/dist/esm/src/registry/types/index.js.map +1 -0
  455. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/LockingScript.js +29 -0
  456. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/LockingScript.js.map +1 -0
  457. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/OP.js +205 -0
  458. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/OP.js.map +1 -0
  459. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/Script.js +565 -0
  460. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/Script.js.map +1 -0
  461. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/ScriptChunk.js +2 -0
  462. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/ScriptChunk.js.map +1 -0
  463. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/ScriptEvaluationError.js +33 -0
  464. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/ScriptEvaluationError.js.map +1 -0
  465. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/ScriptTemplate.js +2 -0
  466. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/ScriptTemplate.js.map +1 -0
  467. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/ScriptTemplateUnlock.js +2 -0
  468. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/ScriptTemplateUnlock.js.map +1 -0
  469. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/Spend.js +1190 -0
  470. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/Spend.js.map +1 -0
  471. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/UnlockingScript.js +29 -0
  472. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/UnlockingScript.js.map +1 -0
  473. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/index.js +8 -0
  474. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/index.js.map +1 -0
  475. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/templates/P2PKH.js +125 -0
  476. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/templates/P2PKH.js.map +1 -0
  477. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/templates/PushDrop.js +220 -0
  478. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/templates/PushDrop.js.map +1 -0
  479. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/templates/RPuzzle.js +124 -0
  480. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/templates/RPuzzle.js.map +1 -0
  481. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/templates/index.js +4 -0
  482. package/mobile/node_modules/@bsv/sdk/dist/esm/src/script/templates/index.js.map +1 -0
  483. package/mobile/node_modules/@bsv/sdk/dist/esm/src/storage/StorageDownloader.js +94 -0
  484. package/mobile/node_modules/@bsv/sdk/dist/esm/src/storage/StorageDownloader.js.map +1 -0
  485. package/mobile/node_modules/@bsv/sdk/dist/esm/src/storage/StorageUploader.js +178 -0
  486. package/mobile/node_modules/@bsv/sdk/dist/esm/src/storage/StorageUploader.js.map +1 -0
  487. package/mobile/node_modules/@bsv/sdk/dist/esm/src/storage/StorageUtils.js +73 -0
  488. package/mobile/node_modules/@bsv/sdk/dist/esm/src/storage/StorageUtils.js.map +1 -0
  489. package/mobile/node_modules/@bsv/sdk/dist/esm/src/storage/index.js +4 -0
  490. package/mobile/node_modules/@bsv/sdk/dist/esm/src/storage/index.js.map +1 -0
  491. package/mobile/node_modules/@bsv/sdk/dist/esm/src/totp/index.js +2 -0
  492. package/mobile/node_modules/@bsv/sdk/dist/esm/src/totp/index.js.map +1 -0
  493. package/mobile/node_modules/@bsv/sdk/dist/esm/src/totp/totp.js +85 -0
  494. package/mobile/node_modules/@bsv/sdk/dist/esm/src/totp/totp.js.map +1 -0
  495. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/Beef.js +835 -0
  496. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/Beef.js.map +1 -0
  497. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/BeefParty.js +113 -0
  498. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/BeefParty.js.map +1 -0
  499. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/BeefTx.js +189 -0
  500. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/BeefTx.js.map +1 -0
  501. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/Broadcaster.js +13 -0
  502. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/Broadcaster.js.map +1 -0
  503. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/ChainTracker.js +2 -0
  504. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/ChainTracker.js.map +1 -0
  505. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/FeeModel.js +2 -0
  506. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/FeeModel.js.map +1 -0
  507. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/MerklePath.js +382 -0
  508. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/MerklePath.js.map +1 -0
  509. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/Transaction.js +914 -0
  510. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/Transaction.js.map +1 -0
  511. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/TransactionInput.js +2 -0
  512. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/TransactionInput.js.map +1 -0
  513. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/TransactionOutput.js +2 -0
  514. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/TransactionOutput.js.map +1 -0
  515. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/ARC.js +182 -0
  516. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -0
  517. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js +5 -0
  518. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -0
  519. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/Teranode.js +62 -0
  520. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/Teranode.js.map +1 -0
  521. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +65 -0
  522. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -0
  523. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/index.js +5 -0
  524. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/broadcasters/index.js.map +1 -0
  525. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/chaintrackers/BlockHeadersService.js +90 -0
  526. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -0
  527. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js +5 -0
  528. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -0
  529. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +68 -0
  530. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -0
  531. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/chaintrackers/index.js +4 -0
  532. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/chaintrackers/index.js.map +1 -0
  533. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/fee-models/LivePolicy.js +85 -0
  534. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/fee-models/LivePolicy.js.map +1 -0
  535. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +71 -0
  536. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -0
  537. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/fee-models/index.js +3 -0
  538. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/fee-models/index.js.map +1 -0
  539. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/BinaryFetchClient.js +90 -0
  540. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -0
  541. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/DefaultHttpClient.js +34 -0
  542. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -0
  543. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/FetchHttpClient.js +28 -0
  544. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -0
  545. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/HttpClient.js +2 -0
  546. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/HttpClient.js.map +1 -0
  547. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/NodejsHttpClient.js +40 -0
  548. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -0
  549. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/index.js +5 -0
  550. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/http/index.js.map +1 -0
  551. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/index.js +7 -0
  552. package/mobile/node_modules/@bsv/sdk/dist/esm/src/transaction/index.js.map +1 -0
  553. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/CachedKeyDeriver.js +218 -0
  554. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -0
  555. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/KeyDeriver.js +192 -0
  556. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/KeyDeriver.js.map +1 -0
  557. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/ProtoWallet.js +182 -0
  558. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/ProtoWallet.js.map +1 -0
  559. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WERR_INSUFFICIENT_FUNDS.js +25 -0
  560. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WERR_INSUFFICIENT_FUNDS.js.map +1 -0
  561. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WERR_INVALID_PARAMETER.js +18 -0
  562. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WERR_INVALID_PARAMETER.js.map +1 -0
  563. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WERR_REVIEW_ACTIONS.js +31 -0
  564. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WERR_REVIEW_ACTIONS.js.map +1 -0
  565. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/Wallet.interfaces.js +14 -0
  566. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/Wallet.interfaces.js.map +1 -0
  567. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WalletClient.js +218 -0
  568. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WalletClient.js.map +1 -0
  569. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WalletError.js +81 -0
  570. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WalletError.js.map +1 -0
  571. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WalletLoggerInterface.js +7 -0
  572. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/WalletLoggerInterface.js.map +1 -0
  573. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/index.js +15 -0
  574. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/index.js.map +1 -0
  575. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +151 -0
  576. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -0
  577. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/HTTPWalletWire.js +42 -0
  578. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -0
  579. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/ReactNativeWebView.js +137 -0
  580. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -0
  581. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/WalletWire.js +2 -0
  582. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/WalletWire.js.map +1 -0
  583. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/WalletWireCalls.js +34 -0
  584. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/WalletWireCalls.js.map +1 -0
  585. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1816 -0
  586. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -0
  587. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +1373 -0
  588. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -0
  589. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/XDM.js +134 -0
  590. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/XDM.js.map +1 -0
  591. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/index.js +10 -0
  592. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/index.js.map +1 -0
  593. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/utils/toOriginHeader.js +17 -0
  594. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/utils/toOriginHeader.js.map +1 -0
  595. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/window.CWI.js +100 -0
  596. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -0
  597. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/validationHelpers.js +860 -0
  598. package/mobile/node_modules/@bsv/sdk/dist/esm/src/wallet/validationHelpers.js.map +1 -0
  599. package/mobile/node_modules/@bsv/sdk/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  600. package/mobile/node_modules/@bsv/sdk/dist/types/mod.d.ts +20 -0
  601. package/mobile/node_modules/@bsv/sdk/dist/types/mod.d.ts.map +1 -0
  602. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/Peer.d.ts +200 -0
  603. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/Peer.d.ts.map +1 -0
  604. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/SessionManager.d.ts +60 -0
  605. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/SessionManager.d.ts.map +1 -0
  606. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/Certificate.d.ts +112 -0
  607. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -0
  608. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/MasterCertificate.d.ts +108 -0
  609. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -0
  610. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/VerifiableCertificate.d.ts +37 -0
  611. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -0
  612. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +29 -0
  613. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -0
  614. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/index.d.ts +5 -0
  615. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/certificates/index.d.ts.map +1 -0
  616. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/clients/AuthFetch.d.ts +126 -0
  617. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -0
  618. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/clients/__tests__/AuthFetch.test.d.ts +2 -0
  619. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/clients/__tests__/AuthFetch.test.d.ts.map +1 -0
  620. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/clients/index.d.ts +2 -0
  621. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/clients/index.d.ts.map +1 -0
  622. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/index.d.ts +8 -0
  623. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/index.d.ts.map +1 -0
  624. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +57 -0
  625. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -0
  626. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/transports/__tests__/SimplifiedFetchTransport.test.d.ts +2 -0
  627. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/transports/__tests__/SimplifiedFetchTransport.test.d.ts.map +1 -0
  628. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/transports/index.d.ts +2 -0
  629. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/transports/index.d.ts.map +1 -0
  630. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/types.d.ts +32 -0
  631. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/types.d.ts.map +1 -0
  632. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/createNonce.d.ts +9 -0
  633. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/createNonce.d.ts.map +1 -0
  634. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +13 -0
  635. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -0
  636. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/index.d.ts +5 -0
  637. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/index.d.ts.map +1 -0
  638. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/validateCertificates.d.ts +12 -0
  639. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -0
  640. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/verifyNonce.d.ts +10 -0
  641. package/mobile/node_modules/@bsv/sdk/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -0
  642. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/BSM.d.ts +29 -0
  643. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/BSM.d.ts.map +1 -0
  644. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/ECIES.d.ts +62 -0
  645. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/ECIES.d.ts.map +1 -0
  646. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/HD.d.ts +131 -0
  647. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/HD.d.ts.map +1 -0
  648. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/Mnemonic.d.ts +132 -0
  649. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/Mnemonic.d.ts.map +1 -0
  650. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/Utxo.d.ts +42 -0
  651. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/Utxo.d.ts.map +1 -0
  652. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/bip-39-wordlist-en.d.ts +5 -0
  653. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/bip-39-wordlist-en.d.ts.map +1 -0
  654. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/index.d.ts +6 -0
  655. package/mobile/node_modules/@bsv/sdk/dist/types/src/compat/index.d.ts.map +1 -0
  656. package/mobile/node_modules/@bsv/sdk/dist/types/src/identity/ContactsManager.d.ts +32 -0
  657. package/mobile/node_modules/@bsv/sdk/dist/types/src/identity/ContactsManager.d.ts.map +1 -0
  658. package/mobile/node_modules/@bsv/sdk/dist/types/src/identity/IdentityClient.d.ts +81 -0
  659. package/mobile/node_modules/@bsv/sdk/dist/types/src/identity/IdentityClient.d.ts.map +1 -0
  660. package/mobile/node_modules/@bsv/sdk/dist/types/src/identity/index.d.ts +3 -0
  661. package/mobile/node_modules/@bsv/sdk/dist/types/src/identity/index.d.ts.map +1 -0
  662. package/mobile/node_modules/@bsv/sdk/dist/types/src/identity/types/index.d.ts +30 -0
  663. package/mobile/node_modules/@bsv/sdk/dist/types/src/identity/types/index.d.ts.map +1 -0
  664. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/GlobalKVStore.d.ts +129 -0
  665. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -0
  666. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/LocalKVStore.d.ts +95 -0
  667. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/LocalKVStore.d.ts.map +1 -0
  668. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/index.d.ts +3 -0
  669. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/index.d.ts.map +1 -0
  670. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/kvStoreInterpreter.d.ts +23 -0
  671. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/kvStoreInterpreter.d.ts.map +1 -0
  672. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/types.d.ts +118 -0
  673. package/mobile/node_modules/@bsv/sdk/dist/types/src/kvstore/types.d.ts.map +1 -0
  674. package/mobile/node_modules/@bsv/sdk/dist/types/src/messages/EncryptedMessage.d.ts +20 -0
  675. package/mobile/node_modules/@bsv/sdk/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -0
  676. package/mobile/node_modules/@bsv/sdk/dist/types/src/messages/SignedMessage.d.ts +21 -0
  677. package/mobile/node_modules/@bsv/sdk/dist/types/src/messages/SignedMessage.d.ts.map +1 -0
  678. package/mobile/node_modules/@bsv/sdk/dist/types/src/messages/index.d.ts +3 -0
  679. package/mobile/node_modules/@bsv/sdk/dist/types/src/messages/index.d.ts.map +1 -0
  680. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/Historian.d.ts +92 -0
  681. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/Historian.d.ts.map +1 -0
  682. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/HostReputationTracker.d.ts +37 -0
  683. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/HostReputationTracker.d.ts.map +1 -0
  684. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/LookupResolver.d.ts +124 -0
  685. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -0
  686. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +44 -0
  687. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -0
  688. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +105 -0
  689. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -0
  690. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/index.d.ts +9 -0
  691. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/index.d.ts.map +1 -0
  692. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts +14 -0
  693. package/mobile/node_modules/@bsv/sdk/dist/types/src/overlay-tools/withDoubleSpendRetry.d.ts.map +1 -0
  694. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/AESGCM.d.ts +14 -0
  695. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/AESGCM.d.ts.map +1 -0
  696. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/BasePoint.d.ts +22 -0
  697. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/BasePoint.d.ts.map +1 -0
  698. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/BigNumber.d.ts +438 -0
  699. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/BigNumber.d.ts.map +1 -0
  700. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Curve.d.ts +62 -0
  701. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Curve.d.ts.map +1 -0
  702. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/DRBG.d.ts +66 -0
  703. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/DRBG.d.ts.map +1 -0
  704. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/ECDSA.d.ts +39 -0
  705. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/ECDSA.d.ts.map +1 -0
  706. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Hash.d.ts +499 -0
  707. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Hash.d.ts.map +1 -0
  708. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/JacobianPoint.d.ts +164 -0
  709. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -0
  710. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/K256.d.ts +53 -0
  711. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/K256.d.ts.map +1 -0
  712. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Mersenne.d.ts +72 -0
  713. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Mersenne.d.ts.map +1 -0
  714. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/MontgomoryMethod.d.ts +96 -0
  715. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/MontgomoryMethod.d.ts.map +1 -0
  716. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Point.d.ts +362 -0
  717. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Point.d.ts.map +1 -0
  718. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Polynomial.d.ts +32 -0
  719. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Polynomial.d.ts.map +1 -0
  720. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/PrivateKey.d.ts +284 -0
  721. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/PrivateKey.d.ts.map +1 -0
  722. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/PublicKey.d.ts +155 -0
  723. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/PublicKey.d.ts.map +1 -0
  724. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Random.d.ts +14 -0
  725. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Random.d.ts.map +1 -0
  726. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/ReductionContext.d.ts +308 -0
  727. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/ReductionContext.d.ts.map +1 -0
  728. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Schnorr.d.ts +65 -0
  729. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Schnorr.d.ts.map +1 -0
  730. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Secp256r1.d.ts +91 -0
  731. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Secp256r1.d.ts.map +1 -0
  732. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Signature.d.ts +162 -0
  733. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/Signature.d.ts.map +1 -0
  734. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/SymmetricKey.d.ts +55 -0
  735. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -0
  736. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/TransactionSignature.d.ts +57 -0
  737. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -0
  738. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/hex.d.ts +3 -0
  739. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/hex.d.ts.map +1 -0
  740. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/index.d.ts +16 -0
  741. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/index.d.ts.map +1 -0
  742. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/utils.d.ts +140 -0
  743. package/mobile/node_modules/@bsv/sdk/dist/types/src/primitives/utils.d.ts.map +1 -0
  744. package/mobile/node_modules/@bsv/sdk/dist/types/src/registry/RegistryClient.d.ts +121 -0
  745. package/mobile/node_modules/@bsv/sdk/dist/types/src/registry/RegistryClient.d.ts.map +1 -0
  746. package/mobile/node_modules/@bsv/sdk/dist/types/src/registry/index.d.ts +3 -0
  747. package/mobile/node_modules/@bsv/sdk/dist/types/src/registry/index.d.ts.map +1 -0
  748. package/mobile/node_modules/@bsv/sdk/dist/types/src/registry/types/index.d.ts +113 -0
  749. package/mobile/node_modules/@bsv/sdk/dist/types/src/registry/types/index.d.ts.map +1 -0
  750. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/LockingScript.d.ts +25 -0
  751. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/LockingScript.d.ts.map +1 -0
  752. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/OP.d.ts +193 -0
  753. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/OP.d.ts.map +1 -0
  754. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/Script.d.ts +157 -0
  755. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/Script.d.ts.map +1 -0
  756. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/ScriptChunk.d.ts +8 -0
  757. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/ScriptChunk.d.ts.map +1 -0
  758. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/ScriptEvaluationError.d.ts +24 -0
  759. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/ScriptEvaluationError.d.ts.map +1 -0
  760. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/ScriptTemplate.d.ts +29 -0
  761. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/ScriptTemplate.d.ts.map +1 -0
  762. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/ScriptTemplateUnlock.d.ts +7 -0
  763. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/ScriptTemplateUnlock.d.ts.map +1 -0
  764. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/Spend.d.ts +120 -0
  765. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/Spend.d.ts.map +1 -0
  766. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/UnlockingScript.d.ts +25 -0
  767. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/UnlockingScript.d.ts.map +1 -0
  768. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/index.d.ts +11 -0
  769. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/index.d.ts.map +1 -0
  770. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/templates/P2PKH.d.ts +40 -0
  771. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/templates/P2PKH.d.ts.map +1 -0
  772. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/templates/PushDrop.d.ts +56 -0
  773. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/templates/PushDrop.d.ts.map +1 -0
  774. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/templates/RPuzzle.d.ts +47 -0
  775. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -0
  776. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/templates/index.d.ts +4 -0
  777. package/mobile/node_modules/@bsv/sdk/dist/types/src/script/templates/index.d.ts.map +1 -0
  778. package/mobile/node_modules/@bsv/sdk/dist/types/src/storage/StorageDownloader.d.ts +25 -0
  779. package/mobile/node_modules/@bsv/sdk/dist/types/src/storage/StorageDownloader.d.ts.map +1 -0
  780. package/mobile/node_modules/@bsv/sdk/dist/types/src/storage/StorageUploader.d.ts +103 -0
  781. package/mobile/node_modules/@bsv/sdk/dist/types/src/storage/StorageUploader.d.ts.map +1 -0
  782. package/mobile/node_modules/@bsv/sdk/dist/types/src/storage/StorageUtils.d.ts +32 -0
  783. package/mobile/node_modules/@bsv/sdk/dist/types/src/storage/StorageUtils.d.ts.map +1 -0
  784. package/mobile/node_modules/@bsv/sdk/dist/types/src/storage/index.d.ts +4 -0
  785. package/mobile/node_modules/@bsv/sdk/dist/types/src/storage/index.d.ts.map +1 -0
  786. package/mobile/node_modules/@bsv/sdk/dist/types/src/totp/index.d.ts +2 -0
  787. package/mobile/node_modules/@bsv/sdk/dist/types/src/totp/index.d.ts.map +1 -0
  788. package/mobile/node_modules/@bsv/sdk/dist/types/src/totp/totp.d.ts +42 -0
  789. package/mobile/node_modules/@bsv/sdk/dist/types/src/totp/totp.d.ts.map +1 -0
  790. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/Beef.d.ts +248 -0
  791. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/Beef.d.ts.map +1 -0
  792. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/BeefParty.d.ts +73 -0
  793. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/BeefParty.d.ts.map +1 -0
  794. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/BeefTx.d.ts +43 -0
  795. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/BeefTx.d.ts.map +1 -0
  796. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/Broadcaster.d.ts +55 -0
  797. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/Broadcaster.d.ts.map +1 -0
  798. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/ChainTracker.d.ts +29 -0
  799. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/ChainTracker.d.ts.map +1 -0
  800. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/FeeModel.d.ts +12 -0
  801. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/FeeModel.d.ts.map +1 -0
  802. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/MerklePath.d.ts +125 -0
  803. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/MerklePath.d.ts.map +1 -0
  804. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/Transaction.d.ts +299 -0
  805. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/Transaction.d.ts.map +1 -0
  806. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/TransactionInput.d.ts +63 -0
  807. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/TransactionInput.d.ts.map +1 -0
  808. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/TransactionOutput.d.ts +36 -0
  809. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -0
  810. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/ARC.d.ts +64 -0
  811. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -0
  812. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts +4 -0
  813. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -0
  814. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/Teranode.d.ts +25 -0
  815. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/Teranode.d.ts.map +1 -0
  816. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts +26 -0
  817. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -0
  818. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/index.d.ts +6 -0
  819. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/broadcasters/index.d.ts.map +1 -0
  820. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/chaintrackers/BlockHeadersService.d.ts +46 -0
  821. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/chaintrackers/BlockHeadersService.d.ts.map +1 -0
  822. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts +3 -0
  823. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -0
  824. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts +29 -0
  825. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -0
  826. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/chaintrackers/index.d.ts +5 -0
  827. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/chaintrackers/index.d.ts.map +1 -0
  828. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/fee-models/LivePolicy.d.ts +41 -0
  829. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/fee-models/LivePolicy.d.ts.map +1 -0
  830. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +26 -0
  831. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -0
  832. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/fee-models/index.d.ts +3 -0
  833. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/fee-models/index.d.ts.map +1 -0
  834. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/BinaryFetchClient.d.ts +48 -0
  835. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/BinaryFetchClient.d.ts.map +1 -0
  836. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/DefaultHttpClient.d.ts +8 -0
  837. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -0
  838. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/FetchHttpClient.d.ts +29 -0
  839. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -0
  840. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/HttpClient.d.ts +45 -0
  841. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -0
  842. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/NodejsHttpClient.d.ts +20 -0
  843. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -0
  844. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/index.d.ts +8 -0
  845. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/http/index.d.ts.map +1 -0
  846. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/index.d.ts +11 -0
  847. package/mobile/node_modules/@bsv/sdk/dist/types/src/transaction/index.d.ts.map +1 -0
  848. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/CachedKeyDeriver.d.ts +102 -0
  849. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -0
  850. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/KeyDeriver.d.ts +130 -0
  851. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -0
  852. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/ProtoWallet.d.ts +27 -0
  853. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -0
  854. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WERR_INSUFFICIENT_FUNDS.d.ts +19 -0
  855. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WERR_INSUFFICIENT_FUNDS.d.ts.map +1 -0
  856. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WERR_INVALID_PARAMETER.d.ts +13 -0
  857. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WERR_INVALID_PARAMETER.d.ts.map +1 -0
  858. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WERR_REVIEW_ACTIONS.d.ts +23 -0
  859. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WERR_REVIEW_ACTIONS.d.ts.map +1 -0
  860. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/Wallet.interfaces.d.ts +1068 -0
  861. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -0
  862. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WalletClient.d.ts +180 -0
  863. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WalletClient.d.ts.map +1 -0
  864. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WalletError.d.ts +28 -0
  865. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WalletError.d.ts.map +1 -0
  866. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WalletLoggerInterface.d.ts +79 -0
  867. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/WalletLoggerInterface.d.ts.map +1 -0
  868. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/index.d.ts +14 -0
  869. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/index.d.ts.map +1 -0
  870. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +189 -0
  871. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -0
  872. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts +9 -0
  873. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -0
  874. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/ReactNativeWebView.d.ts +412 -0
  875. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/ReactNativeWebView.d.ts.map +1 -0
  876. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/WalletWire.d.ts +7 -0
  877. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/WalletWire.d.ts.map +1 -0
  878. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/WalletWireCalls.d.ts +33 -0
  879. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/WalletWireCalls.d.ts.map +1 -0
  880. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts +18 -0
  881. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -0
  882. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +196 -0
  883. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -0
  884. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/XDM.d.ts +412 -0
  885. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -0
  886. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/index.d.ts +10 -0
  887. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/index.d.ts.map +1 -0
  888. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/utils/toOriginHeader.d.ts +2 -0
  889. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/utils/toOriginHeader.d.ts.map +1 -0
  890. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/window.CWI.d.ts +410 -0
  891. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -0
  892. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/validationHelpers.d.ts +514 -0
  893. package/mobile/node_modules/@bsv/sdk/dist/types/src/wallet/validationHelpers.d.ts.map +1 -0
  894. package/mobile/node_modules/@bsv/sdk/dist/types/tsconfig.types.tsbuildinfo +1 -0
  895. package/mobile/node_modules/@bsv/sdk/dist/umd/bundle.js +20 -0
  896. package/mobile/node_modules/@bsv/sdk/dist/umd/bundle.js.map +1 -0
  897. package/mobile/node_modules/@bsv/sdk/docs/fast-docs.png +0 -0
  898. package/mobile/node_modules/@bsv/sdk/docs/index.md +77 -0
  899. package/mobile/node_modules/@bsv/sdk/docs/performance.md +70 -0
  900. package/mobile/node_modules/@bsv/sdk/docs/reference/auth.md +1330 -0
  901. package/mobile/node_modules/@bsv/sdk/docs/reference/compat.md +2951 -0
  902. package/mobile/node_modules/@bsv/sdk/docs/reference/identity.md +383 -0
  903. package/mobile/node_modules/@bsv/sdk/docs/reference/kvstore.md +648 -0
  904. package/mobile/node_modules/@bsv/sdk/docs/reference/messages.md +158 -0
  905. package/mobile/node_modules/@bsv/sdk/docs/reference/overlay-tools.md +691 -0
  906. package/mobile/node_modules/@bsv/sdk/docs/reference/primitives.md +6262 -0
  907. package/mobile/node_modules/@bsv/sdk/docs/reference/registry.md +408 -0
  908. package/mobile/node_modules/@bsv/sdk/docs/reference/script.md +942 -0
  909. package/mobile/node_modules/@bsv/sdk/docs/reference/storage.md +411 -0
  910. package/mobile/node_modules/@bsv/sdk/docs/reference/totp.md +121 -0
  911. package/mobile/node_modules/@bsv/sdk/docs/reference/transaction.md +2332 -0
  912. package/mobile/node_modules/@bsv/sdk/docs/reference/wallet.md +6054 -0
  913. package/mobile/node_modules/@bsv/sdk/docs/requirements.txt +3 -0
  914. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/LICENSE +21 -0
  915. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/favicon-16x16.png +0 -0
  916. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/favicon-32x32.png +0 -0
  917. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/index.css +16 -0
  918. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/oauth2-redirect.html +79 -0
  919. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-initializer.js +20 -0
  920. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui-bundle.js +2 -0
  921. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui-bundle.js.map +1 -0
  922. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui-es-bundle-core.js +3 -0
  923. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui-es-bundle-core.js.map +1 -0
  924. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui-es-bundle.js +2 -0
  925. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui-es-bundle.js.map +1 -0
  926. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui-standalone-preset.js +2 -0
  927. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui-standalone-preset.js.map +1 -0
  928. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui.css +3 -0
  929. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui.css.map +1 -0
  930. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui.js +2 -0
  931. package/mobile/node_modules/@bsv/sdk/docs/swagger/dist/swagger-ui.js.map +1 -0
  932. package/mobile/node_modules/@bsv/sdk/docs/swagger/index.html +19 -0
  933. package/mobile/node_modules/@bsv/sdk/docs/swagger/swagger-ui.version +1 -0
  934. package/mobile/node_modules/@bsv/sdk/docs/swagger/swagger.yaml +1960 -0
  935. package/mobile/node_modules/@bsv/sdk/docs/swagger.png +0 -0
  936. package/mobile/node_modules/@bsv/sdk/mod.ts +19 -0
  937. package/mobile/node_modules/@bsv/sdk/package.json +268 -0
  938. package/mobile/node_modules/@bsv/sdk/src/auth/Peer.ts +875 -0
  939. package/mobile/node_modules/@bsv/sdk/src/auth/SessionManager.ts +145 -0
  940. package/mobile/node_modules/@bsv/sdk/src/auth/__tests/Peer.test.ts +1059 -0
  941. package/mobile/node_modules/@bsv/sdk/src/auth/__tests/SessionManager.test.ts +136 -0
  942. package/mobile/node_modules/@bsv/sdk/src/auth/__tests/build.test.ts +11 -0
  943. package/mobile/node_modules/@bsv/sdk/src/auth/certificates/Certificate.ts +311 -0
  944. package/mobile/node_modules/@bsv/sdk/src/auth/certificates/MasterCertificate.ts +360 -0
  945. package/mobile/node_modules/@bsv/sdk/src/auth/certificates/VerifiableCertificate.ts +125 -0
  946. package/mobile/node_modules/@bsv/sdk/src/auth/certificates/__tests/Certificate.test.ts +386 -0
  947. package/mobile/node_modules/@bsv/sdk/src/auth/certificates/__tests/CompletedProtoWallet.ts +202 -0
  948. package/mobile/node_modules/@bsv/sdk/src/auth/certificates/__tests/MasterCertificate.test.ts +424 -0
  949. package/mobile/node_modules/@bsv/sdk/src/auth/certificates/__tests/VerifiableCertificate.test.ts +179 -0
  950. package/mobile/node_modules/@bsv/sdk/src/auth/certificates/index.ts +4 -0
  951. package/mobile/node_modules/@bsv/sdk/src/auth/clients/AuthFetch.ts +881 -0
  952. package/mobile/node_modules/@bsv/sdk/src/auth/clients/__tests__/AuthFetch.test.ts +262 -0
  953. package/mobile/node_modules/@bsv/sdk/src/auth/clients/index.ts +1 -0
  954. package/mobile/node_modules/@bsv/sdk/src/auth/index.ts +7 -0
  955. package/mobile/node_modules/@bsv/sdk/src/auth/transports/SimplifiedFetchTransport.ts +446 -0
  956. package/mobile/node_modules/@bsv/sdk/src/auth/transports/__tests__/SimplifiedFetchTransport.test.ts +126 -0
  957. package/mobile/node_modules/@bsv/sdk/src/auth/transports/index.ts +1 -0
  958. package/mobile/node_modules/@bsv/sdk/src/auth/types.ts +42 -0
  959. package/mobile/node_modules/@bsv/sdk/src/auth/utils/__tests/cryptononce.test.ts +146 -0
  960. package/mobile/node_modules/@bsv/sdk/src/auth/utils/__tests/getVerifiableCertificates.test.ts +152 -0
  961. package/mobile/node_modules/@bsv/sdk/src/auth/utils/__tests/validateCertificates.test.ts +164 -0
  962. package/mobile/node_modules/@bsv/sdk/src/auth/utils/createNonce.ts +33 -0
  963. package/mobile/node_modules/@bsv/sdk/src/auth/utils/getVerifiableCertificates.ts +46 -0
  964. package/mobile/node_modules/@bsv/sdk/src/auth/utils/index.ts +4 -0
  965. package/mobile/node_modules/@bsv/sdk/src/auth/utils/validateCertificates.ts +73 -0
  966. package/mobile/node_modules/@bsv/sdk/src/auth/utils/verifyNonce.ts +34 -0
  967. package/mobile/node_modules/@bsv/sdk/src/compat/BSM.ts +66 -0
  968. package/mobile/node_modules/@bsv/sdk/src/compat/ECIES.ts +701 -0
  969. package/mobile/node_modules/@bsv/sdk/src/compat/HD.ts +386 -0
  970. package/mobile/node_modules/@bsv/sdk/src/compat/Mnemonic.ts +308 -0
  971. package/mobile/node_modules/@bsv/sdk/src/compat/Utxo.ts +59 -0
  972. package/mobile/node_modules/@bsv/sdk/src/compat/__tests/BSM.test.ts +80 -0
  973. package/mobile/node_modules/@bsv/sdk/src/compat/__tests/ECIES.test.ts +184 -0
  974. package/mobile/node_modules/@bsv/sdk/src/compat/__tests/HD.test.ts +417 -0
  975. package/mobile/node_modules/@bsv/sdk/src/compat/__tests/Mnemonic.test.ts +175 -0
  976. package/mobile/node_modules/@bsv/sdk/src/compat/__tests/Mnemonic.vectors.ts +227 -0
  977. package/mobile/node_modules/@bsv/sdk/src/compat/bip-39-wordlist-en.ts +2053 -0
  978. package/mobile/node_modules/@bsv/sdk/src/compat/index.ts +5 -0
  979. package/mobile/node_modules/@bsv/sdk/src/identity/ContactsManager.ts +376 -0
  980. package/mobile/node_modules/@bsv/sdk/src/identity/IdentityClient.ts +497 -0
  981. package/mobile/node_modules/@bsv/sdk/src/identity/README.md +92 -0
  982. package/mobile/node_modules/@bsv/sdk/src/identity/__tests/IdentityClient.test.ts +772 -0
  983. package/mobile/node_modules/@bsv/sdk/src/identity/index.ts +2 -0
  984. package/mobile/node_modules/@bsv/sdk/src/identity/types/index.ts +46 -0
  985. package/mobile/node_modules/@bsv/sdk/src/kvstore/GlobalKVStore.ts +523 -0
  986. package/mobile/node_modules/@bsv/sdk/src/kvstore/LocalKVStore.ts +357 -0
  987. package/mobile/node_modules/@bsv/sdk/src/kvstore/__tests/GlobalKVStore.test.ts +1104 -0
  988. package/mobile/node_modules/@bsv/sdk/src/kvstore/__tests/LocalKVStore.test.ts +686 -0
  989. package/mobile/node_modules/@bsv/sdk/src/kvstore/index.ts +2 -0
  990. package/mobile/node_modules/@bsv/sdk/src/kvstore/kvStoreInterpreter.ts +54 -0
  991. package/mobile/node_modules/@bsv/sdk/src/kvstore/types.ts +126 -0
  992. package/mobile/node_modules/@bsv/sdk/src/messages/EncryptedMessage.ts +74 -0
  993. package/mobile/node_modules/@bsv/sdk/src/messages/SignedMessage.ts +93 -0
  994. package/mobile/node_modules/@bsv/sdk/src/messages/__tests/EncryptedMessage.test.ts +61 -0
  995. package/mobile/node_modules/@bsv/sdk/src/messages/__tests/SignedMessage.test.ts +59 -0
  996. package/mobile/node_modules/@bsv/sdk/src/messages/index.ts +2 -0
  997. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/Historian.ts +195 -0
  998. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/HostReputationTracker.ts +232 -0
  999. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/LookupResolver.ts +499 -0
  1000. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/OverlayAdminTokenTemplate.ts +108 -0
  1001. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/SHIPBroadcaster.ts +504 -0
  1002. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/__tests/Historian.test.ts +690 -0
  1003. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/__tests/LookupResolver.test.ts +1805 -0
  1004. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +97 -0
  1005. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +1304 -0
  1006. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/index.ts +11 -0
  1007. package/mobile/node_modules/@bsv/sdk/src/overlay-tools/withDoubleSpendRetry.ts +71 -0
  1008. package/mobile/node_modules/@bsv/sdk/src/primitives/AESGCM.ts +457 -0
  1009. package/mobile/node_modules/@bsv/sdk/src/primitives/BasePoint.ts +21 -0
  1010. package/mobile/node_modules/@bsv/sdk/src/primitives/BigNumber.ts +1368 -0
  1011. package/mobile/node_modules/@bsv/sdk/src/primitives/Curve.ts +1234 -0
  1012. package/mobile/node_modules/@bsv/sdk/src/primitives/DRBG.ts +118 -0
  1013. package/mobile/node_modules/@bsv/sdk/src/primitives/ECDSA.ts +208 -0
  1014. package/mobile/node_modules/@bsv/sdk/src/primitives/Hash.ts +1924 -0
  1015. package/mobile/node_modules/@bsv/sdk/src/primitives/JacobianPoint.ts +475 -0
  1016. package/mobile/node_modules/@bsv/sdk/src/primitives/K256.ts +136 -0
  1017. package/mobile/node_modules/@bsv/sdk/src/primitives/Mersenne.ts +119 -0
  1018. package/mobile/node_modules/@bsv/sdk/src/primitives/MontgomoryMethod.ts +160 -0
  1019. package/mobile/node_modules/@bsv/sdk/src/primitives/Point.ts +1200 -0
  1020. package/mobile/node_modules/@bsv/sdk/src/primitives/Polynomial.ts +94 -0
  1021. package/mobile/node_modules/@bsv/sdk/src/primitives/PrivateKey.ts +524 -0
  1022. package/mobile/node_modules/@bsv/sdk/src/primitives/PublicKey.ts +282 -0
  1023. package/mobile/node_modules/@bsv/sdk/src/primitives/Random.ts +101 -0
  1024. package/mobile/node_modules/@bsv/sdk/src/primitives/ReductionContext.ts +528 -0
  1025. package/mobile/node_modules/@bsv/sdk/src/primitives/Schnorr.ts +117 -0
  1026. package/mobile/node_modules/@bsv/sdk/src/primitives/Secp256r1.ts +334 -0
  1027. package/mobile/node_modules/@bsv/sdk/src/primitives/Signature.ts +389 -0
  1028. package/mobile/node_modules/@bsv/sdk/src/primitives/SymmetricKey.ts +102 -0
  1029. package/mobile/node_modules/@bsv/sdk/src/primitives/TransactionSignature.ts +260 -0
  1030. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/AESGCM.test.ts +700 -0
  1031. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BRC42.private.vectors.ts +48 -0
  1032. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BRC42.public.vectors.ts +48 -0
  1033. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BigNumber.arithmatic.test.ts +791 -0
  1034. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BigNumber.binary.test.ts +284 -0
  1035. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BigNumber.constructor.test.ts +216 -0
  1036. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BigNumber.dhGroup.test.ts +22 -0
  1037. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BigNumber.fixtures.ts +272 -0
  1038. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BigNumber.serializers.test.ts +183 -0
  1039. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/BigNumber.utils.test.ts +437 -0
  1040. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/Curve.unit.test.ts +277 -0
  1041. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/DRBG.test.ts +281 -0
  1042. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/DRBG.vectors.ts +137 -0
  1043. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/ECDH.test.ts +38 -0
  1044. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/ECDSA.test.ts +93 -0
  1045. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/HMAC.test.ts +76 -0
  1046. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/Hash.test.ts +256 -0
  1047. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/PBKDF2.vectors.ts +132 -0
  1048. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/PrivateKey.split.test.ts +92 -0
  1049. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/PrivateKey.test.ts +98 -0
  1050. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/PublicKey.test.ts +96 -0
  1051. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/Random.test.ts +35 -0
  1052. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/Reader.test.ts +317 -0
  1053. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/ReductionContext.test.ts +321 -0
  1054. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/Schnorr.test.ts +284 -0
  1055. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/Secp256r1.test.ts +101 -0
  1056. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/SymmetricKey.test.ts +128 -0
  1057. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/SymmetricKey.vectors.ts +48 -0
  1058. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/SymmetricKeyCompatibility.test.ts +150 -0
  1059. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/Writer.test.ts +208 -0
  1060. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/bug-31.test.ts +27 -0
  1061. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/hex.test.ts +57 -0
  1062. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/sighash.vectors.ts +3503 -0
  1063. package/mobile/node_modules/@bsv/sdk/src/primitives/__tests/utils.test.ts +378 -0
  1064. package/mobile/node_modules/@bsv/sdk/src/primitives/hex.ts +35 -0
  1065. package/mobile/node_modules/@bsv/sdk/src/primitives/index.ts +15 -0
  1066. package/mobile/node_modules/@bsv/sdk/src/primitives/utils.ts +953 -0
  1067. package/mobile/node_modules/@bsv/sdk/src/registry/RegistryClient.ts +667 -0
  1068. package/mobile/node_modules/@bsv/sdk/src/registry/__tests/RegistryClient.test.ts +647 -0
  1069. package/mobile/node_modules/@bsv/sdk/src/registry/index.ts +2 -0
  1070. package/mobile/node_modules/@bsv/sdk/src/registry/types/index.ts +131 -0
  1071. package/mobile/node_modules/@bsv/sdk/src/script/LockingScript.ts +30 -0
  1072. package/mobile/node_modules/@bsv/sdk/src/script/OP.ts +218 -0
  1073. package/mobile/node_modules/@bsv/sdk/src/script/Script.ts +591 -0
  1074. package/mobile/node_modules/@bsv/sdk/src/script/ScriptChunk.ts +7 -0
  1075. package/mobile/node_modules/@bsv/sdk/src/script/ScriptEvaluationError.ts +44 -0
  1076. package/mobile/node_modules/@bsv/sdk/src/script/ScriptTemplate.ts +30 -0
  1077. package/mobile/node_modules/@bsv/sdk/src/script/ScriptTemplateUnlock.ts +7 -0
  1078. package/mobile/node_modules/@bsv/sdk/src/script/Spend.ts +1085 -0
  1079. package/mobile/node_modules/@bsv/sdk/src/script/UnlockingScript.ts +30 -0
  1080. package/mobile/node_modules/@bsv/sdk/src/script/__tests/Script.test.ts +429 -0
  1081. package/mobile/node_modules/@bsv/sdk/src/script/__tests/Spend.test.ts +555 -0
  1082. package/mobile/node_modules/@bsv/sdk/src/script/__tests/SpendComplex.test.ts +48 -0
  1083. package/mobile/node_modules/@bsv/sdk/src/script/__tests/script.invalid.vectors.ts +999 -0
  1084. package/mobile/node_modules/@bsv/sdk/src/script/__tests/script.valid.vectors.ts +1178 -0
  1085. package/mobile/node_modules/@bsv/sdk/src/script/__tests/spend.valid.vectors.ts +2295 -0
  1086. package/mobile/node_modules/@bsv/sdk/src/script/index.ts +10 -0
  1087. package/mobile/node_modules/@bsv/sdk/src/script/templates/P2PKH.ts +157 -0
  1088. package/mobile/node_modules/@bsv/sdk/src/script/templates/PushDrop.ts +281 -0
  1089. package/mobile/node_modules/@bsv/sdk/src/script/templates/RPuzzle.ts +161 -0
  1090. package/mobile/node_modules/@bsv/sdk/src/script/templates/__tests/PushDrop.test.ts +263 -0
  1091. package/mobile/node_modules/@bsv/sdk/src/script/templates/index.ts +3 -0
  1092. package/mobile/node_modules/@bsv/sdk/src/storage/StorageDownloader.ts +114 -0
  1093. package/mobile/node_modules/@bsv/sdk/src/storage/StorageUploader.ts +258 -0
  1094. package/mobile/node_modules/@bsv/sdk/src/storage/StorageUtils.ts +74 -0
  1095. package/mobile/node_modules/@bsv/sdk/src/storage/__tests/StorageDownloader.test.ts +236 -0
  1096. package/mobile/node_modules/@bsv/sdk/src/storage/__tests/StorageUploader.test.ts +219 -0
  1097. package/mobile/node_modules/@bsv/sdk/src/storage/__tests/StorageUtils.test.ts +86 -0
  1098. package/mobile/node_modules/@bsv/sdk/src/storage/index.ts +5 -0
  1099. package/mobile/node_modules/@bsv/sdk/src/totp/__tests/totp.test.ts +81 -0
  1100. package/mobile/node_modules/@bsv/sdk/src/totp/index.ts +1 -0
  1101. package/mobile/node_modules/@bsv/sdk/src/totp/totp.ts +138 -0
  1102. package/mobile/node_modules/@bsv/sdk/src/transaction/Beef.ts +935 -0
  1103. package/mobile/node_modules/@bsv/sdk/src/transaction/BeefParty.ts +123 -0
  1104. package/mobile/node_modules/@bsv/sdk/src/transaction/BeefTx.ts +194 -0
  1105. package/mobile/node_modules/@bsv/sdk/src/transaction/Broadcaster.ts +69 -0
  1106. package/mobile/node_modules/@bsv/sdk/src/transaction/ChainTracker.ts +28 -0
  1107. package/mobile/node_modules/@bsv/sdk/src/transaction/FeeModel.ts +12 -0
  1108. package/mobile/node_modules/@bsv/sdk/src/transaction/MerklePath.ts +455 -0
  1109. package/mobile/node_modules/@bsv/sdk/src/transaction/Transaction.ts +1055 -0
  1110. package/mobile/node_modules/@bsv/sdk/src/transaction/TransactionInput.ts +63 -0
  1111. package/mobile/node_modules/@bsv/sdk/src/transaction/TransactionOutput.ts +36 -0
  1112. package/mobile/node_modules/@bsv/sdk/src/transaction/__tests/Beef.test.ts +500 -0
  1113. package/mobile/node_modules/@bsv/sdk/src/transaction/__tests/MerklePath.test.ts +249 -0
  1114. package/mobile/node_modules/@bsv/sdk/src/transaction/__tests/Transaction.test.ts +1419 -0
  1115. package/mobile/node_modules/@bsv/sdk/src/transaction/__tests/bigtx.vectors.ts +5 -0
  1116. package/mobile/node_modules/@bsv/sdk/src/transaction/__tests/bump.invalid.vectors.ts +26 -0
  1117. package/mobile/node_modules/@bsv/sdk/src/transaction/__tests/bump.valid.vectors.ts +8 -0
  1118. package/mobile/node_modules/@bsv/sdk/src/transaction/__tests/tx.invalid.vectors.ts +977 -0
  1119. package/mobile/node_modules/@bsv/sdk/src/transaction/__tests/tx.valid.vectors.ts +1317 -0
  1120. package/mobile/node_modules/@bsv/sdk/src/transaction/broadcasters/ARC.ts +255 -0
  1121. package/mobile/node_modules/@bsv/sdk/src/transaction/broadcasters/DefaultBroadcaster.ts +12 -0
  1122. package/mobile/node_modules/@bsv/sdk/src/transaction/broadcasters/Teranode.ts +77 -0
  1123. package/mobile/node_modules/@bsv/sdk/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +83 -0
  1124. package/mobile/node_modules/@bsv/sdk/src/transaction/broadcasters/__tests/ARC.test.ts +323 -0
  1125. package/mobile/node_modules/@bsv/sdk/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +171 -0
  1126. package/mobile/node_modules/@bsv/sdk/src/transaction/broadcasters/index.ts +5 -0
  1127. package/mobile/node_modules/@bsv/sdk/src/transaction/chaintrackers/BlockHeadersService.ts +138 -0
  1128. package/mobile/node_modules/@bsv/sdk/src/transaction/chaintrackers/DefaultChainTracker.ts +6 -0
  1129. package/mobile/node_modules/@bsv/sdk/src/transaction/chaintrackers/WhatsOnChain.ts +102 -0
  1130. package/mobile/node_modules/@bsv/sdk/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +198 -0
  1131. package/mobile/node_modules/@bsv/sdk/src/transaction/chaintrackers/index.ts +4 -0
  1132. package/mobile/node_modules/@bsv/sdk/src/transaction/fee-models/LivePolicy.ts +97 -0
  1133. package/mobile/node_modules/@bsv/sdk/src/transaction/fee-models/SatoshisPerKilobyte.ts +75 -0
  1134. package/mobile/node_modules/@bsv/sdk/src/transaction/fee-models/__tests/LivePolicy.test.ts +148 -0
  1135. package/mobile/node_modules/@bsv/sdk/src/transaction/fee-models/index.ts +2 -0
  1136. package/mobile/node_modules/@bsv/sdk/src/transaction/http/BinaryFetchClient.ts +141 -0
  1137. package/mobile/node_modules/@bsv/sdk/src/transaction/http/DefaultHttpClient.ts +33 -0
  1138. package/mobile/node_modules/@bsv/sdk/src/transaction/http/FetchHttpClient.ts +57 -0
  1139. package/mobile/node_modules/@bsv/sdk/src/transaction/http/HttpClient.ts +51 -0
  1140. package/mobile/node_modules/@bsv/sdk/src/transaction/http/NodejsHttpClient.ts +67 -0
  1141. package/mobile/node_modules/@bsv/sdk/src/transaction/http/index.ts +11 -0
  1142. package/mobile/node_modules/@bsv/sdk/src/transaction/index.ts +14 -0
  1143. package/mobile/node_modules/@bsv/sdk/src/wallet/CachedKeyDeriver.ts +287 -0
  1144. package/mobile/node_modules/@bsv/sdk/src/wallet/KeyDeriver.ts +342 -0
  1145. package/mobile/node_modules/@bsv/sdk/src/wallet/ProtoWallet.ts +300 -0
  1146. package/mobile/node_modules/@bsv/sdk/src/wallet/WERR_INSUFFICIENT_FUNDS.ts +25 -0
  1147. package/mobile/node_modules/@bsv/sdk/src/wallet/WERR_INVALID_PARAMETER.ts +20 -0
  1148. package/mobile/node_modules/@bsv/sdk/src/wallet/WERR_REVIEW_ACTIONS.ts +30 -0
  1149. package/mobile/node_modules/@bsv/sdk/src/wallet/Wallet.interfaces.ts +1308 -0
  1150. package/mobile/node_modules/@bsv/sdk/src/wallet/WalletClient.ts +504 -0
  1151. package/mobile/node_modules/@bsv/sdk/src/wallet/WalletError.ts +81 -0
  1152. package/mobile/node_modules/@bsv/sdk/src/wallet/WalletLoggerInterface.ts +85 -0
  1153. package/mobile/node_modules/@bsv/sdk/src/wallet/__tests/CachedKeyDeriver.test.ts +381 -0
  1154. package/mobile/node_modules/@bsv/sdk/src/wallet/__tests/KeyDeriver.test.ts +221 -0
  1155. package/mobile/node_modules/@bsv/sdk/src/wallet/__tests/ProtoWallet.test.ts +592 -0
  1156. package/mobile/node_modules/@bsv/sdk/src/wallet/__tests/WalletClient.test.ts +31 -0
  1157. package/mobile/node_modules/@bsv/sdk/src/wallet/index.ts +14 -0
  1158. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/HTTPWalletJSON.ts +364 -0
  1159. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/HTTPWalletWire.ts +51 -0
  1160. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/ReactNativeWebView.ts +560 -0
  1161. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/WalletWire.ts +6 -0
  1162. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/WalletWireCalls.ts +34 -0
  1163. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/WalletWireProcessor.ts +2206 -0
  1164. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/WalletWireTransceiver.ts +2032 -0
  1165. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/XDM.ts +547 -0
  1166. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/__tests/WalletWire.integration.test.ts +2353 -0
  1167. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/__tests/XDM.test.ts +660 -0
  1168. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/__tests/toOriginHeader.test.ts +34 -0
  1169. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/index.ts +9 -0
  1170. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/utils/toOriginHeader.ts +15 -0
  1171. package/mobile/node_modules/@bsv/sdk/src/wallet/substrates/window.CWI.ts +593 -0
  1172. package/mobile/node_modules/@bsv/sdk/src/wallet/validationHelpers.ts +1215 -0
  1173. package/mobile/out/src/sdk/types.d.ts +1 -1
  1174. package/mobile/out/src/sdk/types.js +1 -1
  1175. package/mobile/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  1176. package/mobile/out/src/storage/methods/ListOutputsSpecOp.js +2 -0
  1177. package/mobile/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  1178. package/mobile/package-lock.json +6 -6
  1179. package/mobile/package.json +2 -2
  1180. package/out/src/sdk/types.d.ts +1 -1
  1181. package/out/src/sdk/types.js +1 -1
  1182. package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
  1183. package/out/src/storage/methods/ListOutputsSpecOp.js +2 -0
  1184. package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
  1185. package/out/test/Wallet/local/localWallet2.man.test.js +3 -2
  1186. package/out/test/Wallet/local/localWallet2.man.test.js.map +1 -1
  1187. package/out/test/Wallet/support/operations.man.test.js +11 -4
  1188. package/out/test/Wallet/support/operations.man.test.js.map +1 -1
  1189. package/out/tsconfig.all.tsbuildinfo +1 -1
  1190. package/package.json +2 -2
  1191. package/src/sdk/types.ts +1 -1
  1192. package/src/storage/methods/ListOutputsSpecOp.ts +1 -0
  1193. package/test/Wallet/local/localWallet2.man.test.ts +2 -2
  1194. package/test/Wallet/support/operations.man.test.ts +11 -4
@@ -0,0 +1,2353 @@
1
+ import { CompletedProtoWallet } from '../../../auth/certificates/__tests/CompletedProtoWallet'
2
+ import { Utils, PrivateKey, Hash } from '../../../primitives/index'
3
+ import WalletWireTransceiver from '../../../wallet/substrates/WalletWireTransceiver'
4
+ import WalletWireProcessor from '../../../wallet/substrates/WalletWireProcessor'
5
+
6
+ const sampleData = [3, 1, 4, 1, 5, 9]
7
+
8
+ describe('WalletWire Integration Tests', () => {
9
+ /**
10
+ * This is a copy of the test suite for CompletedProtoWallet, but instead of using a CompletedProtoWallet directly, we're using it over the WalletWire.
11
+ * This serves as an imperfect but still useful way to ensure that the WalletWire doesn't contain serialization or deserialization issues.
12
+ */
13
+ describe('ProtoWallet Over Wallet Wire', () => {
14
+ it('Throws when functions are not supported', async () => {
15
+ const wallet = new WalletWireTransceiver(
16
+ new WalletWireProcessor(new CompletedProtoWallet('anyone'))
17
+ )
18
+ await expect(() => {
19
+ return (wallet as any).createAction()
20
+ }).rejects.toThrow()
21
+ await expect(() => {
22
+ return (wallet as any).abortAction()
23
+ }).rejects.toThrow()
24
+ await expect(() => {
25
+ return (wallet as any).signAction()
26
+ }).rejects.toThrow()
27
+ await expect(() => {
28
+ return (wallet as any).listOutputs()
29
+ }).rejects.toThrow()
30
+ await expect(() => {
31
+ return (wallet as any).relinquishOutput()
32
+ }).rejects.toThrow()
33
+ await expect(() => {
34
+ return (wallet as any).listActions()
35
+ }).rejects.toThrow()
36
+ await expect(() => {
37
+ return (wallet as any).internalizeAction()
38
+ }).rejects.toThrow()
39
+ await expect(() => {
40
+ return (wallet as any).acquireCertificate()
41
+ }).rejects.toThrow()
42
+ await expect(() => {
43
+ return (wallet as any).proveCertificate()
44
+ }).rejects.toThrow()
45
+ await expect(() => {
46
+ return (wallet as any).listCertificates()
47
+ }).rejects.toThrow()
48
+ await expect(() => {
49
+ return (wallet as any).relinquishCertificate()
50
+ }).rejects.toThrow()
51
+ await expect(() => {
52
+ return (wallet as any).getHeight()
53
+ }).rejects.toThrow()
54
+ await expect(() => {
55
+ return (wallet as any).getHeaderForHeight()
56
+ }).rejects.toThrow()
57
+ // TODO: Remove these two from the throw list once they are implemented.
58
+ await expect(() => {
59
+ return (wallet as any).discoverByIdentityKey()
60
+ }).rejects.toThrow()
61
+ await expect(() => {
62
+ return (wallet as any).discoverByAttributes()
63
+ }).rejects.toThrow()
64
+ })
65
+ it('Validates the BRC-3 compliance vector', async () => {
66
+ const wallet = new WalletWireTransceiver(
67
+ new WalletWireProcessor(new CompletedProtoWallet('anyone'))
68
+ )
69
+ const { valid } = await wallet.verifySignature({
70
+ data: Utils.toArray('BRC-3 Compliance Validated!', 'utf8'),
71
+ signature: [
72
+ 48, 68, 2, 32, 43, 34, 58, 156, 219, 32, 50, 70, 29, 240, 155, 137,
73
+ 88, 60, 200, 95, 243, 198, 201, 21, 56, 82, 141, 112, 69, 196, 170,
74
+ 73, 156, 6, 44, 48, 2, 32, 118, 125, 254, 201, 44, 87, 177, 170, 93,
75
+ 11, 193, 134, 18, 70, 9, 31, 234, 27, 170, 177, 54, 96, 181, 140, 166,
76
+ 196, 144, 14, 230, 118, 106, 105
77
+ ],
78
+ protocolID: [2, 'BRC3 Test'],
79
+ keyID: '42',
80
+ counterparty:
81
+ '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
82
+ })
83
+ expect(valid).toBe(true)
84
+ })
85
+ it('Validates the BRC-2 HMAC compliance vector', async () => {
86
+ const wallet = new WalletWireTransceiver(
87
+ new WalletWireProcessor(
88
+ new CompletedProtoWallet(
89
+ new PrivateKey(
90
+ '6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8',
91
+ 'hex'
92
+ )
93
+ )
94
+ )
95
+ )
96
+ const { valid } = await wallet.verifyHmac({
97
+ data: Utils.toArray('BRC-2 HMAC Compliance Validated!', 'utf8'),
98
+ hmac: [
99
+ 81, 240, 18, 153, 163, 45, 174, 85, 9, 246, 142, 125, 209, 133, 82,
100
+ 76, 254, 103, 46, 182, 86, 59, 219, 61, 126, 30, 176, 232, 233, 100,
101
+ 234, 14
102
+ ],
103
+ protocolID: [2, 'BRC2 Test'],
104
+ keyID: '42',
105
+ counterparty:
106
+ '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
107
+ })
108
+ expect(valid).toBe(true)
109
+ })
110
+ it('Validates the BRC-2 Encryption compliance vector', async () => {
111
+ const wallet = new WalletWireTransceiver(
112
+ new WalletWireProcessor(
113
+ new CompletedProtoWallet(
114
+ new PrivateKey(
115
+ '6a2991c9de20e38b31d7ea147bf55f5039e4bbc073160f5e0d541d1f17e321b8',
116
+ 'hex'
117
+ )
118
+ )
119
+ )
120
+ )
121
+ const { plaintext } = await wallet.decrypt({
122
+ ciphertext: [
123
+ 252, 203, 216, 184, 29, 161, 223, 212, 16, 193, 94, 99, 31, 140, 99,
124
+ 43, 61, 236, 184, 67, 54, 105, 199, 47, 11, 19, 184, 127, 2, 165, 125,
125
+ 9, 188, 195, 196, 39, 120, 130, 213, 95, 186, 89, 64, 28, 1, 80, 20,
126
+ 213, 159, 133, 98, 253, 128, 105, 113, 247, 197, 152, 236, 64, 166,
127
+ 207, 113, 134, 65, 38, 58, 24, 127, 145, 140, 206, 47, 70, 146, 84,
128
+ 186, 72, 95, 35, 154, 112, 178, 55, 72, 124
129
+ ],
130
+ protocolID: [2, 'BRC2 Test'],
131
+ keyID: '42',
132
+ counterparty:
133
+ '0294c479f762f6baa97fbcd4393564c1d7bd8336ebd15928135bbcf575cd1a71a1'
134
+ })
135
+ expect(Utils.toUTF8(plaintext)).toEqual(
136
+ 'BRC-2 Encryption Compliance Validated!'
137
+ )
138
+ })
139
+ it('Encrypts messages decryptable by the counterparty', async () => {
140
+ const userKey = PrivateKey.fromRandom()
141
+ const counterpartyKey = PrivateKey.fromRandom()
142
+ const user = new WalletWireTransceiver(
143
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
144
+ )
145
+ const counterparty = new WalletWireTransceiver(
146
+ new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
147
+ )
148
+ const { ciphertext } = await user.encrypt({
149
+ plaintext: sampleData,
150
+ protocolID: [2, 'tests'],
151
+ keyID: '4',
152
+ counterparty: counterpartyKey.toPublicKey().toString()
153
+ })
154
+ const { plaintext } = await counterparty.decrypt({
155
+ ciphertext,
156
+ protocolID: [2, 'tests'],
157
+ keyID: '4',
158
+ counterparty: userKey.toPublicKey().toString()
159
+ })
160
+ expect(plaintext).toEqual(sampleData)
161
+ expect(ciphertext).not.toEqual(plaintext)
162
+ })
163
+ it('Fails to decryupt messages for the wrong protocol, key, and counterparty', async () => {
164
+ const userKey = PrivateKey.fromRandom()
165
+ const counterpartyKey = PrivateKey.fromRandom()
166
+ const user = new WalletWireTransceiver(
167
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
168
+ )
169
+ const counterparty = new WalletWireTransceiver(
170
+ new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
171
+ )
172
+ const { ciphertext } = await user.encrypt({
173
+ plaintext: sampleData,
174
+ protocolID: [2, 'tests'],
175
+ keyID: '4',
176
+ counterparty: counterpartyKey.toPublicKey().toString()
177
+ })
178
+ await expect(
179
+ async () =>
180
+ await counterparty.decrypt({
181
+ ciphertext,
182
+ protocolID: [1, 'tests'],
183
+ keyID: '4',
184
+ counterparty: userKey.toPublicKey().toString()
185
+ })
186
+ ).rejects.toThrow()
187
+ await expect(
188
+ async () =>
189
+ await counterparty.decrypt({
190
+ ciphertext,
191
+ protocolID: [2, 'tests'],
192
+ keyID: '5',
193
+ counterparty: userKey.toPublicKey().toString()
194
+ })
195
+ ).rejects.toThrow()
196
+ await expect(
197
+ async () =>
198
+ await counterparty.decrypt({
199
+ ciphertext,
200
+ protocolID: [2, 'tests'],
201
+ keyID: '4',
202
+ counterparty: counterpartyKey.toPublicKey().toString()
203
+ })
204
+ ).rejects.toThrow()
205
+ })
206
+ it('Correctly derives keys for a counterparty', async () => {
207
+ const userKey = PrivateKey.fromRandom()
208
+ const counterpartyKey = PrivateKey.fromRandom()
209
+ const user = new WalletWireTransceiver(
210
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
211
+ )
212
+ const counterparty = new WalletWireTransceiver(
213
+ new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
214
+ )
215
+ const { publicKey: identityKey } = await user.getPublicKey({
216
+ identityKey: true
217
+ })
218
+ expect(identityKey).toEqual(userKey.toPublicKey().toString())
219
+ const { publicKey: derivedForCounterparty } = await user.getPublicKey({
220
+ protocolID: [2, 'tests'],
221
+ keyID: '4',
222
+ counterparty: counterpartyKey.toPublicKey().toString()
223
+ })
224
+ const { publicKey: derivedByCounterparty } =
225
+ await counterparty.getPublicKey({
226
+ protocolID: [2, 'tests'],
227
+ keyID: '4',
228
+ counterparty: userKey.toPublicKey().toString(),
229
+ forSelf: true
230
+ })
231
+ expect(derivedForCounterparty).toEqual(derivedByCounterparty)
232
+ })
233
+ it('Signs messages verifiable by the counterparty', async () => {
234
+ const userKey = PrivateKey.fromRandom()
235
+ const counterpartyKey = PrivateKey.fromRandom()
236
+ const user = new WalletWireTransceiver(
237
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
238
+ )
239
+ const counterparty = new WalletWireTransceiver(
240
+ new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
241
+ )
242
+ const { signature } = await user.createSignature({
243
+ data: sampleData,
244
+ protocolID: [2, 'tests'],
245
+ keyID: '4',
246
+ counterparty: counterpartyKey.toPublicKey().toString()
247
+ })
248
+ const { valid } = await counterparty.verifySignature({
249
+ signature,
250
+ data: sampleData,
251
+ protocolID: [2, 'tests'],
252
+ keyID: '4',
253
+ counterparty: userKey.toPublicKey().toString()
254
+ })
255
+ expect(valid).toEqual(true)
256
+ expect(signature.length).not.toEqual(0)
257
+ })
258
+ it('Directly signs hash of message verifiable by the counterparty', async () => {
259
+ const userKey = PrivateKey.fromRandom()
260
+ const counterpartyKey = PrivateKey.fromRandom()
261
+ const user = new WalletWireTransceiver(
262
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
263
+ )
264
+ const counterparty = new WalletWireTransceiver(
265
+ new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
266
+ )
267
+ const { signature } = await user.createSignature({
268
+ hashToDirectlySign: Hash.sha256(sampleData),
269
+ protocolID: [2, 'tests'],
270
+ keyID: '4',
271
+ counterparty: counterpartyKey.toPublicKey().toString()
272
+ })
273
+ const { valid } = await counterparty.verifySignature({
274
+ signature,
275
+ data: sampleData,
276
+ protocolID: [2, 'tests'],
277
+ keyID: '4',
278
+ counterparty: userKey.toPublicKey().toString()
279
+ })
280
+ expect(valid).toEqual(true)
281
+ const { valid: hashValid } = await counterparty.verifySignature({
282
+ signature,
283
+ hashToDirectlyVerify: Hash.sha256(sampleData),
284
+ protocolID: [2, 'tests'],
285
+ keyID: '4',
286
+ counterparty: userKey.toPublicKey().toString()
287
+ })
288
+ expect(hashValid).toEqual(true)
289
+ expect(signature.length).not.toEqual(0)
290
+ })
291
+ it('Fails to verify signature for the wrong data, protocol, key, and counterparty', async () => {
292
+ const userKey = PrivateKey.fromRandom()
293
+ const counterpartyKey = PrivateKey.fromRandom()
294
+ const user = new WalletWireTransceiver(
295
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
296
+ )
297
+ const counterparty = new WalletWireTransceiver(
298
+ new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
299
+ )
300
+ const { signature } = await user.createSignature({
301
+ data: sampleData,
302
+ protocolID: [2, 'tests'],
303
+ keyID: '4',
304
+ counterparty: counterpartyKey.toPublicKey().toString()
305
+ })
306
+ await expect(
307
+ async () =>
308
+ await counterparty.verifySignature({
309
+ signature,
310
+ data: [0, ...sampleData],
311
+ protocolID: [2, 'tests'],
312
+ keyID: '4',
313
+ counterparty: userKey.toPublicKey().toString()
314
+ })
315
+ ).rejects.toThrow()
316
+ await expect(
317
+ async () =>
318
+ await counterparty.verifySignature({
319
+ signature,
320
+ data: sampleData,
321
+ protocolID: [2, 'wrong'],
322
+ keyID: '4',
323
+ counterparty: userKey.toPublicKey().toString()
324
+ })
325
+ ).rejects.toThrow()
326
+ await expect(
327
+ async () =>
328
+ await counterparty.verifySignature({
329
+ signature,
330
+ data: sampleData,
331
+ protocolID: [2, 'tests'],
332
+ keyID: '2',
333
+ counterparty: userKey.toPublicKey().toString()
334
+ })
335
+ ).rejects.toThrow()
336
+ await expect(
337
+ async () =>
338
+ await counterparty.verifySignature({
339
+ signature,
340
+ data: sampleData,
341
+ protocolID: [2, 'tests'],
342
+ keyID: '4',
343
+ counterparty: counterpartyKey.toPublicKey().toString()
344
+ })
345
+ ).rejects.toThrow()
346
+ })
347
+ it('Computes HMAC over messages verifiable by the counterparty', async () => {
348
+ const userKey = PrivateKey.fromRandom()
349
+ const counterpartyKey = PrivateKey.fromRandom()
350
+ const user = new WalletWireTransceiver(
351
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
352
+ )
353
+ const counterparty = new WalletWireTransceiver(
354
+ new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
355
+ )
356
+ const { hmac } = await user.createHmac({
357
+ data: sampleData,
358
+ protocolID: [2, 'tests'],
359
+ keyID: '4',
360
+ counterparty: counterpartyKey.toPublicKey().toString()
361
+ })
362
+ const { valid } = await counterparty.verifyHmac({
363
+ hmac,
364
+ data: sampleData,
365
+ protocolID: [2, 'tests'],
366
+ keyID: '4',
367
+ counterparty: userKey.toPublicKey().toString()
368
+ })
369
+ expect(valid).toEqual(true)
370
+ expect(hmac.length).toEqual(32)
371
+ })
372
+ it('Fails to verify HMAC for the wrong data, protocol, key, and counterparty', async () => {
373
+ const userKey = PrivateKey.fromRandom()
374
+ const counterpartyKey = PrivateKey.fromRandom()
375
+ const user = new WalletWireTransceiver(
376
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
377
+ )
378
+ const counterparty = new WalletWireTransceiver(
379
+ new WalletWireProcessor(new CompletedProtoWallet(counterpartyKey))
380
+ )
381
+ const { hmac } = await user.createHmac({
382
+ data: sampleData,
383
+ protocolID: [2, 'tests'],
384
+ keyID: '4',
385
+ counterparty: counterpartyKey.toPublicKey().toString()
386
+ })
387
+ await expect(
388
+ async () =>
389
+ await counterparty.verifyHmac({
390
+ hmac,
391
+ data: [0, ...sampleData],
392
+ protocolID: [2, 'tests'],
393
+ keyID: '4',
394
+ counterparty: userKey.toPublicKey().toString()
395
+ })
396
+ ).rejects.toThrow()
397
+ await expect(
398
+ async () =>
399
+ await counterparty.verifyHmac({
400
+ hmac,
401
+ data: sampleData,
402
+ protocolID: [2, 'wrong'],
403
+ keyID: '4',
404
+ counterparty: userKey.toPublicKey().toString()
405
+ })
406
+ ).rejects.toThrow()
407
+ await expect(
408
+ async () =>
409
+ await counterparty.verifyHmac({
410
+ hmac,
411
+ data: sampleData,
412
+ protocolID: [2, 'tests'],
413
+ keyID: '2',
414
+ counterparty: userKey.toPublicKey().toString()
415
+ })
416
+ ).rejects.toThrow()
417
+ await expect(
418
+ async () =>
419
+ await counterparty.verifyHmac({
420
+ hmac,
421
+ data: sampleData,
422
+ protocolID: [2, 'tests'],
423
+ keyID: '4',
424
+ counterparty: counterpartyKey.toPublicKey().toString()
425
+ })
426
+ ).rejects.toThrow()
427
+ })
428
+ it('Uses anyone for creating signatures and self for other operations if no counterparty is provided', async () => {
429
+ const userKey = PrivateKey.fromRandom()
430
+ const user = new WalletWireTransceiver(
431
+ new WalletWireProcessor(new CompletedProtoWallet(userKey))
432
+ )
433
+ const { hmac } = await user.createHmac({
434
+ data: sampleData,
435
+ protocolID: [2, 'tests'],
436
+ keyID: '4'
437
+ })
438
+ const { valid: hmacValid } = await user.verifyHmac({
439
+ hmac,
440
+ data: sampleData,
441
+ protocolID: [2, 'tests'],
442
+ keyID: '4'
443
+ })
444
+ expect(hmacValid).toEqual(true)
445
+ const { valid: explicitSelfHmacValid } = await user.verifyHmac({
446
+ hmac,
447
+ data: sampleData,
448
+ protocolID: [2, 'tests'],
449
+ keyID: '4',
450
+ counterparty: 'self'
451
+ })
452
+ expect(explicitSelfHmacValid).toEqual(true)
453
+ expect(hmac.length).toEqual(32)
454
+ const { signature: anyoneSig } = await user.createSignature({
455
+ data: sampleData,
456
+ protocolID: [2, 'tests'],
457
+ keyID: '4'
458
+ // counterparty=anyone is implicit for creating signatures
459
+ })
460
+ const anyone = new WalletWireTransceiver(
461
+ new WalletWireProcessor(new CompletedProtoWallet('anyone'))
462
+ )
463
+ const { valid: anyoneSigValid } = await anyone.verifySignature({
464
+ signature: anyoneSig,
465
+ data: sampleData,
466
+ protocolID: [2, 'tests'],
467
+ keyID: '4',
468
+ counterparty: userKey.toPublicKey().toString()
469
+ })
470
+ expect(anyoneSigValid).toEqual(true)
471
+ const { signature: selfSig } = await user.createSignature({
472
+ data: sampleData,
473
+ protocolID: [2, 'tests'],
474
+ keyID: '4',
475
+ counterparty: 'self'
476
+ })
477
+ const { valid: selfSigValid } = await user.verifySignature({
478
+ signature: selfSig,
479
+ data: sampleData,
480
+ protocolID: [2, 'tests'],
481
+ keyID: '4'
482
+ // Self is implicit when verifying signatures
483
+ })
484
+ expect(selfSigValid).toEqual(true)
485
+ const { valid: explicitSelfSigValid } = await user.verifySignature({
486
+ signature: selfSig,
487
+ data: sampleData,
488
+ protocolID: [2, 'tests'],
489
+ keyID: '4',
490
+ counterparty: 'self'
491
+ })
492
+ expect(explicitSelfSigValid).toEqual(true)
493
+ const { publicKey } = await user.getPublicKey({
494
+ protocolID: [2, 'tests'],
495
+ keyID: '4'
496
+ })
497
+ const { publicKey: explicitSelfPublicKey } = await user.getPublicKey({
498
+ protocolID: [2, 'tests'],
499
+ keyID: '4',
500
+ counterparty: 'self'
501
+ })
502
+ expect(publicKey).toEqual(explicitSelfPublicKey)
503
+ const { ciphertext } = await user.encrypt({
504
+ plaintext: sampleData,
505
+ protocolID: [2, 'tests'],
506
+ keyID: '4'
507
+ })
508
+ const { plaintext } = await user.decrypt({
509
+ ciphertext,
510
+ protocolID: [2, 'tests'],
511
+ keyID: '4'
512
+ })
513
+ const { plaintext: explicitSelfPlaintext } = await user.decrypt({
514
+ ciphertext,
515
+ protocolID: [2, 'tests'],
516
+ keyID: '4',
517
+ counterparty: 'self'
518
+ })
519
+ expect(plaintext).toEqual(explicitSelfPlaintext)
520
+ expect(plaintext).toEqual(sampleData)
521
+ })
522
+ it('Validates the revealCounterpartyKeyLinkage function', async () => {
523
+ // Initialize keys
524
+ const proverKey = PrivateKey.fromRandom()
525
+ const counterpartyKey = PrivateKey.fromRandom()
526
+ const verifierKey = PrivateKey.fromRandom()
527
+
528
+ // Initialize wallets
529
+ const proverWallet = new WalletWireTransceiver(
530
+ new WalletWireProcessor(new CompletedProtoWallet(proverKey))
531
+ )
532
+ const verifierWallet = new WalletWireTransceiver(
533
+ new WalletWireProcessor(new CompletedProtoWallet(verifierKey))
534
+ )
535
+
536
+ // Prover reveals counterparty key linkage
537
+ const revelation = await proverWallet.revealCounterpartyKeyLinkage({
538
+ counterparty: counterpartyKey.toPublicKey().toString(),
539
+ verifier: verifierKey.toPublicKey().toString()
540
+ })
541
+
542
+ // Verifier decrypts the encrypted linkage
543
+ const { plaintext: linkage } = await verifierWallet.decrypt({
544
+ ciphertext: revelation.encryptedLinkage,
545
+ protocolID: [2, 'counterparty linkage revelation'],
546
+ keyID: revelation.revelationTime,
547
+ counterparty: proverKey.toPublicKey().toString()
548
+ })
549
+
550
+ // Compute expected linkage
551
+ const expectedLinkage = proverKey
552
+ .deriveSharedSecret(counterpartyKey.toPublicKey())
553
+ .encode(true)
554
+
555
+ // Compare linkage and expectedLinkage
556
+ expect(linkage).toEqual(expectedLinkage)
557
+ })
558
+
559
+ it('Validates the revealSpecificKeyLinkage function', async () => {
560
+ // Initialize keys
561
+ const proverKey = PrivateKey.fromRandom()
562
+ const counterpartyKey = PrivateKey.fromRandom()
563
+ const verifierKey = PrivateKey.fromRandom()
564
+
565
+ // Initialize wallets
566
+ const proverWallet = new WalletWireTransceiver(
567
+ new WalletWireProcessor(new CompletedProtoWallet(proverKey))
568
+ )
569
+ const verifierWallet = new WalletWireTransceiver(
570
+ new WalletWireProcessor(new CompletedProtoWallet(verifierKey))
571
+ )
572
+
573
+ const protocolID: [0 | 1 | 2, string] = [0, 'tests']
574
+ const keyID = 'test key id'
575
+
576
+ // Prover reveals specific key linkage
577
+ const revelation = await proverWallet.revealSpecificKeyLinkage({
578
+ counterparty: counterpartyKey.toPublicKey().toString(),
579
+ verifier: verifierKey.toPublicKey().toString(),
580
+ protocolID,
581
+ keyID
582
+ })
583
+ expect(revelation.encryptedLinkageProof).toBeDefined()
584
+ expect(revelation.proofType).toBeDefined()
585
+
586
+ // Verifier decrypts the encrypted linkage
587
+ const { plaintext: linkage } = await verifierWallet.decrypt({
588
+ ciphertext: revelation.encryptedLinkage,
589
+ protocolID: [
590
+ 2,
591
+ `specific linkage revelation ${protocolID[0]} ${protocolID[1]}`
592
+ ],
593
+ keyID,
594
+ counterparty: proverKey.toPublicKey().toString()
595
+ })
596
+
597
+ // Compute expected linkage
598
+ const sharedSecret = proverKey
599
+ .deriveSharedSecret(counterpartyKey.toPublicKey())
600
+ .encode(true)
601
+
602
+ // Function to compute the invoice number
603
+ const computeInvoiceNumber = function (protocolID: [number, string], keyID: string): string {
604
+ const securityLevel = protocolID[0]
605
+ if (
606
+ !Number.isInteger(securityLevel) ||
607
+ securityLevel < 0 ||
608
+ securityLevel > 2
609
+ ) {
610
+ throw new Error('Protocol security level must be 0, 1, or 2')
611
+ }
612
+ const protocolName = protocolID[1].toLowerCase().trim()
613
+ if (keyID.length > 800) {
614
+ throw new Error('Key IDs must be 800 characters or less')
615
+ }
616
+ if (keyID.length < 1) {
617
+ throw new Error('Key IDs must be 1 character or more')
618
+ }
619
+ if (protocolName.length > 400) {
620
+ throw new Error('Protocol names must be 400 characters or less')
621
+ }
622
+ if (protocolName.length < 5) {
623
+ throw new Error('Protocol names must be 5 characters or more')
624
+ }
625
+ if (protocolName.includes(' ')) {
626
+ throw new Error(
627
+ 'Protocol names cannot contain multiple consecutive spaces (" ")'
628
+ )
629
+ }
630
+ if (!/^[a-z0-9 ]+$/g.test(protocolName)) {
631
+ throw new Error(
632
+ 'Protocol names can only contain letters, numbers and spaces'
633
+ )
634
+ }
635
+ if (protocolName.endsWith(' protocol')) {
636
+ throw new Error('No need to end your protocol name with " protocol"')
637
+ }
638
+ return `${securityLevel}-${protocolName}-${keyID}`
639
+ }
640
+ const invoiceNumber = computeInvoiceNumber(protocolID, keyID)
641
+ const invoiceNumberBin = Utils.toArray(invoiceNumber, 'utf8')
642
+
643
+ // Compute expected linkage
644
+ const expectedLinkage = Hash.sha256hmac(sharedSecret, invoiceNumberBin)
645
+
646
+ // Compare linkage and expectedLinkage
647
+ expect(linkage).toEqual(expectedLinkage)
648
+ })
649
+ })
650
+ // Helper function to create a test wallet wire setup
651
+ const createTestWalletWire = (wallet: CompletedProtoWallet): WalletWireTransceiver => {
652
+ const processor = new WalletWireProcessor(wallet)
653
+ const transceiver = new WalletWireTransceiver(processor)
654
+ return transceiver
655
+ }
656
+
657
+ // Mock implementation for methods not supported by CompletedProtoWallet
658
+ const mockUnsupportedMethods = (
659
+ methods: Partial<CompletedProtoWallet>
660
+ ): CompletedProtoWallet => {
661
+ // @ts-expect-error
662
+ const result: CompletedProtoWallet = {
663
+ ...methods
664
+ }
665
+ return result
666
+ }
667
+
668
+ describe('createAction', () => {
669
+ it('should create an action with valid inputs', async () => {
670
+ // Mock the createAction method
671
+ const createActionMock = jest.fn().mockResolvedValue({
672
+ txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
673
+ tx: [1, 2, 3, 4]
674
+ })
675
+ const wallet = createTestWalletWire(
676
+ mockUnsupportedMethods({
677
+ createAction: createActionMock
678
+ })
679
+ )
680
+
681
+ const args = {
682
+ description: 'Test action description',
683
+ outputs: [
684
+ {
685
+ lockingScript: '00', // Sample locking script
686
+ satoshis: 1000,
687
+ outputDescription: 'Test output',
688
+ basket: 'test-basket',
689
+ customInstructions: 'Test instructions',
690
+ tags: ['test-tag']
691
+ }
692
+ ],
693
+ labels: ['test-label']
694
+ }
695
+ const result = await wallet.createAction(args)
696
+ expect(result).toHaveProperty('txid')
697
+ expect(result).toHaveProperty('tx')
698
+ expect(result.tx).toBeInstanceOf(Array)
699
+ expect(createActionMock).toHaveBeenCalledWith(args, '')
700
+ })
701
+
702
+ it('should create an action with minimal inputs (only description)', async () => {
703
+ // Mock the createAction method
704
+ const createActionMock = jest.fn().mockResolvedValue({
705
+ txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806'
706
+ })
707
+ const wallet = createTestWalletWire(
708
+ mockUnsupportedMethods({
709
+ createAction: createActionMock
710
+ })
711
+ )
712
+
713
+ const args = {
714
+ description: 'Minimal action description'
715
+ }
716
+ const result = await wallet.createAction(args)
717
+ expect(result).toHaveProperty('txid')
718
+ expect(result).not.toHaveProperty('tx')
719
+ expect(result).not.toHaveProperty('noSendChange')
720
+ expect(result).not.toHaveProperty('sendWithResults')
721
+ expect(result).not.toHaveProperty('signableTransaction')
722
+ expect(createActionMock).toHaveBeenCalledWith(args, '')
723
+ })
724
+
725
+ it('should create an action and return only txid when returnTXIDOnly is true', async () => {
726
+ // Mock the createAction method
727
+ const createActionMock = jest.fn().mockResolvedValue({
728
+ txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806'
729
+ })
730
+ const wallet = createTestWalletWire(
731
+ mockUnsupportedMethods({
732
+ createAction: createActionMock
733
+ })
734
+ )
735
+
736
+ const args = {
737
+ description: 'Test action with returnTXIDOnly',
738
+ options: {
739
+ returnTXIDOnly: true
740
+ }
741
+ }
742
+ const result = await wallet.createAction(args)
743
+ expect(result).toHaveProperty('txid')
744
+ expect(result).not.toHaveProperty('tx')
745
+ expect(result).not.toHaveProperty('noSendChange')
746
+ expect(result).not.toHaveProperty('sendWithResults')
747
+ expect(result).not.toHaveProperty('signableTransaction')
748
+ expect(createActionMock).toHaveBeenCalledWith(args, '')
749
+ })
750
+
751
+ it('should create an action and return a signableTransaction when noSend is true', async () => {
752
+ // Mock the createAction method
753
+ const createActionMock = jest.fn().mockResolvedValue({
754
+ signableTransaction: {
755
+ tx: [0x01],
756
+ reference: Utils.toBase64([0x01])
757
+ }
758
+ })
759
+ const wallet = createTestWalletWire(
760
+ mockUnsupportedMethods({
761
+ createAction: createActionMock
762
+ })
763
+ )
764
+
765
+ const args = {
766
+ description: 'Test action with noSend',
767
+ options: {
768
+ noSend: true
769
+ }
770
+ }
771
+ const result = await wallet.createAction(args)
772
+ expect(result).toHaveProperty('signableTransaction')
773
+ expect(result.signableTransaction).toHaveProperty('tx')
774
+ expect(result.signableTransaction).toHaveProperty('reference')
775
+ expect(result).not.toHaveProperty('txid')
776
+ expect(result).not.toHaveProperty('tx')
777
+ expect(createActionMock).toHaveBeenCalledWith(args, '')
778
+ })
779
+
780
+ it('should create an action with all options set and handle all return values', async () => {
781
+ // Mock the createAction method
782
+ const createActionMock = jest.fn().mockResolvedValue({
783
+ txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
784
+ tx: [1, 2, 3, 4],
785
+ noSendChange: [
786
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0'
787
+ ],
788
+ sendWithResults: [
789
+ {
790
+ txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
791
+ status: 'sending'
792
+ }
793
+ ],
794
+ signableTransaction: {
795
+ tx: [0x01],
796
+ reference: Utils.toBase64([0x01])
797
+ }
798
+ })
799
+ const wallet = createTestWalletWire(
800
+ mockUnsupportedMethods({
801
+ createAction: createActionMock
802
+ })
803
+ )
804
+
805
+ const args = {
806
+ description: 'Test action with all options',
807
+ inputs: [],
808
+ inputBEEF: [1, 2, 3, 4],
809
+ outputs: [
810
+ {
811
+ lockingScript: '016a',
812
+ satoshis: 1,
813
+ outputDescription: 'This is a test.'
814
+ }
815
+ ],
816
+ lockTime: 0,
817
+ version: 1,
818
+ labels: ['label1', 'label2'],
819
+ options: {
820
+ signAndProcess: false,
821
+ acceptDelayedBroadcast: false,
822
+ trustSelf: 'known' as 'known',
823
+ knownTxids: [
824
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806'
825
+ ],
826
+ returnTXIDOnly: false,
827
+ noSend: true,
828
+ noSendChange: [
829
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0'
830
+ ],
831
+ sendWith: [
832
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806'
833
+ ],
834
+ randomizeOutputs: false
835
+ }
836
+ }
837
+ const result = await wallet.createAction(args)
838
+ expect(result).toHaveProperty('txid')
839
+ expect(result).toHaveProperty('tx')
840
+ expect(result).toHaveProperty('noSendChange')
841
+ expect(result).toHaveProperty('sendWithResults')
842
+ expect(result).toHaveProperty('signableTransaction')
843
+ expect(createActionMock).toHaveBeenCalledWith(args, '')
844
+ })
845
+
846
+ it('should throw an error with invalid inputs', async () => {
847
+ // Mock the createAction method to throw an error
848
+ const createActionMock = jest
849
+ .fn()
850
+ .mockRejectedValue(new Error('Invalid inputs'))
851
+ const wallet = createTestWalletWire(
852
+ mockUnsupportedMethods({
853
+ createAction: createActionMock
854
+ })
855
+ )
856
+ const args = {
857
+ description: '' // Invalid description (too short)
858
+ }
859
+ await expect(wallet.createAction(args)).rejects.toThrow('Invalid inputs')
860
+ expect(createActionMock).toHaveBeenCalledWith(args, '')
861
+ })
862
+ })
863
+
864
+ describe('signAction', () => {
865
+ it('should sign an action with valid inputs', async () => {
866
+ // Mock the signAction method
867
+ const signActionMock = jest.fn().mockResolvedValue({
868
+ txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
869
+ tx: [1, 2, 3, 4]
870
+ })
871
+ const wallet = createTestWalletWire(
872
+ mockUnsupportedMethods({
873
+ signAction: signActionMock
874
+ })
875
+ )
876
+
877
+ const spends = {
878
+ 0: {
879
+ unlockingScript: '00' // Sample unlocking script
880
+ }
881
+ }
882
+ const reference = Utils.toBase64([1, 2, 3])
883
+ const args = { spends, reference }
884
+ const result = await wallet.signAction(args)
885
+ expect(result).toHaveProperty('txid')
886
+ expect(result).toHaveProperty('tx')
887
+ expect(result.tx).toBeInstanceOf(Array)
888
+ expect(signActionMock).toHaveBeenCalledWith(args, '')
889
+ })
890
+
891
+ it('should throw an error with invalid inputs', async () => {
892
+ // Mock the signAction method to throw an error
893
+ const signActionMock = jest
894
+ .fn()
895
+ .mockRejectedValue(new Error('Invalid inputs'))
896
+ const wallet = createTestWalletWire(
897
+ mockUnsupportedMethods({
898
+ signAction: signActionMock
899
+ })
900
+ )
901
+ const spends = {}
902
+ const reference = ''
903
+ const args = { spends, reference }
904
+ await expect(wallet.signAction(args)).rejects.toThrow('Invalid inputs')
905
+ expect(signActionMock).toHaveBeenCalledWith(args, '')
906
+ })
907
+ })
908
+
909
+ describe('abortAction', () => {
910
+ it('should abort an action with valid reference', async () => {
911
+ // Mock the abortAction method
912
+ const abortActionMock = jest.fn().mockResolvedValue({ aborted: true })
913
+ const wallet = createTestWalletWire(
914
+ mockUnsupportedMethods({
915
+ abortAction: abortActionMock
916
+ })
917
+ )
918
+
919
+ const reference = Utils.toBase64([1, 2, 3])
920
+ const args = { reference }
921
+ const result = await wallet.abortAction(args)
922
+ expect(result).toEqual({ aborted: true })
923
+ expect(abortActionMock).toHaveBeenCalledWith(args, '')
924
+ })
925
+
926
+ it('should throw an error with invalid reference', async () => {
927
+ // Mock the abortAction method to throw an error
928
+ const abortActionMock = jest
929
+ .fn()
930
+ .mockRejectedValue(new Error('Invalid reference'))
931
+ const wallet = createTestWalletWire(
932
+ mockUnsupportedMethods({
933
+ abortAction: abortActionMock
934
+ })
935
+ )
936
+ const reference = ''
937
+ const args = { reference }
938
+ await expect(wallet.abortAction(args)).rejects.toThrow(
939
+ 'Invalid reference'
940
+ )
941
+ expect(abortActionMock).toHaveBeenCalledWith(args, '')
942
+ })
943
+ })
944
+
945
+ describe('listActions', () => {
946
+ it('should list actions with valid inputs', async () => {
947
+ // Mock the listActions method
948
+ const listActionsMock = jest.fn().mockResolvedValue({
949
+ totalActions: 1,
950
+ actions: [
951
+ {
952
+ txid: 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806',
953
+ satoshis: 1000,
954
+ status: 'completed',
955
+ isOutgoing: true,
956
+ description: 'Test action',
957
+ labels: ['test-label'],
958
+ version: 1,
959
+ lockTime: 0
960
+ }
961
+ ]
962
+ })
963
+ const wallet = createTestWalletWire(
964
+ mockUnsupportedMethods({
965
+ listActions: listActionsMock
966
+ })
967
+ )
968
+
969
+ const args = {
970
+ labels: ['test-label'],
971
+ includeLabels: true,
972
+ limit: 10,
973
+ offset: 0
974
+ }
975
+ const result = await wallet.listActions(args)
976
+ expect(result).toHaveProperty('totalActions')
977
+ expect(result).toHaveProperty('actions')
978
+ expect(Array.isArray(result.actions)).toBe(true)
979
+ expect(listActionsMock).toHaveBeenCalledWith(args, '')
980
+ })
981
+
982
+ it('should list actions with empty labels array', async () => {
983
+ // Mock the listActions method
984
+ const listActionsMock = jest.fn().mockResolvedValue({
985
+ totalActions: 0,
986
+ actions: []
987
+ })
988
+ const wallet = createTestWalletWire(
989
+ mockUnsupportedMethods({
990
+ listActions: listActionsMock
991
+ })
992
+ )
993
+
994
+ const args = {
995
+ labels: [],
996
+ includeLabels: true,
997
+ limit: 10,
998
+ offset: 0
999
+ }
1000
+ const result = await wallet.listActions(args)
1001
+ expect(result).toHaveProperty('totalActions')
1002
+ expect(result.totalActions).toBe(0)
1003
+ expect(result.actions).toEqual([])
1004
+ expect(listActionsMock).toHaveBeenCalledWith(args, '')
1005
+ })
1006
+
1007
+ it('should throw an error with invalid inputs', async () => {
1008
+ // Mock the listActions method to throw an error
1009
+ const listActionsMock = jest
1010
+ .fn()
1011
+ .mockRejectedValue(new Error('Invalid inputs'))
1012
+ const wallet = createTestWalletWire(
1013
+ mockUnsupportedMethods({
1014
+ listActions: listActionsMock
1015
+ })
1016
+ )
1017
+ const args = {
1018
+ labels: []
1019
+ }
1020
+ await expect(wallet.listActions(args)).rejects.toThrow('Invalid inputs')
1021
+ expect(listActionsMock).toHaveBeenCalledWith(args, '')
1022
+ })
1023
+ })
1024
+
1025
+ describe('internalizeAction', () => {
1026
+ it('should internalize an action with valid inputs', async () => {
1027
+ // Mock the internalizeAction method
1028
+ const internalizeActionMock = jest
1029
+ .fn()
1030
+ .mockResolvedValue({ accepted: true })
1031
+ const wallet = createTestWalletWire(
1032
+ mockUnsupportedMethods({
1033
+ internalizeAction: internalizeActionMock
1034
+ })
1035
+ )
1036
+
1037
+ const args = {
1038
+ tx: [0x00], // Sample transaction byte array
1039
+ outputs: [
1040
+ {
1041
+ outputIndex: 0,
1042
+ protocol: 'wallet payment' as 'wallet payment',
1043
+ paymentRemittance: {
1044
+ derivationPrefix: Utils.toBase64([1, 2, 3]),
1045
+ derivationSuffix: Utils.toBase64([4, 5, 6]),
1046
+ senderIdentityKey: '02' + '1'.repeat(64)
1047
+ }
1048
+ }
1049
+ ],
1050
+ description: 'Test internalize action',
1051
+ labels: ['test-label']
1052
+ }
1053
+ const result = await wallet.internalizeAction(args)
1054
+ expect(result).toEqual({ accepted: true })
1055
+ expect(internalizeActionMock).toHaveBeenCalledWith(args, '')
1056
+ })
1057
+
1058
+ it('should throw an error with invalid inputs', async () => {
1059
+ // Mock the internalizeAction method to throw an error
1060
+ const internalizeActionMock = jest
1061
+ .fn()
1062
+ .mockRejectedValue(new Error('Invalid inputs'))
1063
+ const wallet = createTestWalletWire(
1064
+ mockUnsupportedMethods({
1065
+ internalizeAction: internalizeActionMock
1066
+ })
1067
+ )
1068
+ const args = {
1069
+ tx: [], // Empty transaction array
1070
+ outputs: [],
1071
+ description: 'Test internalize action'
1072
+ }
1073
+ await expect(wallet.internalizeAction(args)).rejects.toThrow(
1074
+ 'Invalid inputs'
1075
+ )
1076
+ expect(internalizeActionMock).toHaveBeenCalledWith(args, '')
1077
+ })
1078
+ it('should internalize an action with "basket insertion" protocol', async () => {
1079
+ // Mock the internalizeAction method
1080
+ const internalizeActionMock = jest
1081
+ .fn()
1082
+ .mockResolvedValue({ accepted: true })
1083
+ const wallet = createTestWalletWire(
1084
+ mockUnsupportedMethods({
1085
+ internalizeAction: internalizeActionMock
1086
+ })
1087
+ )
1088
+
1089
+ const args = {
1090
+ tx: [0x00], // Sample transaction byte array
1091
+ outputs: [
1092
+ {
1093
+ outputIndex: 0,
1094
+ protocol: 'basket insertion' as 'basket insertion',
1095
+ insertionRemittance: {
1096
+ basket: 'test-basket',
1097
+ customInstructions: 'Test instructions',
1098
+ tags: ['test-tag1', 'test-tag2']
1099
+ }
1100
+ }
1101
+ ],
1102
+ description: 'Test internalize action with basket insertion',
1103
+ labels: ['test-label']
1104
+ }
1105
+ const result = await wallet.internalizeAction(args)
1106
+ expect(result).toEqual({ accepted: true })
1107
+ expect(internalizeActionMock).toHaveBeenCalledWith(args, '')
1108
+ })
1109
+ })
1110
+
1111
+ describe('listOutputs', () => {
1112
+ it('should list outputs with valid inputs', async () => {
1113
+ // Mock the listOutputs method
1114
+ const listOutputsMock = jest.fn().mockResolvedValue({
1115
+ totalOutputs: 1,
1116
+ outputs: [
1117
+ {
1118
+ outpoint:
1119
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1120
+ satoshis: 1000,
1121
+ lockingScript: '00',
1122
+ spendable: true,
1123
+ customInstructions: 'Test instructions',
1124
+ tags: ['test-tag'],
1125
+ labels: ['test-label']
1126
+ }
1127
+ ]
1128
+ })
1129
+ const wallet = createTestWalletWire(
1130
+ mockUnsupportedMethods({
1131
+ listOutputs: listOutputsMock
1132
+ })
1133
+ )
1134
+
1135
+ const args = {
1136
+ basket: 'test-basket',
1137
+ includeLabels: true,
1138
+ limit: 10,
1139
+ offset: 0
1140
+ }
1141
+ const result = await wallet.listOutputs(args)
1142
+ expect(result).toHaveProperty('totalOutputs')
1143
+ expect(result).toHaveProperty('outputs')
1144
+ expect(Array.isArray(result.outputs)).toBe(true)
1145
+ expect(listOutputsMock).toHaveBeenCalledWith(args, '')
1146
+ })
1147
+
1148
+ it('should throw an error with invalid inputs', async () => {
1149
+ // Mock the listOutputs method to throw an error
1150
+ const listOutputsMock = jest
1151
+ .fn()
1152
+ .mockRejectedValue(new Error('Invalid inputs'))
1153
+ const wallet = createTestWalletWire(
1154
+ mockUnsupportedMethods({
1155
+ listOutputs: listOutputsMock
1156
+ })
1157
+ )
1158
+ const args = {
1159
+ basket: ''
1160
+ }
1161
+ await expect(wallet.listOutputs(args)).rejects.toThrow('Invalid inputs')
1162
+ expect(listOutputsMock).toHaveBeenCalledWith(args, '')
1163
+ })
1164
+ it('should list outputs without specifying optional parameters', async () => {
1165
+ // Mock the listOutputs method
1166
+ const listOutputsMock = jest.fn().mockResolvedValue({
1167
+ totalOutputs: 1,
1168
+ BEEF: [1, 2, 3, 4],
1169
+ outputs: [
1170
+ {
1171
+ outpoint:
1172
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1173
+ satoshis: 1000,
1174
+ spendable: true
1175
+ }
1176
+ ]
1177
+ })
1178
+ const wallet = createTestWalletWire(
1179
+ mockUnsupportedMethods({
1180
+ listOutputs: listOutputsMock
1181
+ })
1182
+ )
1183
+
1184
+ const args = {
1185
+ basket: 'test-basket'
1186
+ // Optional parameters are not specified
1187
+ }
1188
+ const result = await wallet.listOutputs(args)
1189
+ expect(result).toHaveProperty('totalOutputs')
1190
+ expect(result).toHaveProperty('outputs')
1191
+ expect(result).toHaveProperty('BEEF')
1192
+ expect(result.outputs[0]).toHaveProperty('outpoint')
1193
+ expect(result.outputs[0]).toHaveProperty('satoshis')
1194
+ expect(result.outputs[0]).toHaveProperty('spendable')
1195
+ expect(result.outputs[0]).not.toHaveProperty('lockingScript')
1196
+ expect(result.outputs[0]).not.toHaveProperty('customInstructions')
1197
+ expect(result.outputs[0]).not.toHaveProperty('tags')
1198
+ expect(result.outputs[0]).not.toHaveProperty('labels')
1199
+ expect(listOutputsMock).toHaveBeenCalledWith(args, '')
1200
+ })
1201
+ })
1202
+
1203
+ describe('getPublicKey', () => {
1204
+ it('should get the identity public key', async () => {
1205
+ const wallet = createTestWalletWire(
1206
+ new CompletedProtoWallet(PrivateKey.fromRandom())
1207
+ )
1208
+ const result = await wallet.getPublicKey({ identityKey: true })
1209
+ expect(result).toHaveProperty('publicKey')
1210
+ expect(typeof result.publicKey).toBe('string')
1211
+ expect(result.publicKey.length).toBe(66) // Compressed public key hex length
1212
+ })
1213
+
1214
+ it('should get a derived public key with valid inputs', async () => {
1215
+ const userKey = PrivateKey.fromRandom()
1216
+ const counterpartyKey = PrivateKey.fromRandom()
1217
+ const wallet = createTestWalletWire(new CompletedProtoWallet(userKey))
1218
+ const args = {
1219
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1220
+ keyID: 'test-key-id',
1221
+ counterparty: counterpartyKey.toPublicKey().toString()
1222
+ }
1223
+ const result = await wallet.getPublicKey(args)
1224
+ expect(result).toHaveProperty('publicKey')
1225
+ expect(typeof result.publicKey).toBe('string')
1226
+ expect(result.publicKey.length).toBe(66)
1227
+ })
1228
+
1229
+ it('should get the public key with counterparty "anyone"', async () => {
1230
+ const wallet = createTestWalletWire(
1231
+ new CompletedProtoWallet(PrivateKey.fromRandom())
1232
+ )
1233
+ const args = {
1234
+ protocolID: [1, 'testprotocol'] as [0 | 1 | 2, string],
1235
+ keyID: 'testkeyid',
1236
+ counterparty: 'anyone' as 'anyone'
1237
+ }
1238
+ const result = await wallet.getPublicKey(args)
1239
+ expect(result).toHaveProperty('publicKey')
1240
+ expect(typeof result.publicKey).toBe('string')
1241
+ expect(result.publicKey.length).toBe(66) // Compressed public key hex length
1242
+ })
1243
+
1244
+ it('should get the public key with missing optional parameters', async () => {
1245
+ const wallet = createTestWalletWire(
1246
+ new CompletedProtoWallet(PrivateKey.fromRandom())
1247
+ )
1248
+ const args = {
1249
+ protocolID: [0, 'minimalprotocol'] as [0 | 1 | 2, string],
1250
+ keyID: 'minimalkeyid'
1251
+ // Missing counterparty, should default to 'self' or 'anyone' based on context
1252
+ }
1253
+ const result = await wallet.getPublicKey(args)
1254
+ expect(result).toHaveProperty('publicKey')
1255
+ expect(typeof result.publicKey).toBe('string')
1256
+ expect(result.publicKey.length).toBe(66)
1257
+ })
1258
+ })
1259
+
1260
+ describe('encrypt and decrypt', () => {
1261
+ it('should encrypt and decrypt data correctly', async () => {
1262
+ const userKey = PrivateKey.fromRandom()
1263
+ const counterpartyKey = PrivateKey.fromRandom()
1264
+ const userWallet = createTestWalletWire(new CompletedProtoWallet(userKey))
1265
+ const counterpartyWallet = createTestWalletWire(
1266
+ new CompletedProtoWallet(counterpartyKey)
1267
+ )
1268
+
1269
+ const plaintext = sampleData
1270
+ const encryptArgs = {
1271
+ plaintext,
1272
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1273
+ keyID: 'test-key-id',
1274
+ counterparty: counterpartyKey.toPublicKey().toString()
1275
+ }
1276
+ const encryptResult = await userWallet.encrypt(encryptArgs)
1277
+ expect(encryptResult).toHaveProperty('ciphertext')
1278
+ expect(encryptResult.ciphertext).not.toEqual(plaintext)
1279
+
1280
+ const decryptArgs = {
1281
+ ciphertext: encryptResult.ciphertext,
1282
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1283
+ keyID: 'test-key-id',
1284
+ counterparty: userKey.toPublicKey().toString()
1285
+ }
1286
+ const decryptResult = await counterpartyWallet.decrypt(decryptArgs)
1287
+ expect(decryptResult).toHaveProperty('plaintext')
1288
+ expect(decryptResult.plaintext).toEqual(plaintext)
1289
+ })
1290
+
1291
+ it('should throw an error for invalid decryption inputs', async () => {
1292
+ const userKey = PrivateKey.fromRandom()
1293
+ const counterpartyKey = PrivateKey.fromRandom()
1294
+ const counterpartyWallet = createTestWalletWire(
1295
+ new CompletedProtoWallet(counterpartyKey)
1296
+ )
1297
+
1298
+ const decryptArgs = {
1299
+ ciphertext: [0x00],
1300
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1301
+ keyID: 'test-key-id',
1302
+ counterparty: userKey.toPublicKey().toString()
1303
+ }
1304
+ await expect(counterpartyWallet.decrypt(decryptArgs)).rejects.toThrow()
1305
+ })
1306
+ })
1307
+
1308
+ describe('createHmac and verifyHmac', () => {
1309
+ it('should create and verify HMAC correctly', async () => {
1310
+ const userKey = PrivateKey.fromRandom()
1311
+ const counterpartyKey = PrivateKey.fromRandom()
1312
+ const userWallet = createTestWalletWire(new CompletedProtoWallet(userKey))
1313
+ const counterpartyWallet = createTestWalletWire(
1314
+ new CompletedProtoWallet(counterpartyKey)
1315
+ )
1316
+
1317
+ const data = sampleData
1318
+ const createHmacArgs = {
1319
+ data,
1320
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1321
+ keyID: 'test-key-id',
1322
+ counterparty: counterpartyKey.toPublicKey().toString()
1323
+ }
1324
+ const createHmacResult = await userWallet.createHmac(createHmacArgs)
1325
+ expect(createHmacResult).toHaveProperty('hmac')
1326
+ expect(createHmacResult.hmac.length).toBe(32)
1327
+
1328
+ const verifyHmacArgs = {
1329
+ data,
1330
+ hmac: createHmacResult.hmac,
1331
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1332
+ keyID: 'test-key-id',
1333
+ counterparty: userKey.toPublicKey().toString()
1334
+ }
1335
+ const verifyHmacResult =
1336
+ await counterpartyWallet.verifyHmac(verifyHmacArgs)
1337
+ expect(verifyHmacResult).toEqual({ valid: true })
1338
+ })
1339
+
1340
+ it('should throw an error for invalid HMAC verification', async () => {
1341
+ const userKey = PrivateKey.fromRandom()
1342
+ const counterpartyWallet = createTestWalletWire(
1343
+ new CompletedProtoWallet(PrivateKey.fromRandom())
1344
+ )
1345
+
1346
+ const verifyHmacArgs = {
1347
+ data: sampleData,
1348
+ hmac: [0x00],
1349
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1350
+ keyID: 'test-key-id',
1351
+ counterparty: userKey.toPublicKey().toString()
1352
+ }
1353
+ await expect(
1354
+ counterpartyWallet.verifyHmac(verifyHmacArgs)
1355
+ ).rejects.toThrow()
1356
+ })
1357
+ })
1358
+
1359
+ describe('createSignature and verifySignature', () => {
1360
+ it('should create and verify signature correctly', async () => {
1361
+ const userKey = PrivateKey.fromRandom()
1362
+ const counterpartyKey = PrivateKey.fromRandom()
1363
+ const userWallet = createTestWalletWire(new CompletedProtoWallet(userKey))
1364
+ const counterpartyWallet = createTestWalletWire(
1365
+ new CompletedProtoWallet(counterpartyKey)
1366
+ )
1367
+
1368
+ const data = sampleData
1369
+ const createSignatureArgs = {
1370
+ data,
1371
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1372
+ keyID: 'test-key-id',
1373
+ counterparty: counterpartyKey.toPublicKey().toString()
1374
+ }
1375
+ const createSignatureResult =
1376
+ await userWallet.createSignature(createSignatureArgs)
1377
+ expect(createSignatureResult).toHaveProperty('signature')
1378
+ expect(createSignatureResult.signature.length).toBeGreaterThan(0)
1379
+
1380
+ const verifySignatureArgs = {
1381
+ data,
1382
+ signature: createSignatureResult.signature,
1383
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1384
+ keyID: 'test-key-id',
1385
+ counterparty: userKey.toPublicKey().toString()
1386
+ }
1387
+ const verifySignatureResult =
1388
+ await counterpartyWallet.verifySignature(verifySignatureArgs)
1389
+ expect(verifySignatureResult).toEqual({ valid: true })
1390
+ })
1391
+
1392
+ it('should throw an error for invalid signature verification', async () => {
1393
+ const userKey = PrivateKey.fromRandom()
1394
+ const counterpartyWallet = createTestWalletWire(
1395
+ new CompletedProtoWallet(PrivateKey.fromRandom())
1396
+ )
1397
+
1398
+ const verifySignatureArgs = {
1399
+ data: sampleData,
1400
+ signature: [0x00],
1401
+ protocolID: [2, 'tests'] as [0 | 1 | 2, string],
1402
+ keyID: 'test-key-id',
1403
+ counterparty: userKey.toPublicKey().toString()
1404
+ }
1405
+ await expect(
1406
+ counterpartyWallet.verifySignature(verifySignatureArgs)
1407
+ ).rejects.toThrow()
1408
+ })
1409
+ })
1410
+
1411
+ describe('revealCounterpartyKeyLinkage', () => {
1412
+ it('should reveal counterparty key linkage correctly', async () => {
1413
+ const proverKey = PrivateKey.fromRandom()
1414
+ const counterpartyKey = PrivateKey.fromRandom()
1415
+ const verifierKey = PrivateKey.fromRandom()
1416
+
1417
+ const proverWallet = createTestWalletWire(
1418
+ new CompletedProtoWallet(proverKey)
1419
+ )
1420
+ const verifierWallet = createTestWalletWire(
1421
+ new CompletedProtoWallet(verifierKey)
1422
+ )
1423
+
1424
+ const args = {
1425
+ counterparty: counterpartyKey.toPublicKey().toString(),
1426
+ verifier: verifierKey.toPublicKey().toString()
1427
+ }
1428
+
1429
+ const revelation = await proverWallet.revealCounterpartyKeyLinkage(args)
1430
+ expect(revelation.encryptedLinkageProof).toBeDefined()
1431
+
1432
+ const decryptArgs = {
1433
+ ciphertext: revelation.encryptedLinkage,
1434
+ protocolID: [2, 'counterparty linkage revelation'] as [
1435
+ 0 | 1 | 2,
1436
+ string
1437
+ ],
1438
+ keyID: revelation.revelationTime,
1439
+ counterparty: proverKey.toPublicKey().toString()
1440
+ }
1441
+ const decryptedResult = await verifierWallet.decrypt(decryptArgs)
1442
+
1443
+ const expectedLinkage = proverKey
1444
+ .deriveSharedSecret(counterpartyKey.toPublicKey())
1445
+ .encode(true)
1446
+ expect(decryptedResult.plaintext).toEqual(expectedLinkage)
1447
+ })
1448
+ })
1449
+
1450
+ describe('acquireCertificate', () => {
1451
+ it('should acquire a certificate with valid inputs', async () => {
1452
+ // Mock the acquireCertificate method
1453
+ const acquireCertificateMock = jest.fn().mockResolvedValue({
1454
+ type: Utils.toBase64(new Array(32).fill(1)),
1455
+ subject: '02' + 'a'.repeat(64),
1456
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1457
+ certifier: '02' + 'b'.repeat(64),
1458
+ revocationOutpoint:
1459
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1460
+ signature:
1461
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1462
+ fields: {
1463
+ field1: 'value1',
1464
+ field2: 'value2'
1465
+ }
1466
+ })
1467
+ const wallet = createTestWalletWire(
1468
+ mockUnsupportedMethods({
1469
+ acquireCertificate: acquireCertificateMock
1470
+ })
1471
+ )
1472
+
1473
+ const args = {
1474
+ type: Utils.toBase64(new Array(32).fill(1)),
1475
+ certifier: '02' + 'b'.repeat(64),
1476
+ acquisitionProtocol: 'direct' as 'direct',
1477
+ fields: {
1478
+ field1: 'value1',
1479
+ field2: 'value2'
1480
+ },
1481
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1482
+ revocationOutpoint:
1483
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1484
+ signature:
1485
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1486
+ keyringRevealer: 'certifier',
1487
+ keyringForSubject: {}
1488
+ }
1489
+ const result = await wallet.acquireCertificate(args)
1490
+ expect(result).toHaveProperty('type')
1491
+ expect(result).toHaveProperty('subject')
1492
+ expect(result).toHaveProperty('serialNumber')
1493
+ expect(result).toHaveProperty('certifier')
1494
+ expect(result).toHaveProperty('revocationOutpoint')
1495
+ expect(result).toHaveProperty('signature')
1496
+ expect(result).toHaveProperty('fields')
1497
+ expect(acquireCertificateMock).toHaveBeenCalledWith(args, '')
1498
+ })
1499
+ it('should acquire a certificate using acquisitionProtocol "direct" with keyringRevealer as "certifier"', async () => {
1500
+ // Mock the acquireCertificate method
1501
+ const acquireCertificateMock = jest.fn().mockResolvedValue({
1502
+ type: Utils.toBase64(new Array(32).fill(1)),
1503
+ subject: '02' + 'a'.repeat(64),
1504
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1505
+ certifier: '02' + 'b'.repeat(64),
1506
+ revocationOutpoint:
1507
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1508
+ signature:
1509
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1510
+ fields: {
1511
+ field1: 'value1',
1512
+ field2: 'value2'
1513
+ }
1514
+ })
1515
+ const wallet = createTestWalletWire(
1516
+ mockUnsupportedMethods({
1517
+ acquireCertificate: acquireCertificateMock
1518
+ })
1519
+ )
1520
+
1521
+ const args = {
1522
+ type: Utils.toBase64(new Array(32).fill(1)),
1523
+ certifier: '02' + 'b'.repeat(64),
1524
+ acquisitionProtocol: 'direct' as 'direct',
1525
+ fields: {
1526
+ field1: 'value1',
1527
+ field2: 'value2'
1528
+ },
1529
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1530
+ revocationOutpoint:
1531
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1532
+ signature:
1533
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1534
+ keyringRevealer: 'certifier' as 'certifier',
1535
+ keyringForSubject: {
1536
+ field1: Utils.toBase64([0x01, 0x02, 0x03]),
1537
+ field2: Utils.toBase64([0x04, 0x05, 0x06])
1538
+ }
1539
+ }
1540
+ const result = await wallet.acquireCertificate(args)
1541
+ expect(result).toHaveProperty('type')
1542
+ expect(result).toHaveProperty('subject')
1543
+ expect(result).toHaveProperty('serialNumber')
1544
+ expect(result).toHaveProperty('certifier')
1545
+ expect(result).toHaveProperty('revocationOutpoint')
1546
+ expect(result).toHaveProperty('signature')
1547
+ expect(result).toHaveProperty('fields')
1548
+ expect(acquireCertificateMock).toHaveBeenCalledWith(args, '')
1549
+ })
1550
+
1551
+ it('should acquire a certificate using acquisitionProtocol "direct" with keyringRevealer as PubKeyHex', async () => {
1552
+ // Mock the acquireCertificate method
1553
+ const acquireCertificateMock = jest.fn().mockResolvedValue({
1554
+ type: Utils.toBase64(new Array(32).fill(1)),
1555
+ subject: '02' + 'a'.repeat(64),
1556
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1557
+ certifier: '02' + 'b'.repeat(64),
1558
+ revocationOutpoint:
1559
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1560
+ signature:
1561
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1562
+ fields: {
1563
+ field1: 'value1',
1564
+ field2: 'value2'
1565
+ }
1566
+ })
1567
+ const keyringRevealerPubKey = '02' + 'c'.repeat(64)
1568
+ const wallet = createTestWalletWire(
1569
+ mockUnsupportedMethods({
1570
+ acquireCertificate: acquireCertificateMock
1571
+ })
1572
+ )
1573
+
1574
+ const args = {
1575
+ type: Utils.toBase64(new Array(32).fill(1)),
1576
+ certifier: '02' + 'b'.repeat(64),
1577
+ acquisitionProtocol: 'direct' as 'direct',
1578
+ fields: {
1579
+ field1: 'value1',
1580
+ field2: 'value2'
1581
+ },
1582
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1583
+ revocationOutpoint:
1584
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1585
+ signature:
1586
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1587
+ keyringRevealer: keyringRevealerPubKey,
1588
+ keyringForSubject: {
1589
+ field1: Utils.toBase64([0x01, 0x02, 0x03]),
1590
+ field2: Utils.toBase64([0x04, 0x05, 0x06])
1591
+ }
1592
+ }
1593
+ const result = await wallet.acquireCertificate(args)
1594
+ expect(result).toHaveProperty('type')
1595
+ expect(result).toHaveProperty('subject')
1596
+ expect(result).toHaveProperty('serialNumber')
1597
+ expect(result).toHaveProperty('certifier')
1598
+ expect(result).toHaveProperty('revocationOutpoint')
1599
+ expect(result).toHaveProperty('signature')
1600
+ expect(result).toHaveProperty('fields')
1601
+ expect(acquireCertificateMock).toHaveBeenCalledWith(args, '')
1602
+ })
1603
+
1604
+ it('should acquire a certificate using acquisitionProtocol "issuance"', async () => {
1605
+ // Mock the acquireCertificate method
1606
+ const acquireCertificateMock = jest.fn().mockResolvedValue({
1607
+ type: Utils.toBase64(new Array(32).fill(1)),
1608
+ subject: '02' + 'd'.repeat(64),
1609
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1610
+ certifier: '02' + 'b'.repeat(64),
1611
+ revocationOutpoint:
1612
+ 'cafebabedeadbeefcafebabedeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.1',
1613
+ signature:
1614
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1615
+ fields: {
1616
+ field3: 'value3',
1617
+ field4: 'value4'
1618
+ }
1619
+ })
1620
+ const wallet = createTestWalletWire(
1621
+ mockUnsupportedMethods({
1622
+ acquireCertificate: acquireCertificateMock
1623
+ })
1624
+ )
1625
+
1626
+ const args = {
1627
+ type: Utils.toBase64(new Array(32).fill(1)),
1628
+ certifier: '02' + 'b'.repeat(64),
1629
+ acquisitionProtocol: 'issuance' as 'issuance',
1630
+ fields: {
1631
+ field3: 'value3',
1632
+ field4: 'value4'
1633
+ },
1634
+ certifierUrl: 'https://certifier.example.com/api/issue'
1635
+ }
1636
+ const result = await wallet.acquireCertificate(args)
1637
+ expect(result).toHaveProperty('type')
1638
+ expect(result).toHaveProperty('subject')
1639
+ expect(result).toHaveProperty('serialNumber')
1640
+ expect(result).toHaveProperty('certifier')
1641
+ expect(result).toHaveProperty('revocationOutpoint')
1642
+ expect(result).toHaveProperty('signature')
1643
+ expect(result).toHaveProperty('fields')
1644
+ expect(acquireCertificateMock).toHaveBeenCalledWith(args, '')
1645
+ })
1646
+
1647
+ it('should handle optional keyringForSubject being empty in "direct" protocol', async () => {
1648
+ // Mock the acquireCertificate method
1649
+ const acquireCertificateMock = jest.fn().mockResolvedValue({
1650
+ type: Utils.toBase64(new Array(32).fill(1)),
1651
+ subject: '02' + 'e'.repeat(64),
1652
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1653
+ certifier: '02' + 'b'.repeat(64),
1654
+ revocationOutpoint:
1655
+ 'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
1656
+ signature:
1657
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1658
+ fields: {
1659
+ field5: 'value5'
1660
+ }
1661
+ })
1662
+ const wallet = createTestWalletWire(
1663
+ mockUnsupportedMethods({
1664
+ acquireCertificate: acquireCertificateMock
1665
+ })
1666
+ )
1667
+
1668
+ const args = {
1669
+ type: Utils.toBase64(new Array(32).fill(1)),
1670
+ certifier: '02' + 'b'.repeat(64),
1671
+ acquisitionProtocol: 'direct' as 'direct',
1672
+ fields: {
1673
+ field5: 'value5'
1674
+ },
1675
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1676
+ revocationOutpoint:
1677
+ 'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
1678
+ signature:
1679
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1680
+ keyringRevealer: 'certifier' as 'certifier',
1681
+ keyringForSubject: {} // Empty keyring
1682
+ }
1683
+ const result = await wallet.acquireCertificate(args)
1684
+ expect(result).toHaveProperty('type')
1685
+ expect(result).toHaveProperty('subject')
1686
+ expect(result).toHaveProperty('serialNumber')
1687
+ expect(result).toHaveProperty('certifier')
1688
+ expect(result).toHaveProperty('revocationOutpoint')
1689
+ expect(result).toHaveProperty('signature')
1690
+ expect(result).toHaveProperty('fields')
1691
+ expect(result.fields).toEqual({ field5: 'value5' })
1692
+ expect(acquireCertificateMock).toHaveBeenCalledWith(args, '')
1693
+ })
1694
+ })
1695
+
1696
+ describe('listCertificates', () => {
1697
+ it('should list certificates with valid inputs', async () => {
1698
+ // Mock the listCertificates method
1699
+ const listCertificatesMock = jest.fn().mockResolvedValue({
1700
+ totalCertificates: 1,
1701
+ certificates: [
1702
+ {
1703
+ type: Utils.toBase64(new Array(32).fill(1)),
1704
+ subject: '02' + 'a'.repeat(64),
1705
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1706
+ certifier: '02' + 'b'.repeat(64),
1707
+ revocationOutpoint:
1708
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1709
+ signature:
1710
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1711
+ fields: {
1712
+ field1: 'value1',
1713
+ field2: 'value2'
1714
+ }
1715
+ }
1716
+ ]
1717
+ })
1718
+ const wallet = createTestWalletWire(
1719
+ mockUnsupportedMethods({
1720
+ listCertificates: listCertificatesMock
1721
+ })
1722
+ )
1723
+
1724
+ const args = {
1725
+ certifiers: ['02' + 'b'.repeat(64)],
1726
+ types: [Utils.toBase64(new Array(32).fill(1))],
1727
+ limit: 10,
1728
+ offset: 0
1729
+ }
1730
+ const result = await wallet.listCertificates(args)
1731
+ expect(result).toHaveProperty('totalCertificates')
1732
+ expect(result).toHaveProperty('certificates')
1733
+ expect(Array.isArray(result.certificates)).toBe(true)
1734
+ expect(listCertificatesMock).toHaveBeenCalledWith(args, '')
1735
+ })
1736
+ it('should list certificates with multiple fields in each certificate', async () => {
1737
+ // Mock the listCertificates method
1738
+ const listCertificatesMock = jest.fn().mockResolvedValue({
1739
+ totalCertificates: 2,
1740
+ certificates: [
1741
+ {
1742
+ type: Utils.toBase64(new Array(32).fill(1)),
1743
+ subject: '02' + 'a'.repeat(64),
1744
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1745
+ certifier: '02' + 'b'.repeat(64),
1746
+ revocationOutpoint:
1747
+ 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
1748
+ signature:
1749
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1750
+ fields: {
1751
+ field1: 'value1',
1752
+ field2: 'value2'
1753
+ }
1754
+ },
1755
+ {
1756
+ type: Utils.toBase64(new Array(32).fill(1)),
1757
+ subject: '02' + 'c'.repeat(64),
1758
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1759
+ certifier: '02' + 'b'.repeat(64),
1760
+ revocationOutpoint:
1761
+ 'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
1762
+ signature:
1763
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1764
+ fields: {
1765
+ field3: 'value3',
1766
+ field4: 'value4',
1767
+ field5: 'value5'
1768
+ }
1769
+ }
1770
+ ]
1771
+ })
1772
+ const wallet = createTestWalletWire(
1773
+ mockUnsupportedMethods({
1774
+ listCertificates: listCertificatesMock
1775
+ })
1776
+ )
1777
+
1778
+ const args = {
1779
+ certifiers: ['02' + 'b'.repeat(64)],
1780
+ types: [
1781
+ Utils.toBase64(new Array(32).fill(1)),
1782
+ Utils.toBase64(new Array(32).fill(2))
1783
+ ],
1784
+ limit: 10,
1785
+ offset: 0
1786
+ }
1787
+ const result = await wallet.listCertificates(args)
1788
+ expect(result).toHaveProperty('totalCertificates', 2)
1789
+ expect(result.certificates.length).toBe(2)
1790
+ expect(result.certificates[0].fields).toEqual({
1791
+ field1: 'value1',
1792
+ field2: 'value2'
1793
+ })
1794
+ expect(result.certificates[1].fields).toEqual({
1795
+ field3: 'value3',
1796
+ field4: 'value4',
1797
+ field5: 'value5'
1798
+ })
1799
+ expect(listCertificatesMock).toHaveBeenCalledWith(args, '')
1800
+ })
1801
+
1802
+ it('should list certificates when privileged is true', async () => {
1803
+ // Mock the listCertificates method
1804
+ const listCertificatesMock = jest.fn().mockResolvedValue({
1805
+ totalCertificates: 1,
1806
+ certificates: [
1807
+ {
1808
+ type: Utils.toBase64(new Array(32).fill(1)),
1809
+ subject: '02' + 'd'.repeat(64),
1810
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1811
+ certifier: '02' + 'e'.repeat(64),
1812
+ revocationOutpoint:
1813
+ 'cafecafecafecafecafecafecafecafecafecafecafecafecafecafecafecafe.2',
1814
+ signature:
1815
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1816
+ fields: {
1817
+ field6: 'value6'
1818
+ }
1819
+ }
1820
+ ]
1821
+ })
1822
+ const wallet = createTestWalletWire(
1823
+ mockUnsupportedMethods({
1824
+ listCertificates: listCertificatesMock
1825
+ })
1826
+ )
1827
+
1828
+ const args = {
1829
+ certifiers: ['02' + 'e'.repeat(64)],
1830
+ types: [Utils.toBase64(new Array(32).fill(1))],
1831
+ limit: 10,
1832
+ offset: 0,
1833
+ privileged: true,
1834
+ privilegedReason: 'Testing privileged access'
1835
+ }
1836
+ const result = await wallet.listCertificates(args)
1837
+ expect(result).toHaveProperty('totalCertificates', 1)
1838
+ expect(result.certificates[0].fields).toEqual({ field6: 'value6' })
1839
+ expect(listCertificatesMock).toHaveBeenCalledWith(args, '')
1840
+ })
1841
+ })
1842
+
1843
+ describe('proveCertificate', () => {
1844
+ it('should prove a certificate with valid inputs', async () => {
1845
+ // Mock the proveCertificate method
1846
+ const proveCertificateMock = jest.fn().mockResolvedValue({
1847
+ keyringForVerifier: {
1848
+ field1: Utils.toBase64([0x01, 0x02, 0x03]),
1849
+ field2: Utils.toBase64([0x04, 0x05, 0x06])
1850
+ }
1851
+ })
1852
+ const wallet = createTestWalletWire(
1853
+ mockUnsupportedMethods({
1854
+ proveCertificate: proveCertificateMock
1855
+ })
1856
+ )
1857
+
1858
+ const args = {
1859
+ certificate: {
1860
+ type: Utils.toBase64(new Array(32).fill(1)),
1861
+ subject: '02' + 'a'.repeat(64),
1862
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1863
+ certifier: '02' + 'b'.repeat(64),
1864
+ revocationOutpoint:
1865
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
1866
+ signature:
1867
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1868
+ fields: {
1869
+ field1: 'value1',
1870
+ field2: 'value2'
1871
+ }
1872
+ },
1873
+ fieldsToReveal: ['field1'],
1874
+ verifier: '02' + 'c'.repeat(64)
1875
+ }
1876
+ const result = await wallet.proveCertificate(args)
1877
+ expect(result).toHaveProperty('keyringForVerifier')
1878
+ expect(proveCertificateMock).toHaveBeenCalledWith(args, '')
1879
+ })
1880
+ it('should prove a certificate revealing multiple fields', async () => {
1881
+ // Mock the proveCertificate method
1882
+ const proveCertificateMock = jest.fn().mockResolvedValue({
1883
+ keyringForVerifier: {
1884
+ field1: Utils.toBase64([0x01, 0x02, 0x03]),
1885
+ field2: Utils.toBase64([0x04, 0x05, 0x06])
1886
+ }
1887
+ })
1888
+ const wallet = createTestWalletWire(
1889
+ mockUnsupportedMethods({
1890
+ proveCertificate: proveCertificateMock
1891
+ })
1892
+ )
1893
+
1894
+ const args = {
1895
+ certificate: {
1896
+ type: Utils.toBase64(new Array(32).fill(1)),
1897
+ subject: '02' + 'a'.repeat(64),
1898
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1899
+ certifier: '02' + 'b'.repeat(64),
1900
+ revocationOutpoint:
1901
+ 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
1902
+ signature:
1903
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1904
+ fields: {
1905
+ field1: 'value1',
1906
+ field2: 'value2',
1907
+ field3: 'value3'
1908
+ }
1909
+ },
1910
+ fieldsToReveal: ['field1', 'field2'],
1911
+ verifier: '02' + 'f'.repeat(64)
1912
+ }
1913
+ const result = await wallet.proveCertificate(args)
1914
+ expect(result).toHaveProperty('keyringForVerifier')
1915
+ expect(Object.keys(result.keyringForVerifier)).toEqual([
1916
+ 'field1',
1917
+ 'field2'
1918
+ ])
1919
+ expect(proveCertificateMock).toHaveBeenCalledWith(args, '')
1920
+ })
1921
+
1922
+ it('should handle empty fieldsToReveal array (no fields revealed)', async () => {
1923
+ // Mock the proveCertificate method
1924
+ const proveCertificateMock = jest.fn().mockResolvedValue({
1925
+ keyringForVerifier: {}
1926
+ })
1927
+ const wallet = createTestWalletWire(
1928
+ mockUnsupportedMethods({
1929
+ proveCertificate: proveCertificateMock
1930
+ })
1931
+ )
1932
+
1933
+ const args = {
1934
+ certificate: {
1935
+ type: Utils.toBase64(new Array(32).fill(1)),
1936
+ subject: '02' + 'a'.repeat(64),
1937
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1938
+ certifier: '02' + 'b'.repeat(64),
1939
+ revocationOutpoint:
1940
+ 'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
1941
+ signature:
1942
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
1943
+ fields: {
1944
+ field4: 'value4',
1945
+ field5: 'value5'
1946
+ }
1947
+ },
1948
+ fieldsToReveal: [],
1949
+ verifier: '02' + 'f'.repeat(64)
1950
+ }
1951
+ const result = await wallet.proveCertificate(args)
1952
+ expect(result).toHaveProperty('keyringForVerifier')
1953
+ expect(Object.keys(result.keyringForVerifier).length).toBe(0)
1954
+ expect(proveCertificateMock).toHaveBeenCalledWith(args, '')
1955
+ })
1956
+ })
1957
+
1958
+ describe('relinquishCertificate', () => {
1959
+ it('should relinquish a certificate with valid inputs', async () => {
1960
+ // Mock the relinquishCertificate method
1961
+ const relinquishCertificateMock = jest
1962
+ .fn()
1963
+ .mockResolvedValue({ relinquished: true })
1964
+ const wallet = createTestWalletWire(
1965
+ mockUnsupportedMethods({
1966
+ relinquishCertificate: relinquishCertificateMock
1967
+ })
1968
+ )
1969
+
1970
+ const args = {
1971
+ type: Utils.toBase64(new Array(32).fill(1)),
1972
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
1973
+ certifier: '02' + 'b'.repeat(64)
1974
+ }
1975
+ const result = await wallet.relinquishCertificate(args)
1976
+ expect(result).toEqual({ relinquished: true })
1977
+ expect(relinquishCertificateMock).toHaveBeenCalledWith(args, '')
1978
+ })
1979
+ })
1980
+
1981
+ describe('getHeight and getHeaderForHeight', () => {
1982
+ it('should get the current blockchain height', async () => {
1983
+ // Mock the getHeight method
1984
+ const getHeightMock = jest.fn().mockResolvedValue({ height: 680000 })
1985
+ const wallet = createTestWalletWire(
1986
+ mockUnsupportedMethods({
1987
+ getHeight: getHeightMock
1988
+ })
1989
+ )
1990
+
1991
+ const result = await wallet.getHeight({})
1992
+ expect(result).toHaveProperty('height')
1993
+ expect(typeof result.height).toBe('number')
1994
+ expect(result.height).toBeGreaterThan(0)
1995
+ expect(getHeightMock).toHaveBeenCalledWith({}, '')
1996
+ })
1997
+
1998
+ it('should throw an error when getHeight fails', async () => {
1999
+ // Mock the getHeight method to throw an error
2000
+ const getHeightMock = jest
2001
+ .fn()
2002
+ .mockRejectedValue(new Error('Failed to get height'))
2003
+ const wallet = createTestWalletWire(
2004
+ mockUnsupportedMethods({
2005
+ getHeight: getHeightMock
2006
+ })
2007
+ )
2008
+ await expect(wallet.getHeight({})).rejects.toThrow('Failed to get height')
2009
+ expect(getHeightMock).toHaveBeenCalledWith({}, '')
2010
+ })
2011
+
2012
+ it('should get the header for a given height', async () => {
2013
+ // Mock the getHeaderForHeight method
2014
+ const getHeaderForHeightMock = jest.fn().mockResolvedValue({
2015
+ header: '00' + 'ff'.repeat(79)
2016
+ })
2017
+ const wallet = createTestWalletWire(
2018
+ mockUnsupportedMethods({
2019
+ getHeaderForHeight: getHeaderForHeightMock
2020
+ })
2021
+ )
2022
+
2023
+ const args = { height: 680000 }
2024
+ const result = await wallet.getHeaderForHeight(args)
2025
+ expect(result).toHaveProperty('header')
2026
+ expect(typeof result.header).toBe('string')
2027
+ expect(result.header.length).toBe(80 * 2) // 80 bytes in hex
2028
+ expect(getHeaderForHeightMock).toHaveBeenCalledWith(args, '')
2029
+ })
2030
+
2031
+ it('should throw an error when getHeaderForHeight fails', async () => {
2032
+ // Mock the getHeaderForHeight method to throw an error
2033
+ const getHeaderForHeightMock = jest
2034
+ .fn()
2035
+ .mockRejectedValue(new Error('Failed to get header'))
2036
+ const wallet = createTestWalletWire(
2037
+ mockUnsupportedMethods({
2038
+ getHeaderForHeight: getHeaderForHeightMock
2039
+ })
2040
+ )
2041
+ const args = { height: -1 } // Invalid height
2042
+ await expect(wallet.getHeaderForHeight(args)).rejects.toThrow(
2043
+ 'Failed to get header'
2044
+ )
2045
+ expect(getHeaderForHeightMock).toHaveBeenCalledWith(args, '')
2046
+ })
2047
+ })
2048
+
2049
+ describe('discoverByIdentityKey', () => {
2050
+ it('should discover certificates by identity key with valid inputs', async () => {
2051
+ // Mock the discoverByIdentityKey method
2052
+ const discoverByIdentityKeyMock = jest.fn().mockResolvedValue({
2053
+ totalCertificates: 1,
2054
+ certificates: [
2055
+ {
2056
+ type: Utils.toBase64(new Array(32).fill(1)),
2057
+ subject: '02' + 'a'.repeat(64),
2058
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
2059
+ certifier: '02' + 'b'.repeat(64),
2060
+ revocationOutpoint:
2061
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
2062
+ signature:
2063
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
2064
+ fields: {},
2065
+ certifierInfo: {
2066
+ name: 'Test Certifier',
2067
+ iconUrl: 'https://example.com/icon.png',
2068
+ description: 'Test description',
2069
+ trust: 5
2070
+ },
2071
+ publiclyRevealedKeyring: {},
2072
+ decryptedFields: {}
2073
+ }
2074
+ ]
2075
+ })
2076
+ const wallet = createTestWalletWire(
2077
+ mockUnsupportedMethods({
2078
+ discoverByIdentityKey: discoverByIdentityKeyMock
2079
+ })
2080
+ )
2081
+
2082
+ const args = {
2083
+ identityKey: '02' + 'a'.repeat(64),
2084
+ limit: 10,
2085
+ offset: 0
2086
+ }
2087
+ const result = await wallet.discoverByIdentityKey(args)
2088
+ expect(result).toHaveProperty('totalCertificates')
2089
+ expect(result).toHaveProperty('certificates')
2090
+ expect(Array.isArray(result.certificates)).toBe(true)
2091
+ expect(discoverByIdentityKeyMock).toHaveBeenCalledWith(args, '')
2092
+ })
2093
+ it('should discover certificates with empty decryptedFields and publiclyRevealedKeyring', async () => {
2094
+ // Mock the discoverByIdentityKey method
2095
+ const discoverByIdentityKeyMock = jest.fn().mockResolvedValue({
2096
+ totalCertificates: 1,
2097
+ certificates: [
2098
+ {
2099
+ type: Utils.toBase64(new Array(32).fill(1)),
2100
+ subject: '02' + 'a'.repeat(64),
2101
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
2102
+ certifier: '02' + 'b'.repeat(64),
2103
+ revocationOutpoint:
2104
+ 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
2105
+ signature:
2106
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
2107
+ fields: {},
2108
+ certifierInfo: {
2109
+ name: 'Test Certifier',
2110
+ iconUrl: 'https://example.com/icon.png',
2111
+ description: 'Test description',
2112
+ trust: 5
2113
+ },
2114
+ publiclyRevealedKeyring: {},
2115
+ decryptedFields: {}
2116
+ }
2117
+ ]
2118
+ })
2119
+ const wallet = createTestWalletWire(
2120
+ mockUnsupportedMethods({
2121
+ discoverByIdentityKey: discoverByIdentityKeyMock
2122
+ })
2123
+ )
2124
+
2125
+ const args = {
2126
+ identityKey: '02' + 'a'.repeat(64),
2127
+ limit: 10,
2128
+ offset: 0
2129
+ }
2130
+ const result = await wallet.discoverByIdentityKey(args)
2131
+ expect(result).toHaveProperty('totalCertificates')
2132
+ expect(result.certificates.length).toBe(1)
2133
+ expect(result.certificates[0].publiclyRevealedKeyring).toEqual({})
2134
+ expect(result.certificates[0].decryptedFields).toEqual({})
2135
+ expect(discoverByIdentityKeyMock).toHaveBeenCalledWith(args, '')
2136
+ })
2137
+
2138
+ it('should discover multiple certificates with varying fields', async () => {
2139
+ // Mock the discoverByIdentityKey method
2140
+ const discoverByIdentityKeyMock = jest.fn().mockResolvedValue({
2141
+ totalCertificates: 2,
2142
+ certificates: [
2143
+ {
2144
+ type: Utils.toBase64(new Array(32).fill(1)),
2145
+ subject: '02' + 'a'.repeat(64),
2146
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
2147
+ certifier: '02' + 'b'.repeat(64),
2148
+ revocationOutpoint:
2149
+ 'deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef.0',
2150
+ signature:
2151
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
2152
+ fields: {},
2153
+ certifierInfo: {
2154
+ name: 'Certifier One',
2155
+ iconUrl: 'https://example.com/icon1.png',
2156
+ description: 'First certifier',
2157
+ trust: 5
2158
+ },
2159
+ publiclyRevealedKeyring: {
2160
+ field1: Utils.toBase64([0x01])
2161
+ },
2162
+ decryptedFields: {
2163
+ fieldA: 'decryptedValueA'
2164
+ }
2165
+ },
2166
+ {
2167
+ type: Utils.toBase64(new Array(32).fill(1)),
2168
+ subject: '02' + 'a'.repeat(64),
2169
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
2170
+ certifier: '02' + 'c'.repeat(64),
2171
+ revocationOutpoint:
2172
+ 'cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe.1',
2173
+ signature:
2174
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
2175
+ fields: {},
2176
+ certifierInfo: {
2177
+ name: 'Certifier Two',
2178
+ iconUrl: 'https://example.com/icon2.png',
2179
+ description: 'Second certifier',
2180
+ trust: 7
2181
+ },
2182
+ publiclyRevealedKeyring: {},
2183
+ decryptedFields: {
2184
+ fieldB: 'decryptedValueB',
2185
+ fieldC: 'decryptedValueC'
2186
+ }
2187
+ }
2188
+ ]
2189
+ })
2190
+ const wallet = createTestWalletWire(
2191
+ mockUnsupportedMethods({
2192
+ discoverByIdentityKey: discoverByIdentityKeyMock
2193
+ })
2194
+ )
2195
+
2196
+ const args = {
2197
+ identityKey: '02' + 'a'.repeat(64),
2198
+ limit: 10,
2199
+ offset: 0
2200
+ }
2201
+ const result = await wallet.discoverByIdentityKey(args)
2202
+ expect(result).toHaveProperty('totalCertificates', 2)
2203
+ expect(result.certificates.length).toBe(2)
2204
+ expect(result.certificates[0].certifierInfo.name).toBe('Certifier One')
2205
+ expect(result.certificates[1].certifierInfo.name).toBe('Certifier Two')
2206
+ expect(discoverByIdentityKeyMock).toHaveBeenCalledWith(args, '')
2207
+ })
2208
+ })
2209
+
2210
+ describe('discoverByAttributes', () => {
2211
+ it('should discover certificates by attributes with valid inputs', async () => {
2212
+ // Mock the discoverByAttributes method
2213
+ const discoverByAttributesMock = jest.fn().mockResolvedValue({
2214
+ totalCertificates: 1,
2215
+ certificates: [
2216
+ {
2217
+ type: Utils.toBase64(new Array(32).fill(1)),
2218
+ subject: '02' + 'a'.repeat(64),
2219
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
2220
+ certifier: '02' + 'b'.repeat(64),
2221
+ revocationOutpoint:
2222
+ 'deadbeef20248806deadbeef20248806deadbeef20248806deadbeef20248806.0',
2223
+ signature:
2224
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
2225
+ fields: {},
2226
+ certifierInfo: {
2227
+ name: 'Test Certifier',
2228
+ iconUrl: 'https://example.com/icon.png',
2229
+ description: 'Test description',
2230
+ trust: 5
2231
+ },
2232
+ publiclyRevealedKeyring: {},
2233
+ decryptedFields: {}
2234
+ }
2235
+ ]
2236
+ })
2237
+ const wallet = createTestWalletWire(
2238
+ mockUnsupportedMethods({
2239
+ discoverByAttributes: discoverByAttributesMock
2240
+ })
2241
+ )
2242
+
2243
+ const args = {
2244
+ attributes: {
2245
+ field1: 'value1'
2246
+ },
2247
+ limit: 10,
2248
+ offset: 0
2249
+ }
2250
+ const result = await wallet.discoverByAttributes(args)
2251
+ expect(result).toHaveProperty('totalCertificates')
2252
+ expect(result).toHaveProperty('certificates')
2253
+ expect(Array.isArray(result.certificates)).toBe(true)
2254
+ expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '')
2255
+ })
2256
+
2257
+ it('should throw an error with invalid inputs', async () => {
2258
+ // Mock the discoverByAttributes method to throw an error
2259
+ const discoverByAttributesMock = jest
2260
+ .fn()
2261
+ .mockRejectedValue(new Error('Invalid inputs'))
2262
+ const wallet = createTestWalletWire(
2263
+ mockUnsupportedMethods({
2264
+ discoverByAttributes: discoverByAttributesMock
2265
+ })
2266
+ )
2267
+ const args = {
2268
+ attributes: {}
2269
+ }
2270
+ await expect(wallet.discoverByAttributes(args)).rejects.toThrow(
2271
+ 'Invalid inputs'
2272
+ )
2273
+ expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '')
2274
+ })
2275
+ it('should discover certificates matching provided attributes', async () => {
2276
+ // Mock the discoverByAttributes method
2277
+ const discoverByAttributesMock = jest.fn().mockResolvedValue({
2278
+ totalCertificates: 1,
2279
+ certificates: [
2280
+ {
2281
+ type: Utils.toBase64(new Array(32).fill(1)),
2282
+ subject: '02' + 'd'.repeat(64),
2283
+ serialNumber: Utils.toBase64(new Array(32).fill(2)),
2284
+ certifier: '02' + 'e'.repeat(64),
2285
+ revocationOutpoint:
2286
+ 'beadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbeadbead.2',
2287
+ signature:
2288
+ '3045022100e4d03d959697ed191f9ef7ae7deacd3118b8693d18da0fd76e4ad92664ce05cf02200d753951e766cbf2d2b306e08921c06341d2de67ab75389bf84caf954ee40e88',
2289
+ fields: {},
2290
+ certifierInfo: {
2291
+ name: 'Certifier Three',
2292
+ iconUrl: 'https://example.com/icon3.png',
2293
+ description: 'Third certifier',
2294
+ trust: 8
2295
+ },
2296
+ publiclyRevealedKeyring: {
2297
+ fieldX: Utils.toBase64([0x0a, 0x0b])
2298
+ },
2299
+ decryptedFields: {
2300
+ fieldY: 'decryptedValueY'
2301
+ }
2302
+ }
2303
+ ]
2304
+ })
2305
+ const wallet = createTestWalletWire(
2306
+ mockUnsupportedMethods({
2307
+ discoverByAttributes: discoverByAttributesMock
2308
+ })
2309
+ )
2310
+
2311
+ const args = {
2312
+ attributes: {
2313
+ fieldY: 'decryptedValueY'
2314
+ },
2315
+ limit: 5,
2316
+ offset: 0
2317
+ }
2318
+ const result = await wallet.discoverByAttributes(args)
2319
+ expect(result).toHaveProperty('totalCertificates', 1)
2320
+ expect(result.certificates.length).toBe(1)
2321
+ expect(result.certificates[0].certifierInfo.name).toBe('Certifier Three')
2322
+ expect(result.certificates[0].decryptedFields.fieldY).toBe(
2323
+ 'decryptedValueY'
2324
+ )
2325
+ expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '')
2326
+ })
2327
+
2328
+ it('should return empty certificates array when no matches found', async () => {
2329
+ // Mock the discoverByAttributes method
2330
+ const discoverByAttributesMock = jest.fn().mockResolvedValue({
2331
+ totalCertificates: 0,
2332
+ certificates: []
2333
+ })
2334
+ const wallet = createTestWalletWire(
2335
+ mockUnsupportedMethods({
2336
+ discoverByAttributes: discoverByAttributesMock
2337
+ })
2338
+ )
2339
+
2340
+ const args = {
2341
+ attributes: {
2342
+ nonExistentField: 'noValue'
2343
+ },
2344
+ limit: 5,
2345
+ offset: 0
2346
+ }
2347
+ const result = await wallet.discoverByAttributes(args)
2348
+ expect(result).toHaveProperty('totalCertificates', 0)
2349
+ expect(result.certificates.length).toBe(0)
2350
+ expect(discoverByAttributesMock).toHaveBeenCalledWith(args, '')
2351
+ })
2352
+ })
2353
+ })