@ledgerhq/device-signer-kit-bitcoin 0.0.0-signer-eth-plugin-fix-20250331141239 → 0.0.0-test-attest-npmjs-1-20251120163531

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 (311) hide show
  1. package/lib/cjs/api/SignerBtc.js +1 -1
  2. package/lib/cjs/api/SignerBtc.js.map +1 -1
  3. package/lib/cjs/api/{SignerBtcBuiilder.test.js → SignerBtcBuilder.test.js} +1 -1
  4. package/lib/cjs/api/{SignerBtcBuiilder.test.js.map → SignerBtcBuilder.test.js.map} +1 -1
  5. package/lib/cjs/api/app-binder/GetExtendedPublicKeyDeviceActionTypes.js +1 -1
  6. package/lib/cjs/api/app-binder/GetExtendedPublicKeyDeviceActionTypes.js.map +1 -1
  7. package/lib/cjs/api/app-binder/GetWalletAddressDeviceActionTypes.js.map +1 -1
  8. package/lib/cjs/api/app-binder/SignPsbtDeviceActionTypes.js +1 -1
  9. package/lib/cjs/api/app-binder/SignPsbtDeviceActionTypes.js.map +1 -1
  10. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  11. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
  12. package/lib/cjs/api/model/AddressOptions.js +1 -1
  13. package/lib/cjs/api/model/AddressOptions.js.map +1 -1
  14. package/lib/cjs/api/model/MessageOptions.js +2 -0
  15. package/lib/cjs/api/model/MessageOptions.js.map +7 -0
  16. package/lib/cjs/api/model/PsbtOptions.js +2 -0
  17. package/lib/cjs/api/model/PsbtOptions.js.map +7 -0
  18. package/lib/cjs/api/model/WalletAddressOptions.js +1 -1
  19. package/lib/cjs/api/model/WalletAddressOptions.js.map +1 -1
  20. package/lib/cjs/internal/DefaultSignerBtc.js +1 -1
  21. package/lib/cjs/internal/DefaultSignerBtc.js.map +3 -3
  22. package/lib/cjs/internal/DefaultSignerBtc.test.js +1 -1
  23. package/lib/cjs/internal/DefaultSignerBtc.test.js.map +2 -2
  24. package/lib/cjs/internal/app-binder/BtcAppBinder.js +1 -1
  25. package/lib/cjs/internal/app-binder/BtcAppBinder.js.map +2 -2
  26. package/lib/cjs/internal/app-binder/BtcAppBinder.test.js +1 -1
  27. package/lib/cjs/internal/app-binder/BtcAppBinder.test.js.map +2 -2
  28. package/lib/cjs/internal/app-binder/command/ContinueCommand.js +1 -1
  29. package/lib/cjs/internal/app-binder/command/ContinueCommand.js.map +2 -2
  30. package/lib/cjs/internal/app-binder/command/ContinueCommand.test.js +1 -1
  31. package/lib/cjs/internal/app-binder/command/ContinueCommand.test.js.map +3 -3
  32. package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.js +1 -1
  33. package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.js.map +2 -2
  34. package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js +1 -1
  35. package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js.map +2 -2
  36. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.js +1 -1
  37. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.js.map +2 -2
  38. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.test.js +1 -1
  39. package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.test.js.map +2 -2
  40. package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.js +1 -1
  41. package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.js.map +2 -2
  42. package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.test.js +1 -1
  43. package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.test.js.map +2 -2
  44. package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.js +1 -1
  45. package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.js.map +2 -2
  46. package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
  47. package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +2 -2
  48. package/lib/cjs/internal/app-binder/command/SignMessageCommand.js +1 -1
  49. package/lib/cjs/internal/app-binder/command/SignMessageCommand.js.map +2 -2
  50. package/lib/cjs/internal/app-binder/command/SignMessageCommand.test.js +1 -1
  51. package/lib/cjs/internal/app-binder/command/SignMessageCommand.test.js.map +3 -3
  52. package/lib/cjs/internal/app-binder/command/SignPsbtCommand.js +1 -1
  53. package/lib/cjs/internal/app-binder/command/SignPsbtCommand.js.map +2 -2
  54. package/lib/cjs/internal/app-binder/command/SignPsbtCommand.test.js +1 -1
  55. package/lib/cjs/internal/app-binder/command/SignPsbtCommand.test.js.map +2 -2
  56. package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js +1 -1
  57. package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js.map +2 -2
  58. package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +1 -1
  59. package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +2 -2
  60. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.js +1 -1
  61. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.js.map +2 -2
  62. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js +1 -1
  63. package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js.map +2 -2
  64. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  65. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +2 -2
  66. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  67. package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  68. package/lib/cjs/internal/app-binder/di/appBinderModule.js +1 -1
  69. package/lib/cjs/internal/app-binder/di/appBinderModule.js.map +3 -3
  70. package/lib/cjs/internal/app-binder/di/appBinderModule.test.js +1 -1
  71. package/lib/cjs/internal/app-binder/di/appBinderModule.test.js.map +2 -2
  72. package/lib/cjs/internal/app-binder/di/appBinderTypes.js +1 -1
  73. package/lib/cjs/internal/app-binder/di/appBinderTypes.js.map +2 -2
  74. package/lib/cjs/internal/data-store/di/dataStoreModule.js +1 -1
  75. package/lib/cjs/internal/data-store/di/dataStoreModule.js.map +3 -3
  76. package/lib/cjs/internal/data-store/di/dataStoreModule.test.js +1 -1
  77. package/lib/cjs/internal/data-store/di/dataStoreModule.test.js.map +2 -2
  78. package/lib/cjs/internal/di.js +1 -1
  79. package/lib/cjs/internal/di.js.map +2 -2
  80. package/lib/cjs/internal/merkle-tree/di/merkleTreeModule.js +1 -1
  81. package/lib/cjs/internal/merkle-tree/di/merkleTreeModule.js.map +3 -3
  82. package/lib/cjs/internal/merkle-tree/di/merkleTreeModule.test.js +1 -1
  83. package/lib/cjs/internal/merkle-tree/di/merkleTreeModule.test.js.map +2 -2
  84. package/lib/cjs/internal/psbt/di/psbtModule.js +1 -1
  85. package/lib/cjs/internal/psbt/di/psbtModule.js.map +3 -3
  86. package/lib/cjs/internal/psbt/di/psbtModule.test.js +1 -1
  87. package/lib/cjs/internal/psbt/di/psbtModule.test.js.map +2 -2
  88. package/lib/cjs/internal/psbt/model/Key.js +1 -1
  89. package/lib/cjs/internal/psbt/model/Key.js.map +2 -2
  90. package/lib/cjs/internal/psbt/service/key-pair/DefaultKeyPairSerializer.test.js +1 -1
  91. package/lib/cjs/internal/psbt/service/key-pair/DefaultKeyPairSerializer.test.js.map +1 -1
  92. package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtSerializer.js +1 -1
  93. package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtSerializer.js.map +2 -2
  94. package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtV2Normalizer.js +1 -1
  95. package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtV2Normalizer.js.map +2 -2
  96. package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
  97. package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
  98. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
  99. package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
  100. package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.js +1 -1
  101. package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.js.map +2 -2
  102. package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js +1 -1
  103. package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js.map +2 -2
  104. package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.js +1 -1
  105. package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.js.map +3 -3
  106. package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js +1 -1
  107. package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js.map +3 -3
  108. package/lib/cjs/internal/use-cases/sign-message/SignMessageUseCase.js +1 -1
  109. package/lib/cjs/internal/use-cases/sign-message/SignMessageUseCase.js.map +3 -3
  110. package/lib/cjs/internal/use-cases/sign-message/SignMessageUseCase.test.js +1 -1
  111. package/lib/cjs/internal/use-cases/sign-message/SignMessageUseCase.test.js.map +2 -2
  112. package/lib/cjs/internal/use-cases/sign-psbt/SignPsbtUseCase.js +1 -1
  113. package/lib/cjs/internal/use-cases/sign-psbt/SignPsbtUseCase.js.map +3 -3
  114. package/lib/cjs/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js +1 -1
  115. package/lib/cjs/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js.map +3 -3
  116. package/lib/cjs/internal/use-cases/sign-transaction/SignTransactionUseCase.js +1 -1
  117. package/lib/cjs/internal/use-cases/sign-transaction/SignTransactionUseCase.js.map +3 -3
  118. package/lib/cjs/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js +1 -1
  119. package/lib/cjs/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js.map +3 -3
  120. package/lib/cjs/internal/wallet/di/walletModule.js +1 -1
  121. package/lib/cjs/internal/wallet/di/walletModule.js.map +3 -3
  122. package/lib/cjs/internal/wallet/di/walletModule.test.js +1 -1
  123. package/lib/cjs/internal/wallet/di/walletModule.test.js.map +2 -2
  124. package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.js +1 -1
  125. package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.js.map +2 -2
  126. package/lib/cjs/package.json +13 -14
  127. package/lib/esm/api/{SignerBtcBuiilder.test.js → SignerBtcBuilder.test.js} +1 -1
  128. package/lib/esm/api/{SignerBtcBuiilder.test.js.map → SignerBtcBuilder.test.js.map} +1 -1
  129. package/lib/esm/api/model/MessageOptions.js +1 -0
  130. package/lib/esm/api/model/MessageOptions.js.map +7 -0
  131. package/lib/esm/api/model/PsbtOptions.js +1 -0
  132. package/lib/esm/api/model/PsbtOptions.js.map +7 -0
  133. package/lib/esm/internal/DefaultSignerBtc.js +1 -1
  134. package/lib/esm/internal/DefaultSignerBtc.js.map +3 -3
  135. package/lib/esm/internal/DefaultSignerBtc.test.js +1 -1
  136. package/lib/esm/internal/DefaultSignerBtc.test.js.map +2 -2
  137. package/lib/esm/internal/app-binder/BtcAppBinder.js +1 -1
  138. package/lib/esm/internal/app-binder/BtcAppBinder.js.map +2 -2
  139. package/lib/esm/internal/app-binder/BtcAppBinder.test.js +1 -1
  140. package/lib/esm/internal/app-binder/BtcAppBinder.test.js.map +2 -2
  141. package/lib/esm/internal/app-binder/command/ContinueCommand.js +1 -1
  142. package/lib/esm/internal/app-binder/command/ContinueCommand.js.map +2 -2
  143. package/lib/esm/internal/app-binder/command/ContinueCommand.test.js +1 -1
  144. package/lib/esm/internal/app-binder/command/ContinueCommand.test.js.map +3 -3
  145. package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.js +1 -1
  146. package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.js.map +2 -2
  147. package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js +1 -1
  148. package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js.map +2 -2
  149. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.js +1 -1
  150. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.js.map +2 -2
  151. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.test.js +1 -1
  152. package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.test.js.map +2 -2
  153. package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.js +1 -1
  154. package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.js.map +2 -2
  155. package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.test.js +1 -1
  156. package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.test.js.map +2 -2
  157. package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.js +1 -1
  158. package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.js.map +2 -2
  159. package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
  160. package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +2 -2
  161. package/lib/esm/internal/app-binder/command/SignMessageCommand.js +1 -1
  162. package/lib/esm/internal/app-binder/command/SignMessageCommand.js.map +2 -2
  163. package/lib/esm/internal/app-binder/command/SignMessageCommand.test.js +1 -1
  164. package/lib/esm/internal/app-binder/command/SignMessageCommand.test.js.map +3 -3
  165. package/lib/esm/internal/app-binder/command/SignPsbtCommand.js +1 -1
  166. package/lib/esm/internal/app-binder/command/SignPsbtCommand.js.map +2 -2
  167. package/lib/esm/internal/app-binder/command/SignPsbtCommand.test.js +1 -1
  168. package/lib/esm/internal/app-binder/command/SignPsbtCommand.test.js.map +2 -2
  169. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js +1 -1
  170. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js.map +2 -2
  171. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +1 -1
  172. package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +2 -2
  173. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.js +1 -1
  174. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.js.map +2 -2
  175. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js +1 -1
  176. package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js.map +2 -2
  177. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  178. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +2 -2
  179. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
  180. package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
  181. package/lib/esm/internal/app-binder/di/appBinderModule.js +1 -1
  182. package/lib/esm/internal/app-binder/di/appBinderModule.js.map +3 -3
  183. package/lib/esm/internal/app-binder/di/appBinderModule.test.js +1 -1
  184. package/lib/esm/internal/app-binder/di/appBinderModule.test.js.map +2 -2
  185. package/lib/esm/internal/app-binder/di/appBinderTypes.js +1 -1
  186. package/lib/esm/internal/app-binder/di/appBinderTypes.js.map +2 -2
  187. package/lib/esm/internal/data-store/di/dataStoreModule.js +1 -1
  188. package/lib/esm/internal/data-store/di/dataStoreModule.js.map +3 -3
  189. package/lib/esm/internal/data-store/di/dataStoreModule.test.js +1 -1
  190. package/lib/esm/internal/data-store/di/dataStoreModule.test.js.map +2 -2
  191. package/lib/esm/internal/di.js +1 -1
  192. package/lib/esm/internal/di.js.map +2 -2
  193. package/lib/esm/internal/merkle-tree/di/merkleTreeModule.js +1 -1
  194. package/lib/esm/internal/merkle-tree/di/merkleTreeModule.js.map +3 -3
  195. package/lib/esm/internal/merkle-tree/di/merkleTreeModule.test.js +1 -1
  196. package/lib/esm/internal/merkle-tree/di/merkleTreeModule.test.js.map +2 -2
  197. package/lib/esm/internal/psbt/di/psbtModule.js +1 -1
  198. package/lib/esm/internal/psbt/di/psbtModule.js.map +3 -3
  199. package/lib/esm/internal/psbt/di/psbtModule.test.js +1 -1
  200. package/lib/esm/internal/psbt/di/psbtModule.test.js.map +2 -2
  201. package/lib/esm/internal/psbt/model/Key.js +1 -1
  202. package/lib/esm/internal/psbt/model/Key.js.map +2 -2
  203. package/lib/esm/internal/psbt/service/key-pair/DefaultKeyPairSerializer.test.js +1 -1
  204. package/lib/esm/internal/psbt/service/key-pair/DefaultKeyPairSerializer.test.js.map +1 -1
  205. package/lib/esm/internal/psbt/service/psbt/DefaultPsbtSerializer.js +1 -1
  206. package/lib/esm/internal/psbt/service/psbt/DefaultPsbtSerializer.js.map +2 -2
  207. package/lib/esm/internal/psbt/service/psbt/DefaultPsbtV2Normalizer.js +1 -1
  208. package/lib/esm/internal/psbt/service/psbt/DefaultPsbtV2Normalizer.js.map +2 -2
  209. package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
  210. package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
  211. package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
  212. package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
  213. package/lib/esm/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.js +1 -1
  214. package/lib/esm/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.js.map +2 -2
  215. package/lib/esm/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js +1 -1
  216. package/lib/esm/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js.map +2 -2
  217. package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.js +1 -1
  218. package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.js.map +3 -3
  219. package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js +1 -1
  220. package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js.map +3 -3
  221. package/lib/esm/internal/use-cases/sign-message/SignMessageUseCase.js +1 -1
  222. package/lib/esm/internal/use-cases/sign-message/SignMessageUseCase.js.map +3 -3
  223. package/lib/esm/internal/use-cases/sign-message/SignMessageUseCase.test.js +1 -1
  224. package/lib/esm/internal/use-cases/sign-message/SignMessageUseCase.test.js.map +2 -2
  225. package/lib/esm/internal/use-cases/sign-psbt/SignPsbtUseCase.js +1 -1
  226. package/lib/esm/internal/use-cases/sign-psbt/SignPsbtUseCase.js.map +3 -3
  227. package/lib/esm/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js +1 -1
  228. package/lib/esm/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js.map +3 -3
  229. package/lib/esm/internal/use-cases/sign-transaction/SignTransactionUseCase.js +1 -1
  230. package/lib/esm/internal/use-cases/sign-transaction/SignTransactionUseCase.js.map +3 -3
  231. package/lib/esm/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js +1 -1
  232. package/lib/esm/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js.map +3 -3
  233. package/lib/esm/internal/wallet/di/walletModule.js +1 -1
  234. package/lib/esm/internal/wallet/di/walletModule.js.map +3 -3
  235. package/lib/esm/internal/wallet/di/walletModule.test.js +1 -1
  236. package/lib/esm/internal/wallet/di/walletModule.test.js.map +2 -2
  237. package/lib/esm/internal/wallet/service/DefaultWalletBuilder.js +1 -1
  238. package/lib/esm/internal/wallet/service/DefaultWalletBuilder.js.map +2 -2
  239. package/lib/esm/package.json +13 -14
  240. package/lib/types/api/SignerBtc.d.ts +7 -5
  241. package/lib/types/api/SignerBtc.d.ts.map +1 -1
  242. package/lib/types/api/SignerBtcBuilder.test.d.ts +2 -0
  243. package/lib/types/api/SignerBtcBuilder.test.d.ts.map +1 -0
  244. package/lib/types/api/app-binder/GetExtendedPublicKeyDeviceActionTypes.d.ts +3 -1
  245. package/lib/types/api/app-binder/GetExtendedPublicKeyDeviceActionTypes.d.ts.map +1 -1
  246. package/lib/types/api/app-binder/GetWalletAddressDeviceActionTypes.d.ts +1 -0
  247. package/lib/types/api/app-binder/GetWalletAddressDeviceActionTypes.d.ts.map +1 -1
  248. package/lib/types/api/app-binder/SignPsbtDeviceActionTypes.d.ts +1 -0
  249. package/lib/types/api/app-binder/SignPsbtDeviceActionTypes.d.ts.map +1 -1
  250. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +1 -0
  251. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  252. package/lib/types/api/model/AddressOptions.d.ts +1 -0
  253. package/lib/types/api/model/AddressOptions.d.ts.map +1 -1
  254. package/lib/types/api/model/MessageOptions.d.ts +4 -0
  255. package/lib/types/api/model/MessageOptions.d.ts.map +1 -0
  256. package/lib/types/api/model/PsbtOptions.d.ts +4 -0
  257. package/lib/types/api/model/PsbtOptions.d.ts.map +1 -0
  258. package/lib/types/api/model/Signature.d.ts.map +1 -1
  259. package/lib/types/api/model/WalletAddressOptions.d.ts +1 -0
  260. package/lib/types/api/model/WalletAddressOptions.d.ts.map +1 -1
  261. package/lib/types/internal/DefaultSignerBtc.d.ts +7 -5
  262. package/lib/types/internal/DefaultSignerBtc.d.ts.map +1 -1
  263. package/lib/types/internal/app-binder/BtcAppBinder.d.ts +4 -0
  264. package/lib/types/internal/app-binder/BtcAppBinder.d.ts.map +1 -1
  265. package/lib/types/internal/app-binder/command/ContinueCommand.d.ts +1 -0
  266. package/lib/types/internal/app-binder/command/ContinueCommand.d.ts.map +1 -1
  267. package/lib/types/internal/app-binder/command/GetExtendedPublicKeyCommand.d.ts +1 -0
  268. package/lib/types/internal/app-binder/command/GetExtendedPublicKeyCommand.d.ts.map +1 -1
  269. package/lib/types/internal/app-binder/command/GetMasterFingerprintCommand.d.ts +1 -0
  270. package/lib/types/internal/app-binder/command/GetMasterFingerprintCommand.d.ts.map +1 -1
  271. package/lib/types/internal/app-binder/command/GetWalletAddressCommand.d.ts +1 -0
  272. package/lib/types/internal/app-binder/command/GetWalletAddressCommand.d.ts.map +1 -1
  273. package/lib/types/internal/app-binder/command/RegisterWalletAddressCommand.d.ts +1 -0
  274. package/lib/types/internal/app-binder/command/RegisterWalletAddressCommand.d.ts.map +1 -1
  275. package/lib/types/internal/app-binder/command/SignMessageCommand.d.ts +1 -0
  276. package/lib/types/internal/app-binder/command/SignMessageCommand.d.ts.map +1 -1
  277. package/lib/types/internal/app-binder/command/SignPsbtCommand.d.ts +1 -0
  278. package/lib/types/internal/app-binder/command/SignPsbtCommand.d.ts.map +1 -1
  279. package/lib/types/internal/app-binder/command/utils/bitcoinAppErrors.d.ts.map +1 -1
  280. package/lib/types/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.d.ts.map +1 -1
  281. package/lib/types/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.d.ts.map +1 -1
  282. package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
  283. package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
  284. package/lib/types/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.d.ts.map +1 -1
  285. package/lib/types/internal/app-binder/di/appBinderModule.d.ts.map +1 -1
  286. package/lib/types/internal/app-binder/di/appBinderTypes.d.ts +0 -1
  287. package/lib/types/internal/app-binder/di/appBinderTypes.d.ts.map +1 -1
  288. package/lib/types/internal/app-binder/task/GetWalletAddressTask.d.ts.map +1 -1
  289. package/lib/types/internal/app-binder/task/SignMessageTask.d.ts.map +1 -1
  290. package/lib/types/internal/app-binder/task/SignPsbtTask.d.ts.map +1 -1
  291. package/lib/types/internal/data-store/di/dataStoreModule.d.ts.map +1 -1
  292. package/lib/types/internal/di.d.ts.map +1 -1
  293. package/lib/types/internal/merkle-tree/di/merkleTreeModule.d.ts.map +1 -1
  294. package/lib/types/internal/psbt/di/psbtModule.d.ts.map +1 -1
  295. package/lib/types/internal/psbt/service/psbt/DefaultPsbtSerializer.d.ts +2 -2
  296. package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
  297. package/lib/types/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.d.ts +1 -0
  298. package/lib/types/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.d.ts.map +1 -1
  299. package/lib/types/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.d.ts +1 -1
  300. package/lib/types/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.d.ts.map +1 -1
  301. package/lib/types/internal/use-cases/sign-message/SignMessageUseCase.d.ts +1 -1
  302. package/lib/types/internal/use-cases/sign-message/SignMessageUseCase.d.ts.map +1 -1
  303. package/lib/types/internal/use-cases/sign-psbt/SignPsbtUseCase.d.ts +1 -1
  304. package/lib/types/internal/use-cases/sign-psbt/SignPsbtUseCase.d.ts.map +1 -1
  305. package/lib/types/internal/use-cases/sign-transaction/SignTransactionUseCase.d.ts +1 -1
  306. package/lib/types/internal/use-cases/sign-transaction/SignTransactionUseCase.d.ts.map +1 -1
  307. package/lib/types/internal/wallet/di/walletModule.d.ts.map +1 -1
  308. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  309. package/package.json +14 -15
  310. package/lib/types/api/SignerBtcBuiilder.test.d.ts +0 -2
  311. package/lib/types/api/SignerBtcBuiilder.test.d.ts.map +0 -1
@@ -1,2 +1,2 @@
1
- import{ApduResponse as c,CommandResultFactory as n,InvalidStatusWordError as d,isSuccessCommandResult as r}from"@ledgerhq/device-management-kit";import{RegisterWalletAddressCommand as o}from"../../app-binder/command/RegisterWalletAddressCommand";const l=Uint8Array.from([124,103,232,79,153,116,70,113,20,147,239,139,116,112,177,15,96,75,2,210,88,79,160,68,111,206,247,217,137,131,227,220]),i=2,f=Uint8Array.from([75,197,70,127,36,147,133,178,158,91,142,201,251,36,204,101,163,113,11,26,38,210,141,233,245,196,243,244,93,214,84,193]),A=Uint8Array.from([2,12,67,111,108,100,32,115,116,111,114,97,103,101,30]),m=2,t=Uint8Array.from([m].concat(...A).concat(...l).concat([i]).concat(...f)),u=Uint8Array.from([225,2,0,1,81].concat(...t)),a=Uint8Array.from([29,21,14,212,37,168,113,165,202,126,44,85,219,27,50,149,193,253,151,20,127,208,167,177,136,212,50,127,75,167,64,42,250,115,227,97,25,50,79,190,76,193,202,148,170,132,44,98,97,82,109,68,17,42,34,22,75,197,124,51,53,16,43,4]);describe("RegisterWalletAddressCommand",()=>{describe("getApdu",()=>{it("should send the correct APDU",()=>{const x=new o({walletPolicy:t});expect(x.getApdu().getRawApdu()).toEqual(u)})}),describe("parseResponse",()=>{it("should parse the response correctly",()=>{const x=new o({walletPolicy:t}),e=new c({statusCode:new Uint8Array([144,0]),data:a});expect(x.parseResponse(e)).toEqual(n({data:{walletId:a.slice(0,32),walletHmac:a.slice(32)}}))}),it("should return an error if the response is not successful",()=>{const x=new o({walletPolicy:t}),e=new c({statusCode:Uint8Array.from([109,0]),data:new Uint8Array(0)}),s=x.parseResponse(e);expect(r(s)).toBe(!1)}),it("should return an error if the response is too short",()=>{const x=new o({walletPolicy:t}),e=new c({data:a.slice(0,2),statusCode:new Uint8Array([144,0])}),s=x.parseResponse(e);r(s)?assert.fail("Expected an error, but the result was successful"):expect(s.error).toEqual(new d("Data mismatch"))})})});
1
+ import{ApduResponse as o,CommandResultFactory as n,InvalidStatusWordError as d,isSuccessCommandResult as c}from"@ledgerhq/device-management-kit";import{RegisterWalletAddressCommand as s}from"../../app-binder/command/RegisterWalletAddressCommand";const l=Uint8Array.from([124,103,232,79,153,116,70,113,20,147,239,139,116,112,177,15,96,75,2,210,88,79,160,68,111,206,247,217,137,131,227,220]),i=2,f=Uint8Array.from([75,197,70,127,36,147,133,178,158,91,142,201,251,36,204,101,163,113,11,26,38,210,141,233,245,196,243,244,93,214,84,193]),m=Uint8Array.from([2,12,67,111,108,100,32,115,116,111,114,97,103,101,30]),A=2,e=Uint8Array.from([A].concat(...m).concat(...l).concat([i]).concat(...f)),u=Uint8Array.from([225,2,0,1,81].concat(...e)),a=Uint8Array.from([29,21,14,212,37,168,113,165,202,126,44,85,219,27,50,149,193,253,151,20,127,208,167,177,136,212,50,127,75,167,64,42,250,115,227,97,25,50,79,190,76,193,202,148,170,132,44,98,97,82,109,68,17,42,34,22,75,197,124,51,53,16,43,4]);describe("RegisterWalletAddressCommand",()=>{describe("name",()=>{it("should be 'registerWalletAddress'",()=>{const x=new s({walletPolicy:e});expect(x.name).toBe("registerWalletAddress")})}),describe("getApdu",()=>{it("should send the correct APDU",()=>{const x=new s({walletPolicy:e});expect(x.getApdu().getRawApdu()).toEqual(u)})}),describe("parseResponse",()=>{it("should parse the response correctly",()=>{const x=new s({walletPolicy:e}),t=new o({statusCode:new Uint8Array([144,0]),data:a});expect(x.parseResponse(t)).toEqual(n({data:{walletId:a.slice(0,32),walletHmac:a.slice(32)}}))}),it("should return an error if the response is not successful",()=>{const x=new s({walletPolicy:e}),t=new o({statusCode:Uint8Array.from([109,0]),data:new Uint8Array(0)}),r=x.parseResponse(t);expect(c(r)).toBe(!1)}),it("should return an error if the response is too short",()=>{const x=new s({walletPolicy:e}),t=new o({data:a.slice(0,2),statusCode:new Uint8Array([144,0])}),r=x.parseResponse(t);c(r)?assert.fail("Expected an error, but the result was successful"):expect(r.error).toEqual(new d("Data mismatch"))})})});
2
2
  //# sourceMappingURL=RegisterWalletAddressCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/RegisterWalletAddressCommand.test.ts"],
4
- "sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { RegisterWalletAddressCommand } from \"@internal/app-binder/command/RegisterWalletAddressCommand\";\n\nconst POLICY_HASH_DATA = Uint8Array.from([\n 0x7c, 0x67, 0xe8, 0x4f, 0x99, 0x74, 0x46, 0x71, 0x14, 0x93, 0xef, 0x8b, 0x74,\n 0x70, 0xb1, 0x0f, 0x60, 0x4b, 0x02, 0xd2, 0x58, 0x4f, 0xa0, 0x44, 0x6f, 0xce,\n 0xf7, 0xd9, 0x89, 0x83, 0xe3, 0xdc,\n]);\nconst KEYS_LENGTH = 0x02;\nconst KEYS_HASH_DATA = Uint8Array.from([\n 0x4b, 0xc5, 0x46, 0x7f, 0x24, 0x93, 0x85, 0xb2, 0x9e, 0x5b, 0x8e, 0xc9, 0xfb,\n 0x24, 0xcc, 0x65, 0xa3, 0x71, 0x0b, 0x1a, 0x26, 0xd2, 0x8d, 0xe9, 0xf5, 0xc4,\n 0xf3, 0xf4, 0x5d, 0xd6, 0x54, 0xc1,\n]);\nconst POLICY_NAME_DATA = Uint8Array.from([\n 0x02, 0x0c, 0x43, 0x6f, 0x6c, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,\n 0x65, 0x1e,\n]);\nconst POLICY_VERSION = 0x02;\nconst WALLET_POLICY_DATA = Uint8Array.from(\n [POLICY_VERSION]\n .concat(...POLICY_NAME_DATA)\n .concat(...POLICY_HASH_DATA)\n .concat([KEYS_LENGTH])\n .concat(...KEYS_HASH_DATA),\n);\nconst EXPECTED_RAW_APDU = Uint8Array.from(\n [0xe1, 0x02, 0x00, 0x01, 0x51].concat(...WALLET_POLICY_DATA),\n);\nconst APDU_RESPONSE = Uint8Array.from([\n 0x1d, 0x15, 0x0e, 0xd4, 0x25, 0xa8, 0x71, 0xa5, 0xca, 0x7e, 0x2c, 0x55, 0xdb,\n 0x1b, 0x32, 0x95, 0xc1, 0xfd, 0x97, 0x14, 0x7f, 0xd0, 0xa7, 0xb1, 0x88, 0xd4,\n 0x32, 0x7f, 0x4b, 0xa7, 0x40, 0x2a, 0xfa, 0x73, 0xe3, 0x61, 0x19, 0x32, 0x4f,\n 0xbe, 0x4c, 0xc1, 0xca, 0x94, 0xaa, 0x84, 0x2c, 0x62, 0x61, 0x52, 0x6d, 0x44,\n 0x11, 0x2a, 0x22, 0x16, 0x4b, 0xc5, 0x7c, 0x33, 0x35, 0x10, 0x2b, 0x04,\n]);\n\ndescribe(\"RegisterWalletAddressCommand\", () => {\n describe(\"getApdu\", () => {\n it(\"should send the correct APDU\", () => {\n // when\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n\n // then\n expect(command.getApdu().getRawApdu()).toEqual(EXPECTED_RAW_APDU);\n });\n });\n describe(\"parseResponse\", () => {\n it(\"should parse the response correctly\", () => {\n // given\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n const response = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: APDU_RESPONSE,\n });\n\n // then\n expect(command.parseResponse(response)).toEqual(\n CommandResultFactory({\n data: {\n walletId: APDU_RESPONSE.slice(0, 32),\n walletHmac: APDU_RESPONSE.slice(32),\n },\n }),\n );\n });\n\n it(\"should return an error if the response is not successful\", () => {\n // given\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6d, 0x00]),\n data: new Uint8Array(0),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n it(\"should return an error if the response is too short\", () => {\n // given\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n const response = new ApduResponse({\n data: APDU_RESPONSE.slice(0, 2),\n statusCode: new Uint8Array([0x90, 0x00]),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n if (!isSuccessCommandResult(result)) {\n expect(result.error).toEqual(\n new InvalidStatusWordError(\"Data mismatch\"),\n );\n } else {\n assert.fail(\"Expected an error, but the result was successful\");\n }\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { RegisterWalletAddressCommand } from \"@internal/app-binder/command/RegisterWalletAddressCommand\";\n\nconst POLICY_HASH_DATA = Uint8Array.from([\n 0x7c, 0x67, 0xe8, 0x4f, 0x99, 0x74, 0x46, 0x71, 0x14, 0x93, 0xef, 0x8b, 0x74,\n 0x70, 0xb1, 0x0f, 0x60, 0x4b, 0x02, 0xd2, 0x58, 0x4f, 0xa0, 0x44, 0x6f, 0xce,\n 0xf7, 0xd9, 0x89, 0x83, 0xe3, 0xdc,\n]);\nconst KEYS_LENGTH = 0x02;\nconst KEYS_HASH_DATA = Uint8Array.from([\n 0x4b, 0xc5, 0x46, 0x7f, 0x24, 0x93, 0x85, 0xb2, 0x9e, 0x5b, 0x8e, 0xc9, 0xfb,\n 0x24, 0xcc, 0x65, 0xa3, 0x71, 0x0b, 0x1a, 0x26, 0xd2, 0x8d, 0xe9, 0xf5, 0xc4,\n 0xf3, 0xf4, 0x5d, 0xd6, 0x54, 0xc1,\n]);\nconst POLICY_NAME_DATA = Uint8Array.from([\n 0x02, 0x0c, 0x43, 0x6f, 0x6c, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,\n 0x65, 0x1e,\n]);\nconst POLICY_VERSION = 0x02;\nconst WALLET_POLICY_DATA = Uint8Array.from(\n [POLICY_VERSION]\n .concat(...POLICY_NAME_DATA)\n .concat(...POLICY_HASH_DATA)\n .concat([KEYS_LENGTH])\n .concat(...KEYS_HASH_DATA),\n);\nconst EXPECTED_RAW_APDU = Uint8Array.from(\n [0xe1, 0x02, 0x00, 0x01, 0x51].concat(...WALLET_POLICY_DATA),\n);\nconst APDU_RESPONSE = Uint8Array.from([\n 0x1d, 0x15, 0x0e, 0xd4, 0x25, 0xa8, 0x71, 0xa5, 0xca, 0x7e, 0x2c, 0x55, 0xdb,\n 0x1b, 0x32, 0x95, 0xc1, 0xfd, 0x97, 0x14, 0x7f, 0xd0, 0xa7, 0xb1, 0x88, 0xd4,\n 0x32, 0x7f, 0x4b, 0xa7, 0x40, 0x2a, 0xfa, 0x73, 0xe3, 0x61, 0x19, 0x32, 0x4f,\n 0xbe, 0x4c, 0xc1, 0xca, 0x94, 0xaa, 0x84, 0x2c, 0x62, 0x61, 0x52, 0x6d, 0x44,\n 0x11, 0x2a, 0x22, 0x16, 0x4b, 0xc5, 0x7c, 0x33, 0x35, 0x10, 0x2b, 0x04,\n]);\n\ndescribe(\"RegisterWalletAddressCommand\", () => {\n describe(\"name\", () => {\n it(\"should be 'registerWalletAddress'\", () => {\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n expect(command.name).toBe(\"registerWalletAddress\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should send the correct APDU\", () => {\n // when\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n\n // then\n expect(command.getApdu().getRawApdu()).toEqual(EXPECTED_RAW_APDU);\n });\n });\n describe(\"parseResponse\", () => {\n it(\"should parse the response correctly\", () => {\n // given\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n const response = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: APDU_RESPONSE,\n });\n\n // then\n expect(command.parseResponse(response)).toEqual(\n CommandResultFactory({\n data: {\n walletId: APDU_RESPONSE.slice(0, 32),\n walletHmac: APDU_RESPONSE.slice(32),\n },\n }),\n );\n });\n\n it(\"should return an error if the response is not successful\", () => {\n // given\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6d, 0x00]),\n data: new Uint8Array(0),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n it(\"should return an error if the response is too short\", () => {\n // given\n const command = new RegisterWalletAddressCommand({\n walletPolicy: WALLET_POLICY_DATA,\n });\n const response = new ApduResponse({\n data: APDU_RESPONSE.slice(0, 2),\n statusCode: new Uint8Array([0x90, 0x00]),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n if (!isSuccessCommandResult(result)) {\n expect(result.error).toEqual(\n new InvalidStatusWordError(\"Data mismatch\"),\n );\n } else {\n assert.fail(\"Expected an error, but the result was successful\");\n }\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["ApduResponse", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "RegisterWalletAddressCommand", "POLICY_HASH_DATA", "KEYS_LENGTH", "KEYS_HASH_DATA", "POLICY_NAME_DATA", "POLICY_VERSION", "WALLET_POLICY_DATA", "EXPECTED_RAW_APDU", "APDU_RESPONSE", "command", "response", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as n,CommandResultFactory as m}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as d,DerivationPathUtils as p}from"@ledgerhq/signer-utils";import{Maybe as i}from"purify-ts";import{PROTOCOL_VERSION as g}from"../../app-binder/command/utils/constants";import{BtcCommandUtils as l}from"../../utils/BtcCommandUtils";import{encodeVarint as C}from"../../utils/Varint";import{BTC_APP_ERRORS as u,BtcAppCommandErrorFactory as c}from"./utils/bitcoinAppErrors";class E{constructor(e,o=new d(u,c,l.isSuccessResponse)){this._args=e;this._errorHelper=o}getApdu(){const{derivationPath:e,messageLength:o,messageMerkleRoot:t}=this._args,r=new n({cla:225,ins:16,p1:0,p2:g}),s=p.splitPath(e);return r.add8BitUIntToData(s.length),s.forEach(a=>{r.add32BitUIntToData(a)}),r.addBufferToData(C(o).unsafeCoerce()).addBufferToData(t).build()}parseResponse(e){return i.fromNullable(this._errorHelper.getError(e)).orDefault(m({data:e}))}}export{E as SignMessageCommand};
1
+ import{ApduBuilder as n,CommandResultFactory as m}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as d,DerivationPathUtils as p}from"@ledgerhq/signer-utils";import{Maybe as i}from"purify-ts";import{PROTOCOL_VERSION as g}from"../../app-binder/command/utils/constants";import{BtcCommandUtils as l}from"../../utils/BtcCommandUtils";import{encodeVarint as C}from"../../utils/Varint";import{BTC_APP_ERRORS as u,BtcAppCommandErrorFactory as c}from"./utils/bitcoinAppErrors";class E{constructor(e,o=new d(u,c,l.isSuccessResponse)){this._args=e;this._errorHelper=o}name="signMessage";getApdu(){const{derivationPath:e,messageLength:o,messageMerkleRoot:a}=this._args,r=new n({cla:225,ins:16,p1:0,p2:g}),s=p.splitPath(e);return r.add8BitUIntToData(s.length),s.forEach(t=>{r.add32BitUIntToData(t)}),r.addBufferToData(C(o).unsafeCoerce()).addBufferToData(a).build()}parseResponse(e){return i.fromNullable(this._errorHelper.getError(e)).orDefault(m({data:e}))}}export{E as SignMessageCommand};
2
2
  //# sourceMappingURL=SignMessageCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignMessageCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n CommandErrorHelper,\n DerivationPathUtils,\n} from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { PROTOCOL_VERSION } from \"@internal/app-binder/command/utils/constants\";\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\nimport { encodeVarint } from \"@internal/utils/Varint\";\n\nimport {\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n type BtcErrorCodes,\n} from \"./utils/bitcoinAppErrors\";\n\nexport type SignMessageCommandArgs = {\n /**\n * The BIP32 path (e.g., \"m/44'/0'/0'/0/0\")\n */\n readonly derivationPath: string;\n /**\n * The total length of the message to be signed\n */\n readonly messageLength: number;\n /**\n * The Merkle root of the message data\n */\n readonly messageMerkleRoot: Uint8Array;\n};\n\nexport type SignMessageCommandResponse = ApduResponse;\n\nexport class SignMessageCommand\n implements\n Command<SignMessageCommandResponse, SignMessageCommandArgs, BtcErrorCodes>\n{\n constructor(\n private readonly _args: SignMessageCommandArgs,\n private readonly _errorHelper = new CommandErrorHelper<\n SignMessageCommandResponse,\n BtcErrorCodes\n >(\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n BtcCommandUtils.isSuccessResponse,\n ),\n ) {}\n\n getApdu(): Apdu {\n const { derivationPath, messageLength, messageMerkleRoot } = this._args;\n\n const builder = new ApduBuilder({\n cla: 0xe1,\n ins: 0x10,\n p1: 0x00,\n p2: PROTOCOL_VERSION,\n });\n\n const path = DerivationPathUtils.splitPath(derivationPath);\n builder.add8BitUIntToData(path.length);\n path.forEach((element) => {\n builder.add32BitUIntToData(element);\n });\n\n return builder\n .addBufferToData(encodeVarint(messageLength).unsafeCoerce()) // Message length (varint)\n .addBufferToData(messageMerkleRoot)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<SignMessageCommandResponse, BtcErrorCodes> {\n return Maybe.fromNullable(\n this._errorHelper.getError(apduResponse),\n ).orDefault(CommandResultFactory({ data: apduResponse }));\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EAIA,wBAAAC,MACK,kCACP,OACE,sBAAAC,EACA,uBAAAC,MACK,yBACP,OAAS,SAAAC,MAAa,YAEtB,OAAS,oBAAAC,MAAwB,+CACjC,OAAS,mBAAAC,MAAuB,kCAChC,OAAS,gBAAAC,MAAoB,yBAE7B,OACE,kBAAAC,EACA,6BAAAC,MAEK,2BAmBA,MAAMC,CAGb,CACE,YACmBC,EACAC,EAAe,IAAIV,EAIlCM,EACAC,EACAH,EAAgB,iBAClB,EACA,CATiB,WAAAK,EACA,kBAAAC,CAQhB,CAEH,SAAgB,CACd,KAAM,CAAE,eAAAC,EAAgB,cAAAC,EAAe,kBAAAC,CAAkB,EAAI,KAAK,MAE5DC,EAAU,IAAIhB,EAAY,CAC9B,IAAK,IACL,IAAK,GACL,GAAI,EACJ,GAAIK,CACN,CAAC,EAEKY,EAAOd,EAAoB,UAAUU,CAAc,EACzD,OAAAG,EAAQ,kBAAkBC,EAAK,MAAM,EACrCA,EAAK,QAASC,GAAY,CACxBF,EAAQ,mBAAmBE,CAAO,CACpC,CAAC,EAEMF,EACJ,gBAAgBT,EAAaO,CAAa,EAAE,aAAa,CAAC,EAC1D,gBAAgBC,CAAiB,EACjC,MAAM,CACX,CAEA,cACEI,EAC0D,CAC1D,OAAOf,EAAM,aACX,KAAK,aAAa,SAASe,CAAY,CACzC,EAAE,UAAUlB,EAAqB,CAAE,KAAMkB,CAAa,CAAC,CAAC,CAC1D,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport {\n CommandErrorHelper,\n DerivationPathUtils,\n} from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { PROTOCOL_VERSION } from \"@internal/app-binder/command/utils/constants\";\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\nimport { encodeVarint } from \"@internal/utils/Varint\";\n\nimport {\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n type BtcErrorCodes,\n} from \"./utils/bitcoinAppErrors\";\n\nexport type SignMessageCommandArgs = {\n /**\n * The BIP32 path (e.g., \"m/44'/0'/0'/0/0\")\n */\n readonly derivationPath: string;\n /**\n * The total length of the message to be signed\n */\n readonly messageLength: number;\n /**\n * The Merkle root of the message data\n */\n readonly messageMerkleRoot: Uint8Array;\n};\n\nexport type SignMessageCommandResponse = ApduResponse;\n\nexport class SignMessageCommand\n implements\n Command<SignMessageCommandResponse, SignMessageCommandArgs, BtcErrorCodes>\n{\n readonly name = \"signMessage\";\n constructor(\n private readonly _args: SignMessageCommandArgs,\n private readonly _errorHelper = new CommandErrorHelper<\n SignMessageCommandResponse,\n BtcErrorCodes\n >(\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n BtcCommandUtils.isSuccessResponse,\n ),\n ) {}\n\n getApdu(): Apdu {\n const { derivationPath, messageLength, messageMerkleRoot } = this._args;\n\n const builder = new ApduBuilder({\n cla: 0xe1,\n ins: 0x10,\n p1: 0x00,\n p2: PROTOCOL_VERSION,\n });\n\n const path = DerivationPathUtils.splitPath(derivationPath);\n builder.add8BitUIntToData(path.length);\n path.forEach((element) => {\n builder.add32BitUIntToData(element);\n });\n\n return builder\n .addBufferToData(encodeVarint(messageLength).unsafeCoerce()) // Message length (varint)\n .addBufferToData(messageMerkleRoot)\n .build();\n }\n\n parseResponse(\n apduResponse: ApduResponse,\n ): CommandResult<SignMessageCommandResponse, BtcErrorCodes> {\n return Maybe.fromNullable(\n this._errorHelper.getError(apduResponse),\n ).orDefault(CommandResultFactory({ data: apduResponse }));\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EAIA,wBAAAC,MACK,kCACP,OACE,sBAAAC,EACA,uBAAAC,MACK,yBACP,OAAS,SAAAC,MAAa,YAEtB,OAAS,oBAAAC,MAAwB,+CACjC,OAAS,mBAAAC,MAAuB,kCAChC,OAAS,gBAAAC,MAAoB,yBAE7B,OACE,kBAAAC,EACA,6BAAAC,MAEK,2BAmBA,MAAMC,CAGb,CAEE,YACmBC,EACAC,EAAe,IAAIV,EAIlCM,EACAC,EACAH,EAAgB,iBAClB,EACA,CATiB,WAAAK,EACA,kBAAAC,CAQhB,CAXM,KAAO,cAahB,SAAgB,CACd,KAAM,CAAE,eAAAC,EAAgB,cAAAC,EAAe,kBAAAC,CAAkB,EAAI,KAAK,MAE5DC,EAAU,IAAIhB,EAAY,CAC9B,IAAK,IACL,IAAK,GACL,GAAI,EACJ,GAAIK,CACN,CAAC,EAEKY,EAAOd,EAAoB,UAAUU,CAAc,EACzD,OAAAG,EAAQ,kBAAkBC,EAAK,MAAM,EACrCA,EAAK,QAASC,GAAY,CACxBF,EAAQ,mBAAmBE,CAAO,CACpC,CAAC,EAEMF,EACJ,gBAAgBT,EAAaO,CAAa,EAAE,aAAa,CAAC,EAC1D,gBAAgBC,CAAiB,EACjC,MAAM,CACX,CAEA,cACEI,EAC0D,CAC1D,OAAOf,EAAM,aACX,KAAK,aAAa,SAASe,CAAY,CACzC,EAAE,UAAUlB,EAAqB,CAAE,KAAMkB,CAAa,CAAC,CAAC,CAC1D,CACF",
6
6
  "names": ["ApduBuilder", "CommandResultFactory", "CommandErrorHelper", "DerivationPathUtils", "Maybe", "PROTOCOL_VERSION", "BtcCommandUtils", "encodeVarint", "BTC_APP_ERRORS", "BtcAppCommandErrorFactory", "SignMessageCommand", "_args", "_errorHelper", "derivationPath", "messageLength", "messageMerkleRoot", "builder", "path", "element", "apduResponse"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as o,CommandResultFactory as a,isSuccessCommandResult as r}from"@ledgerhq/device-management-kit";import{SW_INTERRUPTED_EXECUTION as i}from"./utils/constants";import{SignMessageCommand as s}from"./SignMessageCommand";const p="44'/0'/0'/0/0",u=new TextEncoder().encode("Hello Bitcoin!"),m=u.length,c=new Uint8Array(32).fill(250),f=({omitR:n=!1,omitS:e=!1}={})=>new Uint8Array([...n?[]:[27],...n?[]:[151,164,202,143,105,70,51,89,38,1,245,162,62,11,204,85,60,157,10,144,211,163,66,45,87,85,8,169,40,152,185,110],...e?[]:[105,80,208,46,116,233,193,2,193,100,162,37,83,48,130,202,189,216,144,239,196,99,246,127,96,206,254,140,63,135,207,206]]),l=new Uint8Array([105,133]),E=new Uint8Array([225,16,0,1,54,5,128,0,0,44,128,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,14,...c]);describe("SignMessageCommand",()=>{const n={derivationPath:p,messageLength:m,messageMerkleRoot:c};describe("getApdu",()=>{it("should return correct APDU for given arguments",()=>{const x=new s(n).getApdu();expect(x.getRawApdu()).toStrictEqual(E)})}),describe("parseResponse",()=>{it("should return the APDU response if it's a continue response",()=>{const e=new s(n),x=new Uint8Array([1,2,3,4]),t=new o({statusCode:i,data:x}),d=e.parseResponse(t);expect(d).toStrictEqual(a({data:t}))}),it("should return an error if user denied the operation",()=>{const e=new s(n),x=new o({statusCode:l,data:new Uint8Array([])}),t=e.parseResponse(x);expect(r(t)).toBe(!1),r(t)||expect(t.error).toBeDefined()}),it("should return correct data when the response data is not empty",()=>{const e=new s(n),x=new o({statusCode:new Uint8Array([144,0]),data:f()}),t=e.parseResponse(x);expect(t).toStrictEqual(a({data:x}))})})});
1
+ import{ApduResponse as o,CommandResultFactory as a,isSuccessCommandResult as c}from"@ledgerhq/device-management-kit";import{SW_INTERRUPTED_EXECUTION as i}from"./utils/constants";import{SignMessageCommand as s}from"./SignMessageCommand";const p="44'/0'/0'/0/0",m=new TextEncoder().encode("Hello Bitcoin!"),u=m.length,r=new Uint8Array(32).fill(250),f=({omitR:x=!1,omitS:e=!1}={})=>new Uint8Array([...x?[]:[27],...x?[]:[151,164,202,143,105,70,51,89,38,1,245,162,62,11,204,85,60,157,10,144,211,163,66,45,87,85,8,169,40,152,185,110],...e?[]:[105,80,208,46,116,233,193,2,193,100,162,37,83,48,130,202,189,216,144,239,196,99,246,127,96,206,254,140,63,135,207,206]]),l=new Uint8Array([105,133]),E=new Uint8Array([225,16,0,1,54,5,128,0,0,44,128,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,14,...r]);describe("SignMessageCommand",()=>{const x={derivationPath:p,messageLength:u,messageMerkleRoot:r};describe("name",()=>{it("should be 'signMessage'",()=>{const e=new s(x);expect(e.name).toBe("signMessage")})}),describe("getApdu",()=>{it("should return correct APDU for given arguments",()=>{const n=new s(x).getApdu();expect(n.getRawApdu()).toStrictEqual(E)})}),describe("parseResponse",()=>{it("should return the APDU response if it's a continue response",()=>{const e=new s(x),n=new Uint8Array([1,2,3,4]),t=new o({statusCode:i,data:n}),d=e.parseResponse(t);expect(d).toStrictEqual(a({data:t}))}),it("should return an error if user denied the operation",()=>{const e=new s(x),n=new o({statusCode:l,data:new Uint8Array([])}),t=e.parseResponse(n);expect(c(t)).toBe(!1),c(t)||expect(t.error).toBeDefined()}),it("should return correct data when the response data is not empty",()=>{const e=new s(x),n=new o({statusCode:new Uint8Array([144,0]),data:f()}),t=e.parseResponse(n);expect(t).toStrictEqual(a({data:n}))})})});
2
2
  //# sourceMappingURL=SignMessageCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignMessageCommand.test.ts"],
4
- "sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { SW_INTERRUPTED_EXECUTION } from \"./utils/constants\";\nimport { SignMessageCommand } from \"./SignMessageCommand\";\n\nconst PATH = \"44'/0'/0'/0/0\";\nconst MESSAGE = new TextEncoder().encode(\"Hello Bitcoin!\");\nconst MESSAGE_LENGTH = MESSAGE.length;\nconst MSG_MERKLE_ROOT = new Uint8Array(32).fill(0xfa);\n\nconst getResponse = ({\n omitR = false,\n omitS = false,\n}: {\n omitR?: boolean;\n omitS?: boolean;\n} = {}) =>\n new Uint8Array([\n ...(omitR ? [] : [0x1b]), // v\n ...(omitR\n ? []\n : [\n 0x97, 0xa4, 0xca, 0x8f, 0x69, 0x46, 0x33, 0x59, 0x26, 0x01, 0xf5,\n 0xa2, 0x3e, 0x0b, 0xcc, 0x55, 0x3c, 0x9d, 0x0a, 0x90, 0xd3, 0xa3,\n 0x42, 0x2d, 0x57, 0x55, 0x08, 0xa9, 0x28, 0x98, 0xb9, 0x6e,\n ]), // r (32 bytes)\n ...(omitS\n ? []\n : [\n 0x69, 0x50, 0xd0, 0x2e, 0x74, 0xe9, 0xc1, 0x02, 0xc1, 0x64, 0xa2,\n 0x25, 0x53, 0x30, 0x82, 0xca, 0xbd, 0xd8, 0x90, 0xef, 0xc4, 0x63,\n 0xf6, 0x7f, 0x60, 0xce, 0xfe, 0x8c, 0x3f, 0x87, 0xcf, 0xce,\n ]), // s (32 bytes)\n ]);\n\nconst USER_DENIED_STATUS = new Uint8Array([0x69, 0x85]);\n\nconst EXPECTED_APDU = new Uint8Array([\n 0xe1, // CLA\n 0x10, // INS\n 0x00, // P1\n 0x01, // P2\n 0x36, // Lc\n // Data:\n 0x05, // Number of derivation steps (5)\n // BIP32 path:\n // 44' (0x8000002C)\n 0x80,\n 0x00,\n 0x00,\n 0x2c,\n // 0' (0x80000000)\n 0x80,\n 0x00,\n 0x00,\n 0x00,\n // 0' (0x80000000)\n 0x80,\n 0x00,\n 0x00,\n 0x00,\n // 0 (0x00000000)\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n // 0 (0x00000000)\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n // Message length (varint)\n 0x0e, // 14 bytes (\"Hello Bitcoin!\")\n // messageMerkleRoot\n ...MSG_MERKLE_ROOT,\n]);\n\ndescribe(\"SignMessageCommand\", (): void => {\n const defaultArgs = {\n derivationPath: PATH,\n messageLength: MESSAGE_LENGTH,\n messageMerkleRoot: MSG_MERKLE_ROOT,\n };\n\n describe(\"getApdu\", () => {\n it(\"should return correct APDU for given arguments\", () => {\n // given\n const command = new SignMessageCommand(defaultArgs);\n // when\n const apdu = command.getApdu();\n // then\n expect(apdu.getRawApdu()).toStrictEqual(EXPECTED_APDU);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return the APDU response if it's a continue response\", () => {\n // given\n const command = new SignMessageCommand(defaultArgs);\n const continueResponseData = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n\n const apduResponse = new ApduResponse({\n statusCode: SW_INTERRUPTED_EXECUTION,\n data: continueResponseData,\n });\n\n // when\n const response = command.parseResponse(apduResponse);\n\n // then\n expect(response).toStrictEqual(\n CommandResultFactory({\n data: apduResponse,\n }),\n );\n });\n\n it(\"should return an error if user denied the operation\", () => {\n // given\n const command = new SignMessageCommand(defaultArgs);\n const apduResponse = new ApduResponse({\n statusCode: USER_DENIED_STATUS,\n data: new Uint8Array([]),\n });\n // when\n const response = command.parseResponse(apduResponse);\n // then\n expect(isSuccessCommandResult(response)).toBe(false);\n if (!isSuccessCommandResult(response)) {\n expect(response.error).toBeDefined();\n }\n });\n\n it(\"should return correct data when the response data is not empty\", () => {\n // given\n const command = new SignMessageCommand(defaultArgs);\n const apduResponse = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: getResponse(),\n });\n // when\n const response = command.parseResponse(apduResponse);\n // then\n expect(response).toStrictEqual(\n CommandResultFactory({\n data: apduResponse,\n }),\n );\n });\n });\n});\n"],
5
- "mappings": "AAAA,OACE,gBAAAA,EACA,wBAAAC,EACA,0BAAAC,MACK,kCAEP,OAAS,4BAAAC,MAAgC,oBACzC,OAAS,sBAAAC,MAA0B,uBAEnC,MAAMC,EAAO,gBACPC,EAAU,IAAI,YAAY,EAAE,OAAO,gBAAgB,EACnDC,EAAiBD,EAAQ,OACzBE,EAAkB,IAAI,WAAW,EAAE,EAAE,KAAK,GAAI,EAE9CC,EAAc,CAAC,CACnB,MAAAC,EAAQ,GACR,MAAAC,EAAQ,EACV,EAGI,CAAC,IACH,IAAI,WAAW,CACb,GAAID,EAAQ,CAAC,EAAI,CAAC,EAAI,EACtB,GAAIA,EACA,CAAC,EACD,CACE,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,EAAM,IAC5D,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAC5D,GAAM,GAAM,GAAM,GAAM,EAAM,IAAM,GAAM,IAAM,IAAM,GACxD,EACJ,GAAIC,EACA,CAAC,EACD,CACE,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,EAAM,IAAM,IAAM,IAC5D,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAC5D,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GACxD,CACN,CAAC,EAEGC,EAAqB,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,EAEhDC,EAAgB,IAAI,WAAW,CACnC,IACA,GACA,EACA,EACA,GAEA,EAGA,IACA,EACA,EACA,GAEA,IACA,EACA,EACA,EAEA,IACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,EACA,EACA,EACA,EAEA,GAEA,GAAGL,CACL,CAAC,EAED,SAAS,qBAAsB,IAAY,CACzC,MAAMM,EAAc,CAClB,eAAgBT,EAChB,cAAeE,EACf,kBAAmBC,CACrB,EAEA,SAAS,UAAW,IAAM,CACxB,GAAG,iDAAkD,IAAM,CAIzD,MAAMO,EAFU,IAAIX,EAAmBU,CAAW,EAE7B,QAAQ,EAE7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cAAcF,CAAa,CACvD,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,8DAA+D,IAAM,CAEtE,MAAMG,EAAU,IAAIZ,EAAmBU,CAAW,EAC5CG,EAAuB,IAAI,WAAW,CAAC,EAAM,EAAM,EAAM,CAAI,CAAC,EAE9DC,EAAe,IAAIlB,EAAa,CACpC,WAAYG,EACZ,KAAMc,CACR,CAAC,EAGKE,EAAWH,EAAQ,cAAcE,CAAY,EAGnD,OAAOC,CAAQ,EAAE,cACflB,EAAqB,CACnB,KAAMiB,CACR,CAAC,CACH,CACF,CAAC,EAED,GAAG,sDAAuD,IAAM,CAE9D,MAAMF,EAAU,IAAIZ,EAAmBU,CAAW,EAC5CI,EAAe,IAAIlB,EAAa,CACpC,WAAYY,EACZ,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EAEKO,EAAWH,EAAQ,cAAcE,CAAY,EAEnD,OAAOhB,EAAuBiB,CAAQ,CAAC,EAAE,KAAK,EAAK,EAC9CjB,EAAuBiB,CAAQ,GAClC,OAAOA,EAAS,KAAK,EAAE,YAAY,CAEvC,CAAC,EAED,GAAG,iEAAkE,IAAM,CAEzE,MAAMH,EAAU,IAAIZ,EAAmBU,CAAW,EAC5CI,EAAe,IAAIlB,EAAa,CACpC,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACvC,KAAMS,EAAY,CACpB,CAAC,EAEKU,EAAWH,EAAQ,cAAcE,CAAY,EAEnD,OAAOC,CAAQ,EAAE,cACflB,EAAqB,CACnB,KAAMiB,CACR,CAAC,CACH,CACF,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["ApduResponse", "CommandResultFactory", "isSuccessCommandResult", "SW_INTERRUPTED_EXECUTION", "SignMessageCommand", "PATH", "MESSAGE", "MESSAGE_LENGTH", "MSG_MERKLE_ROOT", "getResponse", "omitR", "omitS", "USER_DENIED_STATUS", "EXPECTED_APDU", "defaultArgs", "apdu", "command", "continueResponseData", "apduResponse", "response"]
4
+ "sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { SW_INTERRUPTED_EXECUTION } from \"./utils/constants\";\nimport { SignMessageCommand } from \"./SignMessageCommand\";\n\nconst PATH = \"44'/0'/0'/0/0\";\nconst MESSAGE = new TextEncoder().encode(\"Hello Bitcoin!\");\nconst MESSAGE_LENGTH = MESSAGE.length;\nconst MSG_MERKLE_ROOT = new Uint8Array(32).fill(0xfa);\n\nconst getResponse = ({\n omitR = false,\n omitS = false,\n}: {\n omitR?: boolean;\n omitS?: boolean;\n} = {}) =>\n new Uint8Array([\n ...(omitR ? [] : [0x1b]), // v\n ...(omitR\n ? []\n : [\n 0x97, 0xa4, 0xca, 0x8f, 0x69, 0x46, 0x33, 0x59, 0x26, 0x01, 0xf5,\n 0xa2, 0x3e, 0x0b, 0xcc, 0x55, 0x3c, 0x9d, 0x0a, 0x90, 0xd3, 0xa3,\n 0x42, 0x2d, 0x57, 0x55, 0x08, 0xa9, 0x28, 0x98, 0xb9, 0x6e,\n ]), // r (32 bytes)\n ...(omitS\n ? []\n : [\n 0x69, 0x50, 0xd0, 0x2e, 0x74, 0xe9, 0xc1, 0x02, 0xc1, 0x64, 0xa2,\n 0x25, 0x53, 0x30, 0x82, 0xca, 0xbd, 0xd8, 0x90, 0xef, 0xc4, 0x63,\n 0xf6, 0x7f, 0x60, 0xce, 0xfe, 0x8c, 0x3f, 0x87, 0xcf, 0xce,\n ]), // s (32 bytes)\n ]);\n\nconst USER_DENIED_STATUS = new Uint8Array([0x69, 0x85]);\n\nconst EXPECTED_APDU = new Uint8Array([\n 0xe1, // CLA\n 0x10, // INS\n 0x00, // P1\n 0x01, // P2\n 0x36, // Lc\n // Data:\n 0x05, // Number of derivation steps (5)\n // BIP32 path:\n // 44' (0x8000002C)\n 0x80,\n 0x00,\n 0x00,\n 0x2c,\n // 0' (0x80000000)\n 0x80,\n 0x00,\n 0x00,\n 0x00,\n // 0' (0x80000000)\n 0x80,\n 0x00,\n 0x00,\n 0x00,\n // 0 (0x00000000)\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n // 0 (0x00000000)\n 0x00,\n 0x00,\n 0x00,\n 0x00,\n // Message length (varint)\n 0x0e, // 14 bytes (\"Hello Bitcoin!\")\n // messageMerkleRoot\n ...MSG_MERKLE_ROOT,\n]);\n\ndescribe(\"SignMessageCommand\", (): void => {\n const defaultArgs = {\n derivationPath: PATH,\n messageLength: MESSAGE_LENGTH,\n messageMerkleRoot: MSG_MERKLE_ROOT,\n };\n\n describe(\"name\", () => {\n it(\"should be 'signMessage'\", () => {\n const command = new SignMessageCommand(defaultArgs);\n expect(command.name).toBe(\"signMessage\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return correct APDU for given arguments\", () => {\n // given\n const command = new SignMessageCommand(defaultArgs);\n // when\n const apdu = command.getApdu();\n // then\n expect(apdu.getRawApdu()).toStrictEqual(EXPECTED_APDU);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return the APDU response if it's a continue response\", () => {\n // given\n const command = new SignMessageCommand(defaultArgs);\n const continueResponseData = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n\n const apduResponse = new ApduResponse({\n statusCode: SW_INTERRUPTED_EXECUTION,\n data: continueResponseData,\n });\n\n // when\n const response = command.parseResponse(apduResponse);\n\n // then\n expect(response).toStrictEqual(\n CommandResultFactory({\n data: apduResponse,\n }),\n );\n });\n\n it(\"should return an error if user denied the operation\", () => {\n // given\n const command = new SignMessageCommand(defaultArgs);\n const apduResponse = new ApduResponse({\n statusCode: USER_DENIED_STATUS,\n data: new Uint8Array([]),\n });\n // when\n const response = command.parseResponse(apduResponse);\n // then\n expect(isSuccessCommandResult(response)).toBe(false);\n if (!isSuccessCommandResult(response)) {\n expect(response.error).toBeDefined();\n }\n });\n\n it(\"should return correct data when the response data is not empty\", () => {\n // given\n const command = new SignMessageCommand(defaultArgs);\n const apduResponse = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: getResponse(),\n });\n // when\n const response = command.parseResponse(apduResponse);\n // then\n expect(response).toStrictEqual(\n CommandResultFactory({\n data: apduResponse,\n }),\n );\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["ApduResponse", "CommandResultFactory", "isSuccessCommandResult", "SW_INTERRUPTED_EXECUTION", "SignMessageCommand", "PATH", "MESSAGE", "MESSAGE_LENGTH", "MSG_MERKLE_ROOT", "getResponse", "omitR", "omitS", "USER_DENIED_STATUS", "EXPECTED_APDU", "defaultArgs", "command", "apdu", "continueResponseData", "apduResponse", "response"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduBuilder as d,CommandResultFactory as p}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as u}from"@ledgerhq/signer-utils";import{Maybe as i}from"purify-ts";import{BTC_APP_ERRORS as l,BtcAppCommandErrorFactory as C}from"../../app-binder/command/utils/bitcoinAppErrors";import{PROTOCOL_VERSION as R}from"../../app-binder/command/utils/constants";import{BtcCommandUtils as c}from"../../utils/BtcCommandUtils";class S{constructor(t,o=new u(l,C,c.isSuccessResponse)){this._args=t;this._errorHelper=o}getApdu(){const t=new d({cla:225,ins:4,p1:0,p2:R}),{globalCommitment:o,inputsCount:r,inputsRoot:e,outputsCount:a,outputsRoot:n,walletHmac:s,walletId:m}=this._args;return t.addBufferToData(o).add8BitUIntToData(r).addBufferToData(e).add8BitUIntToData(a).addBufferToData(n).addBufferToData(m).addBufferToData(s).build()}parseResponse(t){return i.fromNullable(this._errorHelper.getError(t)).orDefault(p({data:t}))}}export{S as SignPsbtCommand};
1
+ import{ApduBuilder as d,CommandResultFactory as p}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as u}from"@ledgerhq/signer-utils";import{Maybe as i}from"purify-ts";import{BTC_APP_ERRORS as l,BtcAppCommandErrorFactory as C}from"../../app-binder/command/utils/bitcoinAppErrors";import{PROTOCOL_VERSION as R}from"../../app-binder/command/utils/constants";import{BtcCommandUtils as c}from"../../utils/BtcCommandUtils";class S{constructor(t,o=new u(l,C,c.isSuccessResponse)){this._args=t;this._errorHelper=o}name="signPsbt";getApdu(){const t=new d({cla:225,ins:4,p1:0,p2:R}),{globalCommitment:o,inputsCount:r,inputsRoot:e,outputsCount:a,outputsRoot:n,walletHmac:s,walletId:m}=this._args;return t.addBufferToData(o).add8BitUIntToData(r).addBufferToData(e).add8BitUIntToData(a).addBufferToData(n).addBufferToData(m).addBufferToData(s).build()}parseResponse(t){return i.fromNullable(this._errorHelper.getError(t)).orDefault(p({data:t}))}}export{S as SignPsbtCommand};
2
2
  //# sourceMappingURL=SignPsbtCommand.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignPsbtCommand.ts"],
4
- "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n type BtcErrorCodes,\n} from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { PROTOCOL_VERSION } from \"@internal/app-binder/command/utils/constants\";\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\n\nexport type SignPsbtCommandArgs = {\n globalCommitment: Uint8Array;\n inputsCount: number;\n inputsRoot: Uint8Array;\n outputsCount: number;\n outputsRoot: Uint8Array;\n walletId: Uint8Array;\n walletHmac: Uint8Array;\n};\n\ntype SignPsbtCommandResponse = ApduResponse;\n\nexport class SignPsbtCommand\n implements\n Command<SignPsbtCommandResponse, SignPsbtCommandArgs, BtcErrorCodes>\n{\n constructor(\n private readonly _args: SignPsbtCommandArgs,\n private readonly _errorHelper = new CommandErrorHelper<\n SignPsbtCommandResponse,\n BtcErrorCodes\n >(\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n BtcCommandUtils.isSuccessResponse,\n ),\n ) {}\n\n getApdu(): Apdu {\n const builder = new ApduBuilder({\n cla: 0xe1,\n ins: 0x04,\n p1: 0x00,\n p2: PROTOCOL_VERSION,\n });\n const {\n globalCommitment,\n inputsCount,\n inputsRoot,\n outputsCount,\n outputsRoot,\n walletHmac,\n walletId,\n } = this._args;\n\n return builder\n .addBufferToData(globalCommitment)\n .add8BitUIntToData(inputsCount)\n .addBufferToData(inputsRoot)\n .add8BitUIntToData(outputsCount)\n .addBufferToData(outputsRoot)\n .addBufferToData(walletId)\n .addBufferToData(walletHmac)\n .build();\n }\n parseResponse(\n response: ApduResponse,\n ): CommandResult<SignPsbtCommandResponse, BtcErrorCodes> {\n return Maybe.fromNullable(this._errorHelper.getError(response)).orDefault(\n CommandResultFactory({ data: response }),\n );\n }\n}\n"],
5
- "mappings": "AAAA,OAEE,eAAAA,EAIA,wBAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,kBAAAC,EACA,6BAAAC,MAEK,sDACP,OAAS,oBAAAC,MAAwB,+CACjC,OAAS,mBAAAC,MAAuB,kCAczB,MAAMC,CAGb,CACE,YACmBC,EACAC,EAAe,IAAIR,EAIlCE,EACAC,EACAE,EAAgB,iBAClB,EACA,CATiB,WAAAE,EACA,kBAAAC,CAQhB,CAEH,SAAgB,CACd,MAAMC,EAAU,IAAIX,EAAY,CAC9B,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAIM,CACN,CAAC,EACK,CACJ,iBAAAM,EACA,YAAAC,EACA,WAAAC,EACA,aAAAC,EACA,YAAAC,EACA,WAAAC,EACA,SAAAC,CACF,EAAI,KAAK,MAET,OAAOP,EACJ,gBAAgBC,CAAgB,EAChC,kBAAkBC,CAAW,EAC7B,gBAAgBC,CAAU,EAC1B,kBAAkBC,CAAY,EAC9B,gBAAgBC,CAAW,EAC3B,gBAAgBE,CAAQ,EACxB,gBAAgBD,CAAU,EAC1B,MAAM,CACX,CACA,cACEE,EACuD,CACvD,OAAOhB,EAAM,aAAa,KAAK,aAAa,SAASgB,CAAQ,CAAC,EAAE,UAC9DlB,EAAqB,CAAE,KAAMkB,CAAS,CAAC,CACzC,CACF,CACF",
4
+ "sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport {\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n type BtcErrorCodes,\n} from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { PROTOCOL_VERSION } from \"@internal/app-binder/command/utils/constants\";\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\n\nexport type SignPsbtCommandArgs = {\n globalCommitment: Uint8Array;\n inputsCount: number;\n inputsRoot: Uint8Array;\n outputsCount: number;\n outputsRoot: Uint8Array;\n walletId: Uint8Array;\n walletHmac: Uint8Array;\n};\n\ntype SignPsbtCommandResponse = ApduResponse;\n\nexport class SignPsbtCommand\n implements\n Command<SignPsbtCommandResponse, SignPsbtCommandArgs, BtcErrorCodes>\n{\n readonly name = \"signPsbt\";\n constructor(\n private readonly _args: SignPsbtCommandArgs,\n private readonly _errorHelper = new CommandErrorHelper<\n SignPsbtCommandResponse,\n BtcErrorCodes\n >(\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n BtcCommandUtils.isSuccessResponse,\n ),\n ) {}\n\n getApdu(): Apdu {\n const builder = new ApduBuilder({\n cla: 0xe1,\n ins: 0x04,\n p1: 0x00,\n p2: PROTOCOL_VERSION,\n });\n const {\n globalCommitment,\n inputsCount,\n inputsRoot,\n outputsCount,\n outputsRoot,\n walletHmac,\n walletId,\n } = this._args;\n\n return builder\n .addBufferToData(globalCommitment)\n .add8BitUIntToData(inputsCount)\n .addBufferToData(inputsRoot)\n .add8BitUIntToData(outputsCount)\n .addBufferToData(outputsRoot)\n .addBufferToData(walletId)\n .addBufferToData(walletHmac)\n .build();\n }\n parseResponse(\n response: ApduResponse,\n ): CommandResult<SignPsbtCommandResponse, BtcErrorCodes> {\n return Maybe.fromNullable(this._errorHelper.getError(response)).orDefault(\n CommandResultFactory({ data: response }),\n );\n }\n}\n"],
5
+ "mappings": "AAAA,OAEE,eAAAA,EAIA,wBAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OACE,kBAAAC,EACA,6BAAAC,MAEK,sDACP,OAAS,oBAAAC,MAAwB,+CACjC,OAAS,mBAAAC,MAAuB,kCAczB,MAAMC,CAGb,CAEE,YACmBC,EACAC,EAAe,IAAIR,EAIlCE,EACAC,EACAE,EAAgB,iBAClB,EACA,CATiB,WAAAE,EACA,kBAAAC,CAQhB,CAXM,KAAO,WAahB,SAAgB,CACd,MAAMC,EAAU,IAAIX,EAAY,CAC9B,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAIM,CACN,CAAC,EACK,CACJ,iBAAAM,EACA,YAAAC,EACA,WAAAC,EACA,aAAAC,EACA,YAAAC,EACA,WAAAC,EACA,SAAAC,CACF,EAAI,KAAK,MAET,OAAOP,EACJ,gBAAgBC,CAAgB,EAChC,kBAAkBC,CAAW,EAC7B,gBAAgBC,CAAU,EAC1B,kBAAkBC,CAAY,EAC9B,gBAAgBC,CAAW,EAC3B,gBAAgBE,CAAQ,EACxB,gBAAgBD,CAAU,EAC1B,MAAM,CACX,CACA,cACEE,EACuD,CACvD,OAAOhB,EAAM,aAAa,KAAK,aAAa,SAASgB,CAAQ,CAAC,EAAE,UAC9DlB,EAAqB,CAAE,KAAMkB,CAAS,CAAC,CACzC,CACF,CACF",
6
6
  "names": ["ApduBuilder", "CommandResultFactory", "CommandErrorHelper", "Maybe", "BTC_APP_ERRORS", "BtcAppCommandErrorFactory", "PROTOCOL_VERSION", "BtcCommandUtils", "SignPsbtCommand", "_args", "_errorHelper", "builder", "globalCommitment", "inputsCount", "inputsRoot", "outputsCount", "outputsRoot", "walletHmac", "walletId", "response"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ApduResponse as s,isSuccessCommandResult as n}from"@ledgerhq/device-management-kit";import{SignPsbtCommand as o}from"../../app-binder/command/SignPsbtCommand";const r=Uint8Array.from([5,81,155,56,218,231,68,71,183,33,81,243,84,203,19,140,163,89,26,95,248,172,129,50,137,177,138,0,78,49,50,22,32,58,34,31,75,185,94,30,99,129,67,20,166,147,179,89,53,61,70,96,163,67,81,101,211,223,183,53,206,45,245,245,143]),c=Uint8Array.from([1,42,200,205,188,111,214,67,112,5,86,99,249,80,47,227,102,237,248,73,112,204,125,126,232,246,186,71,89,159,17,5,194]),d=Uint8Array.from([1,217,53,20,212,41,104,141,118,87,201,175,10,8,134,172,116,75,208,136,28,74,25,16,181,55,250,186,40,205,202,46,17]),f=Uint8Array.from([65,172,65,166,22,180,162,250,212,152,38,143,233,200,166,59,136,84,135,56,57,6,93,230,251,47,171,241,251,232,146,86]),m=Uint8Array.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),u=Uint8Array.from([225,4,0,1,197,...r,1,...c,1,...d,...f,...m]);describe("SignPsbtCommand",()=>{const t={globalCommitment:r,inputsCount:1,inputsRoot:c,outputsCount:1,outputsRoot:d,walletId:f,walletHmac:m};describe("getApdu",()=>{it("should return a correct apdu",()=>{const x=new o(t);expect(x.getApdu().getRawApdu()).toEqual(u)})}),describe("parseResponse",()=>{it("should return success",()=>{const x=new o(t),e=new s({statusCode:Uint8Array.from([144,0]),data:Uint8Array.from([])}),a=x.parseResponse(e);expect(n(a)).toBe(!0)}),it("should return failure",()=>{const x=new o(t),e=new s({statusCode:Uint8Array.from([109,0]),data:new Uint8Array(0)}),a=x.parseResponse(e);expect(n(a)).toBe(!1)})})});
1
+ import{ApduResponse as o,isSuccessCommandResult as n}from"@ledgerhq/device-management-kit";import{SignPsbtCommand as t}from"../../app-binder/command/SignPsbtCommand";const r=Uint8Array.from([5,81,155,56,218,231,68,71,183,33,81,243,84,203,19,140,163,89,26,95,248,172,129,50,137,177,138,0,78,49,50,22,32,58,34,31,75,185,94,30,99,129,67,20,166,147,179,89,53,61,70,96,163,67,81,101,211,223,183,53,206,45,245,245,143]),c=Uint8Array.from([1,42,200,205,188,111,214,67,112,5,86,99,249,80,47,227,102,237,248,73,112,204,125,126,232,246,186,71,89,159,17,5,194]),d=Uint8Array.from([1,217,53,20,212,41,104,141,118,87,201,175,10,8,134,172,116,75,208,136,28,74,25,16,181,55,250,186,40,205,202,46,17]),m=Uint8Array.from([65,172,65,166,22,180,162,250,212,152,38,143,233,200,166,59,136,84,135,56,57,6,93,230,251,47,171,241,251,232,146,86]),f=Uint8Array.from([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),i=Uint8Array.from([225,4,0,1,197,...r,1,...c,1,...d,...m,...f]);describe("SignPsbtCommand",()=>{const e={globalCommitment:r,inputsCount:1,inputsRoot:c,outputsCount:1,outputsRoot:d,walletId:m,walletHmac:f};describe("name",()=>{it("should be 'signPsbt'",()=>{const x=new t(e);expect(x.name).toBe("signPsbt")})}),describe("getApdu",()=>{it("should return a correct apdu",()=>{const x=new t(e);expect(x.getApdu().getRawApdu()).toEqual(i)})}),describe("parseResponse",()=>{it("should return success",()=>{const x=new t(e),s=new o({statusCode:Uint8Array.from([144,0]),data:Uint8Array.from([])}),a=x.parseResponse(s);expect(n(a)).toBe(!0)}),it("should return failure",()=>{const x=new t(e),s=new o({statusCode:Uint8Array.from([109,0]),data:new Uint8Array(0)}),a=x.parseResponse(s);expect(n(a)).toBe(!1)})})});
2
2
  //# sourceMappingURL=SignPsbtCommand.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/command/SignPsbtCommand.test.ts"],
4
- "sourcesContent": ["import {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n SignPsbtCommand,\n type SignPsbtCommandArgs,\n} from \"@internal/app-binder/command/SignPsbtCommand\";\n\nconst GLOBAL_COMMITMENT = Uint8Array.from([\n 0x05, 0x51, 0x9b, 0x38, 0xda, 0xe7, 0x44, 0x47, 0xb7, 0x21, 0x51, 0xf3, 0x54,\n 0xcb, 0x13, 0x8c, 0xa3, 0x59, 0x1a, 0x5f, 0xf8, 0xac, 0x81, 0x32, 0x89, 0xb1,\n 0x8a, 0x00, 0x4e, 0x31, 0x32, 0x16, 0x20, 0x3a, 0x22, 0x1f, 0x4b, 0xb9, 0x5e,\n 0x1e, 0x63, 0x81, 0x43, 0x14, 0xa6, 0x93, 0xb3, 0x59, 0x35, 0x3d, 0x46, 0x60,\n 0xa3, 0x43, 0x51, 0x65, 0xd3, 0xdf, 0xb7, 0x35, 0xce, 0x2d, 0xf5, 0xf5, 0x8f,\n]);\n\nconst INPUTS_ROOT = Uint8Array.from([\n 0x01, 0x2a, 0xc8, 0xcd, 0xbc, 0x6f, 0xd6, 0x43, 0x70, 0x05, 0x56, 0x63, 0xf9,\n 0x50, 0x2f, 0xe3, 0x66, 0xed, 0xf8, 0x49, 0x70, 0xcc, 0x7d, 0x7e, 0xe8, 0xf6,\n 0xba, 0x47, 0x59, 0x9f, 0x11, 0x05, 0xc2,\n]);\n\nconst OUTPUTS_ROOT = Uint8Array.from([\n 0x01, 0xd9, 0x35, 0x14, 0xd4, 0x29, 0x68, 0x8d, 0x76, 0x57, 0xc9, 0xaf, 0x0a,\n 0x08, 0x86, 0xac, 0x74, 0x4b, 0xd0, 0x88, 0x1c, 0x4a, 0x19, 0x10, 0xb5, 0x37,\n 0xfa, 0xba, 0x28, 0xcd, 0xca, 0x2e, 0x11,\n]);\nconst WALLET_ID = Uint8Array.from([\n 0x41, 0xac, 0x41, 0xa6, 0x16, 0xb4, 0xa2, 0xfa, 0xd4, 0x98, 0x26, 0x8f, 0xe9,\n 0xc8, 0xa6, 0x3b, 0x88, 0x54, 0x87, 0x38, 0x39, 0x06, 0x5d, 0xe6, 0xfb, 0x2f,\n 0xab, 0xf1, 0xfb, 0xe8, 0x92, 0x56,\n]);\nconst WALLET_HMAC = Uint8Array.from([\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\nconst SIGN_PSBT_APDU = Uint8Array.from([\n 0xe1,\n 0x04,\n 0x00,\n 0x01,\n 0xc5,\n ...GLOBAL_COMMITMENT,\n 0x01,\n ...INPUTS_ROOT,\n 0x01,\n ...OUTPUTS_ROOT,\n ...WALLET_ID,\n ...WALLET_HMAC,\n]);\n\ndescribe(\"SignPsbtCommand\", () => {\n const args: SignPsbtCommandArgs = {\n globalCommitment: GLOBAL_COMMITMENT,\n inputsCount: 1,\n inputsRoot: INPUTS_ROOT,\n outputsCount: 1,\n outputsRoot: OUTPUTS_ROOT,\n walletId: WALLET_ID,\n walletHmac: WALLET_HMAC,\n };\n describe(\"getApdu\", () => {\n it(\"should return a correct apdu\", () => {\n const command = new SignPsbtCommand(args);\n\n expect(command.getApdu().getRawApdu()).toEqual(SIGN_PSBT_APDU);\n });\n });\n describe(\"parseResponse\", () => {\n it(\"should return success\", () => {\n // given\n const command = new SignPsbtCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: Uint8Array.from([]),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n });\n it(\"should return failure\", () => {\n // given\n const command = new SignPsbtCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6d, 0x00]),\n data: new Uint8Array(0),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n ApduResponse,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n SignPsbtCommand,\n type SignPsbtCommandArgs,\n} from \"@internal/app-binder/command/SignPsbtCommand\";\n\nconst GLOBAL_COMMITMENT = Uint8Array.from([\n 0x05, 0x51, 0x9b, 0x38, 0xda, 0xe7, 0x44, 0x47, 0xb7, 0x21, 0x51, 0xf3, 0x54,\n 0xcb, 0x13, 0x8c, 0xa3, 0x59, 0x1a, 0x5f, 0xf8, 0xac, 0x81, 0x32, 0x89, 0xb1,\n 0x8a, 0x00, 0x4e, 0x31, 0x32, 0x16, 0x20, 0x3a, 0x22, 0x1f, 0x4b, 0xb9, 0x5e,\n 0x1e, 0x63, 0x81, 0x43, 0x14, 0xa6, 0x93, 0xb3, 0x59, 0x35, 0x3d, 0x46, 0x60,\n 0xa3, 0x43, 0x51, 0x65, 0xd3, 0xdf, 0xb7, 0x35, 0xce, 0x2d, 0xf5, 0xf5, 0x8f,\n]);\n\nconst INPUTS_ROOT = Uint8Array.from([\n 0x01, 0x2a, 0xc8, 0xcd, 0xbc, 0x6f, 0xd6, 0x43, 0x70, 0x05, 0x56, 0x63, 0xf9,\n 0x50, 0x2f, 0xe3, 0x66, 0xed, 0xf8, 0x49, 0x70, 0xcc, 0x7d, 0x7e, 0xe8, 0xf6,\n 0xba, 0x47, 0x59, 0x9f, 0x11, 0x05, 0xc2,\n]);\n\nconst OUTPUTS_ROOT = Uint8Array.from([\n 0x01, 0xd9, 0x35, 0x14, 0xd4, 0x29, 0x68, 0x8d, 0x76, 0x57, 0xc9, 0xaf, 0x0a,\n 0x08, 0x86, 0xac, 0x74, 0x4b, 0xd0, 0x88, 0x1c, 0x4a, 0x19, 0x10, 0xb5, 0x37,\n 0xfa, 0xba, 0x28, 0xcd, 0xca, 0x2e, 0x11,\n]);\nconst WALLET_ID = Uint8Array.from([\n 0x41, 0xac, 0x41, 0xa6, 0x16, 0xb4, 0xa2, 0xfa, 0xd4, 0x98, 0x26, 0x8f, 0xe9,\n 0xc8, 0xa6, 0x3b, 0x88, 0x54, 0x87, 0x38, 0x39, 0x06, 0x5d, 0xe6, 0xfb, 0x2f,\n 0xab, 0xf1, 0xfb, 0xe8, 0x92, 0x56,\n]);\nconst WALLET_HMAC = Uint8Array.from([\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\nconst SIGN_PSBT_APDU = Uint8Array.from([\n 0xe1,\n 0x04,\n 0x00,\n 0x01,\n 0xc5,\n ...GLOBAL_COMMITMENT,\n 0x01,\n ...INPUTS_ROOT,\n 0x01,\n ...OUTPUTS_ROOT,\n ...WALLET_ID,\n ...WALLET_HMAC,\n]);\n\ndescribe(\"SignPsbtCommand\", () => {\n const args: SignPsbtCommandArgs = {\n globalCommitment: GLOBAL_COMMITMENT,\n inputsCount: 1,\n inputsRoot: INPUTS_ROOT,\n outputsCount: 1,\n outputsRoot: OUTPUTS_ROOT,\n walletId: WALLET_ID,\n walletHmac: WALLET_HMAC,\n };\n\n describe(\"name\", () => {\n it(\"should be 'signPsbt'\", () => {\n const command = new SignPsbtCommand(args);\n expect(command.name).toBe(\"signPsbt\");\n });\n });\n\n describe(\"getApdu\", () => {\n it(\"should return a correct apdu\", () => {\n const command = new SignPsbtCommand(args);\n\n expect(command.getApdu().getRawApdu()).toEqual(SIGN_PSBT_APDU);\n });\n });\n describe(\"parseResponse\", () => {\n it(\"should return success\", () => {\n // given\n const command = new SignPsbtCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x90, 0x00]),\n data: Uint8Array.from([]),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(true);\n });\n it(\"should return failure\", () => {\n // given\n const command = new SignPsbtCommand(args);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6d, 0x00]),\n data: new Uint8Array(0),\n });\n\n // when\n const result = command.parseResponse(response);\n\n // then\n expect(isSuccessCommandResult(result)).toBe(false);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["ApduResponse", "isSuccessCommandResult", "SignPsbtCommand", "GLOBAL_COMMITMENT", "INPUTS_ROOT", "OUTPUTS_ROOT", "WALLET_ID", "WALLET_HMAC", "SIGN_PSBT_APDU", "args", "command", "response", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{isSuccessCommandResult as o,OpenAppDeviceAction as W,UnknownDAError as m,UserInteractionRequired as l,XStateDeviceAction as S}from"@ledgerhq/device-management-kit";import{Left as D,Right as y}from"purify-ts";import{assign as r,fromPromise as d,setup as w}from"xstate";import{GetWalletAddressTask as I}from"../../../app-binder/task/GetWalletAddressTask";import{PrepareWalletPolicyTask as h}from"../../../app-binder/task/PrepareWalletPolicyTask";class B extends S{constructor(a){super(a)}makeStateMachine(a){const{getWalletAddress:i,prepareWalletPolicy:s}=this.extractDependencies(a);return w({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new W({input:{appName:"Bitcoin"}}).makeStateMachine(a),prepareWalletPolicy:d(s),getWalletAddress:d(i)},guards:{noInternalError:({context:e})=>e._internalState.error===null},actions:{assignErrorFromEvent:r({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"GetWalletAddressDeviceAction",initial:"OpenAppDeviceAction",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:l.None},_internalState:{error:null,wallet:null,walletAddress:null}}),states:{OpenAppDeviceAction:{exit:r({intermediateValue:{requiredUserInteraction:l.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Bitcoin"},src:"openAppStateMachine",onSnapshot:{actions:r({intermediateValue:e=>e.event.snapshot.context.intermediateValue})},onDone:{actions:r({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:t=>({...e.context._internalState,error:t})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"PrepareWalletPolicy",guard:"noInternalError"},"Error"]},PrepareWalletPolicy:{invoke:{id:"prepareWalletPolicy",src:"prepareWalletPolicy",input:({context:e})=>({wallet:e.input.wallet,walletBuilder:e.input.walletBuilder}),onDone:{target:"PrepareWalletPolicyResultCheck",actions:[r({_internalState:({event:e,context:t})=>o(e.output)?{...t._internalState,wallet:e.output.data}:{...t._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},PrepareWalletPolicyResultCheck:{always:[{guard:"noInternalError",target:"GetWalletAddress"},{target:"Error"}]},GetWalletAddress:{entry:r(({context:e})=>({intermediateValue:{requiredUserInteraction:e.input.checkOnDevice?l.VerifyAddress:l.None}})),exit:r({intermediateValue:{requiredUserInteraction:l.None}}),invoke:{id:"getWalletAddress",src:"getWalletAddress",input:({context:e})=>({checkOnDevice:e.input.checkOnDevice,wallet:e._internalState.wallet,change:e.input.change,addressIndex:e.input.addressIndex,dataStoreService:e.input.dataStoreService,walletSerializer:e.input.walletSerializer,walletBuilder:e.input.walletBuilder}),onDone:{target:"GetWalletAddressResultCheck",actions:[r({_internalState:({event:e,context:t})=>o(e.output)?{...t._internalState,walletAddress:e.output.data}:{...t._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetWalletAddressResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.walletAddress?y(e._internalState.walletAddress):D(e._internalState.error||new m("No error in final state"))})}extractDependencies(a){return{getWalletAddress:async e=>{const{checkOnDevice:t,wallet:n,change:p,addressIndex:c,walletSerializer:u,dataStoreService:A}=e.input;return await new I(a,{checkOnDevice:t,wallet:n,change:p,addressIndex:c},u,A).run()},prepareWalletPolicy:async e=>{const{input:{walletBuilder:t,wallet:n}}=e;return await new h(a,{wallet:n},t).run()}}}}export{B as GetWalletAddressDeviceAction};
1
+ import{isSuccessCommandResult as o,OpenAppDeviceAction as W,UnknownDAError as m,UserInteractionRequired as l,XStateDeviceAction as S}from"@ledgerhq/device-management-kit";import{Left as y,Right as D}from"purify-ts";import{assign as r,fromPromise as d,setup as w}from"xstate";import{GetWalletAddressTask as I}from"../../../app-binder/task/GetWalletAddressTask";import{PrepareWalletPolicyTask as g}from"../../../app-binder/task/PrepareWalletPolicyTask";class k extends S{constructor(a){super(a)}makeStateMachine(a){const{getWalletAddress:i,prepareWalletPolicy:s}=this.extractDependencies(a);return w({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new W({input:{appName:"Bitcoin"}}).makeStateMachine(a),prepareWalletPolicy:d(s),getWalletAddress:d(i)},guards:{noInternalError:({context:e})=>e._internalState.error===null,skipOpenApp:({context:e})=>e.input.skipOpenApp},actions:{assignErrorFromEvent:r({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"GetWalletAddressDeviceAction",initial:"InitialState",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:l.None},_internalState:{error:null,wallet:null,walletAddress:null}}),states:{InitialState:{always:[{target:"PrepareWalletPolicy",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{exit:r({intermediateValue:{requiredUserInteraction:l.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Bitcoin"},src:"openAppStateMachine",onSnapshot:{actions:r({intermediateValue:e=>e.event.snapshot.context.intermediateValue})},onDone:{actions:r({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:t=>({...e.context._internalState,error:t})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"PrepareWalletPolicy",guard:"noInternalError"},"Error"]},PrepareWalletPolicy:{invoke:{id:"prepareWalletPolicy",src:"prepareWalletPolicy",input:({context:e})=>({wallet:e.input.wallet,walletBuilder:e.input.walletBuilder}),onDone:{target:"PrepareWalletPolicyResultCheck",actions:[r({_internalState:({event:e,context:t})=>o(e.output)?{...t._internalState,wallet:e.output.data}:{...t._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},PrepareWalletPolicyResultCheck:{always:[{guard:"noInternalError",target:"GetWalletAddress"},{target:"Error"}]},GetWalletAddress:{entry:r(({context:e})=>({intermediateValue:{requiredUserInteraction:e.input.checkOnDevice?l.VerifyAddress:l.None}})),exit:r({intermediateValue:{requiredUserInteraction:l.None}}),invoke:{id:"getWalletAddress",src:"getWalletAddress",input:({context:e})=>({checkOnDevice:e.input.checkOnDevice,wallet:e._internalState.wallet,change:e.input.change,addressIndex:e.input.addressIndex,dataStoreService:e.input.dataStoreService,walletSerializer:e.input.walletSerializer,walletBuilder:e.input.walletBuilder}),onDone:{target:"GetWalletAddressResultCheck",actions:[r({_internalState:({event:e,context:t})=>o(e.output)?{...t._internalState,walletAddress:e.output.data}:{...t._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetWalletAddressResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.walletAddress?D(e._internalState.walletAddress):y(e._internalState.error||new m("No error in final state"))})}extractDependencies(a){return{getWalletAddress:async e=>{const{checkOnDevice:t,wallet:n,change:p,addressIndex:c,walletSerializer:u,dataStoreService:A}=e.input;return await new I(a,{checkOnDevice:t,wallet:n,change:p,addressIndex:c},u,A).run()},prepareWalletPolicy:async e=>{const{input:{walletBuilder:t,wallet:n}}=e;return await new g(a,{wallet:n},t).run()}}}}export{k as GetWalletAddressDeviceAction};
2
2
  //# sourceMappingURL=GetWalletAddressDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.ts"],
4
- "sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type GetWalletAddressDAError,\n type GetWalletAddressDAInput,\n type GetWalletAddressDAIntermediateValue,\n type GetWalletAddressDAInternalState,\n type GetWalletAddressDAOutput,\n} from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nimport { type WalletAddress } from \"@api/model/Wallet\";\nimport { type Wallet as ApiWallet } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { GetWalletAddressTask } from \"@internal/app-binder/task/GetWalletAddressTask\";\nimport { PrepareWalletPolicyTask } from \"@internal/app-binder/task/PrepareWalletPolicyTask\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Wallet as InternalWallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nexport type GetWalletAddressMachineDependencies = {\n readonly prepareWalletPolicy: (arg0: {\n input: {\n wallet: ApiWallet;\n walletBuilder: WalletBuilder;\n };\n }) => Promise<CommandResult<InternalWallet, BtcErrorCodes>>;\n readonly getWalletAddress: (arg0: {\n input: {\n checkOnDevice: boolean;\n change: boolean;\n addressIndex: number;\n wallet: InternalWallet;\n walletBuilder: WalletBuilder;\n walletSerializer: WalletSerializer;\n dataStoreService: DataStoreService;\n };\n }) => Promise<CommandResult<WalletAddress, BtcErrorCodes>>;\n};\n\nexport type ExtractGetWalletAddressMachineDependencies = (\n internalApi: InternalApi,\n) => GetWalletAddressMachineDependencies;\n\nexport class GetWalletAddressDeviceAction extends XStateDeviceAction<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n> {\n constructor(args: { input: GetWalletAddressDAInput; inspect?: boolean }) {\n super(args);\n }\n\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n > {\n type types = StateMachineTypes<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n >;\n\n const { getWalletAddress, prepareWalletPolicy } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Bitcoin\" },\n }).makeStateMachine(internalApi),\n prepareWalletPolicy: fromPromise(prepareWalletPolicy),\n getWalletAddress: fromPromise(getWalletAddress),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AFMAnWA9hgIYA2AsnLMTACJgBuqAxmAILMAuqRAdAPIAHMBjaDB9Jqw7ciAYghEwvVBgYEA1soLDR45J2Kcw5YswAWqsAG0ADAF1EoQQVipZGJyAAeiACwAzADsvACcABwAjKGRtuG2AGyRSX4ANCAAnoiRAEwArLy2uX6RQUGRpeHhfgC+NelomDj4RGSUsNR0jCzsXDwYvADC5mDMGkIiYhLd0n1EAEpwAK6knHJ2jkggLm4eXr4IoRG8eTlFOaWhQX45QaHpWQiRN4UBfu8JeaE3obY5OXUGuhsHhCCQKFQaGBJD0ZP0hiMxhM9NMpL0PItYCs1tZIptnK53P19ogjuETmdcpdrrd7pl-M8wnkgvkgvFbH48n4EkFASBGiCWuD2p1oTN0fCBc0wW1ITAFEoVGpNMo3E1Qa0IR0oRsvDsiUQSU88tVeOEktEEuE8m8cjcHqScicgokTXk8rZygFQgD6vzgdLNSKoTDZh5eFKNcK5WA5HhcARcLxBKQjAAzRMAW14asFMq1ot1W31ey2B0iJr8ZotoStNpu9vpCDtoTNHr8PoizyKvL9kaFsu1XTRcL4-fzwZgmOxw1GGnWDj1hNLoAOFwCBWC5u5RySEQdT1sra+OSt1wCAQuzICfPHQZjoYlY4DUcHounq1nY3WeKXu2JZaIOum5sgkO61tE4QHhWBS2HkCT-G8R5wc8N58hgBAQHAXh3tGQ5iiOcyeMWy4AauiAALQJAeVGFLY9EMYxDG9kC6oDgWIbiqOAzIlMj7cX+BrEeRCCNo8sS2CcRz-B6zIsnBaGsXm974fxREInOvHiGpGLLKsgkrj4iBnrwFwVgkCHfEeCQBNB3K8IEpxBO6ySep8in+mxE4Plx6m4W+UIGWRRlPJEVRmncOTmhyLI2QeUS8GFQRvPBXZRLWt4vuxk4EbCflZd5+EfpwX4aEFhqAU84RRYUpyXmBATJBeQTQZEARhKEG5Ne69GUplXkqaKOmSkszCsB05XCSFOSXgUyVshUdoJLYF7QYkvAXkUER3H45q1qE-XKXhQ2+eGACiuAJrgk1GjN+S8PNUTFMtq1Nrckl-O6wTct6KF5HUdRAA */\n id: \"GetWalletAddressDeviceAction\",\n initial: \"OpenAppDeviceAction\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n wallet: null,\n walletAddress: null,\n },\n };\n },\n states: {\n OpenAppDeviceAction: {\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"openAppStateMachine\",\n input: { appName: \"Bitcoin\" },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<GetWalletAddressDAInternalState>(\n {\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n );\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"PrepareWalletPolicy\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n PrepareWalletPolicy: {\n invoke: {\n id: \"prepareWalletPolicy\",\n src: \"prepareWalletPolicy\",\n input: ({ context }) => ({\n wallet: context.input.wallet,\n walletBuilder: context.input.walletBuilder,\n }),\n onDone: {\n target: \"PrepareWalletPolicyResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n wallet: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n PrepareWalletPolicyResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"GetWalletAddress\" },\n { target: \"Error\" },\n ],\n },\n GetWalletAddress: {\n entry: assign(({ context }) => ({\n intermediateValue: {\n requiredUserInteraction: context.input.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n },\n })),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"getWalletAddress\",\n src: \"getWalletAddress\",\n input: ({ context }) => ({\n checkOnDevice: context.input.checkOnDevice,\n wallet: context._internalState.wallet!,\n change: context.input.change,\n addressIndex: context.input.addressIndex,\n dataStoreService: context.input.dataStoreService,\n walletSerializer: context.input.walletSerializer,\n walletBuilder: context.input.walletBuilder,\n }),\n onDone: {\n target: \"GetWalletAddressResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n walletAddress: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetWalletAddressResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.walletAddress\n ? Right(context._internalState.walletAddress)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(\n internalApi: InternalApi,\n ): GetWalletAddressMachineDependencies {\n const prepareWalletPolicy = async (arg0: {\n input: { wallet: ApiWallet; walletBuilder: WalletBuilder };\n }): Promise<CommandResult<InternalWallet, BtcErrorCodes>> => {\n const {\n input: { walletBuilder, wallet },\n } = arg0;\n return await new PrepareWalletPolicyTask(\n internalApi,\n { wallet },\n walletBuilder,\n ).run();\n };\n const getWalletAddress = async (arg0: {\n input: {\n checkOnDevice: boolean;\n change: boolean;\n addressIndex: number;\n wallet: InternalWallet;\n walletBuilder: WalletBuilder;\n walletSerializer: WalletSerializer;\n dataStoreService: DataStoreService;\n };\n }): Promise<CommandResult<WalletAddress, BtcErrorCodes>> => {\n const {\n checkOnDevice,\n wallet,\n change,\n addressIndex,\n walletSerializer,\n dataStoreService,\n } = arg0.input;\n\n return await new GetWalletAddressTask(\n internalApi,\n {\n checkOnDevice,\n wallet,\n change,\n addressIndex,\n },\n walletSerializer,\n dataStoreService,\n ).run();\n };\n return {\n getWalletAddress,\n prepareWalletPolicy,\n };\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type GetWalletAddressDAError,\n type GetWalletAddressDAInput,\n type GetWalletAddressDAIntermediateValue,\n type GetWalletAddressDAInternalState,\n type GetWalletAddressDAOutput,\n} from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nimport { type WalletAddress } from \"@api/model/Wallet\";\nimport { type Wallet as ApiWallet } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { GetWalletAddressTask } from \"@internal/app-binder/task/GetWalletAddressTask\";\nimport { PrepareWalletPolicyTask } from \"@internal/app-binder/task/PrepareWalletPolicyTask\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Wallet as InternalWallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nexport type GetWalletAddressMachineDependencies = {\n readonly prepareWalletPolicy: (arg0: {\n input: {\n wallet: ApiWallet;\n walletBuilder: WalletBuilder;\n };\n }) => Promise<CommandResult<InternalWallet, BtcErrorCodes>>;\n readonly getWalletAddress: (arg0: {\n input: {\n checkOnDevice: boolean;\n change: boolean;\n addressIndex: number;\n wallet: InternalWallet;\n walletBuilder: WalletBuilder;\n walletSerializer: WalletSerializer;\n dataStoreService: DataStoreService;\n };\n }) => Promise<CommandResult<WalletAddress, BtcErrorCodes>>;\n};\n\nexport type ExtractGetWalletAddressMachineDependencies = (\n internalApi: InternalApi,\n) => GetWalletAddressMachineDependencies;\n\nexport class GetWalletAddressDeviceAction extends XStateDeviceAction<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n> {\n constructor(args: { input: GetWalletAddressDAInput; inspect?: boolean }) {\n super(args);\n }\n\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n > {\n type types = StateMachineTypes<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n >;\n\n const { getWalletAddress, prepareWalletPolicy } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Bitcoin\" },\n }).makeStateMachine(internalApi),\n prepareWalletPolicy: fromPromise(prepareWalletPolicy),\n getWalletAddress: fromPromise(getWalletAddress),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n skipOpenApp: ({ context }) => context.input.skipOpenApp,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AFMAnWA9hgIYA2AsnLMTACJgBuqAxmAILMAuqRAdAPIAHMBjaDB9Jqw7ciAYghEwvVBgYEA1soLDR45J2Kcw5YswAWqsAG0ADAF1EoQQVipZGJyAAeiACwAzADsvACcABwAjKGRtuG2AGyRSX4ANCAAnoiRAEwArLy2uX6RQUGRpeHhfgC+NelomDj4RGSUsNR0jCzsXDwYvADC5mDMGkIiYhLd0n1EAEpwAK6knHJ2jkggLm4eXr4IoRG8eTlFOaWhQX45QaHpWQiRN4UBfu8JeaE3obY5OXUGuhsHhCCQKFQaGBJD0ZP0hiMxhM9NMpL0PItYCs1tZIptnK53P19ogjuETmdcpdrrd7pl-M8wnkgvkgvFbH48n4EkFASBGiCWuD2p1oTN0fCBc0wW1ITAFEoVGpNMo3E1Qa0IR0oRsvDsiUQSU88tVeOEktEEuE8m8cjcHqScicgokTXk8rZygFQgD6vzgdLNSKoTDZh5eFKNcK5WA5HhcARcLxBKQjAAzRMAW14asFMq1ot1W31ey2B0iJr8ZotoStNpu9vpCDtoTNHr8PoizyKvL9kaFsu1XTRcL4-fzwZgmOxw1GGnWDj1hNLoAOFwCBWC5u5RySEQdT1sra+OSt1wCAQuzICfPHQZjoYlY4DUcHounq1nY3WeKXu2JZaIOum5sgkO61tE4QHhWBS2HkCT-G8R5wc8N58hgBAQHAXh3tGQ5iiOcyeMWy4AauiAALQJAeVGFLY9EMYxDG9kC6oDgWIbiqOAzIlMj7cX+BrEeRCCNo8sS2CcRz-B6zIsnBaGsXm974fxREInOvHiGpGLLKsgkrj4iBnrwFwVgkCHfEeCQBNB3K8IEpxBO6ySep8in+mxE4Plx6m4W+UIGWRRlPJEVRmncOTmhyLI2QeUS8GFQRvPBXZRLWt4vuxk4EbCflZd5+EfpwX4aEFhqAU84RRYUpyXmBATJBeQTQZEARhKEG5Ne69GUplXkqaKOmSkszCsB05XCSFOSXgUyVshUdoJLYF7QYkvAXkUER3H45q1qE-XKXhQ2+eGACiuAJrgk1GjN+S8PNUTFMtq1Nrckl-O6wTct6KF5HUdRAA */\n id: \"GetWalletAddressDeviceAction\",\n initial: \"InitialState\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n wallet: null,\n walletAddress: null,\n },\n };\n },\n states: {\n InitialState: {\n always: [\n {\n target: \"PrepareWalletPolicy\",\n guard: \"skipOpenApp\",\n },\n \"OpenAppDeviceAction\",\n ],\n },\n OpenAppDeviceAction: {\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"openAppStateMachine\",\n input: { appName: \"Bitcoin\" },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<GetWalletAddressDAInternalState>(\n {\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n );\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"PrepareWalletPolicy\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n PrepareWalletPolicy: {\n invoke: {\n id: \"prepareWalletPolicy\",\n src: \"prepareWalletPolicy\",\n input: ({ context }) => ({\n wallet: context.input.wallet,\n walletBuilder: context.input.walletBuilder,\n }),\n onDone: {\n target: \"PrepareWalletPolicyResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n wallet: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n PrepareWalletPolicyResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"GetWalletAddress\" },\n { target: \"Error\" },\n ],\n },\n GetWalletAddress: {\n entry: assign(({ context }) => ({\n intermediateValue: {\n requiredUserInteraction: context.input.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n },\n })),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"getWalletAddress\",\n src: \"getWalletAddress\",\n input: ({ context }) => ({\n checkOnDevice: context.input.checkOnDevice,\n wallet: context._internalState.wallet!,\n change: context.input.change,\n addressIndex: context.input.addressIndex,\n dataStoreService: context.input.dataStoreService,\n walletSerializer: context.input.walletSerializer,\n walletBuilder: context.input.walletBuilder,\n }),\n onDone: {\n target: \"GetWalletAddressResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n walletAddress: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetWalletAddressResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.walletAddress\n ? Right(context._internalState.walletAddress)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(\n internalApi: InternalApi,\n ): GetWalletAddressMachineDependencies {\n const prepareWalletPolicy = async (arg0: {\n input: { wallet: ApiWallet; walletBuilder: WalletBuilder };\n }): Promise<CommandResult<InternalWallet, BtcErrorCodes>> => {\n const {\n input: { walletBuilder, wallet },\n } = arg0;\n return await new PrepareWalletPolicyTask(\n internalApi,\n { wallet },\n walletBuilder,\n ).run();\n };\n const getWalletAddress = async (arg0: {\n input: {\n checkOnDevice: boolean;\n change: boolean;\n addressIndex: number;\n wallet: InternalWallet;\n walletBuilder: WalletBuilder;\n walletSerializer: WalletSerializer;\n dataStoreService: DataStoreService;\n };\n }): Promise<CommandResult<WalletAddress, BtcErrorCodes>> => {\n const {\n checkOnDevice,\n wallet,\n change,\n addressIndex,\n walletSerializer,\n dataStoreService,\n } = arg0.input;\n\n return await new GetWalletAddressTask(\n internalApi,\n {\n checkOnDevice,\n wallet,\n change,\n addressIndex,\n },\n walletSerializer,\n dataStoreService,\n ).run();\n };\n return {\n getWalletAddress,\n prepareWalletPolicy,\n };\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "GetWalletAddressTask", "PrepareWalletPolicyTask", "GetWalletAddressDeviceAction", "args", "internalApi", "getWalletAddress", "prepareWalletPolicy", "context", "_", "input", "error", "event", "arg0", "checkOnDevice", "wallet", "change", "addressIndex", "walletSerializer", "dataStoreService", "walletBuilder"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{CommandResultFactory as d,DeviceActionStatus as e,UnknownDeviceExchangeError as l,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{makeDeviceActionInternalApiMock as u}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{setupOpenAppDAMock as p}from"../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock";import{testDeviceActionStates as m}from"../../../app-binder/device-action/__test-utils__/testDeviceActionStates";import{GetWalletAddressDeviceAction as v}from"./GetWalletAddressDeviceAction";vi.mock("@ledgerhq/device-management-kit",async s=>({...await s(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("GetWalletAddressDeviceAction",()=>{const s=vi.fn(),o=vi.fn();function c(){return{prepareWalletPolicy:s,getWalletAddress:o}}describe("Success case",()=>{it("should call external dependencies with the correct parameters",()=>new Promise((n,i)=>{p();const r=new v({input:{wallet:"ApiWallet",walletBuilder:"WalletBuilder",walletSerializer:"WalletSerializer",dataStoreService:"DataStoreService",checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(r,"extractDependencies").mockReturnValue(c()),s.mockResolvedValueOnce(d({data:"InternalWallet"})),o.mockResolvedValueOnce(d({data:"WalletAddress"}));const a=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.VerifyAddress},status:e.Pending},{output:"WalletAddress",status:e.Completed}];m(r,a,u(),{onDone:n,onError:i})}))}),describe("Error cases",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("Error if open app fails",()=>new Promise((n,i)=>{p(new l("Mocked error"));const r=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Error,error:new l("Mocked error")}],a=new v({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(a,"extractDependencies").mockReturnValue(c()),m(a,r,u(),{onDone:n,onError:i}),expect(o).not.toHaveBeenCalled()})),it("Error if prepareWalletPolicy fails",()=>new Promise((n,i)=>{p();const r=new v({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(r,"extractDependencies").mockReturnValue(c()),s.mockResolvedValueOnce(d({error:new l("Mocked error")}));const a=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Error,error:new l("Mocked error")}];m(r,a,u(),{onDone:n,onError:i}),expect(o).not.toHaveBeenCalled()})),it("Error if getWalletAddress fails",()=>new Promise((n,i)=>{p();const r=new v({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(r,"extractDependencies").mockReturnValue(c()),s.mockResolvedValueOnce(d({data:"InternalWallet"})),o.mockResolvedValueOnce(d({error:new l("Mocked error")}));const a=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.VerifyAddress}},{status:e.Error,error:new l("Mocked error")}];m(r,a,u(),{onDone:n,onError:i})}))})});
1
+ import{CommandResultFactory as o,DeviceActionStatus as e,UnknownDeviceExchangeError as d,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{makeDeviceActionInternalApiMock as u}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{setupOpenAppDAMock as p}from"../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock";import{testDeviceActionStates as m}from"../../../app-binder/device-action/__test-utils__/testDeviceActionStates";import{GetWalletAddressDeviceAction as A}from"./GetWalletAddressDeviceAction";vi.mock("@ledgerhq/device-management-kit",async s=>({...await s(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("GetWalletAddressDeviceAction",()=>{const s=vi.fn(),l=vi.fn();function c(){return{prepareWalletPolicy:s,getWalletAddress:l}}describe("Success case",()=>{it("should call external dependencies with the correct parameters",()=>new Promise((n,i)=>{p();const r=new A({input:{wallet:"ApiWallet",walletBuilder:"WalletBuilder",walletSerializer:"WalletSerializer",dataStoreService:"DataStoreService",skipOpenApp:!1,checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(r,"extractDependencies").mockReturnValue(c()),s.mockResolvedValueOnce(o({data:"InternalWallet"})),l.mockResolvedValueOnce(o({data:"WalletAddress"}));const a=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.VerifyAddress},status:e.Pending},{output:"WalletAddress",status:e.Completed}];m(r,a,u(),{onDone:n,onError:i})})),it("should be successful while skipping OpenApp",()=>new Promise((n,i)=>{p();const r=new A({input:{wallet:"ApiWallet",walletBuilder:"WalletBuilder",walletSerializer:"WalletSerializer",dataStoreService:"DataStoreService",skipOpenApp:!0,checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(r,"extractDependencies").mockReturnValue(c()),s.mockResolvedValueOnce(o({data:"InternalWallet"})),l.mockResolvedValueOnce(o({data:"WalletAddress"}));const a=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.VerifyAddress},status:e.Pending},{output:"WalletAddress",status:e.Completed}];m(r,a,u(),{onDone:n,onError:i})}))}),describe("Error cases",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("Error if open app fails",()=>new Promise((n,i)=>{p(new d("Mocked error"));const r=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Error,error:new d("Mocked error")}],a=new A({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},skipOpenApp:!1,checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(a,"extractDependencies").mockReturnValue(c()),m(a,r,u(),{onDone:n,onError:i}),expect(l).not.toHaveBeenCalled()})),it("Error if prepareWalletPolicy fails",()=>new Promise((n,i)=>{p();const r=new A({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},skipOpenApp:!1,checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(r,"extractDependencies").mockReturnValue(c()),s.mockResolvedValueOnce(o({error:new d("Mocked error")}));const a=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Error,error:new d("Mocked error")}];m(r,a,u(),{onDone:n,onError:i}),expect(l).not.toHaveBeenCalled()})),it("Error if getWalletAddress fails",()=>new Promise((n,i)=>{p();const r=new A({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},skipOpenApp:!1,checkOnDevice:!0,change:!1,addressIndex:1}});vi.spyOn(r,"extractDependencies").mockReturnValue(c()),s.mockResolvedValueOnce(o({data:"InternalWallet"})),l.mockResolvedValueOnce(o({error:new d("Mocked error")}));const a=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.VerifyAddress}},{status:e.Error,error:new d("Mocked error")}];m(r,a,u(),{onDone:n,onError:i})}))})});
2
2
  //# sourceMappingURL=GetWalletAddressDeviceAction.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.ts"],
4
- "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports: off */\nimport {\n CommandResultFactory,\n DeviceActionStatus,\n UnknownDeviceExchangeError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetWalletAddressDAState } from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nimport { type RegisteredWallet, type WalletAddress } from \"@api/model/Wallet\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupOpenAppDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { GetWalletAddressDeviceAction } from \"./GetWalletAddressDeviceAction\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n});\n\ndescribe(\"GetWalletAddressDeviceAction\", () => {\n const prepareWalletPolicyMock = vi.fn();\n const getWalletAddressMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n prepareWalletPolicy: prepareWalletPolicyMock,\n getWalletAddress: getWalletAddressMock,\n };\n }\n\n describe(\"Success case\", () => {\n it(\"should call external dependencies with the correct parameters\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"InternalWallet\",\n }),\n );\n getWalletAddressMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"WalletAddress\",\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: \"WalletAddress\" as unknown as WalletAddress,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"Error cases\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Error if open app fails\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock(new UnknownDeviceExchangeError(\"Mocked error\"));\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n\n // then\n expect(getWalletAddressMock).not.toHaveBeenCalled();\n }));\n\n it(\"Error if prepareWalletPolicy fails\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n\n expect(getWalletAddressMock).not.toHaveBeenCalled();\n }));\n\n it(\"Error if getWalletAddress fails\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"InternalWallet\",\n }),\n );\n getWalletAddressMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint @typescript-eslint/consistent-type-imports: off */\nimport {\n CommandResultFactory,\n DeviceActionStatus,\n UnknownDeviceExchangeError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetWalletAddressDAState } from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nimport { type RegisteredWallet, type WalletAddress } from \"@api/model/Wallet\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupOpenAppDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { GetWalletAddressDeviceAction } from \"./GetWalletAddressDeviceAction\";\n\nvi.mock(\"@ledgerhq/device-management-kit\", async (importOriginal) => {\n const original =\n await importOriginal<typeof import(\"@ledgerhq/device-management-kit\")>();\n return {\n ...original,\n OpenAppDeviceAction: vi.fn(() => ({\n makeStateMachine: vi.fn(),\n })),\n };\n});\n\ndescribe(\"GetWalletAddressDeviceAction\", () => {\n const prepareWalletPolicyMock = vi.fn();\n const getWalletAddressMock = vi.fn();\n\n function extractDependenciesMock() {\n return {\n prepareWalletPolicy: prepareWalletPolicyMock,\n getWalletAddress: getWalletAddressMock,\n };\n }\n\n describe(\"Success case\", () => {\n it(\"should call external dependencies with the correct parameters\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n skipOpenApp: false,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"InternalWallet\",\n }),\n );\n getWalletAddressMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"WalletAddress\",\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: \"WalletAddress\" as unknown as WalletAddress,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n\n it(\"should be successful while skipping OpenApp\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n skipOpenApp: true,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"InternalWallet\",\n }),\n );\n getWalletAddressMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"WalletAddress\",\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: \"WalletAddress\" as unknown as WalletAddress,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n\n describe(\"Error cases\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Error if open app fails\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock(new UnknownDeviceExchangeError(\"Mocked error\"));\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n skipOpenApp: false,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n\n // then\n expect(getWalletAddressMock).not.toHaveBeenCalled();\n }));\n\n it(\"Error if prepareWalletPolicy fails\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n skipOpenApp: false,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n\n expect(getWalletAddressMock).not.toHaveBeenCalled();\n }));\n\n it(\"Error if getWalletAddress fails\", () =>\n new Promise<void>((resolve, reject) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n skipOpenApp: false,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock(),\n );\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"InternalWallet\",\n }),\n );\n getWalletAddressMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n {\n onDone: resolve,\n onError: reject,\n },\n );\n }));\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["CommandResultFactory", "DeviceActionStatus", "UnknownDeviceExchangeError", "UserInteractionRequired", "makeDeviceActionInternalApiMock", "setupOpenAppDAMock", "testDeviceActionStates", "GetWalletAddressDeviceAction", "importOriginal", "prepareWalletPolicyMock", "getWalletAddressMock", "extractDependenciesMock", "resolve", "reject", "deviceAction", "expectedStates"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{isSuccessCommandResult as o,OpenAppDeviceAction as b,UnknownDAError as S,UserInteractionRequired as i,XStateDeviceAction as d}from"@ledgerhq/device-management-kit";import{Left as m,Right as g}from"purify-ts";import{assign as r,fromPromise as p,setup as y}from"xstate";import{BuildPsbtTask as A}from"../../../app-binder/task/BuildPsbtTask";import{PrepareWalletPolicyTask as D}from"../../../app-binder/task/PrepareWalletPolicyTask";import{SignPsbtTask as w}from"../../../app-binder/task/SignPsbtTask";class B extends d{constructor(a){super(a)}makeStateMachine(a){const{signPsbt:u,prepareWalletPolicy:c,buildPsbt:P}=this.extractDependencies(a);return y({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new b({input:{appName:"Bitcoin"}}).makeStateMachine(a),prepareWalletPolicy:p(c),buildPsbt:p(P),signPsbt:p(u)},guards:{noInternalError:({context:t})=>t._internalState.error===null},actions:{assignErrorFromEvent:r({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"SignPsbtDeviceAction",initial:"OpenAppDeviceAction",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:i.None},_internalState:{error:null,wallet:null,buildPsbtResult:null,signatures:null,signedPsbt:null}}),states:{OpenAppDeviceAction:{exit:r({intermediateValue:{requiredUserInteraction:i.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Bitcoin"},src:"openAppStateMachine",onSnapshot:{actions:r({intermediateValue:t=>t.event.snapshot.context.intermediateValue})},onDone:{actions:r({_internalState:t=>t.event.output.caseOf({Right:()=>t.context._internalState,Left:e=>({...t.context._internalState,error:e})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"PrepareWalletPolicy",guard:"noInternalError"},"Error"]},PrepareWalletPolicy:{invoke:{id:"prepareWalletPolicy",src:"prepareWalletPolicy",input:({context:t})=>({wallet:t.input.wallet,walletBuilder:t.input.walletBuilder}),onDone:{target:"PrepareWalletPolicyResultCheck",actions:[r({_internalState:({event:t,context:e})=>o(t.output)?{...e._internalState,wallet:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},PrepareWalletPolicyResultCheck:{always:[{guard:"noInternalError",target:"BuildPsbt"},{target:"Error"}]},BuildPsbt:{invoke:{id:"buildPsbt",src:"buildPsbt",input:({context:t})=>({psbt:t.input.psbt,wallet:t._internalState.wallet,dataStoreService:t.input.dataStoreService,psbtMapper:t.input.psbtMapper}),onDone:{target:"BuildPsbtResultCheck",actions:[r({_internalState:({event:t,context:e})=>o(t.output)?{...e._internalState,buildPsbtResult:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildPsbtResultCheck:{always:[{guard:"noInternalError",target:"SignPsbt"},{target:"Error"}]},SignPsbt:{entry:r({intermediateValue:{requiredUserInteraction:i.SignTransaction}}),exit:r({intermediateValue:{requiredUserInteraction:i.None}}),invoke:{id:"signPsbt",src:"signPsbt",input:({context:t})=>({walletSerializer:t.input.walletSerializer,valueParser:t.input.valueParser,buildPsbtResult:t._internalState.buildPsbtResult,wallet:t._internalState.wallet}),onDone:{target:"SignPsbtResultCheck",actions:[r({_internalState:({event:t,context:e})=>o(t.output)?{...e._internalState,signatures:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignPsbtResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:{_internalState:{signatures:t,error:e}}})=>t?g(t):m(e||new S("No error in final state"))})}extractDependencies(a){return{prepareWalletPolicy:async t=>{const{input:{walletBuilder:e,wallet:n}}=t;return await new D(a,{wallet:n},e).run()},buildPsbt:async t=>{const{input:{psbt:e,wallet:n,dataStoreService:l,psbtMapper:s}}=t;return new A({psbt:e,wallet:n},l,s).run()},signPsbt:async t=>{const{input:{wallet:e,buildPsbtResult:n,walletSerializer:l,valueParser:s}}=t;return await new w(a,{wallet:e,...n},l,s).run()}}}}export{B as SignPsbtDeviceAction};
1
+ import{isSuccessCommandResult as o,OpenAppDeviceAction as b,UnknownDAError as S,UserInteractionRequired as i,XStateDeviceAction as d}from"@ledgerhq/device-management-kit";import{Left as m,Right as g}from"purify-ts";import{assign as r,fromPromise as p,setup as y}from"xstate";import{BuildPsbtTask as A}from"../../../app-binder/task/BuildPsbtTask";import{PrepareWalletPolicyTask as D}from"../../../app-binder/task/PrepareWalletPolicyTask";import{SignPsbtTask as w}from"../../../app-binder/task/SignPsbtTask";class B extends d{constructor(a){super(a)}makeStateMachine(a){const{signPsbt:u,prepareWalletPolicy:c,buildPsbt:P}=this.extractDependencies(a);return y({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new b({input:{appName:"Bitcoin"}}).makeStateMachine(a),prepareWalletPolicy:p(c),buildPsbt:p(P),signPsbt:p(u)},guards:{noInternalError:({context:t})=>t._internalState.error===null,skipOpenApp:({context:t})=>t.input.skipOpenApp},actions:{assignErrorFromEvent:r({_internalState:t=>({...t.context._internalState,error:t.event.error})})}}).createMachine({id:"SignPsbtDeviceAction",initial:"InitialState",context:({input:t})=>({input:t,intermediateValue:{requiredUserInteraction:i.None},_internalState:{error:null,wallet:null,buildPsbtResult:null,signatures:null,signedPsbt:null}}),states:{InitialState:{always:[{target:"PrepareWalletPolicy",guard:"skipOpenApp"},"OpenAppDeviceAction"]},OpenAppDeviceAction:{exit:r({intermediateValue:{requiredUserInteraction:i.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Bitcoin"},src:"openAppStateMachine",onSnapshot:{actions:r({intermediateValue:t=>t.event.snapshot.context.intermediateValue})},onDone:{actions:r({_internalState:t=>t.event.output.caseOf({Right:()=>t.context._internalState,Left:e=>({...t.context._internalState,error:e})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"PrepareWalletPolicy",guard:"noInternalError"},"Error"]},PrepareWalletPolicy:{invoke:{id:"prepareWalletPolicy",src:"prepareWalletPolicy",input:({context:t})=>({wallet:t.input.wallet,walletBuilder:t.input.walletBuilder}),onDone:{target:"PrepareWalletPolicyResultCheck",actions:[r({_internalState:({event:t,context:e})=>o(t.output)?{...e._internalState,wallet:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},PrepareWalletPolicyResultCheck:{always:[{guard:"noInternalError",target:"BuildPsbt"},{target:"Error"}]},BuildPsbt:{invoke:{id:"buildPsbt",src:"buildPsbt",input:({context:t})=>({psbt:t.input.psbt,wallet:t._internalState.wallet,dataStoreService:t.input.dataStoreService,psbtMapper:t.input.psbtMapper}),onDone:{target:"BuildPsbtResultCheck",actions:[r({_internalState:({event:t,context:e})=>o(t.output)?{...e._internalState,buildPsbtResult:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildPsbtResultCheck:{always:[{guard:"noInternalError",target:"SignPsbt"},{target:"Error"}]},SignPsbt:{entry:r({intermediateValue:{requiredUserInteraction:i.SignTransaction}}),exit:r({intermediateValue:{requiredUserInteraction:i.None}}),invoke:{id:"signPsbt",src:"signPsbt",input:({context:t})=>({walletSerializer:t.input.walletSerializer,valueParser:t.input.valueParser,buildPsbtResult:t._internalState.buildPsbtResult,wallet:t._internalState.wallet}),onDone:{target:"SignPsbtResultCheck",actions:[r({_internalState:({event:t,context:e})=>o(t.output)?{...e._internalState,signatures:t.output.data}:{...e._internalState,error:t.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignPsbtResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:{_internalState:{signatures:t,error:e}}})=>t?g(t):m(e||new S("No error in final state"))})}extractDependencies(a){return{prepareWalletPolicy:async t=>{const{input:{walletBuilder:e,wallet:n}}=t;return await new D(a,{wallet:n},e).run()},buildPsbt:async t=>{const{input:{psbt:e,wallet:n,dataStoreService:l,psbtMapper:s}}=t;return new A({psbt:e,wallet:n},l,s).run()},signPsbt:async t=>{const{input:{wallet:e,buildPsbtResult:n,walletSerializer:l,valueParser:s}}=t;return await new w(a,{wallet:e,...n},l,s).run()}}}}export{B as SignPsbtDeviceAction};
2
2
  //# sourceMappingURL=SignPsbtDeviceAction.js.map